pi-dynamic-workflows؛ ورکفلوهای پویا به سبک Claude Code
خلاصهٔ کاملتر
پروژهی pi-dynamic-workflows یه افزونه برای ابزار Pi هست که یه ابزار به اسم workflow بهش اضافه میکنه. ایدهی اصلی اینه که بهجای اینکه یه دستیار همهی کار رو بهصورت ترتیبی انجام بده، مدل یه اسکریپت کوتاه جاوااسکریپت مینویسه که کار رو بین چندین زیرایجنت مجزا پخش (fan-out) میکنه و بعد نتیجهها رو با هم ترکیب میکنه. این الگو برای ممیزی کدبیس، بازبینی چندزاویهای، ریفکتورهای بزرگ و تحقیق گسترده عالیه. خودِ پروژه هم میگه از قابلیت dynamic workflows انتروپیک در Claude Code الهام گرفته.
نحوهی کارش سادهست: کاربر به زبان معمولی از Pi یه ورکفلو میخواد، مدل اسکریپت رو مینویسه و ابزار workflow اون رو توی یه sandbox از نوع Node vm اجرا میکنه؛ هر فراخوانی agent() یه نشست زیرایجنتِ درونحافظهای میسازه که مثل یه نوبت عادی Pi میتونه فایل بخونه، دستور شل اجرا کنه و خروجی ساختارمند بده. پیشرفت کار هم بهصورت زنده و فشرده نشون داده میشه.
خودِ اسکریپت چند تابع سراسری در اختیار داره: agent(prompt, opts) برای ساختن یه زیرایجنت (که خروجی متنی یا با opts.schema یه آبجکت اعتبارسنجیشده برمیگردونه)، parallel(thunks) برای اجرای همزمان، pipeline(items, ...stages) برای عبور هر آیتم از مراحل پشتسرهم با fan-out، و phase(title) و log(message) برای گروهبندی و لاگ. یه نمونهی ساده از شکل اسکریپت اینطوریه:
phase('Scan')
const inventory = await agent('Inspect the repository structure.', { label: 'repo inventory' })
phase('Analyze')
const summary = await agent('Summarize the main modules:\n' + inventory, { label: 'module summary' })
return { inventory, summary }یه نکتهی مهم، قوانین قطعیت (determinism) هست: برای اینکه اجراها قابلبازتولید بمونن و متادیتای meta همیشه قابلتجزیه باشه، چیزهایی مثل Date.now()، Math.random()، require/import، دسترسی شبکه و spread/template interpolation داخل meta عمداً در دسترس نیستن. این پروژه فعلاً یه نمونهی اولیه (prototype) هست؛ هستهی اصلی (اسکریپت، زیرایجنتها، parallel/pipeline، فازها، abort و خروجی ساختارمند) رو پیاده کرده ولی هنوز اجراهای ماندگار یا قابلازسرگیری و یه مدیر /workflows نداره. مجوزش هم MIT هست.
نکات کلیدی:
- pi-dynamic-workflows یه ابزار workflow به Pi اضافه میکنه که کار رو بین چند زیرایجنت پخش میکنه
- مدل یه اسکریپت کوتاه جاوااسکریپت مینویسه که توی یه sandbox اجرا میشه
- توابعی مثل agent، parallel، pipeline و phase در اختیار اسکریپت هست
- برای حفظ قطعیت، Date.now و Math.random و دسترسی شبکه غیرفعالن؛ پروژه فعلاً نمونهی اولیهست




