Plugins de Harness de Agente
Um harness de agente é o executor de baixo nível para um turno preparado de agente do OpenClaw. Ele não é um provedor de modelo, não é um canal e não é um registro de ferramentas. Use esta superfície apenas para plugins nativos empacotados ou confiáveis. O contrato ainda é experimental porque os tipos de parâmetro espelham intencionalmente o runner incorporado atual.Quando usar um harness
Registre um harness de agente quando uma família de modelos tiver seu próprio runtime nativo de sessão e o transporte normal de provedor do OpenClaw for a abstração errada. Exemplos:- um servidor nativo de agente de codificação que controla threads e compactação
- uma CLI local ou daemon que precisa transmitir eventos nativos de plano/raciocínio/ferramenta
- um runtime de modelo que precisa de seu próprio id de retomada além da transcrição de sessão do OpenClaw
O que o core ainda controla
Antes de um harness ser selecionado, o OpenClaw já resolveu:- provedor e modelo
- estado de autenticação do runtime
- nível de raciocínio e orçamento de contexto
- a transcrição/arquivo de sessão do OpenClaw
- workspace, sandbox e política de ferramentas
- callbacks de resposta do canal e callbacks de streaming
- política de fallback de modelo e troca de modelo ao vivo
Registrar um harness
Import:openclaw/plugin-sdk/agent-harness
Política de seleção
O OpenClaw escolhe um harness após a resolução de provedor/modelo:OPENCLAW_AGENT_RUNTIME=<id>força um harness registrado com esse id.OPENCLAW_AGENT_RUNTIME=piforça o harness PI incorporado.OPENCLAW_AGENT_RUNTIME=autopergunta aos harnesses registrados se eles oferecem suporte ao provedor/modelo resolvido.- Se nenhum harness registrado corresponder, o OpenClaw usa PI, a menos que o fallback para PI esteja desabilitado.
auto,
o OpenClaw pode recorrer ao PI quando o harness de plugin selecionado falha antes de um
turno produzir efeitos colaterais. Defina OPENCLAW_AGENT_HARNESS_FALLBACK=none ou
embeddedHarness.fallback: "none" para transformar esse fallback em falha definitiva.
O plugin Codex empacotado registra codex como seu id de harness. O core trata isso
como um id comum de harness de plugin; aliases específicos do Codex pertencem ao plugin
ou à configuração do operador, não ao seletor de runtime compartilhado.
Pareamento de provedor e harness
A maioria dos harnesses também deve registrar um provedor. O provedor torna referências de modelo, status de autenticação, metadados de modelo e seleção em/model visíveis para o restante do
OpenClaw. O harness então reivindica esse provedor em supports(...).
O plugin Codex empacotado segue este padrão:
- id do provedor:
codex - referências de modelo do usuário:
codex/gpt-5.4,codex/gpt-5.2ou outro modelo retornado pelo servidor de app do Codex - id do harness:
codex - autenticação: disponibilidade sintética do provedor, porque o harness Codex controla o login/sessão nativos do Codex
- solicitação ao servidor de app: o OpenClaw envia o id simples do modelo ao Codex e deixa o harness conversar com o protocolo nativo do servidor de app
openai/gpt-* continuam sendo referências do provedor OpenAI
e continuam usando o caminho normal de provedor do OpenClaw. Selecione codex/gpt-*
quando quiser autenticação gerenciada pelo Codex, descoberta de modelos do Codex, threads nativas e
execução via servidor de app do Codex. /model pode alternar entre os modelos do Codex retornados
pelo servidor de app do Codex sem exigir credenciais do provedor OpenAI.
Para configuração do operador, exemplos de prefixo de modelo e configs exclusivas do Codex, consulte
Harness Codex.
O OpenClaw exige Codex app-server 0.118.0 ou mais recente. O plugin Codex verifica o handshake
de inicialização do servidor de app e bloqueia servidores antigos ou sem versão para que o
OpenClaw só execute sobre a superfície de protocolo com a qual foi testado.
Desabilitar fallback para PI
Por padrão, o OpenClaw executa agentes incorporados comagents.defaults.embeddedHarness
definido como { runtime: "auto", fallback: "pi" }. No modo auto, harnesses de plugin registrados
podem reivindicar um par provedor/modelo. Se nenhum corresponder, ou se um harness de plugin
selecionado automaticamente falhar antes de produzir saída, o OpenClaw recorre ao PI.
Defina fallback: "none" quando você precisar provar que um harness de plugin é o único
runtime sendo exercitado. Isso desabilita o fallback automático para PI; não bloqueia
um runtime: "pi" explícito nem OPENCLAW_AGENT_RUNTIME=pi.
Para execuções incorporadas somente com Codex:
runtime: "auto" e desabilite
o fallback:
OPENCLAW_AGENT_RUNTIME ainda substitui o runtime configurado. Use
OPENCLAW_AGENT_HARNESS_FALLBACK=none para desabilitar o fallback para PI a partir do
ambiente.
Sessões nativas e espelho da transcrição
Um harness pode manter um id de sessão nativa, id de thread ou token de retomada do lado do daemon. Mantenha esse vínculo explicitamente associado à sessão do OpenClaw e continue espelhando saída visível ao usuário do assistente/ferramenta na transcrição do OpenClaw. A transcrição do OpenClaw continua sendo a camada de compatibilidade para:- histórico de sessão visível no canal
- busca e indexação da transcrição
- troca de volta para o harness PI incorporado em um turno posterior
- comportamento genérico de
/new,/resete exclusão de sessão
reset(...) para que o OpenClaw possa
limpá-lo quando a sessão proprietária do OpenClaw for redefinida.
Resultados de ferramenta e mídia
O core constrói a lista de ferramentas do OpenClaw e a passa para a tentativa preparada. Quando um harness executa uma chamada dinâmica de ferramenta, retorne o resultado da ferramenta por meio do formato de resultado do harness em vez de enviar mídia do canal por conta própria. Isso mantém texto, imagem, vídeo, música, TTS, aprovação e saídas de ferramentas de mensagem no mesmo caminho de entrega das execuções com suporte de PI.Limitações atuais
- O caminho público de importação é genérico, mas alguns aliases de tipo de tentativa/resultado ainda
carregam nomes
Pipor compatibilidade. - A instalação de harnesses de terceiros é experimental. Prefira plugins de provedor até precisar de um runtime nativo de sessão.
- A troca de harness é compatível entre turnos. Não troque de harness no meio de um turno depois que ferramentas nativas, aprovações, texto do assistente ou envios de mensagem já tiverem começado.