Files
chess-project/docs/tactic-detection-requirements.md
2025-11-26 15:16:08 +01:00

75 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Taktik-Erkennungsmodul Requirements
## Ziel und Rolle im System
- Ergänzt die vorhandene Engine- und LLM-Pipeline: wird nach der Engine-Analyse eingeschoben, bevor das LLM Feedback generiert.
- Aufgabe: Wenn der Spieler **nicht** den Engine-Bestzug gespielt hat, identifiziert das Modul, ob der Bestzug ein klassisches taktisches Motiv auslöst (z.B. Figurgewinn, Pin, Fork) und stellt diese Information strukturiert für das LLM bereit.
- Nichts bestehendes wird ersetzt; es liefert nur zusätzliche, konservative Taktik-Hinweise.
## Eingaben (pro Spielerzug)
- Ausgangsstellung als **FEN**.
- **Spielerfarbe**.
- **Gespielter Zug** des Spielers.
- **Engine-Bestzug** für die Ausgangsstellung.
- Optional: 12 Halbzüge der **PV** des Bestzugs (z.B. Bestzug + Antwort).
- Optional: **Eval-Infos** vor/nach dem Zug bzw. nach Bestzug, falls zur Filterung genutzt.
- Das Modul ruft selbst **keine Engine** auf; es nutzt nur bereitgestellte Daten.
## Ausgabe
- Liste erkannter Motive (leer, wenn nichts gefunden), jedes mit:
- `tactic_type` z.B. `win_material`, `win_pawn`, `pin`, `fork`, `skewer`, `check`, `hanging_piece`, `improve_activity`, `none`.
- `affected_squares` optionale Felderliste.
- `piece_roles` beteiligte Figuren, inkl. Farbe (z.B. „weißer Läufer“, „schwarzer Springer“).
- `material_delta` grobe Materialeinschätzung (Centipawns, z.B. +100 Bauer, +300 Leichtfigur).
- `move` der Engine-Bestzug, auf den sich das Motiv bezieht.
- Diese Struktur wird an das LLM weitergereicht, damit es textuelle Hinweise erzeugt (z.B. „Mit Lxd5 hättest du einen Bauern gewinnen können“).
## Wann das Modul aktiv wird
- Nur prüfen, wenn der Engine-Bestzug **vom gespielten Zug abweicht**.
- Optionaler Filter: Eval-Verlust über Schwellwert (z.B. >50100 Centipawns) als Signal für Relevanz.
- Ziel: Rechenaufwand sparen und Rauschen vermeiden.
## Ablauf pro relevanter Stellung
1. **Stellung herstellen**: FEN laden, Spielerfarbe setzen.
2. **Bestzug anwenden**: Hypothetisch Engine-Bestzug ausführen.
3. **Resultierende Stellung prüfen**: Regelbasierte Checks (ohne neue Engine-Aufrufe) für taktische Muster.
4. **Motive sammeln**: Alle erkannten Motive in strukturierter Form zusammenstellen.
5. **An LLM übergeben**: Zusammen mit gespielt vs. Bestzug und ggf. Eval-Verlust.
## Taktik-Checks (konservativ)
- **Materialgewinn / Capture**
- Prüfen, ob Bestzug eine gegnerische Figur/Bauern schlägt.
- Figurwert bestimmen; Plausibilität, dass die schlagende Figur nicht sofort mit klarem Materialverlust verloren geht.
- Ergebnis: `tactic_type` = `win_piece` oder `win_pawn`.
- **Pin / Fesselung**
- Nach Bestzug: greift ein Läufer/Turm/Dame eine gegnerische Figur an, hinter der auf derselben Linie König oder wertvolle Figur steht?
- Ergebnis: `tactic_type` = `pin`.
- **Fork / Gabel**
- Greift die ziehende Figur gleichzeitig ≥2 wertvolle gegnerische Ziele (z.B. König+Dame, Dame+Turm, zwei Leichtfiguren)?
- Ergebnis: `tactic_type` = `fork`.
- **Skewer**
- Linienangriff, bei dem eine höherwertige Figur vor einer weniger wertvollen steht und nach Abzug Material fällt.
- Ergebnis: `tactic_type` = `skewer`.
- **Schach / direkte Drohung**
- Bestzug gibt Schach; ggf. kombinieren mit PV-Infos, wenn das Schach Materialgewinn erzwingt.
- Ergebnis: `tactic_type` = `check` oder kombiniert mit Material-Hinweis.
- **Hanging Piece**
- Nach Bestzug ist eine gegnerische Figur angegriffen und unzureichend gedeckt.
- Ergebnis: `tactic_type` = `hanging_piece`.
- **Weiche Motive (optional/später)**
- Aktivitätsverbesserung, Outpost-Kontrolle, Königssicherheit.
- Ergebnis: `tactic_type` = `improve_activity` o. Ä.
## Qualität, Priorisierung und Konfiguration
- **Konservativ** melden: lieber weniger Motive als falsche Treffer.
- **Priorisierung** (wenn mehrere Motive): Materialgewinn > Fork > Pin > Check > positionelle Motive.
- **Konfigurierbar**: Schwellwerte für Eval-Verlust, Materialdelta, Prioritätsregeln je Spielstärke.
## Verhalten bei "nichts gefunden"
- Leere Motivliste oder `tactic_type = "none"` liefern.
- Damit kann das bestehende System weiterhin neutralere Hinweise geben (z.B. „Aktivierungschance verpasst“).
## Integrationshinweise
- Modul wird zwischen Engine-Auswertung und LLM-Ausgabe aufgerufen.
- Nutzt bereitgestellte Bestzug- und PV-Daten; keine zusätzlichen Engine-Anfragen nötig.
- Output-Format so halten, dass LLM klar referenzieren kann, was mit dem Bestzug möglich gewesen wäre.