تصور کنید یک برنامهنویس با یک مدل زبانی پیشرفته برای محاسبه بودجه پروژه صحبت میکند، اما مدل در سادهترین تفریقها اشتباه میکند. این نقص بنیادی به این دلیل است که یک مغز احتمالی نمیتواند جمعهای قطعی را انجام دهد.
مدل زبانی بزرگ (LLM) — مثل کتابخانهداری که میلیاردها صفحه را خوانده و حالا با همان لحن کتابها جواب میدهد — بهجای پیروی از قوانین سخت منطقی، از توزیعهای احتمالی نمونهبرداری میکند. به همین دلیل، حتی پیشرفتهترین مدلها در محاسبات پایه شکست میخورند.
در نسخه v۰.۵.۰ (کامیت 3a74c82f)، CodeSmith مکانیزمی به نام «قابلیت متا» (Meta-Ability) را برای حل این مشکل معرفی کرد. طبق مستندات این پروژه، این رویکرد نقش مدل را از یک حلکننده مستقیم مسئله به یک سازنده ابزار تغییر میدهد. حالا عامل میتواند در لحظه اسکریپتهای خودش را بنویسد تا نتایج دقیق را تضمین کند.
همانطور که در تحلیل قبلی ما دربارهی امنیت مدلهای بازمتن اشاره کردیم، لایههای حفاظتی برای کنترل خروجیها حیاتی هستند. رویکرد CodeSmith روی لایه استدلال داخلی تمرکز دارد. این سیستم میپذیرد که مدلها در درک زبان انسان عالی هستند، اما در دستکاری نمادها و استخراجهای سخت ضعیفاند. این ضعف به معنای «احمق بودن» مدل نیست، بلکه نتیجهی ماهیت کار آن است؛ هر گام استدلال یک نمونه احتمالی است و در زنجیرههای طولانی، خطاها مانند گلوله برفی بزرگ میشوند.
تفکیک مترجم و ماشینحساب
به نقل از منابع فنی CodeSmith، شکست استدلالهای متنی به دلیل انباشت خطا در گامهای متعدد است. برای مثال در یک مسئله ریاضی پیچیده، مدل ممکن است درصدها را درست حساب کند، اما در گام نهایی، عدد را از ستون اشتباهی کم کند و به جواب غلط برسد.
در مقابل، استدلال مبتنی بر کد، دقیق و قابل تایید است. کد یا درست اجرا میشود یا خطا میدهد؛ چیزی به نام «تقریباً درست» در دنیای کد وجود ندارد. این موضوع یادآور دیدگاه استیون وولفرام، بنیانگذار Mathematica است: سامانههای محاسبات نمادین دقیق هستند اما زبان انسان را نمیفهمند. LLM در اینجا نقش مترجم را ایفا میکند تا شکاف بین زبان طبیعی و دقت ماشینحساب را پر کند.
CodeSmith این تفکیک وظایف را بهصورت سختگیرانه اجرا میکند:
LLM بهعنوان مترجم: مدل زبان کاربر را میفهمد و آن را به یک عبارت رسمی (کد) تبدیل میکند.
مفسر بهعنوان ماشینحساب: یک زیرپردازش پایتون کد را اجرا کرده و نتیجهای قطعی و دقیق تولید میکند.
پروتکل RLM
این تفکیک از طریق پرامپت سیستمی مدل زبانی بازگشتی (Recursive Language Model یا RLM) در مسیر crates/agent-runtime/src/rlm/prompt.rs اعمال میشود. RLM صرفاً پیشنهاد استفاده از کد نمیدهد، بلکه آن را به یک قرارداد فنی تبدیل میکند. این رویکرد در واقع تکامل یافتهی روشهای تعریف قوانین است که پیشتر در مقایسهی پیکربندی Markdown و کدنویسی Rust برای عاملها به آن پرداخته بودیم.
بر اساس مستندات prompt.rs:14 به مدل دستور داده شده است: «شما ریشه یک RLM هستید. ورودی در یک REPL پایتون بارگذاری شده است. شما دسترسی به بدنه خام داده ندارید و باید محاسبات را در پایتون انجام دهید.»
این یعنی مدل اجازه ندارد دادههای خام را مستقیماً ببیند و فقط از طریق دستگیرههای زمینه (Context Handle) با آنها تعامل دارد. در فایل rlm/mod.rs تأکید شده که:
- متغیرهای اصلی هرگز در پنجره متنی LLM ظاهر نمیشوند.
- مدل فقط پیامهای متادیتای کوچک (مثل طول متن یا پیشنمایش) را دریافت میکند.
- ارتباطات از طریق یک لوله stdin/stdout به زیرپردازش پایتون منتقل میشود تا از تأخیرهای HTTP جلوگیری شود.
برای جلوگیری از «حرف زدن» مدل درباره مسئله، قرارداد RLM حکم میکند که هر نوبت باید دقیقاً یک بلوک کد پایتون خروجی دهد. جملاتی مثل «من اکنون دانشآموزان را میشمارم» بهشدت ممنوع است. دستور صریح این است: «هیچ نوبتی فقط متنی نباشد؛ کدی را صادر کن که X را انجام دهد.»
مکانیزمهای کمکی RLM
برای تسهیل این فرآیند، RLM از توابع کمکی خاصی استفاده میکند:
context_meta(): متادیتای محدود درباره ورودی را برمیگرداند.peek(start, end): بخشی از ورودی را بر اساس آفست میخواند.search(pattern): جستوجوی منظم (Regex) را با سقف مشخص انجام میدهد.sub_query(prompt, slice): قضاوت معنایی را به یک LLM فرزند میسپارد.
محدودیتهای فنی و ایمنی
برای مدیریت هزینههای این فرآیند بازگشتی، CodeSmith محدودیتهای سختی را در bridge.rs اعمال کرده است:
- زمان انتظار (Timeout): هر فراخوانی فرزند حداکثر ۱۲۰ ثانیه زمان دارد.
- سقف توکن: بهطور پیشفرض حداکثر ۴,۰۹۶ توکن برای هر فراخوانی.
- محدودیت دستهای: حداکثر ۱۶ پرامپت در هر دسته RPC.
- ردیابی عمق: عمق بازگشت پایش میشود و در صورت اتمام بودجه، سیستم به حالت تکمیل استاندارد LLM برمیگردد.
از نظر امنیتی، زیرپردازش پایتون یک سندباکس کامل در سطح سیستمعامل نیست. با این حال، سیستم از «حفاظهای خروجی» استفاده میکند. برای مثال، هر خروجی که بیش از ۱,۰۰۰ کاراکتر باشد، بهجای چاپ در پنجره مدل، به یک دستگیره تبدیل میشود. این نشاندهنده استراتژی «بیاعتمادی» در CodeSmith است: مدل قدرت نوشتن کد را دارد چون تمام خروجیهایش حصارکشی شدهاند. این رویکرد برای یکپارچگی با محیطهای مختلف، شباهتهای ساختاری با پروتکل MCP در مدیریت ابزارهای سفارشی AI دارد که استانداردسازی دسترسی به ابزارها را هدف قرار داده است.
گسترش قابلیتهای متا
CodeSmith تولید کد را یک «قابلیت متا» میبیند؛ یعنی قابلیتی که میتواند قابلیتهای دیگر را خلق کند. این اجازه میدهد عامل بهجای تکیه بر ابزارهای پیشساخته، در لحظه ابزارها و محدودیتهای جدید بسازد.
این رویکرد در ۶ جهت قابل گسترش است:
۱. تفکر: جایگزینی استدلال متنی خطازده با کد اجرایی.
۲. قوانین کسبوکار: تبدیل سیاستهای مبهم به محدودیتهای اجرایی.
۳. ارائه محتوا: تولید نمودارها، اسلایدهای ارائه یا فریمهای ویدئویی.
۴. رابطهای سیستمی: اتصال APIهای ناهمگون و تطبیق با فرمتهای داده.
۵. رابطهای کاربری: ساخت فرمها و رابطهای تعاملی پویا.
۶. خود-اصلاحی: ساخت یا تعمیر عاملهای جدید در قالب کد.
موازنه عملکرد
این رویکرد قطعی، رایگان نیست. نوشتن و اجرای کد باعث افزایش شدید تأخیر (Latency) و مصرف توکن در هر نوبت میشود. برای مسائل ساده، استفاده از RLM شبیه به «استفاده از پتک برای شکستن گردو» است.
به همین دلیل، RLM بهصورت پیشفرض فعال نیست و تنها زمانی فعال میشود که مدل تشخیص دهد مسئله به آن نیاز دارد. این تغییر، فرض بنیادی طراحی عاملها را عوض میکند: راه رسیدن به قابلیت اطمینان، مدلهای بزرگتر یا پرامپتهای بهتر نیست، بلکه ایجاد یک حصار سخت است که قدرت محاسبه را از مدل میگیرد و او را مجبور میکند به ابزارهای نمادین تکیه کند. این دقیقاً همان نقطهای است که شکستهای رایج در تستهای نرمافزاری تولید شده توسط AI رخ میدهد؛ جایی که مدل بهجای تکیه بر منطق قطعی، به حدسهای احتمالی روی میآورد.
گام بعدی شما
- اگر از عاملهای هوش مصنوعی برای تحلیل داده استفاده میکنید، بررسی کنید آیا مدل شما در حال «حدس زدن» اعداد است یا از ابزارهایی مثل Python REPL استفاده میکند.
- برای کاهش نرخ توهم در محاسبات، سعی کنید در پرامپتهای خود مدل را مجبور کنید ابتدا منطق محاسباتی را به صورت کد بنویسد و سپس اجرا کند.
- مستندات RLM را برای درک نحوه تفکیک لایه استدلال از لایه اجرا مطالعه کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو