ویرگول
ورودثبت نام
Jalal LinuX
Jalal LinuX
Jalal LinuX
Jalal LinuX
خواندن ۵ دقیقه·۳ ماه پیش

مفهوم Harness Engineering چیست؟

چرا OpenAI می‌گوید آینده مهندسی نرم‌افزار دیگر «کدنویسی» نیست؟

این مقاله، خلاصه و بازنویسی آزاد مقاله رسمی 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 Engineering یعنی چه؟

کلمه Harness در انگلیسی به معنی افسار یا وسیله‌ای برای هدایت و کنترل است.

OpenAI از این واژه برای توصیف تمام محیطی استفاده می‌کند که Agent داخل آن کار می‌کند.

خیلی‌ها فکر می‌کنند اگر بهترین مدل دنیا را داشته باشند، همه چیز حل می‌شود.

اما OpenAI می‌گوید:

مدل فقط یکی از اجزای سیستم است.

آن چیزی که کیفیت خروجی را تعیین می‌کند، محیطی است که Agent داخل آن قرار گرفته است.

این محیط شامل مواردی مثل:

  • Repository

  • Documentation

  • ابزارها

  • تست‌ها

  • CI/CD

  • قوانین معماری

  • حافظه پروژه

  • دسترسی‌ها

  • Feedback Loop

است.

به مجموع این موارد Harness گفته می‌شود. (OpenAI)


مشکل Agent نیست؛ مشکل محیط است

یکی از جالب‌ترین بخش‌های مقاله همین قسمت است.

تیم OpenAI در ابتدای پروژه تصور می‌کرد هر جا Agent اشتباه می‌کند، مشکل از خود مدل است.

اما بعد از مدتی به نتیجه متفاوتی رسیدند.

آن‌ها متوجه شدند تقریباً همیشه سؤال درست این نیست که:

«چرا Agent اشتباه کرد؟»

بلکه باید پرسید:

«ما چه چیزی را برای Agent فراهم نکرده‌ایم که باعث شده نتواند کار را درست انجام دهد؟»

این تغییر نگاه، اساس Harness Engineering است. (OpenAI)


Prompt خوب کافی نیست

یکی از برداشت‌های رایج این است که اگر Prompt خوبی بنویسیم، خروجی خوبی هم می‌گیریم.

OpenAI با این دیدگاه موافق نیست.

به گفته آن‌ها، Prompt فقط یکی از قطعات پازل است.

اگر مستندات پروژه ناقص باشد، قوانین معماری مشخص نباشد، تست وجود نداشته باشد یا Agent نداند اطلاعات را از کجا پیدا کند، حتی بهترین Prompt هم معجزه نخواهد کرد. (OpenAI)


نقش برنامه‌نویس در حال تغییر است

در گذشته بخش زیادی از زمان یک مهندس نرم‌افزار صرف این کارها می‌شد:

  • نوشتن کد

  • تست

  • رفع باگ

  • Refactor

اما OpenAI معتقد است در دنیای Agentها، نقش انسان بیشتر به این سمت می‌رود:

  • تعریف مسئله

  • شکستن مسئله به بخش‌های کوچک‌تر

  • طراحی محیط مناسب برای Agent

  • ساخت ابزارها

  • تعریف قوانین

  • ایجاد حلقه‌های بازخورد

  • بررسی نتیجه نهایی

یعنی ارزش اصلی برنامه‌نویس دیگر در سرعت تایپ کردن نیست، بلکه در طراحی سیستم است. (OpenAI)


Repository فقط برای انسان نیست

قبلاً هدف این بود که Repository برای اعضای تیم خوانا باشد.

اما OpenAI مفهوم جدیدی معرفی می‌کند:

Agent Legibility

یعنی Repository باید برای Agent هم قابل فهم باشد.

نام فایل‌ها، ساختار پوشه‌ها، مستندات، قوانین و حتی نحوه سازمان‌دهی پروژه باید طوری باشد که Agent بتواند به راحتی آن را درک کند. (OpenAI)


AGENTS.md قرار نیست همه چیز باشد

خیلی از پروژه‌ها یک فایل بزرگ به نام 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)


سرعت بالا، فلسفه Merge را هم تغییر می‌دهد

وقتی Agentها می‌توانند در مدت کوتاهی صدها Pull Request تولید کنند، روش سنتی Review دیگر جواب نمی‌دهد.

به همین دلیل OpenAI از چندین Agent برای بازبینی، تست و اصلاح Pull Requestها استفاده می‌کند تا انسان فقط روی تصمیم‌های مهم تمرکز کند. (OpenAI)


Agent-generated واقعاً یعنی چه؟

شاید تصور کنید Agent-generated فقط یعنی تولید کد.

اما تعریف OpenAI بسیار گسترده‌تر است.

از نگاه آن‌ها، یک Agent می‌تواند:

  • طراحی انجام دهد.

  • کد بنویسد.

  • تست تولید کند.

  • Pull Request بسازد.

  • کد خودش را Review کند.

  • خطاها را اصلاح کند.

  • دوباره تست بگیرد.

در این مدل، انسان بیشتر نقش هدایت‌کننده را دارد تا اجراکننده. (OpenAI)


یکی از چالش‌های آینده: Entropy

هرچه Agentها سریع‌تر کد تولید کنند، Repository هم سریع‌تر شلوغ می‌شود.

فایل‌های اضافی، کدهای بدون استفاده، مستندات قدیمی و وابستگی‌های غیرضروری به مرور زمان کیفیت پروژه را پایین می‌آورند.

OpenAI این وضعیت را Entropy می‌نامد و معتقد است همان‌طور که Garbage Collector حافظه را تمیز می‌کند، پروژه هم به فرآیندهای دائمی برای پاکسازی و نظم‌دهی نیاز دارد. (OpenAI)


جمع‌بندی

مهم‌ترین پیام این مقاله شاید این باشد که:

در آینده، مزیت رقابتی تیم‌های نرم‌افزاری داشتن قوی‌ترین مدل هوش مصنوعی نیست؛ بلکه داشتن بهترین Harness است.

هرچه محیطی که Agent داخل آن کار می‌کند شفاف‌تر، مستندتر، قانونمندتر و قابل‌اعتمادتر باشد، خروجی Agent هم بهتر خواهد بود.

به همین دلیل احتمالاً در چند سال آینده، یکی از مهم‌ترین مهارت‌های مهندسان نرم‌افزار دیگر صرفاً برنامه‌نویسی نخواهد بود؛ بلکه طراحی محیطی خواهد بود که Agentها بتوانند داخل آن با اطمینان کار کنند.


منبع اصلی

مقاله رسمی OpenAI:

Harness engineering: leveraging Codex in an agent-first world

https://openai.com/index/harness-engineering/ (OpenAI)

مهندسی نرم‌افزارopenai
۳
۰
Jalal LinuX
Jalal LinuX
شاید از این پست‌ها خوشتان بیاید