تصور کنید عامل هوش مصنوعی شما درست همین حالا یک ماژول را با الگویی بازنویسی کرده است که تیم شما ۶ ماه پیش صراحتاً آن را ممنوع کرده بود. این شکست به این دلیل رخ میدهد که اکثر عاملها برای به خاطر آوردن قوانین به بازیابیهای تقریبی تکیه میکنند و همین موضوع باعث تخطی آنها از دانش تثبیتشدهی محصول میشود. RAC-Core با تبدیل نیازمندیها به کد، یک سیستم ثبت قطعی ایجاد میکند که عاملها نمیتوانند آن را نادیده بگیرند. محصول Lore، رابط کاربری این سیستم است که تمام دانش ثبتشدهی تیم — از نیازمندیها، تصمیمات، طراحیها، نقشهراهها (Roadmaps) و پرامپتها — را بهصورت فایلهای Markdown تایپشده در مخزن (Repo) شما نگه میدارد.
بسیاری از توسعهدهندگان در حال حاضر از تولید بازیابیافزا (RAG) — که شبیه دانشآموزی است که قبل از جواب دادن، اول کتاب درسی را باز میکند و از آن نقل میآورد — برای دادن زمینه به عاملها استفاده میکنند. طبق گزارشهای فنی، RAG برای یافتن اسناد مرتبط با سوالات کلی عالی است، اما در دقت و تکرارپذیری مشکل دارد. این سیستم ممکن است یک تصمیم قدیمی و منسوخ را به عنوان مرتبطترین پاسخ برگرداند و باعث شود عامل، منطقی تاریخگذشته را پیاده کند. چون RAG بر اساس شباهت رتبهبندی میکند، نتایج در هر بار اجرا ممکن است تغییر کنند.
تفاوت این دو رویکرد را اینگونه تصور کنید: RAG مثل کتابداری است که کتابهایی را پیشنهاد میدهد که «شاید» مرتبط باشند، اما RAC-Core مثل یک کارمند حقوقی است که دقیقاً قانون فعال و جاری را به شما تحویل میدهد. همانطور که در تحلیل قبلی ما دربارهی امنیت مدلهای بازمتن اشاره کردیم، کنترل دقیق بر ورودیها کلید پایداری است؛ RAC-Core نیز همین نقش را برای تصمیمات فنی ایفا میکند و اطمینان حاصل میکند که عامل به جای تخطی از قوانین، به تصمیمات جاری استناد کند. این سیستم دانش را بهصورت «فقط-خواندنی» از طریق پروتکل زمینه مدل (MCP) به ابزارهایی مثل Claude Code، Cursor و Claude Desktop میرساند. این یکپارچگی با ابزارهای کدنویس، یادآور رویکرد پروژه y در ایجاد رابطهای کاربری پویا با Claude Code است که در آن مدلها مستقیماً بر ساختار محصول اثر میگذارند.
مدیریت دانش قطعی
در قلب این سیستم، یک موتور متنبازی به نام RAC (Requirements as Code) قرار دارد. بر اساس مستندات پروژه، RAC برخلاف پایگاهدادههای برداری، از بردار معنایی (Embedding) — که مثل کارت معرفی عددی برای هر واژه است تا همسایههایش را بشناسد — یا ایندکسهای جستوجو یا فراخوانیهای مدل برای تعیین مرتبط بودن استفاده نمیکند. در عوض، دانش را بهصورت فایلهای Markdown تایپشده که مستقیماً در مخزن ذخیره شدهاند، میبیند. هر مصنوع (Artifact) یک فایل Markdown ساده با یک پوشهی کوچک متاداده (frontmatter) است؛ موتور آن را بهصورت قطعی طبقهبندی کرده و با یک طرحواره (Schema) مخصوص هر نوع اعتبارسنجی میکند.
این معماری امکان اجرای سختگیرانه قوانین را در چرخه توسعه از طریق چندین مکانیسم کلیدی فراهم میکند:
- یکپارچگی با CI: تیمها میتوانند با دستورات
rac validateوrac gateاز ادغام (Merge) اسنادی که ساختار غلط دارند، لینکهای شکسته یا مبهم دارند، یا به تصمیمات منسوخ ارجاع میدهند، جلوگیری کنند. - دسترسی فقط-خواندنی: سرور MCP در Lore هرگز اجازه تغییر در دادهها را ندارد؛ مرز اعتماد تنها در دست بررسی انسانی در Pull Requestهاست. این موضوع تضمین میکند که عاملها میتوانند به تصمیمات استناد کنند اما نمیتوانند ذخیرهگاه دانش را تغییر دهند.
- طراحی ایزوله (Air-Gapped): این موتور هیچ تماس شبکهای و هیچ فراخوانی LLM ندارد. تنها خروجی شبکه، یک پینگ گزارشدهی بدون محتوا و مشروط به رضایت کاربر است (که بهصورت پیشفرض غیرفعال است). نصبهای تحت نظارت میتوانند با دستور
rac telemetry off --enterprise(مطابق با ADR-086) ثابت کنند که این قابلیت خاموش میماند.
جزئیات پیادهسازی
برای نصب این موتور به پایتون ۳.۱۱ یا بالاتر نیاز دارید. کاربران میتوانند از طریق pip install rac-core یا uv tool install rac-core آن را نصب کنند. بسته به قابلیتهای مورد نیاز، پرچمهای نصب متفاوتی در دسترس است:
pip install 'rac-core[ingest]': قابلیت وارد کردن فایلهای DOCX و HTML را اضافه میکند.pip install 'rac-core[ingest-all]': پشتیبانی از وارد کردن PDF، PPTX و XLSX را فعال میکند.pip install 'rac-core[explorer]': شامل مرورگر ترمینالی (rac explorer) است.
برای اتصال یک عامل، کاربران میتوانند دستور claude mcp add lore -- rac mcp را در ریشه مخزن اجرا کنند. برای Claude Desktop یا Cursor، پیکربندی mcpServers نیاز به دستور rac با آرگومان --root دارد که دقیقاً به مسیر مطلق مخزن اشاره کند. این قابلیت اتصال به ابزارهای مختلف، مشابه سیستم Klaussy-Agents است که مهارتهای کدنویسی را میان چندین عامل برتر همگامسازی میکند.
گردش کار نویسندگی و اعمال قوانین از طریق یک جریان CLI خاص است. کاربر ممکن است با rac quickstart برای تنظیم هویت شروع کند، سپس از rac new decision adr.md برای ایجاد یک مصنوع تایپشده و تخصیص شناسهی آن استفاده نماید. برای نگهداری بدنه دانش، rac inspect کامل بودن اسناد را چک میکند، در حالی که rac review یک بازبینی کامل از مخزن ارائه میدهد و بدترین مشکلات را در اولویت قرار میدهد.
مهاجرت و Interoperability
برای تیمهایی که از سیستمهای قدیمی مثل Confluence یا Notion مهاجرت میکنند، این پلتفرم ابزارهای خاصی برای جذب دادهها فراهم کرده است. قابلیت rac-import اجازه میدهد هر سند موجود به یک مصنوع معتبر تبدیل شود. این فرآیند شامل یک مرحله بررسی انسانی است که در آن عامل، پیشنویسی را فقط بر اساس آنچه در سند آمده تهیه کرده و یک نوع، عنوان و روابط پیشنهادی را برای تأیید کاربر ارائه میدهد. برای تبدیلهای انبوه، از قابلیت rac-ingest استفاده میشود.
RAC-Core همچنین سازگاری بالایی با فرمت دانش باز گوگل (OKF) دارد. در حالی که OKF فقط حامل داده (یک درخت Git از Markdown با متاداده YAML) را استاندارد میکند، RAC نظارت بر زمان نوشتن را اضافه میکند. هر مخزن RAC را میتوان با دستور rac export --okf به یک بسته مطابق با استاندارد OKF تبدیل کرد.
برای تسهیل زنجیرههای ابزاری خارجی، این موتور چندین حالت خروجی (Export) ارائه میدهد:
--html: یک «پورتال» ایجاد میکند (کل گراف دانش در یک فایل).--documents: فایلهای JSONL برای سیستمهای حافظه و پشتیبانهای RAG تولید میکند.--graph: یک گراف تصمیمات تایپشده برای پشتیبانهای گرافی میسازد.
مدل بازیابی ترکیبی
هدف RAC-Core جایگزینی کامل RAG نیست، بلکه تکمیل آن است. جریان کاری ایدهآل، الگوی «یادآوری سپس تأیید» است: استفاده از بازیابی تقریبی (RAG/حافظه عامل) برای یافتن موارد نزدیک به سوال، و سپس استفاده از Lore برای تأیید تصمیم دقیق و جاری.
این رویکرد پیشبینیناپذیری رفتار عامل را حذف میکند. چون بازیابی قطعی و تکرارپذیر است، هر عضو تیم و هر عامل، یک منبع حقیقت واحد را میبیند. این تغییر، همراستاسازی (Alignment) هوش مصنوعی را از سطح پرامپت به سطح مخزن کد منتقل میکند. با نسخهبندی «چرای» نرمافزار در کنار «چگونگی» کد، تیمها دیگر با تمایل عامل به توهم (Hallucination) — یعنی وقتی مدل با اطمینان چیزی میگوید که اصلاً وجود ندارد، شبیه دوستی که خاطرهای را اشتباه تعریف میکند — برای رسیدن به معماریهای راحت اما غلط نمیجنگند.
برای کسانی که ابزارهای سفارشی میسازند، این موتور به عنوان یک کتابخانه پایتونی از طریق rac.__all__ در دسترس است. توسعهدهندگان میتوانند از توابع parse_file ،classify و find_artifacts برای تعامل برنامهنویسی با پایگاه دانش استفاده کنند.
اگر در حال گسترش تیمی هستید که به شدت از Claude Code یا Cursor استفاده میکند، میتوانید با ایجاد اولین سند تصمیم معماری خود با دستور rac new decision adr.md شروع کنید تا ببینید موتور چگونه کامل بودن اسناد را تحمیل میکند. برای جزئیات فنی کامل، پروژه مستندات گستردهای شامل مرجع سرور MCP، راهنمای CLI و منطق موتور اصلی دارد.
گام بعدی شما
- اگر از Claude Code یا Cursor استفاده میکنید، اولین سند تصمیم معماری خود را با
rac new decision adr.mdبسازید تا قدرت نظارت موتور را ببینید. - اسناد پراکنده در Notion یا Confluence را با
rac-importبه ساختار کد-محور منتقل کنید. - تنظیمات MCP را در IDE خود فعال کنید تا عامل شما دیگر تصمیمات فنی تیم را نادیده نگیرد.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو