关于 omc-plan
omc-plan 是 OMC 的规划技能,可将宽泛或具体的请求整理为可执行计划,并提供访谈、直接规划、共识和计划审查模式。它适用于实施前需要明确范围的任务,并要求获批后才能进入执行。
主要功能
- 01自动选择访谈或直接规划
- 02Planner、Architect、Critic 共识审查
- 03审查现有计划
- 04为宽泛请求收集需求
- 05获得明确批准后才执行
适用场景
- 01编码前界定宽泛项目范围
- 02将具体请求整理为工作计划
- 03审查现有计划
- 04从多个角度验证高风险计划
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ yeachan-heo/ oh-my-claudecode --skill omc-plan安装后在 Claude Code 中输入/omc-plan确认已加载。
详细介绍
<Use_When>
- 用户希望在实施前先做规划 —— “plan this”、“plan the”、“let's plan”
- 用户希望为一个模糊的想法进行结构化需求收集
- 用户希望评审既有计划 —— “review this plan”、
--review - 用户希望就某项计划达成多视角共识 ——
--consensus、“ralplan” - 任务宽泛或模糊,需要在编写任何代码前先界定范围 </Use_When>
<Do_Not_Use_When>
- 用户希望自主端到端执行 —— 改用
autopilot - 用户任务明确,希望立即开始编码 —— 使用
ralph或委派给执行器 - 用户提出一个可直接回答的简单问题 —— 直接回答即可
- 任务是范围明确、单一的聚焦修复 —— 使用执行类技能,而不是通过此规划模块来运行 </Do_Not_Use_When>
<Why_This_Exists> 在不理解需求的情况下直接写代码会导致返工、范围蔓延和遗漏边界情况。Plan 提供结构化的需求收集、专家分析和带质量门禁的计划,使执行从坚实的基础开始。共识模式为高风险项目增加多视角验证。 </Why_This_Exists>
<Execution_Policy>
- 根据请求的具体程度自动检测访谈模式还是直接模式
- 访谈期间一次只问一个问题 —— 绝不要批量提出多个问题
- 在向用户询问代码库相关情况之前,先通过
exploreAgent 收集代码库事实 - 计划必须达到质量标准:80% 以上的论断引用文件/行号,90% 以上的验收标准可测试
- 共识模式默认完全自动化运行;添加
--interactive可在草稿评审和最终批准环节启用用户提示 - 共识模式默认使用 RALPLAN-DR 短模式;使用
--deliberate或在请求明确表明高风险(认证/安全、数据迁移、破坏性/不可逆更改、生产事故、合规/PII、公共 API 破坏性变更)时切换到审议模式 - 规划/执行边界: 规划模式只检查上下文并产出计划/规格/提案。除非用户在当前轮次中或通过结构化批准 UI 明确选择执行,否则它们必须将产物标记为
pending approval。在明确批准执行之前,规划模式不得运行面向变更的 shell 命令、编辑源文件、提交、推送、开 PR、调用执行类技能或委派实施任务。 - 目标工作流边界: 当某项计划比较 Claude Code
/goal、Ralph、Team 或仅产物的 Ultragoal 时,必须精确识别一个主循环权威,并使用确定性冲突策略refuse、adopt_existing和artifact_only,而不是非确定性的警告处理。/goal相关事实必须仅引用 Claude Code/Anthropic 来源(Claude Code/goal文档:https://code.claude.com/docs/en/goal;Anthropic Claude Code 变更日志:https://raw.githubusercontent.com/anthropics/claude-code/main/CHANGELOG.md),且计划不得声称/goal评估器会独立运行命令或读取文件;在任何完成声明之前,必须提供已呈现的证明证据。 - 目标工作流文档目标: 对于面向用户的比较,示例应与
docs/shared/mode-selection-guide.md#goal-oriented-workflow-selection和docs/REFERENCE.md#goal-workflow-ux-goal-ralph-team-ultragoal保持一致。 </Execution_Policy>
| 模式 | 触发条件 | 行为 |
|---|---|---|
| Interview | 宽泛请求的默认模式 | 交互式需求收集 |
| Direct | --direct,或详细的请求 | 跳过访谈,直接生成计划 |
| Consensus | --consensus、"ralplan" | Planner -> Architect -> Critic 循环,直至通过 RALPLAN-DR 结构化审议达成一致(默认简短,高风险时使用 --deliberate);添加 --interactive 可在草拟和批准步骤向用户提问 |
| Review | --review、"review this plan" | Critic 对现有计划进行评估 |
Interview 模式(宽泛/模糊的请求)
- 对请求进行分类:宽泛(模糊的动词、没有具体文件、涉及 3 个以上领域)会触发访谈模式
- 提出一个聚焦的问题,使用
AskUserQuestion询问偏好、范围和约束 - 先收集代码库事实:在询问"你的代码使用什么模式?"之前,先启动一个
exploreAgent 去查明,然后再提出有依据的后续问题 - 基于回答逐步推进:每个问题都建立在前一个回答之上
- 咨询 Analyst(Opus),了解隐藏需求、边缘情况和风险
- 创建计划:当用户表示已准备好时:"create the plan"、"I'm ready"、"make it a work plan"
Direct 模式(详细的请求)
- 快速分析:可选的简要 Analyst 咨询
- 创建计划:立即生成全面的工作计划
- Review(可选):如有要求则进行 Critic 评估
Consensus 模式(--consensus / "ralplan")
RALPLAN-DR 模式:Short(默认,有界结构)和 Deliberate(用于 --deliberate 或明确的高风险请求)。两种模式都保持相同的 Planner -> Architect -> Critic 顺序以及相同的 AskUserQuestion 关卡。
提供商覆盖(在已安装提供商 CLI 时受支持):
--architect codex— 用omc ask codex --agent-prompt architect "..."替换 Claude Architect 环节,用于实现密集型架构评审--critic codex— 用omc ask codex --agent-prompt critic "..."替换 Claude Critic 环节,在执行前进行外部评审- 如果请求的提供商不可用,请简要说明,并在该阶段继续使用默认的 Claude Architect/Critic 步骤
状态生命周期:持久模式停止钩子使用 ralplan-state.json 在共识循环期间强制执行继续执行。该技能 MUST 管理此状态:
- 进入时:在第 1 步之前调用
state_write(mode="ralplan", active=true, session_id=<current_session_id>) - 交接给执行流程时(批准 → ralph/team):调用
state_write(mode="ralplan", active=false, session_id=<current_session_id>)。此处不要使用state_clear——state_clear会写入 30 秒的取消信号,禁用所有模式的停止钩子强制执行,导致新启动的执行模式不受保护。 - 真正终止退出时(拒绝、非交互式计划输出、错误/中止):调用
state_clear(mode="ralplan", session_id=<current_session_id>)——后续没有执行模式,因此取消信号窗口不会造成影响。 - 不要在中间步骤(例如 Critic 批准或展示最大迭代次数时)清除状态,因为用户仍可能选择“请求修改”。
如果不进行清理,即使共识工作流已结束,停止钩子仍会使用 [RALPLAN - CONSENSUS PLANNING] 强化消息阻止所有后续停止操作。始终传入 session_id,以免清除其他并发会话的状态。
- Planner 创建初始计划,并在任何 Architect 审查之前生成精简的 RALPLAN-DR 摘要。摘要必须包含:
- 原则(3-5 条)
- 决策驱动因素(前 3 项)
- 可行选项(>=2 个),并分别列出适度的优缺点
- 如果最终只剩一个可行选项,须明确说明其他选项被排除的理由
- 在审慎模式下:提供事前验尸(3 种失败情景)和涵盖单元 / 集成 / 端到端 / 可观测性的扩展测试计划
- 用户反馈(仅限
--interactive):如果使用--interactive运行,必须使用AskUserQuestion展示草案计划以及 RALPLAN-DR 的原则 / 决策驱动因素 / 选项摘要,以便尽早对齐方向,并提供以下选项:- 进入审查 — 提交给 Architect 和 Critic 评估
- 请求修改 — 纳入用户反馈后返回第 1 步
- 跳过审查 — 直接进入最终批准(第 7 步)
如果未使用
--interactive运行,则自动进入审查(第 3 步)。
- Architect 使用
Task(subagent_type="oh-my-claudecode:architect", ...)审查架构是否合理。Architect 的审查必须包含:针对首选选项的最有力钢人论证反驳(反论点)、至少一个实质性的权衡冲突,以及(如有可能)一条综合方案。在审慎模式下,Architect 应明确指出违反原则之处。Architect 必须评估 Planner 在第 1 步生成的同一份固定计划快照,不得修改该快照;Architect 的输出不得传给 Critic。 - Critic 使用
Task(subagent_type="oh-my-claudecode:critic", ...)根据质量标准进行评估。Critic 必须核验原则与选项是否一致、是否公平地探索了备选方案、风险缓解措施是否明确、验收标准是否可测试,以及验证步骤是否具体。Critic 必须明确否决浅显的备选方案、相互矛盾的决策驱动因素、含糊的风险或薄弱的验证方式。在审慎模式下,Critic 必须否决缺失或薄弱的事前验尸,以及缺失或薄弱的扩展测试计划。Critic 必须独立评估同一份固定计划快照,并单独调用一次、等待其完成;Critic 不得使用或接收 Architect 的审查结果。对同一固定计划快照进行独立的并行或串行审查(取决于上下文)。 Architect 和 Critic 各自审查 Planner 在步骤 1 中生成的同一固定计划快照,且双方都不会修改该快照。不得将 Architect 的输出传递给 Critic。**当 Architect 和 Critic 都使用 Claude agents(默认)时,可以作为后台子 Agent 并行运行。**当 Architect 或 Critic 使用外部提供方(例如
--architect codex、--critic codex)时,必须作为独立的 Task 调用按顺序运行,并逐个等待完成——绝不可并行运行——以防速率限制错误导致同级调用级联失败。 Critic 不得使用或接收 Architect 的审查结果。只有在两项审查都完成后,Planner 才能在修订或改进综合阶段合并 Architect 和 Critic 的结果。 - 重新审查循环(最多 5 次迭代):如果 Critic 拒绝,则执行以下闭环:
a. 收集 Architect 和 Critic 的所有拒绝反馈(仅由 Planner 综合:只有在两项审查都完成后,Planner 才能合并 Architect 和 Critic 的结果)。
b. 将反馈交给 Planner,以生成修订后的计划
c. 返回步骤 3——由 Architect 审查修订后的计划
d. 返回步骤 4——由 Critic 评估修订后的计划
e. 重复以上步骤,直至 Critic 批准或达到最多 5 次迭代
f. 如果达到最大迭代次数仍未获批准,则通过
AskUserQuestion向用户展示最佳版本,并注明专家未达成共识 - 应用改进:当审查者批准计划并提出改进建议时,在继续之前将所有已采纳的改进合并到计划文件中。最终共识输出必须包含一个 ADR 部分,其中包括:决策、驱动因素、考虑过的替代方案、选择理由、后果、后续事项。具体而言:
a. 收集 Architect 和 Critic 回复中的所有改进建议
b. 去重并对建议进行分类
c. 在
.omc/plans/中更新计划文件,纳入已采纳的改进(补充缺失的细节、完善步骤、强化验收标准、更新 ADR 等) d. 在计划末尾添加简短的变更日志,注明已应用的改进 - Critic 批准后(且改进已应用):除非已经明确获得执行批准,否则将计划状态标记为
pending approval。(仅限--interactive) 如果以--interactive运行,请使用AskUserQuestion展示计划,并提供以下选项:- 通过团队批准执行(推荐)——明确选择通过协调并行团队 Agent(
/team)继续执行。自 v4.1.7 起,Team 是规范的编排入口。 - 通过 ralph 批准执行——明确选择通过 Ralph 持久化执行并进行验证
- 先压缩上下文,再返回请求执行批准——明确选择先压缩上下文窗口(规划后上下文较大时推荐),然后停留在已保存的待批准计划上,并在启动执行前再次请求批准
- 请求修改——根据用户反馈返回步骤 1
- 拒绝——彻底丢弃计划
如果未以
--interactive运行,则输出标记为pending approval的最终计划,调用state_clear(mode="ralplan", session_id=<current_session_id>),然后停止。不得自动执行。
- 通过团队批准执行(推荐)——明确选择通过协调并行团队 Agent(
- (仅限
--interactive) 用户必须通过结构化的AskUserQuestionUI 选择(绝不可用纯文本请求批准)。如果用户选择拒绝,则调用state_clear(mode="ralplan", session_id=<current_session_id>)并停止。 - 用户批准后(仅限
--interactive):在调用执行技能(ralph/team)之前调用state_write(mode="ralplan", active=false, session_id=<current_session_id>),以免停止钩子干扰执行模式自身的强制机制。此处不要使用state_clear——它会写入取消信号,从而禁用新启动模式的强制机制。- 通过团队批准执行:必须调用
Skill("oh-my-claudecode:team"),并将.omc/plans/中已批准的计划路径作为上下文。不得直接实施。Team 技能会在分阶段流水线中协调并行 Agent,从而加快大型任务的执行。这是推荐的默认执行路径。 - 通过 ralph 批准执行:必须调用
Skill("oh-my-claudecode:ralph"),并将.omc/plans/中已批准的计划路径作为上下文。不得直接实施。规划 Agent 不得编辑源代码文件。Ralph 技能负责持久化执行和验证。 - 先压缩上下文,再返回请求执行批准:先调用
Skill("compact")压缩上下文窗口(减少规划期间累积的 token 用量),然后返回已保存的待批准计划路径,并要求在启动任何 ralph/team 流程之前重新明确批准执行。如果规划会话结束后上下文窗口已满 50% 或更多,推荐使用此路径。
- 通过团队批准执行:必须调用
审查模式(--review)
- 从
.omc/plans/读取计划文件 - 使用
Task(subagent_type="oh-my-claudecode:critic", ...)通过 Critic 进行评估 - 返回结论:APPROVED(批准)、REVISE(修改,并提供具体反馈)或 REJECT(拒绝,需要重新规划)
计划输出格式
每份计划都包括:
- 需求摘要
- 验收标准(可测试)
- 实施步骤(附文件引用)
- 风险与缓解措施
- 验证步骤
- 对于共识/ralplan:RALPLAN-DR 摘要(原则、决策驱动因素、选项)
- 对于共识/ralplan 的最终输出:ADR(决策、驱动因素、考虑过的替代方案、选择理由、后果、后续事项)
- 对于审慎共识模式:事前分析(3 种情景)和扩展测试计划(单元/集成/e2e/可观测性)
计划保存在 .omc/plans/。草稿保存在 .omc/drafts/。
<Tool_Usage>
- 对于偏好类问题(范围、优先级、时间线、风险承受度),使用
AskUserQuestion——它会提供可点击的 UI - 对于需要具体值的问题(端口号、名称、后续澄清),使用纯文本
- 使用
exploreAgent(Haiku,30 秒超时)在询问用户前收集代码库信息 - 对于大型计划的规划验证,使用
Task(subagent_type="oh-my-claudecode:planner", ...) - 在共识模式和审查模式下审查计划时,使用
Task(subagent_type="oh-my-claudecode:critic", ...) - 共识模式下 Agent 调用的上下文依赖性: 当 Architect 和 Critic 都是 Claude Agent(默认情况)时,可以并行运行,作为后台子 Agent。当任一方使用外部提供商(如 codex)时,必须按顺序运行,以避免速率限制导致同级任务级联失败。两次审查使用同一个固定计划快照;Architect 的输出不会传递给 Critic;只有在两次审查都完成后,结果才会在 Planner 综合阶段合并。
- 在共识模式下,默认使用简版 RALPLAN-DR;若指定
--deliberate或存在明确的高风险信号(身份验证/安全、迁移、破坏性变更、生产事故、合规/PII、公共 API 破坏性变更),则启用审慎模式 - 在带有
--interactive的共识模式下:在步骤 2 的用户反馈环节和步骤 7 的最终批准环节使用AskUserQuestion——绝不能用纯文本询问是否批准。不带--interactive时,跳过这两个提示,将计划标记为pending approval,输出最终计划并停止。 - 在带有
--interactive的共识模式下,用户明确批准后,必须调用Skill("oh-my-claudecode:ralph")或Skill("oh-my-claudecode:team")执行计划(步骤 9)——绝不能由规划 Agent 直接实施 - 在明确获得执行批准前,规划模式不得运行面向变更的 shell 命令、编辑文件、提交、推送、创建 PR、调用执行技能或委派实施任务;只能检查上下文并起草/更新计划、规范或提案文件。
- 当用户在步骤 7(仅限
--interactive)选择“压缩后返回以获取执行批准”时:将计划保持标记为pending approval,调用state_write(mode="ralplan", active=false, current_phase="pending_approval", session_id=<current_session_id>),然后调用Skill("compact")压缩累积的规划上下文。压缩后,必须重新获得用户对执行的明确批准,才能启动 ralph/team;绝不能在 compact 后续流程中自动开始实施 - 关键——共识模式状态生命周期: 在停止或移交给执行前,务必停用 ralplan 状态。移交时(批准后 → ralph/team)使用
state_write(active=false);真正的终止退出(拒绝、错误)则使用state_clear。启动执行模式前绝不能调用state_clear——其取消信号会在 30 秒内禁用 stop-hook 强制执行。 </Tool_Usage>
<Escalation_And_Stop_Conditions>
- 需求足够清晰、可以开始规划时,就停止访谈——不要过度访谈
- 在共识模式下,经过 5 轮 Planner/Architect/Critic 迭代后停止,并给出最佳版本。此处不要清除 ralplan 状态——用户仍可能在后续步骤中选择“Request changes”。只有用户做出最终选择(批准/拒绝)或在非交互模式下输出计划时,才清除状态。
- 在未启用
--interactive的共识模式下,输出标记为pending approval的最终计划并停止;启用--interactive时,必须获得用户明确批准后才能开始任何实施。务必在停止前调用state_clear(mode="ralplan", session_id=<current_session_id>)。 - 如果用户说“直接做”或“跳过规划”,但没有明确指定执行路径,则将其视为要求结束规划:输出当前计划/规范/提案,标记为
pending approval,并通过结构化批准界面请求明确的执行批准。在获得批准前,规划模块不得调用Skill("oh-my-claudecode:ralph")、修改文件、委派实施、提交、推送或创建 PR。 - 如果存在需要业务决策才能解决的不可调和权衡,则升级并交由用户决定 </Escalation_And_Stop_Conditions>
<Final_Checklist>
- 计划包含可测试的验收标准(90% 以上为具体内容)
- 计划在适用时引用具体文件/行号(80% 以上的论断)
- 所有风险均已明确应对措施
- 没有缺乏量化标准的模糊表述(“快速” -> “p99 < 200ms”)
- 计划已保存到
.omc/plans/ - 在共识模式下:RALPLAN-DR 摘要包含 3-5 项原则、排名前三的驱动因素,以及至少 2 个可行选项(或明确说明选项无效的理由)
- 在共识模式下的最终输出中:包含 ADR 部分(决策 / 驱动因素 / 考虑过的替代方案 / 选择理由 / 后果 / 后续事项)
- 在审慎共识模式下:包含预先验尸分析(3 种情景)和扩展测试计划(单元测试/集成测试/e2e/可观测性)
- 在启用
--interactive的共识模式下:用户在任何执行开始前明确批准;未启用--interactive时:仅输出标记为pending approval的计划,不自动执行 - 在共识模式下:每条退出路径都要停用 ralplan 状态——移交执行时使用
state_write(active=false),终止退出时(拒绝、错误、非交互式停止)使用state_clear</Final_Checklist>
在访谈中呈现设计选项时,应分段介绍:
- 概述(2-3 句话)
- 选项 A及其利弊
- [等待用户反馈]
- 选项 B及其利弊
- [等待用户反馈]
- 建议(仅在讨论完选项后提出)
每个选项的格式:
### Option A: [Name]
**Approach:** [1 sentence]
**Pros:** [bullets]
**Cons:** [bullets]
What's your reaction to this approach?
问题分类
提出任何访谈问题之前,先对问题进行分类:
| 类型 | 示例 | 操作 |
|---|---|---|
| 代码库事实 | “存在哪些模式?”,“X 在哪里?” | 先探索,不要询问用户 |
| 用户偏好 | “优先级是什么?”,“时间安排如何?” | 通过 AskUserQuestion 询问用户 |
| 范围决策 | “是否包含功能 Y?” | 询问用户 |
| 需求 | “性能限制是什么?” | 询问用户 |
审查质量标准
| 标准 | 要求 |
|---|---|
| 清晰度 | 80% 以上的论述注明文件/行号 |
| 可测试性 | 90% 以上的标准具体明确 |
| 验证 | 所有文件引用均有效 |
| 具体性 | 不使用模糊措辞 |
弃用通知
独立的 /planner、/ralplan 和 /review 技能已合并到 /plan。所有工作流(访谈、直接、共识、审查)均可通过 /plan 使用。