تصور کنید تختهی مدیریت پروژهی شما دیگر فقط لیستی از کارهای انجامنشده نباشد، بلکه همان دکمهای باشد که ماشینهای کدنویسی را به حرکت درمیآورد. در ۲۱ اوت ۲۰۲۶، توسعهدهندهای به نام Aekan جزئیاتی را منتشر کرد که نشان میدهد چگونه KittyClaw از یک تختهی ساده به یک ارکستراتور (Orchestrator) — یا همان رهبر ارکستر که هر ساز را در زمان درست به صدا درمیآورد — برای عاملهای هوش مصنوعی (AI Agents) تبدیل شده است. در واقع، او توضیح داد که چگونه برنامه ریزی پروژه با بخش اجرایی آن بهطور کامل ادغام شده است.
بیشتر سیستمهای فعلی برای مدیریت عاملها از ابزارهای پراکنده استفاده میکنند. شما معمولاً یک تخته برای برنامهریزی دارید، یک اسکریپت جداگانه برای بررسی بهروزرسانیها و یک ترمینال برای تماشای اجرای عاملها. این ساختار باعث ایجاد محیطی «گسسته» میشود که در آن تخته از وضعیت اجرای عامل بیخبر است و عامل هم فقط دستورات API را میفهمد.
زمینه و بستر ناوگان عاملها
برای تحقیق و توسعهی ناوگان عاملهای Ekioo، این اصطکاک دیگر قابل تحمل نبود. Aekan در حال مدیریت ۱۳ عامل در پروژههایی مثل Bloomii (روزنامهنگاری سازنده) و Kalceo (سرویسهای B2B برای پیمانکاران ساختمانی) بود، اما هر پروژه به یک اسکریپت Node.js اختصاصی به نام dispatcher.mjs نیاز داشت که باید بهصورت دستی برای هر پروژه تطبیق داده میشد.
به نقل از گزارشهای منتشر شده، این یعنی منطق مربوط به بررسی وضعیت (Polling)، سقف بودجه و مدیریت خطا در هر مخزن کد تکرار میشد. این دیسپچر (Dispatcher) یک فرآیند خارجی بود که نیاز به اجرا بهصورت دستی، یک فایل وضعیت (dispatch-state.json) برای همگامسازی و بررسی لاگهای پیچیده در مسیرهای سیستمی مانند .agents/channel/debug.log داشت.
اصطکاک سیستمهای گسسته
قبل از این ادغام، ساختار سیستم از سه لایه تشکیل شده بود: KittyClaw (رابط کاربری، تخته و REST API)، اسکریپت dispatcher.mjs (که در پوشهی .agents/channel/ پروژه قرار داشت و دستی اجرا میشد) و Claude Code (خودِ عاملها). این ابزار در واقع همان هستهی اجرایی است که پتانسیل خودکارسازی بخش بزرگی از کارهای نگهداری کد را به نمایش گذاشته است.
این چرخه باعث میشد هر پروژه جدید نیاز به کپی کردن (Fork) اسکریپت dispatcher.mjs از Aekan و تغییر دستی آن داشته باشد. الگوهایی مثل بررسی هر ۳۰ ثانیه، قفلهای کد (Code Locks)، تأخیر در ارزیابی (Evaluator Debounces) و بودجههای روزانه در تمام پروژهها تکرار میشدند.
از نظر بصری، ارکستراسیون کاملاً نامرئی بود. توسعهدهنده برای دیدن فعالیت زنده یک عامل، باید ترمینال را باز میکرد، دستور tail -f را روی لاگهای دیسپچر اجرا میکرد و سپس آن را با تختهی پروژه تطبیق میداد. در واقع برای ردیابی یک فرآیند واحد، از دو زبان و دو نمای متفاوت استفاده میشد.
تغییر در معماری
طبق مستندات dev.to، معماری قدیمی به سه لایه روی هم تکیه داشت، اما سیستم جدید این لایهها را در یک لایه ادغام کرده است. اکنون منطق ارکستراسیون در هستهی موتور تخته قرار دارد. حالا توسعهدهنده تنها دستور dotnet run را روی KittyClaw اجرا میکند و به هیچ چیز دیگری نیاز نیست. این رویکرد یادآور تلاشهای مشابه برای ایجاد مدیریت متمرکز عاملها با استفاده از معماریهای سیستمی مانند Rust است تا بهرهوری در محیطهای ترمینال افزایش یابد.
ویژگیهای کلیدی این معماری عبارتند از:
- اجرای مبتنی بر تریگر (Trigger): سیستم از فایلی به نام
automations.jsonدر فضای کاری پروژه برای تعریف محرکها استفاده میکند. برای مثال، وقتی یک تیکت به ستون «Todo» یا «InProgress» منتقل شده و به@programmerاختصاص مییابد، یک اکشن فعال میشود. این منطق از طریق یک بررسی ۳۰ ثانیهای (Poll) که تخته را میخواند و الگوها را تطبیق میدهد، عمل میکند. - انتقالهای خودکار: پس از فعال شدن تریگر، KittyClaw تیکت را بهطور خودکار به وضعیت «InProgress» منتقل کرده و عامل را با یک فایل مهارت خاص (مثلاً
programmer.md) و بستر متن تیکت اجرا میکند. فایلautomations.jsonاین اقدامات را تعریف میکند، مانندmoveTicketStatusوrunClaudeSkillبا یک گروه همزمانی (concurrencyGroup) به نام "code" و محدودیت حداکثر ۲۰۰ نوبت اجرا (maxTurns). - مشاهدهپذیری یکپارچه: بهجای دنبال کردن لاگها در ترمینال از طریق
tail -f، تمام فراخوانیهای ابزار، ویرایش فایلها و مصرف توکن (Token) مستقیماً در یک پنل زنده متصل به تیکت نمایش داده میشود. اکنون خودِ تخته به عنوان داشبورد عمل میکند.
مقیاسبندی ناوگان عاملها
این ادغام اجازه میدهد یک موتور واحد، نقشهای متنوعی را در پروژههای مختلف مدیریت کند. Aekan در حال حاضر ۱۳ عامل را اجرا میکند؛ از جمله یک مستندساز که با هر کامیت فعال میشود، یک «بهداشتکار کد» (Code-Janitor) که هر شب ساعت ۳ صبح کدها را پاکسازی میکند و ارزیابهایی که کیفیت تیکتها را هنگام رسیدن به وضعیت «Done» میسنجند.
مرکزی کردن دیسپچر سه مانع عملیاتی بزرگ را حل کرد:
۱. یکپارچگی ویژگیها (Feature Parity): افزودن یک تریگر جدید، مانند تریگر «بیدارباش مدیرعامل» (CEO wake) برای تختههای بیکار (که برای CEO لِین استفاده میشود)، اکنون فوراً برای تمام پروژهها اعمال میشود. پیش از این، افزودن ویژگیهایی مثل boardIdle یا subTicketStatus نیاز به بازگردانی دستی (Back-porting) در دیسپچر هر پروژه داشت.
۲. بودجهبندی متمرکز: یک فایل واحد (cost-log.jsonl) تمام هزینهها را ردیابی میکند. با تعریف یک بودجه روزانه جهانی (مثلاً dailyBudgetUsd: 70)، میتوان تمام عاملهای غیرضروری را در کل ناوگان پس از رسیدن به سقف هزینه متوقف کرد. انجام این کار در دیسپچرهای مستقل، نیازمند سه پیادهسازی مجزا بود که باید با هم همگام میشدند.
۳. بارگذاری سریع (Hot Reloading): تغییرات در automations.json از طریق یک درخواست POST به مسیر /api/projects/{slug}/automations/reload اعمال میشود و دیگر نیازی به ریاستارت کردن فرآیندهای Node.js نیست.
تغییر ذهنی: از گفتگو به صف
این تغییر، نقش انسان را از یک «گفتگوکننده» به یک «ناظر» تبدیل میکند. مدیریت ۱۳ گفتگوی همزمان با هوش مصنوعی از نظر ذهنی غیرممکن است، اما نظارت بر یک صف ۵۰ تیکته کاملاً شدنی است، به شرطی که ابزار، موارد مهم را برجسته کند.
با حذف دیسپچر خارجی، تجربه کاربر از حالت تکهتکه خارج شد. پیش از این، کاربر باید تخته را برای تصمیمگیری، ترمینال را برای دیدن فعالیت عامل و لاگها را برای عیبیابی تماشا میکرد. اکنون تخته همان سیستم است. توسعهدهنده وضعیت کلی را میبیند، تیکت را اختصاص میدهد، اجازه میدهد زیرساخت آن را دیسپچ کند و اجرای زنده را از داخل خود تیکت تماشا میکند.
با تبدیل تخته به برنامه اجرایی، توسعهدهنده دیگر درگیر «چگونگی» دیسپچ نمیشود و بر «چیستی» تیکت تمرکز میکند. کارهای جالب دوباره به نوشتن تیکتهای شفاف، بررسی خروجیها، پذیرش یا رد آنها و شکل دادن به الگوهای اتوماسیون تبدیل شده است.
چرا تخته جای مناسبی است؟
شاید تصور شود که یک ارکستراتور مجزا برای خواندن تیکتهای Jira یا Linear بهتر باشد. اما تخته از قبل میداند چه کسی عامل است و چه کسی انسان، وضعیت تیکتها چیست، چه کسی مسدود شده و چه کسی آمادهی بررسی است. انتقال این دادهها به ابزاری دیگر، فقط باعث تکرار منبع حقیقت (Source of Truth) میشود.
قرار دادن ارکستراسیون در تخته به این معناست که تخته در واقع همان برنامه اجرایی است و فقط فاقد بخش «اجراکننده» بود. این ادغام کارهای بدون ارزش — مانند نگهداری چندین دیسپچر و تطبیق سه نمای مختلف — را حذف کرده و کارهای با ارزش بالا یعنی تصمیمگیری را باقی میگذارد.
این رویکرد نشان میدهد آیندهی گردشکارهای عاملمحور (Agentic)، ساخت اپلیکیشنهای مجزای «مدیر هوش مصنوعی» نیست، بلکه ادغام منطق اجرا در ابزارهایی است که کار در آنها تعریف شده است. وقتی تخته همان داشبورد باشد، فاصله بین تصمیمگیری و اجرا به صفر میرسد.
چشمانداز فنی
توسعههای آینده بر کالبد فنی سیستم متمرکز خواهد بود؛ از جمله نحوه تزریق بستر متن (Context) به عاملها، تداوم جلسات (Sessions) در اجراهای مختلف و گروههای همزمانی برای جلوگیری از تداخل دو عامل در ویرایش همزمان یک فایل واحد. در همین راستا، گسترش قابلیتهای ارتباطی عاملها با سختافزار، مانند پروتکل MCP برای دسترسی Claude Code به سختافزارهای لبه، افقهای جدیدی را برای اتوماسیونهای سختافزاری باز میکند.
گام بعدی شما
- اگر از ابزارهای مدیریت پروژه برای تیمهای کوچک استفاده میکنید، بررسی کنید که آیا میتوانید تریگرهای سادهای برای اتوماسیون تسکها تعریف کنید.
- کد منبع کامل این پروژه در گیتهاب به آدرس
github.com/Ekioo/KittyClawدر دسترس است تا معماری ادغامشده را بررسی کنید. - در دیسکورد پروژه به بحثهای مربوط به مدیریت ناوگان عاملها بپیوندید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو