CLI commands
عامل
openclaw agent
اجرای یک نوبت عامل از طریق Gateway (برای حالت تعبیهشده از --local استفاده کنید).
برای هدفگیری مستقیم یک عامل پیکربندیشده، از --agent <id> استفاده کنید.
حداقل یک انتخابگر نشست را وارد کنید:
--to <dest>--session-key <key>--session-id <id>--agent <id>
مرتبط:
- ابزار ارسال عامل: ارسال عامل
گزینهها
-m, --message <text>: بدنه پیام--message-file <path>: خواندن بدنه پیام از یک فایل UTF-8-t, --to <dest>: گیرندهای که برای استخراج کلید نشست استفاده میشود--session-key <key>: کلید نشست صریح برای استفاده در مسیریابی--session-id <id>: شناسه نشست صریح--agent <id>: شناسه عامل؛ اتصالهای مسیریابی را بازنویسی میکند--model <id>: بازنویسی مدل برای این اجرا (provider/modelیا شناسه مدل)--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 یا مقدار پیکربندی)--json: خروجی JSON
مثالها
openclaw agent --to +15555550123 --message "status update" --deliveropenclaw agent --agent ops --message "Summarize logs"openclaw agent --agent ops --message-file ./task.mdopenclaw agent --agent ops --model openai/gpt-5.4 --message "Summarize logs"openclaw agent --session-key agent:ops:incident-42 --message "Summarize status"openclaw agent --agent ops --session-key incident-42 --message "Summarize status"openclaw agent --session-id 1234 --message "Summarize inbox" --thinking mediumopenclaw agent --to +15555550123 --message "Trace logs" --verbose on --jsonopenclaw agent --agent ops --message "Generate report" --deliver --reply-channel slack --reply-to "#reports"openclaw agent --agent ops --message "Run locally" --localنکتهها
- دقیقاً یکی از
--messageیا--message-fileرا وارد کنید.--message-fileپس از حذف یک UTF-8 BOM اختیاری، محتوای چندخطی فایل را حفظ میکند و فایلهایی را که UTF-8 معتبر نیستند رد میکند. - حالت Gateway وقتی درخواست Gateway شکست بخورد به عامل تعبیهشده بازمیگردد. برای اجبار به اجرای تعبیهشده از ابتدا، از
--localاستفاده کنید. --localهمچنان ابتدا رجیستری Plugin را پیشبارگذاری میکند، بنابراین ارائهدهندهها، ابزارها و کانالهای فراهمشده توسط Plugin هنگام اجراهای تعبیهشده در دسترس میمانند.- اجراهای
--localو بازگشت تعبیهشده بهعنوان اجراهای تکمرحلهای در نظر گرفته میشوند. منابع loopback بستهبندیشده MCP و نشستهای گرم Claude stdio که برای آن فرایند محلی باز شدهاند پس از پاسخ بازنشسته میشوند، بنابراین فراخوانیهای اسکریپتی فرایندهای فرزند محلی را زنده نگه نمیدارند. - اجراهای متکی بر Gateway منابع loopback متعلق به Gateway در MCP را زیر فرایند Gateway در حال اجرا باقی میگذارند؛ کلاینتهای قدیمیتر ممکن است همچنان پرچم تاریخی پاکسازی را ارسال کنند، اما Gateway آن را بهعنوان یک عملیات بیاثر سازگاری میپذیرد.
--channel،--reply-channelو--reply-accountبر تحویل پاسخ اثر میگذارند، نه مسیریابی نشست.--session-keyیک کلید نشست صریح را انتخاب میکند. کلیدهای دارای پیشوند عامل باید ازagent:<agent-id>:<session-key>استفاده کنند، و وقتی هر دو ارائه شدهاند،--agentباید با شناسه عامل کلید مطابقت داشته باشد. کلیدهای خام غیر sentinel هنگام ارائه--agentبه آن محدود میشوند، یا در غیر این صورت به عامل پیشفرض پیکربندیشده محدود میشوند؛ برای مثال،--agent ops --session-key incident-42بهagent:ops:incident-42مسیریابی میشود. مقادیر لفظیglobalوunknownفقط وقتی هیچ--agentارائه نشده باشد بدون محدوده میمانند؛ در آن حالت، بازگشت تعبیهشده و مالکیت store از عامل پیشفرض پیکربندیشده استفاده میکنند.--jsonstdout را برای پاسخ JSON رزرو نگه میدارد. عیبیابیهای Gateway، Plugin و بازگشت تعبیهشده به stderr هدایت میشوند تا اسکریپتها بتوانند stdout را مستقیم تجزیه کنند.- JSON بازگشت تعبیهشده شامل
meta.transport: "embedded"وmeta.fallbackFrom: "gateway"است تا اسکریپتها بتوانند اجراهای بازگشتی را از اجراهای Gateway تشخیص دهند. - اگر Gateway اجرای عامل را بپذیرد اما CLI هنگام انتظار برای پاسخ نهایی دچار timeout شود، بازگشت تعبیهشده از یک شناسه نشست/اجرای صریح و تازه
gateway-fallback-*استفاده میکند وmeta.fallbackReason: "gateway_timeout"بهعلاوه فیلدهای نشست بازگشتی را گزارش میدهد. این کار از رقابت با قفل رونوشت متعلق به Gateway یا جایگزینی بیصدای نشست گفتوگوی مسیریابیشده اصلی جلوگیری میکند. - برای اجراهای متکی بر Gateway،
SIGTERMوSIGINTدرخواست CLI در حال انتظار را قطع میکنند. اگر Gateway قبلاً اجرا را پذیرفته باشد، CLI همچنین پیش از خروجchat.abortرا برای آن شناسه اجرای پذیرفتهشده ارسال میکند. اجراهای محلی--localو اجراهای بازگشت تعبیهشده همان سیگنال abort را دریافت میکنند، اماchat.abortارسال نمیکنند. اگر یک--run-idتکراری در حالی به Gateway برسد که اجرای عامل اصلی هنوز فعال است، پاسخ تکراریstatus: "in_flight"را گزارش میدهد و CLI غیر JSON بهجای یک پاسخ خالی، یک عیبیابی در stderr چاپ میکند. برای wrapperهای خارجی cron/systemd، یک پشتیبان hard-kill بیرونی مانندtimeout -k 60 600 openclaw agent ...نگه دارید تا اگر خاموشسازی نتواند تخلیه شود، supervisor همچنان بتواند فرایند را جمعآوری کند. - وقتی این فرمان بازتولید
models.jsonرا فعال میکند، اعتبارنامههای ارائهدهنده مدیریتشده با SecretRef بهصورت نشانگرهای غیرمحرمانه پایدار میشوند (برای مثال نامهای env var،secretref-env:ENV_VAR_NAME، یاsecretref-managed)، نه متن ساده محرمانه resolveشده. - نوشتن نشانگرها از نظر منبع authoritative است: OpenClaw نشانگرها را از snapshot پیکربندی منبع فعال پایدار میکند، نه از مقدارهای محرمانه resolveشده در runtime.
وضعیت تحویل JSON
وقتی از --json --deliver استفاده میشود، پاسخ JSON در CLI ممکن است شامل deliveryStatus در سطح بالا باشد تا اسکریپتها بتوانند ارسالهای تحویلشده، سرکوبشده، جزئی و ناموفق را تشخیص دهند:
{ "payloads": [{ "text": "Report ready", "mediaUrl": null }], "meta": { "durationMs": 1200 }, "deliveryStatus": { "requested": true, "attempted": true, "status": "sent", "succeeded": true, "resultCount": 1 }}deliveryStatus.status یکی از sent، suppressed، partial_failed یا failed است. suppressed یعنی تحویل عمداً ارسال نشده است، برای مثال یک hook ارسال پیام آن را لغو کرده یا هیچ نتیجه قابلمشاهدهای وجود نداشته است؛ همچنان یک نتیجه پایانی بدون تلاش مجدد است. partial_failed یعنی حداقل یک payload پیش از شکست payload بعدی ارسال شده است. failed یعنی هیچ ارسال پایداری کامل نشده یا preflight تحویل شکست خورده است.
پاسخهای CLI متکی بر Gateway همچنین شکل خام نتیجه Gateway را حفظ میکنند، که همان شیء در result.deliveryStatus در دسترس است.
فیلدهای رایج:
requested: وقتی شیء وجود داشته باشد همیشهtrueاست.attempted: پس از اجرای مسیر ارسال پایدارtrueاست؛ برای شکستهای preflight یا نبود payload قابلمشاهدهfalseاست.succeeded:true،false، یا"partial"؛"partial"باstatus: "partial_failed"همراه میشود.reason: یک دلیل snake-case با حروف کوچک از تحویل پایدار یا اعتبارسنجی preflight. دلایل شناختهشده شاملcancelled_by_message_sending_hook،no_visible_payload،no_visible_result،channel_resolved_to_internal،unknown_channel،invalid_delivery_targetوno_delivery_targetهستند؛ ارسالهای پایدار ناموفق ممکن است مرحله شکستخورده را نیز گزارش کنند. با مقادیر ناشناخته بهصورت opaque رفتار کنید، چون این مجموعه میتواند گسترش یابد.resultCount: تعداد نتایج ارسال کانال، وقتی در دسترس باشد.sentBeforeError: وقتی یک شکست جزئی پیش از خطا حداقل یک payload ارسال کرده باشدtrueاست.error: مقدار بولیtrueبرای ارسالهای ناموفق یا جزئیناموفق.errorMessage: فقط وقتی پیام خطای تحویل زیربنایی ثبت شده باشد گنجانده میشود. شکستهای preflight دارایerrorوreasonهستند اماerrorMessageندارند.payloadOutcomes: نتایج اختیاری برای هر payload باindex،status،reason،resultCount،error،stage،sentBeforeError، یا metadata مربوط به hook وقتی در دسترس باشد.