Sessions and memory
تعهدات استنباطشده
تعهدها، حافظههای کوتاهمدت برای پیگیریهای بعدی هستند. وقتی فعال باشند، OpenClaw میتواند تشخیص دهد که یک مکالمه فرصتی برای پیگیری در آینده ایجاد کرده است و به خاطر بسپارد که بعداً دوباره به آن بپردازد.
مثالها:
- به مصاحبهای در فردا اشاره میکنید. OpenClaw ممکن است پس از آن پیگیری کند.
- میگویید خسته و فرسودهاید. OpenClaw ممکن است بعداً بپرسد آیا خوابیدهاید.
- عامل میگوید پس از تغییر چیزی پیگیری خواهد کرد. OpenClaw ممکن است آن موضوع ناتمام را دنبال کند.
تعهدها، واقعیتهای ماندگاری مانند MEMORY.md نیستند و یادآورهای دقیق نیز
نیستند. آنها بین حافظه و خودکارسازی قرار میگیرند: OpenClaw تعهدی وابسته به
مکالمه را به خاطر میسپارد، سپس Heartbeat در موعد مقرر آن را ارائه میکند.
فعالکردن تعهدها
تعهدها بهطور پیشفرض غیرفعالاند (commitments.enabled: false). آنها را در پیکربندی فعال کنید:
openclaw config set commitments.enabled trueopenclaw config set commitments.maxPerDay 3openclaw.json معادل:
{ "commitments": { "enabled": true, "maxPerDay": 3 }}commitments.maxPerDay تعداد پیگیریهای استنباطشدهای را که میتوان در هر نشست عامل
طی یک روز لغزان ارائه کرد محدود میکند. مقدار پیشفرض 3 است.
نحوه کار
پس از پاسخ عامل، OpenClaw ممکن است یک مرحله استخراج پسزمینه و پنهان را در زمینهای جداگانه و با ابزارهای غیرفعال اجرا کند. این مرحله فقط بهدنبال تعهدهای پیگیری استنباطشده میگردد. چیزی در مکالمه قابلمشاهده نمینویسد و از عامل اصلی نمیخواهد درباره استخراج استدلال کند.
وقتی گزینهای با اطمینان بالا پیدا کند، OpenClaw تعهدی را با موارد زیر ذخیره میکند:
- شناسه عامل
- کلید نشست
- کانال اصلی و مقصد تحویل
- بازه موعد
- یک پیگیری پیشنهادی کوتاه
- فراداده غیردستوری تا Heartbeat تصمیم بگیرد آیا آن را ارسال کند
ارائه از طریق Heartbeat انجام میشود. وقتی موعد تعهدی فرا میرسد، Heartbeat
آن را به نوبت Heartbeat مربوط به همان محدوده عامل و کانال اضافه میکند.
پرامپت بهصراحت هشدار میدهد که فراداده تعهد قابلاعتماد نیست و به مدل دستور میدهد
از دستورهای موجود در آن پیروی نکند یا بهدلیل آن از ابزارها استفاده نکند.
مدل میتواند یک پیگیری طبیعی ارسال کند یا برای کنارگذاشتن آن با HEARTBEAT_OK پاسخ دهد.
اگر Heartbeat با target: "none" پیکربندی شده باشد، تعهدهای سررسیدشده
داخلی باقی میمانند و پیگیری خارجی ارسال نمیکنند. پرامپتهای ارائه تعهد
متن مکالمه اصلی را بازپخش نمیکنند و فقط پیگیری پیشنهادی و
فراداده را ارائه میدهند؛ نوبتهای Heartbeat مربوط به تعهدهای سررسیدشده نیز بدون ابزارهای OpenClaw اجرا میشوند.
OpenClaw هرگز تعهد استنباطشده را بلافاصله پس از ثبت آن ارائه نمیکند. زمان سررسید دستکم به یک فاصله Heartbeat پس از ایجاد تعهد محدود میشود، بنابراین پیگیری نمیتواند در همان لحظه استنباط، بازتاب داده شود.
محدوده
تعهدها دقیقاً به زمینه عامل و کانالی محدودند که در آن ایجاد شدهاند. پیگیری استنباطشده هنگام گفتوگو با یک عامل در Discord، توسط عامل دیگر، کانال دیگر یا نشستی نامرتبط ارائه نمیشود.
این محدوده بخشی از قابلیت است. پیگیریهای طبیعی باید مانند ادامه همان مکالمه به نظر برسند، نه مانند یک سامانه یادآوری سراسری.
تعهدها در مقایسه با یادآورها
| نیاز | استفاده |
|---|---|
| «ساعت 3 بعدازظهر به من یادآوری کن» | وظایف زمانبندیشده |
| «20 دقیقه دیگر به من پیام بده» | وظایف زمانبندیشده |
| «این گزارش را هر روز کاری اجرا کن» | وظایف زمانبندیشده |
| «فردا مصاحبه دارم» | تعهدها |
| «تمام شب بیدار بودم» | تعهدها |
| «اگر به این موضوع باز پاسخ ندادم، پیگیری کن» | تعهدها |
درخواستهای صریح کاربر از قبل به مسیر زمانبند تعلق دارند. تعهدها فقط برای پیگیریهای استنباطشدهاند: لحظاتی که کاربر یادآوری درخواست نکرده، اما مکالمه بهوضوح یک پیگیری سودمند در آینده ایجاد کرده است.
مدیریت تعهدها
برای بررسی و پاککردن تعهدهای ذخیرهشده از CLI استفاده کنید:
openclaw commitmentsopenclaw commitments --allopenclaw commitments --agent mainopenclaw commitments --status snoozedopenclaw commitments dismiss cm_abc123برای مرجع کامل فرمان، به openclaw commitments مراجعه کنید.
حریم خصوصی و هزینه
استخراج تعهد از یک مرحله LLM استفاده میکند، بنابراین فعالکردن آن پس از نوبتهای واجد شرایط، مصرف پسزمینه مدل را افزایش میدهد. این مرحله از مکالمه قابلمشاهده برای کاربر پنهان است، اما میتواند تبادل اخیر لازم برای تشخیص وجود پیگیری را بخواند.
تعهدهای ذخیرهشده، حافظه عملیاتی محلی OpenClaw در پایگاه داده وضعیت مشترک SQLite هستند، نه حافظه بلندمدت. این قابلیت را با فرمان زیر غیرفعال کنید:
openclaw config set commitments.enabled falseعیبیابی
اگر پیگیریهای مورد انتظار ظاهر نمیشوند:
- تأیید کنید
commitments.enabledبرابر باtrueاست. - برای بررسی رکوردهای در انتظار، کنارگذاشتهشده، بهتعویقافتاده یا منقضی،
openclaw commitments --allرا بررسی کنید. - مطمئن شوید Heartbeat برای عامل در حال اجراست.
- بررسی کنید آیا
commitments.maxPerDayبرای آن نشست عامل از قبل به حد خود رسیده است. - به خاطر داشته باشید یادآورهای دقیق در استخراج تعهد نادیده گرفته میشوند و باید در عوض زیر وظایف زمانبندیشده ظاهر شوند.