Agent harness-এর চিট শিট: উপাদান, ফাইল, সমস্যা ও চালুর চেকলিস্ট
Agent harness পাঁচটি উপাদানে গঠিত: নির্দেশনা, টুল, পরিবেশ, অবস্থা ও প্রতিক্রিয়া। ন্যূনতম ফাইল সেট: AGENTS.md ছোট রাউটার হিসেবে, যাচাই-স্ক্রিপ্ট (make check, verify.sh), অগ্রগতির ফাইল, এবং অবস্থাসহ ফিচার তালিকা; সম্পন্নতার স্ট্যাটাস দেয় স্ক্রিপ্ট, এজেন্ট নয়।
Agent harness-এর পাঁচটি উপাদান
| উপাদান | কী | উপকরণ | ভাঙনের লক্ষণ |
|---|---|---|---|
| নির্দেশনা | প্রকল্প সম্পর্কে এজেন্টের যা জানা দরকার | AGENTS.md / CLAUDE.md, skills, docs/, ADR | পরিচিত কনভেনশন লঙ্ঘন |
| টুল | এজেন্ট কী করতে পারে | shell, test, linter, browser, MCP সার্ভার | «চায়, কিন্তু পারে না» |
| পরিবেশ | এজেন্ট কোথায় কাজ করে | lock ফাইল, Docker/devcontainer, git worktree, sandbox, init.sh | প্রতিটি সেশন পরিবেশ ঠিক করে শুরু হয় |
| অবস্থা | পুনরায় চালুর পরও যা টিকে থাকে | PROGRESS.md, DECISIONS.md, feature_list.json, commit | নতুন সেশন জানে না কাজ কোথায় থামল |
| প্রতিক্রিয়া | এজেন্ট কীভাবে নিজের ভুল জানে | make check, E2E, hook, arch-check, মূল্যায়নকারী | «সম্পন্ন», কিন্তু কাজ করে না |
শূন্য থেকে গড়ার ক্রম: প্রতিক্রিয়া → নির্দেশনা → অবস্থা → পরিবেশ → টুল।
Harness-এর ফাইল
| ফাইল | কাজ | নিয়ম |
|---|---|---|
| AGENTS.md / CLAUDE.md | প্রবেশপথ: প্রকল্প কী, কীভাবে চালাতে হয়, কীভাবে যাচাই হয় | ছোট রাউটার (প্রায় ৮০ লাইন), «কখন পড়বে» শর্তসহ নথির লিংক |
| docs/*.md | বিষয়ভিত্তিক বিস্তারিত | প্রয়োজনমতো পড়া হয়, পুরোটা নয় |
| .claude/skills/*/SKILL.md | পুনরাবৃত্ত প্রক্রিয়া (deploy, review) | কাজ বর্ণনার সঙ্গে মিললে লোড হয় |
| PROGRESS.md | অবস্থা, সম্পন্ন কাজ, বাধা, পরের ধাপ | প্রতিটি সেশনের শেষে হালনাগাদ |
| DECISIONS.md | সিদ্ধান্ত, কারণ, বাতিল বিকল্প | শুধু ফল নয়, পথটিও লিখুন |
| feature_list.json | ফিচার: behavior, verification, state | ঠিক একটি ফিচার active (WIP=1) |
| scripts/verify.sh | ফিচার যাচাই ও passing-এ নেওয়া | একমাত্র যে passing ঠিক করে, SHA সহ |
| scripts/arch-check.sh | স্থাপত্যের সীমানা | কোড 1 + আউটপুটে WHY ও FIX |
| scripts/init.sh | কাজের আগে পরিবেশ যাচাই | পরিবেশ, পরিষ্কার git, সবুজ make check, সক্রিয় ফিচার |
| sprint contract | কোডের আগে প্রতি ফিচারের চুক্তি | পরিধির ভেতরে / বাইরে / খোলা প্রশ্ন |
| .claude/settings.json | Claude Code-এর অনুমতি ও hook | ঘটনায় যাচাই, এজেন্টের স্মৃতিতে নয় |
AGENTS.md-এর কাঠামো
# প্রকল্প: payment backend (FastAPI, PostgreSQL)
## চালানো
docker compose up -d && ./scripts/init.sh
## যাচাই
make check # lint, type, unit, arch-check
make e2e # end-to-end পরিস্থিতি
## Definition of Done
- make check ও make e2e — কোড 0
- scripts/verify.sh স্ক্রিপ্ট দিয়ে ফিচার passing-এ নেওয়া
- PROGRESS.md হালনাগাদ
## MUST
- database-এ কুয়েরি শুধু repository-র মাধ্যমে
- secret শুধু environment variable থেকে
## নথি
- docs/payments.md — কাজ পেমেন্ট ও refund ছুলে
- docs/migrations.md — database schema বদলালে
ফিচারের অবস্থা
| অবস্থা | অর্থ | কে বদলায় |
|---|---|---|
| pending | সারিতে আছে | পরিকল্পনাকারী |
| active | কাজ চলছে (একটিই) | এজেন্ট, শুরুতে |
| passing | যাচাই পাস | শুধু verify.sh |
| blocked | মানুষের সিদ্ধান্ত দরকার | এজেন্ট, কারণসহ |
যাচাইয়ের স্তর
| স্তর | কী | কখন |
|---|---|---|
| 1 | Lint, type | সবসময় |
| 2 | Unit ও integration test | সবসময় |
| 3 | E2E | একাধিক স্তর ছুঁলে; «সম্পন্ন» বলার আগে |
| 4 | arch-check | নতুন স্তর-অতিক্রমী আমদানি |
«সম্পন্ন» বলার অধিকার শুধু সর্বোচ্চ স্তরের পরে। সবুজ unit test মানে প্রস্তুতি নয়।
নিয়ম যান্ত্রিক করা
| স্তর | টুল | খরচ |
|---|---|---|
| Guard grep | WHY/FIX বার্তাসহ প্যাটার্ন খোঁজার স্ক্রিপ্ট | মিনিট |
| Linter নিয়ম | import-linter (Python), dependency-cruiser, eslint-plugin-boundaries (JS/TS) | এক ঘণ্টা |
| Architecture test | CI-এর test, স্তর ভাঙলে ব্যর্থ | বেশি, কিন্তু make check-এ দৃশ্যমান |
#!/usr/bin/env bash
fail=0
if grep -rn "from app.db" app/services/; then
echo "WHY: service সরাসরি database স্পর্শ করবে না"
echo "FIX: app/repositories/ থেকে repository ব্যবহার করুন"
fail=1
fi
exit $fail
সাধারণ সমস্যা ও সমাধান
| সমস্যা | উপাদান | সমাধান |
|---|---|---|
| CLAUDE.md-এর নিয়ম মানা হচ্ছে না | নির্দেশনা | ফাইল ছোট করুন, নিয়মকে যাচাই বা hook বানান |
| এজেন্ট test চালাতে পারছে না | টুল | কমান্ডটি অনুমতি দিন, image-এ dependency ইনস্টল করুন |
| প্রতিটি মেশিনে আচরণ আলাদা | পরিবেশ | lock ফাইল, Docker/devcontainer, নির্দিষ্ট runtime সংস্করণ |
| সেশনের মধ্যে বিস্মৃতি | অবস্থা | PROGRESS.md, সেশন হস্তান্তর, শুরুতে পড়া |
| তিনটি ফিচার শুরু, একটিও শেষ নয় | অবস্থা | feature_list.json-এ WIP=1 |
| «সম্পন্ন», কিন্তু কাজ করে না | প্রতিক্রিয়া | DoD, E2E, verify.sh, স্বাধীন মূল্যায়নকারী |
| Test সবুজ, ফিচার ভাঙা | প্রতিক্রিয়া | আসল database ও কনফিগারেশনসহ E2E |
| এজেন্ট খারাপ প্যাটার্ন নকল করছে | প্রতিক্রিয়া | প্রথম দিন থেকে arch-check |
| এজেন্ট কী করেছে বোঝা যাচ্ছে না | অবস্থা | ছোট commit, PROGRESS.md-এ প্রতিবেদন, DECISIONS.md |
| এজেন্ট রাতারাতি পরিবেশ ভেঙেছে | পরিবেশ | Sandbox, git worktree, চেকপয়েন্ট, init.sh দিয়ে rollback |
| একই রিভিউ-মন্তব্য দুইবার | সামগ্রিক harness | make check-এ যাচাই বানান, নির্দেশনা থেকে লেখা সরান |
দীর্ঘ কাজের ভূমিকা
| ভূমিকা | করে | করে না |
|---|---|---|
| পরিকল্পনাকারী | গ্রহণযোগ্যতার মানদণ্ডসহ ফিচার | কোড লেখে না |
| জেনারেটর | একটি ফিচার বাস্তবায়ন, test চালায় | সম্পন্ন কি না ঠিক করে না |
| মূল্যায়নকারী | রুব্রিক ধরে রায়, ফাইল/লাইন/লগের উল্লেখসহ | জেনারেটরের যুক্তি দেখে না |
| Merge | review == pass হলে commit | এটি কোড, এজেন্ট নয় |
স্বয়ংক্রিয় কাজের বাজেট
- লক্ষ্য — এক বাক্য (যেমন সব ফিচার passing-এ নেওয়া)।
- WIP=1, প্রতি ফিচারে সময় ও চেষ্টার সীমা।
- মেট্রিক একমুখী বাড়ে; রিগ্রেশন মানে তৎক্ষণাৎ rollback।
- Migration, অবকাঠামো, টাকা — মানুষের কাছে এসকেলেশন।
- কয়েকবার review ব্যর্থ হলে ফিচার পরিষ্কার প্রসঙ্গে শুরু।
এজেন্ট চালুর চেকলিস্ট
- AGENTS.md আছে: stack, চালানোর উপায়, যাচাই-কমান্ড, DoD।
- পরিষ্কার ক্লোনে make check পাস করে।
- পরিবেশ পুনরুৎপাদনযোগ্য: lock ফাইল, Docker বা devcontainer।
- দরকারি কমান্ড এজেন্টের কাছে আছে; বিপজ্জনকগুলো নিষিদ্ধ বা sandbox-এ।
- মূল স্কেনারিওর জন্য অন্তত একটি E2E আছে।
- PROGRESS.md আছে এবং সেশনের শুরুতে পড়ার নিয়ম।
- ফিচার তালিকায় অবস্থাসহ, একটিমাত্র সক্রিয়।
- Passing স্ট্যাটাস দেয় স্ক্রিপ্ট।
- যাচাই-বার্তায় WHY ও FIX আছে।
- কাজটি গ্রহণযোগ্যতার মানদণ্ড ও পরিধির সীমাসহ লেখা।
- কোন বিষয়ে মানুষের সিদ্ধান্ত লাগবে তা ঠিক করা।
- পরিবর্তনের আগে verification gap মাপা, তুলনার জন্য।
Harness-এর মেট্রিক
| মেট্রিক | কীভাবে হিসাব |
|---|---|
| Verification gap | ১০টি কাজে «সম্পন্ন» কিন্তু যাচাই-নিশ্চিত নয় এমনের অনুপাত |
| MTTR | ভাঙন থেকে কাজের অবস্থায় ফেরা পর্যন্ত সময় |
| Cold start | নতুন সেশন «আমরা কোথায়, পরে কী» প্রশ্নের আন্দাজ ছাড়া উত্তর দিতে পারে কি না |
| Ablation | স্থির কাজের সেটে একটি উপাদান বন্ধ করলে মানের পতন |
সারসংক্ষেপ
Harness একটি চক্র, একটি ফাইল নয়: নির্দেশনা, টুল, পরিবেশ, অবস্থা ও প্রতিক্রিয়া। যাচাই দিয়ে শুরু করুন, AGENTS.md ছোট রাখুন, সম্পন্নতার স্ট্যাটাস স্ক্রিপ্টকে দিন, এবং harness নিয়মিত পর্যালোচনা করুন। এই সবকিছু কোর্সের একটি প্রকল্পে একটি পূর্ণ সমন্বয়ে আসে।
সাধারণ প্রশ্ন
AGENTS.md আর CLAUDE.md-এর পার্থক্য কী?
উদ্দেশ্যে একই: এজেন্টের নির্দেশনার ফাইল। CLAUDE.md-কে Claude Code পড়ে, AGENTS.md একাধিক এজেন্টের সাধারণ ফরম্যাট; CLAUDE.md-এ শুধু AGENTS.md-এর উল্লেখ করা যায়।
AGENTS.md-এ কত লাইন থাকা উচিত?
কঠোর সীমা নেই, তবে প্রবেশ-ফাইল ছোট রাখা ভালো — প্রায় একশো লাইন, সূচির মতো। বিস্তারিত আলাদা নথিতে যায়।
ছোট প্রকল্পে feature_list.json কি লাগে?
একবারের ছোট পরিবর্তনে লাগে না। এজেন্ট একাধিক ফিচার পরপর বা একাধিক সেশনে কাজ করলে এর মূল্য হয়।
এজেন্টের যেসব গোপন তথ্য দরকার, সেগুলো কোথায় রাখব?
Environment variable বা secret manager-এ, নির্দেশনার ফাইল বা কোডে নয়। এজেন্টকে পরিবেশে প্রবেশাধিকার দিন, লেখায় থাকা মানে নয়।
“Harness Engineering: инженерия надёжности AI-агентов” কোর্সে বিষয়টি অনুশীলনসহ বিস্তারিত শেখানো হয়েছে।
- Из чего состоит harness AI-агента: инструкции, инструменты, среда, состояние, обратная связь
- Харнес AI-агента с нуля: AGENTS.md, feature_list.json, verify.sh и автономный цикл