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

تلفیق YourGPT و Forem: تبدیل چت‌بات‌های منفعل به عامل‌های عملیاتی در ویرایشگر

·۸ مرداد ۱۴۰۵۲۱ دقیقه مطالعه
راهنما
بازسازی دستیار جامعه DEV برای انجام واقعی اقدامات
بازسازی دستیار جامعه DEV برای انجام واقعی اقدامات
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

جایگزینی جریان کاری کپی-پیست با یک سیستم Close-loop که در آن مدل زبانی مستقیماً ابزارهای DOM ویرایشگر را برای تغییر محتوا، تگ‌ها و رسانه‌ها فراخوانی می‌کند.

تصور کنید نویسنده‌ای باشید که به جای جنگیدن با پنجره‌های جداگانه و کپی-پیست‌های مکرر، دستیاری دارد که دقیقاً می‌داند مکان‌نما (Cursor) کجاست و همان‌جا متن را اصلاح می‌کند. این تجربه، تفاوت میان یک چت‌بات ساده و یک عامل (Agent) — شبیه به دستیاری که فقط توصیه نمی‌کند، بلکه خودش دست به قلم می‌شود — در محیط ویرایشگر است. در واقع، یک توسعه‌دهنده موفق شده است «DEV Community Buddy» را از یک چت‌بات غیرفعال در نوار کناری به یک عامل فعال تبدیل کند که قادر به دست‌کاری مستقیم ویرایشگر است. این رویکرد بخشی از تغییر گسترده‌تر در دنیای نرم‌افزار است که در آن توسعه‌دهندگان از کدنویسی مستقیم به سمت تفویض اختیار به عامل‌های هوشمند حرکت می‌کنند.

به گزارش مستندات این پروژه، این توسعه‌دهنده با ادغام YourGPT Copilot SDK در یک نمونه محلی از پلتفرم Forem (زیرساخت متن‌باز DEV.to)، توانسته است محدودیت‌های نسخه بتأی رسمی DEV Community Buddy را دور بزند. در نسخه رسمی، اگرچه راهنمایی‌های مفیدی برای نوشتن ارائه می‌شود، اما جریان کاری نویسنده را تکه تکه می‌کند: نویسنده باید سؤال خود را در یک پنل کناری بپرسد و سپس پاسخ را به صورت دستی کپی کرده و در پیش‌نویس خود جای‌گذاری کند. دستیار رسمی می‌توانست توضیح دهد که چگونه یک کار را انجام دهیم، اما نمی‌توانست آن کار را در داخل جریان نوشتن اجرا کند. همچنین مشخص نبود که دستیار به کدام بخش از پیش‌نویس دسترسی دارد، بافت (Context) گفتگو تا چه زمانی باقی می‌ماند یا اینکه آیا جلسه گفتگو مربوط به پست فعلی است یا خیر.

علاوه بر این، باز کردن دستیار باعث کاهش فضای ویرایشگر می‌شد و رابط کاربری جداگانه‌ای ایجاد می‌کرد که با تجربه نوشتن در رقابت بود. این اصطکاک در مرحله نهایی صیقل دادن مقاله، یک «گلوگاه» ایجاد می‌کند. برای حل این مشکل، توسعه‌دهنده از ماهیت متن‌باز Forem استفاده کرد تا شکاف بین پیشنهادات هوش مصنوعی و وضعیت واقعی محصول را پر کند. نوآوری اصلی در اینجا، استفاده از الگوی «ابزار-کلاینت» (Client-Tool Pattern) است؛ جایی که مدل هوش مصنوعی تصمیم می‌گیرد «چه» چیزی باید تغییر کند، اما مدیریت‌کننده‌های (Handlers) سمت محصول تعیین می‌کنند که این تغییر «چگونه» و به صورت امن روی DOM (مدل شیء سند) اعمال شود. هدف نهایی، ساخت دستیاری است که بتواند بافت فعلی نوشته را بخواند، متن‌های انتخاب‌شده را بازنویسی کند، مارک‌داون درج نماید، تگ‌ها را پیشنهاد دهد و تغییرات تایید شده را بدون نیاز به کپی-پیست دستی اعمال کند.

ادغام مستقیم با ویرایشگر

این کوپایلت جدید وضعیت زنده مقاله را به‌طور کامل درک می‌کند؛ این وضعیت شامل عنوان، تگ‌ها، محتوای بدنه و مختصات دقیق مکان‌نمای کاربر است. طبق بررسی‌های فنی، مدل مستقیماً صفحه را دست‌کاری نمی‌کند تا از خرابی‌های احتمالی جلوگیری شود، بلکه از مجموعه‌ای از ابزارهای کنترل‌شده استفاده می‌کند تا Forem مسئولیت اعتبارسنجی و اعمال هر تغییر را بر عهده داشته باشد. این امر یک تفکیک مسئولیت شفاف ایجاد می‌کند: مدل قصد کاربر را تفسیر می‌کند، ابزارهای کلاینت اقدامات مجاز را نمایش می‌دهند و مدیریت‌کننده‌های Forem رابط کاربری واقعی را به‌روز می‌کنند. چنین ساختاری یادآور ابزارهای پیشرفته‌ای است که مانند Silent Architect، توانمندی خود در مدیریت تسک‌ها را با کاهش زمان تکمیل عملیات اثبات کرده‌اند.

ابزارهای کلیدی عملیاتی که در این نسخه پیاده شده‌اند عبارت‌اند از:

  • ویرایش آگاه از انتخاب (Selection-Aware Editing): با هایلایت کردن متن، یک تولبار متنی با گزینه‌های «بازنویسی» (Rewrite)، «کوتاه‌سازی» (Shorten) یا «غلط‌گیری» (Proofread) ظاهر می‌شود. سیستم محدوده انتخاب را ذخیره می‌کند؛ مدل نسخه بهبودیافته را برمی‌گرداند و ابزار apply_selection_edit دقیقاً همان محدوده را جایگزین می‌کند. این مکانیسم مانع از آن می‌شود که یک ویرایش کوچک به طور تصادفی کل پیش‌نویس را تغییر دهد.
  • اتوماسیون ساختار: ابزار generate_tldr به طور خودکار یک بخش فرمت‌شده با عنوان «## TL;DR» در ابتدای پست درج می‌کند. همچنین ابزار insert_into_body اجازه می‌دهد مارک‌داون در موقعیت مکان‌نما، ابتدا یا انتهای مقاله قرار گیرد.
  • جریان‌های کاری رسانه: کوپایلت می‌تواند سینتکس Mermaid را به تصاویر PNG تبدیل کند (از طریق رندر و آپلود). همچنین قادر است یک تصویر کاور تولید کرده و آن را مستقیماً به جریان انتشار متصل کند، بنابراین از تولید صرفِ پرامپت فراتر رفته و جریان کاری کاربردی را تکمیل می‌کند.
  • مدیریت متادیتا: ابزارهای set_article_title و fill_tags فیلدهای خاص فرم به‌روز می‌کنند. ابزار fill_tags تا چهار تگ مرتبط را از طریق رابط کاربری موجود در Forem (Chip Interface) انتخاب می‌کند. این سیستم مانع از خطای رایج هوش مصنوعی می‌شود که عنوان را به عنوان سرتیتر H1 در داخل بدنه قرار دهد، زیرا سیستم به‌طور صریح علامت # ابتدایی را از متون درج‌شده در بدنه حذف می‌کند.
  • گسترش پیش‌نویس: ابزارهایی مانند «نوشتن مقدمه» یا «طرح‌بندی بخش‌های باقی‌مانده» محتوا را به‌طور طبیعی در موقعیت مکان‌نما درج می‌کنند، در حالی که ویژگی «ادامه دادن به نوشتن» بر اساس وضعیت فعلی پیش‌نویس، مقاله را گسترش می‌دهد.
  • کنترل کیفیت: ابزار «غلط‌گیری این بخش» دستور زبان، املای کلمات و وضوح متن را در جای خود اصلاح می‌کند بدون اینکه بقیه پیش‌نویس را جایگزین کند. همچنین می‌تواند از طریق ابزار «افزودن استنادات» (Add citations)، منابع مرتبط را با فرمت صحیح پیدا و درج کند.

بازسازی دستیار جامعه DEV برای انجام واقعی اقدامات

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

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

  • حفظ محدوده (Range Preservation): ویرایشگر محدوده انتخاب‌شده را قبل از اینکه فوکوس به کوپایلت منتقل شود، ذخیره می‌کند. این کار تضمین می‌کند که پس از پردازش درخواست توسط AI، دقیقاً متن درست جایگزین شود.
  • جلوگیری از H1: همان‌طور که ذکر شد، سیستم به‌طور صریح یک H1 ابتدایی را از محتوای تولید شده برای بدنه حذف می‌کند. این مورد حیاتی است زیرا DEV عنوان را در یک فیلد مجزا ذخیره می‌کند و تکرار آن در بدنه باعث ایجاد چیدمان (Layout) ضعیف می‌شود.
  • اجرای تک-عملیاتی (Single-Action Execution): هر اکشن تنها یک‌بار در هر درخواست اعمال می‌شود. این کار از باگ‌های رایج هوش مصنوعی مانند تکرار متن، تگ‌های تکراری یا درج‌های unplanned جلوگیری می‌کند.
  • حفظ رابط کاربری: با استفاده از رابط کاربری واقعی تگ‌ها (Tag Chip) به جای تزریق ساده متن، کوپایلت الگوهای اعتبارسنجی و تعاملی موجود در Forem را حفظ می‌کند.

معماری فنی

این پیاده‌سازی بر پایه یک استک سه‌لایه شامل Runtime نود-جی‌اس (Node.js)، پروکسی ریلز (Rails) برای احراز هویت و YourGPT Copilot SDK (نسخه‌های ۲.۵.x) بنا شده است. توسعه‌دهنده از مدل Gemini 3.6-flash به عنوان مدل اصلی استفاده کرده و برای مدیریت محدودیت‌های نرخ درخواست (خطاهای ۴۲۹) که در تيرهای رایگان رایج است، مدل‌های جایگزینی مانند gemini-3.5-flash-lite ، gemini-3.5-flash و gemini-flash-lite-latest را تعریف نموده است.

برای حفظ پایداری، معماری از تفکیک شدید مسئولیت‌ها پیروی می‌کند:

  • پرامپت سیستمی (System Prompt): شخصیت (Persona) و قوانین سطح بالای محصول (مثلاً عنوان نباید H1 در بدنه باشد) را تعریف می‌کند. این بخش فقط شامل شخصیت و قوانین است و برای صرفه‌جویی در توکن (Token) و افزایش دقت در انتخاب ابزار، کاتالوگ طولانی ابزارها در آن قرار نگرفته است.
  • ریزپردازش بدنه (Body Payload): هر درخواست شامل یک اسنپ‌شات زنده از وضعیت فعلی مقاله (article_state) از طریق یک تابع body() است. این کار تضمین می‌کند که AI همیشه بدون نیاز به فراخوانی ابزار «خواندن پیش‌نویس» در هر سلام و احوال‌پرسی، از بافت متن آگاه باشد.
  • مدیریت‌کننده‌ها (Handlers): این توابع «مهارت‌های» واقعی برای تغییرات DOM را فراهم می‌کنند. آن‌ها قصد مدل را اعتبارسنجی کرده و به‌روزرسانی را انجام می‌دهند، در حالی که تضمین می‌کنند اعتبارنامه‌های حساس مانند کلیدهای API در فرآیند Node/Server باقی مانده و هرگز در معرض کلاینت قرار نگیرند.
  • زمان اجرا (Runtime): به جای متن ساده، از SSE (رویدادهای ارسالی سرور) رسمی استفاده می‌کند. یک کنترلر ریلز (/api/copilot) کاربر را احراز هویت کرده، بررسی‌های Session و CSRF را اعمال می‌کند و درخواست را به Runtime نود در آدرس http://127.0.0.1:3101/api/copilot/stream پروکسی می‌کند.

بازسازی دستیار جامعه DEV برای انجام واقعی اقدامات

راه‌اندازی محلی و پیکربندی

برای بازسازی این محیط در یک نمونه محلی Forem، پیش‌نیازمندهای و پیکربندی‌های زیر مورد نیاز است:

  • محیط: Ruby, Postgres, Redis, Node 20 و Yarn.
  • وابستگی‌ها: نصب @yourgpt/copilot-sdk ، @yourgpt/llm-sdk و کتابخانه openai از طریق yarn.
  • متغیرهای محیطی:
    • GOOGLE_API_KEY: کلید ارائه‌دهنده برای Gemini.
    • COPILOT_MODEL: تنظیم شده روی gemini-3.6-flash.
    • COPILOT_RUNTIME_URL: اشاره به فرآیند محلی نود (http://127.0.0.1:3101/api/copilot/stream).
    • COPILOT_RUNTIME_PORT: مقدار ۳۱۰۱.
  • اجرای Runtime: زمان اجرا با دستور yarn copilot:runtime آغاز می‌شود و بررسی سلامت (Health Check) از طریق دستور curl -s http://127.0.0.1:3101/health تأیید می‌گردد.

جزئیات پیاده‌سازی

برای دستیابی به حس روان در عملکرد کوپایلت، چندین پیکربندی فنی خاص اعمال شده است:

  • نصب فرانت‌اند: CopilotProvider حتی زمانی که داک بسته است، متصل (Mounted) می‌ماند. این کار اجازه می‌دهد ابزارهای انتخاب، تابع sendMessage را بدون اینکه کاربر ابتدا پنل را باز کند، فعال کنند.
  • جمع‌آوری وضعیت: وضعیت مقاله (article_state) از طریق تابع collectArticleState() جمع‌آوری شده و در ویژگی body پرووایدر ارسال می‌شود تا AI در هر نوبت از عنوان و محتوای فعلی بدنه آگاه باشد.
  • طرحواره‌های ابزار (Tool Schemas): استفاده از JSON Schema در inputSchema تضمین می‌کند که مدل آرگومان‌ها را در فرمت درست ارسال کند. برای مثال، set_article_title یک رشته ساده می‌طلبد، در حالی که insert_into_body به یک موقعیت (شروع، انتها یا مکان‌نما) نیاز دارد.
  • لایه‌بندی UI: یک لانچر شناور (آواتار + نشان BETA) در پایین سمت راست قرار دارد. هنگام باز شدن، یک داک با ارتفاع کامل (حدود ۴۰۰ پیکسل) با استایل csdk-theme-modern را نمایش می‌دهد.
  • ادغام SDK: این راهکار از CopilotProvider با مقدار maxIterations برابر با ۱۲ و هدرهای سفارشی شامل X-CSRF-Token برای حفظ امنیت جلسه استفاده می‌کند.

حل چالش‌های «حلقه عاملی»

این پروژه چندین چالش غیربدیهی در ساخت کوپایلت‌های AI را برجسته می‌کند. یکی از مسائل بحرانی، «امضای تفکر» (Thought Signature) مورد نیاز Gemini 3.x برای پیگیری ابزارها بود. چون Gemini انتظار دارد این امضاها در فراخوانی توابع برای نوبتهای بعدی وجود داشته باشند، توسعه‌دهنده مجبور شد امضاها را بر اساس ID فراخوانی ابزار در حین استریمینگ کش کرده و در درخواست بعدی دوباره متصل کند تا از خطاهای ۴۰۰ جلوگیری شود.

علاوه بر این، توسعه‌دهنده منطقی را برای جلوگیری از «حلقه‌های تکرار» (Retry Loops) پیاده کرد که در آن محدوده انتخاب‌شده پس از اولین ویرایش موفق، پاک می‌شود. این کار تضمین می‌کند AI یک تغییر واحد را مکرراً روی یک بلوک متن اعمال نکند. سایر انتخاب‌های محصولی که تجربه کاربری را بهبود بخشیدند شامل استفاده از رابط واقعی تگ‌ها برای حفظ اعتبارسنجی Forem و نمایش پیام‌های تولبار فرمتینگ را به گونه‌ای که فقط برچسب عملیات و متن نقل‌شده از انتخاب را نشان دهد، می‌باشد.

مسیرهای توسعه در آینده

نویسنده پیشنهاد می‌کند که همین معماری می‌تواند فراتر از ویرایشگر نوشته‌ها گسترش یابد. با جایگزینی article_state با اشیاء بافت متفاوت و مجموعه‌ابزارهای جدید، همین Runtime می‌تواند سطوح دیگر را تغذیه کند:

  • کوپایلت‌های آماری: با استفاده از stats_state (محدوده ۳۰ روزه، مجموع بازدیدها، پست‌های برتر و سری تاریخ/بازدید) برای توضیح اعداد عملکرد و پیشنهاد موضوعات جدید برای نوشتن. ابزارهای نمونه شامل get_stats_snapshot ، list_top_posts و open_post_analytics است. این ابزار می‌تواند پاسخ دهد چرا بازدیدها تغییر کرده‌اند یا کدام پست‌ها باید به یک سری تبدیل شوند.
  • عامل‌های لیست خواندنی‌ها: بهره‌گیری از APIهای جستجو، ذخیره و دنبال کردن برای ساخت صف‌های شخصی از پست‌های واقعی. این کار مستلزم ابزارهایی مثل search_posts ، pin_reading_item و follow_tag است تا به جای لینک‌های توهمی (Hallucinated)، URLهای واقعی پیشنهاد دهد. این عامل می‌تواند بر اساس تاریخچه کاربر، یک «لیست خواندنی آخر هفته» تولید کند.
  • دستیار تنظیمات حساب: اجازه دادن به کاربران برای به‌روزرسانی ترجیحات اعلان‌ها یا فیلدهای پروفایل. این سطح نیازمند محدودیت‌های سخت‌گیرانه‌تری است و به صورت پیش‌فرض از الگوی navigate + explain استفاده می‌کند و برای تغییرات تخریبی مانند revoke_session یا update_notification_pref نیاز به تاییدیه دارد. این ابزار می‌تواند به کاربران کمک کند نویز ایمیلی را کاهش داده یا پروفایل عمومی خود را تکمیل کنند.

قوانین گسترش سیستم

برای حفظ یکپارچگی سیستم در حین رشد، توسعه‌دهنده مجموعه‌ای از قوانین راهنما را پیشنهاد کرد:

  • دسترسی مستقیم به وضعیت: داده‌های زنده را در تابع body() نگه دارید به جای اینکه یک ابزار اجباری برای «خواندن همه» بسازید تا از هدر رفتن نوبت‌های ابزار جلوگیری شود.
  • همراستایی مجوزها: اطمینان حاصل کنید که ابزارها فقط عملیاتی را انجام دهند که کاربر در حال حاضر در رابط کاربری اجازه انجام آن‌ها را دارد.
  • ایجاز در توصیفات: توصیفات ابزارها را بسیار کوتاه (یک جمله) نگه دارید تا دقت مدل در انتخاب ابزار بهبود یابد.
  • پاکیزگی UI: دستورات داخلی ابزارها را از حباب چت قابل مشاهده توسط کاربر خارج کنید تا رابط کاربری تمیز باقی بماند.
  • امنیت در اولویت: از قرار دادن اسرار—مانند رمزهای عبور یا IDهای خام جلسه—در بافت مدل خودداری کنید. فقط از فلگ‌های ایمن مانند «2FA روشن/خاموش» استفاده کنید.

این تغییر رویکرد از «چت در کنار محصول» به «محصول قابل عملیاتی توسط AI» نشان‌دهنده حرکت به سمت هوش مصنوعی نتیجه-محور (Outcome-oriented) است. به جای ارائه پاسخ، ابزار، وظایف تکمیل‌شده را ارائه می‌دهد. این تغییر پارادایم، دقیقاً همان چیزی است که در تحلیل تغییر نقش توسعه‌دهندگان ارشد از نویسندگی کد به ارکستراسیون سیستم‌های AI مورد بحث قرار گرفته است.

اگر در حال ساخت یک رابط کاربری عاملی (Agentic Interface) هستید، فوری‌ترین درس در اینجا این است که اولویت را به یک شیء وضعیت زنده در هر درخواست بدهید، به جای اینکه تنها به AI تکیه کنید تا تاریخچه را از طریق گفتگو حفظ کند. درس بزرگتر این است که در حالی که یک پنل چت پاسخ می‌دهد، متصل کردن یک کوپایلت به وضعیت واقعی محصول و ابزارهای کنترل‌شده، نتایج (Outcomes) واقعی خلق می‌کند.

گام بعدی شما

  • اگر در حال ساخت ابزارهای AI هستید، به جای تکیه بر حافظه مدل، یک شیء وضعیت زنده (Live State Object) را در هر درخواست ارسال کنید.
  • برای کاهش خطا در انتخاب ابزار، توصیفات توابع خود را به یک جمله کوتاه محدود کنید.
  • معماری «جداسازی تصمیم از اجرا» (Decision vs Execution) را برای عملیات حساس روی مرورگر پیاده کنید.

اما تأثیر این رویکرد بر هزینه‌های استنتاج در مقیاس سازمانی متفاوت است — در تحلیل ما درباره بهینه‌سازی هزینه‌های GPU بخوانید.

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

این رویکرد با تکیه بر تخصص در طراحی رابط‌های عامل‌محور، نشان می‌دهد که ارزش واقعی AI نه در پاسخ دادن، بلکه در تکمیل وظایف (Task Completion) است. این تغییر پارادایم، استانداردهای تجربه کاربری (UX) را برای تمام ابزارهای بهره‌وری تغییر می‌دهد.

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

توسعه‌دهندگان ایرانی می‌توانند با استفاده از YourGPT SDK و مدل‌های Gemini، ابزارهای بهره‌وری مشابه را روی پلتفرم‌های متن‌باز داخلی پیاده کنند تا تجربه نویسندگی فارسی را بهینه سازند.

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

انتقال از «چت در کنار محصول» به «محصول قابل اجرا از طریق AI»، نقطه پایان عصر چت‌بات‌های دستیار و آغاز دوران عامل‌های متمرکز بر نتیجه است. نکته کلیدی این پروژه، حذف وابستگی به حافظه کوتاه‌مدت مدل و جایگزینی آن با تزریق وضعیت زنده (State Injection) در هر درخواست است که نرخ خطای عامل را به‌شدری کاهش می‌دهد.

منابع

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

گفتگو

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

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

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

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

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

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

دات‌هوش

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

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