Stilregel: keine Querverweise, Konsistenzstufe prüft Doppelungen

Das Buch wird von vorn nach hinten gelesen. Verweisklammern „(→ …)“ und
Rückverweise entfallen, Vorausverweise nur als Halbsatz. Die Konsistenz-
stufe entfernt Reste und kürzt Doppelungen ohne Verweis.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
team3
2026-10-06 09:56:52 +02:00
parent e10f2dc582
commit d352bbef88
11 changed files with 15 additions and 19 deletions

View File

@@ -11,7 +11,7 @@ EFFORT = "high"
PARALLEL = 5 # gleichzeitige Kapitel-Agenten
LEKTORAT_PARALLEL = 8 # gleichzeitige Lektorat-Anfragen (ohne Werkzeuge, je Abschnitt)
MAX_TURNS = 800
KONSISTENZ_GRUPPE = 5 # Kapitel je Querverweis-Agent
KONSISTENZ_GRUPPE = 5 # Kapitel je Konsistenz-Agent
LESE_WPM = 120
STUFEN = [
@@ -20,6 +20,6 @@ STUFEN = [
("schreiben", "Kapitel schreiben"),
("pruefung", "Kapitel prüfen"),
("lektorat", "Sprache glätten"),
("konsistenz", "Querverweise und Vorwort"),
("konsistenz", "Doppelungen und Vorwort"),
("montage", "Buch zusammensetzen"),
]

View File

@@ -1,5 +1,5 @@
"""Lektorat: jedes geprüfte Kapitel wird Abschnitt für Abschnitt sprachlich geglättet (ohne Werkzeuge).
Ein Abschnitt wird nur übernommen, wenn nichts verloren ging (Bezeichner, Zahlen, Überschriften, Code, Verweise, Diagramme)
Ein Abschnitt wird nur übernommen, wenn nichts verloren ging (Bezeichner, Zahlen, Überschriften, Code, Diagramme)
und der Umfang nicht über 20 % wächst; sonst bleibt der Originalabschnitt."""
import asyncio
import re
@@ -24,7 +24,7 @@ def pruefen(alt: str, neu: str) -> list[str]:
fehler = []
if not neu.strip():
return ["leere Antwort"]
for name, rx in (("Überschriften", r"^#{1,4} .*$"), ("Querverweise", r"→ (?:Abschnitt|Kapitel) [0-9.]+")):
for name, rx in (("Überschriften", r"^#{1,4} .*$"),):
a, n = re.findall(rx, alt, flags=re.M), re.findall(rx, neu, flags=re.M)
if sorted(a) != sorted(n):
fehler.append(f"{name} verändert")

View File

@@ -218,7 +218,7 @@ async def st_konsistenz(name: str) -> None:
if state.bericht_lesen(name, f"konsistenz-{gi}"):
continue
dateien = ", ".join(f"`buch/{k['datei']}` (Kapitel {k['n']})" for k in g)
aufgaben.append((f"konsistenz-{gi}", f"Querverweise Kapitel {g[0]['n']}–{g[-1]['n']}",
aufgaben.append((f"konsistenz-{gi}", f"Konsistenz Kapitel {g[0]['n']}–{g[-1]['n']}",
prompts.laden("konsistenz", thema=thema, dateien=dateien, gruppe=str(gi))))
if not state.bericht_lesen(name, "vorwort"):
aufgaben.append(("vorwort", "Vorwort schreiben", prompts.laden("vorwort", thema=thema)))