Gateway
پیکربندی — عاملها
کلیدهای پیکربندی محدود به عامل زیر agents.*، multiAgent.*، session.*،
messages.* و talk.*. برای کانالها، ابزارها، زمان اجرای Gateway و دیگر
کلیدهای سطح بالا، مرجع پیکربندی را ببینید.
پیشفرضهای عامل
agents.defaults.workspace
پیشفرض: وقتی OPENCLAW_WORKSPACE_DIR تنظیم شده باشد، همان؛ در غیر این صورت ~/.openclaw/workspace.
{ agents: { defaults: { workspace: "~/.openclaw/workspace" } },}یک مقدار صریح agents.defaults.workspace بر OPENCLAW_WORKSPACE_DIR اولویت دارد. وقتی نمیخواهید آن مسیر را در پیکربندی بنویسید، از متغیر محیطی استفاده کنید تا عاملهای پیشفرض را به یک فضای کاری mountشده اشاره دهید.
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": نوبتهای ادامه امن (پس از پاسخ کاملشده دستیار) تزریق دوباره راهاندازی اولیه فضای کاری را رد میکنند و اندازه اعلان را کاهش میدهند. اجراهای Heartbeat و تلاشهای دوباره پس از Compaction همچنان زمینه را بازسازی میکنند."never": راهاندازی اولیه فضای کاری و تزریق فایلهای زمینه را در هر نوبت غیرفعال میکند. این را فقط برای عاملهایی استفاده کنید که چرخه عمر اعلان خود را کاملا مالک هستند (موتورهای زمینه سفارشی، زمانهای اجرای بومی که زمینه خود را میسازند، یا گردشکارهای تخصصی بدون راهاندازی اولیه). نوبتهای Heartbeat و بازیابی از Compaction نیز تزریق را رد میکنند.
{ agents: { defaults: { contextInjection: "continuation-skip" } },}بازنویسی برای هر عامل: agents.list[].contextInjection. مقدارهای حذفشده از
agents.defaults.contextInjection ارثبری میکنند.
agents.defaults.bootstrapMaxChars
حداکثر نویسه برای هر فایل راهاندازی اولیه فضای کاری پیش از کوتاهسازی. پیشفرض: 20000.
{ agents: { defaults: { bootstrapMaxChars: 20000 } },}بازنویسی برای هر عامل: agents.list[].bootstrapMaxChars. مقدارهای حذفشده از
agents.defaults.bootstrapMaxChars ارثبری میکنند.
agents.defaults.bootstrapTotalMaxChars
حداکثر مجموع نویسههای تزریقشده در همه فایلهای راهاندازی اولیه فضای کاری. پیشفرض: 60000.
{ agents: { defaults: { bootstrapTotalMaxChars: 60000 } },}بازنویسی برای هر عامل: agents.list[].bootstrapTotalMaxChars. مقدارهای حذفشده
از agents.defaults.bootstrapTotalMaxChars ارثبری میکنند.
بازنویسیهای پروفایل راهاندازی اولیه برای هر عامل
وقتی یک عامل به رفتار تزریق اعلان متفاوتی نسبت به پیشفرضهای مشترک نیاز دارد، از بازنویسیهای پروفایل راهاندازی اولیه برای هر عامل استفاده کنید. فیلدهای حذفشده از
agents.defaults ارثبری میکنند.
{ agents: { defaults: { contextInjection: "continuation-skip", bootstrapMaxChars: 20000, bootstrapTotalMaxChars: 60000, }, list: [ { id: "strict-worker", contextInjection: "always", bootstrapMaxChars: 50000, bootstrapTotalMaxChars: 300000, }, ], },}agents.defaults.bootstrapPromptTruncationWarning
اعلان قابلمشاهده برای عامل در اعلان سیستم را هنگام کوتاهسازی زمینه راهاندازی اولیه کنترل میکند.
پیشفرض: "always".
"off": هرگز متن اعلان کوتاهسازی را در اعلان سیستم تزریق نکن."once": برای هر امضای یکتای کوتاهسازی، یک اعلان مختصر را یکبار تزریق کن."always": وقتی کوتاهسازی وجود دارد، در هر اجرا یک اعلان مختصر تزریق کن (توصیهشده).
شمارشهای خام/تزریقشده دقیق و فیلدهای تنظیم پیکربندی در تشخیصهایی مانند گزارشهای زمینه/وضعیت و لاگها باقی میمانند؛ زمینه معمول کاربر/زمان اجرای WebChat فقط اعلان بازیابی مختصر را دریافت میکند.
{ agents: { defaults: { bootstrapPromptTruncationWarning: "always" } }, // off | once | always}نقشه مالکیت بودجه زمینه
OpenClaw چندین بودجه اعلان/زمینه پرحجم دارد و آنها بهعمد بر اساس زیرسیستم جدا شدهاند، بهجای اینکه همه از یک تنظیم عمومی عبور کنند.
agents.defaults.bootstrapMaxChars/agents.defaults.bootstrapTotalMaxChars: تزریق معمول راهاندازی اولیه فضای کاری.agents.defaults.startupContext.*: مقدمه یکباره اجرای مدل در reset/startup، شامل فایلهای روزانه اخیرmemory/*.md. فرمانهای چت ساده/newو/resetبدون فراخوانی مدل تأیید میشوند.skills.limits.*: فهرست فشرده Skills که در اعلان سیستم تزریق میشود.agents.defaults.contextLimits.*: گزیدههای محدود زمان اجرا و بلوکهای تزریقشده تحت مالکیت زمان اجرا.memory.qmd.limits.*: قطعه جستوجوی حافظه نمایهشده و اندازهبندی تزریق.
فقط وقتی یک عامل به بودجه متفاوتی نیاز دارد، از بازنویسی متناظر برای هر عامل استفاده کنید:
agents.list[].skillsLimits.maxSkillsPromptCharsagents.list[].contextInjectionagents.list[].bootstrapMaxCharsagents.list[].bootstrapTotalMaxCharsagents.list[].contextLimits.*
agents.defaults.startupContext
مقدمه startup نوبت اول را که در اجراهای مدل reset/startup تزریق میشود کنترل میکند.
فرمانهای چت ساده /new و /reset بدون فراخوانی
مدل، reset را تأیید میکنند؛ بنابراین این مقدمه را بارگذاری نمیکنند.
{ agents: { defaults: { startupContext: { enabled: true, applyOn: ["new", "reset"], dailyMemoryDays: 2, maxFileBytes: 16384, maxFileChars: 1200, maxTotalChars: 2800, }, }, },}agents.defaults.contextLimits
پیشفرضهای مشترک برای سطحهای محدود زمینه زمان اجرا.
{ agents: { defaults: { contextLimits: { memoryGetMaxChars: 12000, memoryGetDefaultLines: 120, postCompactionMaxChars: 1800, }, }, },}memoryGetMaxChars: سقف پیشفرض گزیدهmemory_getپیش از اضافه شدن فراداده کوتاهسازی و اعلان ادامه.memoryGetDefaultLines: پنجره خط پیشفرضmemory_getوقتیlinesحذف شده باشد.toolResultMaxChars: سقف پیشرفته نتیجه ابزار زنده که برای نتایج پایدارشده و بازیابی سرریز استفاده میشود. برای سقف خودکار زمینه مدل، تنظیمنشده بگذارید:16000نویسه زیر 100K توکن،32000نویسه در 100K+ توکن، و64000نویسه در 200K+ توکن. مقدارهای صریح تا1000000برای مدلهای با زمینه بلند پذیرفته میشوند، اما سقف مؤثر همچنان به حدود 30٪ از پنجره زمینه مدل محدود است.openclaw doctor --deepسقف مؤثر را چاپ میکند، و doctor فقط وقتی هشدار میدهد که یک بازنویسی صریح قدیمی باشد یا اثری نداشته باشد.postCompactionMaxChars: سقف گزیده AGENTS.md که هنگام تزریق تازهسازی پس از Compaction استفاده میشود.
agents.list[].contextLimits
بازنویسی برای هر عامل برای تنظیمهای مشترک contextLimits. فیلدهای حذفشده از
agents.defaults.contextLimits ارثبری میکنند.
{ agents: { defaults: { contextLimits: { memoryGetMaxChars: 12000, }, }, list: [ { id: "tiny-local", contextLimits: { memoryGetMaxChars: 6000, toolResultMaxChars: 8000, // advanced ceiling for this agent }, }, ], },}skills.limits.maxSkillsPromptChars
سقف سراسری برای فهرست فشرده Skills که در اعلان سیستم تزریق میشود. این
بر خواندن فایلهای SKILL.md در زمان نیاز تأثیر نمیگذارد.
{ skills: { limits: { maxSkillsPromptChars: 18000, }, },}agents.list[].skillsLimits.maxSkillsPromptChars
بازنویسی برای هر عامل برای بودجه اعلان Skills.
{ agents: { list: [ { id: "tiny-local", skillsLimits: { maxSkillsPromptChars: 6000, }, }, ], },}agents.defaults.imageMaxDimensionPx
حداکثر اندازه پیکسل برای بلندترین ضلع تصویر در بلوکهای تصویر transcript/tool پیش از فراخوانیهای ارائهدهنده.
پیشفرض: 1200.
مقادیر پایینتر معمولا مصرف توکن بینایی و اندازه payload درخواست را برای اجراهای پر از اسکرینشات کاهش میدهند. مقادیر بالاتر جزئیات بصری بیشتری را حفظ میکنند.
{ agents: { defaults: { imageMaxDimensionPx: 1200 } },}agents.defaults.imageQuality
ترجیح فشردهسازی/جزئیات ابزار تصویر برای تصویرهایی که از مسیرهای فایل، URLها و ارجاعهای رسانه بارگذاری میشوند.
پیشفرض: auto.
OpenClaw نردبان تغییر اندازه را با مدل تصویر انتخابشده تطبیق میدهد. برای مثال، Claude Opus 4.8، OpenAI GPT-5.5، Qwen VL و مدلهای بینایی میزبانیشده Llama 4 میتوانند از تصاویر بزرگتری نسبت به مسیرهای بینایی قدیمیتر/پیشفرض با جزئیات بالا استفاده کنند، در حالی که نوبتهای چندتصویری در حالت auto برای کنترل هزینه توکن و تأخیر، تهاجمیتر فشرده میشوند.
مقادیر:
auto: تطبیق با محدودیتهای مدل و تعداد تصویرها.efficient: ترجیح تصویرهای کوچکتر برای مصرف کمتر توکن و بایت.balanced: استفاده از نردبان استاندارد میانه.high: حفظ جزئیات بیشتر برای اسکرینشاتها، نمودارها و تصویرهای سند.
{ agents: { defaults: { imageQuality: "auto" } },}agents.defaults.userTimezone
منطقه زمانی برای زمینه اعلان سیستم (نه برچسبهای زمانی پیام). به منطقه زمانی میزبان برمیگردد.
{ agents: { defaults: { userTimezone: "America/Chicago" } },}agents.defaults.timeFormat
قالب زمان در اعلان سیستم. پیشفرض: auto (ترجیح سیستمعامل).
{ 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 ارائهدهنده متناظر را هم پیکربندی کنید.
- Plugin رسمی تولید ویدیوی Qwen تا ۱ ویدیوی خروجی، ۱ تصویر ورودی، ۴ ویدیوی ورودی، مدت ۱۰ ثانیه، و گزینههای سطح ارائهدهنده
size،aspectRatio،resolution،audio، وwatermarkرا پشتیبانی میکند.
- قابلیت مشترک تولید ویدیو و ابزار داخلی
pdfModel: یا یک رشته ("provider/model") یا یک شیء ({ primary, fallbacks }) میپذیرد.- ابزار
pdfاز آن برای مسیریابی مدل استفاده میکند. - اگر حذف شود، ابزار PDF ابتدا به
imageModelو سپس به مدل حلشده نشست/پیشفرض برمیگردد.
- ابزار
pdfMaxBytesMb: محدودیت اندازه پیشفرض PDF برای ابزارpdfوقتیmaxBytesMbهنگام فراخوانی ارسال نشده باشد.pdfMaxPages: حداکثر تعداد صفحات پیشفرضی که حالت جایگزین استخراج در ابزارpdfدر نظر میگیرد.verboseDefault: سطح verbose پیشفرض برای عاملها. مقادیر:"off"،"on"،"full". پیشفرض:"off".toolProgressDetail: حالت جزئیات برای خلاصههای ابزار/verboseو خطوط ابزار پیشنویس پیشرفت. مقادیر:"explain"(پیشفرض، برچسبهای انسانی فشرده) یا"raw"(افزودن فرمان/جزئیات خام وقتی موجود باشد).agents.list[].toolProgressDetailمختص هر عامل این پیشفرض را بازنویسی میکند.reasoningDefault: نمایانی reasoning پیشفرض برای عاملها. مقادیر:"off"،"on"،"stream".agents.list[].reasoningDefaultمختص هر عامل این پیشفرض را بازنویسی میکند. پیشفرضهای reasoning پیکربندیشده فقط برای مالکان، فرستندگان مجاز، یا زمینههای Gateway مدیر-اپراتور اعمال میشوند، آن هم وقتی هیچ بازنویسی reasoning در سطح پیام یا نشست تنظیم نشده باشد.elevatedDefault: سطح خروجی elevated پیشفرض برای عاملها. مقادیر:"off"،"on"،"ask"،"full". پیشفرض:"on".model.primary: قالبprovider/model(مثلاًopenai/gpt-5.5برای دسترسی با کلید API OpenAI یا Codex OAuth). اگر ارائهدهنده را حذف کنید، OpenClaw ابتدا یک نام مستعار را امتحان میکند، سپس یک مطابقت یکتای ارائهدهنده پیکربندیشده برای همان شناسه دقیق مدل، و فقط پس از آن به ارائهدهنده پیشفرض پیکربندیشده برمیگردد (رفتار سازگاری منسوخ، بنابراینprovider/modelصریح را ترجیح دهید). اگر آن ارائهدهنده دیگر مدل پیشفرض پیکربندیشده را عرضه نکند، OpenClaw بهجای نمایش پیشفرض کهنه ارائهدهنده حذفشده، به نخستین ارائهدهنده/مدل پیکربندیشده برمیگردد.models: کاتالوگ مدل پیکربندیشده و allowlist برای/model. هر ورودی میتواند شاملalias(میانبر) وparams(مختص ارائهدهنده، برای مثالtemperature،maxTokens،cacheRetention،context1m،responsesServerCompaction،responsesCompactThreshold، مسیریابی OpenRouterprovider،chat_template_kwargs،extra_body/extraBody) باشد.- از ورودیهای
provider/*مانند"openai/*": {}یا"vllm/*": {}استفاده کنید تا همه مدلهای کشفشده برای ارائهدهندگان منتخب را بدون فهرستکردن دستی هر شناسه مدل نشان دهید. - وقتی هر مدل کشفشده پویا برای آن ارائهدهنده باید از runtime یکسانی استفاده کند،
agentRuntimeرا به یک ورودیprovider/*اضافه کنید. سیاست runtime دقیقprovider/modelهمچنان بر wildcard مقدم است. - ویرایشهای ایمن: برای افزودن ورودیها از
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(شناسه عامل مطابق) بر اساس کلید بازنویسی میکند. برای جزئیات، Prompt Caching را ببینید. models.providers.openrouter.params.provider: سیاست پیشفرض مسیریابی ارائهدهنده در سراسر OpenRouter. OpenClaw این را به شیءproviderدرخواست OpenRouter ارسال میکند؛agents.defaults.models["openrouter/<model>"].params.providerمختص هر مدل و پارامترهای عامل بر اساس کلید بازنویسی میکنند. مسیریابی ارائهدهنده OpenRouter را ببینید.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 و Nemotron بهجای نردبان effort چندسطحی، انتخابهای دودویی/think(off،on) ارائه میکنند.compat.thinkingFormat: سبک payload thinking سازگار با OpenAI. برایreasoning.enabledبه سبک Together از"together"، برایenable_thinkingسطح بالای سبک Qwen از"qwen"، یا برایchat_template_kwargs.enable_thinkingروی backendهای خانواده Qwen که از kwargs سطح درخواست chat-template پشتیبانی میکنند، مانند vLLM، از"qwen-chat-template"استفاده کنید. OpenClaw thinking غیرفعال را بهfalseو thinking فعال را بهtrueنگاشت میکند، و مدلهای پیکربندیشده vLLM Qwen برای این قالبها انتخابهای دودویی/thinkارائه میکنند.compat.supportedReasoningEfforts: فهرست effortهای reasoning سازگار با OpenAI برای هر مدل. برای endpointهای سفارشی که واقعاً آن را میپذیرند،"xhigh"را اضافه کنید؛ سپس OpenClaw برای آن ارائهدهنده/مدل پیکربندیشده،/think xhighرا در منوهای فرمان، ردیفهای نشست Gateway، اعتبارسنجی patch نشست، اعتبارسنجی CLI عامل، و اعتبارسنجیllm-taskنمایش میدهد. وقتی backend برای یک سطح کانونی مقدار مختص ارائهدهنده میخواهد، ازcompat.reasoningEffortMapاستفاده کنید.params.preserveThinking: opt-in مختص Z.AI برای thinking حفظشده. وقتی فعال باشد و thinking روشن باشد، OpenClawthinking.clear_thinking: falseرا ارسال میکند وreasoning_contentقبلی را بازپخش میکند؛ thinking و thinking حفظشده Z.AI را ببینید.localService: مدیر فرایند اختیاری در سطح ارائهدهنده برای سرورهای مدل محلی/خودمیزبان. وقتی مدل انتخابشده به آن ارائهدهنده تعلق داشته باشد، OpenClawhealthUrl(یاbaseUrl + "/models") را probe میکند، اگر endpoint پایین باشدcommandرا باargsشروع میکند، تاreadyTimeoutMsمنتظر میماند، سپس درخواست مدل را ارسال میکند.commandباید یک مسیر مطلق باشد.idleStopMs: 0فرایند را تا خروج OpenClaw زنده نگه میدارد؛ مقدار مثبت، فرایندی را که OpenClaw ایجاد کرده پس از آن تعداد میلیثانیه بیکاری متوقف میکند. سرویسهای مدل محلی را ببینید.- سیاست runtime به ارائهدهندگان یا مدلها تعلق دارد، نه به
agents.defaults. برای قواعد سراسر ارائهدهنده ازmodels.providers.<provider>.agentRuntimeیا برای قواعد مختص مدل ازagents.defaults.models["provider/model"].agentRuntime/agents.list[].models["provider/model"].agentRuntimeاستفاده کنید. مدلهای عامل OpenAI روی ارائهدهنده رسمی OpenAI بهطور پیشفرض Codex را انتخاب میکنند. - نویسندههای پیکربندی که این فیلدها را تغییر میدهند (برای مثال
/models set،/models set-image، و فرمانهای افزودن/حذف fallback) فرم شیء کانونی را ذخیره میکنند و در صورت امکان فهرستهای fallback موجود را حفظ میکنند. maxConcurrent: حداکثر اجرای موازی عاملها در میان نشستها (هر نشست همچنان سریالی است). پیشفرض: ۴.
سیاست runtime
{ models: { providers: { openai: { agentRuntime: { id: "codex" }, }, }, }, agents: { defaults: { model: "openai/gpt-5.5", models: { "anthropic/claude-opus-4-8": { agentRuntime: { id: "claude-cli" }, }, "vllm/*": { agentRuntime: { id: "openclaw" }, }, }, }, },}id:"auto"،"openclaw"، شناسهٔ یک harness ثبتشدهٔ Plugin، یا نام مستعار پشتیبانیشدهٔ backend در CLI. Plugin همراه Codex مقدارcodexرا ثبت میکند؛ Plugin همراه Anthropic backend CLI با نامclaude-cliرا فراهم میکند.id: "auto"به harnessهای ثبتشدهٔ Plugin اجازه میدهد turnهای پشتیبانیشده را claim کنند و وقتی هیچ harnessی مطابق نباشد از OpenClaw استفاده میکند. runtime صریح Plugin مانندid: "codex"به همان harness نیاز دارد و اگر در دسترس نباشد یا شکست بخورد fail closed میشود.id: "pi"فقط بهعنوان نام مستعار منسوخ برایopenclawپذیرفته میشود تا configهای منتشرشده از v2026.5.22 و قبلتر حفظ شوند. config جدید باید ازopenclawاستفاده کند.- تقدم runtime ابتدا policy دقیق model است (
agents.list[].models["provider/model"]،agents.defaults.models["provider/model"]، یاmodels.providers.<provider>.models[])، سپسagents.list[]/agents.defaults.models["provider/*"]، سپس policy سراسری provider درmodels.providers.<provider>.agentRuntime. - کلیدهای runtime در سطح کل agent legacy هستند.
agents.defaults.agentRuntime،agents.list[].agentRuntime، pinهای runtime در session، وOPENCLAW_AGENT_RUNTIMEدر انتخاب runtime نادیده گرفته میشوند. برای حذف مقدارهای stale،openclaw doctor --fixرا اجرا کنید. - modelهای agent مربوط به OpenAI بهصورت پیشفرض از harness Codex استفاده میکنند؛ وقتی میخواهید این موضوع را صریح کنید، provider/model
agentRuntime.id: "codex"همچنان معتبر است. - برای استقرارهای Claude CLI،
model: "anthropic/claude-opus-4-8"بههمراهagentRuntime.id: "claude-cli"محدود به model ترجیح داده میشود. refهای legacy model مثلclaude-cli/claude-opus-4-7برای سازگاری همچنان کار میکنند، اما config جدید باید انتخاب provider/model را canonical نگه دارد و backend اجرا را در policy runtime مربوط به provider/model قرار دهد. - این فقط اجرای turnهای agent متنی را کنترل میکند. تولید رسانه، vision، PDF، موسیقی، ویدئو، و TTS همچنان از تنظیمات provider/model خودشان استفاده میکنند.
میانبرهای نام مستعار داخلی (فقط وقتی اعمال میشوند که model در agents.defaults.models باشد):
| نام مستعار | Model |
|---|---|
opus |
anthropic/claude-opus-4-8 |
sonnet |
anthropic/claude-sonnet-4-6 |
gpt |
openai/gpt-5.4 |
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 |
نامهای مستعار پیکربندیشدهٔ شما همیشه بر پیشفرضها اولویت دارند.
modelهای Z.AI GLM-4.x بهصورت خودکار حالت thinking را فعال میکنند، مگر اینکه --thinking off را تنظیم کنید یا خودتان agents.defaults.models["zai/<model>"].params.thinking را تعریف کنید.
modelهای Z.AI بهصورت پیشفرض برای streaming فراخوانی tool، tool_stream را فعال میکنند. برای غیرفعالکردن آن، agents.defaults.models["zai/<model>"].params.tool_stream را روی false تنظیم کنید.
Anthropic Claude Opus 4.8 در OpenClaw بهصورت پیشفرض thinking را خاموش نگه میدارد؛ وقتی adaptive thinking صریحاً فعال شود، پیشفرض effort تحت مالکیت provider در Anthropic مقدار high است. modelهای Claude 4.6 وقتی سطح thinking صریحی تنظیم نشده باشد، بهصورت پیشفرض adaptive هستند.
agents.defaults.cliBackends
backendهای اختیاری CLI برای اجرای fallback فقط متنی (بدون فراخوانی tool). بهعنوان پشتیبان هنگام شکست providerهای API مفید است.
{ agents: { defaults: { cliBackends: { "claude-cli": { command: "/opt/homebrew/bin/claude", }, "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", }, }, }, },}- backendهای CLI متنمحور هستند؛ toolها همیشه غیرفعالاند.
- وقتی
sessionArgتنظیم شده باشد، sessionها پشتیبانی میشوند. - وقتی
imageArgمسیرهای فایل را بپذیرد، pass-through تصویر پشتیبانی میشود. reseedFromRawTranscriptWhenUncompacted: trueبه یک backend اجازه میدهد sessionهای امنِ نامعتبرشده را از tail محدود transcript خام OpenClaw، پیش از آنکه نخستین خلاصهٔ Compaction وجود داشته باشد، بازیابی کند. تغییرهای profile احراز هویت یا credential-epoch همچنان هرگز raw-reseed نمیشوند.
agents.defaults.promptOverlays
overlayهای prompt مستقل از provider که بر اساس خانوادهٔ model روی سطحهای prompt مونتاژشده توسط OpenClaw اعمال میشوند. شناسههای model خانوادهٔ GPT-5 قرارداد رفتاری مشترک را در مسیرهای OpenClaw/provider دریافت میکنند؛ personality فقط لایهٔ سبک تعامل دوستانه را کنترل میکند. مسیرهای app-server بومی Codex بهجای این overlay مربوط به OpenClaw GPT-5، دستورالعملهای پایه/model تحت مالکیت Codex را نگه میدارند، و OpenClaw personality داخلی Codex را برای threadهای بومی غیرفعال میکند.
{ agents: { defaults: { promptOverlays: { gpt5: { personality: "friendly", // friendly | on | off }, }, }, },}"friendly"(پیشفرض) و"on"لایهٔ سبک تعامل دوستانه را فعال میکنند."off"فقط لایهٔ دوستانه را غیرفعال میکند؛ قرارداد رفتاری برچسبخوردهٔ GPT-5 همچنان فعال میماند.- legacy
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 را از system prompt حذف میکند و تزریقHEARTBEAT.mdبه context bootstrap را رد میکند. پیشفرض:true.suppressToolErrorWarnings: وقتی true باشد، payloadهای هشدار خطای tool را هنگام اجرای heartbeat سرکوب میکند.timeoutSeconds: بیشینهٔ زمان مجاز بر حسب ثانیه برای یک turn agent مربوط به heartbeat پیش از abort شدن. اگر تنظیم نشود، وقتیagents.defaults.timeoutSecondsتنظیم شده باشد از آن استفاده میشود، وگرنه cadence مربوط به heartbeat با سقف 600 ثانیه بهکار میرود.directPolicy: policy تحویل مستقیم/DM.allow(پیشفرض) تحویل به target مستقیم را مجاز میکند.blockتحویل به target مستقیم را سرکوب میکند وreason=dm-blockedمنتشر میکند.lightContext: وقتی true باشد، اجرای heartbeat از context سبک bootstrap استفاده میکند و از فایلهای bootstrap workspace فقطHEARTBEAT.mdرا نگه میدارد.isolatedSession: وقتی true باشد، هر heartbeat در یک session تازه و بدون تاریخچهٔ گفتوگوی قبلی اجرا میشود. همان الگوی isolation مانند cronsessionTarget: "isolated". هزینهٔ token هر heartbeat را از حدود ~100K به حدود ~2-5K token کاهش میدهد.skipWhenBusy: وقتی true باشد، اجرای heartbeat روی laneهای مشغول اضافی آن agent به تعویق میافتد: subagent خود آن با کلید session یا کار command تودرتو. laneهای Cron همیشه heartbeatها را به تعویق میاندازند، حتی بدون این flag.- برای هر agent:
agents.list[].heartbeatرا تنظیم کنید. وقتی هر agent مقدارheartbeatرا تعریف کند، فقط همان agentها heartbeat اجرا میکنند. - Heartbeatها turnهای کامل agent را اجرا میکنند — بازههای کوتاهتر tokenهای بیشتری مصرف میکنند.
agents.defaults.compaction
{ agents: { defaults: { compaction: { mode: "safeguard", // default | safeguard provider: "my-provider", // id of a registered compaction provider plugin (optional) timeoutSeconds: 180, 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 tool-loop pressure check postCompactionSections: ["Session Startup", "Red Lines"], // opt in to AGENTS.md section 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 آن را متوقف کند. پیشفرض:180.keepRecentTokens: بودجهی نقطهی برش عامل برای نگهداشتن دنبالهی اخیر رونوشت بهصورت کلمهبهکلمه. دستور دستی/compactوقتی صریحا تنظیم شده باشد به این مقدار احترام میگذارد؛ در غیر این صورت Compaction دستی یک نقطهی وارسی سخت است.identifierPolicy: strict(پیشفرض)،off، یاcustom. strictهنگام خلاصهسازی Compaction راهنمای داخلی حفظ شناسههای مات را در ابتدا اضافه میکند.identifierInstructions: متن سفارشی اختیاری برای حفظ شناسهها که وقتیidentifierPolicy=customباشد استفاده میشود.qualityGuard: بررسیهای تلاش دوباره هنگام خروجی بدشکل برای خلاصههای safeguard. در حالت safeguard بهطور پیشفرض فعال است؛ برای رد کردن ممیزی،enabled: falseرا تنظیم کنید.midTurnPrecheck: بررسی اختیاری فشار چرخهی ابزار. وقتیenabled: trueباشد، OpenClaw پس از افزودهشدن نتایج ابزار و پیش از فراخوانی مدل بعدی، فشار زمینه را بررسی میکند. اگر زمینه دیگر جا نشود، تلاش جاری را پیش از ارسال پرامپت متوقف میکند و از مسیر بازیابی پیشبررسی موجود برای کوتاهسازی نتایج ابزار یا Compaction و تلاش دوباره استفاده میکند. با هر دو حالت Compaction یعنیdefaultوsafeguardکار میکند. پیشفرض: غیرفعال.postCompactionSections: نامهای اختیاری بخشهای H2/H3 در AGENTS.md برای تزریق دوباره پس از Compaction. وقتی تنظیم نشده باشد یا روی[]تنظیم شود، تزریق دوباره غیرفعال است. تنظیم صریح["Session Startup", "Red Lines"]آن جفت را فعال میکند و fallback قدیمیEvery Session/Safetyرا حفظ میکند. این را فقط زمانی فعال کنید که زمینهی اضافی ارزش خطر تکرار راهنمای پروژهای را داشته باشد که پیشتر در خلاصهی Compaction ثبت شده است.model: provider/model-idاختیاری یا نام مستعار ساده ازagents.defaults.modelsفقط برای خلاصهسازی Compaction. نامهای مستعار ساده پیش از ارسال حل میشوند؛ شناسههای لفظی پیکربندیشدهی مدل هنگام برخورد اولویت خود را حفظ میکنند. وقتی نشست اصلی باید یک مدل را نگه دارد اما خلاصههای Compaction باید روی مدل دیگری اجرا شوند، از این گزینه استفاده کنید؛ وقتی تنظیم نشده باشد، Compaction از مدل اصلی نشست استفاده میکند.maxActiveTranscriptBytes: آستانهی اختیاری بایت (numberیا رشتههایی مانند"20mb") که وقتی JSONL فعال از آستانه عبور کند، پیش از یک اجرا Compaction محلی عادی را فعال میکند. بهtruncateAfterCompactionنیاز دارد تا Compaction موفق بتواند به رونوشت جانشین کوچکتری بچرخد. وقتی تنظیم نشده باشد یا0باشد غیرفعال است.notifyUser: وقتیtrueباشد، هنگام شروع و پایان Compaction اعلانهای کوتاهی برای کاربر میفرستد (برای مثال، "Compacting context..." و "Compaction complete"). برای بیصدا نگهداشتن Compaction، بهطور پیشفرض غیرفعال است.memoryFlush: نوبت عاملی بیصدا پیش از Compaction خودکار برای ذخیرهکردن حافظههای پایدار. وقتی این نوبت نگهداری باید روی یک مدل محلی بماند،modelرا روی یک ارائهدهنده/مدل دقیق مانندollama/qwen3:8bتنظیم کنید؛ این override زنجیرهی fallback نشست فعال را به ارث نمیبرد. وقتی workspace فقطخواندنی باشد رد میشود.
agents.defaults.runRetries
مرزهای تکرار تلاش دوبارهی چرخهی اجرای بیرونی برای runtime عامل جاسازیشده، برای جلوگیری از چرخههای اجرای بیپایان هنگام بازیابی از شکست. توجه کنید که این تنظیم در حال حاضر فقط برای 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 behavior
mode: "cache-ttl"گذرهای هرس را فعال میکند.ttlکنترل میکند که هرس هر چند وقت یکبار میتواند دوباره اجرا شود (پس از آخرین لمس cache).- هرس ابتدا نتایج ابزار بیشازحد بزرگ را نرمکوتاه میکند، سپس در صورت نیاز نتایج قدیمیتر ابزار را سختپاک میکند.
softTrimRatioوhardClearRatioمقدارهایی از0.0تا1.0را میپذیرند؛ اعتبارسنجی پیکربندی مقدارهای بیرون از این بازه را رد میکند.
کوتاهسازی نرم ابتدا + انتها را نگه میدارد و ... را در میانه درج میکند.
پاکسازی سخت کل نتیجهی ابزار را با placeholder جایگزین میکند.
نکتهها:
- بلوکهای تصویر هرگز کوتاه/پاک نمیشوند.
- نسبتها بر پایهی نویسه هستند (تقریبی)، نه شمارش دقیق توکن.
- اگر پیامهای دستیار کمتر از
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صریح نیاز دارند. - overrideهای کانال:
channels.<channel>.blockStreamingCoalesce(و گونههای مخصوص هر حساب). Signal/Slack/Discord/Google Chat بهطور پیشفرضminChars: 1500دارند. humanDelay: مکث تصادفی بین پاسخهای بلوکی.natural= 800 تا 2500ms. override برای هر عامل:agents.list[].humanDelay.
برای جزئیات رفتار و تکهبندی، جریانسازی را ببینید.
نشانگرهای تایپ
{ agents: { defaults: { typingMode: "instant", // never | instant | thinking | message typingIntervalSeconds: 6, }, },}- پیشفرضها:
instantبرای گفتوگوهای مستقیم/اشارهها،messageبرای گفتوگوهای گروهی بدون اشاره. - overrideهای هر نشست:
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"], }, }, },}Sandbox details
backend:
docker: runtime محلی Docker (پیشفرض)ssh: runtime راهدور عمومی با پشتوانهی SSHopenshell: runtime OpenShell
وقتی backend: "openshell" انتخاب شود، تنظیمات مخصوص runtime به
plugins.entries.openshell.config منتقل میشوند.
پیکربندی backend SSH:
target: هدف SSH در قالبuser@host[:port]command: فرمان کلاینت SSH (پیشفرض:ssh)workspaceRoot: ریشهی مطلق راهدور که برای workspaceهای هر scope استفاده میشودidentityFile/certificateFile/knownHostsFile: فایلهای محلی موجود که به OpenSSH پاس داده میشوندidentityData/certificateData/knownHostsData: محتوای درونخطی یا SecretRefs که OpenClaw هنگام runtime به فایلهای موقت تبدیل میکندstrictHostKeyChecking/updateHostKeys: پیچهای سیاست کلید میزبان OpenSSH
اولویت احراز هویت SSH:
identityDataبرidentityFileغلبه داردcertificateDataبرcertificateFileغلبه داردknownHostsDataبرknownHostsFileغلبه دارد- مقدارهای
*Dataبا پشتوانهی SecretRef پیش از شروع نشست sandbox از snapshot فعال runtime اسرار حل میشوند
رفتار backend SSH:
- workspace راهدور را یکبار پس از ایجاد یا ایجاد دوباره seed میکند
- سپس workspace راهدور SSH را canonical نگه میدارد
exec، ابزارهای فایل، و مسیرهای رسانه را از طریق SSH مسیریابی میکند- تغییرهای راهدور را بهطور خودکار به میزبان همگام نمیکند
- از کانتینرهای مرورگر sandbox پشتیبانی نمیکند
دسترسی workspace:
none: workspace سندباکس برای هر scope زیر~/.openclaw/sandboxesro: workspace سندباکس در/workspace، workspace عامل بهصورت فقطخواندنی در/agentmount شده استrw: workspace عامل بهصورت خواندنی/نوشتنی در/workspacemount شده است
scope:
session: کانتینر + workspace برای هر نشستagent: یک کانتینر + workspace برای هر عامل (پیشفرض)shared: کانتینر و workspace مشترک (بدون جداسازی بین نشستها)
پیکربندی 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: پیش از اجرا، محیط راهدور را از محیط محلی مقداردهی اولیه میکند و پس از اجرا دوباره همگامسازی میکند؛ فضای کاری محلی مرجع اصلی باقی میماندremote: هنگام ایجاد sandbox، محیط راهدور را یکبار مقداردهی اولیه میکند، سپس فضای کاری راهدور را مرجع اصلی نگه میدارد
در حالت remote، ویرایشهای محلی میزبان که خارج از OpenClaw انجام میشوند، پس از مرحله مقداردهی اولیه بهطور خودکار در sandbox همگامسازی نمیشوند.
انتقال از طریق SSH به sandbox مربوط به OpenShell انجام میشود، اما Plugin مالک چرخه عمر sandbox و همگامسازی اختیاری mirror است.
setupCommand یکبار پس از ایجاد کانتینر اجرا میشود (از طریق sh -lc). به خروجی شبکه، root قابل نوشتن، و کاربر root نیاز دارد.
کانتینرها بهطور پیشفرض network: "none" دارند — اگر عامل به دسترسی خروجی نیاز دارد، آن را روی "bridge" (یا یک شبکه bridge سفارشی) تنظیم کنید.
"host" مسدود است. "container:<id>" نیز بهطور پیشفرض مسدود است، مگر اینکه بهصراحت
sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true را تنظیم کنید (حالت اضطراری).
نوبتهای سرور برنامه Codex در یک sandbox فعال OpenClaw از همین تنظیم خروجی برای دسترسی شبکه بومی حالت کد خود استفاده میکنند.
پیوستهای ورودی در media/inbound/* داخل فضای کاری فعال آمادهسازی میشوند.
docker.binds دایرکتوریهای میزبان اضافی را mount میکند؛ bindهای سراسری و مختص عامل با هم ادغام میشوند.
مرورگر sandboxشده (sandbox.browser.enabled): Chromium + CDP در یک کانتینر. نشانی noVNC به system prompt تزریق میشود. به browser.enabled در openclaw.json نیاز ندارد.
دسترسی ناظر noVNC بهطور پیشفرض از احراز هویت VNC استفاده میکند و OpenClaw یک URL دارای توکن کوتاهعمر صادر میکند (بهجای افشای گذرواژه در URL مشترک).
allowHostControl: false(پیشفرض) نشستهای sandboxشده را از هدفگیری مرورگر میزبان بازمیدارد.networkبهطور پیشفرضopenclaw-sandbox-browserاست (شبکه bridge اختصاصی). فقط زمانی آن را رویbridgeتنظیم کنید که بهصراحت اتصال bridge سراسری میخواهید.cdpSourceRangeبهصورت اختیاری ورود CDP را در لبه کانتینر به یک بازه CIDR محدود میکند (برای مثال172.21.0.1/32).sandbox.browser.bindsدایرکتوریهای میزبان اضافی را فقط داخل کانتینر مرورگر sandbox mount میکند. وقتی تنظیم شود (حتی[])، برای کانتینر مرورگر جایگزین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 کردن مرورگر و sandbox.docker.binds فقط مخصوص Docker هستند.
ساخت تصویرها (از یک checkout منبع):
scripts/sandbox-setup.sh # main sandbox imagescripts/sandbox-browser-setup.sh # optional browser imageبرای نصبهای npm بدون checkout منبع، برای دستورهای درونخطی docker build به sandbox کردن § تصویرها و راهاندازی مراجعه کنید.
agents.list (بازنویسیهای مختص عامل)
از agents.list[].tts استفاده کنید تا یک عامل ارائهدهنده TTS، صدا، مدل،
سبک، یا حالت auto-TTS مخصوص خود را داشته باشد. بلوک عامل روی
messages.tts سراسری بهصورت deep-merge اعمال میشود، بنابراین اعتبارنامههای مشترک میتوانند در یک مکان بمانند، در حالی که عاملهای جداگانه فقط فیلدهای صدا یا ارائهدهندهای را که نیاز دارند بازنویسی میکنند. بازنویسی عامل فعال برای پاسخهای گفتاری خودکار، /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: { speakerVoiceId: "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: فرم رشتهای یک مدل اصلی سختگیرانه مختص عامل را بدون fallback مدل تنظیم میکند؛ فرم شیء{ primary }نیز سختگیرانه است مگر اینکهfallbacksرا اضافه کنید. برای فعال کردن fallback برای آن عامل از{ primary, fallbacks: [...] }استفاده کنید، یا برای صریح کردن رفتار سختگیرانه از{ primary, fallbacks: [] }استفاده کنید. کارهای Cron که فقطprimaryرا بازنویسی میکنند، همچنان fallbackهای پیشفرض را به ارث میبرند مگر اینکهfallbacks: []را تنظیم کنید.params: پارامترهای stream مختص عامل که روی ورودی مدل انتخابشده درagents.defaults.modelsادغام میشوند. از این برای بازنویسیهای مختص عامل مانندcacheRetention،temperature، یاmaxTokensبدون تکرار کل کاتالوگ مدل استفاده کنید.tts: بازنویسیهای اختیاری تبدیل متن به گفتار مختص عامل. این بلوک رویmessages.ttsبهصورت deep-merge اعمال میشود، بنابراین اعتبارنامههای مشترک ارائهدهنده و سیاست fallback را درmessages.ttsنگه دارید و اینجا فقط مقادیر مختص شخصیت مانند ارائهدهنده، صدا، مدل، سبک، یا حالت خودکار را تنظیم کنید.skills: فهرست مجاز اختیاری مهارتها برای هر عامل. اگر حذف شود، عامل در صورت تنظیم بودنagents.defaults.skillsآن را به ارث میبرد؛ یک فهرست صریح بهجای ادغام، پیشفرضها را جایگزین میکند، و[]یعنی هیچ Skills وجود ندارد.thinkingDefault: سطح پیشفرض اختیاری تفکر مختص عامل (off | minimal | low | medium | high | xhigh | adaptive | max). وقتی هیچ بازنویسی مختص پیام یا نشست تنظیم نشده باشد،agents.defaults.thinkingDefaultرا برای این عامل بازنویسی میکند. پروفایل ارائهدهنده/مدل انتخابشده تعیین میکند کدام مقادیر معتبر هستند؛ برای Google Gemini، مقدارadaptiveتفکر پویا و تحت مالکیت ارائهدهنده را حفظ میکند (thinkingLevelدر Gemini 3/3.1 حذف میشود،thinkingBudget: -1در Gemini 2.5).reasoningDefault: قابلیت مشاهده reasoning پیشفرض اختیاری مختص عامل (on | off | stream). وقتی هیچ بازنویسی reasoning مختص پیام یا نشست تنظیم نشده باشد،agents.defaults.reasoningDefaultرا برای این عامل بازنویسی میکند.fastModeDefault: پیشفرض اختیاری مختص عامل برای حالت سریع ("auto" | true | false). وقتی هیچ بازنویسی fast-mode مختص پیام یا نشست تنظیم نشده باشد اعمال میشود.models: بازنویسیهای اختیاری کاتالوگ مدل/زمان اجرا مختص عامل که با شناسههای کاملprovider/modelکلیدگذاری شدهاند. برای استثناهای زمان اجرای مختص عامل ازmodels["provider/model"].agentRuntimeاستفاده کنید.runtime: توصیفگر اختیاری زمان اجرای مختص عامل. وقتی عامل باید بهطور پیشفرض از نشستهای harness مربوط به ACP استفاده کند، ازtype: "acp"همراه با پیشفرضهایruntime.acp(agent،backend،mode،cwd) استفاده کنید.identity.avatar: مسیر نسبی به فضای کاری، URL باhttp(s)، یا URI از نوعdata:.- فایلهای تصویری محلی
identity.avatarبا مسیر نسبی به فضای کاری به ۲ مگابایت محدود هستند. URLهایhttp(s)و URIهایdata:با محدودیت اندازه فایل محلی بررسی نمیشوند. identityپیشفرضها را مشتق میکند:ackReactionازemoji، وmentionPatternsازname/emoji.subagents.allowAgents: فهرست مجاز شناسههای عامل پیکربندیشده برای هدفهای صریحsessions_spawn.agentId(["*"]= هر هدف پیکربندیشده؛ پیشفرض: فقط همان عامل). وقتی فراخوانیهای خودهدفگیرagentIdباید مجاز باشند، شناسه درخواستکننده را شامل کنید. ورودیهای منسوخی که پیکربندی عامل آنها حذف شده است، توسطsessions_spawnرد میشوند و ازagents_listحذف میشوند؛ برای پاکسازی آنهاopenclaw doctor --fixرا اجرا کنید، یا اگر آن هدف باید هنگام بهارثبردن پیشفرضها همچنان قابل spawn باشد، یک ورودی حداقلیagents.list[]اضافه کنید.- محافظ ارثبری sandbox: اگر نشست درخواستکننده sandboxشده باشد،
sessions_spawnهدفهایی را که بدون 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 میکند و از ترتیب سطحی route binding بالا استفاده نمیکند.
پروفایلهای دسترسی مختص عامل
Full access (no sandbox)
{agents: { list: [ { id: "personal", workspace: "~/.openclaw/workspace-personal", sandbox: { mode: "off" }, }, ],},}Read-only tools + 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"], }, }, ],},}No filesystem access (messaging only)
{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", ], }, }, ],},}برای جزئیات تقدم، سندباکس و ابزارهای چندعاملی را ببینید.
نشست
{ 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: "enforce", // enforce (default) | warn 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", }, },}Session field details
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زنجیرهسازی پینگپونگ را غیرفعال میکند.sendPolicy: تطبیق بر اساسchannel،chatType(direct|group|channel، با نام مستعار قدیمیdm)،keyPrefix، یاrawKeyPrefix. نخستین رد، برنده است.maintenance: کنترلهای پاکسازی + نگهداری مخزن نشست.mode:enforceپاکسازی را اعمال میکند و پیشفرض است؛warnفقط هشدارها را منتشر میکند.pruneAfter: حد سنی برای ورودیهای کهنه (پیشفرض30d).maxEntries: حداکثر تعداد ورودیها درsessions.json(پیشفرض500). Runtime پاکسازی دستهای را با یک بافر کوچک حد بالای آب برای سقفهای اندازهٔ تولید مینویسد؛openclaw sessions cleanup --enforceسقف را فوراً اعمال میکند.- نشستهای کوتاهعمر پروب اجرای مدل Gateway نگهداری ثابت
24hدارند، اما پاکسازی با فشار کنترل میشود: فقط وقتی فشار نگهداری/سقف ورودی نشست به حد برسد، ردیفهای کهنهٔ پروب اجرای مدل سختگیرانه را حذف میکند. فقط کلیدهای پروب صریح سختگیرانه که باagent:*:explicit:model-run-<uuid>تطبیق دارند واجد شرایطاند؛ نشستهای عادی مستقیم، گروهی، رشته، cron، hook، heartbeat، ACP، و زیرعامل این نگهداری ۲۴ ساعته را به ارث نمیبرند. وقتی پاکسازی اجرای مدل اجرا میشود، پیش از پاکسازی گستردهتر ورودیهای کهنهٔpruneAfterو سقفmaxEntriesاجرا میشود. 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: "followup", // steer | followup | collect | interrupt debounceMs: 500, cap: 20, drop: "summarize", // old | new | summarize byChannel: { whatsapp: "followup", telegram: "followup", }, }, 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، Signal، Telegram، WhatsApp، و iMessage حذف میکند.messages.statusReactions.enabled: واکنشهای وضعیت چرخهٔ عمر را در Slack، Discord، Signal، Telegram، و WhatsApp فعال میکند. در Slack و Discord، تنظیمنشده بودن باعث میشود وقتی واکنشهای تأیید فعال هستند، واکنشهای وضعیت نیز فعال بمانند. در Signal، Telegram، و WhatsApp، آن را صریحاً رویtrueتنظیم کنید تا واکنشهای وضعیت چرخهٔ عمر فعال شوند.messages.statusReactions.emojis: کلیدهای ایموجی چرخهٔ عمر را بازنویسی میکند:queued،thinking،compacting،tool،coding،web،deploy،build،concierge،done،error،stallSoft، وstallHard. Telegram فقط یک مجموعهٔ ثابت واکنش را مجاز میداند، بنابراین ایموجی پیکربندیشدهٔ پشتیبانینشده به نزدیکترین گونهٔ وضعیت پشتیبانیشده برای آن گفتوگو برمیگردد.
debounce ورودی
پیامهای سریع فقطمتنی از همان فرستنده را در یک نوبت عامل واحد دستهبندی میکند. رسانه/پیوستها فوراً تخلیه میشوند. فرمانهای کنترلی debounce را دور میزنند.
TTS (تبدیل متن به گفتار)
{ messages: { tts: { auto: "always", // off | always | inbound | tagged mode: "final", // final | all provider: "elevenlabs", summaryModel: "openai/gpt-5.4-mini", modelOverrides: { enabled: true }, maxTextLength: 4000, timeoutMs: 30000, prefsPath: "~/.openclaw/settings/tts.json", providers: { elevenlabs: { apiKey: "elevenlabs_api_key", baseUrl: "https://api.elevenlabs.io", speakerVoiceId: "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: { speakerVoice: "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", speakerVoice: "alloy", }, }, }, },}autoحالت پیشفرض 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نقطه پایانی TTS مربوط به OpenAI را بازنویسی میکند. ترتیب حل، ابتدا پیکربندی، سپس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: { speakerVoiceId: "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", speakerVoice: "cedar", }, }, instructions: "Speak warmly and keep answers brief.", mode: "realtime", transport: "webrtc", brain: "agent-consult", }, },}- وقتی چند ارائهدهنده Talk پیکربندی شده باشند،
talk.providerباید با یکی از کلیدهای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 در پشت فراخوانیهایopenclaw_agent_consultبیدرنگ Talk در Control UI کنترل میکند. برای حفظ رفتار معمول نشست/مدل، آن را تنظیمنشده بگذارید.consultFastModeبرای مشاورههای بیدرنگ Talk در Control UI، بدون تغییر تنظیم عادی حالت سریع نشست، یک بازنویسی یکباره حالت سریع تنظیم میکند.speechLocaleشناسه منطقهای BCP 47 را که تشخیص گفتار Talk در iOS/macOS استفاده میکند تنظیم میکند. برای استفاده از پیشفرض دستگاه، آن را تنظیمنشده بگذارید.silenceTimeoutMsکنترل میکند حالت Talk پس از سکوت کاربر چه مدت منتظر بماند تا رونوشت را ارسال کند. تنظیمنشده گذاشتن آن، پنجره مکث پیشفرض پلتفرم را نگه میدارد (700 ms on macOS and Android, 900 ms on iOS).realtime.instructionsدستورهای سیستمی روبهروی ارائهدهنده را به اعلان بیدرنگ داخلی OpenClaw اضافه میکند، تا سبک صدا بدون از دست دادن راهنمایی پیشفرضopenclaw_agent_consultقابل پیکربندی باشد.realtime.consultRoutingبازگشت رله Gateway را زمانی کنترل میکند که ارائهدهنده بیدرنگ یک رونوشت نهایی کاربر را بدونopenclaw_agent_consultتولید کند:provider-directپاسخهای مستقیم ارائهدهنده را حفظ میکند، در حالی کهforce-agent-consultدرخواست نهاییشده را از طریق OpenClaw مسیریابی میکند.
مرتبط
- مرجع پیکربندی — همه کلیدهای پیکربندی دیگر
- پیکربندی — کارهای رایج و راهاندازی سریع
- نمونههای پیکربندی