失败测试跨平台出现、触发条件不稳定或涉及多个模块时,只读 Review 往往只能指出风险,不能完成复现和最小修复。/codex:rescue 会把任务交给本机 Codex,并且可能运行命令、读取日志和修改文件,因此任务描述和验收边界必须先写清。本文只解决一次安全的 Rescue 调查:记录工作区状态,限定允许修改范围,选择 background、resume 或 fresh,读取结果后检查 diff,并用原始失败测试和相关验证证明修改。会话迁移和模型路由不在本文范围内。

常见调查问题包括:

为什么 Windows CI 才失败?
哪次提交引入了回归?
flaky test 的触发条件是什么?
能否用最小补丁修复?

这些任务比普通 Review 更重,也可能需要读日志、运行命令和修改文件。

codex-plugin-cc 官方仓库/codex:rescue 支持把这类任务交给本机 Codex。

它通过 codex:codex-rescue subagent 委派任务,并支持后台执行和继续或新建调查线程。

1. Rescue 和 Review 的区别

能力 Review Rescue
找问题
运行调查 有限、只读审查
尝试修复
继续历史任务
自定义任务描述 普通 Review 不支持 支持
修改工作区 可能

所以 Rescue 不能像 Review 一样随便调用。

任务开始前要先检查工作区,结束后必须审查 diff。

2. 最小 Rescue 任务

调查失败测试:

/codex:rescue investigate why the tests started failing

尝试最小修复:

/codex:rescue fix the failing test with the smallest safe patch

后台调查回归:

/codex:rescue --background investigate the regression

官方 README 建议长任务优先后台运行,避免占住当前 Claude Code 会话。

3. 高质量 Rescue 指令怎么写

不要只说:

/codex:rescue fix tests

至少给出:

症状。
环境。
可复现命令。
允许修改范围。
禁止修改范围。
修复偏好。
验收标准。

示例:

/codex:rescue --background investigate why checkout tests fail only on Windows. Reproduce with [仓库实际复现命令]. Do not modify unrelated modules or update dependencies. Prefer the smallest patch, add a regression test, and report any behavior you could not verify.

这才是把调查交给 Codex,而不是把所有工程判断一起交出去。

4. --background--wait 怎么选

Rescue 支持:

--background
--wait
--resume
--fresh
--model
--effort

使用建议:

场景 方式
很小、需要立即结果 --wait 或前台执行
多文件调查、CI 回归 --background
继续上一轮调查 --resume
不想继承旧结论 --fresh

不要在同一 Rescue 调用中同时追求“快速初查”和“完整重构”。

先调查,后决定修复范围。

5. --resume:继续上一条线索

例如第一次调查得到三个可能原因。

继续验证最可能的方案:

/codex:rescue --resume apply the top fix from the last run

如果省略 --resume--fresh,插件可以提示是否继续当前仓库最近的 Rescue 线程。

使用 Resume 前确认:

仓库仍是同一个。
分支和工作树没有发生重大变化。
旧结论仍然适用。
任务结果没有过期。

代码已经大幅变化时,宁可 --fresh

6. --fresh:切断错误上下文

旧任务可能形成错误锚点。

适合重新开始:

底层依赖已经升级。
失败症状发生变化。
切换了分支。
旧调查明显误判。
希望独立复核。

命令:

/codex:rescue --fresh investigate the regression from current HEAD only

7. 后台任务怎么管理

查看当前仓库任务:

/codex:status

查看指定任务:

/codex:status task-abc123

读取最终输出:

/codex:result
/codex:result task-abc123

取消任务:

/codex:cancel
/codex:cancel task-abc123

取消前先确认任务 ID,避免停止另一条仍有价值的调查。

8. Result 不是结束,必须检查工作区

Rescue 可能修改代码。

任务结束后执行:

git status --short
git diff --stat
git diff

然后跑任务对应的测试:

原始失败测试。
相关模块测试。
类型检查或 lint。
必要的构建和烟雾测试。

不要只看 Codex 说“已修复”。

完成声明必须由新测试结果证明。

9. 如何保护用户现有改动

启动 Rescue 前:

记录 git status。
告诉 Codex 不要覆盖无关未提交改动。
限定允许修改的目录。
必要时使用独立分支或 worktree。

任务提示词加入:

The worktree may contain user changes. Preserve unrelated edits. Do not reset, clean, checkout, or rewrite files outside the stated scope.

不要把 git reset --hardgit clean -fd 之类命令交给自动调查流程。

10. 常见错误

Rescue 任务太模糊

“fix tests”缺少症状、范围和验收。

继续了错误历史

仓库变化很大时应该使用 --fresh

同时开多个修改型 Rescue

并行写同一工作树容易冲突。

只看 Result 不看 diff

模型报告不能替代代码审查。

11. 检查清单

[ ] Rescue 任务包含症状、环境、范围和验收
[ ] 已记录启动前 git status
[ ] 无关用户改动明确要求保留
[ ] 长任务使用 background
[ ] resume 前确认旧上下文仍有效
[ ] 上下文过期时使用 fresh
[ ] 修改型任务没有并行写同一工作树
[ ] result 后检查 git diff
[ ] 已重跑原始失败测试和相关验证
[ ] 任务 ID、修改文件和测试结果已经记录

12. 结论与限制

/codex:rescue 不是更长的 Review。

它是一个可能执行调查和修改的委派入口。

正确流程是:

写清问题和边界。
后台运行。
用 status 跟踪。
用 result 获取结论。
检查 diff。
重跑测试。
必要时 resume 或 fresh。

Rescue 的结果只是调查输出,不能替代工作区审查和新测试证据。启动前记录 git status,结束后查看完整 diff,并确认没有覆盖无关用户改动;成立的修复应补回归测试。

本文命令按核对时的官方插件 README 编写,不覆盖 Transfer、模型选择或会话导入。插件行为和参数可能更新,执行前仍需复查当前 README;多个修改型 Rescue 不应并行写同一工作树。