2026-07-03 ricerca-cron-openclaw-agenti-non-main
Chat log — Ricerca: cron affidabili per agenti non-main su OpenClaw (claude-cli)
Data: 2026-07-03
Messaggio utente (1)
Richiesta di ricerca tecnica su OpenClaw: trovare un modo affidabile per schedulare via cron lavoro agentico (con tool) per agenti NON-main (archimede, creso) su host con solo backend claude-cli.
Fatti verificati forniti:
- Backend unico
claude-cli(OAuth abbonamento flat, nessuna ANTHROPIC_API_KEY) - Sandbox off, 3 agenti: main (Romeo, sessione viva), archimede, creso (on-demand)
- tools.agentToAgent OFF
- Problema: ogni cron
agentTurnfallisce con "CLI backend claude-cli cannot enforce runtime toolsAllow" perché il gateway inietta d'ufficio una toolsAllow ristretta - Già escluso: agentTurn isolato/dedicato, patch toolsAllow:null, workaround systemEvent+main (solo per Romeo), runtime embedded (richiede API key)
6 domande di ricerca: (1) systemEvent+wakeMode:now crea la main se non viva? (2) keep-alive per main non-main? (3) modo per disattivare l'iniezione toolsAllow? (4) runtime embedded con backend locale (Ollama) solo per i cron? (5) pattern orchestrato via Romeo con agentToAgent OFF? (6) costo reale via API key + modello ibrido.
Output richiesto: raccomandazione primaria con comandi esatti, 1-2 alternative con trade-off, strade morte, citazioni docs/sorgenti.
Risposta finale
Ricerca completata verificando i sorgenti OpenClaw (clone di github.com/openclaw/openclaw, commit e272da5c del 2026-07-03) e i docs in-tree. Report completo salvato in 01_STRUMENTI_di_LAVORO/RICERCA_cron-agenti-non-main_claude-cli.md.
Conclusioni chiave:
- L'errore toolsAllow scatta solo se il payload HA una toolsAllow (
src/agents/cli-runner/prepare.ts:267). Il gateway/CLI non la iniettano: la inietta solo il toolcronusato dall'agente (src/agents/tools/cron-tool.ts:467-511). Nelle versioni correnti il default-stamp viene comunque scartato a runtime per i runner CLI (src/cron/isolated-agent/run-executor.ts:165-181). - RACCOMANDAZIONE PRIMARIA: aggiornare OpenClaw,
openclaw cron edit <id> --clear-toolssui job esistenti, creare i nuovi cronagentTurnisolati via CLI senza--tools→ girano su claude-cli con permessi pieni, senza main viva. Costo zero. - Alternativa B (funziona anche su versioni vecchie): cron
command→ curlPOST /hooks/agentconagentId: archimede/creso— il payload interno non contiene toolsAllow (src/gateway/server/hooks.ts:115-150). - Q1: systemEvent+main+wake:now NON richiede una sessione viva (le sessioni sono record; il cron accoda l'evento e lancia l'heartbeat per l'agentId del job), MA richiede heartbeat abilitato per quell'agente (
isHeartbeatEnabledForAgent, modalità esplicita se un agente ha già il blocco heartbeat). Piano C. - Keep-alive: concetto inesistente; heartbeat per-agente con HEARTBEAT.md vuoto = costo ~zero (skip in preflight, ma i wake da cron bypassano il gate).
- Ollama embedded per i cron: possibile senza API key, ma qualità tool-calling bassa — solo per job semplici. Via API key ibrida: supportata (runtime per-modello), ~1-15 €/mese per 4 run/giorno con light-context.
Messaggio utente (2)
"come posso fare quindi per risolvere questo problema che ho con i cron job sugli agenti secondari?"
Risposta finale (2)
Procedura pratica (via A del report):
- Aggiornare OpenClaw e riavviare il gateway (la re-iniezione su patch null indica build vecchia).
- Bonificare i job esistenti:
openclaw cron list --agent archimede→openclaw cron edit <jobId> --clear-tools(idem per creso). - Creare i cron via CLI/Control UI (mai tramite Romeo col tool cron) e SENZA
--tools: senza toolsAllow nel payload, claude-cli parte con permessi pieni, senza main viva. Esempio:openclaw cron add --agent archimede --name rassegna-mattina --cron "0 7 * * *" --tz Europe/Rome --session isolated --wake now --message "..." --announce --channel discord --to <channelId>. I job isolati supportano --announce (niente workaround message send). - Verifica con job usa-e-getta
--at "+2m"eopenclaw cron runs --id <jobId>: atteso ok senza errore toolsAllow. Piano B senza update: hooks abilitati + cron command che fa curl POST /hooks/agent con agentId archimede/creso (payload senza toolsAllow).
Messaggio utente (3)
"sarebbe possibile creare i cronjob nel catpit?"
Risposta finale (3)
Sì, tre vie (verificate su sorgenti/docs OpenClaw):
- Plugin ufficiale
admin-http-rpc(off di default):openclaw plugins enable admin-http-rpc+ restart → esponePOST /api/v1/admin/rpccon Bearer token gateway; allowlist include cron.status/list/get/runs/add/update/remove/run (docs/plugins/admin-http-rpc.md:178). Da una API route Next.js di CATPIT si chiama{"method":"cron.add","params":{...}}— payload agentTurn SENZA toolsAllow. Con cron.list/cron.runs CATPIT può fare da pannello scheduler completo (stato + storico per gatto). Forma esatta dei params: creare un job via CLI e leggerlo con cron.get. - Shell-out CLI da API route (
child_process→openclaw cron add ...). POST /hooks/agentper bottone "Esegui ora" on-demand (mai toolsAllow in quel percorso). Sicurezza: admin-rpc è piano di controllo completo → solo loopback, token dedicato. Idea di design: i prompt_avvio di task_details.json diventano il campo message dei job (CATPIT frontend, OpenClaw motore).