Gateway
پیکربندی — ابزارها و ارائهدهندگان سفارشی
کلیدهای پیکربندی tools.* و راهاندازی ارائهدهنده سفارشی / URL پایه. برای عاملها، کانالها و دیگر کلیدهای پیکربندی سطحبالا، مرجع پیکربندی را ببینید.
ابزارها
پروفایلهای ابزار
tools.profile پیش از tools.allow/tools.deny یک فهرست مجاز پایه تعیین میکند:
| پروفایل | شامل |
|---|---|
minimal |
فقط session_status |
coding |
group:fs، group:runtime، group:web، group:sessions، group:memory، cron، get_goal، create_goal، update_goal، update_plan، ask_user، skill_workshop، image، image_generate، music_generate، video_generate |
messaging |
group:messaging، sessions، sessions_list، sessions_history، sessions_search، conversations_list، conversations_send، conversations_turn، sessions_send، sessions_spawn، sessions_yield، subagents، session_status، ask_user |
full |
بدون محدودیت (همانند حالت تنظیمنشده) |
coding و messaging همچنین بهطور ضمنی bundle-mcp (سرورهای MCP پیکربندیشده) را مجاز میکنند.
گروههای ابزار
| گروه | ابزارها |
|---|---|
group:runtime |
exec، process، code_execution (bash بهعنوان نام مستعار exec پذیرفته میشود) |
group:fs |
read، write، edit، apply_patch |
group:sessions |
sessions، sessions_list، sessions_history، sessions_search، conversations_list، conversations_send، conversations_turn، sessions_send، sessions_spawn، sessions_yield، subagents، session_status، spawn_task، dismiss_task |
group:memory |
memory_search، memory_get |
group:web |
web_search، x_search، web_fetch |
group:ui |
browser، screen، terminal، canvas، show_widget |
group:automation |
heartbeat_respond، cron، gateway |
group:messaging |
message |
group:nodes |
nodes، computer |
group:agents |
agents_list، get_goal، create_goal، update_goal، update_plan، ask_user، skill_workshop |
group:media |
image، image_generate، music_generate، video_generate، tts |
group:openclaw |
همه ابزارهای داخلی بالا بهجز read/write/edit/apply_patch/exec/process/canvas (ابزارهای Plugin را مستثنا میکند) |
group:plugins |
ابزارهای تحت مالکیت Pluginهای بارگذاریشده، شامل سرورهای MCP پیکربندیشده که از طریق bundle-mcp ارائه میشوند |
spawn_task به یک عامل کدنویسی اجازه میدهد بدون آغاز کار، کار پیگیریِ تأییدشدهای را پیشنهاد کند. رابط کنترل، عنوان و خلاصه را بهصورت یک تراشه قابلاقدام نمایش میدهد؛ یک TUI متکی بر Gateway نیز یک درخواست تعاملی معادل نشان میدهد. پذیرش هرکدام، یک نشست تازه در درختکاری مدیریتشده ایجاد میکند و درحالیکه نوبت فعلی ادامه دارد، درخواست کامل را به آنجا میفرستد. dismiss_task پیشنهادی را که همچنان در انتظار است، با استفاده از task_id موقتیِ بازگرداندهشده از spawn_task پس میگیرد.
این ابزارها فقط زمانی ارائه میشوند که سطح اپراتوری آغازکننده بتواند رویدادهای پیشنهاد وظیفه Gateway را دریافت و اجرا کند. نشستهای کانال و نشستهای TUI محلی/تعبیهشده این رویدادها را دریافت نمیکنند؛ انتقالدهندههای کانال پیش از آنکه بتوانند این جریان را با ایمنی ارائه دهند، به یک اقدام وظیفه نوعدار و قابلحمل نیاز دارند. پیشنهادها محلیِ فرایند هستند و با راهاندازی مجدد Gateway ناپدید میشوند. هر دو ابزار در پروفایل coding و group:sessions باقی میمانند، بنابراین خطمشی عادی tools.allow و tools.deny هنگامی که سطح از آنها پشتیبانی کند، آنها را بهطور خودکار پیکربندی میکند.
ابزارهای MCP و Plugin درون خطمشی ابزار سندباکس
سرورهای MCP پیکربندیشده، بهعنوان ابزارهای تحت مالکیت Plugin و با شناسه Plugin برابر با bundle-mcp ارائه میشوند. پروفایلهای عادی ابزار میتوانند آنها را مجاز کنند، اما tools.sandbox.tools یک دروازه اضافی برای نشستهای سندباکسشده است. اگر حالت سندباکس "all" یا "non-main" است، هنگامی که ابزارهای MCP/Plugin باید قابلمشاهده باشند، یکی از ورودیهای زیر را در فهرست مجاز ابزارهای سندباکس قرار دهید:
bundle-mcpبرای سرورهای MCP مدیریتشده توسط OpenClaw ازmcp.servers- شناسه Plugin برای یک Plugin بومی مشخص
group:pluginsبرای همه ابزارهای تحت مالکیت Plugin بارگذاریشده- نام دقیق ابزارهای سرور MCP یا الگوهای فراگیر سرور مانند
outlook__send_mailیاoutlook__*، هنگامی که فقط یک سرور را میخواهید
الگوهای فراگیر سرور از پیشوند سرور MCP ایمن برای ارائهدهنده استفاده میکنند، نه لزوماً کلید خام mcp.servers. نویسههای غیر [A-Za-z0-9_-] به - تبدیل میشوند، نامهایی که با حرف شروع نمیشوند پیشوند mcp- میگیرند، و پیشوندهای بلند یا تکراری ممکن است کوتاه شوند یا پسوند بگیرند؛ برای مثال، mcp.servers["Outlook Graph"] از الگویی مانند outlook-graph__* استفاده میکند.
{ agents: { defaults: { sandbox: { mode: "all" } } }, mcp: { servers: { outlook: { command: "node", args: ["./outlook-mcp.js"] }, }, }, tools: { sandbox: { tools: { alsoAllow: ["web_search", "web_fetch", "memory_search", "memory_get", "bundle-mcp"], }, }, },}بدون آن ورودی لایه سندباکس، سرور MCP همچنان میتواند با موفقیت بارگذاری شود، درحالیکه ابزارهایش پیش از درخواست ارائهدهنده فیلتر میشوند. برای شناسایی این وضعیت در سرورهای مدیریتشده توسط OpenClaw در mcp.servers، از openclaw doctor استفاده کنید. سرورهای MCP بارگذاریشده از مانیفستهای Plugin همراه یا .mcp.json مربوط به Claude از همان دروازه سندباکس استفاده میکنند، اما این ابزار تشخیصی هنوز آن منابع را فهرست نمیکند؛ اگر ابزارهای آنها در نوبتهای سندباکسشده ناپدید شدند، از همان ورودیهای فهرست مجاز استفاده کنید.
tools.codeMode
tools.codeMode سطح عمومی حالت کد OpenClaw را فعال میکند. هنگام فعالبودن
برای اجرایی دارای ابزار، ابزارهای عادی OpenClaw پشت پل کاتالوگ درونسندباکس tools.*
قرار میگیرند و ابزارهای MCP از طریق فضای نام تولیدشده MCP
در دسترس هستند. مدل معمولاً exec و wait را میبیند؛ ابزارهایی مانند computer
که نتایج ساختاریافته آنها نمیتواند از پل صرفاً JSON عبور کند، مستقیم باقی میمانند.
{ tools: { codeMode: { enabled: true, }, },}شکل کوتاه نیز پذیرفته میشود:
{ tools: { codeMode: true },}اعلانهای MCP در حالت کد از طریق سطح فایل API مجازیِ فقطخواندنی ارائه میشوند.
کد مهمان میتواند برای بررسی امضاهای بهسبک TypeScript پیش از
فراخوانی MCP.<server>.<tool>()، توابع API.list("mcp") و
API.read("mcp/<server>.d.ts") را فراخوانی کند. برای قرارداد زمان اجرا، محدودیتها و
مراحل اشکالزدایی، حالت کد را ببینید.
tools.allow / tools.deny
خطمشی سراسری مجاز/ممنوعسازی ابزار (ممنوعسازی اولویت دارد). به بزرگی و کوچکی حروف حساس نیست و از نویسههای عام * پشتیبانی میکند. حتی هنگامی که سندباکس Docker خاموش است اعمال میشود.
{ tools: { deny: ["browser", "canvas"] },}write و apply_patch شناسههای ابزار جداگانهای هستند. allow: ["write"] همچنین apply_patch را برای مدلهای سازگار فعال میکند، اما deny: ["write"]، apply_patch را ممنوع نمیکند. برای مسدودکردن همه تغییرات فایل، group:fs را ممنوع کنید یا هر ابزار تغییردهنده را صریحاً فهرست کنید:
{ tools: { deny: ["write", "edit", "apply_patch"] },}tools.byProvider
ابزارها را برای ارائهدهندگان یا مدلهای مشخص بیشتر محدود میکند. ترتیب: پروفایل پایه ← پروفایل ارائهدهنده ← مجاز/ممنوع.
{ tools: { profile: "coding", byProvider: { "google-antigravity": { profile: "minimal" }, "openai/gpt-5.4": { allow: ["group:fs", "sessions_list"] }, }, },}tools.toolsBySender
ابزارها را برای درخواستکنندهای که نوبت جاری را آغاز کرده است محدود میکند. این سازوکار، یک دفاع چندلایه افزون بر کنترل دسترسی کانال است؛ مقادیر فرستنده باید از آداپتور کانال دریافت شوند، نه از متن پیام. این سازوکار سایر محتوای موجود در پرامپت مدل را احراز هویت نمیکند؛ به کنترلهای محدود به درخواستکننده و زمینه پرامپت مراجعه کنید.
{ tools: { toolsBySender: { "channel:discord:1234567890123": { alsoAllow: ["group:fs"] }, "id:guest-user-id": { deny: ["group:runtime", "group:fs"] }, "*": { deny: ["exec", "process", "write", "edit", "apply_patch"] }, }, },}کلیدها از پیشوندهای صریح استفاده میکنند: channel:<channelId>:<senderId>، id:<senderId>، e164:<phone>، username:<handle>، name:<displayName> یا "*". شناسههای کانال، شناسههای متعارف OpenClaw هستند؛ نامهای مستعاری مانند teams به msteams نرمالسازی میشوند. کلیدهای قدیمیِ بدون پیشوند فقط بهعنوان id: پذیرفته میشوند. ترتیب تطبیق عبارت است از کانال+شناسه، شناسه، e164، نام کاربری، نام و سپس نویسه عام.
تنظیم هر عامل در agents.entries.*.tools.toolsBySender، در صورت تطبیق، حتی با یک سیاست خالی {}، تطبیق سراسری فرستنده را لغو میکند.
tools.elevated
دسترسی اجرای ارتقایافته در خارج از محیط ایزوله را کنترل میکند:
{ tools: { elevated: { enabled: true, allowFrom: { whatsapp: ["+15555550123"], discord: ["1234567890123", "987654321098765432"], }, }, },}- تنظیم مختص هر عامل (
agents.entries.*.tools.elevated) فقط میتواند محدودیت بیشتری اعمال کند. /elevated on|off|ask|fullوضعیت را برای هر نشست ذخیره میکند؛ دستورالعملهای درونخطی فقط بر یک پیام اعمال میشوند.execارتقایافته، محیط ایزوله را دور میزند و از مسیر خروج پیکربندیشده استفاده میکند (بهطور پیشفرضgateway، یا هنگامی که هدف اجراnodeباشد،node).
tools.exec
{ tools: { exec: { backgroundMs: 10000, timeoutSec: 1800, cleanupMs: 1800000, approvalRunningNoticeMs: 10000, notifyOnExit: true, notifyOnExitEmptySuccess: false, commandHighlighting: false, applyPatch: { enabled: true, allowModels: ["gpt-5.6-sol"], }, }, },}مقادیر نمایشدادهشده بهجز applyPatch.allowModels پیشفرض هستند (که بهطور پیشفرض خالی/تنظیمنشده است و یعنی هر مدل سازگاری میتواند از apply_patch استفاده کند). هنگامی که اجرای مبتنی بر تأیید طولانی شود، approvalRunningNoticeMs اعلان در حال اجرا منتشر میکند؛ 0 آن را غیرفعال میکند.
tools.loopDetection
بررسیهای ایمنی حلقه ابزار بهطور پیشفرض غیرفعال هستند. برای فعالکردن تشخیص، enabled: true را تنظیم کنید. تنظیمات را میتوان بهصورت سراسری در tools.loopDetection تعریف کرد و برای هر عامل در agents.entries.*.tools.loopDetection لغو کرد.
{ tools: { loopDetection: { enabled: true, }, },}tools.web
{ tools: { web: { search: { enabled: true, apiKey: "brave_api_key", // یا متغیر محیطی BRAVE_API_KEY (ارائهدهنده Brave) maxResults: 5, timeoutSeconds: 30, cacheTtlMinutes: 15, }, fetch: { enabled: true, provider: "firecrawl", // اختیاری؛ برای تشخیص خودکار حذف کنید maxChars: 20000, maxCharsCap: 20000, maxResponseBytes: 750000, timeoutSeconds: 30, cacheTtlMinutes: 15, maxRedirects: 3, readability: true, userAgent: "custom-ua", }, }, },}مقادیر نمایشدادهشده بهجز provider و userAgent پیشفرض هستند. maxResponseBytes به بازه 32000–10000000 محدود میشود؛ maxChars به maxCharsCap محدود میشود (برای مجازکردن پاسخهای بزرگتر، maxCharsCap را افزایش دهید).
tools.media
درک رسانههای ورودی (تصویر/صدا/ویدئو) را پیکربندی میکند:
{ tools: { media: { concurrency: 2, models: [ { provider: "openai", model: "gpt-4o-mini-transcribe", capabilities: ["audio"] }, { type: "cli", command: "whisper", args: ["--model", "base", "{{AttachmentPath}}"], capabilities: ["audio"], }, { provider: "ollama", model: "gemma4:26b", capabilities: ["image"] }, { provider: "google", model: "gemini-3-flash-preview", capabilities: ["video"] }, ], audio: { enabled: true, preferredModel: "openai/gpt-4o-mini-transcribe" }, image: { enabled: true, preferredModel: "ollama/gemma4:26b" }, video: { enabled: true }, }, },}tools.media.models تنها فهرست مدل پیکربندیشده است. هر ورودی قابلیتهایی را که مدیریت میکند مشخص میسازد. گزینشگر اختیاری preferredModel، مقادیر provider/model، یک شناسه مدل، provider:<id> برای ورودیهای پیشفرض ارائهدهنده، یا cli:command را میپذیرد؛ ورودیهای منطبق به ابتدای ترتیب جایگزینهای آن قابلیت منتقل میشوند. پرامپتها، محدودیتها، تنظیمات درخواست، دامنه، سیاست پیوست و بازتاب رونوشت صوتیِ مختص هر قابلیت، برای مدلهای پیکربندیشده و مدلهای شناساییشده بهصورت خودکار در حالت پیشفرض باقی میمانند؛ یک ورودی مدل میتواند فیلدهای مختص مدل را لغو کند.
فیلدهای ورودی مدل رسانه
ورودی ارائهدهنده (type: "provider" یا حذفشده):
provider: شناسه ارائهدهنده API (openai،anthropic،google/gemini،groqو غیره)model: لغو شناسه مدلprofile/preferredProfile: انتخاب پروفایلauth-profiles.json
ورودی CLI (type: "cli"):
command: فایل اجرایی برای اجراargs: آرگومانهای قالببندیشده (از{{AttachmentPath}}،{{AttachmentUrl}}،{{AttachmentContentType}}،{{AttachmentDir}}،{{AttachmentIndex}}،{{Prompt}}،{{MaxChars}}و غیره پشتیبانی میکند؛openclaw doctor --fixجاینگهدارهای منسوخشدهٔ{input}را به{{AttachmentPath}}مهاجرت میدهد). نامهای مستعار قدیمیتر{{MediaPath}}،{{MediaUrl}}،{{MediaType}}و{{MediaDir}}در طول بازهٔ سازگاری خود همچنان در دسترساند، اما منسوخ شدهاند.
فیلدهای مشترک:
capabilities: فهرستی شامل یک یا چند مورد ازimage،audioوvideo.prompt،maxChars،maxBytes،timeoutSeconds،language: بازنویسیهای مختص هر ورودی.- ورودیهای منطبق
timeoutSecondsبرای مدل تصویر، هنگام فراخوانی ابزار صریحimageتوسط عامل نیز اعمال میشوند. برای درک تصویر، این مهلت زمانی بر خود درخواست اعمال میشود و با کارهای آمادهسازی پیشین کاهش نمییابد. - در صورت شکست، ورودی بعدی بهعنوان جایگزین استفاده میشود.
احراز هویت ارائهدهنده از ترتیب استاندارد پیروی میکند: auth-profiles.json → متغیرهای محیطی → models.providers.*.apiKey.
tools.agentToAgent
{ tools: { agentToAgent: { enabled: false, allow: ["home", "work"], }, },}tools.sessions
کنترل میکند ابزارهای نشست (sessions_list، sessions_history، sessions_send) کدام نشستها را میتوانند هدف قرار دهند.
پیشفرض: tree (نشست فعلی + نشستهای ایجادشده توسط آن، مانند عاملهای فرعی، بهعلاوهٔ نشستهای گروهی تحت نظارت محیطی برای همان عامل).
{ tools: { sessions: { // "self" | "tree" | "agent" | "all" visibility: "tree", }, },}دامنههای مشاهدهپذیری
self: فقط کلید نشست فعلی.tree: نشست فعلی + نشستهای ایجادشده توسط نشست فعلی (عاملهای فرعی). برای عملیات خواندن، نشستهای گروهی همان عامل را نیز شامل میشود که نشست فعلی از طریق آگاهی محیطی گروه بر آنها نظارت دارد.agent: هر نشستی که به شناسهٔ عامل فعلی تعلق دارد (اگر نشستهای مجزای هر فرستنده را تحت همان شناسهٔ عامل اجرا کنید، ممکن است کاربران دیگر را نیز شامل شود).all: هر نشست. هدفگیری بینعاملی همچنان بهtools.agentToAgentنیاز دارد.- محدودیت سندباکس: وقتی نشست فعلی در سندباکس است و
agents.defaults.sandbox.sessionToolsVisibility="spawned"(حالت پیشفرض)، مشاهدهپذیری بهاجبار رویtreeتنظیم میشود، حتی اگرtools.sessions.visibility="all". - وقتی
allنباشد،sessions_listشامل یک فیلد فشردهٔvisibilityاست که حالت مؤثر را توصیف میکند و هشدار میدهد ممکن است برخی نشستهای خارج از دامنهٔ فعلی حذف شوند.
با session.dmScope: "main" پیشفرض، فعالیت انسانی در یک گروه، نشست گروهی همان عامل را
بهصورت محیطی برای نشست اصلی عامل قابل مشاهده میکند. در پیکربندی چندکاربره، "main" همچنین
یک نشست پیام مستقیم را میان کاربران به اشتراک میگذارد؛ بنابراین هر کاربری که به آن هدایت شود میتواند گروههای تحت نظارت محیطی را بخواند،
از جمله از طریق memory_search حافظهٔ نشست. برای جداسازی پیامهای مستقیم، از dmScope مختص هر همتا استفاده کنید، یا
tools.sessions.visibility: "self" را تنظیم کنید تا خواندن نشستهای تحت نظارت محیطی غیرفعال شود.
tools.sessions_spawn
پشتیبانی از پیوست درونخطی را برای sessions_spawn کنترل میکند.
{ tools: { sessions_spawn: { attachments: { enabled: false, // انتخابی: برای مجاز کردن پیوستهای فایل درونخطی روی true تنظیم کنید maxTotalBytes: 5242880, // مجموعاً 5 MB در همهٔ فایلها maxFiles: 50, maxFileBytes: 1048576, // برای هر فایل 1 MB retainOnSessionKeep: false, // وقتی cleanup="keep" است، پیوستها را نگه دارید }, }, },}نکات پیوست
- پیوستها به
enabled: trueنیاز دارند. - پیوستهای عامل فرعی با یک
.manifest.jsonدر.openclaw/attachments/<uuid>/داخل فضای کاری فرزند قرار میگیرند. - پیوستهای ACP فقط میتوانند تصویر باشند و پس از رعایت همان محدودیتهای تعداد فایل، بایت هر فایل و مجموع بایتها، بهصورت درونخطی به زمان اجرای ACP ارسال میشوند.
- محتوای پیوست بهطور خودکار از ماندگارسازی رونوشت حذف میشود.
- ورودیهای Base64 با بررسی سختگیرانهٔ الفبا/پدینگ و محافظ اندازه پیش از رمزگشایی اعتبارسنجی میشوند.
- مجوزهای فایل پیوست عامل فرعی برای پوشهها
0700و برای فایلها0600است. - پاکسازی عامل فرعی از سیاست
cleanupپیروی میکند:deleteهمیشه پیوستها را حذف میکند؛keepتنها وقتی آنها را نگه میدارد کهretainOnSessionKeep: true.
tools.experimental
پرچمهای آزمایشی ابزارهای داخلی. بهطور پیشفرض خاموشاند، مگر اینکه قاعدهٔ فعالسازی خودکار GPT-5 با عاملیت سختگیرانه اعمال شود.
{ tools: { experimental: { planTool: true, // فعالسازی update_plan آزمایشی }, },}planTool: ابزار ساختیافتهٔupdate_planرا برای پیگیری کارهای چندمرحلهای غیرساده فعال میکند.- پیشفرض:
false، مگر اینکهagents.defaults.embeddedAgent.executionContract(یا بازنویسی مختص هر عامل) برای اجرای ارائهدهندهٔopenaiدر برابر شناسهٔ مدل خانوادهٔ GPT-5 روی"strict-agentic"تنظیم شده باشد (این مورد اجرای OpenAI Codex CLI را نیز پوشش میدهد، زیرا مسیریابی احراز هویت/مدل Codex زیر ارائهدهندهٔopenaiقرار دارد). برای اجبار به فعالسازی ابزار خارج از این دامنه،trueرا تنظیم کنید؛ یا برای خاموش نگهداشتن آن حتی در اجراهای GPT-5 با عاملیت سختگیرانه،falseرا تنظیم کنید. - وقتی فعال باشد، اعلان سیستم راهنمای استفاده را نیز اضافه میکند تا مدل فقط برای کارهای قابلتوجه از آن استفاده کند و حداکثر یک مرحله را در وضعیت
in_progressنگه دارد.
agents.defaults.subagents
{ agents: { defaults: { subagents: { allowAgents: ["research"], model: "minimax/MiniMax-M2.7", maxConcurrent: 8, runTimeoutSeconds: 900, announceTimeoutMs: 120000, archiveAfterMinutes: 60, }, }, },}model: مدل پیشفرض برای زیرعاملهای ایجادشده. در صورت حذف، زیرعاملها مدل فراخواننده را به ارث میبرند.allowAgents: فهرست مجاز پیشفرض شناسههای عامل مقصد پیکربندیشده برایsessions_spawn، هنگامی که عامل درخواستکنندهsubagents.allowAgentsخودش را تنظیم نکرده باشد (["*"]= هر مقصد پیکربندیشده؛ پیشفرض: فقط همان عامل). ورودیهای منسوخی که پیکربندی عاملشان حذف شده است، از سویsessions_spawnرد و ازagents_listحذف میشوند؛ برای پاکسازی آنهاopenclaw doctor --fixرا اجرا کنید.maxConcurrent: حداکثر اجرای همزمان زیرعاملها. پیشفرض:8.runTimeoutSeconds: مهلت زمانی (ثانیه) برایsessions_spawn، هنگامی که فراخواننده مقدار جایگزین خودش را ارسال نمیکند. پیشفرض:0(بدون مهلت زمانی)؛900نمایشدادهشده در بالا یک مقدار رایجِ اختیاری است، نه پیشفرض داخلی.announceTimeoutMs: مهلت زمانی هر فراخوانی (میلیثانیه) برای تلاشهای تحویل اعلانagentدر Gateway. پیشفرض:120000. تلاشهای مجدد گذرا ممکن است زمان انتظار کلی اعلان را از یک مهلت زمانی پیکربندیشده بیشتر کنند.archiveAfterMinutes: تعداد دقایق پس از تکمیل نشست زیرعامل تا بایگانی خودکار آن. پیشفرض:60؛0بایگانی خودکار را غیرفعال میکند.- سیاست ابزار برای هر زیرعامل:
tools.subagents.tools.allow/tools.subagents.tools.deny.
ارائهدهندگان سفارشی و URLهای پایه
Pluginهای ارائهدهنده، ردیفهای کاتالوگ مدل خود را منتشر میکنند. ارائهدهندگان سفارشی را از طریق models.providers در پیکربندی یا ~/.openclaw/agents/<agentId>/agent/models.json اضافه کنید.
پیکربندی baseUrl برای یک ارائهدهنده سفارشی/محلی، تصمیم محدود اعتماد شبکه برای درخواستهای HTTP مدل نیز هست: OpenClaw همان مبدأ دقیق scheme://host:port را از مسیر واکشی محافظتشده مجاز میکند، بدون افزودن گزینه پیکربندی جداگانه یا اعتماد به دیگر مبدأهای خصوصی.
{ models: { mode: "merge", // ادغام (پیشفرض) | جایگزینی providers: { "custom-proxy": { baseUrl: "http://localhost:4000/v1", apiKey: "LITELLM_KEY", api: "openai-completions", // openai-completions | openai-responses | anthropic-messages | google-generative-ai | غیره models: [ { id: "llama-3.1-8b", name: "Llama 3.1 8B", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 128000, contextTokens: 96000, maxTokens: 32000, }, ], }, }, },}احراز هویت و تقدم ادغام
- برای نیازهای احراز هویت سفارشی از
authHeader: true+headersاستفاده کنید. - ریشه پیکربندی عامل را با
OPENCLAW_AGENT_DIRجایگزین کنید. - تقدم ادغام برای شناسههای ارائهدهنده منطبق:
- مقادیر غیرخالی
models.jsonbaseUrlعامل اولویت دارند. - مقادیر غیرخالی
apiKeyعامل فقط هنگامی اولویت دارند که آن ارائهدهنده در زمینه فعلی پیکربندی/نمایه احراز هویت تحت مدیریت SecretRef نباشد. - مقادیر
apiKeyارائهدهنده تحت مدیریت SecretRef بهجای ذخیرهسازی رازهای حلشده، از نشانگرهای منبع (ENV_VAR_NAMEبرای ارجاعهای محیطی،secretref-managedبرای ارجاعهای فایل/اجرا) تازهسازی میشوند. - مقادیر سرآیند ارائهدهنده تحت مدیریت SecretRef از نشانگرهای منبع (
secretref-env:ENV_VAR_NAMEبرای ارجاعهای محیطی،secretref-managedبرای ارجاعهای فایل/اجرا) تازهسازی میشوند. apiKey/baseUrlخالی یا مفقود عامل بهmodels.providersدر پیکربندی بازمیگردند.contextWindow/maxTokensمدل منطبق: در صورت وجود و معتبر بودن مقدار صریح پیکربندی (یک عدد متناهی مثبت)، همان مقدار اولویت دارد؛ در غیر این صورت مقدار ضمنی/تولیدشده کاتالوگ استفاده میشود.contextTokensمدل منطبق از همان قاعده «صریح اولویت دارد، وگرنه ضمنی» پیروی میکند؛ برای محدود کردن زمینه مؤثر بدون تغییر فراداده بومی مدل از آن استفاده کنید.- کاتالوگهای Plugin ارائهدهنده بهصورت قطعههای کاتالوگ تولیدشده و متعلق به Plugin در وضعیت Plugin عامل ذخیره میشوند.
- هنگامی که میخواهید پیکربندی،
models.jsonرا کاملاً بازنویسی و از ادغام قطعههای کاتالوگ متعلق به Plugin صرفنظر کند، ازmodels.mode: "replace"استفاده کنید. - ماندگاری نشانگر بر مرجعیت منبع استوار است: نشانگرها از تصویر لحظهای پیکربندی منبع فعال (پیش از حلسازی) نوشته میشوند، نه از مقادیر راز حلشده زمان اجرا.
- مقادیر غیرخالی
جزئیات فیلدهای ارائهدهنده
کاتالوگ سطح بالا
models.mode: رفتار کاتالوگ ارائهدهنده (mergeیاreplace).models.providers: نگاشت ارائهدهندگان سفارشی با کلید شناسه ارائهدهنده.- ویرایشهای ایمن: برای بهروزرسانیهای افزایشی از
openclaw config set models.providers.<id> '<json>' --strict-json --mergeیاopenclaw config set models.providers.<id>.models '<json-array>' --strict-json --mergeاستفاده کنید.config setجایگزینیهای مخرب را رد میکند، مگر آنکه--replaceرا ارسال کنید.
- ویرایشهای ایمن: برای بهروزرسانیهای افزایشی از
اتصال و احراز هویت ارائهدهنده
models.providers.*.api: سازگارکننده درخواست (openai-completions،openai-responses،openai-chatgpt-responses،anthropic-messages،google-generative-ai،google-vertex،github-copilot،bedrock-converse-stream،ollama،azure-openai-responses). برای بکاندهای خودمیزبان/v1/chat/completionsمانند MLX، vLLM، SGLang و بیشتر سرورهای محلی سازگار با OpenAI، ازopenai-completionsاستفاده کنید. ارائهدهنده سفارشی دارایbaseUrlاما بدونapiبهطور پیشفرض ازopenai-completionsاستفاده میکند؛openai-responsesرا فقط هنگامی تنظیم کنید که بکاند از/v1/responsesپشتیبانی کند.models.providers.*.apiKey: اعتبارنامه ارائهدهنده (جایگزینی SecretRef/محیط ترجیح داده میشود).models.providers.*.auth: راهبرد احراز هویت (api-key،token،oauth،aws-sdk).models.providers.*.contextWindow: پنجره زمینه بومی پیشفرض برای مدلهای این ارائهدهنده، هنگامی که ورودی مدلcontextWindowرا تنظیم نمیکند.models.providers.*.contextTokens: سقف پیشفرض زمینه مؤثر زمان اجرا برای مدلهای این ارائهدهنده، هنگامی که ورودی مدلcontextTokensرا تنظیم نمیکند.models.providers.*.maxTokens: سقف پیشفرض توکن خروجی برای مدلهای این ارائهدهنده، هنگامی که ورودی مدلmaxTokensرا تنظیم نمیکند.models.providers.*.timeoutSeconds: مهلت زمانی اختیاری درخواست HTTP مدل برای هر ارائهدهنده بر حسب ثانیه، شامل اتصال، سرآیندها، بدنه و مدیریت لغو کل درخواست.models.providers.*.injectNumCtxForOpenAICompat: برای Ollama +openai-completions، مقدارoptions.num_ctxرا به درخواستها تزریق میکند (پیشفرض:true).models.providers.*.authHeader: در صورت نیاز، انتقال اعتبارنامه را در سرآیندAuthorizationاجباری میکند.models.providers.*.baseUrl: URL پایه API بالادستی.models.providers.*.headers: سرآیندهای ایستای اضافی برای مسیریابی پراکسی/مستأجر.
جایگزینیهای انتقال درخواست
models.providers.*.request: جایگزینیهای انتقال برای درخواستهای HTTP ارائهدهنده مدل.
request.headers: سرآیندهای اضافی (با پیشفرضهای ارائهدهنده ادغام میشوند). مقادیر SecretRef را میپذیرند.request.auth: جایگزینی راهبرد احراز هویت. حالتها:"provider-default"(استفاده از احراز هویت داخلی ارائهدهنده)،"authorization-bearer"(باtoken)،"header"(باheaderName،valueوprefixاختیاری).request.proxy: جایگزینی پراکسی HTTP. حالتها:"env-proxy"(استفاده از متغیرهای محیطیHTTP_PROXY/HTTPS_PROXY) و"explicit-proxy"(باurl). هر دو حالت یک زیربخش اختیاریtlsرا میپذیرند.request.tls: جایگزینی TLS برای اتصالهای مستقیم. فیلدها:ca،cert،key،passphrase(همگی SecretRef را میپذیرند)،serverName،insecureSkipVerify.request.allowPrivateNetwork: هنگامی کهtrueاست، درخواستهای HTTP ارائهدهنده مدل را از طریق محافظ واکشی HTTP ارائهدهنده به محدودههای خصوصی، CGNAT یا مشابه مجاز میکند. URLهای پایه ارائهدهنده سفارشی/محلی از قبل به مبدأ دقیق پیکربندیشده اعتماد دارند، بهجز مبدأهای فراداده/پیوند-محلی که بدون فعالسازی صریح همچنان مسدود میمانند. برای انصراف از اعتماد به مبدأ دقیق، این مقدار را رویfalseتنظیم کنید. WebSocket برای سرآیندها/TLS از همانrequestاستفاده میکند، اما مشمول آن دروازه SSRF واکشی نیست. پیشفرضfalse.
ورودیهای کاتالوگ مدل
models.providers.*.models: ورودیهای صریح کاتالوگ مدل ارائهدهنده.models.providers.*.models.*.input: شیوههای ورودی مدل. برای مدلهای فقطمتنی از["text"]و برای مدلهای بومی تصویر/بینایی از["text", "image"]استفاده کنید. پیوستهای تصویر فقط هنگامی به نوبتهای عامل تزریق میشوند که مدل انتخابشده دارای قابلیت تصویر علامتگذاری شده باشد.models.providers.*.models.*.contextWindow: فراداده پنجره زمینه بومی مدل. این مقدار برای آن مدل جایگزینcontextWindowسطح ارائهدهنده میشود.models.providers.*.models.*.contextTokens: سقف اختیاری زمینه زمان اجرا. این مقدار جایگزینcontextTokensسطح ارائهدهنده میشود؛ هنگامی از آن استفاده کنید که بودجه زمینه مؤثری کوچکتر ازcontextWindowبومی مدل میخواهید؛openclaw models listدر صورت تفاوت، هر دو مقدار را نمایش میدهد.
اعلان قابلیتهای ارائهدهنده سفارشی
کاتالوگهای ارائهدهنده مالک compat برای مسیرهای مدل همراه و شناختهشده در کاتالوگ هستند. آن پرچمها را در پیکربندی کپی نکنید: وقتی api و baseUrl پیکربندیشده همچنان آن مسیر را شناسایی میکنند، OpenClaw از ردیف کاتالوگ استفاده میکند. openclaw doctor --fix جایگزینیهای قدیمی منطبق را حذف و مقادیر متفاوت را برای بازبینی گزارش میکند.
یک بلوک compat برای یک ارائهدهنده واقعاً سفارشی، مدل سفارشی یا مدل کاتالوگ که به نقطه پایانی دیگری هدایت شده است، همچنان پشتیبانی میشود. فقط قابلیتهایی را تنظیم کنید که در برابر آن نقطه پایانی تأیید شدهاند:
| کلید مسیر سفارشی | قرارداد زمان اجرا |
|---|---|
supportsStore |
فیلد درخواست store متعلق به OpenAI را میپذیرد. |
supportsPromptCacheKey |
کلیدهای وابستگی نشست/حافظه نهان پرامپت OpenAI را میپذیرد. |
supportsDeveloperRole |
پیامهای developer را بهجای الزام system میپذیرد. |
supportsReasoningEffort |
کنترل میزان تلاش استدلال را میپذیرد. |
supportsTemperature |
مقدار temperature را برای این مدل و سازگارکننده میپذیرد. |
supportsUsageInStreaming |
فراداده مصرف را در پاسخهای جریانی منتشر میکند. |
supportsTools |
از فراخوانی ساختیافته ابزار/تابع پشتیبانی میکند. برای غیرفعال کردن ابزارها، false را تنظیم کنید. |
supportsStrictMode |
شِمای سختگیرانه ابزار را میپذیرد. |
requiresStringContent |
به محتوای پیام Chat Completions بهشکل رشته ساده نیاز دارد. |
strictMessageKeys |
الزام میکند پیامهای خروجی فقط شامل کلیدهای پذیرفتهشده باشند. |
visibleReasoningDetailTypes |
انواع بلوک جزئیات استدلال را که نمایششان در رونوشتها ایمن است، نامگذاری میکند. |
supportedReasoningEfforts |
برچسبهای استدلال پذیرفتهشده نقطه پایانی را فهرست میکند. |
reasoningEffortMap |
برچسبهای تفکر OpenClaw را به برچسبهای ویژه نقطه پایانی نگاشت میکند. |
maxTokensField |
max_tokens یا max_completion_tokens را انتخاب میکند. |
thinkingFormat |
گویش محموله استدلال نقطه پایانی را انتخاب میکند. |
requiresToolResultName |
وجود نام ابزار در پیامهای نتیجه ابزار را الزامی میکند. |
requiresAssistantAfterToolResult |
وجود پیام دستیار پس از نتایج ابزار را الزامی میکند. |
requiresThinkingAsText |
استدلال را بهجای محتوای ساختیافته، بهصورت متن بازپخش میکند. |
requiresReasoningContentOnAssistantMessages |
هنگام بازپخش، reasoning_content بهسبک DeepSeek را حفظ میکند. |
toolSchemaProfile |
یک نمایه عادیسازی شِمای ابزار تعریفشده توسط ارائهدهنده را انتخاب میکند. |
unsupportedToolSchemaKeywords |
کلیدواژههای نامبرده JSON Schema را که نقطه پایانی رد میکند، حذف میکند. |
toolCallArgumentsEncoding |
کدگذاری آرگومان فراخوانی ابزار نقطه پایانی را انتخاب میکند. |
requiresOpenAiAnthropicToolPayload |
فراخوانیهای ابزار با قالب OpenAI را به محمولههای خانواده Anthropic تبدیل میکند. |
کشف Amazon Bedrock
plugins.entries.amazon-bedrock.config.discovery: ریشه تنظیمات کشف خودکار Bedrock.plugins.entries.amazon-bedrock.config.discovery.enabled: فعال/غیرفعالکردن کشف ضمنی.plugins.entries.amazon-bedrock.config.discovery.region: منطقه AWS برای کشف.plugins.entries.amazon-bedrock.config.discovery.providerFilter: فیلتر اختیاری شناسه ارائهدهنده برای کشف هدفمند.plugins.entries.amazon-bedrock.config.discovery.refreshInterval: فاصله زمانی نظرسنجی برای تازهسازی کشف.plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow: پنجره زمینه جایگزین برای مدلهای کشفشده.plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens: حداکثر توکنهای خروجی جایگزین برای مدلهای کشفشده.
راهاندازی تعاملی ارائهدهنده سفارشی، ورودی تصویر را برای الگوهای شناختهشده شناسه مدل بینایی استنباط میکند؛ از جمله GPT-4o/GPT-4.1/GPT-5+، خانوادههای استدلالی o1/o3/o4، Claude، Gemini، هر شناسه دارای پسوند -vl (مانند Qwen-VL و موارد مشابه) و خانوادههای نامگذاریشدهای مانند LLaVA، Pixtral، InternVL، Mllama، MiniCPM-V و GLM-4V؛ همچنین برای خانوادههای شناختهشده صرفاً متنی (Llama، DeepSeek، Mistral/Mixtral، Kimi/Moonshot، Codestral، Devstral، Phi، QwQ، CodeLlama و شناسههای ساده Qwen بدون پسوند vl/vision) پرسش اضافی را نادیده میگیرد. برای شناسههای مدل ناشناخته همچنان درباره پشتیبانی از تصویر پرسیده میشود. راهاندازی غیرتعاملی نیز از همین استنباط استفاده میکند؛ برای اجبار فراداده دارای قابلیت تصویر، --custom-image-input و برای اجبار فراداده صرفاً متنی، --custom-text-input را ارسال کنید.
نمونههای ارائهدهنده
Cerebras (GLM 4.7 / GPT OSS)
Plugin رسمی ارائهدهنده خارجی cerebras میتواند این مورد را از طریق openclaw onboard --auth-choice cerebras-api-key پیکربندی کند. فقط هنگام بازنویسی پیشفرضها از پیکربندی صریح ارائهدهنده استفاده کنید.
{ env: { CEREBRAS_API_KEY: "sk-..." }, agents: { defaults: { model: { primary: "cerebras/zai-glm-4.7", fallbacks: ["cerebras/gpt-oss-120b"], }, models: { "cerebras/zai-glm-4.7": { alias: "GLM 4.7 (Cerebras)" }, "cerebras/gpt-oss-120b": { alias: "GPT OSS 120B (Cerebras)" }, }, }, }, models: { mode: "merge", providers: { cerebras: { baseUrl: "https://api.cerebras.ai/v1", apiKey: "${CEREBRAS_API_KEY}", api: "openai-completions", models: [ { id: "zai-glm-4.7", name: "GLM 4.7 (Cerebras)" }, { id: "gpt-oss-120b", name: "GPT OSS 120B (Cerebras)" }, ], }, }, },}برای Cerebras از cerebras/zai-glm-4.7 و برای اتصال مستقیم به Z.AI از zai/glm-4.7 استفاده کنید.
Kimi Coding
{ env: { KIMI_API_KEY: "sk-..." }, agents: { defaults: { model: { primary: "kimi/kimi-for-coding" }, models: { "kimi/kimi-for-coding": { alias: "Kimi Code" } }, }, },}ارائهدهنده داخلی سازگار با Anthropic. میانبر: openclaw onboard --auth-choice kimi-code-api-key.
مدلهای محلی (LM Studio)
مدلهای محلی را ببینید. خلاصه: یک مدل محلی بزرگ را از طریق Responses API در LM Studio و روی سختافزار قدرتمند اجرا کنید؛ مدلهای میزبانیشده را برای حالت جایگزین ادغامشده نگه دارید.
MiniMax M3 (مستقیم)
{ agents: { defaults: { model: { primary: "minimax/MiniMax-M3" }, models: { "minimax/MiniMax-M3": { alias: "Minimax" }, }, }, }, models: { mode: "merge", providers: { minimax: { baseUrl: "https://api.minimax.io/anthropic", apiKey: "${MINIMAX_API_KEY}", api: "anthropic-messages", models: [ { id: "MiniMax-M3", name: "MiniMax M3", reasoning: true, input: ["text", "image"], cost: { input: 0.6, output: 2.4, cacheRead: 0.12, cacheWrite: 0 }, contextWindow: 1000000, maxTokens: 131072, }, ], }, }, },}MINIMAX_API_KEY را تنظیم کنید. میانبرها: openclaw onboard --auth-choice minimax-global-api یا openclaw onboard --auth-choice minimax-cn-api. کاتالوگ مدل بهطور پیشفرض از M3 استفاده میکند و گونههای M2.7 را نیز در بر میگیرد. در مسیر استریم سازگار با Anthropic، OpenClaw قابلیت تفکر MiniMax M2.x را بهطور پیشفرض غیرفعال میکند، مگر اینکه خودتان thinking را صریحاً تنظیم کنید؛ MiniMax-M3 (و M3.x) بهطور پیشفرض در مسیر تفکر حذفشده/تطبیقی ارائهدهنده باقی میماند. /fast on یا params.fastMode: true، مقدار MiniMax-M2.7 را به MiniMax-M2.7-highspeed بازنویسی میکند.
Moonshot AI (Kimi)
{ env: { MOONSHOT_API_KEY: "sk-..." }, agents: { defaults: { model: { primary: "moonshot/kimi-k2.6" }, models: { "moonshot/kimi-k2.6": { alias: "Kimi K2.6" } }, }, }, models: { mode: "merge", providers: { moonshot: { baseUrl: "https://api.moonshot.ai/v1", apiKey: "${MOONSHOT_API_KEY}", api: "openai-completions", models: [ { id: "kimi-k2.6", name: "Kimi K2.6", reasoning: false, input: ["text", "image"], cost: { input: 0.95, output: 4, cacheRead: 0.16, cacheWrite: 0 }, contextWindow: 262144, maxTokens: 262144, }, ], }, }, },}برای نقطه پایانی چین: baseUrl: "https://api.moonshot.cn/v1" یا openclaw onboard --auth-choice moonshot-api-key-cn.
نقاط پایانی بومی Moonshot سازگاری مصرف در حالت استریم را روی انتقال مشترک openai-completions اعلام میکنند و OpenClaw این قابلیت را بر اساس ویژگیهای نقطه پایانی، نه صرفاً شناسه ارائهدهنده داخلی، فعال میکند.
OpenCode
{ agents: { defaults: { model: { primary: "opencode/claude-opus-4-6" }, models: { "opencode/claude-opus-4-6": { alias: "Opus" } }, }, },}OPENCODE_API_KEY (یا OPENCODE_ZEN_API_KEY) را تنظیم کنید. برای کاتالوگ Zen از ارجاعهای opencode/... و برای کاتالوگ Go از ارجاعهای opencode-go/... استفاده کنید. میانبر: openclaw onboard --auth-choice opencode-zen یا openclaw onboard --auth-choice opencode-go.
Synthetic (سازگار با Anthropic)
{ env: { SYNTHETIC_API_KEY: "sk-..." }, agents: { defaults: { model: { primary: "synthetic/hf:MiniMaxAI/MiniMax-M3" }, models: { "synthetic/hf:MiniMaxAI/MiniMax-M3": { alias: "MiniMax M3" } }, }, }, models: { mode: "merge", providers: { synthetic: { baseUrl: "https://api.synthetic.new/anthropic", apiKey: "${SYNTHETIC_API_KEY}", api: "anthropic-messages", models: [ { id: "hf:MiniMaxAI/MiniMax-M3", name: "MiniMax M3", reasoning: true, input: ["text", "image"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 262144, maxTokens: 65536, }, ], }, }, },}نشانی پایه باید فاقد /v1 باشد (کلاینت Anthropic آن را اضافه میکند). میانبر: openclaw onboard --auth-choice synthetic-api-key.
Z.AI (GLM-4.7)
{ agents: { defaults: { model: { primary: "zai/glm-4.7" }, models: { "zai/glm-4.7": {} }, }, },}ZAI_API_KEY را تنظیم کنید. ارجاعهای مدل از شناسه متعارف ارائهدهنده zai/* استفاده میکنند. میانبر: openclaw onboard --auth-choice zai-api-key.
- نقطه پایانی عمومی:
https://api.z.ai/api/paas/v4 - نقطه پایانی کدنویسی:
https://api.z.ai/api/coding/paas/v4 - گزینه احراز هویت پیشفرض
zai-api-key، کلید شما را بررسی میکند و بهطور خودکار تشخیص میدهد که به کدام نقطه پایانی تعلق دارد (اگر تشخیص قطعی نباشد، پرسشی نمایش میدهد که مقدار پیشفرض آن Global است). گزینههای اختصاصی احراز هویت CN و Coding-Plan نیز برای انتخاب صریح در دسترساند. - برای نقطه پایانی عمومی، یک ارائهدهنده سفارشی با بازنویسی نشانی پایه تعریف کنید.
مرتبط
- پیکربندی — عاملها
- پیکربندی — کانالها
- مرجع پیکربندی — سایر کلیدهای سطح بالا
- ابزارها و Pluginها