Ablo: کار همزمان آدمها و ایجنتها روی یک دیتا
خلاصهٔ کاملتر
به گفتهی سازنده، مشکل اصلی جایی پیش میاد که یه ایجنت و یه آدم همزمان یه چیز رو عوض میکنن: یه ویرایش بیسروصدا روی اونیکی مینویسه، یا ایجنت روی دیتایی کار میکنه که همون لحظه عوض شده. Ablo یه مسیر نوشتنِ مشترک و typed میده تا آدمها، اکشنهای سمت سرور و ایجنتها همه روی یه ردیف کار کنن بدون اینکه کورکورانه بنویسن.
ایدهی مرکزی «claim» ـه. کار یه ایجنت معمولاً یه نوشتنِ آنی نیست؛ اول یه چیزی میخونه، فکر میکنه، یه LLM یا ابزار صدا میزنه، بعد مینویسه. تو این فاصله ردیف میتونه زیر دستش عوض شه. برای همین قبل از شروعِ کارِ کند، ایجنت ردیف رو claim میکنه؛ اگه یکی دیگه مشغولش باشه، claim صبر میکنه، ردیفِ تازه رو دوباره میخونه و بعد تحویل میده.
نویسنده توضیح میده که مدل داده رو یهبار با یه schema از نوع Zod تعریف میکنی و همون کلاینتِ typed رو برای هر actor داری. متدهای اصلی همینا هستن:
await ablo.task.create({ data }) // create
await ablo.task.retrieve({ id }) // read
await ablo.task.update({ id, data }) // update
await using task = await ablo.task.claim({ id }) // claim for safe, slow agent workنکتهی مهم اینه که تو production دیتابیس خودت مرجعِ اصلیه. Ablo یه لایهی sync و هماهنگیه که روی Postgres تو سواره: استریمِ logical-replication دیتابیستو میخونه، دیتای realtime رو بر اساس هویت خودت به «sync group» ها محدود میکنه، و مسیر نوشتن دستِ اپلیکیشن خودت میمونه؛ هر ردیف تو Postgres خودت زندگی میکنه.
برای شروع یه CLI هست که از صفر تا یه schema همگامشده میبردت و اکانت و کلید و فایل env رو خودش میسازه. تو React هم همون ablo. رو داری، فقط از طریق یه provider سوار میشه و با hook خونده میشه؛ تو مرورگر با session کاربر احراز هویت میشه نه با کلید خام. یه حالت sandbox با کلید sk_test هم هست که مثل تستمودِ Stripe میذاره قبل از وصلکردن به Postgres واقعی، دیتای موقت رو امتحان کنی.
نکات کلیدی:
- Ablo یه مسیر نوشتنِ مشترک و typed برای آدمها، سرور و ایجنتها روی یه دیتای واحده
- مفهوم «claim» ردیف رو موقعِ کارِ کندِ ایجنت نگه میداره تا کسی روش ننویسه
- مدل داده یهبار با Zod تعریف میشه و کلاینتِ typed همهجا در دسترسه
- تو production دیتابیس Postgres خودت مرجعِ اصلی میمونه و Ablo فقط لایهی sync ـه
- به Node 24+ و TypeScript 5+ نیاز داره و از React هم پشتیبانی میکنه




