Harness MaxxingDoku
📚 Alle Seiten

💬 Harness Maxxing nutzen · 5 Min. Lesezeit

⏰Geplante Jobs (Crons)

Die Seite Crons führt Dinge nach Zeitplan aus: einen Shell-Befehl oder einen Harness-Prompt in einem Topic. Jeder Lauf wird aufgezeichnet (Status, Dauer, Ausgabe) und kann über Telegram gemeldet werden.

Einen Job erstellen

Klicke auf Neuer Job und fülle Folgendes aus:

Feld Bedeutung
Name kurze Bezeichnung
Zeitplan Cron-Ausdruck; der Editor zeigt ihn in Worten an und listet die nächsten Läufe auf
Typ Shell (ein Befehl, der mit bash ausgeführt wird) oder Claude (ein Prompt, der an eine Sitzung in einem Topic gesendet wird)
Befehl Shell: z. B. /root/maxxing/projects/acme/scripts/report.sh
Topic, Prompt, Modell Claude: wo die Sitzung läuft, was zu tun ist, welches Modell verwendet wird
Sitzung wiederverwenden Claude: eine einzige Sitzung über mehrere Läufe hinweg behalten (sie sammelt Kontext an), statt jedes Mal eine neue Sitzung zu starten
Benachrichtigen Telegram-Bericht: nie, bei Fehler (Standard), immer
Timeout maximale Dauer (Standard 1 Stunde)

Jetzt ausführen startet einen Job sofort. Der Verlauf zeigt die letzten Läufe mit dem Ende ihrer Ausgabe; bei Claude-Jobs öffnet ein Link die Sitzung.

Zeitplan-Syntax

Fünf Felder: minute hour day-of-month month day-of-week.

Ausdruck Läuft
0 7 * * * jeden Tag um 07:00 Uhr
*/15 * * * * alle 15 Minuten
30 8 * * 1-5 werktags um 08:30 Uhr
0 9 1 * * am 1. jedes Monats um 09:00 Uhr
0 */6 * * * alle 6 Stunden
@daily, @hourly, @weekly, @monthly, @reboot Kurzformen

Zeitzone

Der Cron-Daemon startet Jobs in der Systemzeitzone des Servers, während die Oberfläche (Zeitplan-Vorschau, nächste Läufe, Verlauf) die Zeitzone aus Einstellungen -> Allgemein verwendet. Beide müssen gleich sein, sonst läuft ein Job, der „um 07:00" angezeigt wird, zu einer anderen Uhrzeit. Auf einem frischen Server wird die Zone, die du beim Onboarding (oder unter Einstellungen -> Allgemein) wählst, auch zur Systemzone; maxxing doctor warnt, wenn sie sich unterscheiden.

Auf einem Server, der bereits genutzt wird (andere geplante Jobs, andere Dienste), behält der Installer die Serveruhr (system_clock = keep in der Konfiguration): Harness Maxxing schreibt dann die Crontab-Zeile jedes Jobs so, dass sie jede Stunde zu den passenden Minuten auslöst, und maxxing cron run <id> --if-due prüft den Zeitplan in deiner Zeitzone, bevor der Job läuft. So laufen die Jobs weiterhin zu den Zeiten, die du siehst, auch bei Sommerzeit, und die anderen Programme behalten ihre Uhr. Wechseln kannst du mit maxxing init --system-clock keep|follow.

Um die Systemzone von Hand zu ändern (Modus follow):

timedatectl set-timezone Europe/Paris && systemctl restart cron
maxxing init --timezone Europe/Paris && systemctl restart claude-maxxing

Integrierte Jobs

  • Memory-Verdichtung – täglich 05:00 Uhr, Claude-Job mit dem Skill memory-compaction (bei der Installation erstellt, aktiviert, wenn du das Onboarding mit angemeldetem Claude abschließt – so schlägt er nie fehl, bevor Claude verbunden ist; wenn du diesen Schritt übersprungen hast, aktiviere ihn auf der Seite Crons; du kannst ihn bearbeiten, deaktivieren oder löschen).
  • Memory-Backup – wird erstellt, wenn du das Backup einrichtest (Standard 04:40 Uhr).
  • Nach Updates suchen – montags 09:00 Uhr, Shell-Job maxxing update --check --notify: Wenn eine neue Version existiert, sagt dir eine Telegram-Nachricht, dass du das Topic system/harness öffnen (system/update auf Servern, die vor 2.0.0a33 installiert wurden) und „update" sagen sollst. Er aktualisiert nie von selbst. Auf einem Server ohne Git-Remote und ohne Lizenz (eine lokale Kopie) wird er deaktiviert erstellt (es gibt nichts zu prüfen); maxxing update --check meldet dann „updates unavailable (no git remote)".
  • Morgenaufgaben (deaktiviert) – täglich 08:00 Uhr, Claude-Job in general/inbox (system/tasks vor 2.0.0a33): überfällige und heutige Aufgaben, per Telegram gesendet. Aktiviere ihn auf der Seite Crons.
  • Erinnerung zur Verlängerung – wird erstellt, wenn du Erinnerungen für Abonnements anforderst (montags 09:30 Uhr, in dem Topic, das accounts.md führt); auf Servern, die vor 2.0.0a33 installiert wurden, ist er in system/accounts deaktiviert.
  • Starterprojekte bringen eigene Jobs mit, die deaktiviert erstellt werden.

Integrierte Jobs werden einmalig erstellt, bei der Installation (oder durch das Update, das sie eingeführt hat); ein Job, den du löschst, wird nie neu erstellt. Bei der Benachrichtigung „immer" enthält der Bericht die Ausgabe des Jobs (die Antwort eines Claude-Jobs), sodass eine Erinnerung als gut lesbare Nachricht ankommt.

So funktioniert es

Jeder aktivierte Job wird zu einer Zeile in der Crontab von root, innerhalb eines Blocks, den Harness Maxxing verwaltet:

# >>> claude-maxxing (managed) >>>
0 5 * * * MAXXING_CRON_DETACH=1 /usr/local/bin/maxxing cron run c_3fa91c >/dev/null 2>&1
# <<< claude-maxxing <<<

Zeilen außerhalb des Blocks gehören dir und werden nie angetastet; sie werden schreibgeschützt als „externe" Jobs aufgelistet. Wenn die schließende Zeile des Blocks von Hand gelöscht wird, werden nur die Zeilen mit maxxing cron run als verwaltet behandelt: Deine eigenen Zeilen danach bleiben erhalten. Im Terminal: maxxing cron list, maxxing cron run <id> (führt ihn in deinem Terminal aus und wartet), maxxing cron sync (schreibt den Block neu), maxxing cron deleted (die entfernten Jobs, die aufbewahrt werden) und maxxing cron restore <id> (holt einen zurück). Zwei Läufe desselben Jobs überschneiden sich nie.

Speicher- und Zeitlimits

Ein geplanter Lauf startet genau wie Jetzt ausführen: in einer eigenen systemd-Unit (maxxing-cron-<id>, siehe journalctl -u maxxing-cron-<id>), damit ein gieriger Job nachts nicht den ganzen Server lahmlegen kann:

  • Jeder Job darf höchstens unit_memory_max des RAM nutzen (Standard 75 %, dieselbe Obergrenze wie bei einer Sitzung);
  • Alle Jobs, die gleichzeitig laufen, teilen sich ein Budget, jobs_memory_max (Standard 75 % des RAM, die Unit maxxing-jobs.slice). Um es zu ändern, setze jobs_memory_max in /var/lib/claude-maxxing/config.json ("3G", "50%" oder "" für keine Begrenzung) und führe dann maxxing init aus;
  • Nach Ablauf des Timeouts erhält ein Shell-Job ein Stoppsignal, und 5 Sekunden später wird alles beendet, was er gestartet hat, selbst ein Programm, das das Stoppsignal ignoriert.

Wenn der Job endet, enden auch die Programme, die er im Hintergrund laufen gelassen hat. Um ein Programm zu starten, das weiterlaufen muss (ein Server, ein Bot), mache daraus einen systemd-Dienst statt eines Cron-Jobs (frag Claude). Installationen, die vor 2.0.0-alpha.70 erstellt wurden, behalten das alte Verhalten: Ihre geplanten Jobs laufen wie bisher im Cron-Prozess, sodass die Programme, die sie im Hintergrund lassen, weiterlaufen, ohne die oben genannten Speicherlimits ("cron_keep_background": true in config.json; setze es auf false, um die Job-Units zu erhalten). Dasselbe gilt für die Schutzmaßnahmen von Sitzungen und Jobs ("unit_hardening": false dort; true schaltet sie ein).

Auf einem Server ohne systemd (einige Container) läuft der Job im Cron-Prozess: Der Timeout gilt weiterhin, die Speicherlimits nicht.

Geheimnisse, die in Einstellungen -> Schlüssel als „expose" markiert sind, stehen Shell-Jobs und Claude-Sitzungen als Umgebungsvariablen zur Verfügung.

Ein Shell-Job läuft mit demselben Claude-Setup wie deine Sitzungen (dem Claude-Code-Ordner von Harness und dem in Harness verbundenen Claude-Konto), sodass ein Skript selbst claude -p "..." aufrufen kann – zum Beispiel ein Skript, das Daten vorbereitet, Claude um einen Text bittet und ihn dann veröffentlicht.

Tipps für Claude-Jobs

Schreibe den Prompt als vollständige Anweisung: was erstellt werden soll, wohin es geschrieben werden soll, welcher Skill verwendet werden soll. Der Job hat kein vorheriges Gespräch, es sei denn, „Sitzung wiederverwenden" ist aktiviert.

💡 Nicht weiter? Öffne eine Session im Topic system › help und frag in deinen eigenen Worten: Claude liest diese Doku auf deinem Server und antwortet.✏️ Diese Seite verbessern