Training-Harness (ACO, Multi-Fidelity), Prüfstand-Benchmark, Agenten-README

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
team3
2026-07-04 12:47:19 +02:00
parent 8d8f6c8e51
commit 8488737303
14 changed files with 772 additions and 267 deletions

59
backend/train_f0.py Normal file
View File

@@ -0,0 +1,59 @@
"""Fidelity 0 des Trainers: Fake-E2E-Lauf im Subprozess — Sekunden, null Tokens.
Misst mit den CREATOR_PARAMS des Kandidaten: (a) halten die Invarianten? (b) wie viele
Agenten-Calls erzeugt die Struktur (Proxy für Tokens/Laufzeit)? Unsinnige Kandidaten
fallen hier raus, bevor ein echter Lauf Geld kostet.
CLI: python3 train_f0.py <ausgabe.json> (CREATOR_PARAMS im ENV)
"""
import asyncio
import json
import sys
import tempfile
import time
from pathlib import Path
# WICHTIG: config (mit CREATOR_PARAMS) lädt vor allen Pipeline-Modulen
import database
from fake_agents import Welt, aktivieren
from fsutil import atomic_write_json
async def f0(out: str) -> None:
tmp = Path(tempfile.mkdtemp(prefix="train-f0-"))
database.DB_PATH = tmp / "f0.db"
database._db = None
await database.init_db()
welt = Welt()
aktivieren(welt)
import board_inventory as bi
import qa
qa.QA_DIR = tmp / "qa"
from pipeline import GenContext
work = tmp / "arbeit"
work.mkdir()
files = {"arbeit": work, "final": tmp / "blocks.md",
"sub_roh": tmp / "sub_roh.json", "sidecar": tmp / "subblocks.json",
"facts": tmp / "facts.json", "question_pattern": tmp / "question_pattern.json",
"artefakte": tmp / "artefakte.json", "outline": tmp / "outline.json",
"outline_slots": [tmp / f"outline-{i}.json" for i in (1, 2, 3)],
"research": [work / f"research-{i}.md" for i in (1, 2, 3, 4, 5)]}
ctx = GenContext(topic="f0", provider="claude", is_cancelled=lambda: False)
start = time.monotonic()
ok = await asyncio.wait_for(
bi.run_boards(ctx, lambda *a, **k: None, files, {"type": "thema"}, None, "",
research=True, qa_force=True), timeout=180)
from tests.invarianten import pruefe_invarianten
fehler = await pruefe_invarianten("f0", files)
atomic_write_json(Path(out), {
"ok": bool(ok), "invarianten_fehler": fehler, "calls": len(welt.calls),
"dauer_s": round(time.monotonic() - start, 1)}, indent=1)
await database.close_db()
if __name__ == "__main__":
if len(sys.argv) != 2:
raise SystemExit("Nutzung: python3 train_f0.py <ausgabe.json>")
asyncio.run(f0(sys.argv[1]))