Manter Claude trabalhando em direção a um objetivo
Defina uma condição de conclusão com /goal e Claude continua trabalhando até que seja atendida, um modelo a julgue impossível ou um erro que você tenha que corrigir limpe o objetivo.
O comando /goal define uma condição de conclusão e Claude continua trabalhando em direção a ela sem que você solicite cada etapa. Após cada turno, um modelo pequeno e rápido verifica se a condição é atendida. Se o modelo julgar que ainda não foi atendida, Claude inicia outro turno em vez de devolver o controle a você. O objetivo é limpo automaticamente assim que a condição é atendida, se o modelo julgar a condição impossível de satisfazer, ou se um turno falhar em um erro que você tenha que corrigir.
Use um objetivo para trabalho substancial com um estado final verificável:
- Migrar um módulo para uma nova API até que cada site de chamada compile e os testes passem
- Implementar um documento de design até que todos os critérios de aceitação sejam atendidos
- Dividir um arquivo grande em módulos focados até que cada um esteja dentro de um orçamento de tamanho
- Trabalhar através de uma fila de problemas rotulados até que a fila esteja vazia
Comparar formas de manter uma sessão em execução
Três abordagens mantêm a sessão atual em execução entre prompts. Escolha com base no que deve iniciar o próximo turno:
| Abordagem | Próximo turno começa quando | Para quando |
|---|---|---|
/goal |
O turno anterior termina, ou uma verificação de inatividade vence enquanto o trabalho em segundo plano mantém o objetivo aguardando, até três vezes por objetivo entre seus prompts | Um modelo confirma que a condição é atendida ou julga impossível, ou um turno falha em um erro que você tem que corrigir, ou você executa /goal clear |
/loop |
Um intervalo de tempo decorre | Você o interrompe, ou Claude decide que o trabalho está concluído |
| Stop hook | O turno anterior termina | Seu próprio script ou prompt decide |
/goal e um Stop hook são acionados após cada turno. /goal é um atalho com escopo de sessão: você digita uma condição e ela fica ativa apenas para a sessão atual. Um Stop hook reside em seu arquivo de configurações, se aplica a cada sessão em seu escopo e pode executar um script para verificações determinísticas ou um prompt para avaliações baseadas em modelo.
Modo automático por si só aprova chamadas de ferramentas dentro de um único turno, mas não inicia um novo. Claude para quando julga o trabalho concluído. /goal adiciona um avaliador separado que verifica sua condição após cada turno, portanto a conclusão é decidida por um modelo novo em vez daquele que está fazendo o trabalho. Os dois são complementares: o modo automático remove prompts por ferramenta e /goal remove prompts por turno.
As abordagens acima mantêm a sessão atual em execução. Você também pode agendar trabalho que seja executado independentemente de qualquer sessão aberta, como testes noturnos ou triagem matinal. Consulte opções de agendamento para rotinas em nuvem e tarefas agendadas de desktop.
Usar `/goal`
Um objetivo pode estar ativo por sessão. O mesmo comando define, verifica e limpa dependendo do argumento.
Definir um objetivo
Execute /goal seguido pela condição que você deseja satisfazer. Se um objetivo já estiver ativo, o novo o substitui.
/goal all tests in test/auth pass and the lint step is clean
Definir um objetivo inicia um turno imediatamente, com a própria condição como diretiva. Você não precisa enviar um prompt separado. Enquanto o objetivo está ativo, um indicador ◎ /goal active mostra há quanto tempo o objetivo está em execução.
Um objetivo não altera seu modo de permissão. Para permitir que turnos de objetivo sejam executados sem supervisão, execute /goal em modo automático. Em modo Manual, Claude ainda solicita antes de chamadas de ferramentas que suas configurações ainda não permitem, como o comando de teste acima.
Enquanto o objetivo está ativo, a transcrição mostra cada veredicto que o avaliador retorna, e você pode pressionar Ctrl+O para ver o motivo por trás dele. A visualização de status também mostra o motivo mais recente, para que você possa ver para o que Claude está trabalhando a seguir.
Escrever uma condição eficaz
O avaliador julga sua condição em relação ao que Claude apresentou na conversa. Ele não executa comandos ou lê arquivos independentemente, portanto escreva a condição como algo que a própria saída de Claude possa demonstrar. "Todos os testes em test/auth passam" funciona porque Claude executa os testes e o resultado aparece na transcrição para o avaliador ler.
Uma condição que se mantém em muitos turnos geralmente tem:
- Um estado final mensurável: um resultado de teste, um código de saída de compilação, uma contagem de arquivos, uma fila vazia
- Uma verificação declarada: como Claude deve provar isso, como "
npm testsai com 0" ou "git statusestá limpo" - Restrições que importam: qualquer coisa que não deve mudar no caminho, como "nenhum outro arquivo de teste é modificado"
A condição pode ter até 4.000 caracteres.
Para limitar quanto tempo um objetivo é executado, inclua uma cláusula de turno ou tempo na condição, como or stop after 20 turns. Claude relata progresso em relação a essa cláusula a cada turno e o avaliador a julga a partir da conversa.
Verificar status
Execute /goal sem argumentos para ver o estado atual.
/goal
Se um objetivo está ativo, o status mostra:
- A condição
- Há quanto tempo está em execução
- Quantos turnos foram avaliados
- O gasto de token atual
- A razão mais recente do avaliador
O número de turnos e a razão mais recente aparecem após a primeira avaliação ter sido executada.
Se nenhum objetivo está ativo, mas um foi alcançado anteriormente na sessão, o status mostra a condição alcançada junto com sua duração, contagem de turnos e gasto de token.
Limpar um objetivo
Execute /goal clear para remover um objetivo ativo antes que ele seja resolvido.
/goal clear
Claude imprime Goal cleared: seguido pela condição para confirmar, ou No goal set se nada estava ativo.
stop, off, reset, none e cancel são aceitos como aliases para clear. Executar /clear para iniciar uma nova conversa também remove qualquer objetivo ativo.
Retomar com um objetivo ativo
Quando você retoma uma sessão, Claude Code restaura um objetivo que ainda estava ativo quando a sessão terminou. Claude Code o restaura em cada rota de retomada: --continue, --resume com um ID de sessão, nome ou caminho do arquivo de transcrição, e o seletor de sessão. Antes da v2.1.239, Claude Code restaurava o objetivo em cada rota, exceto no seletor claude --resume.
Claude Code mantém a condição, mas redefine a contagem de turnos, cronômetro e linha de base de gasto de token. Ele não restaura um objetivo que já foi alcançado ou limpo.
Executar de forma não interativa
/goal funciona em modo não interativo, no aplicativo desktop e através de Remote Control. Definir um objetivo com -p executa o loop até a conclusão em uma única invocação:
claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"
Com a saída de texto padrão, nada é impresso até que a execução termine, portanto um objetivo que executa muitos turnos pode parecer travado. Adicione --output-format stream-json --verbose para emitir cada mensagem conforme o loop é executado.
Interrompa o processo com Ctrl+C para parar um objetivo não interativo antes que ele seja resolvido.
Como a avaliação funciona
/goal é um wrapper em torno de um Stop hook baseado em prompt com escopo de sessão. Cada vez que Claude termina um turno, Claude Code envia a condição e a conversa até agora para seu modelo pequeno e rápido configurado, que é padronizado para Haiku na Claude API; em um provedor de terceiros, verifique sua página do provedor para o padrão da plataforma. O modelo retorna um de três vereditos, cada um com uma breve razão:
- Ainda não atendido: Claude continua trabalhando e toma a razão como orientação para o próximo turno.
- Atendido: Claude Code limpa o objetivo e registra uma entrada alcançada na transcrição.
- Impossível: o avaliador julgou que a condição nunca pode ser satisfeita. Claude Code limpa o objetivo e registra uma entrada falhada na transcrição junto com a razão. Você não precisa limpá-lo você mesmo.
Se Claude continuar respondendo ao avaliador sem fazer progresso (nenhum uso de ferramenta por vários turnos seguidos), Claude Code para o loop, imprime um aviso e retorna o controle para você com o objetivo ainda definido. A avaliação retoma após seu próximo prompt. O guia de hooks explica o mecanismo subjacente.
Erros que você precisa corrigir limpam o objetivo
Se um turno falhar em um erro que não será limpo até você corrigi-lo, Claude Code limpa o objetivo e imprime um aviso nomeando a causa. O aviso começa com Goal cleared after an unrecoverable error e termina com Run /goal again to continue. Corrija a causa, então defina o objetivo novamente com /goal <condition>. Quatro tipos de falha limpam o objetivo:
- Uma falha de autenticação, quando Claude Code gerencia suas próprias credenciais. Quando um host as gerencia para você, como o aplicativo desktop, a extensão VS Code ou uma sessão na nuvem, Claude Code deixa o objetivo ativo porque o host restaura o acesso por conta própria.
- Um saldo de crédito esgotado
- Um overflow de contexto que auto-compactação não conseguiu limpar
- Um modelo que não está disponível
Após qualquer outra falha, incluindo erros transitórios como limites de taxa e servidores sobrecarregados, Claude Code deixa o objetivo ativo.
Trabalho em segundo plano adia a avaliação
Se um subagente ou um comando shell em segundo plano ainda estiver em execução quando um turno termina, Claude Code pula a avaliação para esse turno. Ele avalia no final do próximo turno que termina sem nenhum trabalho em segundo plano em execução. Quando o trabalho em segundo plano termina, Claude Code entrega o resultado para Claude como um novo turno, então você não precisa fazer um prompt.
Uma vez que o trabalho em segundo plano mantém o objetivo esperando por 30 minutos, uma verificação é devida. Na verificação, Claude Code lista as tarefas em execução e pede a Claude para ler sua saída, continuar esperando se estiverem progredindo e corrigir ou parar qualquer uma que esteja travada. Após a primeira verificação, Claude Code espera o dobro do tempo antes de cada verificação posterior, até quatro vezes o primeiro intervalo: com o padrão, 1 hora após a primeira verificação, depois a cada 2 horas. Claude Code entrega uma verificação devida, a primeira incluída, de uma de duas maneiras:
- Quando um turno termina: Claude Code entrega a verificação no final do próximo turno que termina com o trabalho ainda em execução. Em uma sessão não interativa, como uma iniciada com
-p, esta é a única maneira que Claude Code entrega verificações. - Enquanto a sessão está ociosa: em uma sessão interativa, Claude Code também inicia um turno por conta própria para entregar a verificação em vez de esperar pelo seu próximo prompt. Se o trabalho em segundo plano parou sem relatar um resultado, Claude Code pede a Claude para continuar em direção ao objetivo. Claude Code inicia no máximo três verificações ociosas por objetivo entre seus prompts. Na terceira verificação ociosa, Claude Code diz que as verificações ociosas estão pausadas até você enviar outro prompt. Antes da v2.1.246, as verificações ociosas eram ilimitadas. As verificações ociosas requerem Claude Code v2.1.236 ou posterior.
Antes da v2.1.239, apenas as verificações ociosas recuavam dessa forma; uma verificação entregue no final de um turno recorria no primeiro intervalo.
Para alterar o primeiro intervalo, defina CLAUDE_CODE_GOAL_CHECKIN_MINUTES. Claude Code usa seu valor no lugar do intervalo de 30 minutos e dimensiona os intervalos posteriores com ele. Defina como 0 para desativar as verificações. As verificações requerem Claude Code v2.1.234 ou posterior.
Modelo de avaliação e custo
Para avaliar em um modelo diferente, defina ANTHROPIC_DEFAULT_HAIKU_MODEL.
Claude Code lê ANTHROPIC_DEFAULT_HAIKU_MODEL em todos os lugares onde usa o modelo pequeno e rápido, não apenas para avaliação de /goal. Quando você o define, Claude Code também resolve o alias haiku para esse modelo e executa funcionalidade em segundo plano, como resumo de conversa, nele.
O avaliador é executado no provedor para o qual sua sessão está configurada. Ele não chama ferramentas, portanto só pode julgar o que Claude já apresentou na conversa.
Os tokens de avaliação são cobrados no modelo pequeno e rápido configurado para seu provedor e são tipicamente negligenciáveis em comparação com o gasto do turno principal.
Requisitos
Claude Code disponibiliza /goal sob a mesma regra de confiança do espaço de trabalho que hooks em arquivos de configurações, porque o avaliador faz parte do sistema de hooks. /goal também não está disponível quando disableAllHooks é true após a precedência de configurações ser aplicada, ou quando allowManagedHooksOnly está definido nas configurações gerenciadas. Em cada caso, o comando informa por que em vez de fazer nada silenciosamente.
Veja também
- Executar um prompt repetidamente com
/loop: re-executar em um intervalo de tempo em vez de até que uma condição seja atendida - Hooks baseados em prompt: escreva seu próprio Stop hook quando precisar de lógica de avaliação personalizada
- Modo automático: aprove chamadas de ferramentas automaticamente para que cada turno de objetivo seja executado sem supervisão
- Comparação de agendamento: execute trabalho em um cronograma independente de qualquer sessão aberta