เครื่องมือ (OpenClaw)¶
OpenClaw exposes first-class agent tools for browser, canvas, nodes, and cron.
OpenClaw เปิดเผย เครื่องมือของเอเจนต์แบบชั้นหนึ่ง สำหรับเบราว์เซอร์,แคนวาส,โหนดและcron
ซึ่งมาแทนที่Skills openclaw-* แบบเดิม: เครื่องมือมีชนิดข้อมูลชัดเจน,ไม่มีการเรียกเชลล์,
และเอเจนต์ควรพึ่งพาเครื่องมือเหล่านี้โดยตรง
การปิดใช้งานเครื่องมือ¶
คุณสามารถอนุญาต/ปฏิเสธเครื่องมือแบบส่วนกลางได้ผ่าน tools.allow / tools.deny ใน openclaw.json
(การปฏิเสธมีผลเหนือกว่า) วิธีนี้ป้องกันไม่ให้ส่งเครื่องมือที่ไม่อนุญาตไปยังผู้ให้บริการโมเดล This prevents disallowed tools from being sent to model providers.
{
tools: { deny: ["browser"] },
}
หมายเหตุ:
- การจับคู่ไม่คำนึงถึงตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก.
- รองรับไวลด์การ์ด
*("*"หมายถึงเครื่องมือทั้งหมด) - หาก
tools.allowอ้างอิงเฉพาะชื่อเครื่องมือปลั๊กอินที่ไม่รู้จักหรือยังไม่โหลด OpenClaw จะบันทึกคำเตือนและเพิกเฉยต่อรายการอนุญาต เพื่อให้เครื่องมือแกนหลักยังคงใช้งานได้
โปรไฟล์เครื่องมือ (รายการอนุญาตฐาน)¶
tools.profile ตั้งค่า รายการอนุญาตเครื่องมือฐาน ก่อน tools.allow/tools.deny
การแทนที่ต่อเอเจนต์: agents.list[].tools.profile.
Per-agent override: agents.list[].tools.profile.
โปรไฟล์:
minimal:session_statusเท่านั้นcoding:group:fs,group:runtime,group:sessions,group:memory,imagemessaging:group:messaging,sessions_list,sessions_history,sessions_send,session_statusfull: ไม่มีข้อจำกัด(เหมือนกับไม่ได้ตั้งค่า)
ตัวอย่าง(ค่าเริ่มต้นเฉพาะการส่งข้อความ และอนุญาตเครื่องมือ Slack + Discord เพิ่ม):
{
tools: {
profile: "messaging",
allow: ["slack", "discord"],
},
}
ตัวอย่าง(โปรไฟล์การเขียนโค้ด แต่ปฏิเสธ exec/process ทุกที่):
{
tools: {
profile: "coding",
deny: ["group:runtime"],
},
}
ตัวอย่าง(โปรไฟล์การเขียนโค้ดแบบส่วนกลาง เอเจนต์ซัพพอร์ตเฉพาะการส่งข้อความ):
{
tools: { profile: "coding" },
agents: {
list: [
{
id: "support",
tools: { profile: "messaging", allow: ["slack"] },
},
],
},
}
นโยบายเครื่องมือเฉพาะผู้ให้บริการ¶
ใช้ tools.byProvider เพื่อ จำกัดเครื่องมือเพิ่มเติม สำหรับผู้ให้บริการเฉพาะ
(หรือ provider/model เดียว) โดยไม่เปลี่ยนค่าเริ่มต้นแบบส่วนกลาง
การแทนที่ต่อเอเจนต์: agents.list[].tools.byProvider.
Per-agent override: agents.list[].tools.byProvider.
สิ่งนี้ถูกใช้ หลัง โปรไฟล์เครื่องมือฐาน และ ก่อน รายการอนุญาต/ปฏิเสธ
ดังนั้นจึงทำได้เพียงทำให้ชุดเครื่องมือแคบลง
คีย์ผู้ให้บริการยอมรับได้ทั้ง provider (เช่น google-antigravity) หรือ
provider/model (เช่น openai/gpt-5.2).
Provider keys accept either provider (e.g. google-antigravity) or
provider/model (e.g. openai/gpt-5.2).
ตัวอย่าง(คงโปรไฟล์การเขียนโค้ดแบบส่วนกลาง แต่ใช้เครื่องมือขั้นต่ำสำหรับ Google Antigravity):
{
tools: {
profile: "coding",
byProvider: {
"google-antigravity": { profile: "minimal" },
},
},
}
ตัวอย่าง(รายการอนุญาตเฉพาะผู้ให้บริการ/โมเดลสำหรับเอ็นด์พอยต์ที่ไม่เสถียร):
{
tools: {
allow: ["group:fs", "group:runtime", "sessions_list"],
byProvider: {
"openai/gpt-5.2": { allow: ["group:fs", "sessions_list"] },
},
},
}
ตัวอย่าง(การแทนที่เฉพาะเอเจนต์สำหรับผู้ให้บริการเดียว):
{
agents: {
list: [
{
id: "support",
tools: {
byProvider: {
"google-antigravity": { allow: ["message", "sessions_list"] },
},
},
},
],
},
}
กลุ่มเครื่องมือ(ตัวย่อ)¶
นโยบายเครื่องมือ(ส่วนกลาง,เอเจนต์,sandbox)รองรับรายการ group:* ที่ขยายเป็นหลายเครื่องมือ
ใช้สิ่งเหล่านี้ใน tools.allow / tools.deny.
Use these in tools.allow / tools.deny.
กลุ่มที่มีให้:
group:runtime:exec,bash,processgroup:fs:read,write,edit,apply_patchgroup:sessions:sessions_list,sessions_history,sessions_send,sessions_spawn,session_statusgroup:memory:memory_search,memory_getgroup:web:web_search,web_fetchgroup:ui:browser,canvasgroup:automation:cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:openclaw: เครื่องมือ OpenClaw แบบบิลต์อินทั้งหมด(ไม่รวมปลั๊กอินผู้ให้บริการ)
ตัวอย่าง(อนุญาตเฉพาะเครื่องมือไฟล์ + เบราว์เซอร์):
{
tools: {
allow: ["group:fs", "browser"],
},
}
ปลั๊กอิน + เครื่องมือ¶
Plugins can register additional tools (and CLI commands) beyond the core set. ปลั๊กอินสามารถลงทะเบียน เครื่องมือเพิ่มเติม (และคำสั่ง CLI) นอกเหนือจากชุดแกนหลักได้ ดู Plugins สำหรับการติดตั้ง+คอนฟิก และ Skills สำหรับวิธีการแทรกแนวทางการใช้เครื่องมือเข้าไปในพรอมป์ต์ ปลั๊กอินบางตัวมาพร้อมSkillsของตนเองควบคู่กับเครื่องมือ(เช่นปลั๊กอินโทรด้วยเสียง) Some plugins ship their own skills alongside tools (for example, the voice-call plugin).
เครื่องมือปลั๊กอินแบบไม่บังคับ:
- Lobster: รันไทม์เวิร์กโฟลว์แบบมีชนิดข้อมูลพร้อมการอนุมัติที่ทำต่อได้(ต้องใช้ Lobster CLI บนโฮสต์Gateway)
- LLM Task: ขั้นตอน LLM แบบ JSON เท่านั้นสำหรับเอาต์พุตเวิร์กโฟลว์ที่มีโครงสร้าง(ตรวจสอบสคีมาได้แบบไม่บังคับ)
รายการเครื่องมือ¶
apply_patch¶
Apply structured patches across one or more files. Use for multi-hunk edits.
ใช้แพตช์แบบมีโครงสร้างกับไฟล์หนึ่งไฟล์หรือหลายไฟล์ เหมาะสำหรับการแก้ไขหลายฮังก์
ทดลองใช้: เปิดผ่าน tools.exec.applyPatch.enabled(เฉพาะโมเดล OpenAI)
exec¶
รันคำสั่งเชลล์ในเวิร์กสเปซ
พารามิเตอร์หลัก:
command(จำเป็น)yieldMs(ย้ายไปเบื้องหลังอัตโนมัติหลังหมดเวลา ค่าเริ่มต้น 10000)background(ย้ายไปเบื้องหลังทันที)timeout(วินาที; ฆ่าโปรเซสหากเกิน ค่าเริ่มต้น 1800)elevated(บูลีน; รันบนโฮสต์หากเปิด/อนุญาตโหมดยกระดับ; เปลี่ยนพฤติกรรมเฉพาะเมื่อเอเจนต์อยู่ในsandbox)host(sandbox | gateway | node)security(deny | allowlist | full)ask(off | on-miss | always)node(id/ชื่อโหนดสำหรับhost=node)- ต้องการ TTY จริงหรือไม่? ตั้งค่า
pty: true.
หมายเหตุ:
- คืนค่า
status: "running"พร้อมsessionIdเมื่อย้ายไปเบื้องหลัง - ใช้
processเพื่อโพล/บันทึก/เขียน/ฆ่า/ล้างเซสชันเบื้องหลัง - หาก
processถูกปฏิเสธexecจะรันแบบซิงโครนัสและเพิกเฉยต่อyieldMs/background elevatedถูกคุมด้วยtools.elevatedรวมกับการแทนที่agents.list[].tools.elevatedใดๆ(ทั้งสองต้องอนุญาต) และเป็นนามแฝงของhost=gateway+security=fullelevatedเปลี่ยนพฤติกรรมเฉพาะเมื่อเอเจนต์อยู่ในsandbox(อย่างอื่นไม่มีผล)host=nodeสามารถเล็งไปยังแอปคู่หู macOS หรือโฮสต์โหนดแบบไม่มีหัว(openclaw node run)- การอนุมัติและรายการอนุญาตของgateway/โหนด: Exec approvals
process¶
จัดการเซสชัน exec เบื้องหลัง
การกระทำหลัก:
list,poll,log,write,kill,clear,remove
หมายเหตุ:
pollคืนเอาต์พุตใหม่และสถานะการออกเมื่อเสร็จสิ้นlogรองรับoffset/limitแบบอิงบรรทัด(ละoffsetเพื่อดึง N บรรทัดล่าสุด)processจำกัดขอบเขตต่อเอเจนต์; เซสชันจากเอเจนต์อื่นมองไม่เห็น
web_search¶
ค้นหาเว็บด้วย Brave Search API
พารามิเตอร์หลัก:
query(จำเป็น)count(1–10; ค่าเริ่มต้นจากtools.web.search.maxResults)
หมายเหตุ:
- ต้องมีคีย์ Brave API(แนะนำ:
openclaw configure --section webหรือกำหนดBRAVE_API_KEY) - เปิดใช้งานผ่าน
tools.web.search.enabled - การตอบกลับถูกแคช(ค่าเริ่มต้น 15 นาที)
- ดู Web tools สำหรับการตั้งค่า
web_fetch¶
ดึงและสกัดเนื้อหาที่อ่านได้จาก URL(HTML → markdown/text)
พารามิเตอร์หลัก:
url(จำเป็น)extractMode(markdown|text)maxChars(ตัดหน้าที่ยาว)
หมายเหตุ:
- เปิดใช้งานผ่าน
tools.web.fetch.enabled maxCharsถูกจำกัดด้วยtools.web.fetch.maxCharsCap(ค่าเริ่มต้น 50000)- การตอบกลับถูกแคช(ค่าเริ่มต้น 15 นาที)
- สำหรับไซต์ที่ใช้ JS หนัก แนะนำใช้เครื่องมือเบราว์เซอร์
- ดู Web tools สำหรับการตั้งค่า
- ดู Firecrawl สำหรับทางเลือก anti-bot แบบไม่บังคับ
browser¶
ควบคุมเบราว์เซอร์ที่ OpenClaw จัดการโดยเฉพาะ
การกระทำหลัก:
status,start,stop,tabs,open,focus,closesnapshot(aria/ai)screenshot(คืนบล็อกภาพ +MEDIA:<path>)act(การกระทำ UI: click/type/press/hover/drag/select/fill/resize/wait/evaluate)navigate,console,pdf,upload,dialog
การจัดการโปรไฟล์:
profiles— แสดงรายการโปรไฟล์เบราว์เซอร์ทั้งหมดพร้อมสถานะcreate-profile— สร้างโปรไฟล์ใหม่พร้อมพอร์ตที่จัดสรรอัตโนมัติ(หรือcdpUrl)delete-profile— หยุดเบราว์เซอร์ ลบข้อมูลผู้ใช้ ลบออกจากคอนฟิก(เฉพาะโลคัล)reset-profile— ฆ่าโปรเซสที่หลงค้างบนพอร์ตของโปรไฟล์(เฉพาะโลคัล)
พารามิเตอร์ทั่วไป:
profile(ไม่บังคับ; ค่าเริ่มต้นbrowser.defaultProfile)target(sandbox|host|node)node(ไม่บังคับ; เลือก id/ชื่อโหนดเฉพาะ) หมายเหตุ:- ต้องการ
browser.enabled=true(ค่าเริ่มต้นคือtrue; ตั้งfalseเพื่อปิด) - ทุกการกระทำยอมรับพารามิเตอร์
profileแบบไม่บังคับสำหรับรองรับหลายอินสแตนซ์ - เมื่อไม่ระบุ
profileจะใช้browser.defaultProfile(ค่าเริ่มต้น "chrome") - ชื่อโปรไฟล์: ตัวพิมพ์เล็กตัวอักษรและตัวเลข + ขีดกลางเท่านั้น(ยาวสุด 64 ตัวอักษร)
- ช่วงพอร์ต: 18800-18899(ประมาณ 100 โปรไฟล์)
- โปรไฟล์ระยะไกลเป็นแบบแนบเท่านั้น(ไม่เริ่ม/หยุด/รีเซ็ต)
- หากมีโหนดที่รองรับเบราว์เซอร์เชื่อมต่ออยู่ เครื่องมืออาจกำหนดเส้นทางอัตโนมัติไปยังโหนดนั้น(เว้นแต่คุณจะปักหมุด
target) snapshotค่าเริ่มต้นเป็นaiเมื่อมี Playwright ติดตั้ง; ใช้ariaสำหรับแผนผังการเข้าถึงsnapshotรองรับตัวเลือก role-snapshot (interactive,compact,depth,selector) ซึ่งคืนค่าอ้างอิงเช่นe12actต้องการrefจากsnapshot(ค่าเชิงตัวเลข12จากสแนปช็อต AI หรือe12จากสแนปช็อตบทบาท); ใช้evaluateสำหรับกรณีต้องใช้ตัวเลือก CSS ที่พบไม่บ่อย- หลีกเลี่ยง
act→waitเป็นค่าเริ่มต้น; ใช้เฉพาะกรณีพิเศษ(ไม่มีสถานะ UI ที่เชื่อถือได้ให้รอ) uploadสามารถส่งrefเพื่อคลิกอัตโนมัติหลังเตรียมพร้อมuploadรองรับinputRef(aria ref) หรือelement(CSS selector) เพื่อกำหนด<input type="file">โดยตรง
canvas¶
ขับเคลื่อน Canvas ของโหนด(present,eval,snapshot,A2UI)
การกระทำหลัก:
present,hide,navigate,evalsnapshot(คืนบล็อกภาพ +MEDIA:<path>)a2ui_push,a2ui_reset
หมายเหตุ:
- ใช้
node.invokeของGateway อยู่เบื้องหลัง - หากไม่ระบุ
nodeเครื่องมือจะเลือกค่าเริ่มต้น(โหนดที่เชื่อมต่อเพียงตัวเดียวหรือโหนด mac ในเครื่อง) - A2UI รองรับเฉพาะ v0.8(ไม่มี
createSurface); CLI จะปฏิเสธ JSONL v0.9 พร้อมข้อผิดพลาดรายบรรทัด - ทดสอบเร็ว:
openclaw nodes canvas a2ui push --node <id> --text "Hello from A2UI".
nodes¶
ค้นหาและเล็งเป้าหมายโหนดที่จับคู่; ส่งการแจ้งเตือน; จับภาพกล้อง/หน้าจอ
การกระทำหลัก:
status,describepending,approve,reject(การจับคู่)notify(macOSsystem.notify)run(macOSsystem.run)camera_snap,camera_clip,screen_recordlocation_get
หมายเหตุ:
- คำสั่งกล้อง/หน้าจอต้องให้แอปโหนดอยู่เบื้องหน้า
- ภาพจะคืนบล็อกภาพ +
MEDIA:<path> - วิดีโอคืนค่า
FILE:<path>(mp4) - ตำแหน่งที่ตั้งคืนเพย์โหลด JSON(lat/lon/accuracy/timestamp)
- พารามิเตอร์
run: อาร์เรย์ argvcommand; ไม่บังคับcwd,env(KEY=VAL),commandTimeoutMs,invokeTimeoutMs,needsScreenRecording.
ตัวอย่าง(run):
{
"action": "run",
"node": "office-mac",
"command": ["echo", "Hello"],
"env": ["FOO=bar"],
"commandTimeoutMs": 12000,
"invokeTimeoutMs": 45000,
"needsScreenRecording": false
}
image¶
วิเคราะห์ภาพด้วยโมเดลภาพที่ตั้งค่าไว้
พารามิเตอร์หลัก:
image(พาธหรือ URL ที่จำเป็น)prompt(ไม่บังคับ; ค่าเริ่มต้น "Describe the image.")model(การแทนที่แบบไม่บังคับ)maxBytesMb(ขีดจำกัดขนาดแบบไม่บังคับ)
หมายเหตุ:
- ใช้ได้เฉพาะเมื่อมีการตั้งค่า
agents.defaults.imageModel(ตัวหลักหรือสำรอง) หรือเมื่อสามารถอนุมานโมเดลภาพโดยปริยายจากโมเดลเริ่มต้นของคุณ + การยืนยันตัวตนที่ตั้งค่าไว้(พยายามจับคู่ให้ดีที่สุด) - ใช้โมเดลภาพโดยตรง(แยกจากโมเดลแชตหลัก)
message¶
ส่งข้อความและการกระทำของช่องทางข้าม Discord/Google Chat/Slack/Telegram/WhatsApp/Signal/iMessage/MS Teams
การกระทำหลัก:
send(ข้อความ + สื่อเสริม; MS Teams รองรับcardสำหรับ Adaptive Cards)poll(โพล WhatsApp/Discord/MS Teams)react/reactions/read/edit/deletepin/unpin/list-pinspermissionsthread-create/thread-list/thread-replysearchstickermember-info/role-infoemoji-list/emoji-upload/sticker-uploadrole-add/role-removechannel-info/channel-listvoice-statusevent-list/event-createtimeout/kick/ban
หมายเหตุ:
sendส่ง WhatsApp ผ่านGateway; ช่องทางอื่นส่งตรงpollใช้Gatewayสำหรับ WhatsApp และ MS Teams; โพลของ Discord ส่งตรง- เมื่อการเรียกเครื่องมือส่งข้อความถูกผูกกับเซสชันแชตที่ใช้งานอยู่ การส่งจะถูกจำกัดไปยังเป้าหมายของเซสชันนั้นเพื่อหลีกเลี่ยงการรั่วไหลข้ามบริบท
cron¶
จัดการงาน cron และการปลุกของGateway
การกระทำหลัก:
status,listadd,update,remove,run,runswake(เข้าคิวอีเวนต์ระบบ + ฮาร์ตบีตทันทีแบบไม่บังคับ)
หมายเหตุ:
addคาดหวังอ็อบเจ็กต์งาน cron แบบเต็ม(สคีมาเดียวกับcron.addRPC)updateใช้{ jobId, patch }(รองรับidเพื่อความเข้ากันได้)
gateway¶
รีสตาร์ตหรือปรับใช้การอัปเดตกับโปรเซสGatewayที่กำลังรันอยู่(ในที่เดิม)
การกระทำหลัก:
restart(อนุญาต + ส่งSIGUSR1เพื่อรีสตาร์ตในโปรเซส;openclaw gatewayรีสตาร์ตในที่เดิม)config.get/config.schemaconfig.apply(ตรวจสอบ + เขียนคอนฟิก + รีสตาร์ต + ปลุก)config.patch(รวมการอัปเดตบางส่วน + รีสตาร์ต + ปลุก)update.run(รันอัปเดต + รีสตาร์ต + ปลุก)
หมายเหตุ:
- ใช้
delayMs(ค่าเริ่มต้น 2000) เพื่อหลีกเลี่ยงการขัดจังหวะการตอบกลับที่กำลังดำเนินอยู่ restartปิดใช้งานเป็นค่าเริ่มต้น; เปิดด้วยcommands.restart: true.
sessions_list / sessions_history / sessions_send / sessions_spawn / session_status¶
แสดงรายการเซสชัน ตรวจสอบประวัติทรานสคริปต์ หรือส่งไปยังอีกเซสชันหนึ่ง
พารามิเตอร์หลัก:
sessions_list:kinds?,limit?,activeMinutes?,messageLimit?(0 = ไม่มี)sessions_history:sessionKey(หรือsessionId),limit?,includeTools?sessions_send:sessionKey(หรือsessionId),message,timeoutSeconds?(0 = ส่งแล้วไม่รอ)sessions_spawn:task,label?,agentId?,model?,runTimeoutSeconds?,cleanup?session_status:sessionKey?(ค่าเริ่มต้นปัจจุบัน; รองรับsessionId),model?(defaultล้างการแทนที่)
หมายเหตุ:
mainคือคีย์แชตตรงตามมาตรฐาน; แบบส่วนกลาง/ไม่รู้จักจะถูกซ่อนmessageLimit > 0ดึงข้อความ N ล่าสุดต่อเซสชัน(กรองข้อความเครื่องมือ)sessions_sendจะรอการเสร็จสิ้นขั้นสุดท้ายเมื่อtimeoutSeconds > 0- การส่งมอบ/ประกาศเกิดหลังเสร็จสิ้นและเป็นแบบพยายามให้ดีที่สุด;
status: "ok"ยืนยันว่าการรันเอเจนต์เสร็จ ไม่ได้ยืนยันว่าการประกาศถูกส่งแล้ว sessions_spawnเริ่มการรันซับเอเจนต์และโพสต์คำตอบประกาศกลับไปยังแชตผู้ร้องขอsessions_spawnไม่บล็อกและคืนค่าstatus: "accepted"ทันทีsessions_sendรัน ping‑pong ตอบกลับ(ตอบREPLY_SKIPเพื่อหยุด; จำนวนรอบสูงสุดผ่านsession.agentToAgent.maxPingPongTurns, 0–5)- หลัง ping‑pong เอเจนต์เป้าหมายจะรัน ขั้นประกาศ; ตอบ
ANNOUNCE_SKIPเพื่อระงับการประกาศ
agents_list¶
แสดงรายการ id เอเจนต์ที่เซสชันปัจจุบันสามารถเล็งเป้าหมายด้วย sessions_spawn.
หมายเหตุ:
- ผลลัพธ์ถูกจำกัดตามรายการอนุญาตต่อเอเจนต์(
agents.list[].subagents.allowAgents) - เมื่อมีการตั้งค่า
["*"]เครื่องมือจะรวมเอเจนต์ที่ตั้งค่าทั้งหมดและทำเครื่องหมายallowAny: true.
พารามิเตอร์(ทั่วไป)¶
เครื่องมือที่พึ่งพาGateway(canvas, nodes, cron):
gatewayUrl(ค่าเริ่มต้นws://127.0.0.1:18789)gatewayToken(หากเปิดการยืนยันตัวตน)timeoutMs
Note: when gatewayUrl is set, include gatewayToken explicitly. หมายเหตุ: เมื่อมีการตั้งค่า gatewayUrl ให้ใส่ gatewayToken อย่างชัดเจน เครื่องมือจะไม่สืบทอดคอนฟิก
หรือข้อมูลรับรองจากสภาพแวดล้อมสำหรับการแทนที่ และหากไม่มีข้อมูลรับรองที่ระบุอย่างชัดเจนจะถือเป็นข้อผิดพลาด
เครื่องมือเบราว์เซอร์:
profile(ไม่บังคับ; ค่าเริ่มต้นbrowser.defaultProfile)target(sandbox|host|node)node(ไม่บังคับ; ปักหมุด id/ชื่อโหนดเฉพาะ)
โฟลว์เอเจนต์ที่แนะนำ¶
การทำงานอัตโนมัติด้วยเบราว์เซอร์:
browser→status/startsnapshot(ai หรือ aria)act(click/type/press)screenshotหากต้องการยืนยันด้วยภาพ
Canvas render:
canvas→presenta2ui_push(ไม่บังคับ)snapshot
การเล็งเป้าหมายโหนด:
nodes→statusdescribeบนโหนดที่เลือกnotify/run/camera_snap/screen_record
ความปลอดภัย¶
- หลีกเลี่ยง
system.runโดยตรง; ใช้nodes→runเฉพาะเมื่อมีความยินยอมจากผู้ใช้อย่างชัดเจน - เคารพความยินยอมของผู้ใช้สำหรับการจับภาพกล้อง/หน้าจอ
- ใช้
status/describeเพื่อให้แน่ใจว่ามีสิทธิ์ก่อนเรียกคำสั่งสื่อ
วิธีที่เครื่องมือถูกนำเสนอให้เอเจนต์¶
เครื่องมือถูกเปิดเผยในสองช่องทางคู่ขนาน:
- ข้อความใน system prompt: รายการที่มนุษย์อ่านได้ + แนวทาง
- สคีมาเครื่องมือ: นิยามฟังก์ชันแบบมีโครงสร้างที่ส่งไปยัง API ของโมเดล
That means the agent sees both “what tools exist” and “how to call them.” นั่นหมายความว่าเอเจนต์จะเห็นทั้ง“มีเครื่องมืออะไรบ้าง”และ“เรียกใช้อย่างไร” หากเครื่องมือ ไม่ปรากฏใน system prompt หรือในสคีมา โมเดลจะไม่สามารถเรียกใช้ได้