Pi Durable: ایجنتهایی که با ریاستارت از کار نمیافتن
خلاصهٔ کاملتر
Pi Durable یه پکیج جدا از ایجنت کدنویسی Pi هست که کنار Pi 1.0 منتشر شده. ایدهش اینه که گفتگوی ایجنت دیگه با مردن پروسه از بین نره. به جای یه جلسهی ترمینالی، این ابزار برای کسایی ساخته شده که میخوان روی ایجنتها محصول بسازن.
پایهی کار checkpointing هست، یعنی ذخیرهی مرحلهبهمرحلهی وضعیت گفتگو روی storage. اگه پروسه وسط کار کرش کنه یا دیپلوی بشه، یه پروسهی جدید همون storage رو باز میکنه و کارای نیمهتموم رو ادامه میده. نکتهی مهم اینه که ابزارهایی که وسط اجرا قطع شدن خودبهخود دوباره اجرا نمیشن، مگه اینکه خود ابزار اعلام کنه replay براش امنه. وگرنه ایجنت فقط میفهمه چی قطع شده و چه خروجیای قبلش ثبت شده بود.
به گفتهی مقاله، این تفکیک خیلی مهمه. دوباره اجرا کردن یه سرچ ضرری نداره، ولی دوباره فرستادن یه پیام یا گرفتن دوبارهی یه پرداخت دردسر درست میکنه. Pi Durable با request ID جلوی ثبت دوبارهی یه درخواست تکراری رو میگیره، ولی تضمین نمیکنه هر کار بیرونی دقیقاً یه بار انجام بشه. پس هنوز باید خودت حواست به idempotency باشه، یعنی اینکه اجرای دوبارهی یه کار نتیجه رو خراب نکنه.
فرقش با یه جلسهی معمولی ایجنت اینه که یه harness (یعنی همون برنامهای که گفتگو با مدل و اجرای ابزارها رو مدیریت میکنه) میتونه چندتا گفتگو رو همزمان اجرا کنه، هر کدوم با مدل، ابزار، دستورالعمل و پوشهی کاری خودش. میشه یه گفتگو رو از یه نقطه fork کرد و جدا ادامه داد. چند کلاینت هم میتونن به یه harness وصل بشن، کار رو دنبال کنن، مسیرش رو عوض کنن یا ورودی جدید بدن. دادههای برنامه هم به شکل سندهای JSON تایپدار کنار متن گفتگو ثبت میشن.
برای ذخیرهسازی سه گزینه هست: memory، SQLite و JSONL. memory با ریاستارت پاک میشه. فقط یه پروسه در هر لحظه میتونه صاحب یه storage باشه. تنظیمات پیشفرض SQLite هم تضمین نمیکنه آخرین تغییرات بعد از قطعی برق یا خرابی سرور سالم بمونن. APIها هم رسماً آزمایشیان و ممکنه عوض بشن.
نویسنده تأکید میکنه ماندگاری مشکل context window رو حل نمیکنه. ذخیره شدن گفتگو روی دیسک به این معنی نیست که مدل همهش رو یادش میمونه. برای همین یه نمونهی compaction (یعنی خلاصه کردن بخشهای قدیمی گفتگو) هم همراهش اومده. جمعبندی نویسنده اینه که برای پروتوتایپ و ابزار داخلی خوبه، ولی قبل از محصول جدی باید رفتار بعد از کرش رو با ابزارای خودت تست کنی.
نکات کلیدی:
- Pi Durable پکیجی جدا از ایجنت کدنویسی Pi هست و کنار Pi 1.0 منتشر شده
- ابزار قطعشده فقط وقتی خودکار دوباره اجرا میشه که replay رو امن اعلام کرده باشه
- request ID جلوی ثبت دوبارهی درخواست رو میگیره ولی اجرای دقیقاً یکباره رو تضمین نمیکنه
- storage میتونه memory، SQLite یا JSONL باشه و memory با ریاستارت پاک میشه
- SQLite با تنظیمات پیشفرض در برابر قطعی برق تضمینی برای آخرین commitها نداره
- محدودیت context مدل سر جاشه و فقط یه نمونهی compaction ارائه شده




