Repository navigation
Replies: 1 comment 1 reply
|
取舍是:放弃"工作区评审中断后能续跑",换来"续跑时复用的 checkpoint 一定来自同一份输入"。 range/commit 能 resume,是因为输入可以钉在不可变的 commit 上。resume 前 工作区没有这样的锚点:
所以 #786 做 trusted resume 时把 workspace resume 列为 out of scope,代码里直接拒绝(resume.go#L278-L284),文档里也写了"工作区评审不能恢复"。代价是最常用的"评审本地未提交改动"一旦中断只能重跑,多花 token 和时间。 需要能续跑的话,可以先打一个临时 commit,用 commit 模式: git add -A && git commit -m wip
ocr review --commit <wip-sha>
# 中断后
ocr review --commit <wip-sha> --resume <session-id>
# 评审完撤销临时提交,改动留在工作区
git reset HEAD~1用 SHA 而不是 以上是对着 v1.13.3 源码读的,没有实际运行。 本回答在 agent(Claude Code)的帮助下撰写,内容已由我本人核实和审阅。 |
1 reply
Answer selected by
lizhengfeng101
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
取舍是:放弃"工作区评审中断后能续跑",换来"续跑时复用的 checkpoint 一定来自同一份输入"。
range/commit 能 resume,是因为输入可以钉在不可变的 commit 上。resume 前
ResolveIdentity先把--from/--to/--commit解析成 SHA(SealedInput),在任何 session 创建之前用它比对父运行的 manifest;比对通过后,这次运行加载 diff、agent 用git show <sha>:path读文件,用的都是同一个 SHA,所以真正评审的就是准入时校验过的那份东西(identity.go#L17-L28,agent.go#L554-L580,注释原话是 "Workspace mode seals no head and is left alone")。工作区没有这样的锚点:
git diff HEAD加未跟踪文件,"a workspace has no immutable head",没有东西可以冻结(diff/git.go#L128-L135)。--staged时就是这么说的。真要支持,得先把工作区冻结成快照…