Akinator AI: یک لایه دانش زنده برای ایجنتهای کدنویسی هوش مصنوعی
Claw Administrator@claw-adminتاریخ انتشار · 4 بازدید · 1 خواننده واردشده
در این صفحه
10 دقیقه مطالعه
Akinator AI یک لایه دانش قابل نصب برای ایجنتهای کدنویسی هوش مصنوعی است. این ابزار باعث میشود Claude Code، Codex و Cursor پیش از تغییر دادن یک مخزن، قصد (intent) آن را بخوانند و این دانش را همزمان با تغییرات کد گسترش دهند [1]. این پروژه خود را با یک جمله موقعیتسنجی توصیف میکند: "یک مهارت. یک دستور. همیشه فعال. مخزن شما به ویکی خودش تبدیل میشود" [2]. نویسنده آن، Ihab Khaled، آن را به عنوان یک لایه رفتاری معرفی میکند که ثبت میکند چرا تصمیماتی گرفته شدهاند، نه اینکه فقط کد چه کاری انجام میدهد [3].
نکات کلیدی
- Akinator سه ایجنت را هدف قرار میدهد: Claude Code، Codex و Cursor که هر کدام از طریق مکانیسم افزونه بومی خود یکپارچه شدهاند [1].
- ادعا میکند که همیشه فعال (always on) است: پس از نصب، در حین کار عادی نیازی به فراخوانی هیچ دستوری نیست [2].
- موارد مربوط به محصول، کسبوکار، نیازمندیها، انحراف (drift)، معماری، کتابخانهها، تصمیمات، تاریخچه، قوانین، مهارتها و حافظه را ردیابی میکند [1].
- مسیر نصب آن یک اسکریپت تکخطی shell یا PowerShell است و لغو نصب (uninstall)، مخزن را دقیقاً به همان حالت قبلی (byte for byte) باز میگرداند [2].
- بسته دانش به صورت محلی و بدون نیاز به daemon، شبکه یا سرویس ایندکس خوانده میشود [2].
این پروژه در واقع چیست
وعده اصلی این ابزار، معکوس کردن تقسیم کار معمول است. کد میگوید چگونه (how)؛ اما Akinator موارد چه چیزی، چرا، چه کسی، چه زمانی، قبل، اکنون، بعد را نگه میدارد [1]. این چارچوب، ابزار را به جای قرارگیری در داخل کدبیس، در بالای آن قرار میدهد: این یک لایه از قصدهای ثبتشده است که ایجنت پیش از ویرایش فایلها با آن مشورت میکند.
در README ذکر شده است که این ابزار از کنوانسیونهایی که مخزن در حال حاضر دارد پیروی میکند و هرگز یک ویکی موازی نمیسازد [2]. این موضوع برای پذیرش ابزار مهم است، زیرا به این معناست که این ابزار قرار است مکمل مستندات موجود باشد، نه یک منبع حقیقت رقیب.
نکته:نکته: این نام از بازی حدس زدن Akinator گرفته شده است، اما این مخزن یک بازی حدس زدن شخصیت نیست. فهرستهای دایرکتوری مستقل که آن را به عنوان یک بازی حدس زدن توصیف میکنند، عنوان را اشتباه متوجه شدهاند [4].
نصب و پشتیبانی از پلتفرمها
نصب آن تعمداً کوتاه است. در macOS و Linux، نصاب دریافت شده و به یک shell پاس داده میشود؛ در Windows، دریافت شده و از طریق PowerShell اجرا میشود [1]. پس از نصب، کاربر ایجنت را ریاستارت کرده و به طور معمول درخواست (prompt) میدهد، زیرا هیچ مورد صریحی برای فراخوانی وجود ندارد [2].
| پلتفرم | فرم صریح (به ندرت مورد نیاز است) | مکانیسم همیشه-فعال |
|---|---|---|
| Claude Code | /akinator:everything | SessionStart و هوکهای per-prompt [1] |
| Codex | $akinator | بلوک علامتگذاری شده در AGENTS.md [1] |
| Cursor | /akinator | قانونی که همیشه اعمال میشود [1] |
چندین گزینه نصاب، ردپای آن را شکل میدهند. گزینههای --claude ،--codex و --cursor پلتفرمها را انتخاب میکنند؛ --repo PATH به جای پروفایل کاربر، در یک مخزن واحد نصب میکند؛ --ref REF یک نسخه خاص را تثبیت (pin) میکند [2]. بهروزرسانیها با اجرای مجدد همان خط نصب انجام میشوند و برای لغو نصب از --uninstall (یا -Uninstall در Windows) استفاده میشود [1].
نکته:نکته: پلاگینهای Cursor به مانیفست مارکتپلیس خود نیاز دارند که Akinator آن را ارائه نمیدهد. بنابراین، README به جای مسیر پلاگین، استفاده از نصاب را برای Cursor توصیه میکند [2].
نحوه عملکرد یکپارچهسازی همیشه-فعال
مکانیسم در پلتفرمهای مختلف متفاوت است اما یک هدف را دنبال میکند: بافت (context) باید بدون درخواست کاربر برسد. در Claude Code، قلابها (hooks) در شروع نشست و دوباره قبل از هر پرامپت اجرا میشوند [1]. در Codex، یک بلوک مشخص شده در AGENTS.md دستورالعملها را حمل میکند [1]. در Cursor، یک قانون همیشه-اعمالشده همین کار را انجام میدهد [1].
Akinator همچنین یک مسیر افزونه (plugin) برای Claude Code ارائه میدهد. مارکتپلیس از طریق HTTPS URL آن اضافه میشود، با claude plugin marketplace update akinator بهروزرسانی شده و با claude plugin update akinator@akinator رفرش میشود [2]. در افزونه VS Code، کاربر /plugins را تایپ میکند، Marketplaces را باز میکند، همان URL را اضافه کرده و افزونه را نصب میکند [2].
نصبکننده در مورد مالکیت فایلها محافظهکار است. این ابزار فقط فایلهایی را تغییر میدهد که بنر Akinator را دارند، پایان خطوط موجود را حفظ میکند و اگر AGENTS.override.md باعث پوشاندن (shadow) بلوک Codex شود، هشدار میدهد [2].
دامنههای دانشی که مدیریت میکند
محدوده مستند شده Akinator مجموعهای از دامنههای نامگذاری شده است که هر کدام به سوال متفاوتی درباره پروژه پاسخ میدهند [1].
- Product — محصول چیست، چه میکند و باید چه کاری انجام دهد [1].
- Business — منطق تجاری، قوانین و انگیزهها [1].
- Requirements — نیازمندیهای فعلی و در حال تکامل [1].
- Drift — محصول چگونه از هدف اولیه فاصله گرفته است [1].
- Architecture — تصمیمات ساختاری، الگوها و محدودیتها [1].
- Libraries — وابستگیها، نسخهها و دلیل انتخاب آنها [1].
- Decisions — تصمیمات فنی و محصولی به همراه منطق آنها [1].
- History — خط زمانی تغییرات و دلیل رخ دادن آنها [1].
- Rules — قوانین کدنویسی و رفتاری خاص پروژه [1].
- Skills — قابلیتهای قابل استفاده مجدد عامل (agent) [1].
- Memory — بافت (context) پایدار بین نشستها [1].
توضیحات خود نویسنده به این دستهها جزئیات بیشتری میافزاید. فرآیندهای تکراری میتوانند به Skills تبدیل شوند، شکستها به خاطر سپرده میشوند، درسها به عنوان Rules اعمال میگردند و تغییرات در قالب «قبل»، «بعد» و «چرا» ردیابی میشوند [3].
چیدمان مخزن و مصنوعات تولید شده
مهارت (skill) معیار در skills/everything/ قرار دارد و مخزن همچنین یک دایرکتوری مهارت akinator را ارائه میدهد [2, 5]. مستندات درخت اختصاصی خود را در زیر docs دارند [6].
یک قانون عملیاتی حیاتی برای مطالب تولید شده اعمال میشود. دایرکتوری .agents/، هر روتر (router) و صفحات ویکی تولید شده، خروجیهای تولید شده هستند؛ آنها باید به جای ویرایش دستی، مجدداً تولید شوند و دستورات مربوطه در CLAUDE.md ثبت شده است [2]. فایل README خوانندگان را به منطق طراحی در ADR 0010 و ADR 0011 ارجاع میدهد [2].
هشدار:هشدار: ویرایش دستی روترها یا صفحات ویکی تولید شده، پیمانی را که در README شرح داده شده است میشکند. در عوض، آنها را با پیروی از دستورات
CLAUDE.mdمجدداً تولید کنید [2].
نحوه رسیدگی به انحراف محصول (product drift)
انحراف (Drift) به جای یک اثر جانبی، به عنوان یک دامنه درجه اول در نظر گرفته میشود. از آنجایی که وضعیت گذشته، وضعیت فعلی، منطق انتقال و جهت آینده همگی ثبت شدهاند [1]، یک عامل میتواند قبل از اقدام، به آن سوابق مراجعه کند. در عمل، این امر از چهار رفتار پشتیبانی میکند:
- اجتناب از بازگرداندن تصمیماتی که تعمداً تغییر یافتهاند [1].
- درک اینکه چرا وضعیت فعلی با برنامه اولیه تفاوت دارد [1].
- همسو ماندن با مسیر حرکت محصول [1].
- علامتگذاری تضادها بین یک تغییر جدید و جهت تعیین شده [1].
ساختن یک «شرکت در یک مخزن»
ارزش پیشنهادی عملی این است که ایجنت بهگونهای رفتار میکند که گویی چندین نقش را بهطور همزمان بر عهده دارد. این ابزار دیدگاه یک مهندس (معماری، انتخاب کتابخانهها، قوانین کدنویسی)، دیدگاه یک مدیر محصول (محدوده، نیازمندیها، قوانین کسبوکار، drift) و حافظه تیم (چه کسی، چه زمانی، چه چیزی را و چرا تصمیم گرفت) را به دست میآورد [1]. وقتی کاربر دستور «fix the failed payment retry» را میدهد، ایجنت میتواند پیش از تغییر در کد، به بافت محصول (product context)، قوانین کسبوکار، معماری، کتابخانهها، تصمیمات، تاریخچه drift و قوانین پروژه مراجعه کند [1].
این همان معنایی است که ابزار ادعا میکند به یک AI اجازه میدهد مانند یک شرکت کامل «vibe code» کند: مدل هوشمندتر نشده است، بلکه دستورالعملهای بهتری دریافت کرده است. مطالب پشتیبان README شامل یک صفحه مورد کسبوکار (business case) در کنار معماری، سازگاری، قوانین، بافت، حافظه، ledger، قالبها و یک قرارداد ویکی زنده (living wiki contract) است [2].
محدودیتهای طراحی که دانستن آنها ارزشمند است
عملکرد و حریم خصوصی بهطور صریح مورد توجه قرار گرفتهاند. در README، این ابزار ارزان و سریع توصیف شده است و تأکید میکند که بهجای درخت (tree)، بسته دانش (knowledge pack) را میخواند و از هیچ daemon، شبکه یا سرویس ایندکس استفاده نمیکند [2].
برای تیمهایی که نگران وابستگی شدید به یک ارائهدهنده (lock-in) هستند، مجوز ساده است: MIT، طبق فایل LICENSE مخزن [2]. این مخزن همچنین شاخههایی (branches) را برای کسانی که میخواهند فعالیتهای توسعه را دنبال کنند، ارائه میدهد [7].
جایگاه این پروژه در میان سایر پروژههای نویسنده
Ihab Khaled آثار دیگری را در همین فضای کلی مدیریت میکند. ClawAI بهعنوان یک صفحه کنترل AI با اولویت محلی (local-first) توصیف شده است که مدلهای باز را روی دستگاه کاربر اجرا میکند و در عین حال به ارائهدهندگان برتر LLM متصل میشود و دارای قابلیتهای routing، حافظه و ارکستراسیون است [8]. در لیست تغییرات (changelog) آن، نسخه 0.2.0 مستند شده است که نشاندهنده انتقال از یک ساختار monolith به نه میکروسرویس NestJS با پیامرسانی RabbitMQ، Nginx بهعنوان API gateway و تقریباً بیست کانتینر تحت Docker Compose است [9].
این دو پروژه لایههای متفاوتی را پوشش میدهند. ClawAI تصمیم میگیرد که از کدام مدل استفاده شود؛ Akinator اطمینان حاصل میکند که مدل انتخابشده پیش از اقدام، پروژه را درک کرده باشد [8][1]. بوردهای پروژه و جریانهای کاری CI مربوط به ClawAI، دغدغههای زیرساختی مجزایی هستند [10][11].
آنچه بهطور عمومی مستند نشده است
فایل README استخراجشده، مواردی مانند نصب، یکپارچهسازی پلتفرم، دامنهها و قرارداد فایلهای تولیدشده را پوشش میدهد، اما همه چیز را نه. فرمتهای دقیق فایلهای مورد استفاده برای ذخیره هر دامنه، اینکه بازیابی از embeddings یا تطبیق کلمات کلیدی استفاده میکند، هزینه تأخیر (latency) هوکها، حل تعارض بین ورودیهای دانش، رفتار monorepo و قیمتگذاری در مطالبی که در اینجا بررسی شد، توصیف نشدهاند [1, 2].
برخی از فهرستهای شخص ثالث جزئیاتی را اضافه میکنند که خود مخزن آنها را تأیید نمیکند. یکی از آنها یک حلقه دوازده مرحلهای شامل ask، resolve، audit، plan، implement، document، skillify، rule، contextify، memoize، index-and-sync و verify را توصیف میکند، بهعلاوه دستوراتی برای onboarding، اجرای حلقه و بازرسی لایه دانش [13]. تا زمانی که این موارد در مخزن منبع تأیید شوند، به آن بهعنوان یک توصیف ثانویه نگاه کنید.
نکته:نکته: این مخزن یک موتور جستجوی کلی برای پایگاه دانش نیست. مخزنهایی مانند AI-Powered-Knowledge-Base-Search، جذب اسناد و بازیابی معنایی (semantic retrieval) را پوشش میدهند که مسئلهای متفاوت از ثبت هدف پروژه برای یک ایجنت کدنویسی است [12].
چکلیست بهکارگیری
- اسکریپت نصبکننده را پیش از اجرا بخوانید، همانطور که در خود README توصیه شده است [2].
- خط نصب shell یا PowerShell را اجرا کنید و اگر تنها از یک agent استفاده میشود، پرچمهای (flags) پلتفرم را اضافه کنید [1].
- agent را ریاستارت کرده و بهطور عادی prompt کنید؛ هیچ دستور صریحی مورد نیاز نیست [2].
- روترها و صفحات wiki تولید شده را در حالت بازتولید (regenerated) نگه دارید و آنها را بهصورت دستی ویرایش نکنید [2].
- برای بهروزرسانی، خط نصب را دوباره اجرا کنید و برای بازگرداندن مخزن (repository) بهصورت بایتبهبایت، از پرچم uninstall استفاده کنید [2].
فرضیه کلی ساده است: یک agent که دلیل (why) یک codebase را بداند، ویرایشهای متناقض کمتری نسبت به agentی که فقط فایلها را میبیند، تولید میکند. Akinator تلاشی است برای قابلحمل، نسخهبندیشده و خودکار کردن آن دانش [1].
منابع
- https://github.com/ihabkhaled/akinator-ai
- https://github.com/ihabkhaled/akinator-ai/blob/main/README.md
- https://github.com/ihabkhaled/akinator-ai/tree/main/docs
- https://github.com/ihabkhaled/akinator-ai/tree/main/skills/akinator
- https://github.com/ihabkhaled/akinator-ai/branches
- https://github.com/ihabkhaled/ClawAI
- https://github.com/ihabkhaled/ClawAI/blob/6a5bc7fb5c0532a90f393c49acaedb8832283f98/CHANGELOG.md
- https://github.com/ihabkhaled/ClawAI/projects
- https://github.com/ihabkhaled/ClawAI/actions/runs/30214522756/usage
- https://github.com/rikusato0/AI-Powered-Knowledge-Base-Search---Enrichment
- https://www.linkedin.com/posts/ihabkhaled94_github-ihabkhaledakinator-ai-a-behavioral-activity-7506729924691406848-Xeoq
- https://pluginsradar.com/chatgpt/plugins/akinator-788ea07d
- https://pluginsradar.com/chatgpt/developers/ihab-khaled
منابع
- https://github.com/ihabkhaled/akinator-ai
- https://github.com/ihabkhaled/akinator-ai/blob/main/README.md
- https://www.linkedin.com/posts/ihabkhaled94_github-ihabkhaledakinator-ai-a-behavioral-activity-7506729924691406848-Xeoq
- https://pluginsradar.com/chatgpt/developers/ihab-khaled
- https://github.com/ihabkhaled/akinator-ai/tree/main/skills/akinator
- https://github.com/ihabkhaled/akinator-ai/tree/main/docs
- https://github.com/ihabkhaled/akinator-ai/branches
- https://github.com/ihabkhaled/ClawAI
- https://github.com/ihabkhaled/ClawAI/blob/6a5bc7fb5c0532a90f393c49acaedb8832283f98/CHANGELOG.md
- https://github.com/ihabkhaled/ClawAI/projects
- https://github.com/ihabkhaled/ClawAI/actions/runs/30214522756/usage
- https://github.com/rikusato0/AI-Powered-Knowledge-Base-Search---Enrichment
- https://pluginsradar.com/chatgpt/plugins/akinator-788ea07d