Nach jedem fertigen Lauf und beim Start nachholend; QUELLEN.md bleibt. Löschen und Zurücksetzen räumen das Archiv mit. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
35 lines
1.9 KiB
Markdown
35 lines
1.9 KiB
Markdown
# buchwerk
|
||
|
||
Aus einem Thema (plus optionaler Spezialisierung, die es eingrenzt, und optionalen Hinweisen) entsteht ein deutschsprachiges Sachbuch. Ein Python-Backend
|
||
steuert Agenten des Claude Agent SDK (Opus 5.5): Recherche und Deutung, Stoffauswahl (was kommt rein, wie tief), Gliederung, Kapitel parallel
|
||
schreiben, jedes Kapitel durch einen unabhängigen Agenten prüfen, Querverweise abgleichen, Vorwort,
|
||
Montage (Markdown, README, PDF). Das Buch wird im Browser als Leseansicht gezeigt.
|
||
|
||
```bash
|
||
make install # venv + npm
|
||
make build # Frontend bauen
|
||
make run # http://localhost:8020
|
||
```
|
||
|
||
Auth lokal: der Agent SDK nutzt den Claude-Code-Login des Rechners (oder ANTHROPIC_API_KEY, falls gesetzt).
|
||
|
||
Produktion (Docker, Traefik-Netz `web`, https://buchwerk.marha.de):
|
||
|
||
```bash
|
||
cp .env.example .env # CLAUDE_CODE_OAUTH_TOKEN eintragen (claude setup-token) oder ANTHROPIC_API_KEY
|
||
make prod # docker compose up -d --build
|
||
make logs / make stop
|
||
```
|
||
|
||
`storage/` und `.claude-data/` (Sitzungen der CLI) werden als Volumes eingebunden; die Claude-Code-CLI
|
||
liegt als Binary im SDK, Node wird im Container nicht gebraucht.
|
||
|
||
Archiv: ist `ARCHIV_DIR` in `.env` gesetzt (auf dem Server die Storage Box, Mount mit `uid=1000`, da der Container als
|
||
`app` schreibt), verschiebt `backend/archiv.py` nach jedem fertigen Lauf `quellen/` (außer QUELLEN.md) und `arbeit/`
|
||
der Version dorthin – das sind die Gigabytes an Klonen. Beim Start holt er nach, was fehlt. Ohne Variable bleibt alles in `storage/`.
|
||
|
||
Ablauf (backend/pipeline.py): Stufen seriell, innerhalb einer Stufe bis zu `PARALLEL` Agenten gleichzeitig.
|
||
Jeder Agent arbeitet im Themenverzeichnis `storage/<Thema>/`; sein Abschlussbericht landet unter `berichte/`
|
||
und dient als Marker: existiert der Bericht, gilt die Aufgabe als erledigt. Pause bricht laufende Agenten
|
||
ab, „Fortsetzen“ wiederholt nur, was noch fehlt. Prompts liegen in `prompts/`, Schnittstelle in `API.md`.
|