3.3 KiB
Nacht-Agent
Arbeitet einmal pro Nacht (01:00 Uhr, kc-night-agent.timer) offene Plane-Tickets mit dem Label
„agent“ ab, in den Status Backlog oder Todo. Ergebnis ist immer ein Branch auf der Forge
(https://forge.flessinghome.de/flessinglabs/kundencenter), bei Erfolg zusätzlich ein Pull
Request und Ticket-Status „In Review“. Nichts wird automatisch gemergt oder live geschaltet –
das bleibt bei der morgendlichen Durchsicht durch den Assistenten bzw. den Nutzer.
Absicherung
Der Agent läuft als Betriebssystembenutzer kundencenter (systemd-Dienst kc-night-agent.service,
zusätzlich ProtectSystem=strict/ProtectHome=true, nur /var/lib/kundencenter/night-agent
beschreibbar). Dieser Benutzer:
- hat kein
sudo, kann also keinsystemctl restartund keine Dienste anfassen, - kann
/etc/kundencenter/*nicht lesen (root:root, chmod 600) – keine Geheimnisse erreichbar, - arbeitet in einer eigenen frischen Arbeitskopie (
/var/lib/kundencenter/night-agent/work), niemals in/srv/kundencenterselbst.
Zusätzlich bekommt jeder Lauf feste Leitplanken als System-Prompt
(ops/night-agent-guardrails.md): ein Ticket = ein Branch, Tests müssen grün sein, keine
Vermutungen bei fehlenden Zugangsdaten, kein Aufräumen außerhalb des Tickets.
Ablauf je Ticket
- Plane-Status → „In Progress“, Kommentar mit Branch-Namen.
claude -pmit Ticket-Text + Leitplanken, Budget-Deckel (--max-budget-usd, Standard 3 $), Zeit-Deckel (Standard 45 Min./Ticket, insgesamt max. 150 Min./Nacht).- Unabhängig vom Agenten prüft das Skript selbst:
pnpm install && pnpm build && pnpm typecheck && pnpm test(Tests laufen automatisch gegen eine frischekundencenter_test, nie gegen die produktive Datenbank). - Grün + Agent meldet
AGENT_STATUS: ok→ Branch pushen, Pull Request eröffnen, Plane-Status „In Review“, Kommentar mit PR-Link. - Rot, oder Agent meldet
AGENT_STATUS: blocked, oder keine Änderungen → Branch wird trotzdem gepusht (nichts geht verloren), aber kein Pull Request; Kommentar in Plane beschreibt das Problem. Status bleibt unverändert (kein automatisches „Wartet auf Input“, das entscheidet der Mensch nach Lektüre des Kommentars).
Einrichtung
/etc/kundencenter/night-agent.env(chmod 600, root):ANTHROPIC_API_KEY(eigener, vom interaktiven Zugang getrennter Schlüssel – siehe unten) sowie optionale Stellschrauben (NIGHT_AGENT_MAX_TICKETS,NIGHT_AGENT_BUDGET_USD,NIGHT_AGENT_DEADLINE_MIN,NIGHT_AGENT_TICKET_TIMEOUT_MIN)./etc/kundencenter/forge.env:FORGE_URL,FORGE_REPO(flessinglabs/kundencenter),FORGE_TOKEN.- Plane-Label „agent“ muss auf ein Ticket gesetzt sein, damit der Agent es aufgreifen darf.
- Aktivieren:
systemctl enable --now kc-night-agent.timer. Einmalig von Hand testen:systemctl start kc-night-agent.service(Logs:journalctl -u kc-night-agentsowie/var/lib/kundencenter/night-agent/logs/).
Bekannte Grenzen
kundencenter_testwird bei jedempnpm testneu angelegt (sieheapps/api/test/global-setup.ts) – Agent-Lauf und ein manueller Testlauf am Tag sollten sich nicht überschneiden.- Der Agent öffnet nie mehr als
NIGHT_AGENT_MAX_TICKETSPull Requests pro Nacht. - Kein Zugriff auf Anbieter-Testzugänge (z. B. KeyHelp, KCS) – bei Tickets, die das brauchen,
meldet der Agent
blocked.