Phase 14: Agent Engineering

सत्यापन द्वार

एजेंट को अपने स्वयं के काम को पूरा होने के रूप में चिह्नित नहीं करना पड़ता है। एक सत्यापन गेट दायरा अनुबंध, प्रतिक्रिया लॉग, नियम रिपोर्ट और अंतर को पढ़ता है, और एक ही प्रश्न का उत्तर देता हैः क्या यह कार्य वास्तव में पूरा हो गया है? यदि गेट कहता है कि नहीं, तो कार्य पूरा नहीं हुआ है, चाहे चैट क्या कहती है।

Type: Build

Languages: Python (stdlib)

Prerequisites: Phase 14 · 33 (Rules), Phase 14 · 36 (Scope), Phase 14 · 37 (Feedback)

Time: ~55 minutes

सीखने के लक्ष्य

  • कार्यक्षेत्र कलाकृतियों पर एक निर्धारक फ़ंक्शन के रूप में सत्यापन गेट को परिभाषित करें।
  • नियम रिपोर्ट, दायरा रिपोर्ट, प्रतिक्रिया रिकॉर्ड और अंतर को एक एकल निर्णय में जोड़ें।
  • एक verification_report.jsonसमीक्षा एजेंट और सूचनाकार दोनों पढ़ सकते हैं।
  • बिना अपवाद के किसी भी ब्लॉक-सख्तता विफलता पर कार्य को आगे बढ़ाने से इनकार करें।

समस्या

एजेंट सफलता को बहुत आसानी से घोषित करते हैं। तीन असफलता रूपों का वर्चस्व हैः

  • "अच्छी लगती है". मॉडल ने अपना अंतर पढ़ा और तय किया कि यह सही है।
  • "परीक्षण पास हो गया". उन्होंने आत्मविश्वास के साथ कहा. परीक्षण के वास्तव में चल रहे कोई रिकॉर्ड नहीं है.
  • "स्वीकार की गई।" स्वीकृति मानदंडों को "कुछ भी किया गया जैसा दिखता है" के लिए काफी ढीला व्याख्या की गई।

वर्कबेंच फिक्स एक एकल सत्यापन गेट है जो एजेंट द्वारा पहले से ही निर्मित कलाकृतियों को पढ़ता है और कॉल करता है। गेट निर्धारक है। गेट संस्करण नियंत्रण में है। गेट को आईसी में वायर्ड किया गया है। एजेंट इसे रिश्वत नहीं दे सकता है।

अवधारणा

flowchart TD
  Diff[Diff] --> Gate[verify_agent.py]
  Scope[scope_report.json] --> Gate
  Rules[rule_report.json] --> Gate
  Feedback[feedback_record.jsonl] --> Gate
  Gate --> Verdict[verification_report.json]
  Verdict --> Pass{passed?}
  Pass -- yes --> Review[Reviewer Agent]
  Pass -- no --> Refuse[refuse done + surface to human]

गेट क्या जांचता है

CheckSource artifactSeverity
All acceptance commands ranfeedback_record.jsonlblock
All acceptance commands exited zerofeedback_record.jsonlblock
Scope check has no forbidden writesscope_report.jsonblock
Scope check has no off-scope writesscope_report.jsonblock or warn
All block-severity rules passrule_report.jsonblock
No null exit codes in feedbackfeedback_record.jsonlblock
Touched files match scope.allowed_filesbothwarn

ए warnनिष्कर्ष निर्णय को नोट करता है; एक blockखोज रोकता है passed: true. .

निर्धारक, न कि संभावनावादी

गेट को हर बार एक ही आर्टिफैक्ट सेट के लिए एक ही फैसला देना चाहिए। कोई एलएलएम न्यायाधीश नहीं। एलएलएम न्यायाधीश समीक्षाकर्ता पक्ष (चरण 14 · 39) में शामिल हैं जहां लक्ष्य गुणवत्तापूर्ण मूल्यांकन है, स्थिति नहीं।

एक रिपोर्ट, एक पथ

गेट एक उत्सर्जन करता है verification_report.jsonप्रति कार्य समापन, के तहत लिखा गया outputs/verification/<task_id>.jsonकई द्वारों के साथ अलग-अलग मार्ग सत्य के स्रोत के लिए फोर्क।

बिना अपवाद के मना कर देना

ब्लॉक-गंभीरता के निष्कर्षों को एजेंट द्वारा अमान्य नहीं किया जा सकता है।override_reasonऔर एक overridden_byउपयोगकर्ता आईडी. ओवरराइड एक हस्ताक्षरित परिवर्तन है, एजेंट के निर्णय नहीं है.

इसे बनाओ

code/main.pyकार्य करता हैः

  • प्रत्येक इनपुट कलाकृतियों के लिए एक लोडर, सभी स्थानीय रूप से स्टब किया गया है ताकि पाठ आत्म-निहित हो।
  • ए verify(task_id, artifacts) -> VerdictReportशुद्ध कार्य।
  • एक प्रिंटर जो प्रति चेक परिणाम और अंतिम पास/फेल दिखाता है।
  • तीन कार्य परिदृश्यों के साथ एक डेमोः साफ पास, दायरा क्रिक, अनुपलब्ध स्वीकृति।

इसे चलाओः

python3 code/main.py

आउटपुटः तीन फैसले की रिपोर्टें, प्रत्येक स्क्रिप्ट के बगल में सहेजी गई।

जंगली में उत्पादन के पैटर्न

चार पैटर्न "एक और लंड काम" से "निर्णायक किनारे" तक द्वार को ऊपर उठाते हैं।

Defense-in-depth, not single gate.प्री-कमिट हुक → आईसी स्टेटस चेक → प्री-टूल ऑथ्ज़ हुक → प्री-मेर्ज गेट। प्रत्येक परत निर्धारक है इसलिए एक परत में विफलता अगले द्वारा पकड़ी जाती है। माइक्रोसर्विसेज.आईओ की मार्च 2026 प्लेबुक स्पष्ट हैः प्री-कमिट हुक को पार नहीं किया जा सकता है क्योंकि, मॉडल-साइड कौशल के विपरीत, यह निर्देशों के बाद एजेंट पर निर्भर नहीं करता है। सत्यापन गेट आईसी / प्री-मेर्ज परत पर बैठता है।

Defense by deterministic check, model-judge only for nuance.मानव विज्ञान के 2026 हाइब्रिड मानक जोड़ेः सत्यापित पुरस्कार (इकाई परीक्षण, स्कीम जांच, निकास कोड) जवाब "क्या कोड समस्या को हल करता है?" एलएलएम rubrics जवाब "क्या कोड पठनीय, सुरक्षित, शैली पर है?" गेट पहले वर्ग चलाता है; समीक्षक (चरण 14 · 39) दूसरा चलाता है। उन्हें मिलाकर संकेत को ढह जाता है।

Signed override log, not Slack threads.प्रत्येक ओवरराइड एक पंक्ति में उत्सर्जित करता है outputs/verification/overrides.jsonlके साथः समय टिकट, कोड खोज, कारण, हस्ताक्षर उपयोगकर्ता, वर्तमान HEAD प्रतिबद्धता। रनटाइम किसी भी ओवरराइड से इनकार करता है जिसमें हस्ताक्षर की कमी है; ऑडिट ट्रैक गिट-ट्रैक है। यह ओवरराइड नीति और ओवरराइड थिएटर के बीच की रेखा है।

Coverage floor as a first-class check.ए coverage_report.jsonएक coverage_floor(डिफ़ॉल्ट 80%) जांच। यदि मापा गया कवरेज तल से नीचे या पिछले विलय की तल से नीचे 1 प्रतिशत से अधिक गिर जाता है तो गेट विफल हो जाता है। इस जांच के बिना, एजेंट चुपचाप विफल परीक्षणों को हटा देते हैं और सत्यापन रिपोर्ट हरे रंग में रहती हैं।

--strict mode promotes warns to blocks.रिहाई शाखाओं, जहाज-ब্লকिंग पीआर, या घटना के बाद का triage के लिए, --strictहर चेतावनी एक कठिन विफलता बनाता है। ध्वज शाखा द्वारा ऑप्ट-इन है; वैश्विक डिफ़ॉल्ट नहीं है, क्योंकि सख्त-सब कुछ दिन-प्रतिदिन प्रवाह को जंग देता है।

इसका प्रयोग करें

उत्पादन के पैटर्नः

  • CI step.ए verify_agentनौकरी एजेंट के अंतिम कलाकृतियों के खिलाफ गेट चलाता है. विलय संरक्षण बिना इनकार करता हैpassed: true. .
  • Pre-handoff hook.एजेंट रनटाइम गेट को कॉल करता है, इससे पहले कि वह प्रमोशन डॉक उत्पन्न करता है. कोई हरी सजा नहीं, कोई प्रमोशन नहीं।
  • Manual triage.ऑपरेटर रिपोर्ट को तब पढ़ते हैं जब एक एजेंट सफलता का दावा करता है और एक इंसान को इसका संदेह होता है।

गेट कार्य डेस्क प्रवाह में निर्णायक किनारा है. अन्य सभी सतहें इसके ऊपर हैं।

इसे भेजें

outputs/skill-verification-gate.mdएक विशिष्ट परियोजना में गेट को तारों से जोड़ता हैः कौन से स्वीकृति कमांड इसे खिलाते हैं, कौन से नियम ब्लॉक-गंभीरता हैं, कौन से ऑफ-स्कोप लिखते हैं, कैसे ओवरराइड ऑडिट लॉग संग्रहीत किया जाता है।

व्यायाम

  1. एक जोड़ें coverage_floorजांचः परीक्षण कमांड को कम से कम 80% के साथ एक कवरेज रिपोर्ट तैयार करनी चाहिए। यह तय करें कि मंजिल पर कौन सा कलाकृतियां हैं।
  2. एक को समर्थन--strictएक ऐसी विधि जो हर warnblock. ऐसे मामलों का दस्तावेजीकरण करें जहां सख्त मोड सही डिफ़ॉल्ट है।
  3. गेट को JSON के अतिरिक्त एक मार्कडाउन सारांश उत्पन्न करने के लिए कहें। सारांश में कौन से फ़ील्ड शामिल हैं, इसका बचाव करें।
  4. एक जोड़ें time_since_last_human_touchजांचः किसी भी फ़ाइल को मानव कीट दबाए जाने के 60 सेकंड के भीतर संपादित किया गया है, जो आउट-स्कोप ध्वज से मुक्त है।
  5. अपने उत्पाद से अलग एक वास्तविक एजेंट पर गेट चलाएं. कितने निष्कर्ष वास्तविक हैं और कितने शोर हैं? गेट को कहाँ बढ़ने की आवश्यकता है?

प्रमुख शर्तें

TermWhat people sayWhat it actually means
Verification gate"The check that stops things"Deterministic function over workbench artifacts producing a pass/fail verdict
Block severity"Hard fail"A finding that prevents passed: true and requires a signed override
Override log"Why we let it through"Signed entries with reason and user id, audited by review
Acceptance command"The proof"A shell command whose zero exit is what done means
One report path"Source of truth"outputs/verification/<task_id>.json, consumed by CI and humans alike

आगे पढ़ना

This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.

Browse the complete course catalog or open this lesson on GitHub.