پرش به محتوای اصلی
پرش به محتوای مقاله

«مدل درختی گفتگو»؛ راهکار Branch Agent برای مدیریت نسخه‌های چت

·۷ تیر ۱۴۰۵۵ دقیقه مطالعه
راهنما
عامل شاخه: شاخه‌بندی گیت‌محور برای گفتگوهای مدل زبانی بزرگ
عامل شاخه: شاخه‌بندی گیت‌محور برای گفتگوهای مدل زبانی بزرگ
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

معرفی سازوکار فورک با پیچیدگی O(1) برای تاریخچه گفتگوها؛ به جای کپی کردن کل متن، تنها یک اشاره‌گر به نقطه جدایش ذخیره می‌شود که مدیریت موازی مدل‌های مختلف را ممکن می‌کند.

تصور کنید هر گفتگوی شما با هوش مصنوعی، به‌جای یک خط مستقیم، شبیه به یک درخت باشد که هر لحظه می‌توانید از آن شاخه‌های جدیدی بزنید. اگر هنوز برای مقایسه دو مدل مختلف، متن‌ها را بین تب‌های مرورگر کپی-پیست می‌کنید، باید بدانید که دوران مدیریت دستی تاریخچه گفتگوها به پایان رسیده است. این روش دستی نه تنها غیرقابل بازتولید است و نه تاریخچه‌ی نسخه‌ها را حفظ می‌کند.

پروژه‌ی Branch Agent در ۲۸ ژوئن ۲۰۲۶ به‌عنوان یک پیاده‌سازی مرجع منتشر شد تا فلسفه‌ی «رفتار با گفتگوهای مدل زبانی بزرگ (LLM) به‌مثابه‌ی یک درخت» را عملی کند. مدل زبانی بزرگ (LLM) — مثل کتابخانه‌داری که میلیاردها صفحه را خوانده و حالا با همان لحن کتاب‌ها جواب می‌دهد — در این سامانه به‌گونه‌ای مدیریت می‌شود که توسعه‌دهندگان بتوانند دقیقاً مشابه کدهای نرم‌افزاری، چت‌ها را فورک (Fork) کرده و در نهایت ادغام کنند. این سازوکار اجازه می‌دهد چندین مدل، پرامپت سیستمی (System Prompt) و ارائه‌دهنده را به‌صورت موازی و بدون تکرار تاریخچه گفتگو آزمایش کنید.

بسیاری از کاربران فعلاً با تغییر دستی پرامپت و اجرای مجدد چت، آزمایش‌های خود را انجام می‌دهند. همان‌طور که در تحلیل قبلی ما درباره‌ی بهینه‌سازی مدل‌های محلی در پوشش FastFlowLM اشاره کردیم، نیاز به ردیابی دقیق آزمایش‌ها یک ضرورت است و Branch Agent این آشفتگی را با یک معماری رسمی شاخه‌بندی جایگزین کرده است تا روند تجربه کردن مدل‌ها از حالت دستی به یک فرآیند ساختارمند تبدیل شود. این رویکرد مدیریت مدل‌ها، به‌ویژه زمانی که با زیرساخت‌های مقیاس‌پذیر سروکار داریم، اهمیت بیشتری می‌یابد؛ برای مثال، مدیریت استقرار مدل‌هایی مانند Qwen2.5 روی کلاسترهای کوبرنتیز گام اولی برای ایجاد محیط‌های تست پایدار در مقایس با مدل‌های محلی است.

معماری فنی

به نقل از راهنمای فنی dev.to، این سامانه بر پایه یک پشته‌ی تخصصی برای انعطاف‌پذیری و واکنش‌گرایی بالا بنا شده است. اجزای اصلی این پشته عبارتند از:

  • Convex: یک پایگاه‌داده بک‌اند که تغییرات ACID و کوئری‌های واکنشی را از طریق WebSockets فراهم می‌کند. این ابزار تضمین می‌کند رابط کاربری هم‌زمان با استریم شدن توکن‌ها (Token) — تکه‌های کوچکی از متن شبیه برش‌های یک کیک طولانی — به‌روز شود. در این سیستم، برای تابع chatWithAgent از اکشن‌های قطعی (Deterministic Actions) استفاده می‌شود که خارج از تراکنش‌های سنتی اجرا شده اما به‌طور ایمن کوئری‌های داخلی را فراخوانی می‌کنند.
  • Agno (Python SDK): یک چارچوب عامل‌محور پایتونی که برای هر درخواست یک عامل (Agent) تازه می‌سازد تا از نشت وضعیت (State Leakage) بین شاخه‌های مختلف جلوگیری کند. این SDK از خروجی‌های ساختاریافته بر اساس طرحواره‌های Pydantic و پاسخ‌های استریم شده همراه با رویدادهای میانی (مانند مراحل استدلال یا فراخوانی ابزارها) پشتیبانی می‌کند.
  • Next.js 15 & React 19: لایه فرانت‌اند که با استفاده از App Router و Server Components، تجربه کاربری و نمایش‌های مقایسه‌ای دوپانه (Side-by-side) را مدیریت می‌کند.
  • Tailwind CSS v4 + shadcn/ui: لایه استایل‌دهی که با رویکرد Utility-first، پشتیبانی داخلی از حالت تاریک (Dark Mode) را فراهم می‌آورد.

عامل شاخه: شاخه‌بندی گیت‌محور برای گفتگوهای مدل زبانی بزرگ

سازوکار فورک با پیچیدگی O(1)

بر اساس مستندات convex/schema.ts در این پروژه، برخلاف لاگ‌های سنتی چت که کل تاریخچه را کپی می‌کنند، Branch Agent از یک طرحواره رابطه‌ای استفاده می‌کند. هر شاخه حاوی یک snapshotMessageId است که دقیقاً به پیامی اشاره می‌کند که فورک از آن نقطه آغاز شده است.

از آنجا که سامانه تنها یک اشاره‌گر به شاخه والد (parentBranchId) و نقطه اسنپ‌شات ذخیره می‌کند، عملیات فورک کردن از نظر فضای ذخیره‌سازی دارای پیچیدگی O(1) است. در واقع، جهش forkBranch صرفاً یک ورودی جدید در جدول شاخه‌ها با ارجاعات والد و اسنپ‌شات ایجاد می‌کند و هیچ پیامی تکرار نمی‌شود.

برای بازسازی تاریخچه یک چت، کوئری internalGetBranchHistory به‌صورت بازگشتی از طریق اشاره‌گرهای والد و اسنپ‌شات به عقب حرکت می‌کند. این کوئری ابتدا پیام‌های خاص همان شاخه را می‌گیرد و سپس تابع traverseToSnapshot را فراخوانی می‌کند تا زمینه اجدادی (Ancestral Context) را به ابتدای تاریخچه اضافه کند.

پیکربندی‌های اختصاصی هر شاخه

هر خط زمانی موازی می‌تواند هویت مجزایی داشته باشد. طبق معماری agentConfigSchema در این ابزار، هر شاخه پارامترهای خاص خود را تعریف می‌کند تا آزمایش‌ها به‌طور کامل ایزوله شوند:

  • مدل و ارائه‌دهنده: امکان استفاده از ارائه‌دهندگان مختلف LLM (مانند OpenAI، Together، Groq یا Ollama) از طریق URLهای پایه و کلیدهای API اختصاصی.
  • تنظیمات رفتاری: تعریف پرامپت سیستمی سفارشی، تنظیم temperature (دما) برای کنترل خلاقیت و محدودیت maxTokens.
  • یکپارچه‌سازی قابلیت‌ها: ابزارهای یکپارچه شده‌ای مانند جست‌وجوی وب، ماشین‌حساب و سیستم ورودی/خروجی فایل.

این ساختار اجازه می‌دهد مثلاً یک شاخه را با GPT-4o و شاخه فورک‌شده را با لاما (Llama) و یک پرامپت سیستمی متفاوت اجرا کنید تا به‌طور دقیق مقایسه کنید که معماری‌های مختلف چگونه با یک تاریخچه یکسان برخورد می‌کنند.

عامل داور و فرآیند ادغام

وقتی کاربر مسیر برتر یا پاسخ بهتری را در یک شاخه فورک‌شده می‌یابد، می‌تواند آن را به خط زمانی اصلی برگرداند. این فرآیند توسط اکشن mergeWithJudge مدیریت می‌شود. سامانه تاریخچه هر دو شاخه را به یک عامل Agno می‌فرستد که در نقش «داور» عمل می‌کند و دستورالعمل خاصی را دریافت می‌کند: «شما یک داور ادغام هستید. یادگیری‌های کلیدی، تفاوت‌ها و بینش‌های شاخه منبع (SOURCE) را خلاصه کرده و یک گزارش ادغام موجز تهیه کنید.»

این خلاصه نهایی به‌عنوان یک پیام سیستمی در شاخه هدف درج می‌شود و شاخه منبع با وضعیت isMerged: true علامت‌گذاری شده و گزارش ادغام (mergeSummary) در پایگاه‌داده ذخیره می‌گردد.

جریان استریم در لحظه

رابط کاربری به‌رغم پیچیدگی‌های زیرساختی، کاملاً روان است. هنگامی که پیامی ارسال می‌شود، اکشن Convex تاریخچه بازسازی‌شده کامل را دریافت کرده و آن را از طریق یک درخواست HTTP POST به مسیر /chat (در قالب استریم SSE) به سرویس پایتون Agno می‌فرستد.

سرویس Agno با استفاده از تابع create_agent مدل و ابزارها را بر اساس پیکربندی خاص آن شاخه تعیین می‌کند. همان‌طور که عامل پاسخ را تولید می‌کند، توکن‌ها را از طریق Server-Sent Events (SSE) بازمی‌گرداند.

از آنجا که سند Convex در هر دلتای توکن توسط جهش internalUpdateMessageStream به‌روزرسانی می‌شود، هوک واکنشی useQuery در فرانت‌اند باعث رندر مجدد فوری می‌شود. این سازوکار تضمین می‌کند که پاسخ‌ها به‌طور نرم در رابط کاربری استریم شوند، بدون اینکه نیاز به بازخوانی دستی (Polling) باشد.

ابزارهای مقایسه و توسعه

رابط کاربری شامل کامپوننت CompareView است که اجازه می‌دهد دو شاخه را هم‌زمان مشاهده کنید. پانل‌ها به‌طور مستقل اسکرول می‌شوند و پیام‌های حاصل از تاریخچه‌های فورک‌شده با نام شاخه منبع برچسب می‌خورند. این قابلیت برای A/B تست کردن پرامپت‌های سیستمی روی یک زمینه (Context) یکسان حیاتی است.

برای توسعه محلی، این پروژه به سه ترمینال نیاز دارد: یکی برای بک‌اند Convex (npx convex dev)، یکی برای سرویس پایتون Agno و یکی برای فرانت‌اند Next.js. البته می‌توان تمام این‌ها را با یک دستور واحد ./start.sh اجرا کرد.

این معماری پیش‌فرض «آزمون و خطای خطی» در مهندسی پرامپت را تغییر می‌دهد. با انتقال به مدل شاخه‌ای، مهندسی پرامپت (Prompt Engineering) — هنر سؤال درست پرسیدن برای گرفتن بهترین جواب — به یک آزمایش ساختارمند تبدیل می‌شود که در آن «بهترین» نسخه گفتگو از طریق مقایسه تجربی انتخاب می‌شود، نه بر اساس حافظه کاربر.

برای توسعه‌دهندگان، این به معنای توانایی A/B تست عملکرد مدل روی یک پنجره متنی (Context Window) — میزان متنی که مدل هم‌زمان در ذهن نگه می‌دارد — دقیق و یکسان، بدون ریسک تغییر زمینه (Context Drift) است. تمرکز اکنون از «پیدا کردن پرامپت درست» به «مدیریت سبدی از استراتژی‌های پرامپت‌نویسی» تغییر یافته است.

توسعه‌دهندگانی که علاقه‌مند به این رویکرد هستند، می‌توانند پیاده‌سازی کامل را در dailybuild.xyz بررسی کنند تا لایه نسخه‌بندی خود را برای گردش‌کارهای عامل‌محور پیاده کنند.

گام بعدی شما

  • بررسی مستندات Agno برای یادگیری نحوه ایجاد عامل‌های ایزوله در هر درخواست.
  • آزمایش مدل‌های بازمتن در کنار مدل‌های بسته با استفاده از ساختار فورک Branch Agent برای مقایسه هزینه و کیفیت.
  • پیاده‌سازی یک عامل «داور» برای خودکارسازی فرآیند انتخاب بهترین پاسخ بین چندین مدل.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

این معماری بر اعتبار متدولوژی‌های تست مدل‌ها تأکید دارد و اجازه می‌دهد توسعه‌دهندگان با دقت ریاضی، اثر هر تغییر در پرامپت را بسنجند. این یعنی کاهش چشمگیر نرخ خطا در استقرار تجاری عامل‌های هوشمند.

تأثیر برای ایران

توسعه‌دهندگان ایرانی می‌توانند با استفاده از Agno و مدل‌های محلی (via Ollama)، محیطی برای A/B تست پرامپت‌ها بسازند بدون اینکه هزینه‌ی تکرار توکن‌ها در APIهای ابری را بپردازند.

·نگاه ما
تحریریه دات‌هوش

جایگزینی رویکرد خطی با ساختار درختی در گفتگوها، در واقع تبدیل «چت» به یک «سورس‌کد» است. این رویکرد نشان می‌دهد که آینده مهندسی پرامپت، نه در نوشتن جملات جادویی، بلکه در مدیریت نسخه‌ها و تحلیل داده‌محور خروجی‌های مختلف نهفته است. در واقع، ما از دوران حدس و گمان به دوران مدیریت علمی گفتگوهای AI می‌رویم.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.