Background Exec + ferramenta Process
O OpenClaw executa comandos de shell por meio da ferramentaexec e mantém tarefas de longa duração na memória. A ferramenta process gerencia essas sessões em segundo plano.
Ferramenta exec
Principais parâmetros:command(obrigatório)yieldMs(padrão 10000): move automaticamente para segundo plano após esse atrasobackground(bool): move imediatamente para segundo planotimeout(segundos, padrão 1800): mata o processo após esse timeoutelevated(bool): executa fora do sandbox se o modo elevado estiver ativado/permitido (gatewaypor padrão, ounodequando o alvo de exec fornode)- Precisa de um TTY real? Defina
pty: true. workdir,env
- Execuções em primeiro plano retornam a saída diretamente.
- Quando executada em segundo plano (explícito ou por timeout), a ferramenta retorna
status: "running"+sessionIde um pequeno trecho final. - A saída é mantida na memória até que a sessão seja consultada ou limpa.
- Se a ferramenta
processnão for permitida,execé executada de forma síncrona e ignorayieldMs/background. - Comandos exec iniciados recebem
OPENCLAW_SHELL=execpara regras de shell/perfil sensíveis a contexto. - Para trabalhos de longa duração que começam agora, inicie uma vez e confie na ativação automática ao concluir quando ela estiver habilitada e o comando produzir saída ou falhar.
- Se a ativação automática ao concluir não estiver disponível, ou se você precisar de confirmação silenciosa de sucesso para um comando que terminou corretamente sem saída, use
processpara confirmar a conclusão. - Não emule lembretes ou acompanhamentos atrasados com loops
sleepou polling repetido; use cron para trabalho futuro.
Ponte para processos filhos
Ao iniciar processos filhos de longa duração fora das ferramentas exec/process (por exemplo, respawns da CLI ou helpers do gateway), anexe o helper de ponte de processos filhos para que sinais de término sejam encaminhados e listeners sejam removidos em saída/erro. Isso evita processos órfãos no systemd e mantém o comportamento de desligamento consistente entre plataformas. Substituições por ambiente:PI_BASH_YIELD_MS: yield padrão (ms)PI_BASH_MAX_OUTPUT_CHARS: limite de saída em memória (chars)OPENCLAW_BASH_PENDING_MAX_OUTPUT_CHARS: limite pendente de stdout/stderr por stream (chars)PI_BASH_JOB_TTL_MS: TTL para sessões concluídas (ms, limitado de 1 min a 3 h)
tools.exec.backgroundMs(padrão 10000)tools.exec.timeoutSec(padrão 1800)tools.exec.cleanupMs(padrão 1800000)tools.exec.notifyOnExit(padrão true): enfileira um evento do sistema + solicita heartbeat quando um exec em segundo plano termina.tools.exec.notifyOnExitEmptySuccess(padrão false): quando true, também enfileira eventos de conclusão para execuções em segundo plano bem-sucedidas que não produziram saída.
Ferramenta process
Ações:list: sessões em execução + concluídaspoll: drena nova saída de uma sessão (também informa status de saída)log: lê a saída agregada (compatível comoffset+limit)write: envia stdin (data,eofopcional)send-keys: envia tokens de tecla explícitos ou bytes para uma sessão com suporte a PTYsubmit: envia Enter / carriage return para uma sessão com suporte a PTYpaste: envia texto literal, opcionalmente envolvido em modo de colagem entre colcheteskill: encerra uma sessão em segundo planoclear: remove uma sessão concluída da memóriaremove: mata se estiver em execução; caso contrário, limpa se estiver concluída
- Apenas sessões em segundo plano são listadas/persistidas na memória.
- Sessões são perdidas ao reiniciar o processo (sem persistência em disco).
- Logs de sessão só são salvos no histórico do chat se você executar
process poll/loge o resultado da ferramenta for registrado. processé limitado por agente; ele só vê sessões iniciadas por esse agente.- Use
poll/logpara status, logs, confirmação silenciosa de sucesso ou confirmação de conclusão quando a ativação automática ao concluir não estiver disponível. - Use
write/send-keys/submit/paste/killquando precisar de entrada ou intervenção. process listinclui umnamederivado (verbo do comando + alvo) para inspeções rápidas.process logusaoffset/limitbaseados em linha.- Quando
offsetelimitsão ambos omitidos, ele retorna as últimas 200 linhas e inclui uma dica de paginação. - Quando
offseté fornecido elimité omitido, ele retorna deoffsetaté o fim (sem limite de 200). - Polling é para status sob demanda, não para agendamento em loop de espera. Se o trabalho deve acontecer depois, use cron.