कैपस्टोन 16 GitHub Issue-to-PR स्वायत्त एजेंट
Type: Capstone
Languages: Python (agent), TypeScript (GitHub App), YAML (Actions)
Prerequisites: Phase 11 (LLM engineering), Phase 13 (tools), Phase 14 (agents), Phase 15 (autonomous), Phase 17 (infrastructure)
Phases exercised:P11 · P13 · P14 · P15 · P17
Time: 30 hours
समस्या
असिनक क्लाउड कोडिंग एजेंट इंटरैक्टिव कोडिंग एजेंटों (कैपस्टोन 01) से एक अलग उत्पाद श्रेणी है। यूएक्स एक GitHub लेबल है। आप एक समस्या को लेबल करते हैं @agent fix thisएक कर्मचारी एक बादल सैंडबॉक्स में घूमता है, रेपो का क्लोन करता है, परीक्षण चलाता है, फ़ाइलों को संपादित करता है, सत्यापित करता है, और शरीर में एजेंट के तर्क के साथ एक पीआर खोलता है। कोई इंटरैक्टिव लूप नहीं, कोई टर्मिनल नहीं। AWS रिमोट SWE एजेंट, कर्सर पृष्ठभूमि एजेंट, ओपनएआई कोडेक्स क्लाउड, Google जूल्स, और फैक्टरी ड्रोइड सभी इस पर अभिसरण करते हैं।
इंजीनियरिंग चुनौतियां ठोस हैंः पर्यावरण प्रजनन (एजेंट को बिना कैश किए डेवलपमेंट छवि के रेपो को खरोंच से बनाना है), फ्लेकी परीक्षण (पुनः चलाया जाना चाहिए या अलग किया जाना चाहिए), क्रेडेंशियल स्कोपिंग (एक GitHub ऐप जिसमें न्यूनतम बारीक- बारीक अनुमतिएं हैं), प्रति दिन रेपो प्रति बजट प्रवर्तन, और कोई बल-पुश नीति नहीं। कैपस्टोन पास दर, लागत और सुरक्षा बनाम होस्ट किए गए विकल्पों को मापता है।
अवधारणा
ट्रिगर एक GitHub वेबहुक (प्रसंग लेबल या पीआर टिप्पणी) है। एक डिस्पैचर ECS फ़ारगेट या लैम्ब्डा में काम को क्वेज करता है। कार्यकर्ता रेपो (भाषा, ढांचा) से व्युत्पन्न एक सामान्य डॉकरफ़ाइल के साथ डेटोन या ई 2 बी सैंडबॉक्स में रेपो खींचता है। एजेंट क्लाउड ओपस 4.7 या जीपीटी-5.4 कोड के खिलाफ एक मिनी-स्वे-एजेंट या एसडब्ल्यूई-एजेंट वी 2 लूप चलाता है। यह पुनरावृत्ति करता हैः कोड पढ़ें, प्रस्ताव तय करें, पैच लागू करें, परीक्षण चलाएं।
सत्यापन गेटिंग चरण है। पीआर खोलने से पहले पूर्ण आईसी को रेत बॉक्स में पारित करना चाहिए। कवरेज डेल्टा की गणना की जाती है; यदि एक सीमा से परे नकारात्मक है, तो पीआर खुलता है लेकिन लेबल किया जाता है needs-review. एजेंट तर्क को PR विवरण के रूप में पोस्ट करता है और एक @agentसमीक्षाकर्ता अनुवर्ती के लिए पिंग कर सकते हैं.
सुरक्षा दो अलग-अलग GitHub सतहों के माध्यम से स्कॉप किया जाता हैः ऐप एक अल्पकालिक स्थापना टोकन प्रदान करता हैworkflows: readऔर संकीर्ण रेपो सामग्री/पीआर दायरे; शाखा संरक्षण (ऐप अनुमतियों नहीं) लागू करता है "कोई प्रत्यक्ष लिखता है main" और "कोई बल-पुश" एप्लिकेशन कभी भी बायपास सूची में जोड़ा जाता है. पथ-स्कोप केवल पढ़ने के लिए पहुँच करने के लिए .github/workflowsयह एक वास्तविक GitHub ऐप आदिम नहीं है, इसलिए एजेंट की फ़ाइल संपादन पर अनुमति सूची को कार्यकर्ता पर लागू करना होगा। डिस्पैचर पर प्रति दिन प्रति रेपो बजट सीमाएं लागू की जाती हैं (उदाहरण के लिए, प्रति दिन प्रति रेपो अधिकतम 5 पीआर, प्रति पीआर $ 20) ।
वास्तुकला
GitHub issue labeled `@agent fix` or PR comment
|
v
GitHub App webhook -> AWS Lambda dispatcher
|
v
ECS Fargate task (or GitHub Actions self-hosted runner)
- pull repo
- infer Dockerfile (language, package manager)
- Daytona / E2B sandbox with target runtime
- clone -> git worktree -> agent branch
|
v
mini-swe-agent / SWE-agent v2 loop
Claude Opus 4.7 or GPT-5.4-Codex
tools: ripgrep, tree-sitter, read/edit, run_tests, git
|
v
verify CI passes in-sandbox + coverage delta check
|
v (verified)
git push + open PR via GitHub App
PR body = rationale + diff summary + trace URL
label: needs-review
|
v
operator reviews; can @-mention agent for follow-upsस्टैक
- ट्रिगरः ठीक-असंत टोकन के साथ GitHub ऐप; लैम्ब्डा या Fly.io के माध्यम से वेबहुक रिसीवर
- कार्यकर्ता: ईसीएस फ़ारगेट कार्य (या GitHub एक्शन स्वयं होस्ट रनर)
- सैंडबॉक्सः डेटोन डेव कंटेनर या ई2बी सैंडबॉक्स प्रति कार्य
- एजेंट लूपः मिनी-स्व-एजेंट बेसलाइन या क्लाउड ओपस 4.7 / जीपीटी-5.4-कोडेक्स पर एसवीई-एजेंट v2
- प्राप्तिः वृक्ष-सिरिटर रेपो-मैप + रिपग्रेप
- सत्यापनः पूर्ण आईसी सैंडबॉक्स में + कवरेज डेल्टा गेट
- अवलोकनशीलताः पीआर निकाय से जुड़े प्रति पीआर निशान संग्रह के साथ लैंगफ्यूज
- बजटः प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति
इसे बनाओ
- GitHub App.ठीक-तन स्थापना टोकनः समस्याएँ पढ़ें + लिखें, खींचें_अनुरोध लिखें, सामग्री पढ़ें + लिखें, कार्यप्रवाह पढ़ें। शाखा संरक्षण (यह करने के लिए एकमात्र सतह) लागू करता है "कोई प्रत्यक्ष धक्का नहीं करने के लिए।
main" और "कोई बल-पुश नहीं"; ऐप बायपास सूची में नहीं है। कार्यकर्ता "कोई लिखता नहीं है" को लागू करता है.github/workflows" प्रस्तावित अंतर पर अनुमति सूची की जांच के रूप में, क्योंकि GitHub अनुप्रयोग अनुमतियों पथ-स्कोप नहीं हैं.
- Webhook receiver.लैम्ब्डा फ़ंक्शन समस्या लेबल / पीआर टिप्पणी वेबहाक स्वीकार करता है। लेबल द्वारा फ़िल्टर
@agent fix this. एसक्यूएस के लिए क्वेज.
- Dispatcher.SQS से कार्य पॉप करता है प्रति प्रति दिन बजट प्रति प्रति प्रति दिन प्रति प्रति प्रति दिन प्रति प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति दिन प्रति प्रति दिन प्रति दिन प्रति दिन प्रति प्रति दिन प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति दिन प्रति दिन प्रति प्रति दिन प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति दिन प्रति दिन प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति प्रति
- Environment inference.भाषा (पायथन, नोड, गो, रुस्ट) और पैकेज प्रबंधक (यूवी, पीएनपीएम, गो मॉड, कार्गो) का पता लगाएं। यदि कोई मौजूद नहीं है तो उड़ान में एक डॉकरफ़ाइल उत्पन्न करें।
- Agent loop.क्लाउड ओपस 4.7 के साथ मिनी स्वे एजेंट या एसवीई एजेंट v2. उपकरणः रिपग्रेप, ट्री-सिटर रेपो-मैप, रीड_फाइल, एडिट_फाइल, रन_टेस्ट, गिट। हार्ड सीमाएंः $ 20 लागत, 30 मिनट वॉल क्लॉक, 30 एजेंट वक्र।
- Verification.लूप समाप्त होने के बाद, पूरे परीक्षण सूट को सैंडबॉक्स में चलाएं। jacoco / coverage.py के माध्यम से कवरेज डेल्टा की गणना करें। यदि CI लालः रोकें, पीआर न खोलें। यदि कवरेज 2% से अधिक गिरता हैः पीआर खोलें
needs-reviewलेबल।
- PR posting.एजेंट शाखा को धक्का दें. GitHub एपीआई के माध्यम से खुला पीआर के साथः शीर्षक, तर्क, अंतर सारांश, ट्रैक यूआरएल, लागत, मोड़.
- Credential hygiene.वर्कर एक अल्पकालिक GitHub ऐप स्थापना टोकन के साथ चलाता है। लॉग को अभिलेखागार से पहले रहस्यों के लिए स्क्रब किया जाता है।
- Eval.30 विभिन्न कठिनाई के आंतरिक मुद्दों को बीज दिया। पास दर, पीआर गुणवत्ता (अलग आकार, शैली, कवरेज), लागत, विलंबता को मापें। उसी मुद्दों पर कर्सर पृष्ठभूमि एजेंटों और AWS रिमोट एसवीई एजेंटों की तुलना करें।
इसका प्रयोग करें
# on github.com
- user labels issue #842 with `@agent fix this`
- PR #1903 appears 14 minutes later
- body:
> Fixed NPE in widget.dedupe() caused by null comparator entry.
> Added regression test widget_test.go::TestDedupeNullComparator.
> Coverage delta: +0.12%
> Turns: 7 Cost: $1.80 Trace: langfuse:...
> Label: needs-reviewइसे भेजें
outputs/skill-issue-to-pr.mdएक GitHub ऐप + async क्लाउड वर्कर जो सीमित लागत और स्कोप वाले क्रेडेंशियल के साथ लेबल किए गए मुद्दों को समीक्षा के लिए तैयार पीआर में बदल देता है।
| Weight | Criterion | How it is measured |
|---|---|---|
| 25 | Pass rate on 30 issues | End-to-end success (CI green + coverage OK) |
| 20 | PR quality | Diff size, coverage delta, style conformance |
| 20 | Cost and latency per resolved issue | $ and wall-clock per PR |
| 20 | Safety | Scoped token, per-repo budget, no force-push, credential hygiene |
| 15 | Operator UX | Rationale comments, retry affordance, @-mention follow-up |
| 100 |
व्यायाम
- "फिक्स स्लाइड टेस्ट" मोड जोड़ेंः लेबल
@agent stabilize-flake TestXपरीक्षण 50 बार रेत बॉक्स में चलाता है और एक न्यूनतम परिवर्तन का प्रस्ताव है कि इसे स्थिर करता है।
- लागत बनाम कर्सर पृष्ठभूमि एजेंटों की तुलना तीन साझा मुद्दों पर करें। रिपोर्ट करें कि कौन से उपकरण कहां जीतते हैं।
- एक बजट डैशबोर्ड लागू करेंः प्रति प्रतिवेदन प्रति दिन लागत, प्रति उपयोगकर्ता लागत। विसंगतियों पर चेतावनी।
- एक "शुष्क-रन" मोड बनाएं जो आईसी चलाए बिना एक मसौदा पीआर खोले, ताकि समीक्षक योजना को सस्ता देख सकें।
- एक प्रतिधारण नीति जोड़ेंः विलय के बिना 7 दिनों से अधिक पुरानी पीआर शाखाओं को स्वचालित रूप से हटा दिया जाता है।
प्रमुख शर्तें
| Term | What people say | What it actually means |
|---|---|---|
| GitHub App | "Scoped bot identity" | App with fine-grained permissions + short-lived installation token |
| Async cloud agent | "Background agent" | Non-interactive worker that runs in a cloud sandbox, not a terminal |
| Environment inference | "Dockerfile synthesis" | Detect language + package manager, generate a Dockerfile if absent |
| Verification | "CI-in-sandbox" | Run the full test suite inside the worker before opening a PR |
| Coverage delta | "Coverage preservation" | Change in test coverage % from base to agent branch |
| Per-repo budget | "Daily ceiling" | Dollar and PR-count cap enforced at the dispatcher |
| Rationale | "PR body explanation" | Agent's summary of what changed and why; required in the PR body |
आगे पढ़ना
- AWS Remote SWE Agents कैनोनिक असिनक क्लाउड एजेंट संदर्भ
- SWE-agent सीआईआई संदर्भ
- Cursor Background Agents वाणिज्यिक विकल्प
- OpenAI Codex (cloud) मेजबान प्रतियोगी
- Google Jules गूगल का होस्ट किया गया संस्करण
- Factory Droids वैकल्पिक वाणिज्यिक संदर्भ
- GitHub App documentation स्कोप बॉट पहचान
- Daytona cloud sandboxes संदर्भ रेत बॉक्स
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.