Fundamentals

پرامپت سیستم

OpenClaw برای هر اجرای عامل، یک پرامپت سیستمی سفارشی می‌سازد. این پرامپت متعلق به OpenClaw است و از پرامپت پیش‌فرض pi-coding-agent استفاده نمی‌کند.

پرامپت توسط OpenClaw مونتاژ و به هر اجرای عامل تزریق می‌شود.

Pluginهای ارائه‌دهنده می‌توانند راهنمایی پرامپت آگاه از کش را بدون جایگزین کردن کل پرامپت متعلق به OpenClaw اضافه کنند. runtime ارائه‌دهنده می‌تواند:

  • مجموعه کوچکی از بخش‌های هسته نام‌گذاری‌شده را جایگزین کند (interaction_style, tool_call_style, execution_bias)
  • یک پیشوند پایدار بالای مرز کش پرامپت تزریق کند
  • یک پسوند پویا پایین مرز کش پرامپت تزریق کند

از مشارکت‌های متعلق به ارائه‌دهنده برای تنظیم‌های خاص خانواده مدل استفاده کنید. جهش پرامپت قدیمی before_prompt_build را برای سازگاری یا تغییرات واقعاً سراسری پرامپت نگه دارید، نه برای رفتار عادی ارائه‌دهنده.

لایه OpenAI GPT-5 family قانون اجرای هسته را کوچک نگه می‌دارد و راهنمایی خاص مدل برای قفل شدن persona، خروجی موجز، انضباط ابزار، جست‌وجوی موازی، پوشش خروجی‌های تحویلی، راستی‌آزمایی، زمینه گمشده، و بهداشت ابزار ترمینال اضافه می‌کند.

ساختار

پرامپت عمداً فشرده است و از بخش‌های ثابت استفاده می‌کند:

  • ابزارها: یادآور منبع حقیقت ابزار ساخت‌یافته به‌همراه راهنمای runtime برای استفاده از ابزار.
  • سوگیری اجرا: راهنمای فشرده برای پیگیری: روی درخواست‌های قابل اقدام در همان نوبت عمل کن، تا پایان یا تا زمان مسدود شدن ادامه بده، از نتایج ضعیف ابزار بازیابی کن، وضعیت تغییرپذیر را زنده بررسی کن، و پیش از نهایی‌سازی راستی‌آزمایی کن.
  • ایمنی: یادآور کوتاه guardrail برای پرهیز از رفتار قدرت‌طلبانه یا دور زدن نظارت.
  • Skills (وقتی موجود باشد): به مدل می‌گوید چگونه دستورالعمل‌های skill را در صورت نیاز بارگذاری کند.
  • خودبه‌روزرسانی OpenClaw: چگونگی بازرسی امن پیکربندی با config.schema.lookup، patch کردن پیکربندی با config.patch، جایگزینی کامل پیکربندی با config.apply، و اجرای update.run فقط با درخواست صریح کاربر. ابزار فقط-مالک gateway همچنین از بازنویسی tools.exec.ask / tools.exec.security خودداری می‌کند، از جمله aliasهای قدیمی tools.bash.* که به آن مسیرهای exec محافظت‌شده نرمال‌سازی می‌شوند.
  • فضای کاری: دایرکتوری کاری (agents.defaults.workspace).
  • مستندات: مسیر محلی به مستندات OpenClaw (repo یا بسته npm) و زمان خواندن آن‌ها.
  • فایل‌های فضای کاری (تزریق‌شده): نشان می‌دهد فایل‌های bootstrap در پایین گنجانده شده‌اند.
  • Sandbox (وقتی فعال باشد): runtime ایزوله، مسیرهای sandbox، و اینکه exec ارتقایافته موجود است یا نه را نشان می‌دهد.
  • تاریخ و زمان فعلی: فقط منطقه زمانی (پایدار برای کش؛ ساعت زنده از session_status می‌آید).
  • برچسب‌های پاسخ: نحو اختیاری برچسب پاسخ برای ارائه‌دهندگان پشتیبانی‌شده.
  • Heartbeatها: پرامپت Heartbeat و رفتار ack، وقتی Heartbeatها برای عامل پیش‌فرض فعال باشند.
  • Runtime: میزبان، سیستم‌عامل، node، مدل، ریشه repo (وقتی تشخیص داده شود)، سطح فکر کردن (یک خط).
  • استدلال: سطح نمایانی فعلی + راهنمای toggle با /reasoning.

OpenClaw محتوای پایدار بزرگ، از جمله زمینه پروژه، را بالای مرز داخلی کش پرامپت نگه می‌دارد. بخش‌های ناپایدار channel/session مانند راهنمای embed مربوط به Control UI، پیام‌رسانی، صدا، زمینه گفت‌وگوی گروهی، واکنش‌ها، Heartbeatها، و Runtime پایین آن مرز افزوده می‌شوند تا backendهای محلی دارای کش پیشوند بتوانند پیشوند پایدار فضای کاری را در نوبت‌های کانال دوباره استفاده کنند. توصیف‌های ابزار نیز باید از تعبیه نام‌های فعلی کانال پرهیز کنند وقتی schema پذیرفته‌شده همان جزئیات runtime را از قبل حمل می‌کند.

بخش ابزارها همچنین راهنمای runtime برای کارهای طولانی‌مدت را شامل می‌شود:

  • برای پیگیری آینده (check back later، یادآورها، کارهای تکرارشونده) به‌جای حلقه‌های sleep با exec، ترفندهای تأخیر yieldMs، یا polling مکرر process از cron استفاده کن
  • از exec / process فقط برای دستورهایی استفاده کن که اکنون شروع می‌شوند و در پس‌زمینه ادامه پیدا می‌کنند
  • وقتی بیدارسازی تکمیل خودکار فعال است، دستور را یک بار شروع کن و روی مسیر wake مبتنی بر push تکیه کن وقتی خروجی منتشر می‌کند یا شکست می‌خورد
  • وقتی لازم است یک دستور در حال اجرا را بررسی کنی، برای logها، وضعیت، ورودی، یا مداخله از process استفاده کن
  • اگر کار بزرگ‌تر است، sessions_spawn را ترجیح بده؛ تکمیل زیرعامل مبتنی بر push است و به‌صورت خودکار به درخواست‌کننده اعلام می‌شود
  • فقط برای انتظار تکمیل، subagents list / sessions_list را در حلقه poll نکن

وقتی ابزار آزمایشی update_plan فعال است، ابزارها همچنین به مدل می‌گویند فقط برای کار چندمرحله‌ای غیرساده از آن استفاده کند، دقیقاً یک گام in_progress نگه دارد، و از تکرار کل برنامه پس از هر به‌روزرسانی پرهیز کند.

guardrailهای ایمنی در پرامپت سیستم توصیه‌ای هستند. آن‌ها رفتار مدل را هدایت می‌کنند اما policy را اعمال نمی‌کنند. برای اعمال سخت‌گیرانه از policy ابزار، تأییدهای exec، sandboxing، و allowlistهای کانال استفاده کنید؛ اپراتورها می‌توانند این‌ها را عمداً غیرفعال کنند.

در کانال‌هایی با کارت‌ها/دکمه‌های تأیید native، پرامپت runtime اکنون به عامل می‌گوید ابتدا بر همان UI تأیید native تکیه کند. فقط وقتی باید یک دستور دستی /approve را شامل کند که نتیجه ابزار بگوید تأییدهای chat در دسترس نیستند یا تأیید دستی تنها مسیر است.

حالت‌های پرامپت

OpenClaw می‌تواند پرامپت‌های سیستمی کوچک‌تری برای زیرعامل‌ها render کند. runtime برای هر اجرا یک promptMode تنظیم می‌کند (نه یک پیکربندی قابل مشاهده برای کاربر):

  • full (پیش‌فرض): همه بخش‌های بالا را شامل می‌شود.
  • minimal: برای زیرعامل‌ها استفاده می‌شود؛ Skills، فراخوانی حافظه، خودبه‌روزرسانی OpenClaw، نام‌های مستعار مدل، هویت کاربر، برچسب‌های پاسخ، پیام‌رسانی، پاسخ‌های خاموش، و Heartbeatها را حذف می‌کند. ابزارها، ایمنی، فضای کاری، Sandbox، تاریخ و زمان فعلی (وقتی معلوم باشد)، Runtime، و زمینه تزریق‌شده همچنان در دسترس می‌مانند.
  • none: فقط خط هویت پایه را برمی‌گرداند.

وقتی promptMode=minimal باشد، پرامپت‌های تزریق‌شده اضافی به‌جای زمینه گفت‌وگوی گروهی با زمینه زیرعامل برچسب‌گذاری می‌شوند.

برای اجراهای پاسخ خودکار کانال، OpenClaw می‌تواند بخش عمومی پاسخ‌های خاموش را حذف کند وقتی زمینه گفت‌وگوی مستقیم/گروهی از قبل رفتار conversation-specific NO_REPLY حل‌شده را شامل می‌شود. این کار از تکرار مکانیک توکن هم در پرامپت سیستم سراسری و هم در زمینه کانال جلوگیری می‌کند.

snapshotهای پرامپت

OpenClaw snapshotهای پرامپت commit‌شده را برای مسیر موفق runtime مربوط به Codex زیر test/fixtures/agents/prompt-snapshots/codex-runtime-happy-path/ نگه می‌دارد. آن‌ها پارامترهای منتخب thread/turn از app-server به‌همراه یک stack بازسازی‌شده از لایه‌های پرامپت bound به مدل را برای نوبت‌های مستقیم Telegram، گروه Discord، و Heartbeat render می‌کنند. آن stack شامل fixture پرامپت مدل Codex gpt-5.5 سنجاق‌شده‌ای است که از شکل catalog/cache مدل‌های Codex تولید شده، متن developer مجوز مسیر موفق Codex، دستورالعمل‌های developer OpenClaw، دستورالعمل‌های collaboration-mode با scope نوبت وقتی OpenClaw آن‌ها را فراهم می‌کند، ورودی نوبت کاربر، و ارجاع‌ها به مشخصات پویای ابزار را در بر می‌گیرد.

fixture پرامپت مدل Codex سنجاق‌شده را با pnpm prompt:snapshots:sync-codex-model تازه‌سازی کنید. به‌صورت پیش‌فرض، اسکریپت ابتدا به‌دنبال کش runtime مربوط به Codex در $CODEX_HOME/models_cache.json می‌گردد، سپس ~/.codex/models_cache.json، و فقط بعد از آن به convention 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 می‌تواند پس از اینکه OpenClaw پارامترهای thread و turn را ارسال کرد، زمینه فضای کاری متعلق به runtime مانند AGENTS.md، زمینه محیط، حافظه‌ها، دستورالعمل‌های app/plugin، و دستورالعمل‌های builtin Default collaboration-mode را داخل runtime Codex اضافه کند.

آن‌ها را با pnpm prompt:snapshots:gen بازتولید کنید و drift را با pnpm prompt:snapshots:check راستی‌آزمایی کنید. CI بررسی drift را در shard مرزی اضافی اجرا می‌کند تا تغییرات پرامپت و به‌روزرسانی‌های snapshot به همان PR متصل بمانند.

تزریق bootstrap فضای کاری

فایل‌های bootstrap کوتاه‌سازی و زیر زمینه پروژه افزوده می‌شوند تا مدل زمینه هویت و profile را بدون نیاز به خواندن صریح ببیند:

  • AGENTS.md
  • SOUL.md
  • TOOLS.md
  • IDENTITY.md
  • USER.md
  • HEARTBEAT.md
  • BOOTSTRAP.md (فقط در workspaceهای کاملاً جدید)
  • MEMORY.md وقتی موجود باشد

همه این فایل‌ها در هر نوبت به پنجره زمینه تزریق می‌شوند مگر اینکه gate خاص فایل اعمال شود. HEARTBEAT.md در اجراهای عادی وقتی Heartbeatها برای عامل پیش‌فرض غیرفعال باشند یا agents.defaults.heartbeat.includeSystemPromptSection برابر false باشد حذف می‌شود. فایل‌های تزریق‌شده را موجز نگه دارید — به‌ویژه MEMORY.md، که می‌تواند با گذر زمان رشد کند و به استفاده غیرمنتظره زیاد از زمینه و Compactionهای مکررتر منجر شود.

وقتی یک session روی harness native Codex اجرا می‌شود، Codex فایل AGENTS.md را از طریق کشف project-doc خودش بارگذاری می‌کند. OpenClaw همچنان باقی فایل‌های bootstrap را resolve می‌کند و آن‌ها را به‌عنوان دستورالعمل‌های config به Codex فوروارد می‌کند، بنابراین SOUL.md، TOOLS.md، IDENTITY.md، USER.md، HEARTBEAT.md، BOOTSTRAP.md، و MEMORY.md همان نقش زمینه فضای کاری را بدون تکرار AGENTS.md حفظ می‌کنند.

فایل‌های بزرگ با یک marker کوتاه می‌شوند. حداکثر اندازه هر فایل توسط agents.defaults.bootstrapMaxChars کنترل می‌شود (پیش‌فرض: 12000). کل محتوای bootstrap تزریق‌شده در همه فایل‌ها توسط agents.defaults.bootstrapTotalMaxChars محدود می‌شود (پیش‌فرض: 60000). فایل‌های گم‌شده یک marker کوتاه missing-file تزریق می‌کنند. وقتی truncation رخ دهد، OpenClaw می‌تواند یک اعلان هشدار موجز system-prompt تزریق کند؛ این را با agents.defaults.bootstrapPromptTruncationWarning کنترل کنید (off، once، always؛ پیش‌فرض: once). شمارش‌های خام/تزریق‌شده دقیق در diagnostics مانند /context، /status، doctor، و logها باقی می‌مانند.

sessionهای زیرعامل فقط AGENTS.md و TOOLS.md را تزریق می‌کنند (سایر فایل‌های bootstrap برای کوچک نگه داشتن زمینه زیرعامل فیلتر می‌شوند).

hookهای داخلی می‌توانند این مرحله را از طریق agent:bootstrap intercept کنند تا فایل‌های bootstrap تزریق‌شده را تغییر دهند یا جایگزین کنند (برای نمونه، جایگزینی SOUL.md با یک persona جایگزین).

اگر می‌خواهید عامل کمتر generic به‌نظر برسد، از راهنمای شخصیت SOUL.md شروع کنید.

برای بررسی اینکه هر فایل تزریق‌شده چقدر سهم دارد (خام در برابر تزریق‌شده، truncation، به‌علاوه سربار schema ابزار)، از /context list یا /context detail استفاده کنید. زمینه را ببینید.

مدیریت زمان

پرامپت سیستم وقتی منطقه زمانی کاربر معلوم باشد، یک بخش اختصاصی تاریخ و زمان فعلی شامل می‌شود. برای پایدار نگه داشتن کش پرامپت، اکنون فقط منطقه زمانی را شامل می‌شود (بدون ساعت پویا یا قالب زمان).

وقتی عامل به زمان فعلی نیاز دارد از session_status استفاده کنید؛ کارت وضعیت یک خط timestamp دارد. همین ابزار می‌تواند به‌صورت اختیاری یک override مدل برای هر session تنظیم کند (model=default آن را پاک می‌کند).

با این موارد پیکربندی کنید:

  • agents.defaults.userTimezone
  • agents.defaults.timeFormat (auto | 12 | 24)

برای جزئیات کامل رفتار، تاریخ و زمان را ببینید.

Skills

وقتی skillهای واجد شرایط وجود داشته باشند، OpenClaw یک فهرست فشرده skills موجود (formatSkillsForPrompt) تزریق می‌کند که مسیر فایل هر skill را شامل می‌شود. پرامپت به مدل دستور می‌دهد از read برای بارگذاری SKILL.md در مکان فهرست‌شده (workspace، managed، یا bundled) استفاده کند. اگر هیچ skill واجد شرایطی نباشد، بخش Skills حذف می‌شود.

واجد شرایط بودن شامل gateهای metadata مربوط به skill، بررسی‌های محیط/config در runtime، و allowlist مؤثر skill عامل است وقتی agents.defaults.skills یا agents.list[].skills پیکربندی شده باشد.

skillهای bundled در Plugin فقط وقتی واجد شرایط هستند که Plugin مالکشان فعال باشد. این اجازه می‌دهد Pluginهای ابزار، راهنماهای عملیاتی عمیق‌تری را بدون تعبیه همه آن راهنمایی‌ها مستقیماً در هر توصیف ابزار ارائه کنند.

<available_skills>
  <skill>
    <name>...</name>
    <description>...</description>
    <location>...</location>
  </skill>
</available_skills>

این کار پرامپت پایه را کوچک نگه می‌دارد و در عین حال استفاده هدفمند از skill را ممکن می‌کند.

بودجهٔ فهرست Skills متعلق به زیرسامانهٔ Skills است:

  • پیش‌فرض سراسری: skills.limits.maxSkillsPromptChars
  • بازنویسی برای هر agent: agents.list[].skillsLimits.maxSkillsPromptChars

گزیده‌های عمومیِ محدودشده در زمان اجرا از سطح متفاوتی استفاده می‌کنند:

  • agents.defaults.contextLimits.*
  • agents.list[].contextLimits.*

این تفکیک، اندازه‌گذاری Skills را از اندازه‌گذاری خواندن/تزریق در زمان اجرا جدا نگه می‌دارد، مانند memory_get، نتایج زندهٔ ابزار، و نوسازی‌های AGENTS.md پس از Compaction.

مستندات

system prompt شامل بخشی با عنوان مستندات است. وقتی مستندات محلی در دسترس باشد، به پوشهٔ مستندات محلی OpenClaw اشاره می‌کند (docs/ در یک checkout از Git یا مستندات بستهٔ npm همراه‌شده). اگر مستندات محلی در دسترس نباشد، به https://docs.openclaw.ai بازمی‌گردد.

همان بخش، محل منبع OpenClaw را نیز شامل می‌شود. checkoutهای Git ریشهٔ منبع محلی را در اختیار می‌گذارند تا agent بتواند کد را مستقیماً بررسی کند. نصب‌های بسته شامل URL منبع GitHub هستند و به agent می‌گویند هر زمان مستندات ناقص یا قدیمی بود، منبع را آنجا بررسی کند. prompt همچنین mirror عمومی مستندات، Discord جامعه، و ClawHub (https://clawhub.ai) را برای کشف Skills ذکر می‌کند. به مدل می‌گوید برای رفتار، فرمان‌ها، پیکربندی، یا معماری OpenClaw ابتدا به مستندات مراجعه کند، و در صورت امکان خودش openclaw status را اجرا کند (فقط وقتی دسترسی ندارد از کاربر بپرسد). به‌طور خاص برای پیکربندی، agentها را برای مستندات و محدودیت‌های دقیق در سطح فیلد به کنش ابزار gateway یعنی config.schema.lookup ارجاع می‌دهد، سپس به docs/gateway/configuration.md و docs/gateway/configuration-reference.md برای راهنمایی گسترده‌تر اشاره می‌کند.

مرتبط