این مقاله، خلاصه و بازنویسی آزاد مقاله رسمی OpenAI با عنوان "Harness engineering: leveraging Codex in an agent-first world" است. اگر به موضوع علاقهمند شدید، حتماً نسخه اصلی را نیز مطالعه کنید.

اگر تا امروز فکر میکردید مهمترین مهارت برنامهنویسها در آینده Prompt Engineering است، احتمالاً وقت آن رسیده که این دیدگاه را تغییر دهید.
OpenAI در مقالهای با عنوان Harness Engineering از مفهومی صحبت میکند که به نظر میرسد قرار است یکی از مهمترین مهارتهای مهندسی نرمافزار در عصر Agentها باشد.
جالبتر اینکه این مقاله فقط یک ایده تئوری نیست.
تیم OpenAI طی حدود پنج ماه یک محصول واقعی ساخت؛ محصولی که:
نزدیک به یک میلیون خط کد داشت.
بیش از ۱۵۰۰ Pull Request روی آن ثبت شد.
کاربران واقعی از آن استفاده میکردند.
اما حتی یک خط از کدهای پروژه را انسانها مستقیماً ننوشته بودند.
تمام کدها توسط Codex تولید شده بود و انسانها فقط مسیر را مشخص میکردند. (OpenAI)
OpenAI یک جمله ساده اما عمیق دارد:
Humans steer. Agents execute.
یعنی:
انسان مسیر را مشخص میکند؛ Agent اجرا میکند.
به نظر ساده میآید، اما در عمل یعنی نقش برنامهنویس در حال تغییر است.
کلمه Harness در انگلیسی به معنی افسار یا وسیلهای برای هدایت و کنترل است.
OpenAI از این واژه برای توصیف تمام محیطی استفاده میکند که Agent داخل آن کار میکند.
خیلیها فکر میکنند اگر بهترین مدل دنیا را داشته باشند، همه چیز حل میشود.
اما OpenAI میگوید:
مدل فقط یکی از اجزای سیستم است.
آن چیزی که کیفیت خروجی را تعیین میکند، محیطی است که Agent داخل آن قرار گرفته است.
این محیط شامل مواردی مثل:
Repository
Documentation
ابزارها
تستها
CI/CD
قوانین معماری
حافظه پروژه
دسترسیها
Feedback Loop
است.
به مجموع این موارد Harness گفته میشود. (OpenAI)
یکی از جالبترین بخشهای مقاله همین قسمت است.
تیم OpenAI در ابتدای پروژه تصور میکرد هر جا Agent اشتباه میکند، مشکل از خود مدل است.
اما بعد از مدتی به نتیجه متفاوتی رسیدند.
آنها متوجه شدند تقریباً همیشه سؤال درست این نیست که:
«چرا Agent اشتباه کرد؟»
بلکه باید پرسید:
«ما چه چیزی را برای Agent فراهم نکردهایم که باعث شده نتواند کار را درست انجام دهد؟»
این تغییر نگاه، اساس Harness Engineering است. (OpenAI)
یکی از برداشتهای رایج این است که اگر Prompt خوبی بنویسیم، خروجی خوبی هم میگیریم.
OpenAI با این دیدگاه موافق نیست.
به گفته آنها، Prompt فقط یکی از قطعات پازل است.
اگر مستندات پروژه ناقص باشد، قوانین معماری مشخص نباشد، تست وجود نداشته باشد یا Agent نداند اطلاعات را از کجا پیدا کند، حتی بهترین Prompt هم معجزه نخواهد کرد. (OpenAI)
در گذشته بخش زیادی از زمان یک مهندس نرمافزار صرف این کارها میشد:
نوشتن کد
تست
رفع باگ
Refactor
اما OpenAI معتقد است در دنیای Agentها، نقش انسان بیشتر به این سمت میرود:
تعریف مسئله
شکستن مسئله به بخشهای کوچکتر
طراحی محیط مناسب برای Agent
ساخت ابزارها
تعریف قوانین
ایجاد حلقههای بازخورد
بررسی نتیجه نهایی
یعنی ارزش اصلی برنامهنویس دیگر در سرعت تایپ کردن نیست، بلکه در طراحی سیستم است. (OpenAI)
قبلاً هدف این بود که Repository برای اعضای تیم خوانا باشد.
اما OpenAI مفهوم جدیدی معرفی میکند:
Agent Legibility
یعنی Repository باید برای Agent هم قابل فهم باشد.
نام فایلها، ساختار پوشهها، مستندات، قوانین و حتی نحوه سازماندهی پروژه باید طوری باشد که Agent بتواند به راحتی آن را درک کند. (OpenAI)
خیلی از پروژهها یک فایل بزرگ به نام AGENTS.md میسازند و تمام اطلاعات پروژه را داخل آن میریزند.
OpenAI این روش را توصیه نمیکند.
به جای آن، پیشنهاد میکند AGENTS.md فقط نقش یک فهرست راهنما را داشته باشد.
یعنی به Agent بگوید:
معماری را از کجا بخواند.
قوانین کدنویسی کجاست.
مستندات API در چه مسیری قرار دارند.
تصمیمات معماری در کدام پوشه ثبت شدهاند.
در واقع دانش اصلی پروژه باید داخل Repository زندگی کند، نه داخل یک فایل چند هزار خطی. (OpenAI)
یکی از جذابترین ایدههای مقاله این است که Documentation هم باید بخشی از فرآیند کیفیت باشد.
اگر:
لینکها خراب باشند،
مستندات قدیمی شده باشند،
ساختار اشتباه باشد،
باید CI آن را تشخیص دهد.
حتی OpenAI از Agentهایی استفاده میکند که فقط وظیفهشان بررسی و اصلاح مستندات است. (OpenAI)
اگر به Agent بگویید:
«لطفاً Clean Architecture را رعایت کن.»
احتمالاً کافی نیست.
OpenAI پیشنهاد میکند قوانین معماری تا جای ممکن قابل اجرا باشند.
مثلاً با:
Linter
Static Analysis
Ruleهای CI
تستهای خودکار
به جای اینکه فقط به Agent اعتماد کنید، سیستم خودش جلوی خطا را بگیرد. (OpenAI)
وقتی Agentها میتوانند در مدت کوتاهی صدها Pull Request تولید کنند، روش سنتی Review دیگر جواب نمیدهد.
به همین دلیل OpenAI از چندین Agent برای بازبینی، تست و اصلاح Pull Requestها استفاده میکند تا انسان فقط روی تصمیمهای مهم تمرکز کند. (OpenAI)
شاید تصور کنید Agent-generated فقط یعنی تولید کد.
اما تعریف OpenAI بسیار گستردهتر است.
از نگاه آنها، یک Agent میتواند:
طراحی انجام دهد.
کد بنویسد.
تست تولید کند.
Pull Request بسازد.
کد خودش را Review کند.
خطاها را اصلاح کند.
دوباره تست بگیرد.
در این مدل، انسان بیشتر نقش هدایتکننده را دارد تا اجراکننده. (OpenAI)
هرچه Agentها سریعتر کد تولید کنند، Repository هم سریعتر شلوغ میشود.
فایلهای اضافی، کدهای بدون استفاده، مستندات قدیمی و وابستگیهای غیرضروری به مرور زمان کیفیت پروژه را پایین میآورند.
OpenAI این وضعیت را Entropy مینامد و معتقد است همانطور که Garbage Collector حافظه را تمیز میکند، پروژه هم به فرآیندهای دائمی برای پاکسازی و نظمدهی نیاز دارد. (OpenAI)
مهمترین پیام این مقاله شاید این باشد که:
در آینده، مزیت رقابتی تیمهای نرمافزاری داشتن قویترین مدل هوش مصنوعی نیست؛ بلکه داشتن بهترین Harness است.
هرچه محیطی که Agent داخل آن کار میکند شفافتر، مستندتر، قانونمندتر و قابلاعتمادتر باشد، خروجی Agent هم بهتر خواهد بود.
به همین دلیل احتمالاً در چند سال آینده، یکی از مهمترین مهارتهای مهندسان نرمافزار دیگر صرفاً برنامهنویسی نخواهد بود؛ بلکه طراحی محیطی خواهد بود که Agentها بتوانند داخل آن با اطمینان کار کنند.
مقاله رسمی OpenAI:
Harness engineering: leveraging Codex in an agent-first world