返回资讯中心
外部精选
软件工程
#开发者实时流

Codex 每次新建会话都会自动调用模型生成标题,消耗额外 token

来源标题:The tokens in your agent harness

Codex 会在你首次向新会话输入内容时,将最长 960 字节的提示词连同命名指令发给 LLM,自动生成不超过五个词的线程标题。优先使用 gpt-5.6-luna 低推理模式,否则调用当前选定模型。作者借此提醒使用开源 agent harness 的用户关注 token 实际流向。

Hacker News 最新armcat2026/11/1 · 昨天13 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

了解 Codex 如何消耗你的额外 token。

我最近了解到,Claude Code 会把 15-20% 的 token 花在更新一行三个词的状态栏上。由于我几乎完全在 Codex 里工作,我决定去看看它的代码(Codex 是开源的,用 Rust 写成)。如果你在用某个开源 agent harness,无论是 Codex、pi、OpenCode 还是别的什么,我鼓励你去探究一下它实际是怎么运作的。

每当一个尚未命名的 thread 收到一条已完成的、非空的用户文本消息时,后台就会触发一个自动命名 thread 的流程。1, 2 比如当你开启一个新的 Codex 会话、在文本框里输入最初的指令时,就会发生这种情况。此时,完整的 prompt——包括命名 thread 的指令、标签以及用户的文本——会被限制在 960 字节以内,发送给 LLM。3, 4 返回的响应是结构化输出,最终得到一个 thread 标题,最好不超过五个词,即 36 个字符。首选的模型是 gpt-5.6-luna,reasoning effort 设为 low,前提是你登录的是 ChatGPT 且模型目录中存在该模型;否则就使用当前选中的模型。5

你也可以通过调用 /rename <TITLE> 显式重命名 thread,这样做不会产生任何费用。但是,如果你不带参数运行 /rename,Codex 会立即发起一次 LLM 调用,请求给出一个标题建议。该请求最多使用最近八条实质性的用户/助手消息,不包括助手的 commentary。6

接下来我看了实时活动指示器,想看看它是否和 Claude Code 的做法类似。结果发现并不类似。当使用支持它的模型时——也就是任何 reasoning 模型——reasoning summary 总是会随实际响应一起被请求。7 所以 Codex 是搭着标准请求的便车来实现实时活动指示器的。TUI 会接收 ResoningSummaryTextDelta,累积其文本,提取出最新的可用行,然后设置状态头部;并不存在单独的状态生成请求。

Codex TUI 有一个 catch-up recap 功能,可以通过 /recap 显式调用,但也会通过 tui.auto_recap = true 默认自动启用。自动 recap 使用当前模型,加上最近的可见变更和 recap 指令,生成包含结构化 summary 和可为空的 next_action 字段的结果。完整的 recap prompt 有一个字节上限,对应估计 8192 个 token,并且使用当前选中的模型来做 recap。8

Codex memories 是跨会话保留的持久笔记——有用的知识、先前的决策、你明示或暗示的偏好。可以通过 /memories 选项启用 memories。它有两个后台阶段,两者都会发起额外的 LLM 请求。

在提取阶段,LLM 会处理一个符合条件的过往 thread,记录有用的上下文,即你请求了什么、发现、变更、纠正以及未完成的工作。v2 的 prompt 明确要求保留不确定性,避免把单次任务指令变成通用的用户偏好。9

在整合阶段,一个内部 agent 会把这些记录合并成一个紧凑的索引,更新偏好和项目指针,并删除无依据或已被取代的说法。10 提取通常对每个选中的 thread 发起一次请求;整合是一个 agent,可能发起多次。默认情况下,提取使用 gpt-6-luna,整合使用 gpt-6.1-terra,均支持配置覆盖。你可以在 ~/.codex/memories_v2/ 中查看已存储的 memories。

最后是 guardian 任务。Guardian 是 Codex 的自动安全与权限审查器。它评估某个动作是否可能造成伤害,以及用户是否授权了其目标和副作用。它实现了一个后台分类器,Codex 可以在符合条件的动作开始时启动它,以判断当前工作流是高风险还是低风险。它使用 gpt-5.6-luna,本质上只是一个 prompt 11,在响应中返回 high/low 分类,并把结果转换成 1.0 或 0.0 的分数。

此外还有一个独立的内部 agent turn,它可以在评估即将执行的动作时暂缓执行。例如,它会判断该动作是否可能破坏数据或泄露敏感信息,或者是否遵循了必要的策略 12。结果是结构化输出,包含 allow/deny 的结果,并可选地带风险等级、授权等级和理由。审查器实际上可能涉及多次 LLM 请求,因为它会在这些过程中进行审查、检查文件并推理。

我刻意省略了更明确的功能,包括实际的响应处理(真正构建你的代码的那部分),以及上下文压缩。注意,关于压缩,如果你启用了后台压缩,压缩会在前台限制之前就开始,并并行生成候选。

理解 token 去向很重要,既有助于更好地理解计费以及你为什么触达速率限制,也有助于尽可能掌控你的 agentic harness。

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →