news 2026/9/14 2:24:06

context-mode 在 Codex CLI 上不生成压缩前快照怎么排查?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
context-mode 在 Codex CLI 上不生成压缩前快照怎么排查?

context-mode 在 Codex CLI 上不生成压缩前快照怎么排查?

【免费下载链接】context-modeContext window optimization for AI coding agents. Sandboxes tool output (98% reduction), persists session memory, and enforces routing across 17 platforms via MCP + hooks.项目地址: https://gitcode.com/GitHub_Trending/cl/context-mode

在 Codex CLI 里使用 context-mode 时,对话被压缩(compaction)之后,模型应该能从上次的工作状态继续:文件、任务、决策、未解决的错误都在。这个能力依赖PreCompact钩子——它在压缩发生前把会话事件写成一份恢复快照存进session_resume表,随后由SessionStart(source 为"compact")把快照取回并注入上下文。

如果你在压缩后发现 context-mode 没有生成这份压缩前快照,问题通常出在三处之一:

  1. Codex CLI 版本较旧,运行时根本不发PreCompact事件(文档明确说明该支持是 runtime-gated);
  2. 钩子功能开关没打开,hooks.json里的PreCompact命令没有真正执行;
  3. precompact钩子执行了但内部报错,错误被写进了调试日志。

下面按这条线索逐步排查。排查前请确认你的环境满足前提:Node.js >= 22.5(或 Bun)、Codex CLI 已安装、context-mode 已按 README 的 Codex CLI 章节安装(插件路径或手动路径均可)。

第一步:确认快照机制依赖的两个事件都已触发

先理解数据流,排查才有方向。context-mode 的恢复流程是:

PreCompact fires → Read all session events from SQLite → Build priority-tiered XML snapshot (≤2 KB) → Store snapshot in session_resume table SessionStart fires (source: "compact") → Retrieve stored snapshot → Write structured events file → auto-indexed into FTS5 → Build Session Guide with 15 categories → Inject <session_knowledge> directive into context

也就是说,"不生成快照"的直接原因只能是PreCompact没有触发,或者钩子触发了但执行失败。而PreCompact能否触发,第一道门槛是 Codex 本身的构建版本。

第二步:检查 Codex CLI 版本是否发出 PreCompact 事件

docs/platform-support.md 在 Codex CLI 一节的 Known Issues 中写明:

PreCompact support is runtime-gated: context-mode configures it and treats a missing registration as a warning, because older Codex builds may not emit the event.

README 的 Codex CLI 安装章节也有对应说明:PreCompact支持是 runtime-gated 的,在 Codex CLI 0.130.0 中已存在,而公开的 Codex hooks 文档可能滞后于实际发布的 hook 事件列表——旧版本 Codex 构建不会发出PreCompact,也就不会创建压缩前快照

用终端确认你的版本:

codex --version
  • 如果你的版本低于 0.130.0,这就不是 context-mode 的配置问题,而是构建能力缺失。对应的解决路径是升级 Codex CLI 到会发出PreCompact的版本;在旧版本上,context-mode 侧没有可以绕过该限制的开关。
  • 如果版本满足要求,继续往下排查钩子配置。

第三步:确认钩子功能开关已启用

Codex 的钩子受[features]开关控制。context-mode 的钩子(包括precompact)只有在功能开关打开、且 Codex 信任这些钩子命令时才会执行。

插件安装路径

如果你是通过 marketplace 安装的插件,检查~/.codex/config.toml(Windows 下为%USERPROFILE%\.codex\config.toml),确认存在:

[features] plugin_hooks = true hooks = true

两个标志缺一不可:hooks打开 Codex 的钩子系统,plugin_hooks让插件自带的钩子生效。README 同时说明了一个判断细节:ctx stats能跑通只能证明插件的 MCP server 已安装且可达,不能证明钩子被信任或正在运行。所以不要用ctx stats正常来推断钩子状态。

另外,插件钩子在 Codex 提示批准钩子命令(hook approval)之后才真正激活——如果 Codex 弹过钩子审批而你没确认,PreCompact不会被触发。

手动安装路径

如果 Codex 构建没有plugin_hooks,你走的是手动路径(npm install -g context-mode+ 配置~/.codex/config.toml~/.codex/hooks.json),那么:

  1. 确认~/.codex/config.toml里有[features]hooks = true(旧别名[features].codex_hooks = true在当前 Codex 构建中仍被接受,但 README 建议优先使用[features].hooks)。

  2. 检查钩子配置文件是否存在且包含PreCompact条目。当CODEX_HOME未设置时文件位于~/.codex/hooks.json(设置了CODEX_HOME时为$CODEX_HOME/hooks.json)。其中PreCompact一行应为:

    "PreCompact": [{ "hooks": [{ "type": "command", "command": "context-mode hook codex precompact" }] }]

    完整的手动配置参考 configs/codex/hooks.json。如果条目缺失,可以从 Codex CLI 环境里运行context-mode upgrade让 context-mode 重写钩子文件(upgrade只写钩子文件,MCP server 需要单独用codex侧的命令注册)。

  3. 如果~/.codex/hooks.json整个文件不存在,说明手动路径没装完整,按 README 的 Codex CLI 章节补齐配置后重启 Codex。

修改任何config.tomlhooks.json之后都需要重启 Codex CLI 再验证。

第四步:查看 precompact 钩子的错误日志

开关和注册都没问题、钩子却仍没产生快照时,看钩子自己的错误日志。context-mode 的 precompact 钩子源码 在捕获异常时会把错误追加写入调试日志:

<配置目录>/context-mode/precompact-debug.log

对 Codex 平台,配置目录是~/.codexCODEX_HOME未设置时),所以实际路径为:

cat ~/.codex/context-mode/precompact-debug.log

日志中每行形如[时间戳] 错误信息

  • 日志存在且有错误条目:按条目里的报错修复(例如依赖或数据库问题),修复后重新触发一次压缩验证。
  • 日志不存在或为空:说明钩子大概率根本没有被调用,回到第三步复核功能开关和钩子信任状态。

第五步:用诊断工具确认整体注册状态

最后用 context-mode 自带的诊断确认运行环境整体健康:

context-mode doctor

或在 Codex 会话里直接输入ctx doctor(由模型调用ctx_doctorMCP 工具),输出带[OK]/[FAIL]/[WARN]前缀的检查项,覆盖运行时、钩子、FTS5 与版本。若需要一份更完整的报告用于反馈 bug,还可以运行 scripts/ctx-debug.sh:

bash scripts/ctx-debug.sh

该脚本会收集系统信息、运行时版本、better-sqlite3 状态、适配器检测、配置内容(脱敏)、钩子校验、FTS5/SQLite 测试、会话数据库等 18 个部分,把 markdown 和 JSON 报告写到临时目录(/tmp/ctx-debug-<ts>.md/tmp/ctx-debug-<ts>.json)并在终端显示摘要。

修复后如何确认快照恢复生效:让会话执行多轮工具调用后自然触发压缩,压缩完成后的新一轮会话里,模型应能从上次的任务、文件和决策直接继续(即SessionStart成功取回了session_resume表中的快照并注入了<session_knowledge>指令)。

已知边界与限制

  • 旧版 Codex 构建:不发PreCompact的构建上,快照无法生成,context-mode 把这种缺失当作 warning 处理(fail-open,不阻断压缩)。这是版本能力问题,不是配置问题。
  • MCP 与钩子相互独立ctx stats正常只说明 MCP server 可达;钩子路由是另一条链路,必须分别验证。
  • PreToolUse 能力受限:Codex 的 PreToolUse 目前只支持 deny 规则,不支持additionalContext注入(上下文注入走 PostToolUse 和 SessionStart,context-mode 自动处理)。这不影响快照功能,但排查其他钩子行为时要注意。
  • 快照预算:快照按优先级分层构建,2 KB 预算紧张时低优先级事件(如意图、MCP 工具计数)先被丢弃,关键状态(活动文件、任务、规则、决策)始终保留。

如果按以上步骤走完,版本 ≥ 0.130.0、开关与钩子注册都确认无误、precompact-debug.log无报错,仍然没有快照,建议用bash scripts/ctx-debug.sh生成完整诊断报告反馈给项目方。

【免费下载链接】context-modeContext window optimization for AI coding agents. Sandboxes tool output (98% reduction), persists session memory, and enforces routing across 17 platforms via MCP + hooks.项目地址: https://gitcode.com/GitHub_Trending/cl/context-mode

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 2:22:41

STGCN的PyTorch实现:从图卷积到时间卷积的完整代码解析

简介&#xff1a;STGCN-PyTorch-master.zip是一套基于PyTorch实现的STGCN&#xff08;时空图卷积网络&#xff09;代码包&#xff0c;面向从事人体动作识别、时序数据建模的深度学习开发者与研究者。该模型来自IJCAI 2018论文&#xff0c;采用空间图卷积与时间卷积联合建模&…

作者头像 李华
网站建设 2026/9/14 2:21:15

YOLOV5交通标志识别:从数据集构建到模型部署全流程解析

简介&#xff1a;YOLOv5交通标志识别检测项目是一套面向毕业设计、课程设计与期末大作业的完整资源&#xff0c;包含数据集、源码和预训练模型&#xff0c;帮助开发者快速掌握目标检测项目全流程&#xff0c;避免从零搭建环境的繁琐。资源共266个文件&#xff0c;以Python源码、…

作者头像 李华
网站建设 2026/9/14 2:20:49

YOLOv5+PyQt5人脸表情识别系统实战指南

简介&#xff1a;本资源是一套基于YOLOv5 v7.0实现的人脸表情识别完整工程&#xff0c;面向计算机视觉初学者、深度学习实践者及PyQt界面开发学习者&#xff0c;解决从模型部署到交互式应用落地的关键问题。压缩包共2000个文件&#xff0c;含39个核心Python脚本&#xff08;如t…

作者头像 李华
网站建设 2026/9/14 2:20:37

STM32F103+FatFs文件系统管理:配置、日志与排错

简介&#xff1a;面向STM32F103单片机开发者的FATFS文件系统管理实验例程&#xff0c;基于HAL库和KEIL环境编写&#xff0c;适合正在学习嵌入式文件系统应用、或需要快速搭建存储管理功能的读者。压缩包内含226个文件&#xff0c;以C源文件与H头文件为主&#xff0c;覆盖FATFS核…

作者头像 李华
网站建设 2026/9/14 2:20:31

WordPress主题CoreNext免授权版安装配置与安全检查指南

简介&#xff1a;CoreNext 1.7.1.1免授权开心版是一套由果核出品的WordPress轻量化主题模板&#xff0c;面向需要快速搭建个人站点或深入研究主题开发的站长、开发者&#xff0c;主打界面简洁、运行高效&#xff0c;且代码全开源&#xff0c;解决了付费主题授权成本高、黑盒不安…

作者头像 李华
网站建设 2026/9/14 2:20:16

手搓教程:工程师的确定性防线与AI协同方法论

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华