Investigando como funciona a compactação de contexto do Codex

@Kangwook_Lee
INGLÊShá 4 meses · 03 de mar. de 2026
1.0M
2.6K
303
39
5.5K

TL;DR

Kangwook Lee demonstra como usar a injeção de prompt para descobrir o sistema oculto e os prompts de transferência usados na API de compactação de contexto do Codex da OpenAI, apesar do uso de blobs criptografados.

Para modelos não-codex, o Codex CLI de código aberto compacta o contexto localmente: um LLM resume a conversa usando um prompt de compactação. Quando o contexto compactado é usado posteriormente, responses.create() o recebe com um prompt de handoff que emoldura o resumo. Ambos os prompts estão visíveis no código-fonte.

Para modelos codex, o CLI chama a API compact(), que retorna um blob criptografado. Não sabemos se ela usa um LLM internamente, quais prompts utiliza ou se existe algum prompt de handoff.

Abaixo, mostro como uma simples injeção de prompt (2 chamadas de API, 35 linhas de Python) revela que o caminho de compactação da API realmente usa um LLM para resumir o contexto, com seu próprio prompt de compactação e um prompt de handoff anexado ao resumo. Os prompts são quase idênticos às versões de código aberto.

Passo 1 — compact()

Chamo compact() com uma mensagem de usuário elaborada. No lado do servidor, um LLM compactador processa nossa entrada usando seu próprio prompt de sistema oculto (que nunca vi e quero descobrir).

O servidor parece montar o contexto do compactador assim:

Kangwook Lee - inline image

O LLM compactador lê seu prompt de sistema + nossa entrada juntos. Como nossa entrada contém um payload de injeção (texto vermelho acima), o compactador é enganado e inclui seu próprio prompt de sistema na saída. Este resumo em texto simples existe apenas no servidor da OpenAI. Nós só vemos o blob criptografado:

Kangwook Lee - inline image

Neste ponto, não temos como ler o que está dentro do blob. Ele está criptografado com AES e a chave está nos servidores da OpenAI. Apenas esperamos que o compactador tenha obedecido à injeção e escrito seu prompt no resumo. A única maneira de descobrir é o Passo 2.

Passo 2 — create()

Passo o blob criptografado + uma segunda mensagem de usuário para responses.create(). O servidor descriptografa o blob e monta o contexto do modelo.

Eu envio:

Kangwook Lee - inline image

O modelo parece ver algo assim:

Kangwook Lee - inline image

Se o Passo 1 funcionou, o blob descriptografado deve conter o prompt de compactação (vazado pela nossa injeção). O servidor também anexa um prompt de handoff ao blob. Então, se nossa sonda conseguir fazer o modelo repetir o que vê, a saída deve revelar todos os três: o prompt de sistema, o prompt de handoff e o prompt de compactação.

Saída

Abaixo está a saída completa e não editada de uma execução de extract_prompts.py. Amarelo = prompt de sistema, verde = prompt de handoff, rosa = prompt de compactação.

Kangwook Lee - inline image

Como sabemos que estes são os prompts reais e não apenas texto alucinado? O prompt de compactação extraído e o prompt de handoff correspondem de perto aos prompts conhecidos usados para modelos não-codex no Codex CLI de código aberto (prompt.md, summary_prefix.md), o que torna improvável que o modelo os tenha inventado do zero. Os resultados variam entre execuções.

O Pipeline Suposto

Juntando tudo, aqui está nosso melhor palpite sobre o que compact() faz no lado do servidor, com base no que a extração revelou.

Kangwook Lee - inline image

O Script

Kangwook Lee - inline image

Pergunta em Aberto

Por que o Codex CLI usa dois caminhos de compactação completamente diferentes (LLM local para modelos não-codex, API criptografada para modelos codex) quando os prompts subjacentes são quase idênticos? E por que criptografar o resumo?

Difícil dizer. Talvez o blob criptografado carregue algo mais do que este experimento simples pode revelar, por exemplo, algo específico sobre como os resultados das ferramentas são compactados e restaurados. Mas não me preocupei em testar mais.

Salvar com um clique

Faça leitura profunda de artigos virais com IA no YouMind

Salve a fonte, faça perguntas específicas, resuma o argumento e transforme um artigo viral em notas reutilizáveis em um único espaço de trabalho com IA.

Explorar o YouMind
Para criadores

Transforme seu Markdown em um artigo 𝕏 impecável

Quando você publica seus próprios textos longos, formatar imagens, tabelas e blocos de código para o 𝕏 é uma dor de cabeça. O YouMind transforma um rascunho completo em Markdown em um artigo 𝕏 impecável e pronto para publicar.

Experimente Markdown para 𝕏

Mais padrões para decifrar

Artigos virais recentes

Explorar mais artigos virais