Praxisprojekt Second Brain · Agenten
Zeitpläne
Lernziele
- Du legst für Import, Verlinken, Lint, Rückblick und Kennzahlen einen passenden Takt fest.
- Du richtest einen täglichen Import als lokale Aufgabe in Claude Desktop oder per launchd mit
claude -pein. - Du prüfst, ob jeder Lauf Log-Eintrag, Commit und Bericht liefert, und erkennst einen Lauf, der still nichts tut.
Mit geplanten Läufen fühlt sich der Vault lebendig an. Du wachst auf, und er hat abgelegt, was du gestern gespeichert hast, einen Widerspruch bemerkt und dir drei Zeilen zu den Änderungen hinterlassen.
Geplante Läufe sind auch Schreibzugriffe auf deine Notizen, bei denen niemand zusieht. Die Reihenfolge zählt deshalb: Erst richtest du die Leitplanken ein, dann den Zeitplan.
Takt je Aufgabe
Import, täglich. Über Nacht, mit allem, was sich tagsüber in raw/ gesammelt hat. Ein täglicher Stapel gibt dem Agenten die Chance, zu bemerken, dass drei gespeicherte Dinge dieselbe Idee betreffen. Ein stündlicher Lauf sieht immer nur ein Stück.
Verlinken, wöchentlich. Verbindungen brauchen Material, das sich verbinden lässt. Lass den Linker nach einer Woche Import laufen.
Lint, wöchentlich. Nach dem Linker, damit er findet, was dieser Durchgang kaputt gemacht hat.
Rückblick, wöchentlich. Das eine Ergebnis, das du wirklich liest. Leg ihn auf den Morgen, an dem du deine Woche planst.
Kennzahlen, monatlich. Vier Zahlen, an eine Notiz angehängt. Welche Zahlen das sind, steht in Kennzahlen, die sich lohnen.
Wie oft läuft der Job?
Ordne jeden Job seinem Takt zu.
Noch offen (5)
- Neues aus raw/ in Wiki-Seiten verwandeln
- Fehlende Links zwischen bestehenden Seiten setzen
- Kaputte Links und fehlendes Frontmatter finden
- Den Rückblick schreiben, den du liest
- Waisenquote und Links pro Seite festhalten
Täglich (0)
Wöchentlich (0)
Monatlich (0)
Einen Lauf einrichten
Für einen Vault auf deinem Rechner gibt es zwei Wege: eine lokale Aufgabe in Claude Desktop oder einen Job im Betriebssystem, der Claude Code ohne Oberfläche startet.
In Claude Desktop
Öffne im Tab Code die Seite Scheduled und klicke auf New task. Ältere Versionen nennen dieselbe Seite Routines mit dem Knopf New routine. Gib einen Namen und die Anweisung ein, schalte unter Advanced settings die Option Only on this computer ein, wähle unter Local folder deinen Vault und unter Trigger den Takt. Zur Wahl stehen Hourly, Daily, Weekdays und Weekly (Stand: Nov. 2026).
Takt: Daily, 7:00
Ordner: dein Vault
Anweisung: File anything new in raw/ into the wiki following CLAUDE.md.
Link it to existing pages. Update index.md and log.md. Commit
with a message naming the run. Then write me three lines on
what changed, with counts.
Du kannst auch in einer Desktop-Session darum bitten: „Richte eine tägliche Aufgabe um 7 Uhr ein, die raw/ importiert und zusammenfasst, was sich geändert hat.“ Daraus entsteht dieselbe lokale Aufgabe.
Eine lokale Aufgabe läuft nur, solange die App offen ist und der Rechner wach ist. Verschläft der Rechner einen Termin, startet Desktop beim Aufwachen genau einen Nachholauf für den letzten verpassten Termin der vergangenen sieben Tage. Ältere verpasste Läufe verfallen. Jede Aufgabe hat ihren eigenen Berechtigungsmodus. Für einen Import, der Seiten schreibt, ist das Accept edits.
Über das Terminal
Ein Job im Betriebssystem ruft Claude Code mit claude -p auf. Der Schalter startet einen Lauf ohne Oberfläche, der nach getaner Arbeit endet. Nach unserer Einschätzung ist das der bessere Weg, wenn du jeden Lauf zuverlässig als eigenen Commit haben willst. Leg dafür ein kleines Skript an, etwa ~/brain-ingest.sh:
#!/bin/zsh
cd ~/brain || exit 1
~/.local/bin/claude -p "File anything new in raw/ into the wiki following CLAUDE.md. Link it to existing pages. Update index.md and log.md. Commit with a message naming the run. Then write me three lines on what changed, with counts." \
--setting-sources project,local \
--permission-mode acceptEdits \
--allowedTools "Bash(git add *),Bash(git commit *)" \
--permission-prompts none \
--max-turns 30 \
--max-budget-usd 1 \
< /dev/null >> ~/Library/Logs/brain-ingest.log 2>&1
Das cd ist Pflicht, denn ein Job startet nicht in deinem Vault, und Claude Code arbeitet im Ordner, aus dem es gestartet wird. Den Pfad zu claude schreibst du aus, weil ein Job deinen gewohnten Suchpfad nicht kennt. ~/.local/bin/claude ist der Ort, an den der Installer von Anthropic das Programm legt. which claude zeigt dir den Pfad auf deinem Rechner.
Die Schalter begrenzen den Lauf:
--setting-sources project,locallädt nur die Einstellungen aus dem Vault. Deine persönlichen Regeln, Hooks und Erweiterungen aus~/.claudebleiben draußen. Warum das zählt, zeigt die Lektion Leitplanken.--permission-mode acceptEditserlaubt Dateiänderungen im Vault ohne Rückfrage.--allowedToolsgibt genau zwei Shell-Befehle frei,git addundgit commit.--permission-prompts nonelehnt alles ab, was sonst eine Rückfrage auslösen würde, und sagt Claude, dass niemand antworten kann. Den Schalter gibt es ab Claude Code 2.1.259.--max-turnsund--max-budget-usdsetzen Obergrenzen für Runden und Kosten. Die Kostengrenze prüft Claude Code gegen eine eigene Schätzung, sie kann leicht überschritten werden.
Auf dem Mac startet launchd das Skript. Apple führt cron als veraltet. Ein launchd-Job mit StartCalendarInterval holt einen Termin nach, den der Mac verschlafen hat. cron lässt ihn ausfallen. Speichere diese Datei als ~/Library/LaunchAgents/local.brain.ingest.plist und ersetze DEINNAME:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>local.brain.ingest</string>
<key>ProgramArguments</key>
<array>
<string>/bin/zsh</string>
<string>/Users/DEINNAME/brain-ingest.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>7</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
</dict>
</plist>
Mit launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/local.brain.ingest.plist meldest du den Job an. launchctl kickstart gui/$(id -u)/local.brain.ingest startet ihn sofort zum Testen. Unter Linux übernimmt cron diese Rolle. Unter Windows legst du eine Aufgabe in der Aufgabenplanung an und setzt im Reiter Settings die Option „Run task as soon as possible after a scheduled start is missed“.
Lokale Aufgabe in Claude Desktop
- Einrichten: ein Formular oder ein Satz in einer Session
- Läuft: nur bei offener App und wachem Rechner, ein Nachholauf beim Aufwachen
- Nachsehen: Liste History auf der Seite der Aufgabe, jeder Lauf öffnet sich als Session
- Gut für: den Einstieg ohne Terminal
launchd oder cron mit claude -p
- Einrichten: Skript und Job-Datei
- Läuft: ohne offene App, launchd holt verschlafene Termine nach
- Nachsehen: deine Logdatei und
git log - Gut für: feste Grenzen per Schalter und einen Commit pro Lauf
Was ein Lauf liefern muss
Drei Dinge, jedes Mal.
Einen Log-Eintrag. Ohne ihn kannst du nicht nachprüfen, was passiert ist, während du geschlafen hast.
Einen Commit. Einer pro Lauf, mit dem Lauf in der Commit-Nachricht. So machst du einen schlechten Lauf mit einem Befehl rückgängig.
Einen Bericht an dich. Eine Zeile reicht. Einer geplanten Aufgabe, die nichts Sichtbares hinterlässt, traust du bald nicht mehr, und dann liest du ihre Ergebnisse nicht mehr.
Wir haben das Skript oben mit Claude Code 2.1.322 und dem Modell Haiku in einem Test-Vault laufen lassen, in dem schon zwei Konzeptseiten lagen. In raw/ wartete eine neue Quelle. Der Lauf brauchte 13 Runden und kostete laut Claude Code rund 0,02 US-Dollar (Stand: Nov. 2026):
- DuFile anything new in raw/ into the wiki following CLAUDE.md. … Commit with a message naming the run. Then write me three lines on what changed, with counts.
Stille Fehlschläge erkennen
Der typische Fehler ist ein Lauf, der sauber endet und nichts Brauchbares tut: Die Quelle war leer, der API-Aufruf ist auf halbem Weg gescheitert, die Anweisungen haben keine Datei getroffen.
Zwei günstige Prüfungen helfen. Lass den Lauf Zahlen berichten. Dann siehst du „0 Quellen importiert“. Und schau einmal im Monat auf die Commits der Läufe:
git log --since="30 days ago" --grep="ingest" --format="%ad %s" --date=short
Fehlen in einer Woche die Commits des täglichen Imports, scheitert er seit Tagen still.
Erst von Hand
Lass jeden Job eine Woche lang von Hand laufen, bevor du ihn einplanst. Du prüfst dabei, ob das Ergebnis gut genug ist, um es ohne genaues Lesen anzunehmen. Genau das bedeutet ein Zeitplan. In Claude Desktop startet Run now eine Aufgabe sofort. Gib dabei jede Rückfrage mit „always allow“ frei, damit spätere Läufe nicht an ihr hängen bleiben.
Plane den Import zuletzt ein. Er schreibt am meisten.
Merksätze
- Import täglich, Verlinken, Lint und Rückblick wöchentlich, Kennzahlen monatlich.
- Für einen lokalen Vault planst du in Claude Desktop mit Only on this computer oder per launchd, cron oder Aufgabenplanung mit
claude -p./scheduleim Terminal läuft in der Cloud ohne deine Dateien. - Im Skript begrenzen
--setting-sources,--permission-mode,--allowedTools,--permission-prompts none,--max-turnsund--max-budget-usdden Lauf. - Jeder Lauf liefert Log-Eintrag, Commit und einen Bericht mit Zahlen.
- Fehlende Commits eines täglichen Jobs verraten einen stillen Fehlschlag. Jeder Job läuft erst eine Woche von Hand.
Prüf dich selbst
Denkfrage
Dein täglicher Import meldet seit einer Woche „fertig“, aber im Wiki ist nichts Neues. Wie hättest du das früher gemerkt?
Mit einem Bericht, der Zahlen nennt: „0 Quellen importiert“ fällt sofort auf. Dazu ein Blick auf die Commits der Läufe. Fehlen sie oder ändern sie nichts, scheitert der Job still.
Denkfrage
Warum schreibt das Skript zuerst cd ~/brain, bevor es claude aufruft?
Ein Job von launchd oder cron startet nicht in deinem Vault. Claude Code arbeitet im Ordner, aus dem es gestartet wird. Ohne das cd sieht der Lauf weder raw/ noch die CLAUDE.md.
Prüf dich selbst
Quellen
- Schedule recurring tasks in Claude Code Desktop
Scheduled, New task, Only on this computer, ein Nachholauf aus den letzten sieben Tagen, History.
- Automate work with scheduled tasks
Cloud-Aufgaben über /schedule, ohne Zugriff auf lokale Dateien.
- Run Claude Code programmatically
claude -p, --allowedTools, --permission-mode, --permission-prompts none.
- CLI reference
--max-turns und --max-budget-usd.
- Scheduling Timed Jobs
launchd statt cron, StartCalendarInterval holt verschlafene Termine nach.
- TaskSettings.StartWhenAvailable
Verpasste Aufgaben nachholen.