Fundamentals
Prompt di sistema
OpenClaw crea un prompt di sistema personalizzato per ogni esecuzione dell’agente. Il prompt è di proprietà di OpenClaw e non usa il prompt predefinito di pi-coding-agent.
Il prompt viene assemblato da OpenClaw e iniettato in ogni esecuzione dell’agente.
I Plugin provider possono contribuire linee guida per il prompt consapevoli della cache senza sostituire l’intero prompt di proprietà di OpenClaw. Il runtime del provider può:
- sostituire un piccolo insieme di sezioni core denominate (
interaction_style,tool_call_style,execution_bias) - iniettare un prefisso stabile sopra il confine della cache del prompt
- iniettare un suffisso dinamico sotto il confine della cache del prompt
Usa contributi di proprietà del provider per la regolazione specifica della famiglia di modelli. Mantieni la mutazione del prompt legacy
before_prompt_build per compatibilità o per modifiche del prompt davvero globali,
non per il comportamento normale del provider.
L’overlay della famiglia OpenAI GPT-5 mantiene piccola la regola di esecuzione core e aggiunge linee guida specifiche del modello per aggancio della persona, output conciso, disciplina degli strumenti, ricerca parallela, copertura dei deliverable, verifica, contesto mancante e igiene degli strumenti da terminale.
Struttura
Il prompt è intenzionalmente compatto e usa sezioni fisse:
- Strumenti: promemoria sulla fonte di verità degli strumenti strutturati più indicazioni runtime sull’uso degli strumenti.
- Tendenza di esecuzione: indicazioni compatte sul portare a termine: agire nel turno sulle richieste azionabili, continuare fino al completamento o al blocco, recuperare da risultati deboli degli strumenti, controllare dal vivo lo stato mutevole e verificare prima di finalizzare.
- Sicurezza: breve promemoria di guardrail per evitare comportamenti orientati all’acquisizione di potere o l’elusione della supervisione.
- Skills (quando disponibili): indica al modello come caricare le istruzioni delle skill su richiesta.
- Auto-aggiornamento OpenClaw: come ispezionare la configurazione in sicurezza con
config.schema.lookup, applicare patch alla configurazione conconfig.patch, sostituire l’intera configurazione conconfig.applyed eseguireupdate.runsolo su richiesta esplicita dell’utente. Anche lo strumentogatewayriservato al proprietario rifiuta di riscriveretools.exec.ask/tools.exec.security, inclusi gli alias legacytools.bash.*che si normalizzano in quei percorsi exec protetti. - Workspace: directory di lavoro (
agents.defaults.workspace). - Documentazione: percorso locale alla documentazione OpenClaw (repository o pacchetto npm) e quando leggerla.
- File del workspace (iniettati): indica che i file di bootstrap sono inclusi sotto.
- Sandbox (quando abilitata): indica runtime in sandbox, percorsi sandbox e se exec elevato è disponibile.
- Data e ora correnti: solo fuso orario (stabile per la cache; l’orologio live proviene da
session_status). - Tag di risposta: sintassi opzionale dei tag di risposta per i provider supportati.
- Heartbeats: prompt Heartbeat e comportamento di ack, quando gli Heartbeat sono abilitati per l’agente predefinito.
- Runtime: host, sistema operativo, node, modello, radice del repository (quando rilevata), livello di ragionamento (una riga).
- Ragionamento: livello di visibilità corrente + suggerimento per l’interruttore /reasoning.
OpenClaw mantiene i grandi contenuti stabili, incluso Contesto del progetto, sopra il confine interno della cache del prompt. Le sezioni volatili di canale/sessione come linee guida di incorporamento della Control UI, Messaggistica, Voce, Contesto della chat di gruppo, Reazioni, Heartbeats e Runtime vengono aggiunte sotto quel confine, così i backend locali con cache del prefisso possono riutilizzare il prefisso stabile del workspace tra i turni del canale. Anche le descrizioni degli strumenti dovrebbero evitare di incorporare i nomi correnti dei canali quando lo schema accettato contiene già quel dettaglio runtime.
La sezione Strumenti include anche indicazioni runtime per lavori di lunga durata:
- usa cron per follow-up futuri (
check back later, promemoria, lavori ricorrenti) invece di cicli di sleep conexec, trucchi di ritardoyieldMso polling ripetuto diprocess - usa
exec/processsolo per comandi che partono ora e continuano a girare in background - quando il risveglio automatico al completamento è abilitato, avvia il comando una volta e affidati al percorso di risveglio push-based quando emette output o fallisce
- usa
processper log, stato, input o intervento quando devi ispezionare un comando in esecuzione - se il task è più grande, preferisci
sessions_spawn; il completamento dei sub-agenti è push-based e si annuncia automaticamente al richiedente - non eseguire il polling di
subagents list/sessions_listin un ciclo solo per attendere il completamento
Quando lo strumento sperimentale update_plan è abilitato, Strumenti indica inoltre al
modello di usarlo solo per lavori multi-step non banali, mantenere esattamente un passo
in_progress ed evitare di ripetere l’intero piano dopo ogni aggiornamento.
I guardrail di sicurezza nel prompt di sistema sono consultivi. Guidano il comportamento del modello ma non applicano una policy. Usa policy degli strumenti, approvazioni exec, sandboxing e allowlist dei canali per l’applicazione rigida; gli operatori possono disabilitarli per progettazione.
Sui canali con schede/pulsanti di approvazione nativi, il prompt runtime ora indica
all’agente di affidarsi prima a quella UI di approvazione nativa. Dovrebbe includere un comando manuale
/approve solo quando il risultato dello strumento dice che le approvazioni in chat non sono disponibili o
che l’approvazione manuale è l’unico percorso.
Modalità del prompt
OpenClaw può generare prompt di sistema più piccoli per i sub-agenti. Il runtime imposta una
promptMode per ogni esecuzione (non è una configurazione esposta all’utente):
full(predefinita): include tutte le sezioni sopra.minimal: usata per i sub-agenti; omette Skills, Richiamo memoria, **Auto-aggiornamento OpenClaw **, Alias dei modelli, Identità utente, Tag di risposta, Messaggistica, Risposte silenziose e Heartbeats. Strumenti, Sicurezza, Workspace, Sandbox, Data e ora correnti (quando note), Runtime e contesto iniettato restano disponibili.none: restituisce solo la riga di identità di base.
Quando promptMode=minimal, i prompt iniettati extra sono etichettati **Contesto del subagente
** invece di Contesto della chat di gruppo.
Per le esecuzioni di risposta automatica del canale, OpenClaw può omettere la sezione generica Risposte silenziose
quando il contesto della chat diretta/di gruppo include già il comportamento NO_REPLY
specifico della conversazione risolto. Questo evita di ripetere la meccanica dei token
sia nel prompt di sistema globale sia nel contesto del canale.
Snapshot dei prompt
OpenClaw mantiene snapshot dei prompt versionati per il percorso felice del runtime Codex sotto
test/fixtures/agents/prompt-snapshots/codex-runtime-happy-path/. Generano
parametri selezionati di thread/turn dell’app-server più uno stack di layer del prompt legato al modello ricostruito
per turni Telegram diretti, gruppi Discord e Heartbeat. Quello stack
include una fixture del prompt del modello Codex gpt-5.5 fissata, generata dalla forma
del catalogo/cache dei modelli di Codex, il testo developer dei permessi del percorso felice Codex,
le istruzioni developer di OpenClaw, le istruzioni in ambito turno della modalità di collaborazione
quando OpenClaw le fornisce, l’input del turno utente e riferimenti alle specifiche dinamiche degli strumenti.
Aggiorna la fixture fissata del prompt del modello Codex con
pnpm prompt:snapshots:sync-codex-model. Per impostazione predefinita, lo script cerca
la cache runtime di Codex in $CODEX_HOME/models_cache.json, poi
~/.codex/models_cache.json e solo dopo ripiega sulla convenzione del checkout Codex del maintainer
in ~/code/codex/codex-rs/models-manager/models.json. Se
nessuna di queste fonti esiste, il comando termina senza modificare la fixture
versionata. Passa --catalog <path> per aggiornare da un file models_cache.json
o models.json specifico.
Questi snapshot non sono ancora una cattura raw byte-per-byte di una richiesta OpenAI. Codex
può aggiungere contesto del workspace di proprietà del runtime come AGENTS.md, contesto
dell’ambiente, memorie, istruzioni di app/plugin e istruzioni integrate Default
della modalità di collaborazione dentro il runtime Codex dopo che OpenClaw invia
i parametri di thread e turno.
Rigenerali con pnpm prompt:snapshots:gen e verifica il drift con
pnpm prompt:snapshots:check. La CI esegue il controllo di drift nello shard
di confine aggiuntivo, così modifiche del prompt e aggiornamenti degli snapshot restano collegati alla stessa
PR.
Iniezione bootstrap del workspace
I file di bootstrap vengono ridotti e aggiunti sotto Contesto del progetto così il modello vede il contesto di identità e profilo senza dover fare letture esplicite:
AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.md(solo su workspace appena creati)MEMORY.mdquando presente
Tutti questi file vengono iniettati nella finestra di contesto a ogni turno, salvo
applicazione di un gate specifico del file. HEARTBEAT.md viene omesso nelle esecuzioni normali quando
gli Heartbeat sono disabilitati per l’agente predefinito o
agents.defaults.heartbeat.includeSystemPromptSection è false. Mantieni concisi i file
iniettati — specialmente MEMORY.md, che può crescere nel tempo e portare a
un uso del contesto inaspettatamente alto e a Compaction più frequente.
Quando una sessione gira sull’harness Codex nativo, Codex carica AGENTS.md
tramite la propria discovery dei documenti di progetto. OpenClaw risolve comunque i restanti
file di bootstrap e li inoltra come istruzioni di configurazione Codex, quindi SOUL.md,
TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md, BOOTSTRAP.md e
MEMORY.md mantengono lo stesso ruolo di contesto del workspace senza duplicare
AGENTS.md.
I file grandi vengono troncati con un marcatore. La dimensione massima per file è controllata da
agents.defaults.bootstrapMaxChars (predefinito: 12000). Il contenuto bootstrap totale iniettato
tra i file è limitato da agents.defaults.bootstrapTotalMaxChars
(predefinito: 60000). I file mancanti iniettano un breve marcatore di file mancante. Quando avviene il troncamento,
OpenClaw può iniettare un avviso conciso nel prompt di sistema; controllalo con
agents.defaults.bootstrapPromptTruncationWarning (off, once, always;
predefinito: once). I conteggi raw/iniettati dettagliati restano nella diagnostica come
/context, /status, doctor e log.
Le sessioni dei sub-agenti iniettano solo AGENTS.md e TOOLS.md (gli altri file di bootstrap
vengono filtrati per mantenere piccolo il contesto del sub-agente).
Gli hook interni possono intercettare questo passaggio tramite agent:bootstrap per mutare o sostituire
i file bootstrap iniettati (per esempio scambiando SOUL.md con una persona alternativa).
Se vuoi rendere l’agente meno generico, inizia con Guida alla personalità SOUL.md.
Per ispezionare quanto contribuisce ogni file iniettato (raw vs iniettato, troncamento, più overhead dello schema degli strumenti), usa /context list o /context detail. Vedi Contesto.
Gestione del tempo
Il prompt di sistema include una sezione dedicata Data e ora correnti quando il fuso orario dell’utente è noto. Per mantenere stabile la cache del prompt, ora include solo il fuso orario (nessun orologio dinamico o formato dell’ora).
Usa session_status quando l’agente ha bisogno dell’ora corrente; la scheda di stato
include una riga con timestamp. Lo stesso strumento può opzionalmente impostare un override del modello per sessione
(model=default lo cancella).
Configura con:
agents.defaults.userTimezoneagents.defaults.timeFormat(auto|12|24)
Vedi Data e ora per i dettagli completi del comportamento.
Skills
Quando esistono skill idonee, OpenClaw inietta un compatto elenco delle skill disponibili
(formatSkillsForPrompt) che include il percorso del file per ogni skill. Il
prompt istruisce il modello a usare read per caricare SKILL.md nella posizione elencata
(workspace, gestita o integrata). Se nessuna skill è idonea, la sezione
Skills viene omessa.
L’idoneità include gate dei metadati delle skill, controlli runtime di ambiente/configurazione
e l’allowlist effettiva delle skill dell’agente quando agents.defaults.skills o
agents.list[].skills è configurato.
Le skill integrate nei Plugin sono idonee solo quando il Plugin proprietario è abilitato. Questo consente ai Plugin di strumenti di esporre guide operative più profonde senza incorporare tutte quelle indicazioni direttamente in ogni descrizione dello strumento.
<available_skills>
<skill>
<name>...</name>
<description>...</description>
<location>...</location>
</skill>
</available_skills>
Questo mantiene piccolo il prompt di base pur abilitando l’uso mirato delle skill.
Il budget dell'elenco Skills è gestito dal sottosistema Skills:
- Valore predefinito globale:
skills.limits.maxSkillsPromptChars - Override per agente:
agents.list[].skillsLimits.maxSkillsPromptChars
Gli estratti runtime generici con limite usano una superficie diversa:
agents.defaults.contextLimits.*agents.list[].contextLimits.*
Questa separazione mantiene il dimensionamento di Skills distinto dal dimensionamento di lettura/iniezione runtime, come memory_get, i risultati degli strumenti live e gli aggiornamenti post-Compaction di AGENTS.md.
Documentazione
Il prompt di sistema include una sezione Documentazione. Quando la documentazione locale è disponibile, punta alla directory locale della documentazione di OpenClaw (docs/ in un checkout Git o la documentazione del pacchetto npm inclusa). Se la documentazione locale non è disponibile, ripiega su https://docs.openclaw.ai.
La stessa sezione include anche la posizione del sorgente di OpenClaw. I checkout Git espongono la radice del sorgente locale, così l'agente può ispezionare direttamente il codice. Le installazioni da pacchetto includono l'URL del sorgente GitHub e indicano all'agente di consultare il sorgente lì ogni volta che la documentazione è incompleta o obsoleta. Il prompt annota anche il mirror pubblico della documentazione, il Discord della community e ClawHub (https://clawhub.ai) per la scoperta di Skills. Indica al modello di consultare prima la documentazione per il comportamento, i comandi, la configurazione o l'architettura di OpenClaw, e di eseguire direttamente openclaw status quando possibile (chiedendo all'utente solo quando non ha accesso). Per la configurazione in particolare, indirizza gli agenti all'azione dello strumento gateway config.schema.lookup per la documentazione e i vincoli esatti a livello di campo, quindi a docs/gateway/configuration.md e docs/gateway/configuration-reference.md per indicazioni più ampie.