名称: 深化计划 描述: 通过为每个部分使用并行研究代理来增强计划,添加深度、最佳实践和实现细节
参数
[计划文件路径]
深化计划 - 增强模式
简介
注意:当前年份是 2026。 在搜索最新文档和最佳实践时使用此信息。
此命令接收一个现有计划(来自 /workflows:plan)并使用并行研究代理增强每个部分。每个主要元素都有其专用的研究子代理,以查找:
- 最佳实践和行业模式
- 性能优化
- UI/UX 改进(如果适用)
- 质量增强和边缘情况
- 实际实现示例
结果是一个深度基础、生产就绪的计划,包含具体实现细节。
计划文件
<plan_path> #$参数 </plan_path>
如果上述计划路径为空:
- 检查近期计划:
ls -la docs/plans/ - 询问用户:“您想深化哪个计划?请提供路径(例如
docs/plans/2026-01-15-feat-my-feature-plan.md)。”
在获得有效计划文件路径之前,请勿继续。
主要任务
1. 解析和分析计划结构
<thinking> 首先,读取并解析计划,识别每个可以通过研究增强的主要部分。 </thinking>
读取计划文件并提取:
- [ ] 概述/问题陈述
- [ ] 提议解决方案部分
- [ ] 技术方法/架构
- [ ] 实现阶段/步骤
- [ ] 代码示例和文件引用
- [ ] 验收标准
- [ ] 任何提到的 UI/UX 组件
- [ ] 提到的技术/框架(Rails、React、Python、TypeScript 等)
- [ ] 领域区域(数据模型、API、UI、安全、性能等)
创建部分清单:
部分 1: [标题] - [研究内容的简要描述]
部分 2: [标题] - [研究内容的简要描述]
...
2. 发现和应用可用技能
<thinking> 动态发现所有可用技能,并将其与计划部分匹配。不要假设技能存在 - 在运行时发现它们。 </thinking>
步骤 1: 从所有来源发现所有可用技能
# 1. 项目本地技能(最高优先级 - 项目特定)
ls .claude/skills/
# 2. 用户的全局技能(~/.claude/)
ls ~/.claude/skills/
# 3. compound-engineering 插件技能
ls ~/.claude/plugins/cache/*/compound-engineering/*/skills/
# 4. 所有其他已安装插件 - 检查每个插件的技能
find ~/.claude/plugins/cache -type d -name "skills" 2>/dev/null
# 5. 同时检查 installed_plugins.json 获取所有插件位置
cat ~/.claude/plugins/installed_plugins.json
重要: 检查每个来源。不要假设 compound-engineering 是唯一插件。使用任何相关已安装插件的技能。
步骤 2: 对于每个发现的技能,读取其 SKILL.md 以了解功能
# 对于每个找到的技能目录,读取其文档
cat [技能路径]/SKILL.md
步骤 3: 将技能与计划内容匹配
对于每个发现的技能:
- 读取其 SKILL.md 描述
- 检查是否有任何计划部分与技能领域匹配
- 如果有匹配,则生成一个子代理以应用该技能的知识
步骤 4: 为每个匹配的技能生成一个子代理
关键:对于每个匹配的技能,生成一个单独的子代理,并指示其使用该技能。
对于每个匹配的技能:
任务 通用目的: "您有 [技能名称] 技能,位于 [技能路径]。
您的任务: 将此技能应用于计划。
1. 读取技能: cat [技能路径]/SKILL.md
2. 严格按照技能的指示操作
3. 将技能应用于此内容:
[相关计划部分或完整计划]
4. 返回技能的全部输出
技能告诉您该做什么 - 请遵循。完全执行技能。"
并行生成所有技能子代理:
- 每个匹配技能一个子代理
- 每个子代理读取并使用其分配的技能
- 全部同时运行
- 10、20、30 个技能子代理都可以
每个子代理:
- 读取其技能的 SKILL.md
- 遵循技能的工作流程/指示
- 将技能应用于计划
- 返回技能产生的任何内容(代码、推荐、模式、审查等)
示例生成:
任务 通用目的: "使用位于 ~/.claude/plugins/.../dhh-rails-style 的 dhh-rails-style 技能。读取 SKILL.md 并将其应用于:[计划的 Rails 部分]"
任务 通用目的: "使用位于 ~/.claude/plugins/.../frontend-design 的 frontend-design 技能。读取 SKILL.md 并将其应用于:[计划的 UI 部分]"
任务 通用目的: "使用位于 ~/.claude/plugins/.../agent-native-architecture 的 agent-native-architecture 技能。读取 SKILL.md 并将其应用于:[计划的代理/工具部分]"
任务 通用目的: "使用位于 ~/.claude/skills/security-patterns 的 security-patterns 技能。读取 SKILL.md 并将其应用于:[完整计划]"
技能子代理数量无限制。为每个可能相关的技能生成一个。
3. 发现和应用学习/解决方案
<thinking> 检查来自 /workflows:compound 的文档学习。这些是以 markdown 文件存储的已解决问题。为每个学习生成一个子代理以检查其相关性。 </thinking>
学习位置 - 检查这些确切文件夹:
docs/solutions/ <-- 主要: 项目级别学习(由 /workflows:compound 创建)
├── performance-issues/
│ └── *.md
├── debugging-patterns/
│ └── *.md
├── configuration-fixes/
│ └── *.md
├── integration-issues/
│ └── *.md
├── deployment-issues/
│ └── *.md
└── [其他类别]/
└── *.md
步骤 1: 查找所有学习 markdown 文件
运行这些命令以获取每个学习文件:
# 主要位置 - 项目学习
find docs/solutions -name "*.md" -type f 2>/dev/null
# 如果 docs/solutions 不存在,检查备用位置:
find .claude/docs -name "*.md" -type f 2>/dev/null
find ~/.claude/docs -name "*.md" -type f 2>/dev/null
步骤 2: 读取每个学习的前置元数据以过滤
每个学习文件都有包含元数据的 YAML 前置元数据。读取每个文件的前约 20 行以获取:
---
标题: "简报的 N+1 查询修复"
类别: performance-issues
标签: [activerecord, n-plus-one, includes, eager-loading]
模块: Briefs
症状: "页面加载慢,日志中多个查询"
根本原因: "关联上缺少 includes"
---
对于每个 .md 文件,快速扫描其前置元数据:
# 读取每个学习的前 20 行(前置元数据 + 摘要)
head -20 docs/solutions/**/*.md
步骤 3: 过滤 - 仅为可能相关的学习生成子代理
将每个学习的前置元数据与计划比较:
标签:- 是否有任何标签与计划中的技术/模式匹配?类别:- 此类别是否相关?(例如,如果计划仅 UI,则跳过部署问题)模块:- 计划是否涉及此模块?症状:/根本原因:- 此问题是否可能发生在计划中?
跳过明显不适用的学习:
- 计划仅前端 → 跳过
database-migrations/学习 - 计划是 Python → 跳过
rails-specific/学习 - 计划无身份验证 → 跳过
authentication-issues/学习
为可能适用的学习生成子代理:
- 任何标签与计划技术重叠
- 与计划领域相同类别
- 类似模式或关注点
步骤 4: 为过滤后的学习生成子代理
对于每个通过过滤的学习:
任务 通用目的: "
学习文件: [.md 文件的完整路径]
1. 完全读取此学习文件
2. 此学习记录了一个先前已解决的问题
检查此学习是否适用于此计划:
---
[完整计划内容]
---
如果相关:
- 具体解释其如何适用
- 引用关键见解或解决方案
- 建议在何处/如何纳入
如果深度分析后不相关:
- 说 '不适用: [原因]'"
示例过滤:
# 找到 15 个学习文件,计划关于 "Rails API 缓存"
# 生成(可能相关):
docs/solutions/performance-issues/n-plus-one-queries.md # 标签: [activerecord] ✓
docs/solutions/performance-issues/redis-cache-stampede.md # 标签: [缓存, redis] ✓
docs/solutions/configuration-fixes/redis-connection-pool.md # 标签: [redis] ✓
# 跳过(明显不适用):
docs/solutions/deployment-issues/heroku-memory-quota.md # 不关于缓存
docs/solutions/frontend-issues/stimulus-race-condition.md # 计划是 API,非前端
docs/solutions/authentication-issues/jwt-expiry.md # 计划无身份验证
为所有过滤后的学习并行生成子代理。
这些学习是机构知识 - 应用它们可防止重复过去的错误。
4. 启动每部分研究代理
<thinking> 对于计划中的每个主要部分,生成专门的研究代理以研究改进。使用 Explore 代理类型进行开放式研究。 </thinking>
对于每个识别的部分,启动并行研究:
任务 Explore: "研究最佳实践、模式和实际示例对于:[部分主题]。
查找:
- 行业标准和惯例
- 性能考虑
- 常见陷阱及如何避免
- 文档和教程
返回具体、可操作的推荐。"
同时使用 Context7 MCP 获取框架文档:
对于计划中提到的任何技术/框架,查询 Context7:
mcp__plugin_compound-engineering_context7__resolve-library-id: 查找 [框架] 的库 ID
mcp__plugin_compound-engineering_context7__query-docs: 查询特定模式的文档
使用 WebSearch 获取当前最佳实践:
搜索关于计划中主题的近期(2024-2026)文章、博客文章和文档。
5. 发现并运行所有审查代理
<thinking> 动态发现每个可用代理并运行它们全部对抗计划。不要过滤,不要跳过,不要假设相关性。40+ 并行代理可以。使用所有可用内容。 </thinking>
步骤 1: 从所有来源发现所有可用代理
# 1. 项目本地代理(最高优先级 - 项目特定)
find .claude/agents -name "*.md" 2>/dev/null
# 2. 用户的全局代理(~/.claude/)
find ~/.claude/agents -name "*.md" 2>/dev/null
# 3. compound-engineering 插件代理(所有子目录)
find ~/.claude/plugins/cache/*/compound-engineering/*/agents -name "*.md" 2>/dev/null
# 4. 所有其他已安装插件 - 检查每个插件的代理
find ~/.claude/plugins/cache -path "*/agents/*.md" 2>/dev/null
# 5. 检查 installed_plugins.json 以查找所有插件位置
cat ~/.claude/plugins/installed_plugins.json
# 6. 对于本地插件(isLocal: true),检查其源目录
# 解析 installed_plugins.json 并查找本地插件路径
重要: 检查每个来源。包括来自以下来源的代理:
- 项目
.claude/agents/ - 用户的
~/.claude/agents/ - compound-engineering 插件(但跳过 workflow/ 代理 - 仅使用 review/、research/、design/、docs/)
- 所有其他已安装插件(agent-sdk-dev、frontend-design 等)
- 任何本地插件
对于 compound-engineering 插件具体:
- 使用:
agents/review/*(所有审查者) - 使用:
agents/research/*(所有研究者) - 使用:
agents/design/*(设计代理) - 使用:
agents/docs/*(文档代理) - 跳过:
agents/workflow/*(这些是工作流程协调器,非审查者)
步骤 2: 对于每个发现的代理,读取其描述
读取每个代理文件的前几行以了解其审查/分析内容。
步骤 3: 并行启动所有代理
对于每个发现的代理,并行启动一个任务:
任务 [代理名称]: "使用您的专业知识审查此计划。应用所有您的检查和模式。计划内容:[完整计划内容]"
关键规则:
- 不要通过“相关性”过滤代理 - 运行它们全部
- 不要因为“可能不适用”而跳过代理 - 让它们决定
- 在单个消息中启动所有代理,使用多个任务工具调用
- 20、30、40 个并行代理可以 - 使用所有内容
- 每个代理可能捕获其他代理遗漏的内容
- 目标是最大覆盖,而非效率
步骤 4: 同时发现并运行研究代理
研究代理(如 best-practices-researcher、framework-docs-researcher、git-history-analyzer、repo-research-analyst)也应针对相关计划部分运行。
6. 等待所有代理并综合所有内容
<thinking> 等待所有并行代理完成 - 技能、研究代理、审查代理、所有内容。然后将所有发现综合成一个全面增强。 </thinking>
收集所有来源的输出:
- 基于技能的子代理 - 每个技能的全部输出(代码示例、模式、推荐)
- 学习/解决方案子代理 - 来自 /workflows:compound 的相关文档学习
- 研究代理 - 最佳实践、文档、实际示例
- 审查代理 - 来自每个审查者的所有反馈(架构、安全、性能、简洁性等)
- Context7 查询 - 框架文档和模式
- 网络搜索 - 当前最佳实践和文章
对于每个代理的发现,提取:
- [ ] 具体推荐(可操作项)
- [ ] 代码模式和示例(复制粘贴就绪)
- [ ] 要避免的反模式(警告)
- [ ] 性能考虑(指标、基准)
- [ ] 安全考虑(漏洞、缓解措施)
- [ ] 发现的边缘情况(处理策略)
- [ ] 文档链接(参考)
- [ ] 技能特定模式(来自匹配技能)
- [ ] 相关学习(适用的过去解决方案 - 防止重复错误)
去重和优先排序:
- 合并来自多个代理的类似推荐
- 按影响优先排序(高价值改进优先)
- 标记冲突建议供人工审查
- 按计划部分分组
7. 增强计划部分
<thinking> 将研究发现合并回计划,在不更改原始结构的情况下添加深度。 </thinking>
每个部分的增强格式:
## [原始部分标题]
[原始内容保留]
### 研究见解
**最佳实践:**
- [具体推荐 1]
- [具体推荐 2]
**性能考虑:**
- [优化机会]
- [目标基准或指标]
**实现细节:**
```[语言]
// 来自研究的具体代码示例
边缘情况:
- [边缘情况 1 及如何处理]
- [边缘情况 2 及如何处理]
参考:
- [文档 URL 1]
- [文档 URL 2]
### 8. 添加增强摘要
在计划顶部添加摘要部分:
```markdown
## 增强摘要
**深化于:** [日期]
**增强部分:** [数量]
**使用的研究代理:** [列表]
### 关键改进
1. [主要改进 1]
2. [主要改进 2]
3. [主要改进 3]
### 发现的新考虑
- [重要发现 1]
- [重要发现 2]
9. 更新计划文件
写入增强计划:
- 保留原始文件名
- 如果用户偏好新文件,则添加
-deepened后缀 - 更新任何时间戳或元数据
输出格式
原地更新计划文件(或如果用户请求单独文件,则在 -plan 后追加 -deepened,例如 2026-01-15-feat-auth-plan-deepened.md)。
质量检查
在最终确定前:
- [ ] 所有原始内容保留
- [ ] 研究见解清晰标记和归属
- [ ] 代码示例语法正确
- [ ] 链接有效且相关
- [ ] 部分之间无矛盾
- [ ] 增强摘要准确反映更改
增强后选项
写入增强计划后,使用 AskUserQuestion 工具 呈现这些选项:
问题: “计划已深化于 [plan_path]。您接下来想做什么?”
选项:
- 查看差异 - 显示添加/更改的内容
- 运行
/plan_review- 获取审查者对增强计划的反馈 - 开始
/workflows:work- 开始实施此增强计划 - 进一步深化 - 在特定部分运行另一轮研究
- 恢复 - 恢复原始计划(如果备份存在)
基于选择:
- 查看差异 → 运行
git diff [plan_path]或显示前后对比 /plan_review→ 使用计划文件路径调用 /plan_review 命令/workflows:work→ 使用计划文件路径调用 /workflows:work 命令- 进一步深化 → 询问哪些部分需要更多研究,然后重新运行那些代理
- 恢复 → 从 git 或备份恢复
示例增强
之前(来自 /workflows:plan):
## 技术方法
使用 React Query 进行数据获取,并带乐观更新。
之后(来自 /workflows:deepen-plan):
## 技术方法
使用 React Query 进行数据获取,并带乐观更新。
### 研究见解
**最佳实践:**
- 基于数据新鲜度要求配置 `staleTime` 和 `cacheTime`
- 使用 `queryKey` 工厂以实现一致的缓存失效
- 在依赖查询的组件周围实现错误边界
**性能考虑:**
- 为稳定数据启用 `refetchOnWindowFocus: false` 以减少不必要请求
- 使用 `select` 选项在查询级别转换和记忆数据
- 考虑 `placeholderData` 以实现即时感知加载
**实现细节:**
```typescript
// 推荐查询配置
const queryClient = new QueryClient({
defaultOptions: {
queries: {
staleTime: 5 * 60 * 1000, // 5 分钟
retry: 2,
refetchOnWindowFocus: false,
},
},
});
边缘情况:
- 使用
cancelQueries在组件卸载时处理竞态条件 - 为瞬态网络失败实现重试逻辑
- 考虑使用
persistQueryClient的离线支持
参考:
- https://tanstack.com/query/latest/docs/react/guides/optimistic-updates
- https://tkdodo.eu/blog/practical-react-query
切勿编码!仅研究和增强计划。