SourceTrace
SourceTrace prüft einen KI-generierten Wissensbaum gegen die zugrunde liegenden Quellbilder und erklärt jedes Problem mit nachvollziehbaren Belegen. Der Nutzer muss niemals einen Befund blind glauben: Jeder Befund gibt an, warum es ein Problem ist, wo das Quellmaterial zu finden ist (Seite und Zitat) und worauf er sich stützt (Evidenz-IDs).
Ein einfaches Modell kann die Fehler meist erkennen. Was SourceTrace hinzufügt, ist, dass das Ergebnis überprüfbar ist: Jeder Knoten und jede Kante erhält eine Bewertung, jede Bewertung zitiert Belege, Kategorien und Risikostufen sind festgelegt, und die Ausgabe hat immer die gleiche Form.
Eingaben
- Quellbilder: PNG/JPG, ein Bild pro Seite (z. B. als Bilder exportierte Folien). Sie sind die einzige Quelle der Wahrheit. Wenn der Nutzer eine PPT oder PDF hat, bitten Sie ihn, diese zuerst in Bilder zu exportieren.
- Wissensbaum: JSON gemäß
schemas/knowledge-tree.schema.json(Knoten mitid,label,definition,kind; Kanten mitid,source,target,relation). Wenn der Baum ein anderes Format oder andere Beziehungsnamen verwendet, konvertieren Sie ihn zuerst und teilen Sie dem Nutzer mit, was Sie gemappt haben.
Pfade wie scripts/…, schemas/… und references/… sind relativ zum Ordner dieses Skills.
Ausgaben
Schreiben Sie alle Dateien in einen Ausgabeordner, standardmäßig sourcetrace-output/ neben dem Wissensbaum:
| Datei | Schritt | Inhalt |
|---|---|---|
evidence-index.json | 2 | Jedes aus den Bildern extrahierte Beweisstück (Sie schreiben es) |
audit.json | 4–6 | Eine Bewertung für jeden Knoten und jede Kante, plus Auslassungen (Sie schreiben die Beurteilungen; das Skript vervollständigt sie) |
report.md | 6 | Der menschenlesbare Bericht (generiert von scripts/build_report.py; schreiben Sie ihn nicht selbst) |
Ändern Sie niemals den Wissensbaum des Nutzers. SourceTrace berichtet und empfiehlt; der Nutzer entscheidet.
Arbeitsablauf
Führen Sie die sechs Schritte der Reihe nach aus. Springen Sie nicht vor zur Bewertung des Baums, bevor der Evidenzindex existiert: Die Prüfung gegen einen Index – und nicht gegen Ihren Eindruck der Folien – ist es, was die Befunde nachvollziehbar macht.
1. Quellenerfassung
python scripts/validate_input.py --tree <knowledge-tree.json> --images <Bildordner oder -dateien> --json
- Fehler (
"valid": false): Stoppen Sie, zeigen Sie dem Nutzer die Fehler in Klartext an und bitten Sie ihn, die Eingabe zu korrigieren. Prüfen Sie keinen ungültigen Wissensbaum. - Warnungen (z. B.
DISCONNECTED_TREE,ISOLATED_NODE,DUPLICATE_EDGE): Fahren Sie fort.build_report.pyfügt sie in den Abschnitt „Struktur“ des Berichts ein. summary.imagesgibt jedem Bild seinesource_idundpage. Verwenden Sie diese genau in Schritt 2.
Betrachten Sie dann jedes Bild und notieren Sie seinen Titel, Text, Tabellen und Diagramme.
2. Evidenzextraktion
Erstellen Sie evidence-index.json gemäß references/evidence-extraction.md. Lesen Sie diese Datei vor der Extraktion; kurz gesagt:
- Ein Eintrag pro Folientitel, Aufzählungspunkt, Tabellenzeile und Diagrammbeziehung.
- Zitieren Sie Text wortwörtlich in seiner Originalsprache. Kleine Wortänderungen sind das, was die Prüfung erfassen muss.
- Extrahieren Sie alles, einschließlich Hausaufgaben oder Lesenotizen.
- Setzen Sie
certaintyehrlich;low-Evidenz kann allein keinen Baumeintrag widerlegen.
Validieren Sie ihn dann und beheben Sie jeden Fehler, bevor Sie fortfahren:
python scripts/validate_evidence.py --index <output>/evidence-index.json
3. Wissensmapping
Behandeln Sie den Baum als eine Menge von zu testenden Behauptungen, niemals als Fakt. Teilen Sie ihn auf in:
- Knoten: Sind Bezeichnung und Definition richtig?
- Kanten: Ist die Beziehung zwischen den beiden Knoten richtig? Lesen Sie Kanten als
Quelle Beziehung Ziel.
Prüfen Sie sie getrennt. Ein Knoten kann richtig sein, während eine ihn verwendende Kante falsch ist (und umgekehrt), und jede erhält ihre eigene Bewertung.
Listen Sie für jeden Knoten und jede Kante die Beweisstücke auf, die darauf Bezug nehmen. Durchsuchen Sie den gesamten Index, nicht nur die erwartete Seite: Manche Behauptungen werden erst durch die Kombination zweier Seiten bestätigt oder widerlegt.
4. Bidirektionale Prüfung
- Baum → Quelle: Entscheiden Sie für jeden Knoten und jede Kante, ob die Evidenz sie stützt. Jeder Knoten und jede Kante erhält eine Bewertung, auch die richtigen; das Bestätigen des Richtigen ist Teil des Ergebnisses.
- Quelle → Baum: Gehen Sie den Evidenzindex durch und finden Sie bedeutende Inhalte, die kein Knoten und keine Kante abdeckt.
Befolgen Sie references/audit-rules.md für Bewertungen, was als bedeutend gilt und die Randfälle.
5. Konflikterkennung
Klassifizieren Sie jedes Problem in genau eine Kategorie und vergeben Sie eine Risikostufe. Verwenden Sie die Entscheidungsreihenfolge in references/audit-rules.md: Gehen Sie die Fragen der Reihe nach durch und stoppen Sie beim ersten „Ja“. Wählen Sie keine Kategorie danach, wie sich ein Befund anfühlt; die Reihenfolge sorgt dafür, dass zwei Durchläufe konsistent sind.
| Kategorie | Bedeutung |
|---|---|
conceptual-error | Die Definition eines Knotens widerspricht der Quelle. |
incorrect-relationship | Eine Kante widerspricht der Quelle, auch wenn beide Knoten richtig sind. |
unsupported-expansion | Inhalt nicht in der Quelle gefunden, selbst wenn allgemein wahr. |
overgeneralization | Gestützter Inhalt über das hinaus, was die Quelle sagt, ausgedehnt. |
ambiguous | Zu vage oder unsicher, um zu bestätigen oder abzulehnen. |
omission | Bedeutender Quellinhalt fehlt im Baum. |
6. Prüfbericht
Schreiben Sie Ihre Beurteilungen in audit.json, lassen Sie dann das Skript sie prüfen und den Bericht erstellen. Sie entscheiden; das Skript zählt, nummeriert, sortiert und formatiert. Diese Trennung stellt sicher, dass zwei Durchläufe denselben Bericht erzeugen.
audit.json wie von Ihnen geschrieben (v0.1, Schema schemas/audit.schema.json):
{
"schema_version": "0.1",
"items": [
{ "target": "N001", "verdict": "supported", "evidence": ["EV-002"] },
{ "target": "N002", "verdict": "finding", "evidence": ["EV-008"],
"category": "conceptual-error", "risk": "high",
"reason": "...", "recommendation": "..." }
],
"omissions": [
{ "category": "omission", "tier": "core", "risk": "medium", "evidence": ["EV-016"],
"reason": "...", "recommendation": "..." },
{ "category": "omission", "tier": "core", "risk": "high", "risk_reason": "zentrales Konzept der Vorlesung",
"evidence": ["EV-003"], "reason": "...", "recommendation": "..." }
]
}
items: genau ein Eintrag pro Knoten und Kante des Baums.reason: warum es ein Problem ist, in ein bis zwei Sätzen, mit den exakten abweichenden Wörtern als Zitat.recommendation: eine konkrete Überarbeitung, die innerhalb des Baum-Schemas bleibt (nur erlaubtekind- undrelation-Werte).tier(nur Auslassungen):coreodersupporting, wie inreferences/audit-rules.mddefiniert.risk_reason: nur, wenn das Risiko vom Standard abweicht.- Lassen Sie
summary,structure_warningsundfinding_idweg; das Skript berechnet sie.
Führen Sie dann aus:
python scripts/build_report.py --tree <knowledge-tree.json> --index <output>/evidence-index.json --audit <output>/audit.json
- Fehler: Es wird nichts geschrieben. Korrigieren Sie
audit.jsonund führen Sie es erneut aus, bis es erfolgreich ist. Umgehen Sie die Prüfungen nicht. - Erfolg: Das Skript überschreibt
audit.jsonmitsummary,structure_warningsundfinding_ids (F-001, F-002, … in Berichtsreihenfolge) und schreibtreport.mddaneben. Die Berichtssprache folgt den Folien; übergeben Sie--lang zhoder--lang en, wenn der Nutzer eine andere Sprache wünscht.
Teilen Sie dem Nutzer abschließend mit, wo der Bericht liegt, die Zusammenfassungszahlen und die wichtigsten Probleme in einigen Zeilen. Fügen Sie nicht den gesamten Bericht ein.
Bei ungewöhnlichen Eingaben
- Unleserliches Bild: Extrahieren Sie, was Sie mit
low-Sicherheit können, erwähnen Sie die Seite imreasonder betroffenen Befunde und teilen Sie dies dem Nutzer mit; erfinden Sie keine Inhalte. - Der Baum deckt Material ab, das nicht in den Bildern ist (z. B. wurden nur einige Folien bereitgestellt): Melden Sie diese Elemente als
unsupported-expansionund teilen Sie dem Nutzer mit, dass fehlende Seiten die Ursache sein können. - Sehr große Foliensammlungen oder Bäume: Arbeiten Sie in Schritt 2 Seite für Seite und in Schritt 4 Knoten für Knoten, und schreiben Sie die Ergebnisse während der Arbeit in die Dateien, anstatt alles im Kopf zu behalten.