CLI commands
เอเจนต์
openclaw agent
เรียกใช้หนึ่งรอบการทำงานของเอเจนต์ผ่าน Gateway แฟล็ก --local ที่ระบุอย่างชัดเจนเป็นเส้นทางการดำเนินการแบบฝังตัวเพียงเส้นทางเดียว
ส่งตัวเลือกเซสชันอย่างน้อยหนึ่งรายการ ได้แก่ --to, --session-key, --session-id หรือ --agent
ที่เกี่ยวข้อง: เครื่องมือส่งของเอเจนต์
ตัวเลือก
-m, --message <text>: เนื้อหาข้อความ--message-file <path>: อ่านเนื้อหาข้อความจากไฟล์ UTF-8-t, --to <dest>: ผู้รับที่ใช้ในการสร้างคีย์เซสชัน--session-key <key>: คีย์เซสชันที่ระบุอย่างชัดเจนสำหรับใช้กำหนดเส้นทาง--session-id <id>: ID เซสชันที่ระบุอย่างชัดเจน--agent <id>: ID เอเจนต์ ซึ่งจะแทนที่การผูกเส้นทาง--model <id>: การแทนที่โมเดลสำหรับการเรียกใช้ครั้งนี้ (provider/modelหรือ ID โมเดล)--thinking <level>: ระดับการคิดของเอเจนต์ (off,minimal,low,medium,highรวมถึงระดับกำหนดเองที่ผู้ให้บริการรองรับ เช่นxhigh,adaptiveหรือmax)--verbose <on|off>: บันทึกระดับความละเอียดสำหรับเซสชัน--channel <channel>: ช่องทางการส่ง หากละไว้จะใช้ช่องทางเซสชันหลัก--reply-to <target>: การแทนที่ปลายทางการส่ง--reply-channel <channel>: การแทนที่ช่องทางการส่ง--reply-account <id>: การแทนที่บัญชีสำหรับการส่ง--local: เรียกใช้เอเจนต์แบบฝังตัวโดยตรง (หลังจากโหลดรีจิสทรี Plugin ล่วงหน้า)--deliver: ส่งคำตอบกลับไปยังช่องทาง/ปลายทางที่เลือก--timeout <seconds>: แทนที่กำหนดเวลาสิ้นสุดของรอบการทำงานเอเจนต์สำหรับคำสั่งนี้ (ค่าเริ่มต้น 600 หรือagents.defaults.timeoutSeconds);0จะปิดใช้กำหนดเวลาสิ้นสุดโดยรวม ค่าสำรอง 600 วินาทีเป็นของคำสั่ง CLI นี้ ไม่ใช่รอบการทำงาน Gateway ตามปกติ ซึ่งมีค่าเริ่มต้น 48 ชั่วโมง--json: แสดงผลเป็น JSON
ตัวอย่าง
openclaw agent --to +15555550123 --message "อัปเดตสถานะ" --deliveropenclaw agent --agent ops --message "สรุปบันทึก"openclaw agent --agent ops --message-file ./task.mdopenclaw agent --agent ops --model openai/gpt-5.4 --message "สรุปบันทึก"openclaw agent --session-key agent:ops:incident-42 --message "สรุปสถานะ"openclaw agent --agent ops --session-key incident-42 --message "สรุปสถานะ"openclaw agent --session-id 1234 --message "สรุปกล่องขาเข้า" --thinking mediumopenclaw agent --to +15555550123 --message "ติดตามบันทึก" --verbose on --jsonopenclaw agent --agent ops --message "สร้างรายงาน" --deliver --reply-channel slack --reply-to "#reports"openclaw agent --agent ops --message "เรียกใช้ในเครื่อง" --localหมายเหตุ
- ส่ง
--messageหรือ--message-fileเพียงรายการเดียวเท่านั้น--message-fileจะตัด UTF-8 BOM ที่อยู่ด้านหน้าและคงเนื้อหาหลายบรรทัดไว้ โดยจะปฏิเสธไฟล์ที่ไม่ใช่ UTF-8 ที่ถูกต้อง ไฟล์ที่มีขนาดใหญ่กว่า 4 MiB จะถูกปฏิเสธก่อนส่งต่อ - คำสั่งแบบสแลช (ตัวอย่างเช่น
/compact) ไม่สามารถเรียกใช้ผ่าน--messageได้ CLI จะปฏิเสธคำสั่งเหล่านี้และแนะนำให้ใช้คำสั่งเฉพาะโดยตรงแทน (openclaw sessions compact <key>สำหรับ Compaction) - การเรียกใช้
--localเป็นแบบครั้งเดียว: ทรัพยากรลูปแบ็ก MCP ที่รวมมาให้และเซสชัน stdio ของ Claude แบบวอร์มที่เปิดสำหรับการเรียกใช้นั้นจะถูกยุติหลังจากตอบกลับ เพื่อไม่ให้การเรียกใช้ผ่านสคริปต์ทิ้งโพรเซสลูกไว้ทำงานในเครื่อง ส่วนการเรียกใช้ที่รองรับโดย Gateway จะคงทรัพยากรลูปแบ็ก MCP ที่ Gateway เป็นเจ้าของไว้ภายใต้โพรเซส Gateway ที่กำลังทำงาน - การดำเนินการแบบฝังตัวโดยลำพังด้วย
--localจะปฏิเสธการใช้เซสชันหลักที่มีอยู่ซ้ำขณะที่การกู้คืนหลังเริ่มระบบใหม่ยังค้างอยู่ ให้เรียกใช้รอบการทำงานผ่าน Gateway ที่พร้อมใช้งาน หรือรีเซ็ตที่ Gateway ด้วย/newหรือ/reset; โพรเซสแบบฝังตัวที่แยกออกมาไม่สามารถประสานเจ้าของการกู้คืนดังกล่าวกับตัวสแกนของ Gateway ได้อย่างปลอดภัย - เมื่อใช้
--agent,--channelและ--toร่วมกัน การกำหนดเส้นทางเซสชันจะเป็นไปตามผู้รับมาตรฐานของช่องทางและsession.dmScopeช่องทางที่มีข้อมูลประจำตัวผู้รับแบบส่งออกเท่านั้นที่เสถียรจะใช้เซสชันที่ผู้ให้บริการเป็นเจ้าของ ซึ่งแยกจากเซสชันหลักของเอเจนต์--reply-channelและ--reply-accountมีผลเฉพาะต่อการส่งเท่านั้น --session-keyเลือกคีย์เซสชันที่ระบุอย่างชัดเจน คีย์ที่ขึ้นต้นด้วยเอเจนต์ต้องใช้agent:<agent-id>:<session-key>และเมื่อระบุทั้งสองค่า--agentต้องตรงกับ ID เอเจนต์ของคีย์ คีย์เปล่าที่ไม่ใช่ค่าเฝ้าระวังจะถูกกำหนดขอบเขตเป็น--agentเมื่อมีการระบุไว้ หรือเป็นเอเจนต์เริ่มต้นที่กำหนดค่าไว้ในกรณีอื่น ตัวอย่างเช่น--agent ops --session-key incident-42จะกำหนดเส้นทางไปยังagent:ops:incident-42คีย์ตามตัวอักษรglobalและunknownจะคงไม่มีขอบเขตเฉพาะเมื่อไม่มีการระบุ--agentเท่านั้น--jsonสงวน stdout ไว้สำหรับการตอบกลับ JSON ส่วนการวินิจฉัยจาก Gateway, Plugin และ--localจะส่งไปยัง stderr เพื่อให้สคริปต์แยกวิเคราะห์ stdout ได้โดยตรง- หลังจากใช้การลองจับมือซ้ำชั่วคราวจนครบแล้ว การหมดเวลาของ Gateway หรือการเชื่อมต่อที่ปิดลงจะทำให้คำสั่งล้มเหลว CLI จะไม่เรียกใช้รอบการทำงานซ้ำแบบฝังตัวโดยไม่แจ้งให้ทราบ การสูญเสียการเชื่อมต่อมีความคลุมเครือ เนื่องจาก Gateway อาจยอมรับและยังคงดำเนินรอบการทำงานจนเสร็จ ดังนั้นคำแนะนำใน stderr จึงระบุให้ตรวจสอบ
openclaw gateway statusและทรานสคริปต์ของเซสชันก่อนลองอีกครั้งหรือเรียกใช้ซ้ำด้วย--localเพื่อหลีกเลี่ยงการดำเนินรอบการทำงานสองครั้ง SIGTERM/SIGINTจะขัดจังหวะคำขอที่รองรับโดย Gateway ซึ่งกำลังรออยู่ หาก Gateway ยอมรับการเรียกใช้แล้ว CLI จะส่งchat.abortสำหรับ ID การเรียกใช้นั้นก่อนออกด้วย การเรียกใช้--localจะได้รับสัญญาณเดียวกันแต่จะไม่ส่งchat.abortโพรเซสลูกของตัวเรียกใช้ที่ยุติจากSIGINTหรือSIGTERMแรกที่ส่งต่อมา จะออกด้วยสถานะ 130 หรือ 143 ตามลำดับ หากคีย์ขจัดการเรียกใช้ซ้ำภายในมีการเรียกใช้ที่กำลังทำงานอยู่แล้วสำหรับเซสชันนี้ การตอบกลับจะรายงานstatus: "in_flight"และ CLI ที่ไม่ใช่ JSON จะแสดงการวินิจฉัยทาง stderr แทนคำตอบว่าง สำหรับตัวครอบภายนอกแบบ cron/systemd ให้คงกลไกสำรองสำหรับบังคับยุติ เช่นtimeout -k 60 600 openclaw agent ...เพื่อให้ตัวควบคุมสามารถเก็บกวาดโพรเซสได้หากการปิดระบบไม่สามารถระบายงานจนหมด- เมื่อคำสั่งนี้ทริกเกอร์การสร้าง
models.jsonใหม่ ข้อมูลรับรองของผู้ให้บริการที่จัดการด้วย SecretRef จะถูกบันทึกเป็นเครื่องหมายที่ไม่ใช่ข้อมูลลับ (ตัวอย่างเช่น ชื่อตัวแปรสภาพแวดล้อม,secretref-env:ENV_VAR_NAMEหรือsecretref-managed) และจะไม่ถูกแปลงเป็นข้อความลับแบบธรรมดา การเขียนเครื่องหมายมาจากสแนปช็อตการกำหนดค่าต้นทางที่ใช้งานอยู่ ไม่ใช่จากค่าความลับของรันไทม์ที่แปลงแล้ว
สถานะการส่งใน JSON
เมื่อใช้ --json --deliver การตอบกลับ JSON ของ CLI จะมี deliveryStatus ที่ระดับบนสุด เพื่อให้สคริปต์แยกแยะการส่งที่สำเร็จ ถูกระงับ สำเร็จบางส่วน และล้มเหลวได้:
{ "payloads": [{ "text": "รายงานพร้อมแล้ว", "mediaUrl": null }], "meta": { "durationMs": 1200 }, "deliveryStatus": { "requested": true, "attempted": true, "status": "sent", "succeeded": true, "resultCount": 1 }}การตอบกลับ CLI ที่รองรับโดย Gateway จะคงรูปแบบผลลัพธ์ดิบของ Gateway ไว้ที่ result.deliveryStatus ด้วย
deliveryStatus.status เป็นหนึ่งในค่าต่อไปนี้:
| สถานะ | ความหมาย |
|---|---|
sent |
การส่งเสร็จสมบูรณ์ |
suppressed |
ตั้งใจไม่ส่งการส่งดังกล่าว (ตัวอย่างเช่น ฮุกสำหรับส่งข้อความยกเลิก หรือไม่มีผลลัพธ์ที่มองเห็นได้) เป็นสถานะสิ้นสุดและจะไม่ลองใหม่ |
partial_failed |
ส่งเพย์โหลดอย่างน้อยหนึ่งรายการแล้ว ก่อนที่เพย์โหลดในภายหลังจะล้มเหลว |
failed |
ไม่มีการส่งแบบคงทนที่เสร็จสมบูรณ์ หรือการตรวจสอบก่อนส่งล้มเหลว |
ฟิลด์ทั่วไป:
requested: เป็นtrueเสมอเมื่อมีออบเจ็กต์นี้attempted: เป็นtrueเมื่อเส้นทางการส่งแบบคงทนทำงานแล้ว และเป็นfalseสำหรับความล้มเหลวในการตรวจสอบก่อนส่งหรือกรณีไม่มีเพย์โหลดที่มองเห็นได้succeeded:true,falseหรือ"partial";"partial"ใช้คู่กับstatus: "partial_failed"reason: เหตุผลแบบ snake-case ตัวพิมพ์เล็กจากการส่งแบบคงทนหรือการตรวจสอบก่อนส่ง ค่าที่รู้จักประกอบด้วยcancelled_by_message_sending_hook,no_visible_payload,no_visible_result,channel_resolved_to_internal,unknown_channel,invalid_delivery_targetและno_delivery_target; การส่งแบบคงทนที่ล้มเหลวอาจรายงานขั้นตอนที่ล้มเหลวด้วย ให้ถือว่าค่าที่ไม่รู้จักเป็นข้อมูลทึบแสง เนื่องจากชุดค่าสามารถขยายได้resultCount: จำนวนผลลัพธ์การส่งของช่องทาง หากมีsentBeforeError: เป็นtrueเมื่อความล้มเหลวบางส่วนส่งเพย์โหลดได้อย่างน้อยหนึ่งรายการก่อนเกิดข้อผิดพลาดerror: เป็นtrueสำหรับการส่งที่ล้มเหลวหรือล้มเหลวบางส่วนerrorMessage: มีเฉพาะเมื่อบันทึกข้อความข้อผิดพลาดพื้นฐานของการส่งไว้ ความล้มเหลวในการตรวจสอบก่อนส่งจะมีerror/reasonแต่ไม่มีerrorMessagepayloadOutcomes: ผลลัพธ์รายเพย์โหลดที่ไม่บังคับ พร้อมด้วยindex,status,reason,resultCount,error,stage,sentBeforeErrorหรือข้อมูลเมตาของฮุกเมื่อมี
ที่เกี่ยวข้อง
Was this useful?