Fundamentals
پرامپت سیستم
OpenClaw برای هر اجرای عامل، پرامپت سیستمی خود را میسازد؛ هیچ پرامپت پیشفرضی در زمان اجرا وجود ندارد.
سرهمبندی سه لایه دارد:
buildAgentSystemPromptپرامپت را از ورودیهای صریح رندر میکند. این بخش یک رندرکنندهٔ خالص باقی میماند و پیکربندی سراسری را مستقیماً نمیخواند.resolveAgentSystemPromptConfigتنظیمات پرامپت مبتنی بر پیکربندی (نمایش مالک، راهنماییهای TTS، نامهای مستعار مدل، حالت ارجاعدهی حافظه، حالت واگذاری به زیرعامل) را برای یک عامل مشخص تعیین میکند.- آداپتورهای زمان اجرا (تعبیهشده، CLI، پیشنمایشهای فرمان/خروجیگیری، Compaction) دادههای زنده (ابزارها، وضعیت سندباکس، قابلیتهای کانال، فایلهای زمینه، مشارکتهای پرامپت ارائهدهنده) را گردآوری میکنند و نمای پرامپت پیکربندیشده را فراخوانی میکنند.
این کار سطوح پرامپت خروجیگیریشده/اشکالزدایی را با اجراهای زنده همراستا نگه میدارد، بدون آنکه همهٔ جزئیات زمان اجرا به یک سازندهٔ یکپارچه و بزرگ تبدیل شوند.
Pluginهای ارائهدهنده میتوانند بدون جایگزینکردن پرامپت تحت مالکیت OpenClaw، راهنمایی سازگار با کش ارائه دهند. زمان اجرای یک ارائهدهنده میتواند:
- یکی از سه بخش اصلی نامگذاریشده را جایگزین کند:
interaction_style،tool_call_style،execution_bias - یک پیشوند پایدار بالای مرز کش پرامپت تزریق کند
- یک پسوند پویا پایین مرز کش پرامپت تزریق کند
از مشارکتهای تحت مالکیت ارائهدهنده برای تنظیم مختص خانوادهٔ مدل استفاده کنید. قلاب قدیمی before_prompt_build را برای سازگاری یا تغییرات واقعاً سراسری پرامپت کنار بگذارید.
لایهٔ همراه خانوادهٔ OpenAI/Codex GPT-5 (resolveGpt5SystemPromptContribution) از این سازوکار استفاده میکند: یک قرارداد رفتاری stablePrefix (سیاست اجرا، انضباط ابزار، قرارداد خروجی، قرارداد تکمیل) بههمراه یک بازنویسی اختیاری interaction_style برای لحنی دوستانهتر. این لایه بر هر شناسهٔ مدل gpt-5* که از مسیر Pluginهای OpenAI یا Codex هدایت شود اعمال میشود و با agents.defaults.promptOverlays.gpt5.personality کنترل میشود ("friendly"/"on" یا "off").
ساختار
پرامپت فشرده است و بخشهای ثابتی دارد:
- ابزارها: یادآوری منبع حقیقت ابزارهای ساختیافته بههمراه راهنمای استفاده از ابزار در زمان اجرا. وقتی ابزار آزمایشی
update_planفعال باشد (tools.experimental.planTool) توضیح خود ابزار میافزاید: فقط برای کارهای چندمرحلهای غیرساده از آن استفاده کنید، حداکثر یک مرحله راin_progressنگه دارید و برای کارهای سادهٔ تکمرحلهای از آن صرفنظر کنید. - گرایش اجرایی: درخواستهای قابلاقدام را در همان نوبت انجام دهید، تا پایان کار یا مسدودشدن ادامه دهید، از نتایج ضعیف ابزار بازیابی کنید، وضعیت تغییرپذیر را بهصورت زنده بررسی کنید و پیش از نهاییسازی اعتبارسنجی کنید.
- ایمنی: یادآوری کوتاه محدودیتها علیه رفتار قدرتطلبانه یا دورزدن نظارت.
- Skills (در صورت دسترسبودن): به مدل میگوید چگونه دستورالعملهای Skill را هنگام نیاز بارگذاری کند.
- کنترل OpenClaw: برای کارهای پیکربندی/راهاندازی مجدد، ابزار
gatewayرا ترجیح دهید؛ فرمانهای CLI را از خود نسازید. - بهروزرسانی خودکار OpenClaw: پیکربندی را با
config.schema.lookupبهصورت ایمن بررسی کنید، باconfig.patchوصله کنید، کل پیکربندی را باconfig.applyجایگزین کنید وupdate.runرا فقط با درخواست صریح کاربر اجرا کنید. ابزار عاملمحورgatewayاز بازنویسیtools.exec.modeخودداری میکند. - فضای کاری: پوشهٔ کاری (
agents.defaults.workspace). - مستندات: مسیر محلی مستندات/منبع و زمان خواندن آنها.
- فایلهای فضای کاری (تزریقشده): یادآوری میکند که فایلهای راهاندازی اولیه در ادامه گنجانده شدهاند.
- سندباکس (در صورت فعالبودن): زمان اجرای سندباکسشده، مسیرهای سندباکس، دسترسپذیری اجرای ارتقایافته.
- تاریخ و زمان کنونی: فقط منطقهٔ زمانی (پایدار برای کش؛ ساعت زنده از
session_statusمیآید). - دستورالعملهای خروجی دستیار: نحو فشردهٔ پیوست، یادداشت صوتی و برچسب پاسخ.
- Heartbeatها: پرامپت Heartbeat و رفتار تأیید، هنگامی که Heartbeatها برای عامل پیشفرض فعال باشند.
- زمان اجرا: میزبان، سیستمعامل، Node، مدل، ریشهٔ مخزن (در صورت شناسایی)، سطح تفکر (یک خط).
- استدلال: سطح مشاهدهپذیری کنونی بههمراه راهنمای کلید تغییر
/reasoning.
محتوای پایدار و بزرگ (از جمله زمینهٔ پروژه) بالای مرز داخلی کش پرامپت باقی میماند. بخشهای متغیر هر نوبت (راهنمای تعبیهٔ رابط کنترل، پیامرسانی، صدا، زمینهٔ گفتوگوی گروهی، واکنشها، Heartbeatها، زمان اجرا) پایین آن مرز افزوده میشوند تا بکاندهای محلی دارای کش پیشوند بتوانند پیشوند پایدار فضای کاری را در نوبتهای کانال دوباره استفاده کنند. وقتی شِمای پذیرفتهشده از قبل جزئیات زمان اجرای مربوطه را در خود دارد، توضیحات ابزار نباید نام کانال کنونی را در خود بگنجاند.
ابزارها همچنین راهنمای کارهای طولانیمدت را در بر دارند:
- برای پیگیری آینده (
check back later، یادآوریها، کارهای تکرارشونده) بهجای حلقههای خوابexec، ترفندهای تأخیرyieldMsیا نظرسنجی مکررprocessاز Cron استفاده کنید - از
exec/processفقط برای فرمانهایی استفاده کنید که اکنون آغاز میشوند و در پسزمینه ادامه مییابند - وقتی بیدارسازی خودکار پس از تکمیل فعال است، فرمان را یکبار آغاز کنید و به مسیر بیدارسازی مبتنی بر ارسال تکیه کنید
- برای گزارشها، وضعیت، ورودی یا مداخله در یک فرمان در حال اجرا از
processاستفاده کنید - برای کارهای بزرگتر،
sessions_spawnرا ترجیح دهید؛ تکمیل زیرعامل مبتنی بر ارسال است و بهطور خودکار به درخواستکننده اعلام میشود - صرفاً برای انتظار تکمیل،
subagents list/sessions_listرا در حلقه نظرسنجی نکنید
agents.defaults.subagents.delegationMode (پیشفرض "suggest") میتواند این را تقویت کند. "prefer" یک بخش اختصاصی واگذاری به زیرعامل میافزاید که به عامل اصلی میگوید بهعنوان هماهنگکنندهای پاسخگو عمل کند و هر کاری فراتر از یک پاسخ مستقیم را از طریق sessions_spawn پیش ببرد. این فقط مربوط به پرامپت است؛ سیاست ابزار همچنان کنترل میکند که آیا sessions_spawn در دسترس است یا خیر.
محدودیتهای ایمنی در پرامپت سیستمی توصیهای هستند، نه اجرایی. برای اعمال سختگیرانه از سیاست ابزار، تأییدهای اجرا، سندباکس و فهرستهای مجاز کانال استفاده کنید؛ اپراتورها میتوانند طبق طراحی محدودیتهای پرامپت را غیرفعال کنند.
در کانالهایی با کارتها/دکمههای تأیید بومی، پرامپت به عامل میگوید ابتدا به آن رابط کاربری تکیه کند و فقط زمانی فرمان دستی /approve را درج کند که نتیجهٔ ابزار نشان دهد تأییدهای گفتوگویی در دسترس نیستند یا تأیید دستی تنها مسیر است.
حالتهای پرامپت
OpenClaw برای زیرعاملها پرامپتهای سیستمی کوچکتری رندر میکند. زمان اجرا برای هر اجرا یک promptMode تعیین میکند (نه پیکربندی کاربرمحور):
full(پیشفرض): همهٔ بخشهای بالا.minimal: برای زیرعاملها استفاده میشود؛ بخش پرامپت حافظه (که با عنوان یادآوری حافظه همراه شده)، بهروزرسانی خودکار OpenClaw، نامهای مستعار مدل، هویت کاربر، دستورالعملهای خروجی دستیار، پیامرسانی، پاسخهای بیصدا و Heartbeatها را حذف میکند. ابزارها، ایمنی، Skills (در صورت ارائه)، فضای کاری، سندباکس، تاریخ و زمان کنونی (در صورت معلومبودن)، زمان اجرا و زمینهٔ تزریقشده در دسترس باقی میمانند.none: فقط خط هویت پایه را برمیگرداند.
در promptMode=minimal، پرامپتهای تزریقی اضافی بهجای زمینهٔ گفتوگوی گروهی با عنوان زمینهٔ زیرعامل برچسبگذاری میشوند.
برای اجراهای پاسخ خودکار کانال، وقتی زمینهٔ مستقیم، گروهی یا فقط ابزار پیام از قبل مالک قرارداد پاسخ قابلمشاهده است، OpenClaw بخش عمومی پاسخهای بیصدا را حذف میکند. فقط حالت خودکار قدیمی گروه/کانال، NO_REPLY را نشان میدهد؛ گفتوگوهای مستقیم و پاسخهای فقط ابزار پیام از راهنمای توکن بیصدا صرفنظر میکنند.
اسنپشاتهای پرامپت
OpenClaw اسنپشاتهای ثبتشدهٔ پرامپت را برای مسیر موفق زمان اجرای Codex در test/fixtures/agents/prompt-snapshots/codex-runtime-happy-path/ نگه میدارد. آنها پارامترهای منتخب رشته/نوبت app-server را بههمراه پشتهٔ بازسازیشدهٔ لایههای پرامپت متصل به مدل برای نوبتهای مستقیم Telegram، گروه Discord و Heartbeat رندر میکنند: یک فیکسچر سنجاقشدهٔ پرامپت مدل Codex gpt-5.5، متن توسعهدهندهٔ مجوز مسیر موفق Codex، دستورالعملهای توسعهدهندهٔ OpenClaw، دستورالعملهای حالت همکاری در محدودهٔ نوبت هنگامی که OpenClaw آنها را ارائه میدهد، ورودی نوبت کاربر و ارجاعها به مشخصات پویای ابزار.
فیکسچر سنجاقشدهٔ پرامپت مدل Codex را با pnpm prompt:snapshots:sync-codex-model تازهسازی کنید. بهطور پیشفرض ابتدا $CODEX_HOME/models_cache.json، سپس ~/.codex/models_cache.json و بعد قرارداد پوشهٔ کاری نگهدارنده ~/code/codex/codex-rs/models-manager/models.json را جستوجو میکند؛ اگر هیچکدام وجود نداشته باشند، بدون تغییر فیکسچر ثبتشده خارج میشود. برای تازهسازی از یک فایل مشخص models_cache.json یا models.json، --catalog <path> را ارائه کنید.
این اسنپشاتها ضبط خام و بایتبهبایت درخواست OpenAI نیستند. Codex میتواند پس از ارسال پارامترهای رشته و نوبت توسط OpenClaw، زمینهٔ فضای کاری تحت مالکیت زمان اجرا (AGENTS.md، زمینهٔ محیط، حافظهها، دستورالعملهای برنامه/Plugin، دستورالعملهای داخلی حالت همکاری پیشفرض) را بیفزاید.
با pnpm prompt:snapshots:gen دوباره تولید کنید؛ انحراف را با pnpm prompt:snapshots:check بررسی کنید. CI بررسی انحراف را در کنار شاردهای مرزی اضافی اجرا میکند تا تغییرات پرامپت و بهروزرسانیهای اسنپشات در همان PR ثبت شوند.
تزریق راهاندازی اولیهٔ فضای کاری
فایلهای راهاندازی اولیه از فضای کاری فعال تعیین میشوند و به سطح پرامپت متناسب با طول عمرشان هدایت میشوند:
AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.md(فقط در فضاهای کاری کاملاً جدید)MEMORY.mdدر صورت وجود
در چارچوب بومی Codex، OpenClaw از تکرار فایلهای پایدار فضای کاری در هر نوبت کاربر جلوگیری میکند. Codex، AGENTS.md را از طریق کشف مستندات پروژهٔ خودش بارگذاری میکند. TOOLS.md بهعنوان دستورالعملهای توسعهدهندهٔ موروثی Codex ارسال میشود. SOUL.md، IDENTITY.md و USER.md بهعنوان دستورالعملهای توسعهدهندهٔ همکاری در محدودهٔ نوبت ارسال میشوند تا زیرعاملهای بومی Codex آنها را به ارث نبرند. محتوای HEARTBEAT.md مستقیماً تزریق نمیشود؛ نوبتهای Heartbeat، وقتی فایل وجود دارد و خالی نیست، یک یادداشت حالت همکاری دریافت میکنند که به فایل اشاره میکند. محتوای MEMORY.md نیز در هر نوبت بومی Codex جایگذاری نمیشود: وقتی ابزارهای حافظه برای فضای کاری در دسترس باشند، نوبتهای Codex یک یادداشت کوچک حافظهٔ فضای کاری دریافت میکنند که مدل را به memory_search یا memory_get هدایت میکند. اگر ابزارها غیرفعال باشند، جستوجوی حافظه در دسترس نباشد یا فضای کاری فعال با فضای کاری حافظهٔ عامل تفاوت داشته باشد، MEMORY.md به مسیر عادی و محدود زمینهٔ نوبت بازمیگردد. BOOTSTRAP.md نقش عادی زمینهٔ نوبت را حفظ میکند.
در چارچوبهای غیر Codex، فایلهای راهاندازی اولیه مطابق محدودیتهای موجودشان در پرامپت OpenClaw ترکیب میشوند. در اجراهای عادی، وقتی Heartbeatها برای عامل پیشفرض غیرفعال باشند یا agents.defaults.heartbeat.includeSystemPromptSection نادرست باشد، HEARTBEAT.md حذف میشود. فایلهای تزریقی را مختصر نگه دارید، بهویژه MEMORY.md غیر Codex: این فایل باید خلاصهای گزینششده و بلندمدت باقی بماند و یادداشتهای روزانهٔ تفصیلی در memory/*.md باشند که در صورت نیاز از طریق memory_search / memory_get بازیابی شوند. فایلهای بزرگ MEMORY.md غیر Codex مصرف پرامپت را افزایش میدهند و ممکن است طبق محدودیتهای فایل راهاندازی اولیهٔ زیر، فقط بخشی از آنها تزریق شود.
فایلهای بزرگ با یک نشانگر کوتاه میشوند:
| محدودیت | کلید پیکربندی | پیشفرض |
|---|---|---|
| حداکثر نویسه برای هر فایل | agents.defaults.bootstrapMaxChars |
20000 |
| مجموع در همهٔ فایلها | agents.defaults.bootstrapTotalMaxChars |
60000 |
هشدار کوتاهسازی (off|once|always) |
agents.defaults.bootstrapPromptTruncationWarning |
always |
فایلهای مفقود یک نشانگر کوتاهِ فایل مفقود درج میکنند. شمارشهای تفصیلیِ خام/درجشده در اطلاعات تشخیصی مانند /context، /status، doctor و گزارشها باقی میمانند.
برای فایلهای حافظه، کوتاهسازی بهمعنای از دست رفتن داده نیست: فایل روی دیسک دستنخورده باقی میماند. در Codex بومی، MEMORY.md در صورت موجود بودن ابزارهای حافظه، هنگام نیاز از طریق آنها خوانده میشود و در غیر این صورت از جایگزین محدودشده در پرامپت استفاده میشود. در سایر محیطهای اجرایی، مدل فقط نسخه کوتاهشده درجشده را میبیند تا زمانی که حافظه را مستقیماً بخواند یا جستوجو کند. اگر MEMORY.md مکرراً کوتاه میشود، آن را به یک خلاصه ماندگار کوتاهتر تبدیل کنید، تاریخچه تفصیلی را به memory/*.md منتقل کنید، یا محدودیتهای راهاندازی اولیه را آگاهانه افزایش دهید.
نشستهای عامل فرعی فقط AGENTS.md و TOOLS.md را درج میکنند (سایر فایلهای راهاندازی اولیه فیلتر میشوند تا زمینه عامل فرعی کوچک بماند).
قلابهای داخلی میتوانند از طریق رویداد agent:bootstrap این مرحله را رهگیری کنند تا فایلهای راهاندازی اولیه درجشده را تغییر دهند یا جایگزین کنند (برای مثال، جایگزین کردن SOUL.md با یک شخصیت جایگزین).
برای اینکه لحن کمتر عمومی باشد، با راهنمای شخصیت SOUL.md شروع کنید.
برای بررسی میزان سهم هر فایل درجشده (خام در برابر درجشده، کوتاهسازی، سربار شِمای ابزار)، از /context list یا /context detail استفاده کنید. به زمینه مراجعه کنید.
مدیریت زمان
بخش تاریخ و زمان کنونی فقط زمانی ظاهر میشود که منطقه زمانی کاربر مشخص باشد و برای حفظ پایداری کش پرامپت، فقط منطقه زمانی را شامل میشود (بدون ساعت پویا یا قالب زمان).
هنگامی که عامل به زمان کنونی نیاز دارد، از session_status استفاده کنید؛ کارت وضعیت آن شامل یک خط برچسب زمانی است. همین ابزار میتواند بهصورت اختیاری یک بازنویسی مدل برای هر نشست تنظیم کند (model=default آن را پاک میکند).
پیکربندی با:
agents.defaults.userTimezoneagents.defaults.timeFormat(auto|12|24)
برای جزئیات کامل رفتار، به مناطق زمانی و تاریخ و زمان مراجعه کنید.
Skills
هنگامی که Skills واجد شرایط وجود داشته باشند، OpenClaw یک فهرست فشرده <available_skills> (formatSkillsForPrompt) را با مسیر فایل و یک نشانگر <version>sha256:...</version> مشتقشده از محتوا برای هر skill درج میکند. پرامپت به مدل دستور میدهد برای بارگذاری SKILL.md از مکان فهرستشده (فضای کاری، مدیریتشده یا همراه بسته) از read استفاده کند و وقتی <version> یک skill با نوبت پیشین تفاوت دارد، آن را دوباره بخواند. اگر هیچ skill واجد شرایطی وجود نداشته باشد، بخش Skills حذف میشود.
نوبتهای Codex بومی این فهرست را بهجای ورودی کاربر در هر نوبت، بهصورت دستورالعملهای توسعهدهنده همکاری با دامنه همان نوبت دریافت میکنند؛ بهجز نوبتهای سبک cron که پرامپت زمانبندیشده دقیق را حفظ میکنند. سایر محیطهای اجرایی بخش معمول پرامپت را نگه میدارند.
مکان میتواند به یک skill تودرتو مانند skills/personal/foo/SKILL.md اشاره کند. تودرتویی فقط برای سازماندهی است؛ پرامپت از نام تخت skill در frontmatterِ SKILL.md استفاده میکند.
واجد شرایط بودن شامل دروازههای فراداده skill، بررسیهای محیط اجرا/پیکربندی و فهرست مجاز مؤثر Skills عامل در صورت پیکربندی agents.defaults.skills یا agents.entries.*.skills است. Skills همراه Plugin فقط زمانی واجد شرایطاند که Plugin مالک آنها فعال باشد؛ این کار به Pluginهای ابزار اجازه میدهد راهنماهای عملیاتی عمیقتری ارائه کنند، بدون اینکه تمام آن راهنماییها در هر توضیح ابزار گنجانده شود.
<available_skills> <skill> <name>...</name> <description>...</description> <location>...</location> <version>sha256:...</version> </skill></available_skills>این کار پرامپت پایه را کوچک نگه میدارد و همزمان استفاده هدفمند از Skills را امکانپذیر میکند. اندازهبندی بر عهده زیرسامانه Skills است و از اندازهبندی عمومی خواندن/درج زمان اجرا جداست:
| دامنه | بودجه پرامپت Skills | بودجه گزیده زمان اجرا |
|---|---|---|
| سراسری | skills.limits.maxSkillsPromptChars |
agents.defaults.contextLimits.* |
| برای هر عامل | agents.entries.*.skillsLimits.maxSkillsPromptChars |
agents.entries.*.contextLimits.* |
بودجه گزیده زمان اجرا، memory_get، نتایج زنده ابزار و بازآوریهای AGENTS.md پس از Compaction را پوشش میدهد.
مستندات
بخش مستندات در صورت موجود بودن به مستندات محلی اشاره میکند (docs/ در یک وارسی Git یا مستندات بسته npm همراه) و در غیر این صورت به https://docs.openclaw.ai بازمیگردد. همچنین مکان منبع OpenClaw را فهرست میکند: وارسیهای Git ریشه منبع محلی را نمایش میدهند و نصبهای بسته، نشانی منبع GitHub را همراه با دستورالعمل بررسی منبع در آنجا، هنگامی که مستندات ناقص یا قدیمیاند، دریافت میکنند.
پرامپت، مستندات را پیش از آنکه مدل نحوه کار OpenClaw را درک کند، مرجع معتبر خودشناسی OpenClaw معرفی میکند (حافظه/یادداشتهای روزانه، نشستها، ابزارها، Gateway، پیکربندی، فرمانها، زمینه پروژه) و به مدل میگوید AGENTS.md، زمینه پروژه، یادداشتهای فضای کاری/نمایه/حافظه و memory_search را بهعنوان زمینه دستورالعمل یا حافظه کاربر در نظر بگیرد، نه دانش طراحی/پیادهسازی OpenClaw. اگر مستندات ساکت یا قدیمی باشند، مدل باید این موضوع را بیان کند و منبع را بررسی کند. همچنین به مدل میگوید هرگاه ممکن باشد، openclaw status را خودش اجرا کند و فقط زمانی از کاربر بخواهد که دسترسی ندارد.
بهطور خاص برای پیکربندی، عاملها را برای مستندات و محدودیتهای دقیق در سطح فیلد به کنش ابزار config.schema.lookup در gateway و سپس برای راهنمایی گستردهتر به docs/gateway/configuration.md و docs/gateway/configuration-reference.md ارجاع میدهد.