एजेंट कोड लिखने से पहले कार्य को फ्रेम करें
Type: Learn + Build
Languages: Python (stdlib)
Prerequisites: Phase 14 lessons 31 and 36
Time: ~60 minutes
सीखने के लक्ष्य
- संपादन से पहले किसी अनुरोध को सीमित कार्य फ्रेम में परिवर्तित करें।
- अनुमानों और खुले प्रश्नों से भंडार संबंधी तथ्यों को अलग करना।
- अनुमत मार्ग, निषिद्ध मार्ग और स्वीकृति के प्रमाण को परिभाषित करें।
- कार्य शुरू करने के लिए जब जासूस पर्याप्त है तय करें।
महंगी विफलता
दोहरी ईमेल सुरक्षा जोड़ें विशिष्ट लगता है। यह नहीं है। क्या अद्वितीयता एपीआई, डोमेन सेवा या डेटाबेस में शामिल है? क्या तुलना केस-संवेदनशील है? कौन सा त्रुटि आकार पहले से ही सार्वजनिक है? क्या माइग्रेशन की अनुमति है? कौन सा परीक्षण व्यवहार साबित करता है?
एक सक्षम एजेंट उन अंतराल को व्यवहार्य विकल्पों से भर देगा। यह खतरनाक मामला है क्योंकि कार्यान्वयन स्वच्छ, परीक्षण किया जा सकता है, और अभी भी सिस्टम के साथ असंगत है।
इसलिए कोडिंग एजेंट के काम की पहली इकाई संपादन नहीं है, यह एक कार्य फ्रेम है जिसे भंडार साक्ष्य द्वारा समर्थित है।
कार्य फ्रेम
एक उपयोगी फ्रेम में छह फ़ील्ड होते हैंः
| Field | Question |
|---|---|
| Goal | What observable behavior must change? |
| Repository facts | What did you verify in code, tests, config, or history? |
| Allowed paths | Where may the change land? |
| Forbidden paths | What must remain untouched? |
| Acceptance evidence | Which commands or observations prove the goal? |
| Unknowns | Which decisions still need evidence or human judgment? |
तथ्य रसीदों की आवश्यकता है। एपीआई डुप्लिकेट के लिए 409 का उपयोग करता है जब तक आप मौजूदा परीक्षण या हैंडलर को इंगित नहीं कर सकते तब तक यह एक तथ्य नहीं है। एक फ़ाइल पथ और पंक्ति पर्याप्त है। एक कमांड परिणाम बेहतर है जब व्यवहार मायने रखता है।
flowchart LR
R[Request] --> I[Inspect repository]
I --> F[Facts with evidence]
F --> B[Bounded task frame]
B --> D{Unknown blocks design?}
D -->|Yes| Q[Ask or investigate]
D -->|No| P[Plan the change]पहचानने में बाधाएं होती हैं
पूरे रिपॉजिटरी को न पढ़ें. उन सतहों की खोज करें जो परिवर्तन को सीमित करती हैंः
- वर्तमान व्यवहार और उसके कॉल करने वाला।
- निकटतम मौजूदा परीक्षण.
- सार्वजनिक अनुबंध या क्रमबद्ध रूप।
- परियोजना निर्देश जो पथ को नियंत्रित करते हैं।
- निर्माण और सत्यापन आदेश।
- स्थानीय पैटर्न को प्रकट करने वाले समान पूर्ण परिवर्तन।
जब कोई निर्णय किसी सबूत के आधार पर लिया जाता है, तो उसे रोकना चाहिए, या उसे स्पष्ट रूप से सौंपा जाता है या उसे अज्ञात के रूप में सूचीबद्ध किया जाता है।
अज्ञात असफलता नहीं हैं
एक अज्ञात एक नियंत्रित अंतर है। एक परिकल्पना उस अंतर का अनियंत्रित उत्तर है।
प्रत्येक अज्ञात को वर्गीकृत करेंः
- Discoverable:भंडार या चल रही प्रणाली इसका जवाब दे सकती है।
- Decidable:कार्य अनुबंध एजेंट को चुनने का अधिकार देता है।
- Human:विकल्प उत्पाद व्यवहार, लागत, जोखिम या सार्वजनिक संगतता को बदलता है।
- Deferred:विकल्प इस स्लाइस के बाहर है और गैर-लक्ष्य में शामिल है।
एजेंट को खोज योग्य और विशेषाधिकारित अज्ञात के माध्यम से जारी रखना चाहिए।
कार्यान्वयन से पहले स्वीकृति
पैच से पहले सबूत लिखें। सबूत हो सकता हैः
- एक केंद्रित इकाई या एकीकरण परीक्षण कमांड;
- एक नामित दृश्य पोर्ट और अपेक्षित स्थिति के साथ ब्राउज़र यात्रा;
- एक वायर अनुरोध और सटीक प्रतिक्रिया अनुबंध;
- एक सीमा के साथ प्रदर्शन माप;
- एक दायरा जांच जो पुष्टि करती है कि कोई संबंधित फ़ाइल नहीं बदल गई है।
परीक्षा पास करना कोई प्रमाण योजना नहीं है। प्रामाणिक परीक्षण और उसके समर्थन में दावा का नाम बताइए।
इसे बनाओ
प्रयोगशाला एक बनाती हैTaskFrame, अपनी सीमाओं और सबूतों को मान्य करता है, और लिखता है outputs/task-frame.md. .
इस पाठ निर्देशिका से चलाएंः
bashpython3 code/main.py
python3 -m unittest discover code/tests -vउदाहरण को चार तरीकों से तोड़ेंः लक्ष्य को हटाएं, तथ्य प्राप्ति को हटाएं, एक अनुमति और प्रतिबंधित पथ को ओवरलैप करें, और स्वीकृति कमांड को हटाएं। सत्यापितकर्ता को प्रत्येक फ्रेम को अलग-अलग कारण से अस्वीकार करना चाहिए।
इसे एक वास्तविक भंडार में उपयोग करें
एक एजेंट को संपादित करने के लिए पूछने से पहलेः
- लक्ष्य को व्यवहार के रूप में लिखें, फ़ाइल परिवर्तन नहीं।
- दो या तीन तथ्यों को सटीक सबूत के साथ रिकॉर्ड करें।
- सबसे छोटी अनुमत पथ सेट का नाम दें।
- नकारात्मक स्थान का नाम स्पष्ट रूप से दें।
- कार्य को समाप्त करने के लिए कमांड या अवलोकन लिखें।
- उन निर्णयों की सूची बनाएं जिन्हें आपने अभी तक नहीं लिया है।
फ्रेम को एक स्क्रीन पर फिट होना चाहिए। यदि यह नहीं हो सकता है, तो कार्य में कई स्वतंत्र रूप से सत्यापित परिवर्तन हो सकते हैं।
व्यायाम
- अपने भंडार में से एक से एक असली बग को फ़्रेम करें बिना समाधान का प्रस्ताव दिया।
- फ्रेम में एक दावा ढूंढें जो वास्तव में एक धारणा है। सबूत के साथ इसे बदलें।
- एक अज्ञात मानव जोड़े जिसका जवाब सार्वजनिक अनुबंध को बदल देगा।
- सबसे छोटी सुरक्षित सेट में एक व्यापक अनुमति पथ विभाजित करें।
- स्वीकृति प्रमाण में एक दायरा रसीद जोड़ें।
आगे पढ़ना
- Nuseibeh and Easterbrook, Requirements Engineering: A Roadmap, वास्तविक दुनिया के लक्ष्यों और बदलते प्रतिबंधों के लिए कार्यान्वयन को लंगर बनाने के लिए।
- Yang et al., SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering, के लिए सबूत है कि एक कोडिंग एजेंट के आसपास इंटरफ़ेस इसकी प्रभावशीलता को बदलता है।
जो आप रखते हैं
रखोoutputs/task-frame.md. यह अगले पाठ का इनपुट है, जहां फ्रेम एक सबूत-समर्थित निष्पादन योजना बन जाता है.
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.