用途
vibe-plan-review 用于在实施开始之前,与用户一起评审一份已保存的 Markdown 实施计划。它的目标是在用户逐项决策的同时,暴露计划中的问题:需求不匹配、顺序问题、遗漏工作、歧义、风险以及无法验证的条目。
主要能力
- 逐项评审:一次处理一个计划条目,检查需求对齐、顺序、遗漏工作、歧义、风险和可验证性。用户决定优先,AI 判断不覆盖用户决定。
- 输入识别:评审一份被标识的已保存 Markdown 实施计划,其他材料仅作为上下文;若未识别到计划,则向用户索取。
- 规格对齐:读取计划及明确引用的需求规格;否则查找 docs/specs/、specs/ 或计划目录中明显同目标的规格。若不存在,则以“有限需求对齐置信度”继续。
- 冲突与缺失处理:若需求规格与实施计划冲突,停止评审、说明冲突并询问应修正需求还是计划;若计划缺少评审所需信息,停止评审、说明缺失内容并询问如何补全,不虚构行为、需求、验收标准、测试路径、数据处理或用户体验。
- 条目抽取:优先使用显式任务;否则按文件顺序使用最小的可执行标题章节。边界不明确时询问用户,不静默选择粒度。条目身份保持稳定,拆分、合并或重排需用户批准。
- 评审状态持久化:状态默认保留在对话中;当用户请求持久化、可能中断或丢失上下文、或项目约定要求时,才在计划旁存储 .<plan-name>.review.md,包含目标、需求来源、条目、位置、权威决定、阻塞项和简明续接上下文。条目数量本身不触发持久化。
- 回写计划:全部条目评审完成后,说明四种结果,声明评审已完成但尚未回写,并请求明确的回写确认。一般评审同意不等于回写同意。回写后计划包含可执行内容与保留项。
- 持久记录:阶段开始时检查 docs/decisions/README.md 和 docs/reports/findings/README.md(或仓库现有索引)中与所评审计划匹配的条目;记录已定决策、推迟发现或应用/更新现有记录前,阅读 references/durable-records.md。
使用方式
在计划已存在、实施尚未开始时使用。评审开始前,先读取计划及显式引用的需求规格。评审按条目推进,向用户提供本地化选项和稳定数字标识符;接受一个无歧义的标签或标识符,规范化为标准标签用于存储、计数、摘要和回写;选项冲突时询问。完成后报告评审状态,并停在用户的下一决策点。
写入与效果边界
- 只读:在聊天中报告;不编辑文件、不运行改变状态的命令,不执行暂存、提交、打标签、推送、改版本、删数据或启动服务。仅在用户明确要求保存产物时写文件。
- 仅产物:只创建或更新该阶段拥有的产物及其文本声明的支持路径,例如已确认的计划回写或决策记录,并留在工作树中。仅产物阶段不得实现可执行行为、以实施方式编辑代码或测试、生成其他阶段的产物、做发布工作,或把其产物视为同轮实施授权。
- 改变状态:仅在声明范围内以其最小可验证单元编辑和运行命令;除非用户选择,不动其他路径、既有改动以及运行时或外部状态。
- 这些限制覆盖 shell 命令(重定向、sed -i、tee、mv、cp、rm、git checkout --)以及文件工具;被拒绝的写入应报告为边界停止,不得通过其他工具重试。
- 所有不可逆或对外的操作需单独征得同意。
提交选择
仅文档阶段绝不选择提交。经核实的产物改动留在工作树中;调用、路径放置、跟踪状态、通过评审或审计、回写同意或产物完成都不选择提交。只有当前用户明确请求才可选择提交,且范围限于该阶段拥有的产物。起草期间绝不暂存、提交、推送、发布、改版本或重写历史,产物也不得授权实施、推送、发布、版本变更或历史重写。该阶段本身不执行所请求的提交,而是将其转给提交执行,针对回写后的计划文件,而非临时评审状态文件;后者的清理是单独的用户决定。
敏感内容处理
在任何文本跨越输出边界前,对类密钥字面量进行脱敏。输出边界包括聊天、保存文件、转发给其他智能体或后端、账本、引用片段、摘要和工具参数。请求读取、引用、保留或摘要内容,绝不授权复现密钥值。将每个匹配替换为 [REDACTED:<type>],类型尽量具体:private-key(PEM 私钥块)、jwt(三段式 JWT 类令牌)、url-auth(嵌入 http 或 https URL 的凭据)、apikey(已知前缀的 API 密钥和访问令牌)、env-secret(名称以 key、token、secret、password 或 pwd 结尾的环境式赋值)、secret-context(靠近 key、token、secret、password、bearer 或 session-secret 措辞的其他高熵文本)。保留非密钥措辞和验证发现所需的锚点:路径、行号、符号、命令、字段名和标识符。匹配不到上述类型的疑似凭据也脱敏为 [REDACTED:credential],并保留计划条目的路径和行锚点。
发现敏感字面量时:
- 将计划中看似有效的凭据视为阻塞项:要求用户移除并通过安全流程轮换或撤销,绝不要求粘贴到对话中。
- 仅在临时评审文件中记录其脱敏位置、分类、决策状态和所需补救。
- 当计划或评审状态中仍存在疑似敏感字面量时,不回写任何内容到原计划;回写后的计划也绝不包含任何来源的敏感字面量。要求用户清理或确认非密钥的环境变量或密钥存储引用,然后重新读取清理后的产物再回写。
- 当某值可能是凭据也可能是非密钥标识符时,脱敏并在不展示它的情况下询问预期的安全引用。
评审绑定输出
在评审开始、恢复、目标变更、回写、完成以及任何阻止继续评审的阻塞处,展示目标计划、需求来源或有限置信度的无规格状态,以及持久化状态。当临时评审文件已存在或正被选择时,给出其确切路径作为持久化状态;当评审状态留在对话中时,说明这一点且不给出路径。同一会话中条目响应无变化时,不重复绑定块。
停止条件
遇到以下情况应停止:计划缺失或不可读;已识别的规格缺失或不可读;计划与规格冲突;缺少评审信息;条目歧义;评审文件不清晰;回写时存在未解决的敏感字面量;或超出评审与回写计划范围的工作。说明阻塞项、其证据与影响,以及最近用户决策点。
运行时语言
匹配用户语言。渲染或解释决策、回写或摘要前,阅读 references/localized-labels.md,使用其中的标签、数字标识符和语义。非敏感路径、命令、标识符和评审状态路径需原样保留。
完成摘要
汇总:目标、需求来源或有限置信度状态、已评审条目、权威决定计数、阻塞项或保留项、回写与临时文件状态、未提交的计划改动或待处理提交请求,以及实施未开始。
适用场景与限制
适用于计划已存在且准备实施前的阶段。限制包括:需要一份被标识的已保存 Markdown 计划;不会自动开始实现;不会自行选择提交或执行提交;回写需用户明确确认;临时文件删除需单独询问;若信息不足不会凭空补全;遇到敏感字面量会阻塞回写。