Claude Computer Use Tool: คู่มือนักพัฒนาฉบับสมบูรณ์สำหรับ AI Desktop Automation
ถ้าคุณสามารถบอก AI ว่า “เปิด Firefox ไปที่เว็บไซต์ กรอกฟอร์ม และบันทึกผลลัพธ์” — แล้วมันทำจริงๆ? ไม่ใช่ผ่าน Selenium script ที่เปราะบาง ไม่ใช่ผ่าน custom API integration เพียงแค่… ดูหน้าจอและใช้เมาส์กับแป้นพิมพ์เหมือนมนุษย์
นั่นคือสิ่งที่ computer use tool ของ Claude ทำ
Computer Use คืออะไร?
Computer use คือฟีเจอร์ API เบต้าที่ให้ Claude โต้ตอบกับ desktop environment ผ่าน:
- Screenshot capture — Claude เห็นสิ่งที่อยู่บนหน้าจอ
- Mouse control — คลิก ลาก เลื่อน
- Keyboard input — พิมพ์ข้อความ กดคีย์ลัด
- Desktop automation — โต้ตอบกับแอปพลิเคชันใดก็ได้
คำสำคัญคือ ใดก็ได้ ต่างจาก automation แบบดั้งเดิม (Selenium สำหรับเบราว์เซอร์ AppleScript สำหรับ macOS) Claude ไม่ต้องการ API พิเศษหรือ element selector มันดูพิกเซลบนหน้าจอและตัดสินใจว่าจะคลิกที่ใด เหมือนที่คุณทำ
วิธีการทำงาน (Agent Loop)
Computer use ทำตามวงจรง่ายๆ:
- คุณส่งงานให้ Claude — “บันทึกรูปแมวลงบน desktop ของฉัน”
- Claude ขอ tool action — “ถ่าย screenshot”
- แอปของคุณดำเนินการ — จับภาพหน้าจอ ส่งคืนภาพ
- Claude วิเคราะห์และขอการกระทำต่อไป — “คลิกที่พิกัด (500, 300)”
- ทำซ้ำ จนกว่างานจะเสร็จ
วงจรนี้เรียกว่า agent loop Claude ยังคงขอการกระทำ (screenshot คลิก พิมพ์ เลื่อน) และแอปพลิเคชันของคุณดำเนินการเหล่านั้นจนกว่า Claude จะพิจารณาว่างานเสร็จสิ้น
API call ขั้นต่ำเพื่อเริ่มต้น:
import anthropic
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-opus-4-6",
max_tokens=1024,
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"},
],
messages=[{
"role": "user",
"content": "Save a picture of a cat to my desktop."
}],
betas=["computer-use-2025-11-24"],
)
Beta header "computer-use-2025-11-24" เป็นข้อกำหนด เครื่องมือสามตัว (computer, text editor, bash) ทำงานร่วมกันเพื่อให้ Claude ควบคุม environment ได้อย่างสมบูรณ์
การกระทำที่ใช้ได้
Computer use tool รองรับชุดการโต้ตอบที่หลากหลาย:
การกระทำพื้นฐาน
screenshot— จับภาพ display ปัจจุบันleft_click— คลิกที่พิกัด[x, y]type— พิมพ์สตริงข้อความkey— กดปุ่มหรือคอมโบ (เช่นctrl+s,alt+tab)mouse_move— เลื่อน cursor
การกระทำขั้นสูง (Claude 4.x Models)
scroll— เลื่อนในทิศทางใดก็ได้พร้อมควบคุมปริมาณleft_click_drag— คลิกและลากระหว่างพิกัดright_click,middle_click— ปุ่มเมาส์เพิ่มเติมdouble_click,triple_click— multi-clickhold_key— กดปุ่มค้างไว้ตามระยะเวลาwait— หยุดระหว่างการกระทำ
การเพิ่มล่าสุด: Zoom
ใช้ได้กับ Claude Opus 4.6, Sonnet 4.6 และ Opus 4.5:
zoom— ตรวจสอบส่วนหน้าจอเฉพาะด้วยความละเอียดเต็ม
มีประโยชน์โดยเฉพาะเมื่อ Claude ต้องอ่านตัวอักษรขนาดเล็กหรือระบุรายละเอียด UI ที่ละเอียด
Computing Environment
Claude ไม่ได้เชื่อมต่อกับคอมพิวเตอร์ของคุณโดยตรง คุณต้องจัดหา sandboxed environment — โดยทั่วไปเป็น Docker container ที่รัน:
- Virtual display — Xvfb (X Virtual Framebuffer) render desktop
- Desktop environment — lightweight window manager เช่น Mutter
- Applications — Firefox, LibreOffice, file manager ฯลฯ
- Tool implementations — โค้ดที่แปล request ของ Claude เป็น mouse/keyboard operations จริง
Anthropic จัดหา reference implementation ที่มีทุกอย่างนี้พร้อมตั้งค่าใน Docker เป็นวิธีที่เร็วที่สุดในการเริ่มต้น
สร้าง Agent Loop
นี่คือ agent loop แบบง่ายที่จัดการการโต้ตอบ:
async def agent_loop(task: str, max_iterations: int = 10):
client = anthropic.Anthropic()
messages = [{"role": "user", "content": task}]
tools = [
{
"type": "computer_20251124",
"name": "computer",
"display_width_px": 1024,
"display_height_px": 768,
},
{"type": "text_editor_20250728", "name": "str_replace_based_edit_tool"},
{"type": "bash_20250124", "name": "bash"},
]
for _ in range(max_iterations):
response = client.beta.messages.create(
model="claude-opus-4-6",
max_tokens=4096,
messages=messages,
tools=tools,
betas=["computer-use-2025-11-24"],
)
messages.append({"role": "assistant", "content": response.content})
# ดึง tool calls
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,
})
if not tool_results:
return messages # งานเสร็จสิ้น
messages.append({"role": "user", "content": tool_results})
ฟังก์ชัน execute_tool คือที่ที่คุณเชื่อมต่อการจับภาพหน้าจอจริง การคลิกเมาส์ และ keyboard input กับ computing environment ของคุณ
Coordinate Scaling: จุดที่ต้องระวัง
API จำกัดภาพไว้สูงสุด 1568px บนขอบยาวที่สุด ถ้า display ของคุณใหญ่กว่า (เช่น 1512x982) screenshot จะถูกลดขนาด — แต่ Claude ส่งคืนพิกัดตามภาพที่ เล็กกว่า
คุณต้องปรับขนาดพิกัดกลับขึ้นไป:
import math
def get_scale_factor(width, height):
long_edge = max(width, height)
total_pixels = width * height
long_edge_scale = 1568 / long_edge
total_pixels_scale = math.sqrt(1_150_000 / total_pixels)
return min(1.0, long_edge_scale, total_pixels_scale)
scale = get_scale_factor(1512, 982)
# เมื่อ Claude บอกว่า "คลิกที่ (450, 300)" ให้ปรับขนาดขึ้น:
def execute_click(x, y):
screen_x = x / scale
screen_y = y / scale
perform_click(screen_x, screen_y)
การข้ามขั้นตอนนี้หมายความว่าการคลิกของ Claude จะพลาดเป้าหมาย นี่คือ implementation bug ที่พบบ่อยที่สุด
เคล็ดลับ Prompting สำหรับผลลัพธ์ที่ดีขึ้น
Computer use ทำงานได้ดีที่สุดกับ prompt ที่ชัดเจนและมีโครงสร้าง:
-
ระบุรายละเอียด “เปิด Firefox ไปที่ example.com และคลิกปุ่ม Login” ทำงานได้ดีกว่า “เข้าสู่ระบบเว็บไซต์”
-
ให้ Claude ยืนยัน เพิ่มสิ่งนี้ใน prompt: “หลังจากแต่ละขั้นตอน ถ่าย screenshot และประเมินว่าคุณได้ผลลัพธ์ที่ถูกต้องหรือไม่ ดำเนินการต่อเมื่อยืนยันแล้วเท่านั้น”
-
ใช้คีย์ลัด Dropdown และ scrollbar อาจคลิกได้ยาก กระตุ้น Claude ให้ใช้
Tab,Enterและปุ่มลูกศรแทน -
ให้ตัวอย่าง สำหรับงานที่ทำซ้ำ ให้รวม example screenshot และ expected tool calls ใน prompt
-
ใช้ XML tags สำหรับ credentials ถ้า Claude ต้องเข้าสู่ระบบ ส่ง credentials ใน
<robot_credentials>tags แต่ระวัง — ความเสี่ยง prompt injection สูงขึ้นเมื่อ Claude โต้ตอบกับเนื้อหาที่ไม่น่าเชื่อถือ
ความปลอดภัย: ต้องจริงจัง
Computer use มีความเสี่ยงด้านความปลอดภัยเฉพาะ:
- Prompt injection ผ่านเนื้อหาหน้าจอ Claude อ่านทุกอย่างบนหน้าจอ เว็บเพจที่เป็นอันตรายอาจแสดงคำสั่งที่แทนที่ prompt ของคุณ
- การกระทำอัตโนมัติ Claude อาจคลิกลิงก์ ยืนยัน dialog หรือนำทางออกจากที่คุณตั้งใจ
- การเปิดเผย credentials ถ้า Claude เห็นรหัสผ่านหรือ token บนหน้าจอ สิ่งเหล่านั้นกลายเป็นส่วนหนึ่งของการสนทนา
Anthropic มี classifier ในตัวที่ตรวจจับ prompt injection ที่อาจเกิดขึ้นใน screenshot แต่การป้องกันที่ดีที่สุดคือการแยกออก:
- รันใน VM หรือ Docker container เฉพาะ ที่มีสิทธิ์น้อยที่สุด
- อย่าให้สิทธิ์เข้าถึงบัญชีที่ละเอียดอ่อน โดยไม่มีการกำกับดูแล
- จำกัดการเข้าถึงอินเทอร์เน็ต ด้วย allowlist ของ domain
- ต้องการการยืนยันจากมนุษย์ สำหรับการกระทำที่มีผลลัพธ์ (การซื้อ การสร้างบัญชี ฯลฯ)
สิ่งที่ควรสร้างด้วย
Computer use เหมาะที่สุดสำหรับงานที่ความเร็วไม่ใช่สิ่งสำคัญแต่ automation มีคุณค่า:
- Automated testing — ทดสอบแอปพลิเคชัน desktop ใดก็ได้ ไม่ใช่แค่ web app
- Data collection — นำทางเว็บไซต์และดึงข้อมูล
- Legacy system integration — จัดการ workflow ใน app ที่ไม่มี API
- Form filling — กรอก web form ข้ามหลายเว็บไซต์
- Research workflows — ค้นหา อ่าน และรวบรวมข้อมูลจากเว็บ
- QA & monitoring — ตรวจสอบว่า UI render ถูกต้อง
สำหรับ research และ workflow การเก็บข้อมูล เครื่องมืออย่าง Save เสริม computer use ได้ดี — เมื่อ Claude นำทางไปยังหน้าเว็บ การแปลงเป็น Markdown ที่สะอาดให้เนื้อหาที่มีโครงสร้างและพร้อมสำหรับ AI แทน screenshot ดิบ
ข้อจำกัดปัจจุบัน
ระวังข้อจำกัดเบต้าเหล่านี้:
- Latency การกระทำแต่ละอย่างต้องการ API call การจับ screenshot และการตอบสนอง ช้ากว่ามนุษย์ที่คลิก
- ความแม่นยำในการมองเห็น Claude อาจอ่านตัวอักษรขนาดเล็กผิดหรือระบุ UI elements ผิด zoom action ใหม่ช่วย แต่ไม่สมบูรณ์
- Scrolling ปรับปรุงมากในรุ่นล่าสุด แต่การ scroll แบบซับซ้อนอาจยังไม่น่าเชื่อถือ
- Spreadsheet การเลือกเซลล์ยุ่งยาก ใช้ keyboard navigation เมื่อเป็นไปได้
- ไม่มีการสร้างบัญชีบน social platform Claude จงใจจะไม่สร้างบัญชีหรือแอบอ้างเป็นมนุษย์บน social media
ราคา
Computer use ใช้ราคา tool use มาตรฐาน:
- System prompt overhead: 466-499 tokens
- Tool definition: 735 tokens ต่อ tool (สำหรับ Claude 4.x)
- Screenshots: เรียกเก็บเงินเป็น vision tokens (ขึ้นอยู่กับความละเอียด)
- แต่ละ API call ใน agent loop เป็นคำขอที่เรียกเก็บเงินแยกต่างหาก
สำหรับงาน 10 ขั้นตอนทั่วไป คาดว่าจะใช้ 15,000-50,000 tokens ขึ้นอยู่กับขนาด screenshot และความซับซ้อนของการตอบสนอง
เริ่มต้น
- ลอง reference implementation Clone anthropic-quickstarts รัน Docker container และทดลอง
- เริ่มด้วยงานง่ายๆ “เปิด text editor พิมพ์ Hello World บันทึกไฟล์” ให้ agent loop ทำงานก่อนที่จะลอง workflow ที่ซับซ้อน
- เพิ่มมาตรการป้องกัน กำหนดขีดจำกัดการวนซ้ำ ตรวจสอบพิกัด บันทึกทุกการกระทำ เพิ่มการยืนยันจากมนุษย์สำหรับสิ่งที่ยกเลิกไม่ได้
- ปรับ prompt ให้เหมาะสม ยิ่งคำสั่งดีเท่าไหร่ Claude ต้องการการวนซ้ำน้อยลง — และค่า token ของคุณก็จะลดลง
Computer use แสดงถึงการเปลี่ยนแปลงขั้นพื้นฐานในสิ่งที่เป็นไปได้ด้วย AI API แทนที่จะสร้าง custom integration สำหรับทุกแอปพลิเคชัน คุณสามารถให้ Claude ใช้ interface เดียวกับที่มนุษย์ใช้ — หน้าจอ เมาส์ และแป้นพิมพ์ — และให้มันคิดออกเอง
อนาคตของ automation ไม่ใช่ API มากขึ้น มันคือ AI ที่สามารถใช้ interface ที่เรามีอยู่แล้ว