Vollständiges Multi-Agenten-System für Fact-Checking, Artikelschreiben und Argumentationsanalyse. Zwei Backends: llama.cpp (★ bevorzugt) und Ollama. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
7.3 KiB
HANDOFF.md — Aktueller Projektstand
Letzte Aktualisierung: 2026-05-12
Session: Vollständige llama.cpp-Pipeline + Writer-Umbenennung
Aktueller Stand: Dual-Backend-System (Ollama + llama.cpp)
Alle P1–P3-Features implementiert. Zusätzlich vollständige llama.cpp-Pipeline für Reasoning-Modelle (Qwopus/Qwen3), die Ollama-Timeout-Probleme bei Thinking-Modellen umgeht.
Naming-Convention: ollama-<agent>.ts (Ollama-Backend) / llama-<agent>.ts (llama.cpp-Backend, ★ BEVORZUGT).
Zuletzt erledigt (2026-05-12)
Vollständige llama.cpp-Pipeline implementiert
llama-claim-extractor.ts— Pi-Tool:extract_claims_llamallama-verifier.ts— Pi-Tool:verify_claim_llama★ BEVORZUGTllama-verify-article.ts— Pi-Tool:verify_article_llamallama-writer.ts— Pi-Tool:write_article_llama★ BEVORZUGT- Alle llama.cpp-Agenten: Schema im System-Prompt,
/no_think-Prefix,reasoning_content-Fallback, Retry 3×/15s
Umbenennungen
writer.ts→ollama-writer.tsverify-article.ts→ollama-verify-article.ts
Deployment
- Alle Symlinks in
~/.pi/agent/extensions/fact-checker/aktualisiert package.json: 9 Extensions (4 Ollama + 4 llama.cpp + logic-editor)- AGENTS.md, README.md, HANDOFF.md, TODO.md, WORKLOG.md aktualisiert
- Git: 47 Dateien committed (Branch: master)
Zuletzt erledigt (2026-04-17)
Standard-Modell für Claim-Extraktion auf qwen3.5:9b gesetzt
- ollama-claim-extractor.ts —
DEFAULT_MODELvonqwen3.5:27baufqwen3.5:9bgeändert - Präzision: 8/9 Claims vs. 9/9 (27B) — minimaler Verlust
- Geschwindigkeit: 2× schneller (96 s vs. 205 s bei Apollo-11-Text)
- VRAM: 6.6 GB statt 17 GB — vollständig in VRAM, kein CPU-Offloading
- Kommentar in Header aktualisiert: Empfehlung qwen3.5:9b (6.6 GB, 1 GPU, fast gleiche Präzision wie 27B, 2× schneller)
- TypeBox-Parameter: Beschreibung ergänzt "Empfohlene Alternative: qwen3.5:27b für maximale Präzision"
Zuletzt erledigt (P3-Session — 2026-04-16)
lib/cache.ts — neu (globaler Perplexity-Claim-Cache)
- SHA256 des normalisierten Claim-Texts als Cache-Key
- Ablageort:
~/.pi/agent/cache/perplexity/<sha256>.json, TTL 7 Tage getCached<T>(claimText)/setCached<T>(claimText, data)— fehlertolerantpruneCache()— abgelaufene Einträge löschencacheStats()— {total, expired, sizeBytes}- Integriert in
verify-article.ts: prüft globalen Cache vor Job-Cache und Perplexity-Aufruf --no-cacheCLI-Flag inverify-article.tsum Cache zu umgehen
tests/corpus/ — 10 Testfälle
Themen: Inflation DE, EZB-Zins, Mondlandung, Bevölkerung DE, Erneuerbare Energien, Bitcoin ATH, COVID-Impfstoff, Bundeshaushalt, Klimaabkommen, Weltbevölkerung.
- Fehler-Fälle (erwartetes
contradicted): 001, 002, 004, 005, 006, 008 - Negativtests (nur korrekte Fakten, kein False-Positive erwartet): 003, 007, 009, 010
tests/run_corpus.sh — Test-Runner
- Führt alle 10 Fälle durch
verify-article --json, vergleicht mitexpected.json - Berechnet Precision + Recall für
contradicted-Urteile, TP/FP/FN/TN - Selektiver Aufruf:
bash tests/run_corpus.sh case_001 case_002 - Reports in
tests/results/<timestamp>/, Summary alssummary.txt
Früher erledigt (P1/P2-Sessions)
lib/jobs.ts
Persistente Job-Verzeichnisse ~/.pi/agent/jobs/<datum>_<slug>/ — Resume-Logik für abgebrochene Pipelines.
lib/logger.ts
File-Logger ~/.pi/agent/logs/, --verbose-Flag in allen CLI-Tools.
Chunking + Retry (ollama-claim-extractor.ts)
Texte >4000 Zeichen → Chunks ≤3000 (Absatzgrenzen), 3 Retries à 15s bei fetch failed.
Bekannte Einschränkungen
| Problem | Ursache | Status |
|---|---|---|
| Chunking-Laufzeit ~4 min/Chunk | qwen3.5:27b auf 1 GPU | erwartet, kein Bug |
| Erste Ollama-Anfrage nach Inaktivität ~200s | Modell-Ladezeit | OLLAMA_KEEP_ALIVE noch nicht gesetzt |
fetch failed Ollama + Thinking-Modell + format: |
qwen3.5:27b verbraucht Kontext-Budget im Thinking-Modus | GELÖST: llama-writer.ts verwenden |
fetch failed bei manuellem Ollama-Neustart |
Verbindung unterbrochen | Retry-Logik fängt das ab (3×15s) |
| Nur 1 GPU genutzt (GPU 2 idle) | Ollama kennt nur GPU 1 | CUDA_VISIBLE_DEVICES noch nicht gesetzt |
Offene Punkte
Nutzer-Aktion erforderlich: OLLAMA_KEEP_ALIVE + Dual-GPU
sudo systemctl edit ollama
# Einfügen unter [Service]:
# Environment="OLLAMA_KEEP_ALIVE=-1"
# Environment="CUDA_VISIBLE_DEVICES=1,2"
# Environment="OLLAMA_NUM_PARALLEL=2"
sudo systemctl daemon-reload && sudo systemctl restart ollama
Effekt: Modell bleibt geladen (keine 200s Wartezeit), beide RTX 3090s genutzt (48 GB VRAM → größere Modelle möglich).
Wichtige Pfade
| Was | Pfad |
|---|---|
| Projekt | ~/Pi_Agent_Projekts/text_agent/ |
| Pi Extensions | ~/.pi/agent/extensions/fact-checker/ |
| Lib-Symlink | ~/.pi/agent/extensions/lib → ~/Pi_Agent_Projekts/text_agent/lib |
| Standalone research-web | ~/.pi/agent/extensions/research-web.ts |
| Job-Verzeichnisse | ~/.pi/agent/jobs/<datum>_<slug>/ |
| Log-Dateien | ~/.pi/agent/logs/<timestamp>.log |
| Perplexity-Cache | ~/.pi/agent/cache/perplexity/<sha256>.json |
| Testkorpus | ~/Pi_Agent_Projekts/text_agent/tests/corpus/ |
GPU-Setup
GPU 0 T600 4 GB → Display
GPU 1 RTX 3090 24 GB → Ollama (nur diese, CUDA_VISIBLE_DEVICES noch nicht gesetzt)
GPU 2 RTX 3090 24 GB → idle (ungenutzt!)
Modelle aktuell auf GPU 1:
qwen3.5:27b— 22 GB, für Extraktion + Verifikation + Schreibendeepseek-r1:32b— 19 GB, für Argumentationsanalyse (logic-editor)
Mit CUDA_VISIBLE_DEVICES=1,2 hätte Ollama 48 GB → könnte 70B-Modelle laden.
Umgebungsvariablen
| Variable | Zweck | Status |
|---|---|---|
PERPLEXITY_API_KEY |
Perplexity Sonar API | gesetzt ✓ |
OPENROUTER_API_KEY |
Cloud-Modelle via OpenRouter | gesetzt ✓ |
OLLAMA_KEEP_ALIVE |
Modell im Speicher halten | nicht gesetzt |
CUDA_VISIBLE_DEVICES |
Welche GPUs Ollama nutzt | nicht gesetzt (nur GPU 1) |
OLLAMA_NUM_PARALLEL |
Parallele Anfragen | nicht gesetzt |
ROUTER_FORCE_LOCAL=1 |
Immer lokales Modell | optional |
ROUTER_FORCE_CLOUD=1 |
Immer OpenRouter | optional |
Getestete Workflows
# llama.cpp-Pipeline ★ BEVORZUGT (kein Ollama-Timeout bei Thinking-Modellen)
npx tsx agenten/llama-claim-extractor.ts "Textinhalt..."
npx tsx agenten/llama-verifier.ts "Die EZB hat den Leitzins im Juni 2024 gesenkt."
npx tsx agenten/llama-verify-article.ts --job-id mein-artikel "$(cat artikel.txt)"
npx tsx agenten/llama-writer.ts --from-job mein-artikel --style blog
# Ollama-Pipeline (Fallback oder explizit gewünscht)
npx tsx agenten/ollama-claim-extractor.ts --verbose "$(cat ~/Dokumente/Umerziehung.md)"
npx tsx agenten/ollama-verify-article.ts --job-id mein-artikel --verbose "$(cat artikel.txt)"
npx tsx agenten/ollama-writer.ts --from-job mein-artikel --style blog
# Argumentationsanalyse
npx tsx agenten/logic-editor.ts --only-fallacies "Argumentativer Text..."
# Testkorpus ausführen
bash tests/run_corpus.sh # alle 10 Fälle
bash tests/run_corpus.sh --mode deep # mit sonar-pro
bash tests/run_corpus.sh case_001 case_002 # selektiv