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 (در صورت وجود): به مدل میگوید چگونه دستورالعملهای مهارت را هنگام نیاز بارگذاری کند.
- کنترل OpenClaw: برای کارهای پیکربندی/راهاندازی مجدد، ابزار
gatewayرا ترجیح دهید؛ فرمانهای CLI را از خود نسازید. - بهروزرسانی خودکار OpenClaw: پیکربندی را با
config.schema.lookupبهطور ایمن بررسی کنید، باconfig.patchوصله کنید، کل پیکربندی را باconfig.applyجایگزین کنید وupdate.runرا فقط با درخواست صریح کاربر اجرا کنید. ابزارgatewayدر اختیار عامل، از بازنویسیtools.exec.ask/tools.exec.security، از جمله نامهای مستعار قدیمیtools.bash.*که به آن مسیرهای محافظتشده نرمالسازی میشوند، خودداری میکند. - فضای کاری: دایرکتوری کاری (
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 برابر false باشد، 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) را تزریق میکند که برای هر Skill شامل مسیر فایل و یک نشانگر <version>sha256:...</version> مشتقشده از محتوا است. پرامپت به مدل دستور میدهد برای بارگذاری SKILL.md از محل فهرستشده (فضای کاری، مدیریتشده یا همراه بسته) از read استفاده کند و هنگامی که <version> آن با نوبت قبلی تفاوت دارد، Skill را دوباره بخواند. اگر هیچ Skill واجد شرایطی وجود نداشته باشد، بخش Skills حذف میشود.
نوبتهای بومی Codex این فهرست را بهجای ورودی کاربر در هر نوبت، بهشکل دستورالعملهای توسعهدهندهٔ همکاری با دامنهٔ همان نوبت دریافت میکنند؛ بهجز نوبتهای سبک Cron که پرامپت زمانبندیشدهٔ دقیق را حفظ میکنند. سایر چارچوبهای اجرایی بخش معمول پرامپت را نگه میدارند.
مکان میتواند به یک Skill تودرتو، مانند skills/personal/foo/SKILL.md، اشاره کند. تودرتویی فقط برای سازماندهی است؛ پرامپت از نام تخت Skill در فرادادهٔ ابتدایی SKILL.md استفاده میکند.
واجد شرایط بودن شامل دروازههای فرادادهٔ Skill، بررسیهای محیط اجرا/پیکربندی و فهرست مجاز مؤثر Skills عامل در صورت پیکربندی agents.defaults.skills یا agents.list[].skills است. Skills همراه Plugin فقط زمانی واجد شرایطاند که Plugin مالک آنها فعال باشد؛ در نتیجه Pluginهای ابزار میتوانند بدون گنجاندن تمام آن راهنماییها در توضیح هر ابزار، راهنماهای عملیاتی عمیقتری ارائه کنند.
<available_skills> <skill> <name>...</name> <description>...</description> <location>...</location> <version>sha256:...</version> </skill></available_skills>این کار ضمن فعالکردن استفادهٔ هدفمند از Skill، پرامپت پایه را کوچک نگه میدارد. اندازهبندی بر عهدهٔ زیرسامانهٔ Skills است و از اندازهبندی عمومی خواندن/تزریق زمان اجرا جداست:
| دامنه | بودجهٔ پرامپت Skills | بودجهٔ گزیدهٔ زمان اجرا |
|---|---|---|
| سراسری | skills.limits.maxSkillsPromptChars |
agents.defaults.contextLimits.* |
| مختص عامل | agents.list[].skillsLimits.maxSkillsPromptChars |
agents.list[].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 ارجاع میدهد.