Mein erster Prompt verbot Emojis und Deko und ueberstimmte damit SOUL.md. Formatierung kommt aus der Persona, nicht aus dem Job. Dazu news-melden.sh: Text via notify.sh, Stimme via voice-service :8650 (Lucys echte deutsche Stimme, nicht Hermes' englisches edge-TTS) und hermes send MEDIA:. SOUL.md-Verweise auf die abgeschalteten Werkzeuge kanban/delegation behoben. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
136 lines
6.2 KiB
Markdown
136 lines
6.2 KiB
Markdown
# Die drei Jobs (KISS-Umbau, 21.08.2026)
|
|
|
|
Vorher: **4 Hermes-Crons + 6 systemd-Timer**, verteilt auf zwei Mechanismen.
|
|
Deshalb fiel am 20.08. tagelang niemandem auf, dass ein Waechter fehlte —
|
|
niemand schaut an zwei Orten nach.
|
|
|
|
Jetzt: **drei Jobs, ein Ort.** `hermes cron list` zeigt die gesamte Automatik.
|
|
|
|
| Job | Wann | Art | Skript |
|
|
|---|---|---|---|
|
|
| **Daily News Report** | taeglich 07:00 | Agent + Websuche | — |
|
|
| **KI und Stack Radar** | samstags 08:00 | `--no-agent` | `stack-radar.sh` → `stack-ist.sh` |
|
|
| **Updates am Sonntag** | sonntags 04:30 | `--no-agent` | `sonntags-update.sh` → `autoupdate.sh` |
|
|
|
|
Daneben laufen als stille Rohrleitung weiter: `mc2-backup` (03:33) und
|
|
`projekte-sync` (stuendlich). Die melden sich nie, die sichern und synchronisieren nur.
|
|
|
|
## Der Entwurfsgrundsatz
|
|
|
|
> **Fakten sammelt ein Skript, Prosa schreibt das Modell.**
|
|
|
|
Der alte Selbsttest war am 20.08. gruen, waehrend vier Dinge kaputt waren: das
|
|
Kritiker-Gate zeigte seit einem Tag auf ein umbenanntes Modell (404), Lucys
|
|
`SOUL.md` war blockiert, das Dashboard stand ohne Passwort offen, die CI war rot.
|
|
Er hatte geprueft, ob Dienste **antworten** — nicht, ob sie **stimmen**.
|
|
|
|
`stack-ist.sh` prueft deshalb Ergebnisse: loesen die Rollen-Aliase noch auf? Ist
|
|
der letzte Timer-Lauf gutgegangen? Ist eine Sicherung juenger als zwei Tage?
|
|
Liefert die oeffentliche Adresse Daten ohne Anmeldung? Beim ersten Lauf hat es
|
|
sofort zwei echte Befunde gefunden.
|
|
|
|
## Kugelsicher heisst konkret
|
|
|
|
- **Das Modell steht nicht im kritischen Pfad.** Antwortet es nicht, gehen die
|
|
Rohbefunde trotzdem raus. Nur die Prosa faellt weg, nie die Meldung.
|
|
- **Es meldet immer.** „Alles gruen" ist ein Ergebnis, kein Grund zu schweigen.
|
|
- **Kein `set -e`.** Ein einzelner fehlschlagender Test darf den Bericht nicht
|
|
abschneiden.
|
|
- **Ein Melderweg:** `deploy/notify.sh` erreicht Telegram **und** Lucys
|
|
Briefkasten (aus dem sie spricht) in einem Aufruf. Die Jobs laufen mit
|
|
`--deliver local`, damit Hermes nicht ein zweites Mal sendet.
|
|
- **Kein Fuellmaterial.** Die Prompts verbieten ausgedachte Vorschlaege
|
|
ausdruecklich — ein Bericht mit Fuellmaterial wird nicht gelesen, und dann
|
|
auch der echte Befund nicht.
|
|
|
|
## Ausbringen
|
|
|
|
Die Skripte muessen unter `~/.hermes/scripts/` liegen (Vorgabe von `hermes cron --script`).
|
|
Quelle ist dieses Verzeichnis:
|
|
|
|
```bash
|
|
scp deploy/jobs/*.sh hitonabi@192.168.178.151:/home/hitonabi/.hermes/scripts/
|
|
ssh hitonabi@192.168.178.151 'cd ~/.hermes/scripts && sed -i "s/\r$//" *.sh && chmod +x *.sh'
|
|
```
|
|
|
|
‼️ Das `sed` ist Pflicht: vom Windows-PC kopierte Dateien haben CRLF, und bash
|
|
scheitert daran mit unverstaendlichen Meldungen.
|
|
|
|
## Abgeschaltet am 21.08.
|
|
|
|
| Weg | Warum |
|
|
|---|---|
|
|
| Cron `morgen-digest` | geht im Daily News Report auf |
|
|
| Cron `tech-radar` | geht im Stack Radar auf |
|
|
| Cron `nacht-wartung` | pruefte Lebenszeichen, nicht Ergebnisse |
|
|
| Cron `wissens-sync` | **war nie gelaufen** — kein `last_run_at` |
|
|
| Timer `mc2-bagatell` | **15 Naechte hintereinander „0 eingespielt"** |
|
|
| Timer `mc2-selfsmoke` | geht in `stack-ist.sh` auf |
|
|
| Timer `pbs-backup` | doppelt zu `mc2-backup` und seit 21.08. rot (`/srv/models/mem0` gibt es nicht mehr) |
|
|
| Timer `mc2-autoupdate` | wird jetzt vom Cron „Updates am Sonntag" gestartet |
|
|
|
|
Die Unit-Dateien liegen noch da, nur `disable`d — Rueckbau ist ein Befehl.
|
|
|
|
---
|
|
|
|
## Nachtrag 21.08.: Persona, Quellen-Links und Stimme
|
|
|
|
**Fehler, den ich gemacht hatte:** Mein erster Prompt fuer den Daily News Report
|
|
schrieb woertlich *„keine Emojis, keine Aufzaehlungspunkte, keine
|
|
Ueberschriften-Deko"* — und hat damit genau das wegoptimiert, was den Bericht
|
|
vorher gut machte.
|
|
|
|
★★ **Die Formatierung kam nie aus dem Job-Prompt.** Die alten Prompts waren
|
|
kurz (*„eine praegnante 3-Punkte-Zusammenfassung an den Commander"*). Emojis,
|
|
Ton und die Anrede stehen in **`~/.hermes/SOUL.md`** — Lucys Persona:
|
|
|
|
> Du sprichst den Nutzer IMMER mit **Commander** an.
|
|
> Locker, herzlich, schlagfertig, charmant, selbstbewusst.
|
|
|
|
**Lehre: den Job-Prompt kurz halten und die Persona arbeiten lassen.** Wer im
|
|
Prompt Stil verbietet, ueberstimmt die Persona — und merkt es erst, wenn die
|
|
Nachricht seelenlos ankommt.
|
|
|
|
### Stimme in Telegram
|
|
|
|
`hermes send` kann **`MEDIA:<pfad>`**. Damit geht eine fertige Audiodatei als
|
|
Anhang nach Telegram. `deploy/jobs/news-melden.sh` macht daraus einen Aufruf:
|
|
|
|
```
|
|
Agent schreibt zwei Dateien
|
|
/tmp/news-text.md (Emojis, Links, Formatierung) -> notify.sh -> Telegram + Briefkasten
|
|
/tmp/news-sprich.txt (3-4 Saetze, nichts Vorlesbares fehlt) -> :8650/tts -> WAV -> hermes send MEDIA:
|
|
```
|
|
|
|
‼️ **Nicht Hermes' eingebautes TTS nehmen.** Das steht auf `tts.provider: edge`
|
|
mit `en-US-AriaNeural` — englisch. Lucys echte Stimme ist MC2s `voice-service`
|
|
auf `:8650` (Piper `de_DE-thorsten-medium`). Deshalb ruft das Skript den
|
|
Sidecar direkt per curl.
|
|
|
|
‼️ **Kein ffmpeg noetig.** Telegram nimmt die WAV direkt an. Fuer eine echte
|
|
Sprachnachricht mit Wellenform braeuchte es OGG/Opus und damit ffmpeg — bewusst
|
|
nicht installiert, eine Abhaengigkeit weniger.
|
|
|
|
Der Agent ruft **einen** Befehl auf, alles danach ist deterministisch. Faellt
|
|
die Stimme aus, geht der Text trotzdem raus.
|
|
|
|
### ‼️ Folgefehler der Werkzeug-Abschaltung — gefunden und behoben
|
|
|
|
Nach dem Abschalten von `kanban` und `delegation` standen in `SOUL.md` noch
|
|
zwei Anweisungen, die ins Leere zeigten: *„rufst du sofort dein Werkzeug
|
|
delegate_task auf"* und *„Ideen traegst du sofort im Kanban-Auftragsbuch ein"*.
|
|
Genau die Klasse stiller Defekt, die am 19.08. das Kritiker-Gate zerlegt hat.
|
|
Beide Abschnitte ersetzt (Sicherung: `~/.hermes/SOUL.md.bak-20260821`).
|
|
|
|
**Merke: wer einen Werkzeugsatz abschaltet, muss `SOUL.md` mitlesen.**
|
|
|
|
### Kugelsicher-Regeln, die dazugekommen sind
|
|
|
|
- `hermes cron edit <id> "text"` **speichert nichts** — der Prompt muss ueber
|
|
**`--prompt`** kommen. Ohne Flag gibt der Befehl den Text nur aus und die
|
|
alte Fassung bleibt stehen. Nach jeder Aenderung in `jobs.json` nachsehen.
|
|
- Alte Job-Fassungen liegen im Zustands-Backup:
|
|
`tar -xzf /srv/models/mc2-backups/mc2-state-*.tar.gz ./hermes/cron/jobs.json`
|
|
- Tagesaktualitaet muss man erzwingen: Datum per `date` feststellen lassen,
|
|
mehrere Suchen verlangen, und Meldungen ohne belegbares Datum verwerfen.
|