Technical reference
مصرف توکن و هزینهها
OpenClaw توکنها را ردیابی میکند، نه نویسهها را. توکنها وابسته به مدل هستند، اما بیشتر مدلهای سبک OpenAI بهطور میانگین برای متن انگلیسی حدود ۴ نویسه بهازای هر توکن دارند.
پرامپت سیستمی چگونه ساخته میشود
OpenClaw در هر اجرا پرامپت سیستمی خودش را میسازد. این پرامپت شامل موارد زیر است:
- فهرست ابزارها + توضیحهای کوتاه
- فهرست Skills (فقط فراداده؛ دستورالعملها هنگام نیاز با
readبارگذاری میشوند). بلوک فشرده Skills باskills.limits.maxSkillsPromptCharsمحدود میشود، و امکان بازنویسی اختیاری برای هر عامل درagents.list[].skillsLimits.maxSkillsPromptCharsوجود دارد. - دستورالعملهای خودبهروزرسانی
- فضای کاری + فایلهای راهاندازی (
AGENTS.md،SOUL.md،TOOLS.md،IDENTITY.md،USER.md،HEARTBEAT.md،BOOTSTRAP.mdهنگام تازه بودن، بهعلاوهMEMORY.mdدر صورت وجود). ریشهی حروفکوچکmemory.mdتزریق نمیشود؛ این ورودی ترمیم قدیمی برایopenclaw doctor --fixاست، وقتی همراه باMEMORY.mdباشد. فایلهای بزرگ باagents.defaults.bootstrapMaxCharsکوتاه میشوند (پیشفرض: 12000)، و کل تزریق راهاندازی باagents.defaults.bootstrapTotalMaxCharsمحدود میشود (پیشفرض: 60000). فایلهای روزانهیmemory/*.mdبخشی از پرامپت راهاندازی معمول نیستند؛ در نوبتهای عادی همچنان فقط هنگام نیاز از طریق ابزارهای حافظه در دسترس میمانند، اما اجراهای بازنشانی/شروع مدل میتوانند یک بلوک یکبارهی زمینهی شروع را با حافظهی روزانهی اخیر برای همان نوبت اول پیشوند کنند. دستورهای گفتوگوی خام/newو/resetبدون فراخوانی مدل تأیید میشوند. پیشدرآمد شروع باagents.defaults.startupContextکنترل میشود. - زمان (UTC + منطقه زمانی کاربر)
- برچسبهای پاسخ + رفتار Heartbeat
- فرادادهی زمان اجرا (میزبان/سیستمعامل/مدل/تفکر)
جزئیات کامل را در پرامپت سیستمی ببینید.
چه چیزهایی در پنجرهی زمینه حساب میشوند
هر چیزی که مدل دریافت میکند در محدودیت زمینه حساب میشود:
- پرامپت سیستمی (همهی بخشهای فهرستشده در بالا)
- تاریخچهی گفتگو (پیامهای کاربر + دستیار)
- فراخوانیهای ابزار و نتیجههای ابزار
- پیوستها/رونوشتها (تصویر، صوت، فایل)
- خلاصههای Compaction و مصنوعات هرس
- پوششهای ارائهدهنده یا سرآیندهای ایمنی (قابل مشاهده نیستند، اما همچنان حساب میشوند)
برخی سطحهای سنگین در زمان اجرا سقفهای صریح خودشان را دارند:
agents.defaults.contextLimits.memoryGetMaxCharsagents.defaults.contextLimits.memoryGetDefaultLinesagents.defaults.contextLimits.toolResultMaxCharsagents.defaults.contextLimits.postCompactionMaxChars
بازنویسیهای مخصوص هر عامل زیر agents.list[].contextLimits قرار دارند. این تنظیمها
برای گزیدههای محدود زمان اجرا و بلوکهای تزریقشدهی متعلق به زمان اجرا هستند. آنها
از محدودیتهای راهاندازی، محدودیتهای زمینهی شروع و محدودیتهای پرامپت Skills
جدا هستند.
برای تصویرها، OpenClaw پیش از فراخوانیهای ارائهدهنده، payloadهای تصویر رونوشت/ابزار را کوچکمقیاس میکند.
برای تنظیم این رفتار از agents.defaults.imageMaxDimensionPx استفاده کنید (پیشفرض: 1200):
- مقادیر کمتر معمولاً مصرف توکنهای بینایی و اندازهی payload را کاهش میدهند.
- مقادیر بالاتر جزئیات بصری بیشتری را برای OCR/اسکرینشاتهای سنگین UI حفظ میکنند.
برای یک تفکیک عملی (بهازای هر فایل تزریقشده، ابزارها، Skills و اندازهی پرامپت سیستمی)، از /context list یا /context detail استفاده کنید. زمینه را ببینید.
چگونه مصرف فعلی توکن را ببینید
در گفتگو از اینها استفاده کنید:
/status→ کارت وضعیت سرشار از ایموجی با مدل نشست، مصرف زمینه، توکنهای ورودی/خروجی آخرین پاسخ، و هزینهی تخمینی (فقط کلید API)./usage off|tokens|full→ یک پاورقی مصرف بهازای هر پاسخ به هر پاسخ اضافه میکند.- برای هر نشست پایدار میماند (بهصورت
responseUsageذخیره میشود). - احراز هویت OAuth هزینه را پنهان میکند (فقط توکنها).
- برای هر نشست پایدار میماند (بهصورت
/usage cost→ خلاصهی هزینهی محلی را از لاگهای نشست OpenClaw نشان میدهد.
سطحهای دیگر:
- TUI/Web TUI:
/status+/usageپشتیبانی میشوند. - CLI:
openclaw status --usageوopenclaw channels listپنجرههای سهمیهی نرمالشدهی ارائهدهنده را نشان میدهند (X% left، نه هزینههای بهازای هر پاسخ). ارائهدهندگان فعلی پنجرهی مصرف: Anthropic، GitHub Copilot، Gemini CLI، OpenAI Codex، MiniMax، Xiaomi و z.ai.
سطحهای مصرف پیش از نمایش، نامهای مستعار رایج فیلدهای بومی ارائهدهنده را نرمالسازی میکنند.
برای ترافیک Responses خانوادهی OpenAI، این شامل هر دو input_tokens /
output_tokens و prompt_tokens / completion_tokens است، بنابراین نامهای فیلد
ویژهی انتقال، /status، /usage یا خلاصههای نشست را تغییر نمیدهند.
مصرف JSON در Gemini CLI هم نرمالسازی میشود: متن پاسخ از response میآید، و
stats.cached به cacheRead نگاشت میشود و وقتی CLI فیلد صریح stats.input را حذف کند،
از stats.input_tokens - stats.cached استفاده میشود.
برای ترافیک بومی Responses خانوادهی OpenAI، نامهای مستعار مصرف WebSocket/SSE نیز
به همین روش نرمالسازی میشوند، و وقتی total_tokens وجود نداشته باشد یا 0 باشد،
مجموعها به ورودی + خروجی نرمالشده برمیگردند.
وقتی snapshot نشست فعلی کمجزئیات باشد، /status و session_status میتوانند
شمارندههای توکن/کش و برچسب مدل فعال زمان اجرا را نیز از تازهترین لاگ مصرف رونوشت
بازیابی کنند. مقدارهای زندهی غیرصفر موجود همچنان بر مقدارهای پشتیبان رونوشت
اولویت دارند، و مجموعهای بزرگتر رونوشت با جهتگیری پرامپت میتوانند وقتی مجموعهای ذخیرهشده
وجود ندارند یا کوچکتر هستند، غالب شوند.
احراز هویت مصرف برای پنجرههای سهمیهی ارائهدهنده، در صورت وجود از hookهای ویژهی ارائهدهنده
میآید؛ در غیر این صورت OpenClaw به تطبیق اعتبارنامههای OAuth/کلید API
از پروفایلهای احراز هویت، env یا پیکربندی برمیگردد.
ورودیهای رونوشت دستیار همان شکل مصرف نرمالشده را نگه میدارند، از جمله
usage.cost وقتی مدل فعال قیمتگذاری پیکربندیشده داشته باشد و ارائهدهنده
فرادادهی مصرف را برگرداند. این به /usage cost و وضعیت نشست مبتنی بر رونوشت
یک منبع پایدار میدهد، حتی بعد از اینکه وضعیت زندهی زمان اجرا از بین رفته باشد.
OpenClaw حسابداری مصرف ارائهدهنده را از snapshot زمینهی فعلی جدا نگه میدارد.
usage.total ارائهدهنده میتواند شامل ورودی کششده، خروجی و چندین
فراخوانی مدل در حلقهی ابزار باشد، بنابراین برای هزینه و تلهمتری مفید است اما میتواند
پنجرهی زمینهی زنده را بیشازحد نشان دهد. نمایشها و عیبیابیهای زمینه از تازهترین snapshot پرامپت
(promptTokens، یا آخرین فراخوانی مدل وقتی snapshot پرامپت در دسترس نیست)
برای context.used استفاده میکنند.
تخمین هزینه (وقتی نمایش داده شود)
هزینهها از پیکربندی قیمتگذاری مدل شما تخمین زده میشوند:
models.providers.<provider>.models[].cost
اینها USD بهازای ۱ میلیون توکن برای input، output، cacheRead و
cacheWrite هستند. اگر قیمتگذاری وجود نداشته باشد، OpenClaw فقط توکنها را نشان میدهد. توکنهای OAuth
هرگز هزینهی دلاری را نشان نمیدهند.
بعد از اینکه sidecarها و کانالها به مسیر آمادهی Gateway برسند، OpenClaw یک
راهاندازی اختیاری قیمتگذاری پسزمینه را برای ارجاعهای مدل پیکربندیشدهای شروع میکند که از قبل
قیمتگذاری محلی ندارند. این راهاندازی، کاتالوگهای قیمتگذاری راهدور OpenRouter و LiteLLM
را دریافت میکند. برای رد کردن این دریافتهای کاتالوگ در شبکههای آفلاین یا محدود،
models.pricing.enabled: false را تنظیم کنید؛ ورودیهای صریح
models.providers.*.models[].cost همچنان تخمینهای هزینهی محلی را هدایت میکنند.
TTL کش و اثر هرس
کشکردن پرامپت ارائهدهنده فقط درون پنجرهی TTL کش اعمال میشود. OpenClaw میتواند بهصورت اختیاری هرس TTL کش را اجرا کند: پس از منقضی شدن TTL کش، نشست را هرس میکند و سپس پنجرهی کش را بازنشانی میکند تا درخواستهای بعدی بتوانند بهجای کشکردن دوبارهی کل تاریخچه، از زمینهی تازه کششده دوباره استفاده کنند. این کار وقتی یک نشست پس از TTL بیکار میماند، هزینههای نوشتن کش را پایینتر نگه میدارد.
آن را در پیکربندی Gateway تنظیم کنید و جزئیات رفتار را در هرس نشست ببینید.
Heartbeat میتواند کش را در فاصلههای بیکاری گرم نگه دارد. اگر TTL کش مدل شما
1h است، تنظیم فاصلهی Heartbeat کمی کمتر از آن (مثلاً 55m) میتواند از
کشکردن دوبارهی کل پرامپت جلوگیری کند و هزینههای نوشتن کش را کاهش دهد.
در تنظیمات چندعاملی، میتوانید یک پیکربندی مدل مشترک نگه دارید و رفتار کش را
برای هر عامل با agents.list[].params.cacheRetention تنظیم کنید.
برای راهنمای کامل تکبهتک تنظیمها، کش پرامپت را ببینید.
برای قیمتگذاری API در Anthropic، خواندنهای کش بهطور قابلتوجهی ارزانتر از توکنهای ورودی هستند، در حالی که نوشتنهای کش با ضریب بالاتری صورتحساب میشوند. برای تازهترین نرخها و ضرایب TTL، قیمتگذاری کش پرامپت Anthropic را ببینید: https://docs.anthropic.com/docs/build-with-claude/prompt-caching
مثال: گرم نگه داشتن کش 1h با Heartbeat
agents:
defaults:
model:
primary: "anthropic/claude-opus-4-6"
models:
"anthropic/claude-opus-4-6":
params:
cacheRetention: "long"
heartbeat:
every: "55m"
مثال: ترافیک ترکیبی با راهبرد کش برای هر عامل
agents:
defaults:
model:
primary: "anthropic/claude-opus-4-6"
models:
"anthropic/claude-opus-4-6":
params:
cacheRetention: "long" # default baseline for most agents
list:
- id: "research"
default: true
heartbeat:
every: "55m" # keep long cache warm for deep sessions
- id: "alerts"
params:
cacheRetention: "none" # avoid cache writes for bursty notifications
agents.list[].params روی params مدل انتخابشده ادغام میشود، بنابراین میتوانید
فقط cacheRetention را بازنویسی کنید و سایر پیشفرضهای مدل را بدون تغییر به ارث ببرید.
مثال: فعالسازی سرآیند بتای زمینهی 1M در Anthropic
پنجرهی زمینهی 1M در Anthropic در حال حاضر پشت دروازهی بتا است. OpenClaw میتواند مقدار
ضروری anthropic-beta را وقتی context1m را روی مدلهای پشتیبانیشدهی Opus
یا Sonnet فعال کنید، تزریق کند.
agents:
defaults:
models:
"anthropic/claude-opus-4-6":
params:
context1m: true
این به سرآیند بتای context-1m-2025-08-07 در Anthropic نگاشت میشود.
این فقط زمانی اعمال میشود که context1m: true روی آن ورودی مدل تنظیم شده باشد.
نیازمندی: اعتبارنامه باید برای مصرف زمینهی بلند واجد شرایط باشد. در غیر این صورت، Anthropic برای آن درخواست با خطای محدودیت نرخ سمت ارائهدهنده پاسخ میدهد.
اگر Anthropic را با توکنهای OAuth/اشتراک (sk-ant-oat-*) احراز هویت کنید،
OpenClaw سرآیند بتای context-1m-* را رد میکند، چون Anthropic در حال حاضر
این ترکیب را با HTTP 401 رد میکند.
نکتههایی برای کاهش فشار توکن
- برای خلاصهکردن نشستهای طولانی از
/compactاستفاده کنید. - خروجیهای بزرگ ابزار را در گردشکارهای خود کوتاه کنید.
- برای نشستهایی که اسکرینشات زیادی دارند،
agents.defaults.imageMaxDimensionPxرا کاهش دهید. - توضیحهای Skills را کوتاه نگه دارید (فهرست Skill در پرامپت تزریق میشود).
- برای کارهای پرحرف و اکتشافی، مدلهای کوچکتر را ترجیح دهید.
برای فرمول دقیق سربار فهرست Skill، Skills را ببینید.