Pi Durable: فریمورکی برای ایجنتهایی که با کرش از کار نمیافتن
خلاصهٔ کاملتر
تیم Earendil همزمان با انتشار Pi 1.0 (ایجنت کدنویسی خودشون)، یه پکیج آزمایشی به اسم Pi Durable هم معرفی کرده. Pi معمولی برای یه نفر توی ترمینال ساخته شده و اگه پروسه بمیره، خودت دوباره راهش میندازی. ولی به گفتهٔ تیم، برای اینکه این تکنولوژی به دست همه برسه یه harness لازمه که هرجا اجرا بشه، مکالمههای بینهایت طولانی رو تحمل کنه و چند نفر بتونن یه ایجنت رو هدایت کنن.
تو این مقاله harness اینطوری تعریف شده: ذخیرهسازی بهعلاوهٔ ماشینآلاتی که چند مکالمه با مدل زبانی رو موازی اجرا میکنه، ابزارهایی که مدل صدا میزنه رو فراهم میکنه و محیط اجرای اون ابزارها رو هم میده. هر کاری که harness انجام میده، از صدا زدن مدل تا اجرای یه ابزار، یه task حساب میشه. کل سورس بدون تست حدود ۱۵ هزار خطه، یعنی خود ایجنت هم میتونه کل کد رو بخونه و بفهمه.
ذخیرهسازی سه نسخهٔ آماده داره: memory، SQLite و JSONL. کد SQLite و JSONL از APIهای Node استفاده نمیکنه، پس با یه adapter کوچیک روی Bun یا داخل Cloudflare Durable Object هم اجرا میشه. روی SQLite فقط مکالمههای فعال و taskهای زنده توی حافظه میمونن. compaction (یعنی خلاصه کردن پیامهای قدیمی قبل از پر شدن context) باعث میشه حتی مکالمهای با دهها هزار پیام هم راحت توی حافظه جا بشه.
مهمترین ویژگی، زنده موندن بعد از کرشه. هر قدم یه checkpoint ذخیره میکنه. اگه پروسه بمیره، پروسهٔ جدید همون storage رو باز میکنه و taskهای نیمهکاره رو ادامه میده. درخواستی که به مدل نصفه موند دوباره فرستاده میشه. ابزاری که نصفه موند فقط وقتی دوباره اجرا میشه که خودش بگه امنه، وگرنه به مدل گفته میشه قطع شده. فیلد requestId هم باعث میشه یه درخواست فقط یه بار ثبت بشه:
const job = {
type: "input",
content: "Fix the flaky login test",
requestId: "job-42",
} as const;
await root.submit(job, context);
// The process dies here, in the middle of a tool call.یه harness میتونه هر تعداد مکالمه رو همزمان اجرا کنه و هر مکالمه میتونه از هر نقطهای از مکالمهٔ دیگه fork بشه، بدون اینکه تاریخچه کپی بشه. مثال نویسنده یه کانال Slackه که خود کانال یه مکالمهست و هر thread یه fork از اون. هر مکالمه مدل، ابزارها و دایرکتوری کاری خودش رو داره، پس مثلاً یه ایجنت reviewer میتونه مدل ارزونتر و ابزارهای فقطخواندنی داشته باشه.
همهچی از طریق extensionها اضافه میشه: بخشهای system prompt، ابزارها، hookها و taskهای سفارشی. hookها میتونن یه tool call رو بلاک یا بازنویسی کنن و تصمیمشون رو توی یه memo ذخیره میکنن که بعد از کرش دوباره سؤال نشه. subagent هم built-in نیست، ولی با چند خط کد ساخته میشه و چون خودش یه مکالمهٔ معمولیه، بعد از کرش ادامه پیدا میکنه.
نکات کلیدی:
- Pi Durable یه پکیج آزمایشیه که همراه Pi 1.0 منتشر شده و جایگزین ایجنت کدنویسی Pi نیست
- کل سورس بدون تست حدود ۱۵ هزار خط، یعنی حدود ۱۵۰ هزار توکن با GPT و ۲۵۰ هزار با Claude
- ذخیرهسازی آماده: memory، SQLite و JSONL، بهعلاوهٔ مجموعه تست برای backend سفارشی
- هر ابزار با گزینهٔ replay: "safe" مشخص میکنه که بعد از کرش دوباره اجرا بشه یا نه
- مکالمهها همزمان اجرا میشن و قابل fork از هر نقطهٔ transcript هستن




