A OpenAI oferece Codex CLI Foi adicionado um novo comando chamado /goal。
Você define uma meta e ela continua funcionando, não perde o contexto em várias rodadas e não para até chegar lá.

Esse recurso foi lançado com a versão 0.128.0 da CLI do Codex, ainda é experimental e precisa ser ativado manualmente:
“Mantenha a meta ativa em várias rodadas. Se você não alcançá-la, não pare.
não desistir até atingir seu objetivo
E, em minha opinião, há de fato uma tendência oculta por trás desse recurso:Na era da IA, o processo está se tornando menos importante; o que importa é a meta.
01
Ralph Loop
entender /goalPrimeiro, você precisa falar sobre o Ralph Loop.
O nome vem de Ralph Wiggum, o garoto "sem noção, persistente e otimista" de Os Simpsons. O desenvolvedor Geoffrey Huntley batizou um Loop de Agente em homenagem a ele: defina uma meta para o Agente, deixe-o iterar sobre si mesmo e, quando falhar, comece novamente até que a meta seja atingida.
A VentureBeat até escreveu um artigo chamado "Como Ralph Wiggum passou dos Simpsons para o nome mais badalado da IA".
Na implementação original da comunidade, a abordagem do Ralph Loop era um pouco mais "violenta": ao final de cada rodada, o Agente inicia uma nova janela de contexto do zero, contando com os registros git e os arquivos de progresso para manter sua memória viva.
Isso equivale a entregar um relatório de transferência por escrito toda vez que você muda de turno.

E a do Codex /goal Por outro lado, a empresa tomou um caminho diferente.
É umaLoop contínuo em um processoSe o alvo permanecer ativo em todas as rodadas da mesma sessão, não será necessário iniciar um novo contexto do zero.
Em outras palavras, o Ralph Loop da comunidade é como uma corrida de revezamento, com um recém-chegado em cada bastão.
Revezamento x Maratona
E a do Codex /goalO que é mais parecido com um corredor de maratona que corre do início ao fim e pode fazer uma pausa quando se cansa, mas não muda.
02
Como usar
O uso é simples.
Certifique-se de que a versão do Codex CLI seja superior a 0.128.0 e, em seguida, no arquivo de configuração ~/.codex/config.toml Adicione um parágrafo:
●●●
[features]
goals =true
└
Depois de aberto, insira-o na CLI do Codex:
●●●
/goal 重构所有的数据库查询,添加连接池
└
O Codex começará a trabalhar em torno dessa meta, escrevendo código, executando testes, verificando resultados e, se a meta não for atingida após uma rodada, ele iniciará automaticamente a próxima rodada.
Instruções de recebimento.
Além disso, há vários comandos auxiliares:
• /goal pauseSuspender o alvo atual
• /goal resumeRetomada de metas suspensas
• /goal clearMetas de compensação
Se você pressionar Ctrl+C para interromper, o alvo será automaticamente pausado e será retomado automaticamente na próxima vez que você retomar o thread.
Uma dica prática é que, se a descrição de sua meta for muito longa, escrevê-la diretamente no comando pode ser errado. Você pode escrever as instruções detalhadas em um .md e, em seguida, use o arquivo /goal follow instructions.md para executar.
Essa é uma técnica que recomendei várias vezes há muito tempo, e colocá-la em um arquivo tem o benefício adicional de não ser comprimida pelo contexto e perder detalhes.
Essa versão também vem com um /side você pode abrir temporariamente uma sessão de ramificação para fazer perguntas sem interromper o alvo da linha principal. Quando terminar, pressione Esc para retornar à linha principal, e a sessão de ramificação será descartada. Esses dois comandos funcionam muito bem juntos.

Mas ...... isso deve ser feito para evitar suspeitas de plágio Claude Código, ou simplesmente chamá-lo de /btw, consulte: Claude Code adiciona o recurso /btw
03
Ele não vai parar, mas não é estúpido.
A maior preocupação com um agente que faz loops automaticamente é: ele se esvaziará sobre coisas sem sentido?
A implementação do Codex inclui um conjunto de mecanismos de proteção.
Supressão de chamadas com ferramenta zero.Se o agente não chamar nenhuma ferramenta (nenhum código escrito, nenhum comando executado, nenhum arquivo lido) durante uma rodada de continuação, o sistema decidirá que está "preso" e interromperá automaticamente o loop, não o acionando novamente até que haja uma nova entrada.
Controle orçamentário.Cada alvo pode ser definido token Orçamento e limite de tempo. Quando o consumo excede o orçamento, o sistema injeta um prompt informando ao modelo: não inicie uma nova tarefa, resuma o progresso e forneça ao usuário uma próxima etapa clara.
Cão robótico com três coleiras
Conclusão dos protocolos de auditoria.No início de cada execução, o sistema injeta um comando de desenvolvedor oculto no modelo, solicitando que ele execute um conjunto de "auditorias de conclusão":
1. desconstrução dos objetivos em produtos específicos
2. criar uma lista de verificação para mapear cada requisito para a evidência real
3. exame de documentos reais, saídas, resultados de testes
4. não se pode presumir que uma meta foi atingida simplesmente porque "o teste foi aprovado".
Ou seja, o sistema evita um problema comum com modelos no nível do mecanismo:Confundir "eu produzi algo" com "eu alcancei uma meta".。
O fato de um teste ser aprovado não significa que a função esteja completa, e o fato de o código ter sido escrito não significa que os requisitos foram atendidos. Essa "aceitação de proxy-evidência" é um dos modos de falha mais insidiosos no loop do agente.
04
análise de código-fonte
O Codex é de código aberto, portanto, é fácil ver como ele é implementado. Atualizei o código e fiz com que a IA o virasse para mim.
A lógica central da função está em codex-rs/core/src/goals.rs No caso do Rust, são cerca de 1.570 linhas de código Rust.
O sistema inteiro tem três camadas:
Camada persistente: O estado do destino existe no banco de dados SQLite e não é perdido quando o processo é reiniciado ou o thread é retomado. Os destinos têm quatro estados: Active (ativo), Paused (pausado), BudgetLimited (limitado pelo orçamento) e Complete (concluído).
Camada de ferramentas: O sistema expõe três ferramentas ao modelo:get_goal(Ler o alvo atual),create_goal(Criação de objetivos),update_goal(atualizar o status do alvo).
arquitetura de três camadas
Há uma decisão importante de design aqui:O modelo só pode marcar uma meta como "concluída", ela não pode ser pausada ou retomada. Pausar e retomar é algo que somente o usuário pode fazer.
A lógica no código-fonte é:
●●●
if args.status != ThreadGoalStatus::Complete {
return Err(FunctionCallError::RespondToModel(
"update_goal can only mark the existing goal complete"
));
}
└
Por que ele foi projetado dessa forma?
Isso evita que o modelo fique "preguiçoso" por conta própria e faça uma pausa quando sentir que está quase pronto (isso não é uma experiência?). .
A partir daí, depois que você definir uma meta, o modelo poderá concluí-la ou você poderá desistir.
Não existe uma terceira via.
Continuando a executar camadas: Essa é a parte mais central. No final de cada rodada, o sistema executa uma cadeia de verificações:
1. se a função de destino está ativada ou não
2. disponibilidade de alvos ativos no momento
3. se outras rodadas estão sendo realizadas
4. filas de mensagens pendentes
5. se a continuação da execução foi inibida (zero chamadas de ferramenta na rodada anterior)
6. se está no modo Planejar (os alvos são ignorados no modo Planejar)
Depois que todos passam, o sistema injeta uma mensagem de desenvolvedor contendo uma descrição do objetivo, o uso do orçamento e o conjunto de protocolos para concluir a auditoria. Em seguida, começa uma nova rodada.
Há mais um pequeno detalhe:O cálculo de tokens conta apenas os tokens de entrada não armazenados em cache e os tokens de saída. Os acessos ao cache não são contabilizados no orçamento. Ou seja, o orçamento registra a "carga de trabalho adicional" e não há cobrança pela releitura do contexto existente.
O desenvolvedor desse recurso é Eric Traut, autor do Pyright, o verificador de tipos Python, que Felipe Coury chama de "um dos melhores profissionais com quem você trabalha todos os dias".
05
função experimental
É claro que sim./goal Afinal, ele ainda é um recurso experimental e tem algumas limitações no momento.
Atualmente, ele está disponível apenas na CLI, o aplicativo de desktop Codex ainda não o tem.
Além disso, se a cota da API se esgotar./goal pode ficar preso em um loop incômodo BUG: continua enviando solicitações, continua recebendo erros de esgotamento de cota e continua tentando novamente ...... Algumas pessoas chamam isso de "loop de erros do Ralph".

No modo Planejar, o sistema de metas é automaticamente ignorado. Ou seja, não é possível planejar e definir metas ao mesmo tempo; os dois modos são mutuamente exclusivos.
Isso é compreensível, o objetivo é estabelecer boas metas, um pouco estranho ......
No entanto, o julgamento atual de conclusão de metas ainda sofre com o problema do "encerramento prematuro". Às vezes, o modelo considerará uma meta concluída apenas porque produz um artefato, embora tenha concluído apenas o trabalho de superfície.
06
Mais importante ainda, o objetivo.
/goal A quantidade de código é pequena, e o conceito não é complexo. Mas ele representa uma direção que, na minha opinião, é provavelmente mais significativa do que a maioria das "grandes atualizações".
Porque não são os limites dos recursos da IA que mudam, mas sim osInterface colaborativa entre pessoas e IA。
De "você diz uma coisa e eu faço outra" a "você define a meta e eu sou responsável por todo o processo".
De "diálogo", passou a ser "comissionamento".
Vale mais a pena pensar na mudança de mentalidade de fim como início por trás disso do que na função em si.
Também estou basicamente menos envolvido no processo de escrever código prático em minha própria programação agora. Gasto mais tempo e energia em: o que exatamente estou tentando realizar? Como verifico se esse objetivo foi realmente alcançado?
Como definir as metas corretas, como descobrir exatamente o que você vai fazer?Esse é, de fato, o julgamento e o trabalho mais importante e de maior teste.
No passado, estávamos acostumados a uma maneira de trabalhar "orientada para o processo": primeiro planejando as etapas e depois executando-as passo a passo, com pessoas observando cada etapa.
Mas o AI Agent está virando essa lógica de cabeça para baixo:Você só precisa definir o ponto final; o caminho é do próprio agente.
A diferença entre isso e a programação tradicional é como a diferença entre um aplicativo de navegação e um mapa desenhado à mão. Na era dos mapas desenhados à mão, você tinha que planejar sua própria rota e lembrar-se de cada cruzamento. Com a navegação, você só precisa digitar o destino, já que a estrada a ser tomada, como evitar o trânsito, onde virar à direita, é uma questão de navegação.
Orientação para processos versus orientação para metas
E Karpathy expressou uma opinião semelhante em sua recente palestra AI Ascent. Ele resumiu a tendência como Software 3.0 (consulte a postagem anterior:A era do software 3.0 está chegando):
“Enquanto o software tradicional automatiza o que você pode especificar, a IA automatiza o que você pode verificar.
O fio condutor da evolução das três gerações de paradigmas de software é, na verdade, a mudança na forma como os seres humanos estão envolvidos.
De how (diga à máquina o que fazer), a show (mostre à máquina o que fazer), a what (diga à máquina o que você deseja).
Autor → Treinador → Comandante
/goal que é uma espécie de nota de rodapé mais recente neste tópico.
Você define a meta, que é o estado final verificável. O agente encontra o caminho sozinho. Você valida o resultado e ele cuida do processo.
Quando o agente começar a gerenciar seu próprio progresso e puder de fato atingir as metas que definir, só restará uma coisa para os humanos fazerem bem:
Descubra o que você realmente quer.
◇ ◆ ◇
- Repositório de código aberto da CLI do Codex: https://github.com/openai/codex
- Postagem original de Felipe Coury: https://x.com/fcoury/status/2049917871799636201
- Realização da comunidade de Ralph Loop: https://github.com/Th0rgal/open-ralph-wiggum




























