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

ตัวอย่าง

bash
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 ที่ระดับบนสุด เพื่อให้สคริปต์แยกแยะการส่งที่สำเร็จ ถูกระงับ สำเร็จบางส่วน และล้มเหลวได้:

json
{  "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 แต่ไม่มี errorMessage
  • payloadOutcomes: ผลลัพธ์รายเพย์โหลดที่ไม่บังคับ พร้อมด้วย index, status, reason, resultCount, error, stage, sentBeforeError หรือข้อมูลเมตาของฮุกเมื่อมี

ที่เกี่ยวข้อง

Was this useful?
On this page

On this page