Claude רואה את המסך שלך ויכול לשלוט בו
רוב הכלים שמתממשקים ל-AI עובדים דרך API, Claude שולח JSON, מקבל JSON. אבל מה עם מערכות ישנות שאין להן API? מה עם ממשקי משתמש שנבנו לפני 20 שנה? Computer Use API פותר בדיוק את זה.
עם Computer Use, Claude מקבל screenshot של מסך, מחליט מה לעשות, שולח פקודה (לחיצה, הקלדה, גלילה), מקבל screenshot חדש, וחוזר עד שהמשימה הושלמה. זוהי לולאת Agent שעובדת על כל ממשק ויזואלי, ללא תלות בקוד מקור או ב-API.
עדכון אפריל 2026: Claude Opus 4.7 תומך ברזולוציה של עד 2576 פיקסלים ו-coordinates 1:1, אין יותר צורך ב-coordinate scaling ידני שגרם לכל כך הרבה כאבי ראש.
שלושת הכלים: Computer, Text Editor, Bash
Computer Use API עובד עם שלושה כלים שמשלימים זה את זה. כולם מוגדרים ב-tools array יחד, ודורשים beta header אחד.
| כלי | type | מה הוא עושה |
|---|---|---|
| Computer | computer_20251124 | screenshot, click, type, key, scroll, zoom |
| Text Editor | text_editor_20250728 | view, create, str_replace, insert, עריכת קבצים ישירה |
| Bash | bash_20250124 | הרצת פקודות shell, עיבוד output |
ה-beta header הנכון למודלים Claude 4.x הוא "computer-use-2025-11-24". שימוש בגרסה ישנה (computer-use-2025-01-24) יעבוד רק עם מודלים deprecated.
הקוד הבסיסי: Agent Loop ב-Python
הנה ה-pattern המינימלי שעובד. שים לב ל-max_iterations, בלעדיו, לולאה שנתקעת תוצר עלויות API בלתי צפויות.
import anthropic
client = anthropic.Anthropic()
tools = [
{
"type": "computer_20251124",
"name": "computer",
"display_width_px": 1024,
"display_height_px": 768,
"display_number": 1
},
{"type": "text_editor_20250728", "name": "str_replace_based_edit_tool"},
{"type": "bash_20250124", "name": "bash"}
]
def agent_loop(task: str, max_iterations: int = 10):
messages = [{"role": "user", "content": task}]
for i in range(max_iterations):
response = client.beta.messages.create(
model="claude-opus-4-7",
max_tokens=4096,
tools=tools,
messages=messages,
betas=["computer-use-2025-11-24"]
)
messages.append({"role": "assistant", "content": response.content})
tool_results = []
for block in response.content:
if block.type == "tool_use":
result = execute_action(block.name, block.input)
tool_results.append({
"type": "tool_result",
"tool_use_id": block.id,
"content": result
})
if not tool_results:
return response # Claude סיים
messages.append({"role": "user", "content": tool_results})
raise RuntimeError(f"הגעת למגבלת {max_iterations} iterations")
Zoom ו-Coordinate Scaling, מה השתנה
אחד ה-bugs הנפוצים ביותר בגרסאות ישנות: Claude לחץ על קואורדינטות שגויות על מסכי Retina ו-4K. הסיבה, ה-API הגדיל תמונות עד 1568 פיקסלים, אבל קואורדינטות נשארו ב-space של התמונה הקטנה.
- Claude Opus 4.7: תומך עד 2576px long edge, coordinates 1:1 עם פיקסלי התמונה. אין צורך ב-scaling ידני.
- מודלים ישנים: חישוב scale factor נדרש, חלק את קואורדינטות Claude ב-scale לפני ביצוע click.
- Zoom action (חדש ב-computer_20251124): מאפשר ל-Claude להתקרב לאזור מסך ולקרוא טקסט קטן בדיוק גבוה. דורש
enable_zoom: trueבהגדרת הכלי.
אבטחה: 4 כללי ברזל
Anthropic מציינת במפורש: "In some circumstances, Claude will follow commands found in content even if it conflicts with the user's instructions." כל פיקסל על המסך הוא פוטנציאל ל-Prompt Injection.
| כלל | למה זה חשוב |
|---|---|
| VM או Docker מבודד | Claude יכול למחוק קבצים, לפתוח דפדפן, לשלוח מיילים, הכל בטעות |
| Human-in-the-loop לפני submit | טפסים, תשלומים, מחיקות, חובה לאישור אנושי |
| Allowlist של דומיינים | אתרי אינטרנט יכולים להכיל הוראות שClaude יבצע |
| max_iterations חובה | לולאה שנתקעת שורפת tokens ועלויות ללא הגבלה |
החדשות הטובות: Anthropic הוסיפה classifiers אוטומטיים שרצים על screenshots ומזהים Prompt Injection attempts. כשנמצא ניסיון injection, Claude יבקש אישור מהמשתמש לפני המשך.
מתי להשתמש ומתי לא
Computer Use אינו הפתרון לכל בעיה. הנה ניתוח מעשי:
| שימוש | מתאים? | חלופה אם לא |
|---|---|---|
| בדיקות E2E UI (Playwright אין) | מצוין | |
| אוטומציה של Legacy ERP ישראלי | מצוין, אין API | |
| גלישה ואיסוף נתונים | בינוני | tool_use + fetch API מהיר יותר |
| אינטראקציה בזמן אמת עם משתמש | לא מתאים | latency גבוה מדי |
| מילוי טפסים ממשלתיים (gov.il) | בינוני | human approval לפני submit חובה |
דוגמה ישראלית: אוטומציה של ממשק Priority
חברת לוגיסטיקה בחיפה משתמשת ב-Priority ERP, מערכת ישנה ללא API ציבורי. בכל חודש עובד HR מוציא דוח שכר ידנית: פותח את המודול, בוחר תאריכים, מייצא ל-Excel, שולח למחלקות.
עם Computer Use Agent:
- Agent רץ ב-Docker container עם Priority מותקן
- Claude מזהה את הממשק, מנווט לדוח השכר, בוחר חודש נוכחי
- לפני לחיצת ייצוא, human confirmation webhook שולח הודעה ל-Slack
- אחרי אישור, Claude לוחץ Export ושומר ל-shared drive
תוצאה: 45 דקות עבודה ידנית הפכו ל-3 דקות המתנה.
