حلقههایی که خودشون کد مینویسن
خلاصهٔ کاملتر
نویسنده (آرمین روناکر) تعریف میکنه که این روزها بیشتر و بیشتر آدما دارن روی ایجنتهای کدنویسی یه چیزی میسازن که با «فقط استفاده از ایجنت» فرق داره. الگوش همهجا یکیه: کار میفته تو یه صف، یه ماشین برش میداره، تلاش میکنه، وایمیسته، و بعد یه harness تصمیم میگیره که آیا واقعاً کار تموم شده یا نه. اگه نه، همون سشن رو ادامه میده، پیام جدید تزریق میکنه، یا کارو به یه ماشین دیگه میسپره. اینجوری کار حتی بعد از این که مدل خودش میگه «تموم شد» زنده میمونه.
اون فرق میذاره بین دو تا حلقه: حلقهٔ ایجنت که همون داخل ایجنت اجرا میشه (ابزار صدا میزنه، فایل میخونه، تست اجرا میکنه) و ما مدتهاست باهاش آشناییم؛ و حلقهٔ harness که بیرون از حلقهٔ ایجنته و تصمیم میگیره کِی کل کار تموم شده. به گفتهٔ نویسنده این حلقهٔ بیرونی داره تو مهندسی روزمره پررنگتر میشه.
نویسنده اعتراف میکنه که برای کدی که واقعاً براش مهمه، این روش هنوز جواب نداده. میگه مدلهای امروزی کدی تولید میکنن که زیادی دفاعیه، زیادی پیچیدهست و به جای این که حالت بد رو غیرممکن کنه، براش fallback اضافه میکنه. وقتی این رفتارو بذاری پشت حلقه، تشدید میشه: هر تکرار یه دفاع کوچیک اضافه میکنه و سیستم کمکم نافهمیدنیتر میشه در حالی که ظاهراً مقاومتر به نظر میرسه.
اما نویسنده میگه انصاف نیست بگیم این الگو کار نمیکنه، چون تو بعضی حوزهها فوقالعاده جواب میده. پورت کردن کد یکیشونه؛ به پورت شدن Bun از Zig به Rust و تجربهٔ خودش تو پورت MiniJinja به Go اشاره میکنه. کاوشهای عملکردی (performance)، اسکن امنیتی و پژوهش هم همینطور. وجه مشترکشون اینه که یا کد تازه نمیسازن و کد موجود رو تبدیل میکنن، یا خروجیشون عمر طولانی نداره.
استعارهای که نویسنده دوست داره اینه: داریم از «نرمافزار بهعنوان ماشین قطعی» به «نرمافزار بهعنوان یه موجود زنده» میریم. اون تو محیطی مهندس شده که تشویقت میکرد ماشین رو بفهمی و همیشه یه لایه بود که بتونی وا کنی و عمیقتر بشی. حالا با LLMها هم کدو مینویسیم هم تشخیص و درمان مشکلاتو میسپریم به ماشین؛ یعنی سیستمو نگه میداریم و پایدارش میکنیم ولی لزوماً نمیفهمیمش.
نکتهٔ ناراحتکننده به گفتهٔ نویسنده اینه که نمیشه کامل ازش بیرون زد. امنیت واضحترین مثاله: حتی اگه تو از حلقه استفاده نکنی، بقیه از حلقه علیه نرمافزار تو استفاده میکنن. به پست دنیل استنبرگ دربارهٔ curl اشاره میکنه که نگهدارندهها زیر بار گزارشهایی که بیشترشون تولید هوش مصنوعیه له شدن. اگه مهاجمها حلقه بزنن، مدافعها هم مجبور میشن حلقه بزنن تا عقب نمونن.
ترسناکترین بخش برای نویسنده وابستگی جدید به این ماشینهاست؛ نه فقط وابستگی به پول، بلکه وابستگی شناختی. اگه کدی با حلقه ساخته، بازبینی و وصله بشه، چی میشه وقتی دیگه به همون کلاس از سیستمها دسترسی نداشته باشی؟ نتیجهگیریش اینه که رفتن به این آینده حتمیه، پس سؤال اصلی اینه که چطور تو دنیای حلقهها قضاوت انسانی و اصول مهندسی خوب رو از دست ندیم.
نکات کلیدی:
- حلقهٔ harness یعنی یه لایهٔ بیرون از ایجنت که تصمیم میگیره کار کِی تموم شده، نه خود مدل
- برای کارهای مکانیکی مثل پورت کد، بنچمارک و اسکن امنیتی خیلی خوب جواب میده
- برای کد ماندگاری که باید بفهمی و نگه داری، هنوز کد بیشازحد دفاعی و پیچیده میسازه
- نگرانی اصلی: وابستگی شناختی به ماشینها و از دست دادن توان فهم کد بدون کمک اونها
- نویسنده میگه این آینده حتمیه، ولی باید نظارت انسانی و اصول مهندسی رو حفظ کنیم




