Sessions and memory
ابزارهای نشست
OpenClaw به عاملها ابزارهایی میدهد تا در چند نشست کار کنند، وضعیت را بررسی کنند و زیرعاملها را هماهنگ کنند.
ابزارهای موجود
| ابزار | کاری که انجام میدهد |
|---|---|
sessions_list |
نشستها را با فیلترهای اختیاری فهرست میکند (نوع، برچسب، عامل، بایگانی، پیشنمایش) |
sessions_history |
رونوشت یک نشست مشخص را میخواند |
sessions_send |
پیامی را به نشست دیگری میفرستد و در صورت نیاز منتظر میماند |
sessions_spawn |
یک نشست زیرعامل ایزوله برای کار پسزمینه ایجاد میکند |
sessions_yield |
نوبت فعلی را پایان میدهد و منتظر نتایج بعدی زیرعامل میماند |
subagents |
وضعیت زیرعاملهای ایجادشده برای این نشست را فهرست میکند |
session_status |
کارتی به سبک /status نشان میدهد و در صورت نیاز بازنویسی مدل برای هر نشست را تنظیم میکند |
این ابزارها همچنان تابع نمایه ابزار فعال و سیاست اجازه/رد هستند.
tools.profile: "coding" مجموعه کامل هماهنگسازی نشست را شامل میشود، از جمله
sessions_spawn، sessions_yield، و subagents.
tools.profile: "messaging" ابزارهای پیامرسانی میاننشستی را شامل میشود
(sessions_list، sessions_history، sessions_send، session_status) اما
ایجاد زیرعامل را شامل نمیشود. برای نگه داشتن نمایه پیامرسانی و همچنان
اجازه دادن به واگذاری بومی، اضافه کنید:
{ tools: { profile: "messaging", alsoAllow: ["sessions_spawn", "sessions_yield", "subagents"], },}سیاستهای گروه، ارائهدهنده، سندباکس و هر عامل همچنان میتوانند پس از مرحله
نمایه این ابزارها را حذف کنند. از /tools در نشست تحت تاثیر استفاده کنید تا
فهرست ابزار موثر را بررسی کنید.
فهرستکردن و خواندن نشستها
sessions_list نشستها را همراه با کلید، agentId، نوع، کانال، مدل،
شمارش توکنها و زمانمهرها برمیگرداند. بر اساس نوع (main، group، cron، hook،
node)، label دقیق، agentId دقیق، متن جستوجو، یا تازگی
(activeMinutes) فیلتر کنید. نشستهای فعال بهطور پیشفرض برگردانده میشوند؛
برای بررسی نشستهای بایگانیشده archived: true را ارسال کنید. ردیفها وضعیت
سنجاقشده و بایگانیشده خود را شامل میشوند. وقتی به تریاژ شبیه صندوق پستی
نیاز دارید، میتواند برای هر ردیف یک عنوان مشتقشده با دامنه دیدپذیری، یک
قطعه پیشنمایش از آخرین پیام، یا پیامهای اخیر محدودشده نیز درخواست کند.
عنوانها و پیشنمایشهای مشتقشده فقط برای نشستهایی تولید میشوند که فراخواننده
از پیش میتواند تحت سیاست دیدپذیری ابزار نشست پیکربندیشده ببیند، بنابراین
نشستهای نامرتبط پنهان میمانند. وقتی دیدپذیری محدود شده باشد، sessions_list
فراداده اختیاری visibility را برمیگرداند که حالت موثر و هشداری را نشان میدهد
که نتایج ممکن است به دامنه محدود شده باشند.
sessions_history رونوشت گفتوگو را برای یک نشست مشخص دریافت میکند.
بهطور پیشفرض، نتایج ابزار حذف میشوند -- برای دیدن آنها includeTools: true را ارسال کنید.
برای جدیدترین دنباله محدودشده از limit استفاده کنید. وقتی به فراداده صفحهبندی
نیاز دارید offset: 0 را ارسال کنید، سپس مقدارهای nextOffset برگشتی را ارسال کنید
تا بدون خواندن فایلهای خام رونوشت، در پنجرههای قدیمیتر رونوشت OpenClaw به عقب
صفحهبندی کنید. صفحههای دارای offset صریح، واردسازیهای جایگزین CLI خارجی را
ادغام نمیکنند؛ وقتی به آن تاریخچه نمایش ادغامشده نیاز دارید از نمای پیشفرض
جدیدترین دنباله استفاده کنید.
نمای برگشتی عمدا محدود و با فیلتر ایمنی است:
- متن دستیار پیش از یادآوری نرمالسازی میشود:
- برچسبهای تفکر حذف میشوند
- بلوکهای داربست
<relevant-memories>/<relevant_memories>حذف میشوند - بلوکهای payload XML فراخوانی ابزار در متن ساده، مانند
<tool_call>...</tool_call>،<function_call>...</function_call>،<tool_calls>...</tool_calls>، و<function_calls>...</function_calls>حذف میشوند، از جمله payloadهای ناقصی که هرگز بهدرستی بسته نمیشوند - داربست فراخوانی/نتیجه ابزار تنزلیافته، مانند
[Tool Call: ...]،[Tool Result ...]، و[Historical context ...]حذف میشود - توکنهای کنترل مدل افشاشده، مانند
<|assistant|>، سایر توکنهای ASCII<|...|>، و گونههای تمامعرض<|...|>حذف میشوند - XML فراخوانی ابزار MiniMax خراب، مانند
<invoke ...>/</minimax:tool_call>حذف میشود
- متن شبیه اعتبارنامه/توکن پیش از بازگردانده شدن ویرایش میشود
- بلوکهای متنی طولانی کوتاه میشوند
- تاریخچههای بسیار بزرگ میتوانند ردیفهای قدیمیتر را حذف کنند یا یک ردیف بیشازحد بزرگ را با
[sessions_history omitted: message too large]جایگزین کنند - ابزار پرچمهای خلاصه مانند
truncated،droppedMessages،contentTruncated،contentRedacted،bytesو فراداده صفحهبندی را گزارش میکند
هر دو ابزار یا یک کلید نشست (مانند "main") یا یک شناسه نشست
از یک فراخوانی فهرست قبلی را میپذیرند.
اگر به رونوشت دقیق بایتبهبایت نیاز دارید، بهجای برخورد با sessions_history
بهعنوان یک dump خام، فایل رونوشت روی دیسک را بررسی کنید.
فرستادن پیامهای میاننشستی
sessions_send پیامی را به نشست دیگری تحویل میدهد و در صورت نیاز منتظر
پاسخ میماند:
- ارسال و رهاسازی:
timeoutSeconds: 0را تنظیم کنید تا در صف قرار دهد و بلافاصله برگردد. - انتظار برای پاسخ: یک timeout تنظیم کنید و پاسخ را درجا دریافت کنید.
نشستهای چت محدود به thread، مانند کلیدهای Slack یا Discord که به
:thread:<id> ختم میشوند، هدفهای معتبر sessions_send نیستند. برای هماهنگی
میانعاملها از کلید نشست کانال والد استفاده کنید تا پیامهای مسیریابیشده با
ابزار داخل یک thread فعال روبهروی انسان ظاهر نشوند.
پیامها و پاسخهای پیگیری A2A بهعنوان داده میاننشستی در prompt دریافتکننده
([Inter-session message ... isUser=false]) و در منشأ رونوشت علامتگذاری میشوند.
عامل دریافتکننده باید با آنها بهعنوان داده مسیریابیشده با ابزار برخورد کند،
نه بهعنوان دستور مستقیم نوشتهشده توسط کاربر نهایی.
پس از پاسخدادن هدف، OpenClaw میتواند یک حلقه پاسخبرگشتی اجرا کند که در آن
عاملها بهنوبت پیام ردوبدل میکنند (تا session.agentToAgent.maxPingPongTurns، بازه
0-20، پیشفرض 5). عامل هدف میتواند برای توقف زودهنگام
REPLY_SKIP پاسخ دهد.
کمککنندههای وضعیت و هماهنگسازی
session_status ابزار سبکوزن معادل /status برای نشست فعلی یا یک نشست
قابلمشاهده دیگر است. مصرف، زمان، وضعیت مدل/زمان اجرا، و زمینه کار پسزمینه
پیوندشده را هنگام وجود گزارش میکند. مانند /status، میتواند شمارندههای
پراکنده توکن/کش را از آخرین ورودی مصرف رونوشت تکمیل کند، و
model=default بازنویسی هر نشست را پاک میکند. برای نشست فعلی فراخواننده از
sessionKey="current" استفاده کنید؛ برچسبهای قابلمشاهده کلاینت مانند openclaw-tui
کلید نشست نیستند.
وقتی فراداده مسیر موجود باشد، session_status یک بلوک JSON قابلمشاهده
Route context و فیلدهای ساختیافته details متناظر را نیز شامل میشود. این
فیلدها کلید نشست را از مسیری که اکنون اجرای زنده را مدیریت میکند متمایز
میکنند:
originجایی است که نشست در آن ایجاد شده است، یا ارائهدهندهای است که از پیشوند کلید نشست قابلتحویل استنباط شده، وقتی وضعیت قدیمیتر فراداده origin ذخیرهشده ندارد.activeمسیر اجرای زنده فعلی است. فقط برای نشست زنده یا فعلی که اکنون مدیریت میشود گزارش میشود.deliveryContextمسیر تحویل پایدارشده ذخیرهشده روی نشست است که OpenClaw میتواند بعدا حتی وقتی سطح فعال متفاوت است برای تحویل دوباره استفاده کند.
sessions_yield عمدا نوبت فعلی را پایان میدهد تا پیام بعدی بتواند رویداد
پیگیری باشد که منتظرش هستید. پس از ایجاد زیرعاملها وقتی میخواهید نتایج
تکمیل بهجای ساخت حلقههای polling بهعنوان پیام بعدی برسند، از آن استفاده کنید.
subagents کمککننده دیدپذیری برای زیرعاملهای OpenClaw است که از پیش
ایجاد شدهاند. از action: "list" برای بررسی اجراهای فعال/اخیر پشتیبانی میکند.
ایجاد زیرعاملها
sessions_spawn بهطور پیشفرض یک نشست ایزوله برای یک کار پسزمینه ایجاد میکند.
همیشه غیرمسدودکننده است -- بلافاصله با یک runId و
childSessionKey برمیگردد. اجراهای زیرعامل بومی، کار واگذارشده را در نخستین
پیام قابلمشاهده [Subagent Task] نشست فرزند دریافت میکنند، در حالی که prompt
سیستم فقط قواعد زمان اجرای زیرعامل و زمینه مسیریابی را حمل میکند.
گزینههای کلیدی:
runtime: "subagent"(پیشفرض) یا"acp"برای عاملهای harness خارجی.- بازنویسیهای
modelوthinkingبرای نشست فرزند. thread: trueبرای اتصال ایجاد به یک thread چت (Discord، Slack، و غیره).sandbox: "require"برای اجباریکردن سندباکس روی فرزند.context: "fork"برای زیرعاملهای بومی، وقتی فرزند به رونوشت درخواستکننده فعلی نیاز دارد؛ برای یک فرزند تمیز آن را حذف کنید یا ازcontext: "isolated"استفاده کنید. زیرعاملهای بومی متصل به thread بهطور پیشفرضcontext: "fork"دارند، مگر اینکهthreadBindings.defaultSpawnContextچیز دیگری بگوید.
زیرعاملهای برگ پیشفرض ابزارهای نشست را دریافت نمیکنند. وقتی
maxSpawnDepth >= 2 باشد، زیرعاملهای هماهنگکننده عمق 1 علاوه بر آن
sessions_spawn، subagents، sessions_list، و sessions_history را دریافت میکنند تا
بتوانند فرزندان خود را مدیریت کنند. اجراهای برگ همچنان ابزارهای هماهنگسازی
بازگشتی دریافت نمیکنند.
پس از تکمیل، یک مرحله اعلان نتیجه را در کانال درخواستکننده منتشر میکند.
تحویل تکمیل، در صورت وجود، مسیریابی thread/topic متصل را حفظ میکند، و اگر
origin تکمیل فقط یک کانال را شناسایی کند، OpenClaw همچنان میتواند از مسیر
ذخیرهشده نشست درخواستکننده (lastChannel / lastTo) برای تحویل مستقیم
استفاده کند.
برای رفتار ویژه ACP، عاملهای ACP را ببینید.
دیدپذیری
ابزارهای نشست دامنهبندی میشوند تا آنچه عامل میتواند ببیند محدود شود:
| سطح | دامنه |
|---|---|
self |
فقط نشست فعلی |
tree |
نشست فعلی + زیرعاملهای ایجادشده |
agent |
همه نشستها برای این عامل |
all |
همه نشستها (میانعاملی اگر پیکربندی شده باشد) |
پیشفرض tree است. نشستهای سندباکسشده، صرفنظر از پیکربندی، به tree محدود میشوند.
مطالعه بیشتر
- مدیریت نشست -- مسیریابی، چرخه عمر، نگهداشت
- عاملهای ACP -- ایجاد harness خارجی
- چندعاملی -- معماری چندعاملی
- پیکربندی Gateway -- knobهای پیکربندی ابزار نشست