← All guides

Claude Computer Use 가이드: AI가 브라우저와 데스크톱을 제어하는 방법

Claude Computer Use로 브라우저·데스크톱 자동화 — 스크린샷 기반 클릭/타이핑, Python 설정, Docker 환경, 보안 주의사항까지.

Claude Computer Use 가이드: AI가 브라우저와 데스크톱을 제어하는 방법

Claude Computer Use는 Claude가 스크린샷으로 화면을 보고 마우스 클릭·키보드 입력을 실행해 GUI 애플리케이션을 직접 제어하는 기능이다. API를 통해 활성화하며, computer, bash, text_editor 세 가지 툴로 구성된다. 안정적인 HTML 셀렉터가 존재하는 웹 작업에는 Playwright가 더 빠르고 저렴하지만, API가 없는 데스크톱 앱이나 동적 UI 자동화에는 Computer Use가 현실적인 선택지다.


Computer Use란 무엇인가

Computer Use는 Anthropic이 API로 제공하는 툴셋이다. 활성화하면 Claude는 다음 작업을 반복 사이클로 수행한다.

  1. 스크린샷 촬영으로 현재 화면 상태 파악
  2. 좌표 기반 마우스 이동 및 클릭 (좌클릭·우클릭·더블클릭)
  3. 텍스트 입력 및 키보드 단축키 실행
  4. 터미널 명령어 직접 실행 (bash 툴)
  5. 파일 읽기·쓰기 (text_editor 툴)

핵심 구조는 "스크린샷 → 판단 → 액션 → 스크린샷" 루프다. 사전 프로그래밍된 매크로가 아니라 Claude가 화면을 보고 매 단계를 추론한다. 액션 1회 사이클에 보통 2~8초가 소요된다.

Computer Use vs Playwright — 언제 무엇을 쓸까

상황 선택
안정적인 HTML 셀렉터가 있는 웹 자동화 Playwright
대량 반복 작업 (비용·속도 우선) Playwright
API가 없는 데스크톱 앱 Computer Use
동적 UI, 레거시 소프트웨어 Computer Use
폼 구조가 응답에 따라 달라지는 경우 Computer Use
대상 서비스에 API가 있는 경우 API 직접 호출

Docker 환경 설정

Anthropic은 VNC 데스크톱 환경을 포함한 Docker 레퍼런스 구현을 제공한다. 프로덕션 환경에서 Computer Use를 실행할 때 Docker 격리가 권장된다 — 로컬 파일 시스템과 분리되어 보안 리스크를 줄인다.

# Anthropic quickstarts 저장소 클론
git clone https://github.com/anthropics/anthropic-quickstarts
cd anthropic-quickstarts/computer-use-demo

# API 키 설정
export ANTHROPIC_API_KEY=sk-ant-...

# Docker 빌드 및 실행
docker build -t computer-use-demo .
docker run \
    -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
    -v $HOME/.anthropic:/home/user/.anthropic \
    -p 5900:5900 \
    -p 8501:8501 \
    -p 6080:6080 \
    computer-use-demo

실행 후 http://localhost:8501에서 Streamlit UI, http://localhost:6080에서 브라우저 기반 데스크톱을 확인할 수 있다.


Python 코드 예시: 기본 구조

툴 설정 및 스크린샷 루프

import anthropic
import base64

client = anthropic.Anthropic()

def run_computer_task(task: str) -> str:
    """Computer Use 태스크를 실행하고 최종 응답을 반환한다."""
    messages = [{"role": "user", "content": task}]

    while True:
        response = client.messages.create(
            model="claude-sonnet-4-5",  # claude-sonnet-4-5 이상 권장
            max_tokens=4096,
            tools=[
                {
                    "type": "computer_20241022",
                    "name": "computer",
                    "display_width_px": 1366,
                    "display_height_px": 768,
                    "display_number": 1,
                },
                {
                    "type": "bash_20241022",
                    "name": "bash",
                },
                {
                    "type": "text_editor_20241022",
                    "name": "str_replace_editor",
                },
            ],
            messages=messages,
        )

        # 툴 호출 없이 종료 → 완료
        if response.stop_reason == "end_turn":
            return next(
                (b.text for b in response.content if hasattr(b, "text")),
                "태스크 완료."
            )

        # 툴 결과 처리
        tool_results = []
        for block in response.content:
            if block.type == "tool_use":
                result = execute_tool(block.name, block.input)
                tool_results.append({
                    "type": "tool_result",
                    "tool_use_id": block.id,
                    "content": result,
                })

        # 대화 이력에 추가하고 루프 반복
        messages.append({"role": "assistant", "content": response.content})
        messages.append({"role": "user", "content": tool_results})

툴 실행 핸들러

def execute_tool(tool_name: str, tool_input: dict):
    """툴 이름과 입력값을 받아 실제 액션을 수행한다."""
    if tool_name == "computer":
        action = tool_input["action"]

        if action == "screenshot":
            # 실제 스크린샷 구현체 연결 (예: pyautogui, scrot)
            screenshot_data = take_screenshot()
            return [{
                "type": "image",
                "source": {
                    "type": "base64",
                    "media_type": "image/png",
                    "data": screenshot_data
                }
            }]

        elif action == "left_click":
            x, y = tool_input["coordinate"]
            perform_click(x, y)
            return "클릭 완료"

        elif action == "type":
            type_text(tool_input["text"])
            return "타이핑 완료"

        elif action == "key":
            press_key(tool_input["text"])
            return "키 입력 완료"

    return "툴 실행 완료"

태스크 프롬프트 작성 패턴

명확한 종료 조건 없이 Claude를 실행하면 목표 달성 후에도 계속 클릭하는 문제가 발생한다. 아래 패턴을 사용한다.

task = """
https://example.com/contact 폼에 접속하라.
다음 정보를 입력하라:
- 이름: 홍길동
- 이메일: hong@example.com
- 제목: 데모 요청
- 내용: 제품 데모를 예약하고 싶습니다.

제출 버튼을 클릭하라.
화면에 완료 메시지가 나타나면 즉시 멈춰라.
오류가 발생하면 오류 내용을 보고하고 멈춰라.
"""

result = run_computer_task(task)
print(result)

주요 활용 케이스

1. 웹 폼 자동화

API가 없는 B2B SaaS, 정부 민원 포털, 레거시 ERP 시스템의 반복 입력 작업에 활용한다. 특히 이전 응답에 따라 폼 구조가 바뀌는 조건부 UI에서 Playwright보다 안정적이다.

2. 데스크톱 애플리케이션 자동화

Excel 매크로가 지원하지 않는 복잡한 시트 작업, Photoshop 배치 처리, 사내 레거시 윈도우 앱 조작에 사용한다. GUI가 있지만 API가 없는 소프트웨어 전반에 적용 가능하다.

3. 소프트웨어 QA 테스트

실제 브라우저에서 사용자 플로우를 자연어 시나리오로 테스트한다. 셀렉터 기반 테스트가 놓치는 렌더링 이슈나 시각적 버그를 잡을 수 있다.

4. 반복 데이터 수집

API가 제공되지 않거나 스크래핑 방지 처리가 된 사이트에서 구조화된 데이터를 추출한다. 단, 이용약관 확인이 필수다.


보안 주의사항

Computer Use는 화면 전체를 스크린샷으로 캡처한다. 화면에 표시된 정보가 API 요청에 포함되어 Anthropic 서버로 전송된다는 점을 반드시 인지해야 한다.

필수 체크리스트:


현실적인 한계 (2026 기준)

실행 속도: 스크린샷 → 판단 → 액션 1사이클에 28초. 20단계 태스크는 13분 소요. 실시간 처리가 필요한 작업에는 적합하지 않다.

비용: 스크린샷 포함 1사이클당 약 1,0003,000 토큰 소비. 20단계 태스크 기준 $0.30$1.00. 50단계 이상은 1회 실행에 $5를 초과할 수 있다.

OCR 정확도: 소형 폰트, 저대비 텍스트, 복잡한 커스텀 UI에서 텍스트 인식 오류가 발생한다. 표준 UI 컴포넌트는 안정적이다.

동적 콘텐츠: JavaScript로 렌더링되는 무한 스크롤, 레이지 로딩 콘텐츠는 명시적 대기 지시가 필요하다. 프롬프트에 "페이지가 완전히 로드될 때까지 기다린 후 진행하라"를 포함한다.


Agent SDK와 함께 사용하기

Computer Use는 단독으로도 동작하지만, 복잡한 워크플로우에서는 Claude Agent SDK와 결합해 구조화된 에이전트 파이프라인을 구성하는 것이 효과적이다. 예를 들어 API로 데이터를 가져오고, Computer Use로 레거시 ERP에 입력하는 하이브리드 패턴은 비용을 최대 70%까지 절감할 수 있다.

Claude Agent SDK 한국어 가이드에서 에이전트 구조 설계 방법을 확인하라.

또한 IDE 기반 AI 코딩 도구와 Computer Use의 역할 분담이 궁금하다면 Claude Code vs Cursor 한국어 비교를 참고하라.


더 깊이 배우기

Claude Agent SDK Cookbook: 40가지 프로덕션 패턴 — 패턴 35에서 Computer Use 프로덕션 적용을 다룬다: 태스크 분해 전략, 오류 복구, 비용 관리, API와 Computer Use를 조합하는 하이브리드 패턴까지 실전 코드로 제공한다.

→ Agent SDK Cookbook 구매 — $49

30일 환불 보장. 즉시 다운로드.


Frequently Asked Questions

Claude Computer Use에 어떤 모델을 사용해야 하나요?

Anthropic은 claude-sonnet-4-5 이상을 권장한다. claude-sonnet-4-5는 시각적 추론과 UI 탐색 정확도가 이전 모델 대비 크게 향상되었다. 단순한 폼 자동화는 Sonnet으로도 충분하지만, 복잡한 다단계 UI 조작에는 더 높은 모델 사용을 고려한다.

Docker 없이 Computer Use를 실행할 수 있나요?

가능하다. 스크린샷 촬영, 클릭, 타이핑 인프라를 직접 구현하고 툴 실행 핸들러를 작성하면 된다. pyautogui, pynput 같은 라이브러리로 로컬 환경에서 구동할 수 있다. 다만 Docker 격리 없이 실행하면 보안 리스크가 증가하므로 테스트 환경에서만 사용을 권장한다.

Computer Use는 인증된 웹사이트에도 접근할 수 있나요?

가능하다. Docker 환경에 브라우저 쿠키를 임포트하거나 bash 툴로 로그인 처리를 먼저 수행한 뒤 메인 태스크를 실행하면 된다. 단, 로그인 자격 증명이 스크린샷에 노출되지 않도록 주의한다.

Computer Use 비용은 어떻게 계산되나요?

별도 요금이 없다. 일반 API 토큰 요금으로 청구된다. 스크린샷 이미지가 포함되므로 텍스트 전용 요청보다 토큰 소비가 크다. 스크린샷 1장은 해상도에 따라 약 8001,500 토큰을 소비한다. 20단계 태스크 기준으로 Sonnet 요금 적용 시 대략 $0.15$0.50 정도 예상할 수 있다.

Computer Use와 Claude Code의 차이는 무엇인가요?

Claude Code는 로컬 파일 시스템과 터미널 명령어를 통해 소프트웨어 개발 작업을 수행하는 CLI 에이전트다. GUI 없이 코드 기반으로 동작한다. Computer Use는 그래픽 데스크톱 환경 전체를 시각적으로 제어한다. 소프트웨어 개발·코드 편집에는 Claude Code, GUI 앱·브라우저 자동화에는 Computer Use를 선택한다.

도구와 자료