Capstone 16 GitHub İletişim-PR Otonom Ajan
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
Sorun
Async bulut kodlama ajanı, etkileşimli kodlama ajanlarından ayrı bir ürün kategorisidir (capstone 01). UX GitHub etiketidir.@agent fix thisBu, bir çalışanın bulut sandboxuna girmesini, repo'yu klonlamasını, testleri çalıştırmasını, dosyaları düzenlemesini, ajanın mantıklılığını kullanarak bir PR'yi doğrulamasını ve açmasını sağlar.
Mühendislik zorlukları: çevre yeniden üretimi (ajent, repo'yu sıfırdan bir önbelleğe kaydedilmiş bir geliştirme görüntüsü olmadan oluşturmalıdır), gevşek testler (daha tekrar çalıştırılmalı veya izole edilmelidir), kredi alanı (minimal ince tanelerli izinlerle bir GitHub Uygulama), günde repo başına bütçe uygulanması ve zorsuz itme politikası.
Anlam
Çekici GitHub webhook (sorun etiket veya PR yorum) bir dispatcher iş ECS Fargate veya Lambda'ya sorgular. İşçi repo'yu Daytona veya E2B kum kutusu içine çekir.
Verifikasyon kaplama adımıdır. PR açılmadan önce tam bilgi işleminin kum kutusunda geçmesi gerekir. Kapsam delta hesaplanır; eşiğin eşiğinden ötesinde negatif ise PR açılır ama etiketlenir needs-review- Ajan, mantıklılığı PR açıklaması ve bir ek olarak gönderir.@agentRecenseur takip için ping yapabilir.
Güvenlik iki farklı GitHub yüzeyinden oluşur: Uygulama kısa ömürlü bir kurulum jetonu sağlar.workflows: readve dar repo içeriği/PR alanları; şubeler koruma (apk izinleri değil) "birbirden yazılmıyor" uygulamasını zorlar.main" ve "force-push" uygulamayı hiç atlama listesine eklenmez..github/workflowsGitHub uygulaması gerçek bir primitif değildir, bu nedenle ajanın dosya düzenlemelerindeki izin listesi bunu işçi üzerinde zorlamalıdır.
Mimarlık
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-upsYüküm
- Trigger: GitHub uygulaması ince tohumlu token; Lambda veya Fly.io üzerinden webhook alıcı
- İşçi: ECS Fargate görevi (veya GitHub Actions kendi kendine barındırılan koşucu)
- Kum Kutusu: Daytona devcontainer veya E2B kum kutusu görev başına
- Ajan döngüsü: Mini-swe-agent baseline veya SWE-agent v2 üzerinde Claude Opus 4.7 / GPT-5.4-Codex
- Arama: ağaç bekçisi repo haritası + ripgrep
- Verifikasyon: Tam bilgi bilgisası kum kutusunda + kapsam delta kapısı
- Gözlemsellik: İlişki Örgütü tarafından bağlantılı bir İlişki Örgütü'ne göre iz arşivine sahip Langfuse
- Bütçe: repo başına günlük dolar tavanı; günde repo başına maksimum PR
Yapın
- GitHub App.İnstalasyon simgesi: okuma + yazma, pull_requests yazma, içerik okuma + yazma, iş akışları okunabilir.
main" ve " zorla itmek yok" uygulaması bypass listesinde değil..github/workflowsGitHub App izinleri yol ölçüsü olmadığı için önerilen farklılık için izin listesi kontrolü olarak.
- Webhook receiver.Lambda işlevi, sorun etiketlerini / PR yorumlarını webhooks olarak kabul eder.
@agent fix thisSQS'e gel.
- Dispatcher.SQS'ten görevleri açar. Günde bir rekabet bütçesini uyguluyor. Rekabet URL'si, yayın gövdesine ve taze bir Daytona kum kutusu ile bir ECS Fargate görevini döndürüyor.
- Environment inference.Python, Node, Go, Rust) ve paket yöneticisini (uv, pnpm, go mod, cargo) tespit edin.
- Agent loop.Mini-swe-agent veya Claude Opus 4.7 ile SWE-agent v2. Araçlar: ripgrep, tree-sitter repo-map, read_file, edit_file, run_tests, git.
- Verification.Çubuk tamamlandıktan sonra, tüm test süiti kum kutusunda çalıştırın. Jacoco / coverage.py üzerinden kapsam delta hesaplayın. CI kırmızı ise: dur, PR açmayın. Kapsam % 2'den fazla düşerse: açık PR ile
needs-reviewEtiket.
- PR posting.GitHub API üzerinden PR aç: başlık, mantık, farklılık özet, iz URL, maliyet, dönüş.
- Credential hygiene.İşçi kısa ömürlü bir GitHub uygulaması yükleme jetonu ile çalışır.
- Eval.30 farklı zorluk içi sorunları ortaya çıkardı. Geçit oranını, PR kalitesini (farklı boyut, stil, kapsam), maliyetini, gecikmeyi ölçün. Aynı konularda Cursor Arka Yöntemli Ajanlar ve AWS Uzak SWE Ajanları ile karşılaştırın.
Kullan
# 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-reviewGönder
outputs/skill-issue-to-pr.mdGitHub App + async bulut çalışanı, etiketlenmiş sorunları sınırlı maliyet ve kapsamlı yeteneklerle inceleme hazır PR'lere dönüştürür.
| 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 |
Egzersizler
- "Düzeltme kayalıklı testi" modunu ekleyin: etiket
@agent stabilize-flake TestXTest 50 kez sandbox'ta yapılır ve onu istikrarlı hale getiren en az bir değişiklik önerir.
- Üç ortak konu üzerinde maliyet vs. kursör arka plan ajanlarını karşılaştırın. Hangi araçların nerede kazanmış olduğunu rapor edin.
- Bütçe paneli uygulayın: günlük, kullanıcı başına maliyet, anomali uyarısı.
- Bir PR taslağını CI çalıştırmadan açan "kuyu çalıştırma" modunu oluşturun, böylece inceleyiciler planı ucuz bir şekilde inceleyebilirler.
- Bir tutma politikası ekle: Birleştirilmeden 7 günden daha eski olan İlişki Şubeleri otomatik olarak silinir.
Anahtar Terimler
| 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 |
Daha Fazla Okumak
- AWS Remote SWE Agents kanonik asynk bulut ajanı referansı
- SWE-agent CLI referansı
- Cursor Background Agents Ticari alternatif
- OpenAI Codex (cloud) Ev sahibi rekabetçi
- Google Jules Google'ın barındırılan sürümü
- Factory Droids alternatif ticari referans
- GitHub App documentation Görevi bot kimliği
- Daytona cloud sandboxes Referans kum kutusu
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.