اگر برای عاملهای هوش مصنوعی ابزار خط فرمان (CLI) میسازید، بزرگترین دشمن شما قدرت استدلال مدل نیست، بلکه «نقطه کوری» است که گزارشهای متنیِ انسانمحور ایجاد میکنند. ax-go، بسته جدیدی از زبان Go که در ۲۰ ژوئن ۲۰۲۶ منتشر شد، مجموعهای از کنوانسیونهای استاندارد را ارائه میدهد تا اطمینان حاصل شود عاملها در زمان وقوع خطا، دقیقاً همان دادههایی را میبینند که یک توسعهدهنده میبیند.
بیشتر برنامهنویسان ابزارهای CLI را برای چشم انسان طراحی میکنند و از جداول زیبا و گزارشهای پراکنده استفاده میکنند. در حالی که یک انسان میتواند ارتباط بین کرش (crash) فرانتاند و خطای یک پلاگین بکاند را حدس بزند، عاملی مثل Claude به محض اینکه درخواست از مرز gRPC عبور میکند، با دیواری از ابهام روبهرو میشود. طبق گزارش dev.to، این شکاف باعث میشود شکار باگ از یک جستوجوی ساده به یک بازی حدسزدنی تبدیل شود.
زمینه شکلگیری «نقطه کور»
نیاز به این بسته از شکستهای مکرر در سیستمهای توزیعشده نشئت گرفت. در شرکت RightScale، توسعهدهندگان مجبور بودند گزارشهای هر سرویسی را که یک درخواست از آن عبور میکرد — از ورودی تا API ابری — بهصورت دستی ردیابی کنند تا علت خطا را بیابند. این وضعیت دشوار منجر به رویهٔ ارسال یک شناسه ردیابی (Trace ID) از فرانتاند تا فراخوان ابری و بازگشت آن شد تا بتوان مسیر درخواست را بازسازی کرد.
این مشکل دقیقاً در توسعه finfocus (یک ابزار CLI برای مدیریت هزینههای FinOps که از طریق پلاگینهای gRPC با ارائهدهندگان ابری ارتباط برقرار میکند) نیز تکرار شد. با وجود اینکه هر دو بخش (CLI و پلاگین) از zerolog برای ثبت گزارش استفاده میکردند، اما این گزارشها به هم متصل نبودند. یک عامل (Agent) — مانند دستیاری هوشمند که ابزارها را برای انجام تکالیف اجرا میکند — هنگام جستوجو در گزارشها به مرز gRPC میرسید و هیچ دادهای در طرف مقابل نمییافت؛ موضوعی که باعث میشد عیبیابی شبیه به یک جلسه «احضار روح» (séance) شود. این چالشها مستقیماً با مشکلاتی مرتبط هستند که در بررسی مکانیسمهای ردیابی خطاهای خاموش در عاملها به آنها پرداخته شده است، جایی که فقدان دادههای ساختاریافته منجر به شکست در تشخیص خطا توسط مدل میشود.
طراحی برای «خواننده دوم»
مانع دیگر، رابطهای کاربری متنی (TUI) بودند. جداول زیبایی که برای انسانها ساخته شدهاند، اغلب توسط عاملها اشتباه خوانده میشوند چون مدلها در تحلیل چیدمانهای بصری و پارس کردن ساختارهای گرافیکی متنی مشکل دارند. برای حل این موضوع، توسعهدهندگان شروع به افزودن پرچم --json به هر دستوری کردند که جدولی را رندر میکند. این کار تضمین میکند که از یک منبع واحد، دو نوع خروجی تولید شود: یک نسخه زیبا برای انسان و یک نسخه ساختاریافته برای عاملها. این رویکرد مانع از ایجاد هرگونه اختلافنظر یا خطا در مورد مجموعهای محاسباتی (computed totals) میشود.
پس از پیادهسازی همین الگوها — یعنی جداسازی جریانها، انتشار ردیابی و ایجاد همزاد JSON — در پروژه سوم یعنی gh-aw-fleet، نیاز به یک کتابخانه استاندارد و مرجع (canonized library) کاملاً احساس شد. ax-go که در گیتهاب (github.com/rshade/ax-go) در دسترس است، تمام این درسها را در قالب یک بسته واحد کدگذاری کرده است.
جزئیات تجربه عاملمحور
برای رفع این چالشها، ax-go مجموعهای از قوانین دقیق «تجربه عاملمحور» (Agentic Experience) را اجرا میکند:
- جداسازی جریانها (Stream Separation): خروجی استاندارد (stdout) منحصراً برای دادههای نهایی JSON رزرو شده است. تمام گزارشها (logs)، بهروزرسانیهای پیشرفت و پاکتهای خطا (error envelopes) به stderr هدایت میشوند. به این ترتیب عامل میتواند stdout را به یک پارسر متصل کند در حالی که انسان گزارشها را میخواند.
- انتشار ردیابی (Trace Propagation): این ابزار از W3C Trace Context از طریق OpenTelemetry استفاده میکند تا تضمین شود یک Trace ID واحد در
context.Contextاز CLI، از طریق پلاگینهای gRPC و تا بازگشت آنها جابهجا شود. - همزاد JSON (The JSON Twin): هر جدول خوانا برای انسان، یک پرچم
--jsonهمراه دارد که دقیقاً همان دادههای محاسباتی را در قالبی ماشینخوان ارائه میدهد. - خروجی قطعی (Deterministic Output): دو اجرای متوالی با ورودی یکسان، خروجیهای بایتی کاملاً مشابه تولید میکنند. این ویژگی به عاملها اجازه میدهد با diff کردن خروجیها، هرگونه تغییر یا انحراف (drift) را شناسایی کنند.
- ایمنی عامل (Agent Safety): این بسته شامل پرچمهای خودکار
--idempotency-keyبرای جلوگیری از تکرار عملیات در هنگام تلاشهای مجدد (retries)، یک حالت--dry-runجهانی و کدهای خروج قطعی در قالب یک پاکت خطای ساختاریافته است.
علاوه بر ارتباطات، این ابزار یک دستور ویژه به نام __schema معرفی کرده است. این دستور به عامل اجازه میدهد تا دستورات، پرچمها و انواع دادههای خودِ ابزار را بهصورت JSON استعلام کند. این یک مکانیسم مبنیسازی (Grounding) است که مانع از حدس زدن پارامترها توسط مدل میشود و به آن اجازه میدهد محدودیتهای ابزار را دقیقاً بشناسد. همچنین یک آداپتور پروتکل زمینهٔ مدل (MCP) برای اتصال ابزارهای Go به اکوسیستمهای عاملمحور تعبیه شده است.
نسخه v0.1.0 این قراردادهای خروجی را با استفاده از تستهای طلایی (Golden Tests) تثبیت کرده است تا اطمینان حاصل شود که وابستگی یک مدل به یک شکل خاص از JSON در هنگام بهروزرسانی ابزار، باعث شکست سیستم نشود. توسعهدهنده این دیدگاهها را بر اساس شکستهای واقعی در پروژههای finfocus و gh-aw-fleet بنا کرده است.
برای توسعهدهندگان، این موضوع تمرکز را از «مهندسی پرامپت» به «مهندسی رابط» (Interface Engineering) تغییر میدهد. با treating کردن عامل AI به عنوان یک کاربر درجهیک با نیازهای دادهای خاص، نرخ توهم (Hallucination) مرتبط با پارس کردن متون بدون ساختار کاهش مییابد.
این رویکرد نشان میدهد که «تجربه عاملمحور» (AX) در آینده به یک رشته استاندارد در معماری نرمافزار تبدیل خواهد شد، درست همانطور که تجربه کاربری (UX) استانداردهای فرانتاند مدرن را تعریف کرد.




گفتگو