Prompt-Evolution & Kontext-Learning: System lernt aus Ergebnissen #91

Open
opened 2026-03-30 20:30:57 +00:00 by David · 0 comments
Collaborator

Beschreibung

Bruno um die Fähigkeit erweitern, seine Prompts basierend auf
Ergebnissen zu verbessern und gelerntes Wissen in den Kontext für
Claude einzubauen. Aktuell sind alle 4 Prompts (CLAUDE_PROMPT,
SCORING_PROMPT, REVIEW_PROMPT, ADMIN_PROMPT) hardcoded und ändern
sich nie — egal wie gut oder schlecht die Ergebnisse sind.

Hintergrund

Bruno hat 4 statische Prompts die seit Projektstart unverändert sind:

  • CLAUDE_PROMPT (claude_runner.py:15-24) — 10 Zeilen, immer gleich
  • SCORING_SYSTEM_PROMPT (scoring_prompt.py) — nie versioniert
  • REVIEW_PROMPT (review_agent.py:15-43) — keine Pattern-Learning
  • ADMIN_PROMPT (admin_prompt.py) — nie aktualisiert

Zusätzlich existieren 2 Funktionen die nie aufgerufen werden:

  • gitlab_service.get_recent_mrs() — liefert kürzlich gemergte MRs
  • gitlab_service.get_related_mrs() — findet MRs die gleiche Dateien betreffen
    Diese wären Gold wert für Kontext-Learning, werden aber ignoriert.

PROJEKTKONTEXT.md wird einmalig generiert und nie aktualisiert —
auch nicht nach 100 verarbeiteten Tickets im selben Repo.

Dieses Issue vereint: #33 (Prompt Improvement Loop).
Setzt voraus: MR-Outcome-Tracking (Datengrundlage).

Akzeptanzkriterien

Prompt-Versioning

  • Neue Tabelle prompt_versions (id, name, version, prompt_text, created_at, active)
  • Alle 4 Prompts werden aus DB geladen statt hardcoded
  • API: GET /api/prompts (alle Versionen), POST /api/prompts (neue Version anlegen)
  • API: PUT /api/prompts/{id}/activate (Version aktivieren)
  • Jedes Ticket speichert welche Prompt-Version verwendet wurde: ticket.prompt_version_id

Prompt-Performance-Tracking

  • Neue Tabelle prompt_performance (prompt_version_id, tickets_count, success_rate, avg_review_rounds)
  • Nach jedem abgeschlossenen Ticket: Performance-Daten der verwendeten Prompt-Version aktualisieren
  • API: GET /api/prompts/{id}/performance (Erfolgsrate, Review-Runden, etc.)
  • Dashboard: Prompt-Performance-Vergleich (Version A vs Version B)

Historical Learnings in kontext.md

  • Neuer Template-Abschnitt: "Learnings aus ähnlichen Tickets in diesem Repo"
  • get_recent_mrs() endlich nutzen: Kürzlich gemergte MRs als Referenz einfügen
  • get_related_mrs() endlich nutzen: MRs die gleiche Dateien betreffen als Kontext
  • Häufige Review-Probleme pro Repo extrahieren und in kontext.md einfügen
  • Beispiel: "In diesem Repo werden Tests oft bemängelt — stelle sicher dass du Tests schreibst"

Repo-spezifische Learnings

  • Neue Felder auf Repo-Model: success_rate, common_review_issues, learnings_updated_at
  • Nach jeweils 10 abgeschlossenen Tickets pro Repo: Learnings automatisch extrahieren
  • PROJEKTKONTEXT.md periodisch aktualisieren (nicht nur einmalig generieren)
  • repo_context_builder.py erweitern: Learnings-Abschnitt in PROJEKTKONTEXT.md

Scoring-Prompt mit historischen Daten

  • Scoring-Prompt enthält Erfolgsraten pro Score-Range ("80-100: 94% Erfolg, 70-79: 72%")
  • Scoring-Prompt enthält Dimension-Wichtigkeit ("Klarheit Wo ist 3x stärker als Kontext")
  • Scoring-Prompt enthält häufige False-Positive-Muster ("PDF-Tickets ohne Beispiel scheitern oft")
  • Daten werden aus Kalibrierungs-Engine geladen (Abhängigkeit zu MR-Outcome-Tracking)

Frontend

  • Prompt-Verwaltungsseite: Versionen vergleichen, neue anlegen, Performance sehen
  • Repo-Detail: Learnings-Tab mit automatisch extrahierten Erkenntnissen
  • TicketDetail: Welche Prompt-Version wurde verwendet?

Technische Hinweise

  • Betroffene Dateien:
    • Neu: backend/models/prompt.py (PromptVersion, PromptPerformance Models)
    • Neu: backend/services/prompt_manager.py (Versioning, Performance-Tracking, Dynamic Loading)
    • Neu: backend/services/learning_extractor.py (Repo-Learnings aus Ticket-Historie extrahieren)
    • Neu: backend/api/prompts.py (Prompt-Verwaltung Endpoints)
    • Neu: frontend/src/pages/Prompts.tsx (Prompt-Verwaltungsseite)
    • Ändern: backend/services/claude_runner.py (Prompt aus DB laden statt Konstante)
    • Ändern: backend/services/scoring_engine.py (Prompt aus DB laden, historische Daten einfügen)
    • Ändern: backend/services/review_agent.py (Prompt aus DB laden)
    • Ändern: backend/services/preparation_engine.py (Learnings + Related MRs in kontext.md)
    • Ändern: backend/services/gitlab_service.py (get_recent_mrs/get_related_mrs endlich aufrufen)
    • Ändern: backend/services/repo_context_builder.py (Learnings-Section, periodisches Update)
    • Ändern: backend/templates/kontext_template.md (neue Sections: Learnings, Related MRs, KB)
    • Ändern: backend/models/ticket.py (+ prompt_version_id FK)
    • Ändern: backend/models/repo.py (+ success_rate, common_review_issues, learnings_updated_at)
    • Ändern: backend/main.py (neue Router, periodischer Learnings-Extraktion Job)
    • Ändern: frontend/src/App.tsx (neue Route)
    • Ändern: frontend/src/pages/TicketDetail.tsx (Prompt-Version anzeigen)
  • Ansatz: Prompt-Versioning zuerst (Infrastruktur), dann Performance-Tracking
    (braucht MR-Outcome-Daten), dann Learnings-Integration (braucht genug History).
  • Migration nötig: Ja (2 neue Tabellen + Ticket/Repo-Felder)
  • Abhängigkeiten: MR-Outcome-Tracking muss zuerst implementiert sein

Aufwand: XL

## Beschreibung Bruno um die Fähigkeit erweitern, seine Prompts basierend auf Ergebnissen zu verbessern und gelerntes Wissen in den Kontext für Claude einzubauen. Aktuell sind alle 4 Prompts (CLAUDE_PROMPT, SCORING_PROMPT, REVIEW_PROMPT, ADMIN_PROMPT) hardcoded und ändern sich nie — egal wie gut oder schlecht die Ergebnisse sind. ## Hintergrund Bruno hat 4 statische Prompts die seit Projektstart unverändert sind: - `CLAUDE_PROMPT` (claude_runner.py:15-24) — 10 Zeilen, immer gleich - `SCORING_SYSTEM_PROMPT` (scoring_prompt.py) — nie versioniert - `REVIEW_PROMPT` (review_agent.py:15-43) — keine Pattern-Learning - `ADMIN_PROMPT` (admin_prompt.py) — nie aktualisiert Zusätzlich existieren 2 Funktionen die **nie aufgerufen werden**: - `gitlab_service.get_recent_mrs()` — liefert kürzlich gemergte MRs - `gitlab_service.get_related_mrs()` — findet MRs die gleiche Dateien betreffen Diese wären Gold wert für Kontext-Learning, werden aber ignoriert. `PROJEKTKONTEXT.md` wird einmalig generiert und nie aktualisiert — auch nicht nach 100 verarbeiteten Tickets im selben Repo. Dieses Issue vereint: #33 (Prompt Improvement Loop). Setzt voraus: MR-Outcome-Tracking (Datengrundlage). ## Akzeptanzkriterien ### Prompt-Versioning - [ ] Neue Tabelle `prompt_versions` (id, name, version, prompt_text, created_at, active) - [ ] Alle 4 Prompts werden aus DB geladen statt hardcoded - [ ] API: `GET /api/prompts` (alle Versionen), `POST /api/prompts` (neue Version anlegen) - [ ] API: `PUT /api/prompts/{id}/activate` (Version aktivieren) - [ ] Jedes Ticket speichert welche Prompt-Version verwendet wurde: `ticket.prompt_version_id` ### Prompt-Performance-Tracking - [ ] Neue Tabelle `prompt_performance` (prompt_version_id, tickets_count, success_rate, avg_review_rounds) - [ ] Nach jedem abgeschlossenen Ticket: Performance-Daten der verwendeten Prompt-Version aktualisieren - [ ] API: `GET /api/prompts/{id}/performance` (Erfolgsrate, Review-Runden, etc.) - [ ] Dashboard: Prompt-Performance-Vergleich (Version A vs Version B) ### Historical Learnings in kontext.md - [ ] Neuer Template-Abschnitt: "Learnings aus ähnlichen Tickets in diesem Repo" - [ ] `get_recent_mrs()` endlich nutzen: Kürzlich gemergte MRs als Referenz einfügen - [ ] `get_related_mrs()` endlich nutzen: MRs die gleiche Dateien betreffen als Kontext - [ ] Häufige Review-Probleme pro Repo extrahieren und in kontext.md einfügen - [ ] Beispiel: "In diesem Repo werden Tests oft bemängelt — stelle sicher dass du Tests schreibst" ### Repo-spezifische Learnings - [ ] Neue Felder auf Repo-Model: `success_rate`, `common_review_issues`, `learnings_updated_at` - [ ] Nach jeweils 10 abgeschlossenen Tickets pro Repo: Learnings automatisch extrahieren - [ ] PROJEKTKONTEXT.md periodisch aktualisieren (nicht nur einmalig generieren) - [ ] `repo_context_builder.py` erweitern: Learnings-Abschnitt in PROJEKTKONTEXT.md ### Scoring-Prompt mit historischen Daten - [ ] Scoring-Prompt enthält Erfolgsraten pro Score-Range ("80-100: 94% Erfolg, 70-79: 72%") - [ ] Scoring-Prompt enthält Dimension-Wichtigkeit ("Klarheit Wo ist 3x stärker als Kontext") - [ ] Scoring-Prompt enthält häufige False-Positive-Muster ("PDF-Tickets ohne Beispiel scheitern oft") - [ ] Daten werden aus Kalibrierungs-Engine geladen (Abhängigkeit zu MR-Outcome-Tracking) ### Frontend - [ ] Prompt-Verwaltungsseite: Versionen vergleichen, neue anlegen, Performance sehen - [ ] Repo-Detail: Learnings-Tab mit automatisch extrahierten Erkenntnissen - [ ] TicketDetail: Welche Prompt-Version wurde verwendet? ## Technische Hinweise - Betroffene Dateien: - Neu: `backend/models/prompt.py` (PromptVersion, PromptPerformance Models) - Neu: `backend/services/prompt_manager.py` (Versioning, Performance-Tracking, Dynamic Loading) - Neu: `backend/services/learning_extractor.py` (Repo-Learnings aus Ticket-Historie extrahieren) - Neu: `backend/api/prompts.py` (Prompt-Verwaltung Endpoints) - Neu: `frontend/src/pages/Prompts.tsx` (Prompt-Verwaltungsseite) - Ändern: `backend/services/claude_runner.py` (Prompt aus DB laden statt Konstante) - Ändern: `backend/services/scoring_engine.py` (Prompt aus DB laden, historische Daten einfügen) - Ändern: `backend/services/review_agent.py` (Prompt aus DB laden) - Ändern: `backend/services/preparation_engine.py` (Learnings + Related MRs in kontext.md) - Ändern: `backend/services/gitlab_service.py` (get_recent_mrs/get_related_mrs endlich aufrufen) - Ändern: `backend/services/repo_context_builder.py` (Learnings-Section, periodisches Update) - Ändern: `backend/templates/kontext_template.md` (neue Sections: Learnings, Related MRs, KB) - Ändern: `backend/models/ticket.py` (+ prompt_version_id FK) - Ändern: `backend/models/repo.py` (+ success_rate, common_review_issues, learnings_updated_at) - Ändern: `backend/main.py` (neue Router, periodischer Learnings-Extraktion Job) - Ändern: `frontend/src/App.tsx` (neue Route) - Ändern: `frontend/src/pages/TicketDetail.tsx` (Prompt-Version anzeigen) - Ansatz: Prompt-Versioning zuerst (Infrastruktur), dann Performance-Tracking (braucht MR-Outcome-Daten), dann Learnings-Integration (braucht genug History). - Migration nötig: Ja (2 neue Tabellen + Ticket/Repo-Felder) - Abhängigkeiten: MR-Outcome-Tracking muss zuerst implementiert sein ## Aufwand: XL
Sign in to join this conversation.
No description provided.