> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# Codex上下文压缩机制研究
- URL: https://www.hubwiz.com/blog/investigating-the-context-compact-mechanism-in-codex/
- Published: 2026-03-05T14:26:10.000Z
- Updated: 2026-03-05T14:26:10.000Z
- Description: 对于 Codex 模型，CLI 会调用 compact() API，该 API 返回一个加密的 blob。我们不知道它内部是否使用了 LLM，它使用了哪些提示符，以及是否存在交接提示符。
- Author: admin
- Tags: AGENT, OPENAI CODEX, #Import 2026-10-14 14:41

对于非 Codex 模型，开源 Codex CLI 会在本地压缩上下文：LLM 使用压缩提示符概括对话。当稍后使用压缩后的上下文时，`responses.create()` 会接收它，并附带一个用于构建摘要的交接提示符。这两个提示符在源代码中都可见。

对于 Codex 模型，CLI 会调用 `compact()` API，该 API 返回一个加密的 blob。我们不知道它内部是否使用了 LLM，它使用了哪些提示符，以及是否存在交接提示符。

下面，我将展示如何通过简单的提示符注入（2 次 API 调用，35 行 Python 代码）来揭示 API 压缩路径确实使用了 LLM 来概括上下文，并带有它自己的压缩提示符和一个附加在摘要前面的交接提示符。这些提示符与开源版本几乎完全相同。

## 1、compact()

我使用精心构造的用户消息调用 `compact()`。在服务器端，一个压缩 LLM 使用其自身隐藏的系统提示符（我从未见过，想要弄清楚）来处理我们的输入。

服务器似乎是这样组装压缩器的上下文的：

![](https://www.hubwiz.com/blog/content/images/2026/03/image-34.png)

压缩器 LLM 会同时读取其系统提示符和我们的输入。由于我们的输入包含注入有效载荷（上图中的红色文本），压缩器被诱骗在其输出中包含自身的系统提示符。此明文摘要仅存在于 OpenAI 的服务器上。我们只能看到加密后的 blob：

![](https://www.hubwiz.com/blog/content/images/2026/03/image-35.png)

此时，我们无法读取 blob 内部的内容。它采用 AES 加密，密钥位于 OpenAI 的服务器上。我们只能希望压缩器响应了注入指令，并将其提示符写入了摘要中。唯一的方法是执行步骤 2。

## 2、 create()

我将加密后的 blob 和第二个用户消息传递给 responses.create()。服务器解密 blob 并组装模型的上下文。

我发送：

![](https://www.hubwiz.com/blog/content/images/2026/03/image-36.png)

模型似乎看到了类似这样的内容：

![](https://www.hubwiz.com/blog/content/images/2026/03/image-37.png)

如果步骤 1 成功，解密后的 blob 应该包含压缩提示符（由我们的注入泄露）。服务器还会在 blob 前面添加一个交接提示符。因此，如果我们的探测程序成功让模型复现它所看到的内容，输出结果应该会显示所有三个提示：系统提示、交接提示和压缩提示。

## 3、输出结果

以下是 extract\_prompts.py 运行一次后的完整输出结果（未经编辑）。黄色代表系统提示，绿色代表交接提示，粉色代表压缩提示。

![](https://www.hubwiz.com/blog/content/images/2026/03/image-39.png)

我们如何确定这些是真实的而不是模型臆造的文本？提取出的压缩提示和交接提示与开源 Codex CLI 中用于非 Codex 模型的已知提示（prompt.md、summary\_prefix.md）非常吻合，这使得模型不太可能凭空捏造这些提示。每次运行的结果都会有所不同。

## 4、推测的流程

综合所有信息，以下是我们根据提取结果对 compact() 函数在服务器端执行的操作的最佳推测。

![](https://www.hubwiz.com/blog/content/images/2026/03/image-40.png)

## 5、脚本

![](https://www.hubwiz.com/blog/content/images/2026/03/image-41.png)

## 6、未解之谜

为什么 Codex CLI 使用了两种完全不同的压缩路径（非 Codex 模型使用本地 LLM，Codex 模型使用加密 API），而底层提示却几乎相同？而且为什么要加密摘要？

很难说。也许加密的数据块包含的信息比这个简单的实验所能揭示的更多，例如，关于工具结果如何压缩和恢复的具体信息。但我没有进行更深入的测试。

---

原文链接：[Investigating how Codex context compaction works](https://x.com/Kangwook%5FLee/status/2028955292025962534?ref=hubwiz.com)

汇智网翻译整理，转载请标明出处