AI Coding Agent bauen
Kostenlose Spec für einen AI Coding Agent – der Edit-Test-Verify-Loop hinter Aider, OpenHands, SWE-agent und Claude Code. Framework-unabhängig: STACK.md legt Modell, Diff-Strategie, Test-Runner und Guardrail-Substrat fest. Mit Repo-Indexer, Planner, Fallback-Leiter fürs Patchen, geparstem Test-Feedback, Allowlist-Guardrails und Eval-Harness.
So nutzt du diese Spec
- Klick auf eine Zeile oben, um die ganze Task zu öffnen – Titel, Beschreibung, Subtasks, KI-Anweisungen, alles drin. Dasselbe Layout, das das Produkt intern nutzt.
- Klick auf Copy as Prompt in der rechten Seitenleiste einer Task. Du bekommst den in XML verpackten Prompt, den Tekk intern verwendet – füg ihn in Cursor, Claude Code, Codex, ChatGPT oder sonst wo ein, und der Agent hat den vollen Kontext der Task.
- Open in schickt denselben Prompt mit einem Klick direkt nach v0, Lovable, Bolt, Magic Patterns, Replit oder Cursor.
Was du baust
Goal 1: Liefere einen funktionierenden KI-Coding-Agent auf Basis des Edit-Test-Verify-Loops: Ein Repo-Indexer rankt Dateien, ein Planner erstellt einen typisierten Edit-Plan, ein Diff-Apply-Tool mit einer Fallback-Leiter aus neun Strategien nimmt die Änderungen vor, ein Test-Runner liefert geparstes Pass/Fail zurück, und der Loop iteriert bei Fehlschlägen, bis die Tests grün sind – mit Guardrails, Eval-Harness und Tracing in Produktionsqualität.
Aider, OpenHands, SWE-agent und Claude Code laufen alle auf dasselbe Rückgrat hinaus: Repo lesen → planen → Diff anwenden → Tests ausführen → Output lesen → iterieren. Dieses Kanban baut diesen Loop als framework-unabhängiges CLI. Du triffst fünf Entscheidungen einmal in STACK.md (language / model / diff_strategy / test_runner / guardrail_substrate); jede spätere Karte bringt Snippets pro Variante mit. Die Messlatte: Die Eval-Harness besteht ≥ 75 % von 8 handgeschriebenen Bugfix-Szenarien bei p50-Iterationen < 6 und einem parallelisierungssicheren Run-Trace; der Circuit Breaker öffnet nach 3 aufeinanderfolgenden Fehlschlägen mit derselben Signatur und beendet sauber; die Regressionsgrenze von ±5 % hält nach dem Production-Hardening.
Architektur
flowchart TB
User[User Task] --> Index[Repo Indexer<br/>RepoIndex + RelevanceRanking]
Index --> Planner[Planner<br/>EditPlan]
Planner --> Loop{Edit-Test-Verify Loop}
Loop -->|Diff| Apply[Diff-Apply Tool<br/>9-strategy fallback ladder]
Apply -->|ApplyResult + commit_sha| Loop
Loop -->|verification_command| Tests[Test-Runner Tool<br/>parsed TestResult]
Tests -->|passed/failed/failures| Loop
Loop -->|failures + prev plan| Planner
Loop -->|status=success| Output[RunResult + commit chain]
Loop -->|max_iterations or circuit_breaker| Halt[RunResult halted]
Guards[Guardrails<br/>touched-file allowlist<br/>forbidden bash<br/>max iterations] -.->|PreToolUse| Apply
Guards -.->|PreToolUse| Tests Die drei tragenden Entscheidungen: Planung mit Structured Output vor jeder Änderung (der Planner gibt einen typisierten EditPlan zurück, nie Freitext – Anthropics „erst erkunden, dann planen, dann coden“), flexibles Patchen mit einer Fallback-Leiter aus neun Strategien im Diff-Apply-Tool (Aiders Forschung: Wer die Toleranz für unvollkommene Diffs abschaltet, bekommt 9-mal mehr Apply-Fehler) und geparstes Test-Feedback vom Test-Runner (ein Failure-Objekt pro fehlgeschlagenem Test statt rohem stdout – wer dem Modell rohen pytest-Text jenseits von ~25.000 Tokens gibt, verschlechtert, wie treu es sich an den System-Prompt hält).
Wann ein autonomer Coding-Agent sinnvoll ist (und wann nicht)
Ein Edit-Test-Verify-Loop ist kein kostenloses Upgrade gegenüber einem Coding-Assistenten im Chat-Stil. Aiders eigenes Writeup bringt es auf den Punkt: Aider habe „bewusst nur ein recht begrenztes, enges agentisches Verhalten, um lange Wartezeiten, hohe Token-Kosten und die Notwendigkeit zu vermeiden, dass man immer wieder falsche Lösungen im Code Review prüfen muss“. Greif zum autonomen Ansatz, wenn das Verifikationssignal stark und die Änderung klar abgegrenzt ist – sonst bleib selbst im Loop.
✓ Bau einen autonomen Coding-Agent, wenn
- Du echte Tests hast, die eindeutig bestehen oder scheitern. Laut Anthropics Best-Practices-Post zu Claude Code ist Verifikation die wirksamste einzelne Entscheidung. Ohne starkes Pass/Fail-Signal weiß der Loop nicht, wann er fertig ist.
- Der Task klar auf einen bekannten Teil des Repos begrenzt ist. „Behebe den Off-by-one-Fehler in
auth/session.py“ funktioniert; „refaktoriere die ganze Codebase“ nicht. Der Repo-Indexer ist gut, aber lexikalisch, nicht semantisch – das Ranking wird schlechter, je breiter der Scope wird. - Die Änderungen lokal sind und sich als Diff fassen lassen. Die Fallback-Leiter aus neun Strategien kauft dir Nachsicht, keine Magie. Ausufernde Umbauten über viele Dateien mit umgestellter Logik bleiben schwer; Fixes an ein bis fünf Dateien mit klarem Testsignal sind der Sweet Spot.
- Du 5–30 Minuten unbeaufsichtigte Laufzeit erübrigen kannst. p50-Iterationen liegen auf dem Seed-Eval-Set bei 3–6; jede Iteration ist ein Model-Call plus ein Testlauf. Rechne bei einem echten Fix mit 5–30 Minuten, nicht mit 30 Sekunden.
- Du bereits ein Coding-Setup im Chat-Stil im Einsatz hast. Autonom auf einem funktionierenden Chat-Workflow aufzusetzen ist ein Schritt nach vorn; autonom als erster Versuch mit KI-gestütztem Coding hat zu viele Fehlerbilder, die du noch nicht erkennst.
⚠ Bleib bei Unterstützung im Chat-Stil, wenn
- Dein Testsignal schwach ist oder fehlt. Wenn die einzige Prüfung „der Code sieht richtig aus“ ist, liefert der Loop etwas, das richtig aussieht und nicht funktioniert. Erst die Test-Suite bauen, dann den Agent.
- Der Task explorativ ist, nicht korrigierend. „Wie strukturiere ich das am besten?“ ist eine Planungsfrage, keine Frage nach einem fehlschlagenden Test. Nutze für die Erkundung einen Chat im Plan-Modus und übergib dem Agent danach einen klar abgegrenzten Task.
- Du noch kein Guardrail-Substrat hast. Ohne die Allowlist für berührte Dateien und die Liste verbotener Bash-Befehle aus Aufgabe 8 kann der Agent in Iteration 7 deine
.envlöschen oder einen Force-Push auf main machen. Lass ihn nie ohne Guardrails unbeaufsichtigt laufen. - Token-Kosten mehr zählen als Entwicklungszeit. Die p50-Token-Nutzung liegt auf dem Seed-Set bei 20.000–60.000 pro Lauf; Tasks im Stil von SWE-bench überschreiten regelmäßig 100.000. Wenn deine Unit Economics empfindlich sind, geht die Rechnung schnell nicht mehr auf.
- Du den Einrichtungsaufwand der Eval-Harness nicht tragen kannst. Ohne die Harness aus Aufgabe 9 kannst du nicht erkennen, ob ein Modellwechsel, eine Prompt-Änderung oder ein Library-Update die Qualität unbemerkt verschlechtert hat. Jede spätere Verbesserung lässt sich dann nicht mehr überprüfen.
Was die Community sagt
Woran du erkennst, dass es funktioniert
Setz die Spec um und miss sie dann an diesen Kriterien (die Task mit dem Eval-Harness bewertet sie):
- Die Eval-Harness besteht ≥ 75 % der 8 handgeschriebenen Bugfix-Szenarien in evals/fixtures/ (typo, off-by-one, missing-import, regex, async-race, type-error, dep-cycle, multi-file-refactor)
- p50-Iterationen pro erfolgreichem Lauf < 6 über die 8 Fixtures (beweist, dass der Loop konvergiert, statt sich im Kreis zu drehen)
- p50-End-to-End-Latenz < 120 s pro Fixture mit dem in STACK.md konfigurierten Modell
- Apply-Erfolgsquote ≥ 90 % über alle versuchten Diffs (beweist, dass die Fallback-Leiter aus neun Strategien ihre Komplexität wert ist)
- Die Allowlist für berührte Dateien blockiert 100 % der Änderungen an .env / secrets/ / .git/ in den Guardrail-Test-Fixtures
- Der Retry-Helper ist bei einem erzwungenen 429-Mock erfolgreich, mit retries=1 sichtbar im Trace-Event
- Der Circuit Breaker beendet die Stuck-Fix-Fixture innerhalb von 3 Iterationen (nicht erst beim Maximum von 12), mit RunResult.status="halted" und reason="circuit_breaker_open"
- Der Regressionslauf aus Aufgabe 10 liegt bei Pass-Rate und p50-Iterationen innerhalb von ±5 % von evals/baseline.json
Quellen
Jede Aussage, jedes Pattern und jede Abnahmeschwelle auf dieser Seite geht auf eine dieser Quellen zurück. Lies sie, bevor du von der Spec abweichst.
- ↗ Aider — How Aider scored SOTA on SWE-bench aider.chat
- ↗ Aider — Unified diffs make GPT-4 Turbo 3X less lazy aider.chat
- ↗ Aider — Edit formats reference aider.chat
- ↗ Aider — File editing troubleshooting (Hinweis zu aufgeblähtem Kontext) aider.chat
- ↗ Anthropic — Claude Code best practices code.claude.com
- ↗ Aider-AI/aider github.com
- ↗ All-Hands-AI/OpenHands github.com
- ↗ princeton-nlp/SWE-agent github.com
- ↗ anthropics/claude-agent-sdk-python github.com
- ↗ SWE-bench-Leaderboard swebench.com
- ↗ Show HN: OpenHands, an open source alternative to Devin news.ycombinator.com
- ↗ I used to be religiously pro-Aider — HN-Diskussion news.ycombinator.com
- ↗ Aider Is SOTA for Both SWE-bench and SWE-bench Lite news.ycombinator.com
- ↗ OpenHands and AMD: Local Coding Agents news.ycombinator.com
- ↗ Thoughts on a month with Devin news.ycombinator.com
Bau das noch heute Abend in deine Codebase
Wähl deinen Stack anhand der fünf Entscheidungen in STACK.md und registrier dich: Diese Spec mit 10 Tasks landet auf deinem Board, dein Coding-Agent (Claude Code, Codex, Cursor) baut sie über den Tekk-MCP-Server, und der gemergte PR schließt sie. Nach dem Launch behält Tekks AI-Engineering-Loop den Agent weiter im Blick – Harness, Prompts, Tools, Kontext, Memory, Retrieval, Evals und Kosten – und bringt dir ein Proposal, sobald sich etwas ändern sollte. Lieber selbst machen? Öffne oben eine beliebige Task und klick auf Copy as Prompt – und füg den Prompt in Cursor, Claude Code oder Codex ein.