upravy skillu

This commit is contained in:
lachtan
2026-09-02 15:22:39 +02:00
parent 63089cb8cb
commit 442ddc3c24
5 changed files with 177 additions and 104 deletions

View File

@@ -9,7 +9,7 @@ opravu. Nálezy pak procházíš ty, jeden po druhém, a rozhoduješ, co se pou
```text
ANALÝZA — denně 03:30, bez tebe REVIEW — jen když napíšeš /reflect
cron → reflect_auto.py ├─ vezme 1 otevřený nález
├─ destiluje session z okna ├─ ukáže diagnózu, důkazy, návrh, diff
├─ destiluje session z okna ├─ ukáže diagnózu, důkazy, diff + šanci
├─ LLM tah → nálezy ├─ čeká na tvoje rozhodnutí
├─ zapíše do findings.jsonl ├─ aplikuje → git commit → audit
└─ Telegram (jen když je co) └─ další nález
@@ -57,13 +57,36 @@ Zamítnutí je rozhodnutí, ne odklad — zamítnutý vzor se znovu neotevře.
| `zamítni` | nález se zavře natrvalo |
| `konec` | konec review |
Nález, který od analýzy patch nedostal (většina), si ho složí až při review: agent napíše
návrh do JSON a nechá ho ověřit (`--set-patch`). Skript ho **nejdřív ověří proti souboru
a teprve pak uloží**, takže nepoužitelný pokus ve `findings.jsonl` nezůstane — a agent do
store nesahá vůbec. Pak ti ukáže diff a čeká na `ok` jako u každého jiného patche.
Rozhoduješ vždycky nad **hotovým diffem, ne nad větou o něm**. Nález, který od analýzy patch
nedostal (většina), si ho složí ještě předtím, než ti ho předloží: agent napíše návrh do JSON
a nechá ho ověřit (`--set-patch`). Skript ho **nejdřív ověří proti souboru a teprve pak
uloží**, takže nepoužitelný pokus ve `findings.jsonl` nezůstane — a agent do store nesahá
vůbec. Nález, který se editací souboru opravit nedá („míň se překotně přizvukovat"), diff
nedostane — to ti agent řekne rovnou a nabídne jen přeskočení nebo zamítnutí.
Vždy jen **jeden** nález najednou. Nálezy se číslují `1..N` podle pořadí, ne podle
interního id.
interního id. **Nahoře jsou regrese**, teprve pak se řadí podle závažnosti: závažnost
odhaduje model znovu v každém běhu a u téhož vzoru kolísá, kdežto „tohle už jednou
opravené bylo a vrátilo se" je fakt z auditu.
## Šance, že oprava zabere
Pod diffem je odhad typu `Šance, že zabere: ~40 %`. Nejde o změřenou úspěšnost, ale
o zařazení do jednoho ze **čtyř pásem** (~80 / ~60 / ~40 / ~20 %) podle toho, co patch dělá:
| Co patch mění | Pásmo |
|---|---|
| mechaniku — skript nebo hradlo, které nejde ukecat | ~80 % |
| tvrdý zákaz do souboru, který je v kontextu ve chvíli, kdy chyba vzniká (`SOUL.md`, `AGENTS.md`, `SKILL.md` dotčeného skillu) | ~60 % |
| přeformulování existujícího pokynu v takovém souboru | ~40 % |
| soubor, který v tu chvíli v kontextu není, nebo rozhodnutí nechává na úvaze agenta | ~20 % |
Hlavní osa je **jestli je opravovaný text vůbec v kontextu, když chyba nastává**
sebelíp formulovaná věta v souboru, který se v tu chvíli nenačítá, chování změnit nemůže.
O pásmo dolů jde nález, který už jednou opravený byl a vrátil se (regrese), a nález, jehož
důkazy pocházejí z nesouvisejících situací. **Zastaralý nález odhad nedostane vůbec** — vzor
už možná dávno zmizel, takže není co předpovídat. Ke každému číslu patří věta, co ho tam
zařadilo.
## Kde co leží
@@ -88,7 +111,7 @@ nastal, ani víc, než kolik jich v dávce vůbec bylo.
| Rozhodnutí | Do `findings.jsonl` | Do `log/reflect.log` |
|---|---|---|
| složení patche | `patch` + `patch_drafted_at` (= složeno při review, ne modelem) | `DRAFTED <id> [vzor] <soubor>` |
| složení patche (u každého nálezu bez patche, ještě před předložením) | `patch` + `patch_drafted_at` (= složeno při review, ne modelem) | `DRAFTED <id> [vzor] <soubor>` |
| `ok` | `applied: {at, sha, file}`, `patch` = návrh modelu | `APPLIED <id> [vzor] <soubor> — <sha>` |
| `uprav:` | navíc `applied.new_text` = tvoje verze (návrh modelu zůstává v `patch`) | `APPLIED-EDITED …` |
| `zamítni` | `rejected: {at, reason}`**důvod je povinný** | `REJECTED <id> [vzor] — <důvod>` |