Der Blueprint sah eine "Live Agent Matrix" mit Denkstrom vor (§4.4). In P4 hatte ich
sie als blockiert gemeldet: Lucys Denkschritte entstehen im Hermes-Prozess, und
AGENTS.md verbietet es, dessen Quellcode zu patchen.
Beim Nachsehen zeigte sich, dass die HAELFTE davon offen daliegt.
`~/.hermes/logs/agent.log` protokolliert JEDEN Werkzeug-Ruf:
INFO [cron_195e…] agent.tool_executor: tool terminal completed (1.40s, 53 chars)
WARNING [cron_195e…] agent.tool_executor: Tool web_extract returned error (0.17s): {…}
Eine Log-Datei zu LESEN ist kein Patchen. Was dadurch sichtbar wird — welches Werkzeug,
wie lange, mit welchem Ergebnis, in welchem Lauf — ist fuer "was tut sie gerade und wo
haengt es" oft nuetzlicher als der Fliesstext ihrer Gedanken.
## Es hat sich beim ersten Blick bezahlt gemacht
Der Parser lief gegen den echten Box-Log und meldete sofort:
web_extract 2 Rufe 2 Fehler <-- IMMER ROT
DuckDuckGo (ddgs) is a search-only backend and cannot extract URL content.
web_search 20 Rufe 0 Fehler Schnitt 1,77 s
Nachgesehen: `web_extract` scheitert seit MINDESTENS dem 25.08. jeden Morgen um 07:00
mit derselben Meldung — im Daily-News-Cron, vier Tage lang, ohne dass es irgendwo
aufgefallen waere. Genau dafuer steht die Bilanz OBEN und die Zeitleiste darunter:
Ein Dauerfehler verschwindet in einer Ereignisliste, in der Zeile
"web_extract · 2 Rufe · 2 Fehler" nicht.
## Was die Ansicht NICHT verspricht
Denkstrom und Werkzeug-Argumente stehen nicht im Log und tauchen darum auch nicht auf.
Das steht so in der Ansicht selbst, nicht nur im Code — eine Oberflaeche, die mehr
andeutet als sie hat, ist schlimmer als eine, die ihre Grenze nennt.
## Umsetzung
services/agent_aktivitaet.py liest nur die letzten 512 kB (die Datei waechst auf
MB und wird rotiert), vier gemessene Zeilenformen,
Bilanz je Werkzeug + Gruppierung je Lauf
GET /api/agent/aktivitaet limit gedeckelt auf 300
features/agent/Werkzeugverlauf.tsx Bilanz -> Laeufe -> aufklappbare Zeitleiste
Fehlt das Log (Entwicklungsrechner ohne Hermes), verschwindet der Abschnitt still,
statt eine leere Karte zu zeigen — wie der Rest der Seite es haelt.
## Verifiziert
Parser gegen den echten Box-Log: 26 Rufe, 4 Werkzeuge, 2 Laeufe erkannt,
Rauschen (mem_trim, aiohttp) ignoriert
Im Browser gegen dieselben Daten: "IMMER ROT"-Markierung sitzt, Grund im Klartext,
Laufgruppen mit Zeitspanne, 26 Einzelrufe in der Zeitleiste
7 neue Tests (44 gesamt) — sie pruefen gezielt die BILANZ-Karte, nicht irgendein
Vorkommen des Werkzeugnamens; der steht auch in der Zeitleiste
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
56 lines
1.2 KiB
JSON
56 lines
1.2 KiB
JSON
{
|
|
"version": "0.0.1",
|
|
"configurations": [
|
|
{
|
|
"name": "mc2",
|
|
"runtimeExecutable": "F:\\Coding Stuff\\mission-control-2\\backend\\.venv\\Scripts\\python.exe",
|
|
"runtimeArgs": [
|
|
"-m",
|
|
"uvicorn",
|
|
"app:app",
|
|
"--app-dir",
|
|
"F:\\Coding Stuff\\mission-control-2\\backend",
|
|
"--port",
|
|
"9000"
|
|
],
|
|
"port": 9000
|
|
},
|
|
{
|
|
"name": "frontend",
|
|
"runtimeExecutable": "npm",
|
|
"runtimeArgs": [
|
|
"run",
|
|
"dev",
|
|
"--",
|
|
"--port",
|
|
"5180",
|
|
"--strictPort"
|
|
],
|
|
"cwd": "F:\\Coding Stuff\\mission-control-2\\frontend",
|
|
"env": {
|
|
"MC_API_TARGET": "http://192.168.178.151:9001"
|
|
},
|
|
"autoPort": false,
|
|
"port": 5180
|
|
},
|
|
{
|
|
"name": "frontend-mock",
|
|
"runtimeExecutable": "npm",
|
|
"runtimeArgs": [
|
|
"run",
|
|
"dev",
|
|
"--",
|
|
"--port",
|
|
"5181",
|
|
"--strictPort"
|
|
],
|
|
"cwd": "F:\\Coding Stuff\\mission-control-2\\frontend",
|
|
"env": {
|
|
"MC_API_TARGET": "http://127.0.0.1:9000"
|
|
},
|
|
"autoPort": false,
|
|
"port": 5181
|
|
}
|
|
]
|
|
}
|