Umfang aus der Gliederung statt aus Zahlenvorgaben
Der Gliederungs-Agent vergibt je Abschnitt ein Gewicht (kurz/mittel/lang, 800/1300/2000 Wörter); Kapitel typisch 4 Abschnitte (2–7), Summe höchstens 8000 Wörter. Autor und Prüfer richten sich nach dem Richtwert, keine Untergrenze mehr. Parser liest das Gewicht und prüft die Grenzen. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
@@ -4,10 +4,13 @@ import re
|
||||
KAPITEL_RE = re.compile(r"^\*\*Kapitel (\d+) – (.+?)\*\* \(`([0-9]{2}-[a-z0-9-]+\.md)`\)\s*$")
|
||||
TEIL_RE = re.compile(r"^## (Teil .+?)\s*$")
|
||||
TITEL_RE = re.compile(r"^# Gliederung – (.+?)(?:\. (.+))?$")
|
||||
# Richtwerte je Abschnitt (Wörter); ein Kapitel soll eine Lesesitzung bleiben.
|
||||
RICHTWERT = {"kurz": 800, "mittel": 1300, "lang": 2000}
|
||||
KAPITEL_MAX = 8000
|
||||
|
||||
|
||||
def parsen(text: str) -> dict:
|
||||
"""→ {"titel", "untertitel", "kapitel": [{"n","titel","datei","teil","abschnitte":[{"nr","titel"}]}], "fehler": [...]}"""
|
||||
"""→ {"titel", "untertitel", "kapitel": [{"n","titel","datei","teil","abschnitte":[{"nr","titel","gewicht","richtwert"}]}], "fehler": [...]}"""
|
||||
aus = {"titel": "", "untertitel": "", "kapitel": [], "fehler": []}
|
||||
teil = ""
|
||||
zeilen = text.splitlines()
|
||||
@@ -29,9 +32,11 @@ def parsen(text: str) -> dict:
|
||||
j += 1
|
||||
if j < len(zeilen):
|
||||
for teilstueck in re.split(r"\s+·\s+", zeilen[j].strip()):
|
||||
am = re.match(r"^(\d+)\.(\d+)\s+(.+)$", teilstueck.strip())
|
||||
am = re.match(r"^(\d+)\.(\d+)\s+(.+?)(?:\s*\((kurz|mittel|lang)\))?$", teilstueck.strip())
|
||||
if am and int(am.group(1)) == n:
|
||||
k["abschnitte"].append({"nr": f"{am.group(1)}.{am.group(2)}", "titel": am.group(3).strip()})
|
||||
gewicht = am.group(4) or "mittel"
|
||||
k["abschnitte"].append({"nr": f"{am.group(1)}.{am.group(2)}", "titel": am.group(3).strip(),
|
||||
"gewicht": gewicht, "richtwert": RICHTWERT[gewicht]})
|
||||
else:
|
||||
aus["fehler"].append(f"Kapitel {n}: Abschnittszeile unlesbar: „{teilstueck.strip()[:60]}“")
|
||||
i = j
|
||||
@@ -42,8 +47,11 @@ def parsen(text: str) -> dict:
|
||||
aus["fehler"].append(f"Kapitelzeile nicht im Format: „{z[:80]}“")
|
||||
i += 1
|
||||
for k in aus["kapitel"]:
|
||||
if not 3 <= len(k["abschnitte"]) <= 6:
|
||||
aus["fehler"].append(f"Kapitel {k['n']} hat {len(k['abschnitte'])} Abschnitte (3–6 verlangt)")
|
||||
if not 2 <= len(k["abschnitte"]) <= 7:
|
||||
aus["fehler"].append(f"Kapitel {k['n']} hat {len(k['abschnitte'])} Abschnitte (2–7 verlangt; mehr Stoff → Kapitel teilen)")
|
||||
summe = sum(a["richtwert"] for a in k["abschnitte"])
|
||||
if summe > KAPITEL_MAX:
|
||||
aus["fehler"].append(f"Kapitel {k['n']}: Richtwerte summieren sich auf {summe} Wörter (höchstens {KAPITEL_MAX}) – Kapitel teilen oder Gewichte senken")
|
||||
nummern = [k["n"] for k in aus["kapitel"]]
|
||||
if nummern != list(range(1, len(nummern) + 1)):
|
||||
aus["fehler"].append(f"Kapitelnummern nicht fortlaufend: {nummern}")
|
||||
|
||||
@@ -2,9 +2,11 @@ Du entwirfst die Gliederung eines deutschsprachigen Sachbuchs zum Thema „{{the
|
||||
{{hinweise_block}}
|
||||
Lies zuerst vollständig: `buch/STIL.md`, `quellen/QUELLEN.md` und `deutung.json`. Verschaffe dir dann anhand der Quellen unter `quellen/` (Inhaltsverzeichnisse der Doku, Klassenlisten, Titel der Studien) einen Überblick, was das Thema umfasst – die Gliederung muss aus dem Stoff kommen, nicht aus dem Gedächtnis.
|
||||
|
||||
Anforderungen:
|
||||
- Breite Übersicht über alles Wichtige; keine feste Kapitelzahl, typisch 10–25 Kapitel, ab 8 Kapiteln in Teile gruppiert.
|
||||
- Je Kapitel 3–6 Abschnitte. Reihenfolge nach dem, was man zuerst wissen muss.
|
||||
Anforderungen – der Stoff bestimmt den Umfang, nicht eine Zielzahl:
|
||||
- Ein Kapitel ist ein eigenständiges Thema mit eigener Leitfrage. Verwandte Themen zusammenlegen, wenn sie gemeinsam unter 4 Abschnitte passen. Keine Kapitel der Vollständigkeit halber. Ab 8 Kapiteln in Teile gruppieren.
|
||||
- Je Kapitel so viele Abschnitte, wie es getrennte Fragen gibt: typisch 4, mindestens 2, höchstens 7. Reihenfolge nach dem, was man zuerst wissen muss.
|
||||
- Jeder Abschnitt bekommt ein Gewicht, das seine Länge festlegt: `(kurz)` ≈ 800 Wörter für Abgrenzung, Überblick, Einordnung; ohne Angabe = mittel ≈ 1.300 Wörter, der Normalfall; `(lang)` ≈ 2.000 Wörter für Kernverfahren mit Herleitung und Beispiel.
|
||||
- Ein Kapitel soll in einer Lesesitzung zu schaffen sein: Summe der Richtwerte höchstens 8.000 Wörter. Braucht ein Thema mehr, wird es geteilt, nicht gestapelt.
|
||||
- Jedes Thema hat genau ein zuständiges Kapitel; Überschneidungen vermeiden (später wird per Querverweis verwiesen).
|
||||
- Titel deutsch, konkret, keine Marketingsprache.
|
||||
|
||||
@@ -16,15 +18,15 @@ Schreibe `buch/GLIEDERUNG.md` GENAU in diesem Format (Parser liest es):
|
||||
## Teil I – <Name des Teils>
|
||||
|
||||
**Kapitel 1 – <Titel>** (`01-<slug>.md`)
|
||||
1.1 <Titel> · 1.2 <Titel> · 1.3 <Titel>
|
||||
1.1 <Titel> (kurz) · 1.2 <Titel> · 1.3 <Titel> (lang)
|
||||
|
||||
**Kapitel 2 – <Titel>** (`02-<slug>.md`)
|
||||
2.1 <Titel> · 2.2 <Titel> · 2.3 <Titel> · 2.4 <Titel>
|
||||
2.1 <Titel> · 2.2 <Titel> (lang) · 2.3 <Titel> · 2.4 <Titel> (kurz)
|
||||
|
||||
## Teil II – <Name>
|
||||
…
|
||||
```
|
||||
|
||||
Regeln für das Format: Dateiname zweistellig nummeriert, slug nur Kleinbuchstaben, Ziffern und Bindestriche (ae/oe/ue/ss statt Umlauten); Abschnitte in einer Zeile, getrennt durch „ · “; Nummerierung fortlaufend; Teile mit `## Teil <römisch> – Name`; bei weniger als 8 Kapiteln keine Teile-Zeilen. Keine weiteren Zeilen außer Leerzeilen.
|
||||
Regeln für das Format: Dateiname zweistellig nummeriert, slug nur Kleinbuchstaben, Ziffern und Bindestriche (ae/oe/ue/ss statt Umlauten); Abschnitte in einer Zeile, getrennt durch „ · “; das Gewicht steht als `(kurz)` oder `(lang)` am Ende des Abschnittstitels, mittel bleibt ohne Angabe; Nummerierung fortlaufend; Teile mit `## Teil <römisch> – Name`; bei weniger als 8 Kapiteln keine Teile-Zeilen. Keine weiteren Zeilen außer Leerzeilen.
|
||||
|
||||
Antworte am Ende kurz (max. 6 Zeilen): Anzahl Teile/Kapitel/Abschnitte und was bewusst weggelassen wurde.
|
||||
Antworte am Ende kurz (max. 6 Zeilen): Anzahl Teile/Kapitel/Abschnitte, Summe der Richtwerte in Wörtern, und was bewusst weggelassen oder zusammengelegt wurde.
|
||||
|
||||
@@ -2,7 +2,7 @@ Du schreibst ein Kapitel für ein deutschsprachiges Sachbuch zum Thema „{{them
|
||||
|
||||
Lies zuerst vollständig: `buch/STIL.md`, `buch/GLIEDERUNG.md`, `quellen/QUELLEN.md`.
|
||||
|
||||
Aufgabe: **Kapitel {{n}} – {{kapitel_titel}}**, Datei `buch/{{datei}}`, mit genau den Abschnitten aus der Gliederung.
|
||||
Aufgabe: **Kapitel {{n}} – {{kapitel_titel}}**, Datei `buch/{{datei}}`, mit genau den Abschnitten aus der Gliederung. Das Gewicht hinter dem Abschnittstitel – `(kurz)` ≈ 800 Wörter, ohne Angabe ≈ 1.300, `(lang)` ≈ 2.000 – ist der Richtwert für die Länge; es gehört nicht in die Überschrift.
|
||||
|
||||
Arbeite in diesem Loop:
|
||||
1. RECHERCHE in den lokalen Quellen (siehe QUELLEN.md): Verstehe die Sache anhand von Quellcode, Referenz, Doku bzw. Abstracts, bevor du schreibst. Online nur, wenn lokal nicht klärbar und QUELLEN.md es erlaubt.
|
||||
@@ -12,4 +12,4 @@ Arbeite in diesem Loop:
|
||||
|
||||
Arbeitsdateien (Testskripte, Notizen) nur unter `arbeit/kapitel-{{n}}/` anlegen, nicht in `buch/` oder `quellen/`. Keine persönlichen Daten an externe Dienste senden.
|
||||
|
||||
Antworte am Ende mit einem kurzen Bericht (max. 10 Zeilen, Markdown): Wortzahl; was du per Quelle abgesichert oder korrigiert hast; eine Liste der Aussagen, die du NICHT belegen konntest (diese Liste bekommt der unabhängige Prüfer).
|
||||
Antworte am Ende mit einem kurzen Bericht (max. 10 Zeilen, Markdown): Wortzahl je Abschnitt neben dem Richtwert, Abweichungen über 20 % begründet; was du per Quelle abgesichert oder korrigiert hast; eine Liste der Aussagen, die du NICHT belegen konntest (diese Liste bekommt der unabhängige Prüfer).
|
||||
|
||||
@@ -11,7 +11,7 @@ Loop, bis nichts mehr zu korrigieren ist:
|
||||
1. Lies das Kapitel komplett. Extrahiere alle überprüfbaren Behauptungen: Bezeichner und Signaturen, Versionsangaben, Studien (Autoren, Jahr, Design, Stichprobe, Ergebnis, Effektgröße), Zahlen, Zitate, Verhaltensbeschreibungen („was passiert wann“), Zuschreibungen („X hat Y eingeführt“).
|
||||
2. Verifiziere möglichst ALLE gegen die lokalen Quellen (QUELLEN.md). Priorisiere nach Fehlerwahrscheinlichkeit. Führe Codebeispiele aus bzw. teste beschriebenes Verhalten mit kleinen Skripten, wo STIL.md das vorsieht. Versionsangaben gegen Tags/Changelogs prüfen. Achte besonders auf: falsche Zuschreibungen, verdrehte Effektrichtungen, überzogene Kausalaussagen aus Korrelationsstudien, erfundene Stichprobengrößen, veraltete oder erfundene Bezeichner, Doku-Aussagen, die dem Quellcode widersprechen (dann gilt der Quellcode).
|
||||
3. Korrigiere Fehler direkt in der Datei mit Edit (minimal-invasiv, Stil beibehalten). Unbelegbares vorsichtiger formulieren oder streichen.
|
||||
4. Prüfe Form: Überschriften exakt wie GLIEDERUNG.md; keine Übungen/Merkkästen/Zusammenfassungen/Literaturlisten; Querverweise zeigen auf Kapitel, die das Thema laut Gliederung (und, falls die Datei schon existiert, laut Text) wirklich behandeln; keine größeren Doppelungen mit Themen, die in andere Kapitel gehören (dann kürzen und verweisen); Rechtschreibung, Umlaute, Markdown.
|
||||
4. Prüfe Form: Überschriften exakt wie GLIEDERUNG.md; keine Übungen/Merkkästen/Zusammenfassungen/Literaturlisten; Querverweise zeigen auf Kapitel, die das Thema laut Gliederung (und, falls die Datei schon existiert, laut Text) wirklich behandeln; keine größeren Doppelungen mit Themen, die in andere Kapitel gehören (dann kürzen und verweisen); Rechtschreibung, Umlaute, Markdown. Umfang: Abschnitte über 120 % ihres Richtwerts aus der Gliederung (`(kurz)` ≈ 800, ohne Angabe ≈ 1.300, `(lang)` ≈ 2.000 Wörter) straffen – zuerst Wiederholungen und Quellenformeln ohne Informationswert, keine Fakten oder Beispiele streichen.
|
||||
5. Wiederhole, bis du keine Fehler mehr findest.
|
||||
|
||||
Ändere nur `buch/{{datei}}`. Arbeitsdateien nur unter `arbeit/pruefung-{{n}}/`. Keine persönlichen Daten an externe Dienste senden.
|
||||
|
||||
@@ -21,7 +21,7 @@ Fließtext, ggf. mit ### Unterabschnitten.
|
||||
|
||||
## N.2 …
|
||||
```
|
||||
Überschriften exakt wie in GLIEDERUNG.md (Nummerierung beibehalten). Umfang je Abschnitt ca. 1.000–2.000 Wörter, je Kapitel ca. 5.000–10.000 Wörter. Lieber substanziell als aufgebläht.
|
||||
Überschriften exakt wie in GLIEDERUNG.md (Nummerierung beibehalten, ohne das Gewicht `(kurz)`/`(lang)`). Der Richtwert je Abschnitt steht in der Gliederung: `(kurz)` ≈ 800 Wörter, ohne Angabe ≈ 1.300, `(lang)` ≈ 2.000; ±20 % sind in Ordnung. Nicht auffüllen: Ist der Stoff erschöpft, ist der Abschnitt fertig. Abweichungen über 20 % im Bericht begründen.
|
||||
|
||||
## Korrektheit
|
||||
- Jede Tatsachenangabe (Name, Jahr, Zahl, Bezeichner, Signatur, Versionsangabe, Studienergebnis) muss gegen die im Abschnitt „Quellen und Prüfung“ genannten Quellen geprüft sein. Nichts aus dem Gedächtnis übernehmen, ohne es zu prüfen; was sich nicht belegen lässt, vorsichtiger formulieren oder weglassen.
|
||||
|
||||
Reference in New Issue
Block a user