Überprüfe die Sitzung, die das Problem gelöst hat. Erstelle zwei Dateien: LEARNED.md und learned_quiz.py (ein Terminal-Quiz).
- Sitzung identifizieren. Verwende die letzten Chats, um den Chat zu finden, der zum Problem passt. Wenn mehrere plausibel sind, frage den Benutzer, welcher gemeint ist. Wenn die Sitzung zu einem Projekt gehört, überprüfe auch die anderen Chats in diesem Projekt.
- Lies die gesamte Sitzung, nicht nur eine Zusammenfassung. Notiere, wo der Mensch und die KI jeweils etwas übersehen haben, bevor das Problem gelöst wurde. Notiere auch Konzepte, die der Mensch einfach hinnehmen musste, nach denen er mehr als einmal gefragt hat oder die er falsch verstanden hat: Diese brauchen eine tiefere Betrachtung.
- Recherchiere Links, bevor du schreibst. Finde für jede Erkenntnis mindestens einen Link. Suche für jede menschliche Erkenntnis und jedes Konzept aus Schritt 2 1 bis 3 weiterführende Links, die den Hintergrund von Grund auf erklären. Bevorzuge, in dieser Reihenfolge: offizielle Dokumentationen oder Spezifikationen, Hersteller-App-Notes oder Handbücher, bekannte Tutorials oder Lehrbücher, dann seriöse Blogs oder Q&A. Verwende WebSearch, öffne dann jeden Link mit WebFetch, um zu bestätigen, dass er lädt und den Punkt abdeckt. Entferne jeden Link, der fehlschlägt oder nicht zum Thema gehört. Erfinde niemals eine URL.
- Schreibe LEARNED.md mit diesen Abschnitten, in dieser Reihenfolge:
- Was ist passiert: 3 bis 5 Sätze, plus den Status (gelöst oder nicht). Wenn nicht gelöst, liste die offenen Punkte auf.
- Gelernte Lektionen: aufgeteilt in Mensch, KI und Gemeinsam. Gib für jede Lektion den Punkt, was übersehen wurde, die Lektion in einem Satz und einen Link (Quellenname). Füge unter jeder menschlichen Lektion, die Hintergrundwissen benötigt, eine Unterliste „Tiefer tauchen“ hinzu: jeder Eintrag ist Titel, die Quelle und eine Zeile, was sie lehrt und warum sie hier hilft.
- Testfragen: 3 bis 5 Schlüsselfragen mit dem Titel „Testfragen“, gefolgt von einem Antwortschlüssel. Hinweis: Der vollständige Fragensatz befindet sich in learned_quiz.py.
- Links: jeder verwendete Link, gruppiert nach Lektion, mit Angabe der Quelle. Gib an, dass die Links am Ausführungsdatum überprüft wurden und vor der Verwendung verifiziert werden sollten.
- Vorgeschlagener Ein-Prompt: ein prägnanter Prompt, der die Probleme in dieser Sitzung vermieden hätte.
- Kennzeichne Behauptungen. Markiere unbelegte Behauptungen als unbelegt. Markiere Behauptungen, die aus Suchergebnissen stammen, als berichtet und verlinke die Quelle.
- Präsentiere keine Vermutungen als Ergebnisse. Wenn die Ursache eines Problems nicht bestätigt wurde, sage das.
- Schreibe learned_quiz.py basierend auf der Vorlage unten. Regeln:
- Nur Python 3 Standardbibliothek. Muss auf macOS, Linux und Windows Terminals laufen. Keine GUI.
- Decke jedes Konzept ab, nicht nur die 3 bis 5 Testfragen: mindestens 2 Fragen pro menschlicher Lektion, mindestens 1 pro KI- und gemeinsamer Lektion, plus 1 pro Konzept für tieferes Eintauchen. Typischerweise 10 bis 25 Fragen. Mische Fragen zum Abruf, „Was würdest du zuerst überprüfen“ und „Finde den Fehler“.
- Jede Frage: Thema (Mensch, KI, Gemeinsam oder ein kurzer Konzeptname), 4 Antwortmöglichkeiten mit plausiblen Ablenkern, der korrekte Index, eine 1 bis 2 Sätze lange Begründung und der relevanteste verifizierte Link.
- Fülle nur TITLE, SOURCE und QUESTIONS aus. Ändere nicht die Engine.
- Führe vor dem Senden
python3 -c "import ast,sys;ast.parse(open(sys.argv[1]).read())" learned_quiz.pyund dannpython3 learned_quiz.py --listaus und behebe jeden Fehler. Überprüfe, ob jeder Antwortindex auf die richtige Auswahl zeigt.
- Halte LEARNED.md prägnant. Verwende in keiner der Dateien Gedankenstriche.
- Sende beide Dateien mit SendUserFile. Gib in der Antwort den Ausführungsbefehl an:
python3 learned_quiz.py(Optionen: -r für Karteikarten, -t TOPIC zum Filtern, -n N zum Begrenzen, --list für alle, --seed N für feste Reihenfolge).
Quiz-Vorlage (genau kopieren, die Platzhalter und die Beispielsfrage ersetzen):
#!/usr/bin/env python3
"""LEARNED-Quiz: <THEMA>. Ausfuehrung: python3 learned_quiz.py [-r] [-t THEMA] [-n N] [--list]"""
import argparse, random, sys, textwrap
TITLE = "<THEMA>"
SOURCE = "LEARNED.md, <DATUM>"
QUESTIONS = [
{"topic": "Mensch", "q": "Beispielfrage?",
"choices": ["Richtige Antwort", "Falsch 1", "Falsch 2", "Falsch 3"], "answer": 0,
"why": "Ein oder zwei Saetze zur Begruendung.", "link": "https://example.com"},
]
def wrap(s, ind=" "):
return textwrap.fill(s, 78, initial_indent=ind, subsequent_indent=ind)
def ask(prompt, valid):
while True:
try:
a = input(prompt).strip().lower()
except (EOFError, KeyboardInterrupt):
print(); sys.exit(0)
if a in valid:
return a
def run(qs, review):
missed = []
for i, q in enumerate(qs, 1):
order = list(range(len(q["choices"])))
random.shuffle(order)
letters = "abcdefgh"[:len(order)]
print(f"\n[{i}/{len(qs)}] ({q['topic']})")
print(wrap(q["q"], ""))
for L, idx in zip(letters, order):
print(wrap(f"{L}) {q['choices'][idx]}"))
right = letters[order.index(q["answer"])]
if review:
if ask(" Eingabe zum Anzeigen, q zum Beenden: ", {"", "q"}) == "q":
sys.exit(0)
ok = True
else:
a = ask(f" Antwort [{letters}], q zum Beenden: ", set(letters) | {"q"})
if a == "q":
break
ok = a == right
print(" Richtig." if ok else f" Nicht ganz. Antwort: {right}")
if review or not ok:
print(wrap(f"{right}) {q['choices'][q['answer']]}"))
print(wrap(q["why"]))
if q.get("link"):
print(wrap("Mehr: " + q["link"]))
if not ok:
missed.append(q)
return missed
def main():
p = argparse.ArgumentParser(description=f"Quiz: {TITLE}")
p.add_argument("-r", "--review", action="store_true", help="Karteikarten-Modus, keine Bewertung")
p.add_argument("-t", "--topic", help="nur dieses Thema (Mensch, KI, Gemeinsam, ...)")
p.add_argument("-n", type=int, help="hoechstens N Fragen stellen")
p.add_argument("--list", action="store_true", help="alle Q&A ausgeben und beenden")
p.add_argument("--seed", type=int, help="feste Reihenfolge")
a = p.parse_args()
random.seed(a.seed)
qs = [q for q in QUESTIONS if not a.topic or q["topic"].lower() == a.topic.lower()]
if not qs:
sys.exit(f"Keine Fragen zum Thema {a.topic!r}.")
if a.list:
for i, q in enumerate(qs, 1):
print(f"{i}. ({q['topic']}) {q['q']}\n{wrap('A: ' + q['choices'][q['answer']])}\n{wrap(q['why'])}")
if q.get("link"):
print(wrap("Mehr: " + q["link"]))
return
random.shuffle(qs)
qs = qs[:a.n] if a.n else qs
print(f"{TITLE}\nQuelle: {SOURCE}\n{len(qs)} Fragen.")
while qs:
missed = run(qs, a.review)
if a.review:
break
print(f"\nErgebnis: {len(qs) - len(missed)}/{len(qs)}")
if not missed or ask("Fehlgeschlagene wiederholen? [j/n]: ", {"j", "n"}) == "n":
for q in missed:
print(wrap(f"Wiederholung: {q['q']}", "- ") + ("\n" + wrap(q["link"]) if q.get("link") else ""))
break
qs = missed
if __name__ == "__main__":
main()