Fundamentals
Runtimes de agentes
Um runtime de agente controla um loop de modelo preparado: ele recebe o prompt, conduz a saída do modelo, processa chamadas de ferramentas nativas e retorna o turno concluído ao OpenClaw.
É fácil confundir runtimes com provedores porque ambos aparecem próximos à configuração do modelo. Eles são camadas diferentes:
| Camada | Exemplos | Significado |
|---|---|---|
| Provedor | anthropic, github-copilot, openai |
Como o OpenClaw autentica, descobre modelos e nomeia referências de modelos. |
| Modelo | claude-opus-4-6, gpt-5.6-sol |
O modelo selecionado para o turno do agente. |
| Runtime de agente | claude-cli, codex, copilot, openclaw |
O loop de baixo nível ou backend que executa o turno preparado. |
| Canal | Discord, Slack, Telegram, WhatsApp | Por onde as mensagens entram e saem do OpenClaw. |
Um harness é a implementação que fornece um runtime de agente (termo de
código). Por exemplo, o harness integrado do Codex implementa o runtime codex.
A configuração pública usa agentRuntime.id nas entradas de provedor ou modelo; as
chaves de runtime do agente inteiro são legadas e ignoradas. openclaw doctor --fix
remove pins antigos de runtime do agente inteiro e reescreve referências legadas de
modelos de runtime como referências canônicas de provedor/modelo, além de políticas
de runtime no escopo do modelo quando necessário.
Duas famílias de runtime:
- Harnesses incorporados são executados dentro do loop de agente preparado do
OpenClaw: o runtime integrado
openclaw, além de harnesses de plugins registrados, comocodexecopilot. - Backends de CLI executam um processo de CLI local enquanto mantêm a referência
do modelo canônica. Por exemplo,
anthropic/claude-opus-4-8comagentRuntime.id: "claude-cli"no escopo do modelo significa "selecionar o modelo da Anthropic e executar por meio da Claude CLI".claude-clinão é um id de harness incorporado e não deve ser passado para a seleção de AgentHarness.
O harness copilot é um harness de plugin externo separado e opcional para a
GitHub Copilot CLI; consulte Runtime de agente do GitHub Copilot
para ver a decisão voltada ao usuário entre os runtimes de agente PI, Codex e
GitHub Copilot.
Superfícies do Codex
Várias superfícies compartilham o nome Codex:
| Superfície | Nome/configuração no OpenClaw | O que faz |
|---|---|---|
| Runtime nativo do app-server do Codex | Referências de modelo openai/* |
Executa turnos de agente incorporados da OpenAI por meio do app-server do Codex. Essa é a configuração habitual da assinatura do ChatGPT/Codex. |
| Perfis de autenticação OAuth do Codex | Perfis OAuth openai |
Armazena a autenticação da assinatura do ChatGPT/Codex consumida pelo harness do app-server do Codex. |
| Adaptador ACP do Codex | runtime: "acp", agentId: "codex" |
Executa o Codex por meio do plano de controle externo ACP/acpx. Use somente quando ACP/acpx for solicitado explicitamente. |
| Conjunto nativo de comandos de controle de chat do Codex | /codex ... |
Vincula, retoma, direciona, interrompe e inspeciona threads do app-server do Codex pelo chat. |
| Rota da API da Plataforma OpenAI para superfícies que não são de agente | openai/* mais autenticação por chave de API |
APIs diretas da OpenAI, como imagens, embeddings, fala e tempo real. |
Essas superfícies são intencionalmente independentes. Ativar o plugin codex
disponibiliza os recursos nativos do app-server; openclaw doctor --fix é
responsável pelo reparo de rotas legadas do Codex e pela limpeza de pins obsoletos
de sessão. Selecionar openai/* para um modelo de agente agora significa "executar
isto por meio do Codex", a menos que uma superfície de API da OpenAI que não seja de
agente esteja sendo usada.
A configuração comum de assinatura do ChatGPT/Codex usa OAuth do Codex para
autenticação, mas mantém a referência do modelo como openai/* e seleciona o
runtime codex:
{ agents: { defaults: { model: "openai/gpt-5.6-sol", }, },}Isso significa que o OpenClaw seleciona uma referência de modelo da OpenAI e, em seguida, solicita que o runtime do app-server do Codex execute o turno de agente incorporado. Não significa "usar cobrança da API", nem que o canal, o catálogo de provedores de modelos ou o armazenamento de sessões do OpenClaw se tornem Codex.
Quando o plugin integrado codex estiver ativado, use a superfície nativa de
comandos /codex (/codex bind, /codex threads, /codex resume, /codex steer,
/codex stop) para controlar o Codex em linguagem natural, em vez de usar ACP. Use
ACP para o Codex somente quando o usuário solicitar explicitamente ACP/acpx ou
estiver testando o caminho do adaptador ACP. Claude Code, Gemini CLI, OpenCode,
Cursor e harnesses externos semelhantes continuam usando ACP.
Árvore de decisão:
- Vincular/controlar/thread/retomar/direcionar/interromper no Codex -> superfície nativa de comandos
/codexquando o plugin integradocodexestiver ativado. - Codex como runtime incorporado ou a experiência normal de agente Codex baseada em assinatura ->
openai/<model>. - OpenClaw escolhido explicitamente para um modelo da OpenAI -> mantenha a referência do modelo como
openai/<model>e defina a política de runtime do provedor/modelo comoagentRuntime.id: "openclaw". Um perfil OAuthopenaiselecionado é roteado internamente pelo transporte de autenticação do Codex do OpenClaw. - Referências legadas de modelos Codex na configuração -> repare com
openclaw doctor --fixparaopenai/<model>; o doctor mantém a rota de autenticação do Codex adicionandoagentRuntime.id: "codex"no escopo do provedor/modelo quando a referência antiga do modelo implicava isso. Referências legadas de modeloscodex-cli/*são reparadas para a mesma rotaopenai/<model>do app-server do Codex; o OpenClaw não mantém mais um backend integrado da Codex CLI. - ACP, acpx ou adaptador ACP do Codex solicitado explicitamente ->
runtime: "acp"eagentId: "codex". - Claude Code, Gemini CLI, OpenCode, Cursor, Droid ou outro harness externo -> ACP/acpx, não o runtime nativo de subagentes.
| Você quer dizer... | Use... |
|---|---|
| Controle de chat/thread do app-server do Codex | /codex ... do plugin integrado codex |
| Runtime de agente incorporado do app-server do Codex | Referências de modelo de agente openai/* |
| OAuth do OpenAI Codex | Perfis OAuth openai |
| Claude Code ou outro harness externo | ACP/acpx |
Para a divisão de prefixos da família OpenAI, consulte OpenAI e Provedores de modelos. Para o contrato de suporte do runtime Codex, consulte Runtime do harness Codex.
Responsabilidade do runtime
Runtimes diferentes controlam partes diferentes do loop:
| Superfície | Incorporado ao OpenClaw | App-server do Codex |
|---|---|---|
| Responsável pelo loop do modelo | OpenClaw, por meio do executor incorporado do OpenClaw | App-server do Codex |
| Estado canônico da thread | Transcrição do OpenClaw | Thread do Codex, mais o espelho da transcrição do OpenClaw |
| Ferramentas dinâmicas do OpenClaw | Loop de ferramentas nativo do OpenClaw | Intermediadas pelo adaptador do Codex |
| Ferramentas nativas de shell e arquivos | Caminho do OpenClaw | Ferramentas nativas do Codex, intermediadas por hooks nativos quando houver suporte |
| Mecanismo de contexto | Montagem nativa de contexto do OpenClaw | O OpenClaw projeta o contexto montado no turno do Codex |
| Compaction | OpenClaw ou mecanismo de contexto selecionado | Compaction nativa do Codex, com notificações do OpenClaw e manutenção do espelho |
| Entrega pelo canal | OpenClaw | OpenClaw |
Regra de design: se o OpenClaw controla a superfície, ele pode fornecer o comportamento normal de hooks de plugins. Se o runtime nativo controla a superfície, o OpenClaw precisa de eventos de runtime ou hooks nativos. Se o runtime nativo controla o estado canônico da thread, o OpenClaw espelha e projeta o contexto, em vez de reescrever componentes internos sem suporte.
Seleção de runtime
O OpenClaw resolve um runtime incorporado após a resolução do provedor e do modelo, nesta ordem:
- A política de runtime no escopo do modelo prevalece. Ela fica em uma entrada
configurada de modelo do provedor ou em
agents.defaults.models["provider/model"].agentRuntime/agents.list[].models["provider/model"].agentRuntime. Um curinga de provedor, comoagents.defaults.models["vllm/*"].agentRuntime, é aplicado após a política exata do modelo, permitindo que modelos de provedor descobertos dinamicamente compartilhem um runtime sem substituir exceções exatas por modelo. - Política de runtime no escopo do provedor:
models.providers.<provider>.agentRuntime. - Modo
auto: runtimes de plugins registrados podem reivindicar pares de provedor/modelo compatíveis. - Se nenhum runtime reivindicar o turno no modo
auto, o OpenClaw usaopenclawcomo runtime de compatibilidade. Use um id de runtime explícito quando a execução precisar ser estrita.
Pins de runtime para a sessão inteira e o agente inteiro são ignorados:
OPENCLAW_AGENT_RUNTIME, o estado de sessão agentHarnessId/agentRuntimeOverride,
agents.defaults.agentRuntime e agents.list[].agentRuntime. Execute
openclaw doctor --fix para remover configurações obsoletas de runtime do agente
inteiro e converter referências legadas de modelos de runtime quando for possível
preservar a intenção.
Runtimes explícitos de plugins no escopo do provedor/modelo falham de forma
restritiva: agentRuntime.id: "codex" em um provedor ou modelo significa Codex ou
um erro claro de seleção/runtime — ele nunca é roteado silenciosamente de volta ao
OpenClaw. Somente auto pode rotear um turno sem correspondência para o OpenClaw.
Aliases de backends de CLI são diferentes de ids de harnesses incorporados. Forma preferencial para a Claude CLI:
{ agents: { defaults: { model: "anthropic/claude-opus-4-8", models: { "anthropic/claude-opus-4-8": { agentRuntime: { id: "claude-cli" }, }, }, }, },}Referências legadas como claude-cli/claude-opus-4-7 continuam compatíveis, mas
novas configurações devem manter o provedor/modelo canônico e colocar o backend de
execução na política de runtime do provedor/modelo.
As referências legadas codex-cli/* são diferentes: o doctor as migra para
openai/*, para que sejam executadas pelo harness do app-server do Codex, em vez de
preservar um backend da Codex CLI.
O modo auto é intencionalmente conservador para a maioria dos provedores. Os
modelos de agente da OpenAI são a exceção: tanto um runtime não definido quanto
auto são resolvidos para o harness Codex. A configuração explícita do runtime
OpenClaw continua sendo uma rota de compatibilidade opcional para turnos de agente
openai/*; quando combinada com um perfil OAuth openai selecionado, o OpenClaw
roteia esse caminho internamente pelo transporte de autenticação do Codex, mantendo
a referência pública do modelo como openai/*. Pins obsoletos de sessão de runtime
da OpenAI são ignorados pela seleção de runtime e podem ser removidos com
openclaw doctor --fix.
Se openclaw doctor avisar que o plugin codex está ativado enquanto referências
legadas de modelos Codex permanecem na configuração, trate isso como estado de rota
legada e execute openclaw doctor --fix para reescrevê-las como openai/* com o
runtime Codex.
Runtime de agente do GitHub Copilot
O plugin externo @openclaw/copilot registra um runtime copilot opcional
baseado na CLI do GitHub Copilot (@github/copilot-sdk). Ele reivindica o
provedor canônico de assinatura github-copilot e nunca é selecionado por
auto. Ative-o por modelo ou por provedor por meio de agentRuntime.id:
{ agents: { defaults: { model: "github-copilot/gpt-5.5", models: { "github-copilot/gpt-5.5": { agentRuntime: { id: "copilot" }, }, }, }, },}O harness reivindica seu provedor, runtime, chave de sessão da CLI e prefixo
do perfil de autenticação em extensions/copilot/doctor-contract-api.ts, que
o openclaw doctor carrega automaticamente. Para saber mais sobre configuração,
autenticação, espelhamento de transcrições, Compaction, o contrato declarativo
do doctor e a decisão mais ampla entre os SDKs do PI, Codex e Copilot, consulte
runtime de agente do GitHub Copilot.
Contrato de compatibilidade
Quando um runtime não é do OpenClaw, sua documentação deve declarar quais recursos do OpenClaw ele oferece:
| Pergunta | Por que isso é importante |
|---|---|
| Quem controla o loop do modelo? | Determina onde ocorrem as novas tentativas, a continuação de ferramentas e as decisões sobre a resposta final. |
| Quem controla o histórico canônico da thread? | Determina se o OpenClaw pode editar o histórico ou apenas espelhá-lo. |
| As ferramentas dinâmicas do OpenClaw funcionam? | Mensagens, sessões, Cron e ferramentas controladas pelo OpenClaw dependem disso. |
| Os hooks de ferramentas dinâmicas funcionam? | Plugins esperam before_tool_call, after_tool_call e middleware em torno das ferramentas controladas pelo OpenClaw. |
| Os hooks de ferramentas nativas funcionam? | Shell, patch e ferramentas controladas pelo runtime precisam de suporte nativo a hooks para aplicação de políticas e observação. |
| O ciclo de vida do mecanismo de contexto é executado? | Plugins de memória e contexto dependem dos ciclos de vida de montagem, ingestão, pós-turno e Compaction. |
| Quais dados de Compaction são expostos? | Alguns Plugins precisam apenas de notificações; outros precisam de metadados sobre o que foi mantido ou descartado. |
| O que não tem suporte intencionalmente? | Os usuários não devem presumir equivalência com o OpenClaw quando o runtime nativo controla mais estados. |
O contrato de suporte do runtime Codex está documentado em runtime do harness Codex.
Rótulos de status
A saída de status pode exibir os rótulos Execution e Runtime. Interprete-os
como diagnósticos, não como nomes de provedores:
- Uma referência de modelo como
openai/gpt-5.6-solé o provedor/modelo selecionado. - Um ID de runtime como
codexé o loop que está executando o turno. - Um rótulo de canal como Telegram ou Discord indica onde a conversa está acontecendo.
Se uma execução mostrar um runtime inesperado, primeiro inspecione a política de runtime do provedor/modelo selecionado. As antigas fixações de runtime da sessão não determinam mais o roteamento.