diff --git a/BEDIENUNGSANLEITUNG.md b/BEDIENUNGSANLEITUNG.md index baede8c..9279e55 100644 --- a/BEDIENUNGSANLEITUNG.md +++ b/BEDIENUNGSANLEITUNG.md @@ -277,11 +277,14 @@ Empfohlene Sofortmaßnahmen: keine ### Syntax ``` -/optimize [--rounds N] [--with-doku] +/optimize [--rounds N] [--with-doku] [--continue] ``` - `--rounds N` — maximale Anzahl Runden (Standard: 3) - `--with-doku` — nach SHIP automatisch `/update_doku` ausführen +- `--continue` — überspringt die Implementierungsphase und startet direkt mit dem + Judge→Fix-Zyklus ab dem aktuellen Code-Stand. Nützlich wenn man bereits manuell + `/coder`, `/judge` und `/fix` durchgeführt hat und den Rest automatisieren möchte. ### Beispiel: einfacher Auftrag @@ -319,6 +322,26 @@ Nach SHIP werden automatisch ausgeführt: 2. README.md schreiben 3. BEDIENUNGSANLEITUNG.md schreiben +### Vom manuellen Workflow in den automatischen wechseln + +Du hast bereits `/coder`, `/judge` und `/fix` manuell durchgeführt und möchtest +den Rest automatisch ablaufen lassen: + +``` +/optimize --continue +``` + +``` +/optimize --continue --rounds 5 +``` + +``` +/optimize --continue --with-doku +``` + +Die Implementierungsphase wird übersprungen — der Judge prüft sofort den aktuellen +Stand und der Fix-Zyklus läuft automatisch bis PASS oder max. N Runden. + ### Loop-Erkennung Wenn zweimal hintereinander genau dieselben Blocker auftreten, bricht `/optimize` ab: diff --git a/README.md b/README.md index f10fa14..f3aa255 100644 --- a/README.md +++ b/README.md @@ -283,6 +283,7 @@ wenn pi agent Folgeanfragen schnell hintereinander schickt. | `/fix [hinweis]` | Coder | Judge-Kritik beheben, committen | | `/shipit` | Judge | Finale Freigabeprüfung | | `/optimize [--rounds N] [--with-doku]` | beide | Vollautomatische Schleife bis PASS | +| `/optimize --continue [--rounds N] [--with-doku]` | beide | Judge→Fix-Schleife ab aktuellem Stand (überspringt Implementierung) | | `/patch <änderung>` | Coder | Gezielte Minimaländerung ohne Review | | `/quick_check [was]` | Judge | Schnelle Prüfung der letzten Änderung | | `/update_doku` | Coder | Code kommentieren + README + Bedienungsanleitung | diff --git a/llama_cpp_parameter_uebersicht_2xRTX_3090.pdf b/llama_cpp_parameter_uebersicht_2xRTX_3090.pdf new file mode 100644 index 0000000..470e986 Binary files /dev/null and b/llama_cpp_parameter_uebersicht_2xRTX_3090.pdf differ diff --git a/llama_cpp_parameter_uebersicht_RTX_2080TI.pdf b/llama_cpp_parameter_uebersicht_RTX_2080TI.pdf new file mode 100644 index 0000000..6b4253b Binary files /dev/null and b/llama_cpp_parameter_uebersicht_RTX_2080TI.pdf differ diff --git a/pi-coder-judge-extension.ts b/pi-coder-judge-extension.ts index 7e8dca6..7323e49 100644 --- a/pi-coder-judge-extension.ts +++ b/pi-coder-judge-extension.ts @@ -547,31 +547,36 @@ export default function (pi: ExtensionAPI) { // ── Automatische Optimierungsschleife ──────────────────────────────────── pi.registerCommand("optimize", { - description: "Coder→Judge→Fix-Schleife bis PASS + optional Doku. /optimize [--rounds N] [--with-doku]", + description: "Coder→Judge→Fix-Schleife bis PASS + optional Doku. /optimize [--rounds N] [--with-doku] [--continue]", handler: async function (args: string, ctx: ExtensionCommandContext) { const roundsMatch = (args || "").match(/--rounds\s+(\d+)/); const maxRounds = roundsMatch ? Math.max(1, parseInt(roundsMatch[1], 10)) : 3; const withDoku = /--with-doku/.test(args || ""); + const continueMode = /--continue/.test(args || ""); const task = (args || "") .replace(/--rounds\s+\d+/, "") .replace(/--with-doku/, "") + .replace(/--continue/, "") .trim(); - if (!task) { - ctx.ui.notify("Benutzung: /optimize [--rounds N] [--with-doku]", "error"); + if (!continueMode && !task) { + ctx.ui.notify("Benutzung: /optimize [--rounds N] [--with-doku] [--continue]", "error"); return; } - // TASK.md anlegen - await writeTaskMd(pi, ctx, task); - - ctx.ui.setStatus("optimize", `Starte Optimierung (max ${maxRounds} Runden)…`); - - // Phase 1: Initiale Implementierung - ctx.ui.setStatus("optimize", "Phase 1: Coder implementiert…"); - await switchModel(pi, ctx, "llama-cpp-coder", "qwen3.5-coder"); - await sendAndWait(pi, ctx, coderKickoff(task)); - await tickTaskMdStatus(pi, ctx, "Implementierung"); + if (continueMode) { + // --continue: Implementierungsphase überspringen, direkt in Judge→Fix-Schleife + ctx.ui.setStatus("optimize", `Setze fort (max ${maxRounds} Runden Judge→Fix)…`); + ctx.ui.notify("--continue: Überspringe Implementierung, starte direkt mit Judge-Prüfung.", "info"); + } else { + // TASK.md anlegen und Implementierung starten + await writeTaskMd(pi, ctx, task); + ctx.ui.setStatus("optimize", `Starte Optimierung (max ${maxRounds} Runden)…`); + ctx.ui.setStatus("optimize", "Phase 1: Coder implementiert…"); + await switchModel(pi, ctx, "llama-cpp-coder", "qwen3.5-coder"); + await sendAndWait(pi, ctx, coderKickoff(task)); + await tickTaskMdStatus(pi, ctx, "Implementierung"); + } let lastBlockers = ""; let verdict = "";