研究-计划-实施工作流程Skill research-plan-implement

RPI(研究-计划-实施)工作流程是一种用于代码变更的 disciplined 三阶段方法,特别适用于中到大型代码库中的非平凡功能、重构或错误修复。它强调先研究代码库、再制定详细计划、后实施变更,以防止上下文浪费、确保正确性优先于速度,并提高代码质量和可维护性。关键词:代码开发、工作流程、研究、计划、实施、AI辅助、质量保证、项目管理、软件工程。

其他 0 次安装 0 次浏览 更新于 3/12/2026

名称: 研究-计划-实施 描述: 强制执行一个三阶段RPI工作流程(研究、计划、实施)用于代码变更。在处理中到大型代码库中的非平凡功能、重构或错误修复时使用,以防止上下文浪费并确保正确性优先于速度。

研究-计划-实施 (RPI)

一种disciplined的三阶段工作流程,以速度换取清晰度、可预测性和正确性。每个阶段都有一个验证门,必须通过才能继续。

核心原则: 绝不让AI在未先研究代码库并产生验证计划的情况下编写代码。一页计划比审查1000行AI代码提供10倍的杠杆作用。

何时使用

  • 非平凡功能、重构或错误修复
  • 不熟悉或大型代码库
  • 错误代码成本高于慢速代码的任务
  • 当之前的直接实施尝试失败时

何时不使用

  • 单行修复、拼写错误或琐碎更改
  • 您已有完整上下文和清晰路径的任务
  • 探索性原型制作(在固化原型时使用RPI)

工作流程

复制此检查清单并跟踪进度:

- [ ] 阶段1: 研究 (FAR验证)
- [ ] 阶段2: 计划 (FACTS验证)
- [ ] 阶段3: 实施 (验证)

阶段1: 研究

目标: 探索代码库,找到正确的文件。进行零修改。

使用子代理(Task工具,类型Explore)进行广泛阅读,而不污染主要上下文。子代理仅返回压缩事实。

研究输出

对于每个发现,记录:

  • 文件路径行号
  • 什么存在那里(函数签名、数据结构、模式)
  • 为什么它对当前任务重要

FAR验证门

每个发现必须通过所有三个:

检查 问题 失败示例
F实际性 这是来自实际代码,不是假设吗? “可能有个配置文件在某个地方”
A可操作性 是否包括具体文件路径+行号? “认证模块处理这个”
R相关性 是否直接与任务相关? 记录无关的实用函数

研究总结模板:

## 研究结果: {任务描述}

### 发现1: {简短标题}
- **文件**: `src/auth/middleware.ts:42-67`
- **什么**: `validateToken()`检查JWT过期和角色声明
- **为什么**: 我们需要扩展这个以支持API密钥认证

### 发现2: {简短标题}
- **文件**: `src/types/auth.ts:15-23`
- **什么**: `AuthContext`接口定义`user`、`token`、`roles`
- **为什么**: 必须在此处添加`apiKey`字段

### FAR检查
- [x] 所有发现引用带路径和行号的实际代码
- [x] 不包括假设或猜测
- [x] 每个发现直接与任务相关

在FAR通过之前不要进入阶段2。


阶段2: 计划

目标: 产生一个逐步计划,其中每个步骤都有代码级特异性。

没有代码片段的计划只是一个“感觉”——它没有执行能力。

计划结构

对于每个步骤:

### 步骤N: {动作动词} + {什么}

**文件**: `路径/到/文件.ts:行范围`
**更改**: {精确描述要添加/修改/删除什么}
**代码草图**:
  ```typescript
  // 之前(当前):
  function validateToken(token: string): AuthContext { ... }

  // 之后(计划):
  function validateAuth(credential: string | ApiKey): AuthContext { ... }

验证: {如何确认此步骤成功} 范围: 仅更改validateToken签名和主体。尚未触及调用者。


### FACTS验证门

每个步骤必须通过所有五个:

| 检查 | 问题 | 失败示例 |
|-------|----------|-------------|
| **F**可行性 | 这能在当前环境中完成吗? | “迁移到新框架”中途任务 |
| **A**原子性 | 它是否只做一件事? | “更新认证和重构测试” |
| **C**清晰性 | 是否有文件名、行号和代码片段? | “更新相关文件” |
| **T**可测试性 | 是否有具体验证步骤? | “确保它工作” |
| **S**范围性 | 是否清楚什么更改和什么不更改? | 无边界提及 |

**FACTS检查清单**:

```markdown
### FACTS验证
- [ ] F: 每个步骤在当前环境中可实现
- [ ] A: 每个步骤有恰好一个目标
- [ ] C: 每个步骤有文件路径、行号和代码草图
- [ ] T: 每个步骤有具体验证命令或检查
- [ ] S: 每个步骤说明它更改什么AND它留下什么不变

在FACTS通过之前不要进入阶段3。

向用户展示计划

在FACTS验证后,向人类审查展示计划。计划是主要的审查工件——审查计划比审查生成代码更高效。


阶段3: 实施

目标: 以最小上下文压力执行验证计划。

执行规则

  1. 逐步遵循计划——不要即兴发挥或“改进”超出范围
  2. 一次一步——在下一步之前完成并验证每一步
  3. 对独立步骤使用子代理——保持主要上下文精简
  4. 每一步后验证——运行计划中定义的验证

每一步后

步骤N: {标题}
- 状态: 完成 / 阻塞 / 修改
- 验证: {验证步骤的结果}
- 偏差: {无,或解释为什么计划被调整}

如果步骤失败

  1. 不要盲目重试——诊断为什么失败
  2. 用新信息更新计划
  3. 重新验证FACTS在更新步骤上
  4. 如果连续3+步骤失败,停止——参见升级

意图压缩

当对话变长或开始偏离轨道(大约20+轮后):

  1. 停止所有实施工作
  2. 总结关键研究发现和计划状态为压缩格式:
## 压缩上下文: {任务}

### 验证事实
- {带文件路径和行号的事实1}
- {带文件路径和行号的事实2}

### 计划状态
- 完成步骤: {列表}
- 当前步骤: {N} - {状态}
- 剩余: {列表}

### 阻塞
- {任何未解决的问题}
  1. 开始新对话用此压缩上下文

更好输入产生更好输出。带压缩事实的新鲜上下文胜过带噪声的臃肿上下文。


子代理策略

子代理是分片工具,不是角色。使用它们来:

任务 代理类型 返回
广泛代码库阅读 Explore 压缩文件/函数映射
目标搜索 Explore 具体路径和行号
独立实施步骤 Bashgeneral-purpose 步骤完成状态
测试执行 Bash 通过/失败带输出

规则:

  • 子代理做重读;主代理做推理
  • 子代理返回压缩事实,不是原始文件内容
  • 绝不让主要上下文吸收整个文件当子代理能提取相关行时

升级

当RPI计划反复失败(连续3+步骤失败),这表示任务复杂性超过AI在当前上下文中能处理的范围。

行动: 停止。返回白板。人类必须重新思考方法并不同地分解问题,然后重新使用AI。

不要通过重复失败蛮力推进——那浪费上下文并产生坏代码。