تصور کنید هر بار که محیط کدنویسی خود را باز میکنید، مجبور باشید برای چهارمین بار در هفته، معماری احراز هویت پروژه را برای هوش مصنوعی توضیح دهید. این «فراموشی دیجیتال» بزرگترین مانع بهرهوری در استفاده از دستیارهای کدنویسی است. کدنویسی با Friday به این معناست که دیگر هرگز مجبور نباشید ساختار احراز هویت خود را برای ۴۷مین بار در یک هفته برای یک AI توضیح دهید.
پروژهٔ متنباز Friday که در ۱۶ سپتامبر ۲۰۲۶ منتشر شد، با ایجاد یک لایهٔ حافظهٔ شناختی (Cognitive Memory) دائمی بین محیط توسعه (IDE) و مدل زبانی بزرگ (LLM) — که شبیه کتابخانهداری است که میلیاردها صفحه را خوانده و حالا با همان لحن جواب میدهد — این مشکل را ریشهای حل میکند. هر توسعهدهندهای شایسته یک F.R.I.D.A.Y است؛ یک لایه حافظه شناختی دائمی و میزبانی شخصی برای عاملهای کدنویسی AI.
بسیاری از دستیارهای کدنویسی فعلی با یک نقص طراحی حیاتی روبروستند: هر جلسهٔ چت جدید را از نقطهٔ صفر شروع میکنند. همانطور که در تحلیل قبلی ما دربارهی مدیریت زمینه در مدلهای Claude و Gemini اشاره کردیم، اکثر ابزارها هنوز به کاربر وابسته هستند تا دستی فایلها در پنجرهٔ پرامپت بریزد یا زمینه را بازسازی کند. این چالش با نبردهای جاری میان ذخیرهسازهای معنایی و حافظههای خطی برای حفظ دستورات اولیه AI همسو است. طبق گزارشهای توسعهدهندگان، این ناکارآمدی باعث میشود تا ۴۰٪ از زمان برنامهنویس صرف بازسازی زمینه (Context) شود، نه نوشتن کد. برای مثال، ممکن است توسعهدهندهای استراتژی JWT و شمای پایگاهداده خود را در یک جلسه توضیح دهد، اما به محض باز کردن یک چت جدید، AI دوباره بپرسد: «از کدام کتابخانه JWT استفاده میکنید؟»
Friday این وضعیت را با پیادهسازی یک ستون فقرات میزبانی شخصی (Self-hosted) تغییر میدهد که از طریق پروتکل زمینهٔ مدل (MCP) به ابزارهای موجود متصل میشود. بر اساس مستندات این پروژه در گیتهاب، این معماری اجازه میدهد یک «مغز مرکزی» بهطور همزمان به چندین عامل سرویس دهد. این یعنی یک قانون معماری که توسط Claude Code در ترمینال ذخیره شده، بلافاصله در Cursor یا VS Code در دسکتاپ در دسترس است، بدون اینکه نیاز به همگامسازی دستی باشد. این «ابرقدرت مغز مشترک» تضمین میکند که چه Friday بهصورت محلی اجرا شود و چه روی یک سرور ابری ۲۴ ساعته (مانند AWS EC2، یک VPS یا Homelab)، هر عامل از طریق انتقال stdio به همان حافظه یکپارچه متصل شود.
معماری حافظه
این سیستم برای تقلید از شناخت انسانی، از یک رویکرد لایهای تحت مدیریت FastAPI استفاده میکند. سیستم از یک مسیریاب تخصصی استفاده میکند تا بهترین لایه را بر اساس نوع پرسوجو انتخاب کند:
- لایه ۲ (Mem0): مدیریت حافظهٔ معنایی برای تداوم بین جلسات و شباهتهای زمینهای. این لایه قابلیت اصلی AI برای به خاطر سپردن ترجیحات کاربر در طول ریستهای مختلف چت را فراهم میکند.
- لایه ۳ (ChromaDB): یک پایگاهداده برداری (Vector Database) محلی — مثل کارت معرفی عددی برای هر واژه که میگوید این کلمه همسایهی چه کلمات دیگری است — برای بازیابی جراحیگونه و دقیق اطلاعات مرتبط. این لایه برای کاهش نویز در پرامپتها حیاتی است.
- لایه ۴ (Neo4j): یک گراف دانش (Knowledge Graph) که موجودیتها و روابط را در یک کدبیس نقشهبرداری میکند و یک صورتبندی بصری از دانش پروژه ایجاد میکند.
این ساختار باعث کاهش شدید اتلاف توکن میشود. در روشهای سنتی تولید بازیابیافزا (RAG) — شبیه دانشآموزی که قبل از جواب دادن، اول کتاب درسی را باز میکند و از آن نقل میآورد — بلوکهای حجیمی از حافظه به پرامپت فرستاده میشد که هر تسک حدود ۸۰۰۰ توکن هزینه داشت و دقت بازیابی آن تنها حدود ۳۰٪ بود. اما بازیابی هدفمند Friday این مقدار را به تقریباً ۸۰۰ توکن کاهش داده است؛ یعنی ۹۰٪ کاهش هزینه و نویز، در حالی که دقت بازیابی به حدود ۹۴٪ رسیده است. این رویکرد یادگیری از تجربیات، مشابه سیستم WikiSkill گوگل است که با ثبت تجربیات، دقت مدلهای Gemini را بهطور چشمگیری افزایش داد.
جزئیات پیادهسازی فنی
برای دستیابی به این هدف، Friday از یک ساختار دایرکتوری خاص و سیستم خط لوله (Pipeline) برای مدیریت جریان داده استفاده میکند:
- درگاه و ارکستراسیون: فایل
gateway/main.pyبه عنوان ستون فقرات FastAPI برای احراز هویت و مسیریابی عمل میکند، در حالی کهorchestrator/router.pyتعیین میکند بر اساس نوع درخواست، کدام لایه حافظه مورد پرسوجو قرار گیرد. - خط لولههای هوشمند: پردازشهای پسزمینه در پوشه
pipelines/وظایف سنگین را بر عهده دارند.auto_graph.pyاستخراج موجودیتهای LLM برای Neo4j را مدیریت میکند وextract_facts.pyمدیریت حقایق نسخهدار به سبک S3 را بر عهده دارد. - سرور MCP: فایل
mcp/server.pyاستاندارد JSON-RPC 2.0 را پیاده میکند تا IDEها بتوانند از طریق stdio با مغز مرکزی ارتباط بگیرند. - مسیر جریان داده: یک ورودی حافظه معمولی این مسیر را طی میکند: [IDE] $ \rightarrow $ فراخوانی MCP $ \rightarrow $
gateway/main.py$ \rightarrow $ ذخیره در Mem0 $ \rightarrow $auto_graph.py$ \rightarrow $ مدل DeepSeek LLM (استخراج) $ \rightarrow $ Neo4j (ادغام گره/ایجاد یال).
تجزیه و تحلیل دقیق اجزا
- درگاه (The Gateway): دایرکتوری
gateway/شاملmain.pyاست که تمام مسیریابیها و احراز هویتها را مدیریت میکند. این بخش نقطه ورود اصلی برای هر دو رابط REST API و سرور MCP است. - لایههای قابل تعویض: دایرکتوری
layers/برای ماژولار بودن طراحی شده است. این بخش شاملlayer2_mem0.pyبرای حافظه معنایی ابری،layer3_chroma.pyبرای ذخیرهسازی برداری محلی وlayer4_neo4j.pyبرای گراف دانش است. این لایهها را میتوان در صورت نیاز تعویض کرد. - استودیو (The Studio): پوشه
studio/شاملindex.htmlاست؛ یک فرانتاند ۱۴۰۰ خطی که با force-graph، d3 و JS خام ساخته شده و برای اجرا به هیچ وابستگی (Dependency) نیاز ندارد. - راهاندازی اولیه (Bootstrapping): دایرکتوری
seed/دادههای دمو از جملهfacts.example.jsonوblueprints/demo_architecture.mdرا فراهم میکند تا به کاربران در راهاندازی سریع یک نصب تازه کمک کند. - زیرساخت: پروژه شامل یک
Dockerfileبر پایهpython:3.11-slimو یکdocker-compose.ymlاست که مغز Friday را همراه با Neo4j برای استقرار در محیط عملیاتی (Production) بستهبندی میکند.
موتور Auto-Graph و استودیو عصبی
یکی از متمایزترین ویژگیهای این ابزار، موتور Auto-Graph است. وقتی برنامهنویس حافظهای را ذخیره میکند — برای مثال: «اپلیکیشن من برای اشتراکها از Stripe استفاده میکند. پلنها: رایگان (۰ دلار)، حرفهای (۱۹ دلار در ماه)، تیمی (۴۹ دلار در ماه). PayPal پرداختهای بینالمللی را مدیریت میکند. وبهوکها در مسیر /api/payments/webhook هستند» — سیستم با استفاده از مدل DeepSeek Flash بهطور خودکار موجودیتها و روابط را استخراج میکند.
سپس این اطلاعات را بدون نیاز به تگگذاری دستی، فایلهای YAML یا لینکدهی دستی، به صورت گرهها و یالها در گراف Neo4j سیمکشی میکند. در مثال بالا، موتور بهطور خودکار گرههایی برای «MyApp»، «Stripe» و «PayPal» ایجاد کرده و یالهایی مانند MyApp ────USES────────▶ Stripe و Stripe ───WEBHOOK_AT──▶ /api/payments/webhook را برقرار میکند.
برای بصریسازی این دادهها، Friday ابزاری به نام Neural Studio ارائه داده است. این مرورگر گراف دانش، مشابه نمای گراف در Obsidian عمل میکند و به توسعهدهندگان اجازه میدهد:
- کاوش در صورتبندیها: کل پایگاه دانش را به صورت یک صورتبندی زنده مشاهده کنند.
- دستکاری نما: از یک اسلایدر پخش (۱ تا ۱۰) برای ایجاد فضای بیشتر در گرافهای متراکم بهصورت آنی استفاده کنند.
- فیلتر و بازرسی: از تراشههای فیلتر پروژه برای ایزوله کردن بخشهای خاص (مثلاً WebApp در برابر Auth) استفاده کرده و از یک کشوی بازرس (Inspector) برای عملیات کامل CRUD استفاده کنند.
- مدیریت دادهها: گرهها را مستقیماً از طریق رابط کاربری اضافه، تغییر نام، حذف یا متصل کنند، با این قابلیت که فیزیک گراف را برای تثبیت چیدمان منجمد کنند.
- بهروزرسانیهای آنی: رابط کاربری دارای قابلیت بهروزرسانی خودکار زنده هنگام رسیدن حافظههای جدید و گزینه «Fit View» برای بازنشینی دوربین است.
مدیریت حقایق نسخهدار (Versioned Facts) و ردپای ممیزی
علاوه بر حافظهٔ سیال، Friday یک دفتر کل «حقایق نسخهدار» شبیه S3 پیاده کرده است. این بخش برای قوانین اتمی است که بهندرت تغییر میکنند، مانند اهداف استقرار (Deployment Targets) یا استانداردهای تیم. این حقایق مجزا با یک تاریخچه نسخه تغییرناپذیر ذخیره میشوند که در آن نسخههای قدیمی جایگزین میشوند اما هرگز حذف نمیشوند. این رویکرد برای ایجاد پایداری دانش، یادآور استفاده از گاوصندوقهای محلی SQLite در LoreDocs است تا از فقدان حافظه در جلسات طولانی جلوگیری شود.
وقتی یک حقیقت بهروز میشود — مثلاً تغییر از «ما روی Ubuntu 22.04 LTS + systemd مستقر میشویم» به «ما روی Ubuntu 24.04 LTS + Docker Compose مستقر میشویم» — حقیقت قدیمی با superseded: true و حقیقت جدید با superseded: false علامتگذاری میشود. این کار تضمین میکند که هوش مصنوعی همیشه فعالترین نسخه را دریافت کند، اما یک ردپای ممیزی (Audit Trail) کامل حفظ شود. توسعهدهندگان میتوانند تاریخچه کامل را از طریق API با استفاده از GET /facts?include_superseded=true بازیابی کنند.
استقرار و پیکربندی
استقرار این سیستم از طریق Docker Compose انجام میشود و نیازی به پیکربندی دستی پایتون یا پایگاهداده ندارد. این تنظیمات برای یک «راهاندازی ۶۰ ثانیهای» طراحی شده است که در آن کاربران مخزن را کلون کرده، یک فایل .env را پیکربندی میکنند و همه چیز را با یک دستور اجرا میکنند.
پیکربندی محیطی:
کاربران باید متغیرهای زیر را در فایل .env خود تنظیم کنند:
FRIDAY_API_KEY: یک رمز عبور محرمانه برای محافظت از سرور میزبانی شخصی.DEEPSEEK_API_KEY: برای استخراج Auto-graph (با هزینه حدود ۰.۱۴ دلار به ازای هر میلیون توکن).MEM0_API_KEY: برای حافظه معنایی (لایه رایگان سخاوتمندانهای دارد).NEO4J_PASSWORD: یک رمز عبور قوی برای پایگاهداده Neo4j.NEO4J_URI: بهطور پیشفرضbolt://neo4j:7687است.DEEPSEEK_MODEL: بهطور پیشفرضdeepseek-chatاست.FACTS_PATH: بهطور پیشفرض/app/facts/facts.jsonاست.
سیستم سپس یک نقطهٔ اتصال سلامت (/health) را ارائه میدهد تا وضعیت لایههای Neo4j، Mem0 و حقایق را بررسی کند. یک بررسی موفق خروجی {"status":"healthy","layers":{"neo4j":"ok","mem0":"ok","facts":"ok"}} را برمیگرداند.
API و ابزارها
Friday یک REST API جامع فراهم میکند که در آن تمام نقاط اتصال نوشتاری (Write Endpoints) به هدر X-Brain-Key نیاز دارند. نقاط اتصال کلیدی عبارتند از:
POST /add: ذخیره یک حافظه و فعال کردن سیمکشی auto-graph.POST /facts: افزودن یا جایگزینی یک حقیقت نسخهدار.GET /facts: لیست کردن تمام حقایق فعال.POST /search: انجام جستجوی معنایی از طریق Mem0.POST /ingest: اجازه ورود اسناد کامل یا بلوپرینتهای معماری.GET /api/graph-data: ارائه گرهها و یالهای مورد نیاز برای رندر کردن رابط کاربری Neural Studio.GET /api/search-quick?q=term: جستجوی سریع و فازی نام گرهها.POST /api/node/createوDELETE /api/node/{id}وPOST /api/node/renameوPOST /api/link/create: عملیات کامل CRUD گراف.
سیستم چهار ابزار بومی MCP را در اختیار عاملهای AI قرار میدهد که آنها بهطور خودکار یاد میگیرند از آن استفاده کنند:
۱. get_context: در شروع جلسه (START) برای بارگذاری تمام حقایق فعال و حافظههای اخیر جهت جهتدهی سریع.
۲. memory_search: پیش از پاسخ به سوالات معماری یا طراحی (مثلاً: «الگوی احراز هویت ما دوباره چه بود؟»).
۳. add_memory: پس از پیادهسازی ویژگیها، رفع باگها یا اتخاذ تصمیمات معماری.
۴. add_fact: برای قوانین اتمی که هرگز تغییر نمیکنند، مانند انتخابهای استک تکنولوژی و استانداردهای تیم.
پیکربندی کلاینتها
این پروژه از طیف گستردهای از کلاینتها از طریق پیکربندیهای خاص پشتیبانی میکند:
- Antigravity IDE: پیکربندی از طریق
~/.gemini/config/mcp_config.jsonبا استفاده از دستورpython -m mcp.server. - Claude Code CLI: اتصال از طریق دستور
claude mcp add friday -e FRIDAY_URL="http://localhost:8000" -e BRAIN_API_KEY="your_key" -- python -m mcp.serverیا از طریق~/.claude.json. - Cursor: پیکربندی از طریق
.cursor/mcp.jsonدر ریشه پروژه یا تنظیمات سراسری. - VS Code (Cline / Roo Code): افزودن از طریق
settings.jsonدر بخشcline.mcpServers. - Claude Desktop: پیکربندی از طریق
claude_desktop_config.jsonدر Application Support (macOS) یا AppData (Windows). - عاملهای سفارشی: میتوانند از طریق MCP stdio یا یک REST API مستقیم HTTP با استفاده از هدر
X-Brain-Keyتعامل داشته باشند.
به دلیل میزبانی شخصی، پروژه ادعا میکند که دادهها هرگز زیرساخت یا سرور کاربر را ترک نمیکنند. امنیت از طریق احراز هویت کلید API برای تمام نقاط اتصال نوشتاری مدیریت میشود، اگرچه Neural Studio و بررسیهای سلامت بهطور پیشفرض عمومی هستند. برای استقرارهای عمومی، مستندات پیشنهاد میکنند از احراز هویت پروکسی معکوس مانند Nginx basic auth یا Cloudflare Access استفاده شود. برای استفاده محلی، کاربران باید آدرس bind میزبان را در فایل .env از 0.0.0.0 به 127.0.0.1 تغییر دهند.
نقشه راه آینده
این تغییر به سمت حافظه دائمی و مستقل از عامل، نشاندهنده آیندهای است که در آن «هوش» یک محیط کدنویسی، نه فقط در مدل مورد استفاده، بلکه در گراف دانشی است که توسعهدهنده در طول زمان میسازد. نقشه راه Friday مسیر روشنی را برای این تکامل ترسیم میکند:
- نسخه ۱.۰ (بنیاد): درگاه FastAPI، یکپارچگی Neo4j، Neural Studio و سرور MCP را عرضه کرده است.
- نسخه ۱.۱ (چند کاربره و DX): در حال حاضر در دست توسعه است و بر روی فضای نامهای ایزوله (Isolated Namespaces) برای چندین کاربر، یک SDK پایتون (
pip install friday-client)، یک SDK برای TypeScript/JS و یک CLI اختصاصی برای مدیریت حافظه در ترمینال تمرکز دارد. - نسخه ۱.۲ (یکپارچگیها): یکپارچگیهای برنامهریزی شده شامل یک بات GitHub Actions برای ذخیره خودکار خلاصههای PR، یکپارچگی Slack از طریق
/friday rememberو وارد کردن خودکار تیکتها از Jira و Linear است. - نسخه ۲.۰ (ابری): برنامههای آینده برای یک گزینه مدیریت شده «Friday Cloud» با محیطهای کاری تیمی برای حافظه مهندسی مشترک است.
با جداسازی حافظه از جلسه چت، Friday هوش مصنوعی را از یک پیمانکار بدون وضعیت (Stateless) به یک شریک بلندمدت تبدیل میکند که تفاوتهای ظریف یک کدبیس خاص را درک میکند. توسعهدهندگان اکنون میتوانند نمونه خود را از طریق گیتهاب مستقر کنند تا از تکرار مکررات برای عاملهای خود دست بکشند.
گام بعدی شما
- مخزن گیتهاب Friday را کلون کرده و با Docker Compose روی سیستم خود یا یک VPS راهاندازی کنید.
- اگر از Cursor یا Claude Desktop استفاده میکنید، تنظیمات MCP را طبق مستندات پروژه بهروز کنید تا عامل شما به حافظهٔ دائمی دسترسی یابد.
- یک فایل
architecture.mdاز پروژه فعلی خود را از طریق نقطهٔ اتصال/ingestوارد کنید تا گراف دانش اولیه شما ساخته شود.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو