Gateway
پیکربندی — عاملها
کلیدهای پیکربندی در محدودهٔ عامل زیر agents.*، multiAgent.*، session.*،
messages.* و talk.*. برای کانالها، ابزارها، runtime مربوط به Gateway و سایر
کلیدهای سطح بالا، مرجع پیکربندی را ببینید.
پیشفرضهای عامل
agents.defaults.workspace
پیشفرض: ~/.openclaw/workspace.
{ agents: { defaults: { workspace: "~/.openclaw/workspace" } },}agents.defaults.repoRoot
ریشهٔ اختیاری مخزن که در خط Runtime پرامپت سیستم نمایش داده میشود. اگر تنظیم نشود، OpenClaw با حرکت رو به بالا از فضای کاری آن را بهصورت خودکار تشخیص میدهد.
{ agents: { defaults: { repoRoot: "~/Projects/openclaw" } },}agents.defaults.skills
فهرست مجاز پیشفرض و اختیاری Skills برای عاملهایی که
agents.list[].skills را تنظیم نمیکنند.
{ agents: { defaults: { skills: ["github", "weather"] }, list: [ { id: "writer" }, // inherits github, weather { id: "docs", skills: ["docs-search"] }, // replaces defaults { id: "locked-down", skills: [] }, // no skills ], },}- برای Skills نامحدود بهصورت پیشفرض،
agents.defaults.skillsرا حذف کنید. - برای به ارث بردن پیشفرضها،
agents.list[].skillsرا حذف کنید. - برای نداشتن Skills،
agents.list[].skills: []را تنظیم کنید. - فهرست غیرخالی
agents.list[].skillsمجموعهٔ نهایی برای آن عامل است؛ با پیشفرضها ادغام نمیشود.
agents.defaults.skipBootstrap
ایجاد خودکار فایلهای بوتاسترپ فضای کاری (AGENTS.md، SOUL.md، TOOLS.md، IDENTITY.md، USER.md، HEARTBEAT.md، BOOTSTRAP.md) را غیرفعال میکند.
{ agents: { defaults: { skipBootstrap: true } },}agents.defaults.skipOptionalBootstrapFiles
ایجاد فایلهای اختیاری انتخابشدهٔ فضای کاری را رد میکند، در حالی که همچنان فایلهای بوتاسترپ الزامی نوشته میشوند. مقدارهای معتبر: SOUL.md، USER.md، HEARTBEAT.md و IDENTITY.md.
{ agents: { defaults: { skipOptionalBootstrapFiles: ["SOUL.md", "USER.md"], }, },}agents.defaults.contextInjection
کنترل میکند فایلهای بوتاسترپ فضای کاری چه زمانی به پرامپت سیستم تزریق شوند. پیشفرض: "always".
"continuation-skip": نوبتهای ادامهٔ امن (پس از پاسخ تکمیلشدهٔ assistant) تزریق دوبارهٔ بوتاسترپ فضای کاری را رد میکنند و اندازهٔ پرامپت را کاهش میدهند. اجرای Heartbeat و تلاشهای دوبارهٔ پس از Compaction همچنان context را دوباره میسازند."never": تزریق بوتاسترپ فضای کاری و فایلهای context را در هر نوبت غیرفعال میکند. این را فقط برای عاملهایی استفاده کنید که چرخهٔ عمر پرامپت خود را کاملاً مالک هستند (موتورهای context سفارشی، runtimeهای بومی که context خود را میسازند، یا workflowهای تخصصی بدون بوتاسترپ). نوبتهای Heartbeat و بازیابی از Compaction نیز تزریق را رد میکنند.
{ agents: { defaults: { contextInjection: "continuation-skip" } },}agents.defaults.bootstrapMaxChars
حداکثر نویسه برای هر فایل بوتاسترپ فضای کاری پیش از کوتاهسازی. پیشفرض: 12000.
{ agents: { defaults: { bootstrapMaxChars: 12000 } },}agents.defaults.bootstrapTotalMaxChars
حداکثر مجموع نویسههای تزریقشده در همهٔ فایلهای بوتاسترپ فضای کاری. پیشفرض: 60000.
{ agents: { defaults: { bootstrapTotalMaxChars: 60000 } },}agents.defaults.bootstrapPromptTruncationWarning
اعلان قابل مشاهده برای عامل در پرامپت سیستم را هنگام کوتاه شدن context بوتاسترپ کنترل میکند.
پیشفرض: "once".
"off": هرگز متن اعلان کوتاهسازی را به پرامپت سیستم تزریق نکن."once": برای هر امضای کوتاهسازی یکتا، یک بار اعلان کوتاه تزریق کن (توصیهشده)."always": هر بار که کوتاهسازی وجود دارد، در هر اجرا یک اعلان کوتاه تزریق کن.
شمارشهای خام/تزریقشدهٔ دقیق و فیلدهای تنظیم پیکربندی در diagnostics مانند گزارشهای context/status و لاگها باقی میمانند؛ context معمول کاربر/runtime در WebChat فقط اعلان کوتاه بازیابی را دریافت میکند.
{ agents: { defaults: { bootstrapPromptTruncationWarning: "once" } }, // off | once | always}نقشهٔ مالکیت بودجهٔ context
OpenClaw چندین بودجهٔ حجیم برای پرامپت/context دارد و آنها عمداً بهجای عبور همگی از یک knob عمومی، بر اساس زیرسیستم جدا شدهاند.
agents.defaults.bootstrapMaxChars/agents.defaults.bootstrapTotalMaxChars: تزریق معمول بوتاسترپ فضای کاری.agents.defaults.startupContext.*: مقدمهٔ یکبارهٔ اجرای مدل هنگام reset/startup، شامل فایلهای روزانهٔ اخیرmemory/*.md. فرمانهای سادهٔ chat یعنی/newو/resetبدون فراخوانی مدل تأیید میشوند.skills.limits.*: فهرست فشردهٔ Skills که به پرامپت سیستم تزریق میشود.agents.defaults.contextLimits.*: excerptهای runtime محدود و بلوکهای تزریقشدهٔ متعلق به runtime.memory.qmd.limits.*: sizing مربوط به snippet جستوجوی حافظهٔ indexشده و تزریق.
فقط وقتی یک عامل به بودجهای متفاوت نیاز دارد، override متناظر در سطح عامل را استفاده کنید:
agents.list[].skillsLimits.maxSkillsPromptCharsagents.list[].contextLimits.*
agents.defaults.startupContext
مقدمهٔ startup نوبت اول را که در اجرای مدل هنگام reset/startup تزریق میشود کنترل میکند.
فرمانهای سادهٔ chat یعنی /new و /reset بدون فراخوانی مدل reset را تأیید میکنند،
بنابراین این مقدمه را load نمیکنند.
{ agents: { defaults: { startupContext: { enabled: true, applyOn: ["new", "reset"], dailyMemoryDays: 2, maxFileBytes: 16384, maxFileChars: 1200, maxTotalChars: 2800, }, }, },}agents.defaults.contextLimits
پیشفرضهای مشترک برای سطحهای context runtime محدود.
{ agents: { defaults: { contextLimits: { memoryGetMaxChars: 12000, memoryGetDefaultLines: 120, toolResultMaxChars: 16000, postCompactionMaxChars: 1800, }, }, },}memoryGetMaxChars: سقف پیشفرض excerpt درmemory_getپیش از افزودن metadata کوتاهسازی و اعلان ادامه.memoryGetDefaultLines: پنجرهٔ خط پیشفرضmemory_getوقتیlinesحذف شده باشد.toolResultMaxChars: سقف live نتیجهٔ ابزار که برای نتایج persisted و بازیابی overflow استفاده میشود.postCompactionMaxChars: سقف excerpt مربوط به AGENTS.md که هنگام تزریق refresh پس از Compaction استفاده میشود.
agents.list[].contextLimits
override در سطح عامل برای knobهای مشترک contextLimits. فیلدهای حذفشده از
agents.defaults.contextLimits به ارث برده میشوند.
{ agents: { defaults: { contextLimits: { memoryGetMaxChars: 12000, toolResultMaxChars: 16000, }, }, list: [ { id: "tiny-local", contextLimits: { memoryGetMaxChars: 6000, toolResultMaxChars: 8000, }, }, ], },}skills.limits.maxSkillsPromptChars
سقف سراسری برای فهرست فشردهٔ Skills که به پرامپت سیستم تزریق میشود. این
خواندن فایلهای SKILL.md را بهصورت درخواستی تحت تأثیر قرار نمیدهد.
{ skills: { limits: { maxSkillsPromptChars: 18000, }, },}agents.list[].skillsLimits.maxSkillsPromptChars
override در سطح عامل برای بودجهٔ پرامپت Skills.
{ agents: { list: [ { id: "tiny-local", skillsLimits: { maxSkillsPromptChars: 6000, }, }, ], },}agents.defaults.imageMaxDimensionPx
حداکثر اندازهٔ پیکسل برای بلندترین ضلع تصویر در بلوکهای تصویر transcript/tool پیش از فراخوانی provider.
پیشفرض: 1200.
مقادیر پایینتر معمولاً مصرف vision-token و اندازهٔ payload درخواست را برای اجراهای سنگین از نظر screenshot کاهش میدهند. مقادیر بالاتر جزئیات بصری بیشتری را حفظ میکنند.
{ agents: { defaults: { imageMaxDimensionPx: 1200 } },}agents.defaults.userTimezone
timezone برای context پرامپت سیستم (نه timestampهای پیام). به timezone میزبان fallback میکند.
{ agents: { defaults: { userTimezone: "America/Chicago" } },}agents.defaults.timeFormat
فرمت زمان در پرامپت سیستم. پیشفرض: auto (ترجیح OS).
{ agents: { defaults: { timeFormat: "auto" } }, // auto | 12 | 24}agents.defaults.model
{ agents: { defaults: { models: { "anthropic/claude-opus-4-6": { alias: "opus" }, "minimax/MiniMax-M2.7": { alias: "minimax" }, }, model: { primary: "anthropic/claude-opus-4-6", fallbacks: ["minimax/MiniMax-M2.7"], }, imageModel: { primary: "openrouter/qwen/qwen-2.5-vl-72b-instruct:free", fallbacks: ["openrouter/google/gemini-2.0-flash-vision:free"], }, imageGenerationModel: { primary: "openai/gpt-image-2", fallbacks: ["google/gemini-3.1-flash-image-preview"], }, videoGenerationModel: { primary: "qwen/wan2.6-t2v", fallbacks: ["qwen/wan2.6-i2v"], }, pdfModel: { primary: "anthropic/claude-opus-4-6", fallbacks: ["openai/gpt-5.4-mini"], }, params: { cacheRetention: "long" }, // global default provider params pdfMaxBytesMb: 10, pdfMaxPages: 20, thinkingDefault: "low", verboseDefault: "off", toolProgressDetail: "explain", reasoningDefault: "off", elevatedDefault: "on", timeoutSeconds: 600, mediaMaxMb: 5, contextTokens: 200000, maxConcurrent: 3, }, },}model: یا یک رشته ("provider/model") یا یک شیء ({ primary, fallbacks }) را میپذیرد.- شکل رشتهای فقط مدل اصلی را تنظیم میکند.
- شکل شیء، مدل اصلی را بههمراه مدلهای جایگزینِ مرتبشده برای failover تنظیم میکند.
imageModel: یا یک رشته ("provider/model") یا یک شیء ({ primary, fallbacks }) را میپذیرد.- توسط مسیر ابزار
imageبهعنوان پیکربندی مدل بینایی آن استفاده میشود. - همچنین وقتی مدل انتخابشده/پیشفرض نتواند ورودی تصویر را بپذیرد، برای مسیریابی جایگزین استفاده میشود.
- ارجاعهای صریح
provider/modelرا ترجیح دهید. شناسههای خام برای سازگاری پذیرفته میشوند؛ اگر یک شناسه خام بهطور یکتا با یک ورودی پیکربندیشده دارای قابلیت تصویر درmodels.providers.*.modelsتطبیق داشته باشد، OpenClaw آن را به همان ارائهدهنده منتسب میکند. تطبیقهای پیکربندیشده مبهم به یک پیشوند ارائهدهنده صریح نیاز دارند.
- توسط مسیر ابزار
imageGenerationModel: یا یک رشته ("provider/model") یا یک شیء ({ primary, fallbacks }) را میپذیرد.- توسط قابلیت مشترک تولید تصویر و هر سطح ابزار/Plugin آینده که تصویر تولید میکند استفاده میشود.
- مقدارهای رایج:
google/gemini-3.1-flash-image-previewبرای تولید تصویر بومی Gemini،fal/fal-ai/flux/devبرای fal،openai/gpt-image-2برای OpenAI Images، یاopenai/gpt-image-1.5برای خروجی PNG/WebP با پسزمینه شفاف از OpenAI. - اگر مستقیماً یک ارائهدهنده/مدل را انتخاب میکنید، احراز هویت ارائهدهنده متناظر را هم پیکربندی کنید (برای مثال
GEMINI_API_KEYیاGOOGLE_API_KEYبرایgoogle/*،OPENAI_API_KEYیا OpenAI Codex OAuth برایopenai/gpt-image-2/openai/gpt-image-1.5،FAL_KEYبرایfal/*). - اگر حذف شود،
image_generateهمچنان میتواند یک پیشفرض ارائهدهنده مبتنی بر احراز هویت را استنباط کند. ابتدا ارائهدهنده پیشفرض فعلی را امتحان میکند، سپس باقی ارائهدهندههای ثبتشده تولید تصویر را به ترتیب شناسه ارائهدهنده امتحان میکند.
musicGenerationModel: یا یک رشته ("provider/model") یا یک شیء ({ primary, fallbacks }) را میپذیرد.- توسط قابلیت مشترک تولید موسیقی و ابزار داخلی
music_generateاستفاده میشود. - مقدارهای رایج:
google/lyria-3-clip-preview،google/lyria-3-pro-preview، یاminimax/music-2.6. - اگر حذف شود،
music_generateهمچنان میتواند یک پیشفرض ارائهدهنده مبتنی بر احراز هویت را استنباط کند. ابتدا ارائهدهنده پیشفرض فعلی را امتحان میکند، سپس باقی ارائهدهندههای ثبتشده تولید موسیقی را به ترتیب شناسه ارائهدهنده امتحان میکند. - اگر مستقیماً یک ارائهدهنده/مدل را انتخاب میکنید، احراز هویت/کلید API ارائهدهنده متناظر را هم پیکربندی کنید.
- توسط قابلیت مشترک تولید موسیقی و ابزار داخلی
videoGenerationModel: یا یک رشته ("provider/model") یا یک شیء ({ primary, fallbacks }) را میپذیرد.- توسط قابلیت مشترک تولید ویدیو و ابزار داخلی
video_generateاستفاده میشود. - مقدارهای رایج:
qwen/wan2.6-t2v،qwen/wan2.6-i2v،qwen/wan2.6-r2v،qwen/wan2.6-r2v-flash، یاqwen/wan2.7-r2v. - اگر حذف شود،
video_generateهمچنان میتواند یک پیشفرض ارائهدهنده مبتنی بر احراز هویت را استنباط کند. ابتدا ارائهدهنده پیشفرض فعلی را امتحان میکند، سپس باقی ارائهدهندههای ثبتشده تولید ویدیو را به ترتیب شناسه ارائهدهنده امتحان میکند. - اگر مستقیماً یک ارائهدهنده/مدل را انتخاب میکنید، احراز هویت/کلید API ارائهدهنده متناظر را هم پیکربندی کنید.
- ارائهدهنده همراه تولید ویدیوی Qwen تا ۱ ویدیوی خروجی، ۱ تصویر ورودی، ۴ ویدیوی ورودی، مدت ۱۰ ثانیه، و گزینههای سطح ارائهدهنده
size،aspectRatio،resolution،audio، وwatermarkرا پشتیبانی میکند.
- توسط قابلیت مشترک تولید ویدیو و ابزار داخلی
pdfModel: یا یک رشته ("provider/model") یا یک شیء ({ primary, fallbacks }) را میپذیرد.- توسط ابزار
pdfبرای مسیریابی مدل استفاده میشود. - اگر حذف شود، ابزار PDF ابتدا به
imageModelو سپس به مدل حلشده نشست/پیشفرض برمیگردد.
- توسط ابزار
pdfMaxBytesMb: محدودیت اندازه PDF پیشفرض برای ابزارpdfوقتیmaxBytesMbدر زمان فراخوانی ارسال نشده باشد.pdfMaxPages: حداکثر صفحات پیشفرض که در حالت جایگزین استخراج در ابزارpdfدر نظر گرفته میشوند.verboseDefault: سطح verbose پیشفرض برای agentها. مقدارها:"off"،"on"،"full". پیشفرض:"off".toolProgressDetail: حالت جزئیات برای خلاصههای ابزار/verboseو خطوط ابزار پیشنویس پیشرفت. مقدارها:"explain"(پیشفرض، برچسبهای انسانی فشرده) یا"raw"(افزودن فرمان/جزئیات خام وقتی در دسترس باشد). مقدارagents.list[].toolProgressDetailبرای هر agent این پیشفرض را بازنویسی میکند.reasoningDefault: نمایانی reasoning پیشفرض برای agentها. مقدارها:"off"،"on"،"stream". مقدارagents.list[].reasoningDefaultبرای هر agent این پیشفرض را بازنویسی میکند. پیشفرضهای reasoning پیکربندیشده فقط برای مالکان، فرستندههای مجاز، یا زمینههای Gateway مدیر-اپراتور اعمال میشوند، آن هم وقتی هیچ بازنویسی reasoning در سطح پیام یا نشست تنظیم نشده باشد.elevatedDefault: سطح خروجی elevated پیشفرض برای agentها. مقدارها:"off"،"on"،"ask"،"full". پیشفرض:"on".model.primary: قالبprovider/model(برای مثالopenai/gpt-5.5برای دسترسی با کلید API یا Codex OAuth از OpenAI). اگر ارائهدهنده را حذف کنید، OpenClaw ابتدا یک alias را امتحان میکند، سپس تطبیق یکتای ارائهدهنده پیکربندیشده برای همان شناسه مدل دقیق را، و فقط بعد از آن به ارائهدهنده پیشفرض پیکربندیشده برمیگردد (رفتار سازگاری منسوخ، بنابراینprovider/modelصریح را ترجیح دهید). اگر آن ارائهدهنده دیگر مدل پیشفرض پیکربندیشده را ارائه نکند، OpenClaw بهجای نمایش یک پیشفرض قدیمیِ ارائهدهنده حذفشده، به نخستین ارائهدهنده/مدل پیکربندیشده برمیگردد.models: کاتالوگ مدل پیکربندیشده و allowlist برای/model. هر ورودی میتواند شاملalias(میانبر) وparams(ویژه ارائهدهنده، برای مثالtemperature،maxTokens،cacheRetention،context1m،responsesServerCompaction،responsesCompactThreshold،chat_template_kwargs،extra_body/extraBody) باشد.- از ورودیهای
provider/*مانند"openai-codex/*": {}یا"vllm/*": {}استفاده کنید تا همه مدلهای کشفشده برای ارائهدهندههای انتخابشده بدون فهرستکردن دستی هر شناسه مدل نمایش داده شوند. - ویرایشهای ایمن: برای افزودن ورودیها از
openclaw config set agents.defaults.models '<json>' --strict-json --mergeاستفاده کنید.config setجایگزینیهایی را که باعث حذف ورودیهای allowlist موجود شوند رد میکند، مگر اینکه--replaceرا ارسال کنید. - جریانهای configure/onboarding محدود به ارائهدهنده، مدلهای ارائهدهنده انتخابشده را در این map ادغام میکنند و ارائهدهندههای نامرتبطی را که از قبل پیکربندی شدهاند حفظ میکنند.
- برای مدلهای مستقیم OpenAI Responses، Compaction سمت سرور بهطور خودکار فعال میشود. برای توقف تزریق
context_managementازparams.responsesServerCompaction: falseاستفاده کنید، یا برای بازنویسی آستانه ازparams.responsesCompactThresholdاستفاده کنید. به Compaction سمت سرور OpenAI مراجعه کنید.
- از ورودیهای
params: پارامترهای سراسری پیشفرض ارائهدهنده که روی همه مدلها اعمال میشوند. درagents.defaults.paramsتنظیم میشود (برای مثال{ cacheRetention: "long" }).- تقدم ادغام
params(پیکربندی):agents.defaults.params(پایه سراسری) توسطagents.defaults.models["provider/model"].params(برای هر مدل) بازنویسی میشود، سپسagents.list[].params(شناسه agent مطابق) بر اساس کلید بازنویسی میکند. برای جزئیات به کشکردن پرامپت مراجعه کنید. params.extra_body/params.extraBody: JSON پیشرفته pass-through که در بدنههای درخواستapi: "openai-completions"برای پروکسیهای سازگار با OpenAI ادغام میشود. اگر با کلیدهای درخواست تولیدشده تداخل داشته باشد، بدنه اضافی برنده است؛ مسیرهای completions غیربومی همچنان بعداًstoreمخصوص OpenAI را حذف میکنند.params.chat_template_kwargs: آرگومانهای chat-template سازگار با vLLM/OpenAI که در بدنههای درخواست سطح بالایapi: "openai-completions"ادغام میشوند. برایvllm/nemotron-3-*با thinking خاموش، Plugin همراه vLLM بهطور خودکارenable_thinking: falseوforce_nonempty_content: trueرا ارسال میکند؛chat_template_kwargsصریح، پیشفرضهای تولیدشده را بازنویسی میکند، وextra_body.chat_template_kwargsهمچنان تقدم نهایی دارد. برای کنترلهای thinking در vLLM Qwen، مقدارparams.qwenThinkingFormatرا روی"chat-template"یا"top-level"در همان ورودی مدل تنظیم کنید.compat.thinkingFormat: سبک payload برای thinking سازگار با OpenAI. برایenable_thinkingسطح بالای سبک Qwen از"qwen"استفاده کنید، یا برایchat_template_kwargs.enable_thinkingروی backendهای خانواده Qwen که kwargs سطح درخواست برای chat-template را پشتیبانی میکنند، مانند vLLM، از"qwen-chat-template"استفاده کنید. OpenClaw، thinking غیرفعال را بهfalseو thinking فعال را بهtrueنگاشت میکند.compat.supportedReasoningEfforts: فهرست reasoning effort سازگار با OpenAI برای هر مدل. برای endpointهای سفارشی که واقعاً آن را میپذیرند،"xhigh"را اضافه کنید؛ سپس OpenClaw دستور/think xhighرا در منوهای فرمان، ردیفهای نشست Gateway، اعتبارسنجی patch نشست، اعتبارسنجی agent CLI، و اعتبارسنجیllm-taskبرای آن ارائهدهنده/مدل پیکربندیشده نمایش میدهد. وقتی backend برای یک سطح canonical مقدار ویژه ارائهدهنده میخواهد، ازcompat.reasoningEffortMapاستفاده کنید.params.preserveThinking: گزینه opt-in فقط برای Z.AI جهت حفظ thinking. وقتی فعال باشد و thinking روشن باشد، OpenClaw مقدارthinking.clear_thinking: falseرا ارسال میکند وreasoning_contentقبلی را بازپخش میکند؛ به thinking و thinking حفظشده در Z.AI مراجعه کنید.localService: مدیر فرایند اختیاری در سطح ارائهدهنده برای سرورهای مدل محلی/خودمیزبان. وقتی مدل انتخابشده متعلق به آن ارائهدهنده باشد، OpenClaw نشانیhealthUrl(یاbaseUrl + "/models") را بررسی میکند، اگر endpoint پایین باشدcommandرا باargsشروع میکند، تاreadyTimeoutMsمنتظر میماند، سپس درخواست مدل را ارسال میکند.commandباید یک مسیر مطلق باشد.idleStopMs: 0فرایند را تا خروج OpenClaw زنده نگه میدارد؛ مقدار مثبت، فرایندی را که OpenClaw راهاندازی کرده پس از همان تعداد میلیثانیه بیکاری متوقف میکند. به سرویسهای مدل محلی مراجعه کنید.- سیاست زمان اجرا روی ارائهدهندهها یا مدلها قرار میگیرد، نه روی
agents.defaults. برای قواعد گسترده در سطح ارائهدهنده ازmodels.providers.<provider>.agentRuntimeاستفاده کنید یا برای قواعد مخصوص مدل ازagents.defaults.models["provider/model"].agentRuntime/agents.list[].models["provider/model"].agentRuntimeاستفاده کنید. مدلهای agent متعلق به OpenAI روی ارائهدهنده رسمی OpenAI بهطور پیشفرض Codex را انتخاب میکنند. - نویسندگان پیکربندی که این فیلدها را تغییر میدهند (برای مثال
/models set،/models set-image، و فرمانهای افزودن/حذف جایگزین) شکل شیء canonical را ذخیره میکنند و در صورت امکان فهرستهای جایگزین موجود را حفظ میکنند. maxConcurrent: حداکثر اجراهای موازی agent در سراسر نشستها (هر نشست همچنان serialized است). پیشفرض: ۴.
سیاست زمان اجرا
{ models: { providers: { openai: { agentRuntime: { id: "codex" }, }, }, }, agents: { defaults: { model: "openai/gpt-5.5", models: { "anthropic/claude-opus-4-7": { agentRuntime: { id: "claude-cli" }, }, }, }, },}id:"auto"،"pi"، شناسه harness یک Plugin ثبتشده، یا یک alias پشتیبانیشده برای backend CLI. Plugin همراه Codex مقدارcodexرا ثبت میکند؛ Plugin همراه Anthropic، backend CLI به نامclaude-cliرا فراهم میکند.id: "auto"به harnessهای Plugin ثبتشده اجازه میدهد turnهای پشتیبانیشده را claim کنند و وقتی هیچ harness مطابقی نباشد از PI استفاده میکند. یک runtime صریح Plugin مانندid: "codex"به همان harness نیاز دارد و اگر در دسترس نباشد یا شکست بخورد، بهصورت بسته fail میکند.- کلیدهای runtime در سطح کل agent میراثی هستند.
agents.defaults.agentRuntime،agents.list[].agentRuntime، pinهای runtime نشست، وOPENCLAW_AGENT_RUNTIMEتوسط انتخاب runtime نادیده گرفته میشوند. برای حذف مقدارهای قدیمیopenclaw doctor --fixرا اجرا کنید. - مدلهای agent متعلق به OpenAI بهطور پیشفرض از harness مربوط به Codex استفاده میکنند؛ وقتی میخواهید این موضوع را صریح کنید،
agentRuntime.id: "codex"در سطح ارائهدهنده/مدل همچنان معتبر است. - برای استقرارهای Claude CLI، مقدار
model: "anthropic/claude-opus-4-7"بههمراهagentRuntime.id: "claude-cli"محدود به مدل را ترجیح دهید. ارجاعهای مدل میراثیclaude-cli/claude-opus-4-7همچنان برای سازگاری کار میکنند، اما پیکربندی جدید باید انتخاب ارائهدهنده/مدل را canonical نگه دارد و backend اجرا را در سیاست runtime ارائهدهنده/مدل قرار دهد. - این فقط اجرای turnهای agent متنی را کنترل میکند. تولید رسانه، بینایی، PDF، موسیقی، ویدیو، و TTS همچنان از تنظیمات ارائهدهنده/مدل خود استفاده میکنند.
میانبرهای alias داخلی (فقط وقتی اعمال میشوند که مدل در agents.defaults.models باشد):
| نام مستعار | مدل |
|---|---|
opus |
anthropic/claude-opus-4-6 |
sonnet |
anthropic/claude-sonnet-4-6 |
gpt |
openai/gpt-5.5 |
gpt-mini |
openai/gpt-5.4-mini |
gpt-nano |
openai/gpt-5.4-nano |
gemini |
google/gemini-3.1-pro-preview |
gemini-flash |
google/gemini-3-flash-preview |
gemini-flash-lite |
google/gemini-3.1-flash-lite-preview |
نامهای مستعار پیکربندیشدهٔ شما همیشه بر پیشفرضها اولویت دارند.
مدلهای Z.AI GLM-4.x بهطور خودکار حالت تفکر را فعال میکنند، مگر اینکه --thinking off را تنظیم کنید یا خودتان agents.defaults.models["zai/<model>"].params.thinking را تعریف کنید.
مدلهای Z.AI بهطور پیشفرض tool_stream را برای جریاندهی فراخوانی ابزار فعال میکنند. برای غیرفعال کردن آن، agents.defaults.models["zai/<model>"].params.tool_stream را روی false تنظیم کنید.
مدلهای Anthropic Claude 4.6 وقتی سطح تفکر صریحی تنظیم نشده باشد، بهطور پیشفرض از تفکر adaptive استفاده میکنند.
agents.defaults.cliBackends
پشتوانههای CLI اختیاری برای اجراهای جایگزینِ فقطمتنی (بدون فراخوانی ابزار). زمانی مفید است که ارائهدهندگان API از کار بیفتند.
{ agents: { defaults: { cliBackends: { "codex-cli": { command: "/opt/homebrew/bin/codex", }, "my-cli": { command: "my-cli", args: ["--json"], output: "json", modelArg: "--model", sessionArg: "--session", sessionMode: "existing", systemPromptArg: "--system", // Or use systemPromptFileArg when the CLI accepts a prompt file flag. systemPromptWhen: "first", imageArg: "--image", imageMode: "repeat", }, }, }, },}- پشتوانههای CLI متنمحور هستند؛ ابزارها همیشه غیرفعالاند.
- وقتی
sessionArgتنظیم شده باشد، نشستها پشتیبانی میشوند. - وقتی
imageArgمسیر فایلها را بپذیرد، عبوردهی تصویر پشتیبانی میشود. reseedFromRawTranscriptWhenUncompacted: trueبه یک پشتوانه اجازه میدهد پیش از آنکه نخستین خلاصهٔ Compaction وجود داشته باشد، نشستهای نامعتبرشدهٔ امن را از دنبالهٔ محدودِ رونوشت خام OpenClaw بازیابی کند. تغییرات نمایهٔ احراز هویت یا دورهٔ اعتبارنامه همچنان هرگز بازبذرگذاری خام انجام نمیدهند.
agents.defaults.systemPromptOverride
کل پرامپت سیستمیِ ساختهشده توسط OpenClaw را با یک رشتهٔ ثابت جایگزین میکند. در سطح پیشفرض (agents.defaults.systemPromptOverride) یا برای هر عامل (agents.list[].systemPromptOverride) تنظیم کنید. مقدارهای هر عامل اولویت دارند؛ مقدار خالی یا فقط شامل فاصله نادیده گرفته میشود. برای آزمایشهای کنترلشدهٔ پرامپت مفید است.
{ agents: { defaults: { systemPromptOverride: "You are a helpful assistant.", }, },}agents.defaults.promptOverlays
پوششهای پرامپت مستقل از ارائهدهنده که بر اساس خانوادهٔ مدل اعمال میشوند. شناسههای مدل خانوادهٔ GPT-5 قرارداد رفتار مشترک را در میان ارائهدهندگان دریافت میکنند؛ personality فقط لایهٔ سبک تعامل دوستانه را کنترل میکند.
{ agents: { defaults: { promptOverlays: { gpt5: { personality: "friendly", // friendly | on | off }, }, }, },}"friendly"(پیشفرض) و"on"لایهٔ سبک تعامل دوستانه را فعال میکنند."off"فقط لایهٔ دوستانه را غیرفعال میکند؛ قرارداد رفتار GPT-5 برچسبخورده همچنان فعال میماند.plugins.entries.openai.config.personalityقدیمی همچنان وقتی این تنظیم مشترک تنظیم نشده باشد خوانده میشود.
agents.defaults.heartbeat
اجراهای دورهای Heartbeat.
{ agents: { defaults: { heartbeat: { every: "30m", // 0m disables model: "openai/gpt-5.4-mini", includeReasoning: false, includeSystemPromptSection: true, // default: true; false omits the Heartbeat section from the system prompt lightContext: false, // default: false; true keeps only HEARTBEAT.md from workspace bootstrap files isolatedSession: false, // default: false; true runs each heartbeat in a fresh session (no conversation history) skipWhenBusy: false, // default: false; true also waits for this agent's subagent/nested lanes session: "main", to: "+15555550123", directPolicy: "allow", // allow (default) | block target: "none", // default: none | options: last | whatsapp | telegram | discord | ... prompt: "Read HEARTBEAT.md if it exists...", ackMaxChars: 300, suppressToolErrorWarnings: false, timeoutSeconds: 45, }, }, },}every: رشتهٔ مدتزمان (ms/s/m/h). پیشفرض:30m(احراز هویت با کلید API) یا1h(احراز هویت OAuth). برای غیرفعال کردن، روی0mتنظیم کنید.includeSystemPromptSection: وقتی false باشد، بخش Heartbeat را از پرامپت سیستمی حذف میکند و تزریقHEARTBEAT.mdبه زمینهٔ بوتاسترپ را نادیده میگیرد. پیشفرض:true.suppressToolErrorWarnings: وقتی true باشد، payloadهای هشدار خطای ابزار را هنگام اجراهای Heartbeat سرکوب میکند.timeoutSeconds: بیشترین زمان مجاز بر حسب ثانیه برای یک نوبت عامل Heartbeat پیش از لغو شدن آن. برای استفاده ازagents.defaults.timeoutSecondsتنظیمنشده رها کنید.directPolicy: سیاست تحویل مستقیم/DM.allow(پیشفرض) تحویل به مقصد مستقیم را مجاز میکند.blockتحویل به مقصد مستقیم را سرکوب میکند وreason=dm-blockedرا منتشر میکند.lightContext: وقتی true باشد، اجراهای Heartbeat از زمینهٔ بوتاسترپ سبک استفاده میکنند و از فایلهای بوتاسترپ فضای کاری فقطHEARTBEAT.mdرا نگه میدارند.isolatedSession: وقتی true باشد، هر Heartbeat در یک نشست تازه و بدون تاریخچهٔ گفتوگوی قبلی اجرا میشود. همان الگوی جداسازی Cron باsessionTarget: "isolated". هزینهٔ توکن هر Heartbeat را از حدود 100K به حدود 2-5K توکن کاهش میدهد.skipWhenBusy: وقتی true باشد، اجراهای Heartbeat در مسیرهای مشغول اضافی آن عامل به تعویق میافتند: کار subagent کلیدخورده با نشست خودش یا کار فرمان تودرتو. مسیرهای Cron همیشه Heartbeatها را به تعویق میاندازند، حتی بدون این پرچم.- برای هر عامل:
agents.list[].heartbeatرا تنظیم کنید. وقتی هر عاملیheartbeatرا تعریف کند، فقط همان عاملها Heartbeat اجرا میکنند. - Heartbeatها نوبتهای کامل عامل را اجرا میکنند — بازههای کوتاهتر توکن بیشتری مصرف میکنند.
agents.defaults.compaction
{ agents: { defaults: { compaction: { mode: "safeguard", // default | safeguard provider: "my-provider", // id of a registered compaction provider plugin (optional) timeoutSeconds: 900, reserveTokensFloor: 24000, keepRecentTokens: 50000, identifierPolicy: "strict", // strict | off | custom identifierInstructions: "Preserve deployment IDs, ticket IDs, and host:port pairs exactly.", // used when identifierPolicy=custom qualityGuard: { enabled: true, maxRetries: 1 }, midTurnPrecheck: { enabled: false }, // optional Pi tool-loop pressure check postCompactionSections: ["Session Startup", "Red Lines"], // [] disables reinjection model: "openrouter/anthropic/claude-sonnet-4-6", // optional compaction-only model override truncateAfterCompaction: true, // rotate to a smaller successor JSONL after compaction maxActiveTranscriptBytes: "20mb", // optional preflight local compaction trigger notifyUser: true, // send brief notices when compaction starts and completes (default: false) memoryFlush: { enabled: true, model: "ollama/qwen3:8b", // optional memory-flush-only model override softThresholdTokens: 6000, systemPrompt: "Session nearing compaction. Store durable memories now.", prompt: "Write any lasting notes to memory/YYYY-MM-DD.md; reply with the exact silent token NO_REPLY if nothing to store.", }, }, }, },}mode:defaultیاsafeguard(خلاصهسازی قطعهای برای تاریخچههای طولانی). Compaction را ببینید.provider: شناسهٔ یک Plugin ارائهدهندهٔ Compaction ثبتشده. وقتی تنظیم شود، بهجای خلاصهسازی LLM داخلی،summarize()آن ارائهدهنده فراخوانی میشود. در صورت شکست، به حالت داخلی برمیگردد. تنظیم ارائهدهنده،mode: "safeguard"را اجباری میکند. Compaction را ببینید.timeoutSeconds: بیشترین ثانیههای مجاز برای یک عملیات Compaction پیش از آنکه OpenClaw آن را لغو کند. پیشفرض:900.keepRecentTokens: بودجهٔ نقطهٔ برش Pi برای نگهداشتن دنبالهٔ اخیر رونوشت بهصورت کلمهبهکلمه./compactدستی وقتی صریحاً تنظیم شده باشد از این مقدار پیروی میکند؛ در غیر این صورت Compaction دستی یک نقطهٔ بازرسی سخت است.identifierPolicy:strict(پیشفرض)،off، یاcustom.strictهنگام خلاصهسازی Compaction، راهنمای داخلی برای حفظ شناسههای مات را در ابتدا اضافه میکند.identifierInstructions: متن سفارشی اختیاری برای حفظ شناسهها که وقتیidentifierPolicy=customباشد استفاده میشود.qualityGuard: بررسیهای تلاش دوباره هنگام خروجی بدشکل برای خلاصههای safeguard. در حالت safeguard بهطور پیشفرض فعال است؛ برای رد کردن ممیزی،enabled: falseرا تنظیم کنید.midTurnPrecheck: بررسی اختیاری فشار حلقهٔ ابزار Pi. وقتیenabled: trueباشد، OpenClaw پس از افزوده شدن نتایج ابزار و پیش از فراخوانی بعدی مدل، فشار زمینه را بررسی میکند. اگر زمینه دیگر جا نشود، تلاش جاری را پیش از ارسال پرامپت لغو میکند و از مسیر بازیابی precheck موجود برای کوتاهسازی نتایج ابزار یا Compaction و تلاش دوباره استفاده میکند. با هر دو حالت Compaction یعنیdefaultوsafeguardکار میکند. پیشفرض: غیرفعال.postCompactionSections: نامهای اختیاری بخش AGENTS.md H2/H3 برای تزریق دوباره پس از Compaction. پیشفرض["Session Startup", "Red Lines"]است؛ برای غیرفعال کردن تزریق دوباره،[]را تنظیم کنید. وقتی تنظیم نشده باشد یا صریحاً روی همان جفت پیشفرض تنظیم شود، عنوانهای قدیمیترEvery Session/Safetyنیز بهعنوان جایگزین سازگاری پذیرفته میشوند.model: بازنویسی اختیاریprovider/model-idفقط برای خلاصهسازی Compaction. زمانی از این استفاده کنید که نشست اصلی باید یک مدل را نگه دارد اما خلاصههای Compaction باید روی مدل دیگری اجرا شوند؛ وقتی تنظیم نشده باشد، Compaction از مدل اصلی نشست استفاده میکند.maxActiveTranscriptBytes: آستانهٔ بایتی اختیاری (numberیا رشتههایی مثل"20mb") که وقتی JSONL فعال از آستانه بزرگتر شود، پیش از اجرا Compaction محلی عادی را فعال میکند. بهtruncateAfterCompactionنیاز دارد تا Compaction موفق بتواند به یک رونوشت جانشین کوچکتر بچرخد. وقتی تنظیم نشده باشد یا0باشد غیرفعال است.notifyUser: وقتیtrueباشد، هنگام شروع و تکمیل Compaction اعلانهای کوتاهی به کاربر میفرستد (برای مثال، «در حال فشردهسازی زمینه...» و «Compaction کامل شد»). برای بیصدا نگهداشتن Compaction، بهطور پیشفرض غیرفعال است.memoryFlush: نوبت عاملمحور بیصدا پیش از Compaction خودکار برای ذخیرهٔ حافظههای پایدار. وقتی این نوبت نگهداری باید روی یک مدل محلی بماند،modelرا روی یک ارائهدهنده/مدل دقیق مانندollama/qwen3:8bتنظیم کنید؛ این بازنویسی زنجیرهٔ fallback نشست فعال را به ارث نمیبرد. وقتی فضای کاری فقطخواندنی باشد رد میشود.
agents.defaults.runRetries
مرزهای تکرار تلاش دوبارهٔ حلقهٔ اجرای بیرونی برای اجراکنندهٔ Pi جاسازیشده، برای جلوگیری از حلقههای اجرای بینهایت هنگام بازیابی از شکست. توجه کنید که این تنظیم در حال حاضر فقط برای runtime عامل جاسازیشده اعمال میشود، نه runtimeهای ACP یا CLI.
{ agents: { defaults: { runRetries: { base: 24, perProfile: 8, min: 32, max: 160, }, }, list: [ { id: "main", runRetries: { max: 50 }, // optional per-agent overrides }, ], },}base: تعداد پایهٔ تکرارهای تلاش دوبارهٔ اجرا برای حلقهٔ اجرای بیرونی. پیشفرض:24.perProfile: تکرارهای اضافی تلاش دوبارهٔ اجرا که بهازای هر نامزد نمایهٔ fallback اعطا میشود. پیشفرض:8.min: حد مطلق کمینه برای تکرارهای تلاش دوبارهٔ اجرا. پیشفرض:32.max: حد مطلق بیشینه برای تکرارهای تلاش دوبارهٔ اجرا برای جلوگیری از اجرای مهارنشده. پیشفرض:160.
agents.defaults.contextPruning
نتایج ابزار قدیمی را پیش از ارسال به LLM از زمینهٔ درونحافظهای هرس میکند. تاریخچهٔ نشست روی دیسک را تغییر نمیدهد.
{ agents: { defaults: { contextPruning: { mode: "cache-ttl", // off | cache-ttl ttl: "1h", // duration (ms/s/m/h), default unit: minutes keepLastAssistants: 3, softTrimRatio: 0.3, hardClearRatio: 0.5, minPrunableToolChars: 50000, softTrim: { maxChars: 4000, headChars: 1500, tailChars: 1500 }, hardClear: { enabled: true, placeholder: "[Old tool result content cleared]" }, tools: { deny: ["browser", "canvas"] }, }, }, },}رفتار حالت cache-ttl
mode: "cache-ttl"گذرهای هرس را فعال میکند.ttlکنترل میکند هرس هر چند وقت یکبار بتواند دوباره اجرا شود (پس از آخرین لمس کش).- هرس ابتدا نتایج بیشازحد بزرگ ابزار را نرمبرش میدهد، سپس در صورت نیاز نتایج قدیمیتر ابزار را پاکسازی سخت میکند.
نرمبرش ابتدا + انتها را نگه میدارد و ... را در میانه درج میکند.
پاکسازی سخت کل نتیجهٔ ابزار را با جاینگهدار جایگزین میکند.
نکات:
- بلوکهای تصویر هرگز برش/پاکسازی نمیشوند.
- نسبتها بر پایهٔ نویسه هستند (تقریبی)، نه شمارش دقیق توکنها.
- اگر کمتر از
keepLastAssistantsپیام دستیار وجود داشته باشد، هرس رد میشود.
برای جزئیات رفتار، هرس نشست را ببینید.
پخش جریانی بلوکی
{ agents: { defaults: { blockStreamingDefault: "off", // on | off blockStreamingBreak: "text_end", // text_end | message_end blockStreamingChunk: { minChars: 800, maxChars: 1200 }, blockStreamingCoalesce: { idleMs: 1000 }, humanDelay: { mode: "natural" }, // off | natural | custom (use minMs/maxMs) }, },}- کانالهای غیر Telegram برای فعالکردن پاسخهای بلوکی به
*.blockStreaming: trueصریح نیاز دارند. - بازنویسیهای کانال:
channels.<channel>.blockStreamingCoalesce(و گونههای هر حساب). Signal/Slack/Discord/Google Chat بهطور پیشفرضminChars: 1500دارند. humanDelay: مکث تصادفی بین پاسخهای بلوکی.natural= 800–2500ms. بازنویسی برای هر عامل:agents.list[].humanDelay.
برای جزئیات رفتار + قطعهبندی، پخش جریانی را ببینید.
نشانگرهای تایپ
{ agents: { defaults: { typingMode: "instant", // never | instant | thinking | message typingIntervalSeconds: 6, }, },}- پیشفرضها:
instantبرای گفتوگوهای مستقیم/اشارهها،messageبرای گفتوگوهای گروهی بدون اشاره. - بازنویسیهای هر نشست:
session.typingMode،session.typingIntervalSeconds.
نشانگرهای تایپ را ببینید.
agents.defaults.sandbox
سندباکس اختیاری برای عامل تعبیهشده. برای راهنمای کامل، سندباکسسازی را ببینید.
{ agents: { defaults: { sandbox: { mode: "non-main", // off | non-main | all backend: "docker", // docker | ssh | openshell scope: "agent", // session | agent | shared workspaceAccess: "none", // none | ro | rw workspaceRoot: "~/.openclaw/sandboxes", docker: { image: "openclaw-sandbox:bookworm-slim", containerPrefix: "openclaw-sbx-", workdir: "/workspace", readOnlyRoot: true, tmpfs: ["/tmp", "/var/tmp", "/run"], network: "none", user: "1000:1000", capDrop: ["ALL"], env: { LANG: "C.UTF-8" }, setupCommand: "apt-get update && apt-get install -y git curl jq", pidsLimit: 256, memory: "1g", memorySwap: "2g", cpus: 1, ulimits: { nofile: { soft: 1024, hard: 2048 }, nproc: 256, }, seccompProfile: "/path/to/seccomp.json", apparmorProfile: "openclaw-sandbox", dns: ["1.1.1.1", "8.8.8.8"], extraHosts: ["internal.service:10.0.0.5"], binds: ["/home/user/source:/source:rw"], }, ssh: { target: "user@gateway-host:22", command: "ssh", workspaceRoot: "/tmp/openclaw-sandboxes", strictHostKeyChecking: true, updateHostKeys: true, identityFile: "~/.ssh/id_ed25519", certificateFile: "~/.ssh/id_ed25519-cert.pub", knownHostsFile: "~/.ssh/known_hosts", // SecretRefs / inline contents also supported: // identityData: { source: "env", provider: "default", id: "SSH_IDENTITY" }, // certificateData: { source: "env", provider: "default", id: "SSH_CERTIFICATE" }, // knownHostsData: { source: "env", provider: "default", id: "SSH_KNOWN_HOSTS" }, }, browser: { enabled: false, image: "openclaw-sandbox-browser:bookworm-slim", network: "openclaw-sandbox-browser", cdpPort: 9222, cdpSourceRange: "172.21.0.1/32", vncPort: 5900, noVncPort: 6080, headless: false, enableNoVnc: true, allowHostControl: false, autoStart: true, autoStartTimeoutMs: 12000, }, prune: { idleHours: 24, maxAgeDays: 7, }, }, }, }, tools: { sandbox: { tools: { allow: [ "exec", "process", "read", "write", "edit", "apply_patch", "sessions_list", "sessions_history", "sessions_send", "sessions_spawn", "session_status", ], deny: ["browser", "canvas", "nodes", "cron", "discord", "gateway"], }, }, },}جزئیات سندباکس
بکاند:
docker: زماناجرای محلی Docker (پیشفرض)ssh: زماناجرای راهدور عمومی مبتنی بر SSHopenshell: زماناجرای OpenShell
وقتی backend: "openshell" انتخاب شود، تنظیمات ویژهٔ زماناجرا به
plugins.entries.openshell.config منتقل میشوند.
پیکربندی بکاند SSH:
target: مقصد SSH در قالبuser@host[:port]command: فرمان کلاینت SSH (پیشفرض:ssh)workspaceRoot: ریشهٔ مطلق راهدور که برای فضاهای کاری هر دامنه استفاده میشودidentityFile/certificateFile/knownHostsFile: فایلهای محلی موجود که به OpenSSH داده میشوندidentityData/certificateData/knownHostsData: محتواهای درونخطی یا SecretRefهایی که OpenClaw در زمان اجرا به فایلهای موقت تبدیل میکندstrictHostKeyChecking/updateHostKeys: کنترلهای سیاست کلید میزبان OpenSSH
اولویت احراز هویت SSH:
identityDataبرidentityFileاولویت داردcertificateDataبرcertificateFileاولویت داردknownHostsDataبرknownHostsFileاولویت دارد- مقدارهای
*Dataمبتنی بر SecretRef پیش از شروع نشست سندباکس از اسنپشات فعال زماناجرای رازها حل میشوند
رفتار بکاند SSH:
- فضای کاری راهدور را پس از ایجاد یا ایجاد دوباره یکبار بذرگذاری میکند
- سپس فضای کاری SSH راهدور را مرجع نگه میدارد
exec، ابزارهای فایل، و مسیرهای رسانه را از طریق SSH مسیریابی میکند- تغییرات راهدور را بهطور خودکار به میزبان همگامسازی نمیکند
- از کانتینرهای مرورگر سندباکس پشتیبانی نمیکند
دسترسی فضای کاری:
none: فضای کاری سندباکس برای هر دامنه زیر~/.openclaw/sandboxesro: فضای کاری سندباکس در/workspace، فضای کاری عامل بهصورت فقطخواندنی در/agentسوار میشودrw: فضای کاری عامل بهصورت خواندن/نوشتن در/workspaceسوار میشود
دامنه:
session: کانتینر + فضای کاری برای هر نشستagent: یک کانتینر + فضای کاری برای هر عامل (پیشفرض)shared: کانتینر و فضای کاری مشترک (بدون جداسازی بین نشستها)
پیکربندی Plugin OpenShell:
{plugins: { entries: { openshell: { enabled: true, config: { mode: "mirror", // mirror | remote from: "openclaw", remoteWorkspaceDir: "/sandbox", remoteAgentWorkspaceDir: "/agent", gateway: "lab", // optional gatewayEndpoint: "https://lab.example", // optional policy: "strict", // optional OpenShell policy id providers: ["openai"], // optional autoProviders: true, timeoutSeconds: 120, }, }, },},}حالت OpenShell:
mirror: پیش از exec از محلی به راهدور بذرگذاری میکند، پس از exec همگامسازی برگشتی انجام میدهد؛ فضای کاری محلی مرجع میماندremote: هنگام ایجاد سندباکس یکبار راهدور را بذرگذاری میکند، سپس فضای کاری راهدور را مرجع نگه میدارد
در حالت remote، ویرایشهای محلی میزبان که بیرون از OpenClaw انجام میشوند، پس از مرحلهٔ بذرگذاری بهطور خودکار به سندباکس همگامسازی نمیشوند.
انتقال از طریق SSH به سندباکس OpenShell انجام میشود، اما Plugin چرخهٔ عمر سندباکس و همگامسازی آینهای اختیاری را مالک است.
setupCommand پس از ایجاد کانتینر یکبار اجرا میشود (از طریق sh -lc). به خروجی شبکه، ریشهٔ قابلنوشتن، و کاربر ریشه نیاز دارد.
کانتینرها بهطور پیشفرض network: "none" دارند — اگر عامل به دسترسی خروجی نیاز دارد، آن را روی "bridge" (یا یک شبکهٔ bridge سفارشی) تنظیم کنید.
"host" مسدود است. "container:<id>" بهطور پیشفرض مسدود است، مگر اینکه صراحتاً
sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true را تنظیم کنید (راهحل اضطراری).
پیوستهای ورودی در media/inbound/* در فضای کاری فعال مرحلهبندی میشوند.
docker.binds دایرکتوریهای میزبان اضافی را سوار میکند؛ bindهای سراسری و هر عامل با هم ادغام میشوند.
مرورگر سندباکسشده (sandbox.browser.enabled): Chromium + CDP در یک کانتینر. URL noVNC به اعلان سیستم تزریق میشود. به browser.enabled در openclaw.json نیاز ندارد.
دسترسی ناظر noVNC بهطور پیشفرض از احراز هویت VNC استفاده میکند و OpenClaw یک URL توکن کوتاهعمر صادر میکند (بهجای افشای گذرواژه در URL مشترک).
allowHostControl: false(پیشفرض) نشستهای سندباکسشده را از هدفگرفتن مرورگر میزبان منع میکند.networkبهطور پیشفرضopenclaw-sandbox-browserاست (شبکهٔ bridge اختصاصی). فقط وقتی صراحتاً اتصال bridge سراسری میخواهید، آن را رویbridgeتنظیم کنید.cdpSourceRangeمیتواند ورود CDP در لبهٔ کانتینر را به یک بازهٔ CIDR محدود کند (برای مثال172.21.0.1/32).sandbox.browser.bindsدایرکتوریهای میزبان اضافی را فقط در کانتینر مرورگر سندباکس سوار میکند. وقتی تنظیم شود (از جمله[])، برای کانتینر مرورگر جایگزینdocker.bindsمیشود.- پیشفرضهای راهاندازی در
scripts/sandbox-browser-entrypoint.shتعریف شدهاند و برای میزبانهای کانتینری تنظیم شدهاند: --remote-debugging-address=127.0.0.1--remote-debugging-port=<derived from OPENCLAW_BROWSER_CDP_PORT>--user-data-dir=${HOME}/.chrome--no-first-run--no-default-browser-check--disable-3d-apis--disable-gpu--disable-software-rasterizer--disable-dev-shm-usage--disable-background-networking--disable-features=TranslateUI--disable-breakpad--disable-crash-reporter--renderer-process-limit=2--no-zygote--metrics-recording-only--disable-extensions(بهطور پیشفرض فعال)--disable-3d-apis،--disable-software-rasterizer، و--disable-gpuبهطور پیشفرض فعال هستند و اگر استفاده از WebGL/3D آن را لازم داشته باشد، میتوانند باOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0غیرفعال شوند.- اگر گردشکار شما به افزونهها وابسته است،
OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0آنها را دوباره فعال میکند. --renderer-process-limit=2را میتوان باOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>تغییر داد؛ برای استفاده از محدودیت فرایند پیشفرض Chromium،0را تنظیم کنید.- بهعلاوهٔ
--no-sandboxوقتیnoSandboxفعال باشد. - پیشفرضها خط مبنای تصویر کانتینر هستند؛ برای تغییر پیشفرضهای کانتینر از یک تصویر مرورگر سفارشی با entrypoint سفارشی استفاده کنید.
سندباکسسازی مرورگر و sandbox.docker.binds فقط مخصوص Docker هستند.
ساخت تصاویر (از یک checkout منبع):
scripts/sandbox-setup.sh # main sandbox imagescripts/sandbox-browser-setup.sh # optional browser imageبرای نصبهای npm بدون checkout منبع، برای فرمانهای درونخطی docker build به سندباکسسازی § تصاویر و راهاندازی مراجعه کنید.
agents.list (بازنویسیهای هر عامل)
از agents.list[].tts برای دادن ارائهدهنده TTS، صدا، مدل، سبک، یا حالت TTS خودکار اختصاصی به یک عامل استفاده کنید. بلوک عامل روی messages.tts سراسری deep-merge میشود، بنابراین اعتبارنامههای مشترک میتوانند در یک مکان بمانند، در حالی که عاملهای جداگانه فقط فیلدهای صدا یا ارائهدهندهای را که نیاز دارند override میکنند. override عامل فعال برای پاسخهای گفتاری خودکار، /tts audio، /tts status، و ابزار عامل tts اعمال میشود. برای نمونههای ارائهدهنده و ترتیب تقدم، تبدیل متن به گفتار را ببینید.
{ agents: { list: [ { id: "main", default: true, name: "Main Agent", workspace: "~/.openclaw/workspace", agentDir: "~/.openclaw/agents/main/agent", model: "anthropic/claude-opus-4-6", // or { primary, fallbacks } thinkingDefault: "high", // per-agent thinking level override reasoningDefault: "on", // per-agent reasoning visibility override fastModeDefault: false, // per-agent fast mode override params: { cacheRetention: "none" }, // overrides matching defaults.models params by key tts: { providers: { elevenlabs: { voiceId: "EXAVITQu4vr4xnSDxMaL" }, }, }, skills: ["docs-search"], // replaces agents.defaults.skills when set identity: { name: "Samantha", theme: "helpful sloth", emoji: "🦥", avatar: "avatars/samantha.png", }, groupChat: { mentionPatterns: ["@openclaw"] }, sandbox: { mode: "off" }, runtime: { type: "acp", acp: { agent: "codex", backend: "acpx", mode: "persistent", cwd: "/workspace/openclaw", }, }, subagents: { allowAgents: ["*"] }, tools: { profile: "coding", allow: ["browser"], deny: ["canvas"], elevated: { enabled: true }, }, }, ], },}id: شناسه پایدار عامل (الزامی).default: وقتی چند مورد تنظیم شده باشد، اولین مورد برنده میشود (هشدار ثبت میشود). اگر هیچکدام تنظیم نشده باشد، اولین ورودی فهرست پیشفرض است.model: فرم رشتهای یک primary سختگیرانه برای هر عامل و بدون fallback مدل تنظیم میکند؛ فرم شیء{ primary }نیز سختگیرانه است مگر اینکهfallbacksاضافه کنید. از{ primary, fallbacks: [...] }استفاده کنید تا آن عامل fallback داشته باشد، یا از{ primary, fallbacks: [] }استفاده کنید تا رفتار سختگیرانه صریح شود. کارهای Cron که فقطprimaryرا override میکنند همچنان fallbackهای پیشفرض را به ارث میبرند، مگر اینکهfallbacks: []را تنظیم کنید.params: پارامترهای stream برای هر عامل که روی ورودی مدل انتخابشده درagents.defaults.modelsmerge میشوند. از این برای overrideهای اختصاصی عامل مانندcacheRetention،temperature، یاmaxTokensبدون تکرار کل کاتالوگ مدل استفاده کنید.tts: overrideهای اختیاری تبدیل متن به گفتار برای هر عامل. این بلوک رویmessages.ttsبهصورت deep-merge اعمال میشود، بنابراین اعتبارنامههای ارائهدهنده و سیاست fallback مشترک را درmessages.ttsنگه دارید و اینجا فقط مقدارهای اختصاصی پرسونا مانند ارائهدهنده، صدا، مدل، سبک، یا حالت خودکار را تنظیم کنید.skills: فهرست مجاز اختیاری Skills برای هر عامل. اگر حذف شود، عامل در صورت تنظیم بودنagents.defaults.skillsآن را به ارث میبرد؛ یک فهرست صریح بهجای merge کردن، پیشفرضها را جایگزین میکند، و[]یعنی بدون Skills.thinkingDefault: سطح پیشفرض اختیاری تفکر برای هر عامل (off | minimal | low | medium | high | xhigh | adaptive | max). وقتی هیچ override در سطح پیام یا نشست تنظیم نشده باشد،agents.defaults.thinkingDefaultرا برای این عامل override میکند. پروفایل ارائهدهنده/مدل انتخابشده کنترل میکند که کدام مقدارها معتبر هستند؛ برای Google Gemini،adaptiveتفکر پویای متعلق به ارائهدهنده را نگه میدارد (thinkingLevelدر Gemini 3/3.1 حذف میشود،thinkingBudget: -1در Gemini 2.5).reasoningDefault: نمایانی پیشفرض اختیاری reasoning برای هر عامل (on | off | stream). وقتی هیچ override برای reasoning در سطح پیام یا نشست تنظیم نشده باشد،agents.defaults.reasoningDefaultرا برای این عامل override میکند.fastModeDefault: پیشفرض اختیاری برای حالت سریع برای هر عامل (true | false). وقتی هیچ override حالت سریع در سطح پیام یا نشست تنظیم نشده باشد اعمال میشود.models: overrideهای اختیاری کاتالوگ مدل/Runtime برای هر عامل که با شناسههای کاملprovider/modelکلیدگذاری شدهاند. ازmodels["provider/model"].agentRuntimeبرای استثناهای Runtime مختص عامل استفاده کنید.runtime: توصیفگر Runtime اختیاری برای هر عامل. وقتی عامل باید بهطور پیشفرض از نشستهای harness مربوط به ACP استفاده کند، ازtype: "acp"همراه با پیشفرضهایruntime.acp(agent،backend،mode،cwd) استفاده کنید.identity.avatar: مسیر نسبی به workspace، نشانیhttp(s)، یا URI از نوعdata:.identityپیشفرضها را استخراج میکند:ackReactionازemoji، وmentionPatternsازname/emoji.subagents.allowAgents: فهرست مجاز شناسههای عامل برای targetهای صریحsessions_spawn.agentId(["*"]= هرکدام؛ پیشفرض: فقط همان عامل). وقتی فراخوانیهایagentIdبا target خودِ درخواستکننده باید مجاز باشند، شناسه درخواستکننده را درج کنید.- محافظ ارثبری sandbox: اگر نشست درخواستکننده sandbox شده باشد،
sessions_spawntargetهایی را که بدون sandbox اجرا میشوند رد میکند. subagents.requireAgentId: وقتی true باشد، فراخوانیهایsessions_spawnرا کهagentIdرا حذف میکنند مسدود میکند (انتخاب صریح پروفایل را اجباری میکند؛ پیشفرض: false).
مسیریابی چندعاملی
چند عامل جداشده را داخل یک Gateway اجرا کنید. چندعاملی را ببینید.
{ agents: { list: [ { id: "home", default: true, workspace: "~/.openclaw/workspace-home" }, { id: "work", workspace: "~/.openclaw/workspace-work" }, ], }, bindings: [ { agentId: "home", match: { channel: "whatsapp", accountId: "personal" } }, { agentId: "work", match: { channel: "whatsapp", accountId: "biz" } }, ],}فیلدهای تطبیق binding
type(اختیاری):routeبرای مسیریابی عادی (نبودن type بهطور پیشفرض route است)،acpبرای bindingهای گفتوگوی پایدار ACP.match.channel(الزامی)match.accountId(اختیاری؛*= هر حساب؛ حذفشده = حساب پیشفرض)match.peer(اختیاری؛{ kind: direct|group|channel, id })match.guildId/match.teamId(اختیاری؛ وابسته به کانال)acp(اختیاری؛ فقط برایtype: "acp"):{ mode, label, cwd, backend }
ترتیب تطبیق قطعی:
match.peermatch.guildIdmatch.teamIdmatch.accountId(دقیق، بدون peer/guild/team)match.accountId: "*"(در سطح کانال)- عامل پیشفرض
در هر سطح، اولین ورودی مطابق در bindings برنده میشود.
برای ورودیهای type: "acp"، OpenClaw بر اساس هویت دقیق گفتوگو (match.channel + حساب + match.peer.id) resolve میکند و از ترتیب سطحی binding مسیریابی بالا استفاده نمیکند.
پروفایلهای دسترسی برای هر عامل
دسترسی کامل (بدون sandbox)
{agents: { list: [ { id: "personal", workspace: "~/.openclaw/workspace-personal", sandbox: { mode: "off" }, }, ],},}ابزارهای فقطخواندنی + workspace
{agents: { list: [ { id: "family", workspace: "~/.openclaw/workspace-family", sandbox: { mode: "all", scope: "agent", workspaceAccess: "ro" }, tools: { allow: [ "read", "sessions_list", "sessions_history", "sessions_send", "sessions_spawn", "session_status", ], deny: ["write", "edit", "apply_patch", "exec", "process", "browser"], }, }, ],},}بدون دسترسی به فایلسیستم (فقط پیامرسانی)
{agents: { list: [ { id: "public", workspace: "~/.openclaw/workspace-public", sandbox: { mode: "all", scope: "agent", workspaceAccess: "none" }, tools: { allow: [ "sessions_list", "sessions_history", "sessions_send", "sessions_spawn", "session_status", "whatsapp", "telegram", "slack", "discord", "gateway", ], deny: [ "read", "write", "edit", "apply_patch", "exec", "process", "browser", "canvas", "nodes", "cron", "gateway", "image", ], }, }, ],},}برای جزئیات تقدم، Sandbox و ابزارهای چندعاملی را ببینید.
نشست
{ session: { scope: "per-sender", dmScope: "main", // main | per-peer | per-channel-peer | per-account-channel-peer identityLinks: { alice: ["telegram:123456789", "discord:987654321012345678"], }, reset: { mode: "daily", // daily | idle atHour: 4, idleMinutes: 60, }, resetByType: { thread: { mode: "daily", atHour: 4 }, direct: { mode: "idle", idleMinutes: 240 }, group: { mode: "idle", idleMinutes: 120 }, }, resetTriggers: ["/new", "/reset"], store: "~/.openclaw/agents/{agentId}/sessions/sessions.json", maintenance: { mode: "warn", // warn | enforce pruneAfter: "30d", maxEntries: 500, resetArchiveRetention: "30d", // duration or false maxDiskBytes: "500mb", // optional hard budget highWaterBytes: "400mb", // optional cleanup target }, threadBindings: { enabled: true, idleHours: 24, // default inactivity auto-unfocus in hours (`0` disables) maxAgeHours: 0, // default hard max age in hours (`0` disables) }, mainKey: "main", // legacy (runtime always uses "main") agentToAgent: { maxPingPongTurns: 5 }, sendPolicy: { rules: [{ action: "deny", match: { channel: "discord", chatType: "group" } }], default: "allow", }, },}جزئیات فیلدهای نشست
scope: راهبرد پایهٔ گروهبندی نشست برای زمینههای گفتوگوی گروهی.per-sender(پیشفرض): هر فرستنده یک نشست جداگانه درون زمینهٔ یک کانال دریافت میکند.global: همهٔ شرکتکنندگان در زمینهٔ یک کانال، یک نشست واحد را به اشتراک میگذارند (فقط وقتی استفاده کنید که زمینهٔ مشترک مدنظر است).dmScope: نحوهٔ گروهبندی پیامهای مستقیم.main: همهٔ پیامهای مستقیم نشست اصلی را به اشتراک میگذارند.per-peer: جداسازی بر اساس شناسهٔ فرستنده در سراسر کانالها.per-channel-peer: جداسازی بر اساس کانال + فرستنده (برای صندوقهای ورودی چندکاربره توصیه میشود).per-account-channel-peer: جداسازی بر اساس حساب + کانال + فرستنده (برای چندحسابی توصیه میشود).identityLinks: نگاشت شناسههای متعارف به همتایان دارای پیشوند ارائهدهنده برای اشتراکگذاری نشست میان کانالها. فرمانهای Dock مانند/dock_discordاز همان نگاشت برای تغییر مسیر پاسخ نشست فعال به همتای کانال پیوندخوردهٔ دیگر استفاده میکنند؛ داکینگ کانال را ببینید.reset: سیاست اصلی بازنشانی.dailyدر زمان محلیatHourبازنشانی میشود؛idleپس ازidleMinutesبازنشانی میشود. وقتی هر دو پیکربندی شده باشند، هرکدام زودتر منقضی شود اعمال میشود. تازگی بازنشانی روزانه ازsessionStartedAtردیف نشست استفاده میکند؛ تازگی بازنشانی بیکاری ازlastInteractionAtاستفاده میکند. نوشتنهای پسزمینه/رویدادهای سیستمی مانند heartbeat، بیدارباشهای cron، اعلانهای exec، و حسابداری gateway میتوانندupdatedAtرا بهروزرسانی کنند، اما نشستهای روزانه/بیکار را تازه نگه نمیدارند.resetByType: بازنویسیهای مبتنی بر نوع (direct،group،thread). مقدار قدیمیdmبهعنوان نام مستعارdirectپذیرفته میشود.mainKey: فیلد قدیمی. Runtime همیشه از"main"برای سطل اصلی گفتوگوی مستقیم استفاده میکند.agentToAgent.maxPingPongTurns: حداکثر نوبتهای پاسخ برگشتی بین عاملها هنگام تبادلهای عاملبهعامل (عدد صحیح، بازه:0-20، پیشفرض:5).0زنجیرهسازی ping-pong را غیرفعال میکند.sendPolicy: تطبیق بر اساسchannel،chatType(direct|group|channel، با نام مستعار قدیمیdm)،keyPrefix، یاrawKeyPrefix. نخستین ردکردن برنده است.maintenance: پاکسازی انبار نشست + کنترلهای نگهداشت.mode: مقدارwarnفقط هشدار منتشر میکند؛enforceپاکسازی را اعمال میکند.pruneAfter: حد سنی برای ورودیهای کهنه (پیشفرض30d).maxEntries: حداکثر تعداد ورودیها درsessions.json(پیشفرض500). Runtime پاکسازی دستهای را با یک بافر کوچک سقف بالا برای محدودیتهای اندازهٔ تولید مینویسد؛openclaw sessions cleanup --enforceسقف را بلافاصله اعمال میکند.rotateBytes: منسوخ شده و نادیده گرفته میشود؛openclaw doctor --fixآن را از پیکربندیهای قدیمیتر حذف میکند.resetArchiveRetention: نگهداشت برای بایگانیهای رونوشت*.reset.<timestamp>. پیشفرض برابرpruneAfterاست؛ برای غیرفعالسازی رویfalseتنظیم کنید.maxDiskBytes: بودجهٔ اختیاری دیسک برای پوشهٔ نشستها. در حالتwarnهشدارها را ثبت میکند؛ در حالتenforceابتدا قدیمیترین مصنوعات/نشستها را حذف میکند.highWaterBytes: هدف اختیاری پس از پاکسازی بودجه. پیشفرض برابر80%ازmaxDiskBytesاست.threadBindings: پیشفرضهای سراسری برای قابلیتهای نشست متصل به رشته.enabled: کلید اصلی پیشفرض (ارائهدهندگان میتوانند بازنویسی کنند؛ Discord ازchannels.discord.threadBindings.enabledاستفاده میکند)idleHours: خارجکردن خودکار از تمرکز بهدلیل عدم فعالیت، به ساعت (0غیرفعال میکند؛ ارائهدهندگان میتوانند بازنویسی کنند)maxAgeHours: حداکثر سن سختگیرانهٔ پیشفرض به ساعت (0غیرفعال میکند؛ ارائهدهندگان میتوانند بازنویسی کنند)spawnSessions: دروازهٔ پیشفرض برای ایجاد نشستهای کاری متصل به رشته ازsessions_spawnو ایجاد رشتهٔ ACP. وقتی اتصالهای رشته فعال باشند، پیشفرضtrueاست؛ ارائهدهندگان/حسابها میتوانند بازنویسی کنند.defaultSpawnContext: زمینهٔ پیشفرض زیرعامل بومی برای ایجادهای متصل به رشته ("fork"یا"isolated"). پیشفرض"fork"است.
پیامها
{ messages: { responsePrefix: "🦞", // or "auto" ackReaction: "👀", ackReactionScope: "group-mentions", // group-mentions | group-all | direct | all removeAckAfterReply: false, queue: { mode: "steer", // steer | queue (legacy one-at-a-time) | followup | collect | steer-backlog | steer+backlog | interrupt debounceMs: 500, cap: 20, drop: "summarize", // old | new | summarize byChannel: { whatsapp: "steer", telegram: "steer", }, }, inbound: { debounceMs: 2000, // 0 disables byChannel: { whatsapp: 5000, slack: 1500, }, }, },}پیشوند پاسخ
بازنویسیهای هر کانال/حساب: channels.<channel>.responsePrefix، channels.<channel>.accounts.<id>.responsePrefix.
حل مقدار (خاصترین برنده است): حساب → کانال → سراسری. "" غیرفعال میکند و آبشار را متوقف میکند. "auto" مقدار [{identity.name}] را استخراج میکند.
متغیرهای قالب:
| متغیر | توضیح | مثال |
|---|---|---|
{model} |
نام کوتاه مدل | claude-opus-4-6 |
{modelFull} |
شناسهٔ کامل مدل | anthropic/claude-opus-4-6 |
{provider} |
نام ارائهدهنده | anthropic |
{thinkingLevel} |
سطح تفکر فعلی | high, low, off |
{identity.name} |
نام هویت عامل | (همانند "auto") |
متغیرها به بزرگی و کوچکی حروف حساس نیستند. {think} نام مستعار {thinkingLevel} است.
واکنش تأیید
- پیشفرض،
identity.emojiعامل فعال است، وگرنه"👀". برای غیرفعالسازی روی""تنظیم کنید. - بازنویسیهای هر کانال:
channels.<channel>.ackReaction،channels.<channel>.accounts.<id>.ackReaction. - ترتیب حل مقدار: حساب → کانال →
messages.ackReaction→ جایگزین هویت. - دامنه:
group-mentions(پیشفرض)،group-all،direct،all. removeAckAfterReply: تأیید را پس از پاسخ در کانالهایی که از واکنش پشتیبانی میکنند مانند Slack، Discord، Telegram، WhatsApp، و iMessage حذف میکند.messages.statusReactions.enabled: واکنشهای وضعیت چرخهٔ عمر را در Slack، Discord، و Telegram فعال میکند. در Slack و Discord، تنظیمنشدن باعث میشود وقتی واکنشهای تأیید فعال هستند، واکنشهای وضعیت هم فعال بمانند. در Telegram، آن را صراحتاً رویtrueتنظیم کنید تا واکنشهای وضعیت چرخهٔ عمر فعال شوند.
تأخیر ورودی
پیامهای سریعِ فقطمتنی از یک فرستنده را در یک نوبت عامل واحد دستهبندی میکند. رسانه/پیوستها بلافاصله تخلیه میشوند. فرمانهای کنترلی تأخیر را دور میزنند.
TTS (تبدیل متن به گفتار)
{ messages: { tts: { auto: "always", // off | always | inbound | tagged mode: "final", // final | all provider: "elevenlabs", summaryModel: "openai/gpt-4.1-mini", modelOverrides: { enabled: true }, maxTextLength: 4000, timeoutMs: 30000, prefsPath: "~/.openclaw/settings/tts.json", providers: { elevenlabs: { apiKey: "elevenlabs_api_key", baseUrl: "https://api.elevenlabs.io", voiceId: "voice_id", modelId: "eleven_multilingual_v2", seed: 42, applyTextNormalization: "auto", languageCode: "en", voiceSettings: { stability: 0.5, similarityBoost: 0.75, style: 0.0, useSpeakerBoost: true, speed: 1.0, }, }, microsoft: { voice: "en-US-AvaMultilingualNeural", lang: "en-US", outputFormat: "audio-24khz-48kbitrate-mono-mp3", }, openai: { apiKey: "openai_api_key", baseUrl: "https://api.openai.com/v1", model: "gpt-4o-mini-tts", voice: "alloy", }, }, }, },}autoحالت پیشفرض TTS خودکار را کنترل میکند:off،always،inbound، یاtagged./tts on|offمیتواند ترجیحات محلی را بازنویسی کند، و/tts statusوضعیت مؤثر را نشان میدهد.summaryModelمقدارagents.defaults.model.primaryرا برای خلاصهسازی خودکار بازنویسی میکند.modelOverridesبهصورت پیشفرض فعال است؛ پیشفرضmodelOverrides.allowProviderبرابرfalseاست (نیازمند انتخاب صریح).- کلیدهای API به
ELEVENLABS_API_KEY/XI_API_KEYوOPENAI_API_KEYبرمیگردند. - ارائهدهندگان گفتار همراه، در مالکیت Plugin هستند. اگر
plugins.allowتنظیم شده باشد، هر Plugin ارائهدهندهٔ TTS را که میخواهید استفاده کنید وارد کنید، برای مثالmicrosoftبرای Edge TTS. شناسهٔ ارائهدهندهٔ قدیمیedgeبهعنوان نام مستعارmicrosoftپذیرفته میشود. providers.openai.baseUrlنقطهٔ پایانی OpenAI TTS را بازنویسی میکند. ترتیب حل مقدار: ابتدا پیکربندی، سپسOPENAI_TTS_BASE_URL، سپسhttps://api.openai.com/v1.- وقتی
providers.openai.baseUrlبه یک نقطهٔ پایانی غیر OpenAI اشاره کند، OpenClaw آن را بهعنوان یک سرور TTS سازگار با OpenAI در نظر میگیرد و اعتبارسنجی مدل/صدا را آسانتر میکند.
Talk
پیشفرضهای حالت Talk (macOS/iOS/Android).
{ talk: { provider: "elevenlabs", providers: { elevenlabs: { voiceId: "elevenlabs_voice_id", voiceAliases: { Clawd: "EXAVITQu4vr4xnSDxMaL", Roger: "CwhRBWXzGAHq8TQ4Fs17", }, modelId: "eleven_v3", outputFormat: "mp3_44100_128", apiKey: "elevenlabs_api_key", }, mlx: { modelId: "mlx-community/Soprano-80M-bf16", }, system: {}, }, consultThinkingLevel: "low", consultFastMode: true, speechLocale: "ru-RU", silenceTimeoutMs: 1500, interruptOnSpeech: true, realtime: { provider: "openai", providers: { openai: { model: "gpt-realtime-2", voice: "cedar", }, }, instructions: "Speak warmly and keep answers brief.", mode: "realtime", transport: "webrtc", brain: "agent-consult", }, },}talk.providerباید وقتی چند ارائهدهندهٔ Talk پیکربندی شدهاند، با یک کلید درtalk.providersمطابقت داشته باشد.- کلیدهای تخت قدیمی Talk (
talk.voiceId،talk.voiceAliases،talk.modelId،talk.outputFormat،talk.apiKey) فقط برای سازگاری هستند.openclaw doctor --fixرا اجرا کنید تا پیکربندی ذخیرهشده بهtalk.providers.<provider>بازنویسی شود. - شناسههای صدا به
ELEVENLABS_VOICE_IDیاSAG_VOICE_IDبرمیگردند. providers.*.apiKeyرشتههای متن ساده یا اشیای SecretRef را میپذیرد.- جایگزین
ELEVENLABS_API_KEYفقط وقتی اعمال میشود که هیچ کلید API برای Talk پیکربندی نشده باشد. providers.*.voiceAliasesاجازه میدهد دستورهای Talk از نامهای دوستانه استفاده کنند.providers.mlx.modelIdمخزن Hugging Face مورد استفادهٔ کمککنندهٔ MLX محلی macOS را انتخاب میکند. اگر حذف شود، macOS ازmlx-community/Soprano-80M-bf16استفاده میکند.- پخش MLX در macOS از طریق کمککنندهٔ همراه
openclaw-mlx-tts، در صورت وجود، یا یک فایل اجرایی درPATHاجرا میشود؛OPENCLAW_MLX_TTS_BINمسیر کمککننده را برای توسعه بازنویسی میکند. consultThinkingLevelسطح تفکر را برای اجرای کامل عامل OpenClaw پشت فراخوانیهای Control UI Talk realtimeopenclaw_agent_consultکنترل میکند. برای حفظ رفتار عادی نشست/مدل، آن را تنظیمنشده بگذارید.consultFastModeیک بازنویسی یکبارهٔ حالت سریع را برای مشورتهای Control UI Talk realtime بدون تغییر تنظیم عادی حالت سریع نشست تنظیم میکند.speechLocaleشناسهٔ محل BCP 47 مورد استفادهٔ تشخیص گفتار Talk در iOS/macOS را تنظیم میکند. برای استفاده از پیشفرض دستگاه، آن را تنظیمنشده بگذارید.silenceTimeoutMsکنترل میکند حالت Talk پس از سکوت کاربر چه مدت منتظر بماند پیش از اینکه رونوشت را ارسال کند. تنظیمنشدن، پنجرهٔ مکث پیشفرض پلتفرم را حفظ میکند (700 ms on macOS and Android, 900 ms on iOS).realtime.instructionsدستورهای سیستمی روبهارائهدهنده را به اعلان realtime داخلی OpenClaw اضافه میکند، تا سبک صدا بدون از دست دادن راهنمای پیشفرضopenclaw_agent_consultقابل پیکربندی باشد.
مرتبط
- مرجع پیکربندی — همهٔ کلیدهای پیکربندی دیگر
- پیکربندی — کارهای رایج و راهاندازی سریع
- نمونههای پیکربندی