Интеграция Anthropic Computer Use: управление компьютером через AI
Computer Use от Anthropic — это возможность Claude управлять рабочим столом: видеть скриншоты, кликать, вводить текст, запускать программы. В отличие от классических инструментов автоматизации вроде AutoHotkey или PyAutoGUI, агент понимает контекст интерфейса и адаптируется к изменениям — не ломается от сдвига кнопки на 5 пикселей.
Как работает Computer Use
Claude получает скриншот экрана и возвращает одно из действий:
import anthropic
import base64
import subprocess
from pathlib import Path
client = anthropic.Anthropic()
def get_screenshot() -> str:
"""Делает скриншот и возвращает base64"""
import pyautogui
screenshot = pyautogui.screenshot()
screenshot.save("/tmp/screen.png")
return base64.standard_b64encode(Path("/tmp/screen.png").read_bytes()).decode()
def execute_action(action: dict) -> str:
"""Выполняет действие из Computer Use"""
import pyautogui
action_type = action["type"]
if action_type == "screenshot":
return get_screenshot()
elif action_type == "mouse_move":
pyautogui.moveTo(action["coordinate"][0], action["coordinate"][1])
return "moved"
elif action_type == "left_click":
pyautogui.click(action["coordinate"][0], action["coordinate"][1])
return "clicked"
elif action_type == "double_click":
pyautogui.doubleClick(action["coordinate"][0], action["coordinate"][1])
return "double_clicked"
elif action_type == "type":
pyautogui.write(action["text"], interval=0.05)
return "typed"
elif action_type == "key":
pyautogui.press(action["key"])
return "key_pressed"
elif action_type == "scroll":
direction = 1 if action["direction"] == "up" else -1
pyautogui.scroll(direction * action.get("amount", 3), x=action["coordinate"][0], y=action["coordinate"][1])
return "scrolled"
return "unknown_action"
def run_computer_use_agent(task: str, max_iterations: int = 30) -> str:
"""Запускает агент Computer Use для выполнения задачи"""
tools = [{
"type": "computer_20250124",
"name": "computer",
"display_width_px": 1920,
"display_height_px": 1080,
"display_number": 1,
}]
messages = [{"role": "user", "content": task}]
for iteration in range(max_iterations):
response = client.messages.create(
model="claude-opus-4-5",
max_tokens=4096,
tools=tools,
messages=messages,
)
if response.stop_reason == "end_turn":
return next((b.text for b in response.content if hasattr(b, "text")), "Done")
# Обрабатываем tool_use блоки
tool_results = []
for block in response.content:
if block.type == "tool_use" and block.name == "computer":
action = block.input
result = execute_action(action)
# Если запросил скриншот — добавляем изображение
if action["type"] == "screenshot":
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": [{
"type": "image",
"source": {"type": "base64", "media_type": "image/png", "data": result}
}]
})
else:
# После действия делаем скриншот чтобы Claude видел результат
import time
time.sleep(0.5) # ждём анимации UI
screenshot = get_screenshot()
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": [{
"type": "image",
"source": {"type": "base64", "media_type": "image/png", "data": screenshot}
}]
})
messages.append({"role": "assistant", "content": response.content})
messages.append({"role": "user", "content": tool_results})
return "Max iterations reached"
Безопасный sandbox через Docker
Для продакшн-задач Computer Use запускают в изолированном контейнере, чтобы агент не имел доступа к хост-системе:
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y \
xvfb x11vnc \
python3-pip \
chromium-browser \
libreoffice \
&& rm -rf /var/lib/apt/lists/*
RUN pip3 install anthropic pyautogui pillow
# Виртуальный дисплей
ENV DISPLAY=:99
CMD ["bash", "-c", "Xvfb :99 -screen 0 1920x1080x24 & python3 /app/agent.py"]
import docker
def run_in_sandbox(task: str) -> str:
"""Запускает Computer Use задачу в Docker-контейнере"""
container = docker.from_env().containers.run(
"computer-use-sandbox",
command=f'python3 -c "from agent import run_computer_use_agent; print(run_computer_use_agent({repr(task)}))"',
remove=True,
mem_limit="2g",
cpu_period=100000,
cpu_quota=50000, # 50% CPU
network_disabled=True, # отключаем сеть если не нужна
volumes={"/tmp/output": {"bind": "/output", "mode": "rw"}},
)
return container.decode()
Типовые задачи для Computer Use
Работа с legacy-системами без API — старые 1С-конфигурации, Excel-макросы, корпоративные ERP с только десктоп-интерфейсом.
Тестирование UI — агент кликает по интерфейсу как реальный пользователь, замечает визуальные баги, которые unit-тесты пропускают.
RPA без кода — сбор данных из нескольких веб-интерфейсов, перекладывание данных между системами без API.
# Пример: автоматическое заполнение налоговой декларации из Excel
task = """
1. Открой файл /data/income_2024.xlsx в LibreOffice Calc
2. Скопируй значения из столбца B (строки 5-20) - это доходы по кварталам
3. Открой браузер, перейди на nalog.gov.ru/lk
4. Войди с логином [email protected] и паролем из файла /data/credentials.txt
5. Найди форму 3-НДФЛ за 2024 год
6. Заполни поля доходов скопированными значениями
7. Сделай скриншот заполненной формы, сохрани в /output/form_preview.png
8. НЕ отправляй форму
"""
result = run_computer_use_agent(task)
Ограничения и практика
Computer Use работает медленнее автоматизации через API — каждое действие требует скриншота и обращения к модели. Типичная скорость: 2-5 действий в минуту. Для задач, где нужны сотни кликов, лучше Playwright/Selenium.
Оптимальное применение: задачи с нечёткими условиями, где нужно «прочитать» интерфейс, принять решение и выполнить несколько действий. Например, «найди незакрытые обращения в CRM старше 7 дней и отметь их как требующие внимания» — агент сам разберётся с навигацией конкретной CRM.
Сроки
- Базовый Computer Use агент с pyautogui: 2–3 дня
- Docker sandbox с виртуальным дисплеем: 2–3 дня
- Конкретная задача автоматизации legacy-системы: 1–2 недели
- Мониторинг и логирование действий агента: 3–5 дней







