调试模式
仅当当前用户调用 $debug-mode、说出“调试模式”或请求仪表化调试时,才启动一个会话。
在活动调试会话存在时(包括用户回复或上下文压缩后)恢复会话。
当步骤3启动服务器时,会话变为活动状态。
会话仅在步骤8清理或显式放弃后结束。
如果以上条件均不适用,则在分析、收集或仪表化之前停止。
此工作流构建于同级 trace-mode 工作流之上。
它通过修正、验证和清理来扩展位置证据。
同级脚本需要 Node.js 24 或更高版本。
运行此证据循环:
分析代码 -> 提出假设 -> 使用trace-mode追踪 -> 证明 -> 修复 -> 验证 -> 清理
通过仪表化自主工作。 首次计划的用户交互是复现检查点。 复现和验证是门控环节。
检查点不变式:每次手动复现或验证尝试都需要一个全新的检查点。
仅凭工具可用性选择其路径:当原生 Codex request_user_input 被列出时,你必须调用它;
否则,当 Pi 选择器被列出时调用它;仅在这两种交互路径都无法运行时,使用确切的纯文本模板。
原生工具调用就是检查点;注释或最终答案不能替代它。
原生取消会使门控保持挂起状态,先前的结果仅授权其当前的尝试。
1. 分析代码路径
从报告的症状开始进行仓库摸底工作。 阅读相关的入口点、处理器、状态转换、现有日志和最近更改。 绘制从用户触发到观察到的结果的候选路径。 编写错误卡片:
- 症状和预期行为
- 已知触发器、路由、命令、输入或固定装置
- 候选运行时路径和有争议的边界
- 相关环境、频率、变更和证据
- 可观察的验收标准
将不可用的事实记录为 unknown。
通过代码阅读或区分性运行时探测来解决关键未知项。
完成条件: 一条候选路径链接了触发器和症状,并且每个有争议的分支都有一个命名的探测边界。
2. 构建假设矩阵
在添加探测之前,编写两到五个排好序的假设。 将矩阵锚定在代码分析和可用证据上。 使用以下格式:
H1 <简短原因>
预测:<运行时状态、路径或时序>
探测:<事件名称和代码位置>
确认条件:<特定记录条件>
拒绝条件:<特定记录条件>
没有具体预测的假设需要更多的代码阅读。 倾向于选择能够区分多个假设的探测。
完成条件: 每个假设都具有可证伪的条件和一个明确的计划探测。
3. 通过追踪模式进行追踪
阅读同级 trace-mode 技能。
结合错误卡片使用其事件规划、服务器启动和仪表化步骤。
阅读 references/probes.md 以了解调试事件扩展。
在其独立的追踪检查点之前返回此处。
此工作流是调用方。 trace-mode 工作流必须交回活动探测和五个服务器值。
完成条件: 每个假设都有一个活动探测,并且五个服务器值都已确定。
4. 通过复现门控
在呈现修复前检查点之前,阅读 references/checkpoints.md。
通过上面选定的检查点路径执行修复前协议。
然后等待并将结果通过状态表进行路由。
每次重试都通过一个新的交互调用返回到此门控。
完成条件: 有效的 A、B 或 C 结果已按阶段路由。
5. 证明原因
在修复前 A 之后,先读取 LOG_FILE 中的当前会话记录,再编辑产品代码。
确认每个预期的探测都存在,然后按文件顺序检查记录,并将相关值与每个假设预测进行比较。
将每个假设分类为 CONFIRMED、REJECTED 或 INCONCLUSIVE。
编写证据报告:
H1 <简短原因>
状态:CONFIRMED
证据:<特定事件和值>
H2 <简短原因>
状态:REJECTED
证据:<特定事件和值>
验收标准:<一个可观察的句子>
下一步动作:<针对已确认原因的最小修正>
缺失预期的探测会阻碍确认。 当每个结果都被拒绝或不确定时,返回步骤2。
完成条件: 当前运行记录确认了一个解释性原因,并有一个可观察的验收标准。
6. 进行基于证据的修复
做出能解决已确认原因的最小更改。
保持每个探测处于活动状态。
将事件更改为 runId: "post-fix"。
当行为可自动化时,添加一个有针对性的回归测试。
完成条件: 每个产品编辑都可追溯到原因,并且修复后证据已准备就绪。
7. 通过验证门控
通过选定的路径,从 references/checkpoints.md 呈现修复后检查点。
然后等待并将结果通过状态表进行路由。
后续的每次验证尝试都需要另一个交互调用。
完成条件: 用户针对声明的验收标准返回修复后 B。
8. 机械性清理
移除每个标记为 LOG_SERVER_PROBE <session_id> 的配对区域。
搜索会话 ID、LOG_SERVER_PROBE 以及两种区域形式。
移除复制的辅助程序和所有临时仪表化代码。
删除 LOG_FILE,除非用户要求保留证据。
保持共享服务器运行,除非用户要求关闭。
运行相关检查并检查最终的差异。
完成条件: 标记和会话搜索在仓库中无匹配项,检查通过,且仅保留产品更改。
异常分支
仅在收集、复现或交付失败时阅读 references/troubleshooting.md。