Fundamentals
پرامپت سیستم
OpenClaw برای هر اجرای عامل، یک پرامپت سیستمی سفارشی میسازد. این پرامپت متعلق به OpenClaw است و از پرامپت پیشفرض pi-coding-agent استفاده نمیکند.
پرامپت توسط OpenClaw سرهمبندی میشود و به هر اجرای عامل تزریق میشود.
سرهمبندی پرامپت سه لایه دارد:
buildAgentSystemPromptپرامپت را از ورودیهای صریح رندر میکند. باید یک رندرکنندهی خالص بماند و پیکربندی سراسری را مستقیما نخواند.resolveAgentSystemPromptConfigدکمههای پرامپت مبتنی بر پیکربندی را حل میکند، مانند نمایش مالک، راهنماییهای TTS، نامهای مستعار مدل، حالت ارجاعدهی حافظه، و حالت واگذاری به زیرعامل برای یک عامل مشخص.- آداپترهای زمان اجرا (جاسازیشده، CLI، پیشنمایشهای دستور/خروجی، Compaction) واقعیتهای زنده مانند ابزارها، وضعیت سندباکس، قابلیتهای کانال، فایلهای زمینه، و مشارکتهای پرامپت ارائهدهنده را گردآوری میکنند، سپس facade پرامپت پیکربندیشده را فراخوانی میکنند.
این کار سطحهای پرامپت خروجیگرفته/اشکالزدایی را با اجراهای زنده همسو نگه میدارد، بدون آنکه هر جزئیات خاص زمان اجرا را به یک سازندهی یکپارچهی بزرگ تبدیل کند.
Pluginهای ارائهدهنده میتوانند بدون جایگزین کردن کل پرامپت متعلق به OpenClaw، راهنمایی پرامپت آگاه از کش ارائه کنند. زمان اجرای ارائهدهنده میتواند:
- مجموعهی کوچکی از بخشهای نامگذاریشدهی هسته را جایگزین کند (
interaction_style,tool_call_style,execution_bias) - یک پیشوند پایدار را بالای مرز کش پرامپت تزریق کند
- یک پسوند پویا را پایین مرز کش پرامپت تزریق کند
از مشارکتهای متعلق به ارائهدهنده برای تنظیمات ویژهی خانوادهی مدل استفاده کنید. جهش پرامپت قدیمی
before_prompt_build را برای سازگاری یا تغییرات واقعا سراسری پرامپت نگه دارید،
نه رفتار عادی ارائهدهنده.
لایهی رویی خانوادهی OpenAI GPT-5 قانون اجرای هسته را کوچک نگه میدارد و راهنمایی ویژهی مدل را برای چسبندگی پرسونا، خروجی موجز، انضباط ابزار، جستوجوی موازی، پوشش خروجی قابلتحویل، راستیآزمایی، زمینهی مفقود، و بهداشت ابزار ترمینال اضافه میکند.
ساختار
پرامپت عمدا فشرده است و از بخشهای ثابت استفاده میکند:
- ابزارها: یادآور منبع حقیقت ابزار ساختیافته بههمراه راهنمایی استفاده از ابزار در زمان اجرا.
- سوگیری اجرا: راهنمایی فشرده برای پیگیری تا انجام: در همان نوبت روی درخواستهای قابل اقدام عمل کن، تا انجام شدن یا مسدود شدن ادامه بده، از نتایج ضعیف ابزار بازیابی کن، وضعیت mutable را زنده بررسی کن، و پیش از نهاییسازی راستیآزمایی کن.
- ایمنی: یادآور کوتاه محدودیت برای پرهیز از رفتار قدرتطلبانه یا دور زدن نظارت.
- Skills (وقتی موجود باشد): به مدل میگوید چگونه دستورالعملهای Skills را در صورت نیاز بارگذاری کند.
- کنترل OpenClaw: به مدل میگوید برای کارهای
پیکربندی/راهاندازی مجدد، ابزار
gatewayرا ترجیح دهد و از ساختن دستورهای CLI خیالی پرهیز کند. - خودبهروزرسانی OpenClaw: چگونگی بازرسی امن پیکربندی با
config.schema.lookup، patch کردن پیکربندی باconfig.patch، جایگزینی کامل پیکربندی باconfig.apply، و اجرایupdate.runفقط در صورت درخواست صریح کاربر. ابزار فقط-مالکgatewayهمچنین از بازنویسیtools.exec.ask/tools.exec.securityخودداری میکند، از جمله نامهای مستعار قدیمیtools.bash.*که به آن مسیرهای exec محافظتشده نرمالسازی میشوند. - فضای کاری: پوشهی کاری (
agents.defaults.workspace). - مستندات: مسیر محلی docs/source مربوط به OpenClaw و زمان خواندن آنها.
- فایلهای فضای کاری (تزریقشده): نشان میدهد فایلهای bootstrap در پایین گنجانده شدهاند.
- سندباکس (وقتی فعال باشد): زمان اجرای سندباکسشده، مسیرهای سندباکس، و اینکه exec ارتقایافته در دسترس است یا نه را نشان میدهد.
- تاریخ و زمان فعلی: فقط منطقهی زمانی (پایدار از نظر کش؛ ساعت زنده از
session_statusمیآید). - دستورالعملهای خروجی دستیار: نحو فشردهی پیوست، یادداشت صوتی، و تگ پاسخ.
- Heartbeats: پرامپت Heartbeat و رفتار ack، وقتی Heartbeatها برای عامل پیشفرض فعال باشند.
- زمان اجرا: میزبان، سیستمعامل، node، مدل، ریشهی repo (وقتی تشخیص داده شود)، سطح تفکر (یک خط).
- استدلال: سطح دید فعلی + راهنمای toggle مربوط به /reasoning.
OpenClaw محتوای پایدار بزرگ، از جمله زمینهی پروژه، را بالای مرز داخلی کش پرامپت نگه میدارد. بخشهای فرّار کانال/نشست مانند راهنمای جاسازی رابط کنترل، پیامرسانی، صدا، زمینهی گفتوگوی گروهی، واکنشها، Heartbeats، و زمان اجرا پایین آن مرز افزوده میشوند تا backendهای محلی دارای کش پیشوند بتوانند پیشوند پایدار فضای کاری را در نوبتهای کانال دوباره استفاده کنند. توضیح ابزارها نیز باید از جاسازی نامهای فعلی کانال پرهیز کند، وقتی schema پذیرفتهشده از قبل آن جزئیات زمان اجرا را حمل میکند.
بخش ابزارها همچنین راهنمایی زمان اجرا را برای کارهای طولانیمدت شامل میشود:
- از Cron برای پیگیری آینده (
check back later، یادآورها، کار تکرارشونده) بهجای حلقههای sleep درexec، ترفندهای تاخیرyieldMs، یا polling تکراریprocessاستفاده کنید - از
exec/processفقط برای دستورهایی استفاده کنید که اکنون شروع میشوند و در پسزمینه به اجرا ادامه میدهند - وقتی بیدارسازی تکمیل خودکار فعال است، دستور را یکبار شروع کنید و به مسیر بیدارسازی push-based تکیه کنید، وقتی خروجی منتشر میکند یا شکست میخورد
- وقتی نیاز دارید یک دستور در حال اجرا را
بررسی کنید، برای لاگها، وضعیت، ورودی، یا مداخله از
processاستفاده کنید - اگر کار بزرگتر است،
sessions_spawnرا ترجیح دهید؛ تکمیل زیرعامل push-based است و بهصورت خودکار به درخواستکننده اعلام میشود - فقط برای انتظار تکمیل،
subagents list/sessions_listرا در حلقه poll نکنید
agents.defaults.subagents.delegationMode میتواند این راهنمایی را تقویت کند. حالت
پیشفرض suggest اشارهی پایه را نگه میدارد. prefer یک بخش اختصاصی
واگذاری زیرعامل اضافه میکند که به عامل اصلی میگوید بهعنوان یک هماهنگکنندهی پاسخگو عمل کند
و هر چیزی پیچیدهتر از پاسخ مستقیم را از طریق
sessions_spawn پیش ببرد. این فقط پرامپتی است؛ سیاست ابزار همچنان کنترل میکند که آیا
sessions_spawn در دسترس است یا نه.
وقتی ابزار آزمایشی update_plan فعال باشد، ابزارها همچنین به
مدل میگوید فقط برای کارهای چندمرحلهای غیرساده از آن استفاده کند، دقیقا یک
گام in_progress نگه دارد، و پس از هر بهروزرسانی کل طرح را تکرار نکند.
محدودیتهای ایمنی در پرامپت سیستمی توصیهای هستند. آنها رفتار مدل را هدایت میکنند اما سیاست را اعمال نمیکنند. برای اعمال سختگیرانه از سیاست ابزار، تاییدهای exec، سندباکس، و allowlistهای کانال استفاده کنید؛ اپراتورها میتوانند اینها را بهصورت طراحیشده غیرفعال کنند.
در کانالهایی با کارتها/دکمههای تایید بومی، پرامپت زمان اجرا اکنون به
عامل میگوید ابتدا به همان UI تایید بومی تکیه کند. فقط وقتی باید یک دستور دستی
/approve را شامل کند که نتیجهی ابزار بگوید تاییدهای چت در دسترس نیستند یا
تایید دستی تنها مسیر است.
حالتهای پرامپت
OpenClaw میتواند برای زیرعاملها پرامپتهای سیستمی کوچکتری رندر کند. زمان اجرا برای هر اجرا یک
promptMode تنظیم میکند (نه یک پیکربندی روبهروی کاربر):
full(پیشفرض): همهی بخشهای بالا را شامل میشود.minimal: برای زیرعاملها استفاده میشود؛ یادآوری حافظه، **خودبهروزرسانی OpenClaw **، نامهای مستعار مدل، هویت کاربر، دستورالعملهای خروجی دستیار، پیامرسانی، پاسخهای بیصدا، و Heartbeats را حذف میکند. ابزارها، ایمنی، Skills وقتی ارائه شده باشد، فضای کاری، سندباکس، تاریخ و زمان فعلی (وقتی معلوم باشد)، زمان اجرا، و زمینهی تزریقشده همچنان در دسترس میمانند.none: فقط خط هویت پایه را برمیگرداند.
وقتی promptMode=minimal باشد، پرامپتهای تزریقشدهی اضافی بهجای زمینهی گفتوگوی گروهی با برچسب زمینهی زیرعامل
نشان داده میشوند.
برای اجراهای پاسخ خودکار کانال، OpenClaw میتواند بخش عمومی پاسخهای بیصدا
را حذف کند، وقتی زمینهی چت مستقیم/گروهی از قبل رفتار
NO_REPLY ویژهی مکالمهی حلشده را شامل میشود. این کار از تکرار مکانیک توکن
هم در پرامپت سیستمی سراسری و هم در زمینهی کانال جلوگیری میکند.
snapshotهای پرامپت
OpenClaw snapshotهای پرامپت commitشده را برای مسیر موفق زمان اجرای Codex زیر
test/fixtures/agents/prompt-snapshots/codex-runtime-happy-path/ نگه میدارد. آنها
params انتخابشدهی thread/turn در app-server بههمراه یک پشتهی لایهی پرامپت متصل به مدل بازسازیشده
را برای نوبتهای مستقیم Telegram، گروه Discord، و Heartbeat رندر میکنند. آن پشته
شامل fixture پرامپت مدل Codex gpt-5.5 پینشده است که از شکل catalog/cache مدل Codex تولید شده،
متن developer مجوز مسیر موفق Codex،
دستورالعملهای developer مربوط به OpenClaw، دستورالعملهای collaboration-mode محدود به نوبت
وقتی OpenClaw آنها را ارائه کند، ورودی نوبت کاربر، و ارجاعها به specهای پویای ابزار.
fixture پرامپت مدل Codex پینشده را با
pnpm prompt:snapshots:sync-codex-model تازهسازی کنید. بهصورت پیشفرض، اسکریپت ابتدا بهدنبال
کش زمان اجرای Codex در $CODEX_HOME/models_cache.json میگردد، سپس
~/.codex/models_cache.json، و فقط بعد از آن به قرارداد checkout نگهدارندهی Codex
در ~/code/codex/codex-rs/models-manager/models.json fallback میکند. اگر
هیچکدام از این منبعها وجود نداشته باشند، دستور بدون تغییر fixture commitشده خارج میشود.
برای تازهسازی از یک فایل مشخص models_cache.json
یا models.json، --catalog <path> را پاس بدهید.
این snapshotها هنوز capture خام byte-for-byte از درخواست OpenAI نیستند. Codex
میتواند زمینهی فضای کاری متعلق به زمان اجرا مانند AGENTS.md، زمینهی محیط،
حافظهها، دستورالعملهای app/plugin، و دستورالعملهای داخلی Default
collaboration-mode را داخل زمان اجرای Codex پس از ارسال params مربوط به
thread و turn توسط OpenClaw اضافه کند.
آنها را با pnpm prompt:snapshots:gen دوباره تولید کنید و drift را با
pnpm prompt:snapshots:check راستیآزمایی کنید. CI بررسی drift را در shard مرزی اضافی اجرا میکند
تا تغییرات پرامپت و بهروزرسانیهای snapshot به همان
PR متصل بمانند.
تزریق bootstrap فضای کاری
فایلهای bootstrap کوتاهسازی میشوند و زیر زمینهی پروژه افزوده میشوند تا مدل بدون نیاز به خواندن صریح، زمینهی هویت و پروفایل را ببیند:
AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.md(فقط در فضای کاری کاملا جدید)MEMORY.mdوقتی وجود داشته باشد
همهی این فایلها در هر نوبت به پنجرهی زمینه تزریق میشوند مگر اینکه
یک gate ویژهی فایل اعمال شود. HEARTBEAT.md در اجراهای عادی حذف میشود وقتی
Heartbeatها برای عامل پیشفرض غیرفعال باشند یا
agents.defaults.heartbeat.includeSystemPromptSection false باشد. فایلهای تزریقشده
را موجز نگه دارید، بهویژه MEMORY.md. هدف MEMORY.md این است که یک
خلاصهی بلندمدت گزینششده بماند؛ یادداشتهای روزانهی مفصل باید در memory/*.md قرار بگیرند، جایی که
memory_search و memory_get بتوانند در صورت نیاز آنها را بازیابی کنند. فایلهای بزرگ
MEMORY.md مصرف پرامپت را افزایش میدهند و ممکن است بهدلیل
محدودیتهای فایل bootstrap زیر بهصورت جزئی تزریق شوند.
وقتی یک نشست روی harness بومی Codex اجرا میشود، Codex فایل AGENTS.md
را از طریق کشف project-doc خودش بارگذاری میکند. OpenClaw همچنان
فایلهای bootstrap باقیمانده را حل میکند و آنها را بهعنوان دستورالعملهای config Codex ارسال میکند، بنابراین SOUL.md،
TOOLS.md، IDENTITY.md، USER.md، HEARTBEAT.md، BOOTSTRAP.md، و
MEMORY.md همان نقش زمینهی فضای کاری را بدون تکرار
AGENTS.md حفظ میکنند.
فایلهای بزرگ با یک نشانگر کوتاه میشوند. حداکثر اندازهی هر فایل توسط
agents.defaults.bootstrapMaxChars کنترل میشود (پیشفرض: 12000). کل محتوای bootstrap تزریقشده
در سراسر فایلها توسط agents.defaults.bootstrapTotalMaxChars
محدود میشود (پیشفرض: 60000). فایلهای مفقود یک نشانگر کوتاه فایل-مفقود تزریق میکنند. وقتی کوتاهسازی
رخ میدهد، OpenClaw میتواند یک اعلان هشدار موجز پرامپت سیستمی تزریق کند؛ این را با
agents.defaults.bootstrapPromptTruncationWarning کنترل کنید (off، once، always;
پیشفرض: once). شمارشهای خام/تزریقشدهی تفصیلی در diagnostics مانند
/context، /status، doctor، و لاگها میمانند.
برای فایلهای حافظه، کوتاهسازی بهمعنای از دست رفتن داده نیست: فایل روی دیسک دستنخورده میماند،
اما مدل فقط نسخهی تزریقشدهی کوتاهشده را میبیند تا وقتی که حافظه را مستقیما بخواند یا جستوجو کند.
اگر MEMORY.md بارها کوتاه میشود، آن را به یک
خلاصهی پایدار کوتاهتر تقطیر کنید و تاریخچهی مفصل را به memory/*.md منتقل کنید، یا
عمدا محدودیتهای bootstrap را افزایش دهید.
نشستهای زیرعامل فقط AGENTS.md و TOOLS.md را تزریق میکنند (فایلهای bootstrap دیگر
برای کوچک نگه داشتن زمینهی زیرعامل فیلتر میشوند).
hookهای داخلی میتوانند این مرحله را از طریق agent:bootstrap رهگیری کنند تا
فایلهای bootstrap تزریقشده را تغییر دهند یا جایگزین کنند (برای مثال جایگزین کردن SOUL.md با یک پرسونای جایگزین).
اگر میخواهید لحن عامل کمتر عمومی به نظر برسد، با راهنمای شخصیت SOUL.md شروع کنید.
برای بررسی اینکه هر فایل تزریقشده چقدر سهم دارد (خام در برابر تزریقشده، کوتاهسازی، بهعلاوه سربار طرحواره ابزار)، از /context list یا /context detail استفاده کنید. بافت را ببینید.
مدیریت زمان
وقتی منطقه زمانی کاربر مشخص باشد، اعلان سیستم شامل یک بخش اختصاصی تاریخ و زمان فعلی است. برای پایدار نگه داشتن کش اعلان، اکنون فقط شامل منطقه زمانی است (بدون ساعت پویا یا قالب زمان).
وقتی عامل به زمان فعلی نیاز دارد از session_status استفاده کنید؛ کارت وضعیت شامل یک خط مُهر زمانی است. همین ابزار میتواند بهصورت اختیاری یک بازنویسی مدل برای هر نشست تنظیم کند (model=default آن را پاک میکند).
با این موارد پیکربندی کنید:
agents.defaults.userTimezoneagents.defaults.timeFormat(auto|12|24)
برای جزئیات کامل رفتار، تاریخ و زمان را ببینید.
Skills
وقتی Skills واجد شرایط وجود داشته باشد، OpenClaw یک فهرست فشرده Skills موجود (formatSkillsForPrompt) تزریق میکند که شامل مسیر فایل برای هر Skill است. اعلان به مدل دستور میدهد از read برای بارگذاری SKILL.md در مکان فهرستشده استفاده کند (فضای کاری، مدیریتشده، یا بستهبندیشده). اگر هیچ Skill واجد شرایطی وجود نداشته باشد، بخش Skills حذف میشود.
واجد شرایط بودن شامل دروازههای فراداده Skill، بررسیهای محیط اجرا/پیکربندی، و فهرست مجاز مؤثر Skills عامل است وقتی agents.defaults.skills یا agents.list[].skills پیکربندی شده باشد.
Skills بستهبندیشده همراه Plugin فقط زمانی واجد شرایط هستند که Plugin مالک آنها فعال باشد. این کار به Pluginهای ابزار اجازه میدهد راهنماهای عملیاتی عمیقتری ارائه کنند، بدون اینکه همه آن راهنماها مستقیماً در توضیح هر ابزار جاسازی شود.
<available_skills> <skill> <name>...</name> <description>...</description> <location>...</location> </skill></available_skills>این کار اعلان پایه را کوچک نگه میدارد و همچنان استفاده هدفمند از Skill را ممکن میکند.
بودجه فهرست Skills در مالکیت زیرسامانه Skills است:
- پیشفرض سراسری:
skills.limits.maxSkillsPromptChars - بازنویسی برای هر عامل:
agents.list[].skillsLimits.maxSkillsPromptChars
بریدههای محدود عمومی زمان اجرا از سطح متفاوتی استفاده میکنند:
agents.defaults.contextLimits.*agents.list[].contextLimits.*
این جداسازی، اندازهگذاری Skills را از اندازهگذاری خواندن/تزریق زمان اجرا مانند memory_get، نتایج زنده ابزار، و بازخوانیهای AGENTS.md پس از Compaction جدا نگه میدارد.
مستندات
اعلان سیستم شامل بخش مستندات است. وقتی مستندات محلی در دسترس باشد، به دایرکتوری محلی مستندات OpenClaw اشاره میکند (docs/ در یک checkout گیت یا مستندات بسته npm همراه). اگر مستندات محلی در دسترس نباشد، به
https://docs.openclaw.ai بازمیگردد.
همین بخش همچنین مکان منبع OpenClaw را شامل میشود. checkoutهای گیت ریشه منبع محلی را در اختیار میگذارند تا عامل بتواند کد را مستقیماً بررسی کند. نصبهای بسته شامل URL منبع GitHub هستند و به عامل میگویند هر زمان مستندات ناقص یا کهنه بود، منبع را در آنجا بررسی کند. اعلان همچنین به آینه عمومی مستندات، Discord جامعه، و ClawHub
(https://clawhub.ai) برای کشف Skills اشاره میکند. این اعلان به مدل میگوید برای رفتار، فرمانها، پیکربندی، یا معماری OpenClaw ابتدا به مستندات مراجعه کند و در صورت امکان خودش openclaw status را اجرا کند (فقط وقتی دسترسی ندارد از کاربر بپرسد).
بهطور خاص برای پیکربندی، عاملها را برای مستندات و محدودیتهای دقیق در سطح فیلد ابتدا به اقدام ابزار gateway یعنی config.schema.lookup، و سپس برای راهنمایی گستردهتر به
docs/gateway/configuration.md و docs/gateway/configuration-reference.md
هدایت میکند.