955 lines
24 KiB
Markdown
955 lines
24 KiB
Markdown
---
|
||
description: "需求规划拆解:将复杂需求转化为结构化任务树,生成执行计划"
|
||
---
|
||
|
||
# /runtime.plan - 需求规划与任务拆解
|
||
|
||
## 核心目标
|
||
|
||
**我们不是执行者,我们是规划者**。
|
||
|
||
当面对复杂需求时,我们像经验丰富的架构师一样:
|
||
1. **理解需求本质** - 用户真正想要的是什么?
|
||
2. **功能分解** - 将大问题拆解为小任务
|
||
3. **识别依赖** - 哪些必须先做,哪些可以并行?
|
||
4. **估算工时** - 需要多少时间?风险在哪里?
|
||
5. **生成执行路径** - 最优的实施顺序
|
||
|
||
```
|
||
用户需求 → 需求分析 → 功能拆解 → 依赖识别 → 任务树 → 执行计划
|
||
↓
|
||
/runtime.iterate
|
||
```
|
||
|
||
---
|
||
|
||
## 何时使用 /runtime.plan
|
||
|
||
### 必须使用场景
|
||
- ✅ **用户需求模糊**:"我想加个电商功能" → 需要拆解为具体任务
|
||
- ✅ **技术方案不确定**:需要分析多种实现路径
|
||
- ✅ **项目范围大**:功能复杂,需要系统性规划
|
||
- ✅ **团队协作**:需要清晰的任务分配和依赖关系
|
||
- ✅ **估算和排期**:需要工作量估算和时间线
|
||
|
||
### 使用流程
|
||
|
||
```bash
|
||
用户: "实现用户认证系统(注册、登录、密码重置、JWT)"
|
||
|
||
AI:
|
||
/runtime.plan "用户认证系统"
|
||
↓ 自动执行...
|
||
|
||
[阶段1: 需求分析]
|
||
- 识别需求类型: 新功能开发
|
||
- 提取约束: JWT有效期7天、并发1000
|
||
- 分析技术栈: Express + PostgreSQL
|
||
- 识别范围: API、DB、安全、邮件
|
||
|
||
[阶段2: 功能拆解]
|
||
- 功能点: 注册、登录、密码重置、JWT管理、登出
|
||
- 任务数: 17个任务
|
||
- 分层: 基础设施 → 服务层 → API → 安全 → 测试
|
||
|
||
[阶段3: 依赖分析]
|
||
- 构建依赖图
|
||
- 计算关键路径
|
||
- 识别可并行任务
|
||
|
||
[阶段4: 估算与风险]
|
||
- 总工时: 17.75小时
|
||
- 关键路径: 9小时
|
||
- 风险: 密码重置流程复杂
|
||
|
||
[输出: 交付给用户]
|
||
- 可视化任务树 (ASCII/MD格式)
|
||
- JSON格式的机器可读计划
|
||
- 甘特图时间线
|
||
- 风险评估报告
|
||
|
||
# 然后进入迭代执行
|
||
/runtime.iterate --plan=plan-2025xx.json
|
||
↓ 自动执行...
|
||
```
|
||
|
||
---
|
||
|
||
## 规划过程详解
|
||
|
||
### 阶段1: 需求分析 (Understanding)
|
||
|
||
#### 1.1 需求类型识别
|
||
|
||
```python
|
||
def identify_requirement_type(text: str) -> RequirementType:
|
||
"""识别需求类型"""
|
||
if any(word in text for word in ["添加", "实现", "开发", "新功能"]):
|
||
return RequirementType.NEW_FEATURE
|
||
|
||
if any(word in text for word in ["修复", "bug", "错误", "问题"]):
|
||
return RequirementType.BUG_FIX
|
||
|
||
if any(word in text for word in ["重构", "优化", "改进", "清理"]):
|
||
return RequirementType.REFACTORING
|
||
|
||
if any(word in text for word in ["学习", "理解", "调研", "研究"]):
|
||
return RequirementType.RESEARCH
|
||
|
||
return RequirementType.UNKNOWN
|
||
```
|
||
|
||
#### 1.2 约束提取
|
||
|
||
从需求中提取隐含约束:
|
||
|
||
```python
|
||
def extract_constraints(demand: str) -> Constraints:
|
||
"""提取约束条件"""
|
||
|
||
constraints = {
|
||
"time": None, # 时间约束
|
||
"budget": None, # 资源约束
|
||
"tech_stack": [], # 技术栈约束
|
||
"performance": {}, # 性能约束
|
||
"security": {}, # 安全约束
|
||
}
|
||
|
||
# 性能约束
|
||
if "并发" in demand:
|
||
# "支持并发1000用户"
|
||
match = re.search(r"并发(\d+)", demand)
|
||
if match:
|
||
constraints["performance"]["concurrency"] = int(match.group(1))
|
||
|
||
# 时间约束
|
||
if "JWT" in demand and "天" in demand:
|
||
# "JWT有效期7天"
|
||
match = re.search(r"有效期(\d+)天", demand)
|
||
if match:
|
||
constraints["security"]["tokenExpiry"] = int(match.group(1))
|
||
|
||
# 安全约束
|
||
if "加密" in demand:
|
||
constraints["security"]["encryption"] = True
|
||
|
||
return constraints
|
||
```
|
||
|
||
#### 1.3 知识缺口识别
|
||
|
||
```python
|
||
def identify_knowledge_gaps(demand: str, context: Memory) -> List[str]:
|
||
"""
|
||
识别规划需要但当前缺乏的知识
|
||
"""
|
||
gaps = []
|
||
|
||
# 检查技术栈
|
||
if "JWT" in demand and not context.has_pattern("jwt"):
|
||
gaps.append("JWT实现模式")
|
||
|
||
if "密码" in demand and not context.has_pattern("bcrypt"):
|
||
gaps.append("密码哈希模式")
|
||
|
||
# 检查架构
|
||
if "认证" in demand and not context.has_pattern("auth"):
|
||
gaps.append("认证架构模式")
|
||
|
||
# 检查项目上下文
|
||
if not context.has_key("tech_stack"):
|
||
gaps.append("项目技术栈")
|
||
|
||
return gaps
|
||
```
|
||
|
||
---
|
||
|
||
### 阶段2: 功能分解 (Decomposition)
|
||
|
||
#### 2.1 洋葱模型分解法
|
||
|
||
```
|
||
[用户可见功能]
|
||
↑
|
||
╔═════════════════════╗
|
||
║ API层 (REST/GraphQL) ║
|
||
╚═══════════╦═══════════╝
|
||
↓
|
||
╔═════════════════════╗
|
||
║ 服务层 (业务逻辑) ║
|
||
╚═══════════╦═══════════╝
|
||
↓
|
||
╔═════════════════════╗
|
||
║ 数据层 (DB/Cache) ║
|
||
╚═══════════╦═══════════╝
|
||
↓
|
||
╔═════════════════════╗
|
||
║ 基础设施 (安全/监控) ║
|
||
╚═════════════════════╝
|
||
```
|
||
|
||
**分解规则**:
|
||
- 每一层都可以独立分解
|
||
- 上层依赖下层
|
||
- 同层任务尽量解耦
|
||
|
||
#### 2.2 认证系统分解示例
|
||
|
||
```python
|
||
# 顶层: 用户故事
|
||
stories = [
|
||
"作为新用户,我可以注册账号",
|
||
"作为用户,我可以登录系统",
|
||
"作为忘记密码的用户,我可以重置密码",
|
||
"作为登录用户,我可以安全退出"
|
||
]
|
||
|
||
# 第二层: 功能点
|
||
features = {
|
||
"注册": {
|
||
"输入": ["email", "password"],
|
||
"验证": ["邮箱格式", "密码强度", "邮箱唯一性"],
|
||
"副作用": ["密码哈希", "生成验证Token", "发送邮件"]
|
||
},
|
||
"登录": {
|
||
"输入": ["email", "password"],
|
||
"验证": ["账号存在", "密码匹配", "账号已验证"],
|
||
"输出": ["JWT Token", "Refresh Token"]
|
||
}
|
||
}
|
||
|
||
# 第三层: 技术任务
|
||
tasks = {
|
||
"注册": [
|
||
"创建User表",
|
||
"实现密码bcrypt哈希",
|
||
"实现邮箱验证逻辑",
|
||
"实现Register API",
|
||
"集成邮件服务",
|
||
"写单元测试"
|
||
]
|
||
}
|
||
```
|
||
|
||
#### 2.3 MECE原则(Mutually Exclusive, Collectively Exhaustive)
|
||
|
||
```markdown
|
||
# 好的分解(符合MECE)
|
||
|
||
✅ 认证系统
|
||
├─ 注册(独立功能)
|
||
├─ 登录(独立功能)
|
||
├─ 密码重置(独立功能)
|
||
└─ Token管理(独立功能)
|
||
|
||
# 坏的分解(不符合MECE)
|
||
|
||
❌ 认证系统
|
||
├─ 注册(独立)
|
||
├─ 登录(独立)
|
||
├─ 发送邮件(重复:注册和密码重置都发送邮件) ← 不互斥
|
||
└─ ...(缺少Token刷新、登出) ← 不穷尽
|
||
```
|
||
|
||
---
|
||
|
||
### 阶段3: 依赖关系分析
|
||
|
||
#### 3.1 依赖类型
|
||
|
||
```python
|
||
class DependencyType(Enum):
|
||
# 必须先完成A,才能开始B
|
||
SEQUENTIAL = "sequential" # 串行
|
||
|
||
# A和B可以同时进行
|
||
PARALLEL = "parallel" # 并行
|
||
|
||
# A完成后,B才能开始,但C不需要A
|
||
PARTIAL = "partial" # 部分依赖
|
||
|
||
# A和B互相依赖(需要重构设计)
|
||
CIRCULAR = "circular" # 循环依赖(坏味道)
|
||
```
|
||
|
||
#### 3.2 构建依赖图
|
||
|
||
```python
|
||
def build_dependency_graph(tasks: List[Task]) -> nx.DiGraph:
|
||
"""
|
||
构建任务依赖关系图
|
||
"""
|
||
G = nx.DiGraph()
|
||
|
||
# 添加节点
|
||
for task in tasks:
|
||
G.add_node(task.id,
|
||
name=task.name,
|
||
effort=task.effort,
|
||
priority=task.priority,
|
||
risk=task.risk_level)
|
||
|
||
# 添加边(依赖关系)
|
||
for task in tasks:
|
||
for dep_id in task.dependencies:
|
||
G.add_edge(dep_id, task.id, type="depends_on")
|
||
|
||
return G
|
||
```
|
||
|
||
#### 3.3 识别关键路径
|
||
|
||
```python
|
||
def find_critical_path(G: nx.DiGraph) -> List[str]:
|
||
"""
|
||
计算关键路径(最长工时路径)
|
||
"""
|
||
# 计算每个节点到终点的最长路径
|
||
critical_path = nx.dag_longest_path(G, weight="effort")
|
||
|
||
return critical_path
|
||
```
|
||
|
||
**认证系统关键路径示例**: `User表 → Token表 → Token服务 → Login API → 集成测试`
|
||
|
||
**总工时**: 9小时(最短可能完成时间)
|
||
|
||
---
|
||
|
||
### 阶段4: 任务树生成
|
||
|
||
#### 4.1 可视化任务树 (ASCII)
|
||
|
||
```python
|
||
def generate_ascii_tree(tasks: List[Task]) -> str:
|
||
"""
|
||
生成ASCII格式的任务树
|
||
"""
|
||
lines = []
|
||
lines.append("实现用户认证系统 (目标)")
|
||
lines.append("│")
|
||
|
||
# 按层级分组
|
||
layers = {
|
||
"基础设施": ["①", "②", "③"],
|
||
"服务层": ["④", "⑤", "⑥"],
|
||
"API层": ["⑦", "⑧", "⑨", "⑩", "⑪"],
|
||
"安全层": ["⑫", "⑬", "⑭"],
|
||
"测试": ["⑮", "⑯", "⑰"]
|
||
}
|
||
|
||
for i, (layer_name, task_ids) in enumerate(layers.items()):
|
||
lines.append(f"├─ {layer_name}")
|
||
|
||
for j, task_id in enumerate(task_ids):
|
||
task = get_task(task_id)
|
||
prefix = "└─" if j == len(task_ids) - 1 else "├─"
|
||
lines.append(f"│ {prefix} {task_id}: {task.name} ({task.effort}h)")
|
||
|
||
return "\n".join(lines)
|
||
```
|
||
|
||
**输出示例**: `.ai-runtime/commands/runtime.plan.md`中包含完整示例
|
||
|
||
#### 4.2 JSON格式的任务树
|
||
|
||
```json
|
||
{
|
||
"project": "用户认证系统",
|
||
"total_tasks": 17,
|
||
"total_effort": "17.75h",
|
||
"critical_path": ["①","②","⑤","⑧","⑮","⑯"],
|
||
"critical_path_effort": "9h",
|
||
"tasks": [
|
||
{
|
||
"id": "①",
|
||
"name": "创建User表",
|
||
"layer": "基础设施",
|
||
"effort": 0.5,
|
||
"priority": "P0",
|
||
"dependencies": [],
|
||
"risk": "low",
|
||
"acceptance_criteria": [
|
||
"表结构符合User模型",
|
||
"已添加email唯一索引",
|
||
"created_at自动填充"
|
||
]
|
||
},
|
||
{
|
||
"id": "②",
|
||
"name": "创建Token表",
|
||
"layer": "基础设施",
|
||
"effort": 0.5,
|
||
"priority": "P0",
|
||
"dependencies": ["①"],
|
||
"risk": "low"
|
||
}
|
||
],
|
||
"phases": [
|
||
{
|
||
"phase": 1,
|
||
"name": "基础设施",
|
||
"tasks": ["①","②","③"],
|
||
"parallelizable": true
|
||
},
|
||
{
|
||
"phase": 2,
|
||
"name": "服务层",
|
||
"tasks": ["④","⑤","⑥"]
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
#### 4.3 甘特图生成
|
||
|
||
```python
|
||
def generate_gantt(tasks: List[Task]) -> str:
|
||
"""
|
||
生成简单的甘特图(Markdown格式)
|
||
"""
|
||
lines = []
|
||
lines.append("```gantt")
|
||
lines.append("title 认证系统实施计划")
|
||
lines.append("dateFormat YYYY-MM-DD")
|
||
lines.append("")
|
||
|
||
# 按阶段分组
|
||
for phase in ["基础设施", "服务层", "API层", "安全层", "测试"]:
|
||
phase_tasks = [t for t in tasks if t.layer == phase]
|
||
if phase_tasks:
|
||
lines.append(f"section {phase}")
|
||
for task in phase_tasks:
|
||
start = task.start_date.strftime('%Y-%m-%d')
|
||
end = task.end_date.strftime('%Y-%m-%d')
|
||
lines.append(f"{task.name} :a{task.id}, {start}, {end}")
|
||
|
||
lines.append("```")
|
||
|
||
return "\n".join(lines)
|
||
```
|
||
|
||
---
|
||
|
||
### 阶段5: 风险评估
|
||
|
||
#### 5.1 识别风险
|
||
|
||
```python
|
||
def identify_risks(tasks: List[Task]) -> List[Risk]:
|
||
"""
|
||
基于任务特征识别风险
|
||
"""
|
||
risks = []
|
||
|
||
for task in tasks:
|
||
# 复杂度过高风险
|
||
if task.effort > 4:
|
||
risks.append(Risk(
|
||
task=task.id,
|
||
level="medium",
|
||
category="complexity",
|
||
description="任务过大,可能隐藏未知问题",
|
||
mitigation="进一步分解成子任务"
|
||
))
|
||
|
||
# 依赖过多风险
|
||
if len(task.dependencies) > 3:
|
||
risks.append(Risk(
|
||
task=task.id,
|
||
level="high",
|
||
category="dependency",
|
||
description="强依赖多个任务,成为阻塞点",
|
||
mitigation="尽早开始,或与下游任务同步进行"
|
||
))
|
||
|
||
# 新知识风险
|
||
if task.confidence < 0.6:
|
||
risks.append(Risk(
|
||
task=task.id,
|
||
level="high",
|
||
category="knowledge",
|
||
description="不熟悉的技术/模式,容易出错",
|
||
mitigation="先进行小的Spike,或请求专家帮助"
|
||
))
|
||
|
||
return risks
|
||
```
|
||
|
||
#### 5.2 风险矩阵
|
||
|
||
```markdown
|
||
## 风险评估矩阵
|
||
|
||
| 任务 | 风险类型 | 可能性 | 影响 | 等级 | 应对策略 |
|
||
|------|---------|--------|------|------|---------|
|
||
| 密码重置流程 | 复杂度 | 中 | 高 | 🔴 高 | 进一步分解,先做Spike |
|
||
| Token刷新 | 知识缺口 | 高 | 中 | 🟡 中 | 查阅资料,咨询专家 |
|
||
| Email服务 | 外部依赖 | 低 | 中 | 🟢 低 | 设计降级方案 |
|
||
```
|
||
|
||
---
|
||
|
||
## 命令定义
|
||
|
||
### 语法
|
||
|
||
```bash
|
||
/runtime.plan "[需求描述]" \
|
||
--strategy=[full|mvp|risk-driven] \
|
||
--estimate=[true|false] \
|
||
--detail=[high|medium|low] \
|
||
--output=[json|md|both]
|
||
```
|
||
|
||
### 参数说明
|
||
|
||
| 参数 | 说明 | 默认值 |
|
||
|------|------|--------|
|
||
| `strategy` | 规划策略<br>- `full`: 完整规划所有细节<br>- `mvp`: 只规划MVP核心功能<br>- `risk-driven`: 优先规划高风险部分 | `full` |
|
||
| `estimate` | 是否包含工时估算 | `true` |
|
||
| `detail` | 任务详细程度 | `medium` |
|
||
| `output` | 输出格式 | `both` |
|
||
|
||
### 使用示例
|
||
|
||
#### 示例1: 完整规划
|
||
|
||
```bash
|
||
/runtime.plan "实现用户认证系统,包括注册、登录、密码重置、JWT管理,使用bcrypt加密,JWT有效期7天"
|
||
```
|
||
|
||
**输出**:
|
||
|
||
**console**:
|
||
```
|
||
📋 需求规划: 用户认证系统
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
需求类型: 新功能开发
|
||
技术栈: Node.js + Express + PostgreSQL + JWT
|
||
约束: JWT有效期7天,bcrypt加密
|
||
|
||
[功能拆解]
|
||
├─ 注册
|
||
├─ 登录
|
||
├─ 密码重置
|
||
└─ JWT管理
|
||
|
||
[任务统计]
|
||
总任务数: 17个
|
||
总工时: 17.75小时
|
||
关键路径: 9小时
|
||
|
||
[风险]
|
||
⚠️ 密码重置流程复杂度高(建议Spike)
|
||
⚠️ Token刷新机制不熟悉(建议先调研)
|
||
|
||
输出文件:
|
||
✓ cognition/plans/plan-20251114-1045.json
|
||
✓ cognition/plans/plan-20251114-1045.md
|
||
✓ cognition/graphs/task-tree-20251114-1045.svg
|
||
```
|
||
|
||
**JSON输出**: `cognition/plans/plan-20251114-1045.json`
|
||
```json
|
||
{
|
||
"project": "用户认证系统",
|
||
"requirement": "实现用户认证系统,包括注册...",
|
||
"total_tasks": 17,
|
||
"total_effort": "17.75h",
|
||
"critical_path": ["①","②","⑤","⑧","⑮","⑯"],
|
||
"tasks": [...],
|
||
"risks": [...]
|
||
}
|
||
```
|
||
|
||
**Markdown输出**: `cognition/plans/plan-20251114-1045.md`
|
||
```markdown
|
||
# 用户认证系统 - 实施计划
|
||
|
||
## 需求概述
|
||
实现用户认证系统...
|
||
|
||
## 任务树
|
||
|
||
### 阶段1: 基础设施
|
||
- ① 创建User表 (0.5h) - P0
|
||
- ② 创建Token表 (0.5h) - P0 - 依赖:①
|
||
- ③ 配置JWT (0.25h) - P0
|
||
|
||
...
|
||
|
||
## 甘特图
|
||
```gantt
|
||
...
|
||
```
|
||
|
||
## 风险评估
|
||
...
|
||
```
|
||
|
||
#### 示例2: MVP规划
|
||
|
||
```bash
|
||
/runtime.plan "构建图片分享社交平台" --strategy=mvp
|
||
```
|
||
|
||
**特点**:
|
||
- 只规划核心功能(上传图片、浏览、点赞、评论)
|
||
- 非核心功能(滤镜、故事、推荐算法)推迟到后续迭代
|
||
- 快速交付可演示版本
|
||
|
||
#### 示例3: 风险驱动规划
|
||
|
||
```bash
|
||
/runtime.plan "实现微服务架构的电商平台" --strategy=risk-driven
|
||
```
|
||
|
||
**特点**:
|
||
- 优先识别高风险任务(服务拆分、数据一致性、分布式事务)
|
||
- 建议先Spike,降低不确定性
|
||
- 生成风险评估报告
|
||
|
||
---
|
||
|
||
## 规划策略
|
||
|
||
### 策略1: Full(完整规划)
|
||
|
||
```
|
||
适用: 项目需求明确,技术方案清晰,有足够时间
|
||
|
||
特点:
|
||
- 规划所有细节
|
||
- 包括测试、文档、监控
|
||
- 精确到小时的估算
|
||
|
||
输出: 完整项目计划(类似PRD + 技术方案)
|
||
```
|
||
|
||
### 策略2: MVP(最小可行产品)
|
||
|
||
```
|
||
适用: 需求探索期,需要快速验证,时间紧张
|
||
|
||
特点:
|
||
- 只规划核心价值功能
|
||
- 砍掉所有"锦上添花"的功能
|
||
- 估算粗略(只到天)
|
||
|
||
输出: MVP功能清单 + 最小任务集
|
||
```
|
||
|
||
**示例**: 社交应用MVP
|
||
- ✅ 用户注册/登录
|
||
- ✅ 发帖
|
||
- ✅ 浏览帖子
|
||
- ✅ 点赞
|
||
|
||
**推迟到迭代2**:
|
||
- ❌ 评论回复
|
||
- ❌ 私信
|
||
- ❌ 推荐算法
|
||
- ❌ 图片滤镜
|
||
|
||
### 策略3: Risk-Driven(风险驱动规划)
|
||
|
||
```
|
||
适用: 技术不确定性强,有高风险模块
|
||
|
||
特点:
|
||
- 优先分析高风险任务
|
||
- 建议先做技术调研(Spike)
|
||
- 生成风险缓解计划
|
||
|
||
输出: 风险矩阵 + 应对策略 + 调整后任务树
|
||
```
|
||
|
||
**示例**: 微服务架构
|
||
|
||
高风险任务:
|
||
1. 服务拆分策略 → 先做Spike
|
||
2. 分布式事务 → 调研Saga模式
|
||
3. 数据一致性 → 评估最终一致性影响
|
||
|
||
低风险任务(可以推迟):
|
||
- API网关 → 成熟技术,直接使用
|
||
- 服务发现 → Consul/Nacos直接使用
|
||
- 配置中心 → Apollo/Nacos直接使用
|
||
|
||
---
|
||
|
||
## 任务规格模板
|
||
|
||
每个任务使用统一模板:
|
||
|
||
```markdown
|
||
## Task {ID}: {任务名称}
|
||
|
||
**ID**: TASK-{ID}
|
||
**类型**: [feature|bug|refactor|doc|test]
|
||
**优先级**: [P0|P1|P2]
|
||
**预计工时**: X小时
|
||
**置信度**: 0.X (0-1)
|
||
**依赖**: [依赖的任务ID列表]
|
||
|
||
### 目标
|
||
[清晰描述任务的目标]
|
||
|
||
### 验收标准(DoD)
|
||
- [ ] 代码实现完成
|
||
- [ ] 单元测试覆盖率 > 80%
|
||
- [ ] 手动测试通过
|
||
- [ ] 代码审查通过
|
||
- [ ] 文档更新
|
||
- [ ] 无回归错误
|
||
|
||
### 实现大纲
|
||
1. [步骤1]
|
||
2. [步骤2]
|
||
3. [步骤3]
|
||
|
||
### 潜在风险
|
||
- ⚠️ [风险1]
|
||
- ⚠️ [风险2]
|
||
|
||
### 如果卡住(Escalation)
|
||
- [求助谁/查阅什么]
|
||
|
||
### 相关文件
|
||
- [文件路径]
|
||
```
|
||
|
||
---
|
||
|
||
## 与 /runtime.learn 的区别
|
||
|
||
| 维度 | `/runtime.learn` | `/runtime.plan` | 为什么分开? |
|
||
|------|-----------------|----------------|------------|
|
||
| **目标** | 理解未知问题 | 规划已知需求 | 认知阶段不同 |
|
||
| **输入** | 问题(需要探索) | 需求(相对明确) | 前提条件不同 |
|
||
| **核心** | 知识缺口识别 | 功能拆解与依赖分析 | 方法论不同 |
|
||
| **输出** | 学习报告 + 新知识 | 任务树 + 执行计划 | 产物不同 |
|
||
| **下一步** | 通常接 /runtime.plan | 接 /runtime.iterate | 工作流分工 |
|
||
|
||
**典型工作流**:
|
||
```
|
||
情况A: 完全未知的问题
|
||
/runtime.learn "为什么服务会崩溃?"
|
||
↓ 理解后,发现问题: "需要添加限流"
|
||
/runtime.plan "实现限流功能" # 生成实施计划
|
||
↓
|
||
/runtime.iterate --plan=plan-xx.json # 执行计划
|
||
|
||
情况B: 明确的需求
|
||
/runtime.plan "实现用户认证系统" # 直接规划
|
||
↓
|
||
/runtime.iterate --plan=plan-xx.json # 执行计划
|
||
```
|
||
|
||
---
|
||
|
||
## 工具与脚本
|
||
|
||
### 辅助脚本: task-analyzer.py
|
||
|
||
```python
|
||
#!/usr/bin/env python3
|
||
"""
|
||
任务分析器 - 从需求文本提取结构化信息
|
||
"""
|
||
|
||
import re
|
||
import json
|
||
|
||
class TaskAnalyzer:
|
||
def __init__(self):
|
||
self.patterns = {
|
||
"action": r"(实现|添加|修改|删除|重构|修复)",
|
||
"object": r"(用户|认证|JWT|密码|邮件|Token|API)",
|
||
"constraint": r"\[(.*?)\]",
|
||
"time": r"(\d+天|\d+小时|\d+h)"
|
||
}
|
||
|
||
def analyze(self, requirement_text):
|
||
"""分析需求文本"""
|
||
result = {
|
||
"actions": [],
|
||
"objects": [],
|
||
"constraints": [],
|
||
"time_keywords": []
|
||
}
|
||
|
||
for key, pattern in self.patterns.items():
|
||
matches = re.findall(pattern, requirement_text)
|
||
result[f"{key}s"] = matches
|
||
|
||
return result
|
||
|
||
def suggest_tasks(self, analysis):
|
||
"""基于分析建议任务"""
|
||
tasks = []
|
||
|
||
# 如果发现"认证"和"用户"
|
||
if "认证" in analysis["objects"] and "用户" in analysis["objects"]:
|
||
tasks.extend([
|
||
"创建User表",
|
||
"实现密码哈希",
|
||
"实现注册API",
|
||
"实现登录API"
|
||
])
|
||
|
||
# 如果发现"JWT"
|
||
if "JWT" in analysis["objects"]:
|
||
tasks.extend([
|
||
"配置JWT",
|
||
"实现Token生成",
|
||
"实现Token验证",
|
||
"实现Token刷新"
|
||
])
|
||
|
||
return list(set(tasks))
|
||
|
||
# 使用示例
|
||
analyzer = TaskAnalyzer()
|
||
result = analyzer.analyze("实现用户认证系统,包括JWT和bcrypt加密")
|
||
print(json.dumps(result, indent=2, ensure_ascii=False))
|
||
```
|
||
|
||
---
|
||
|
||
## 最佳实践
|
||
|
||
### 实践1: 规划前先用Learn(如果不确定)
|
||
|
||
```bash
|
||
# 不确定现有架构
|
||
❌ /runtime.plan "实现新功能X" # 可能规划不切实际
|
||
|
||
# 先学习,再规划
|
||
✅ /runtime.learn "理解现有架构" → 置信度>0.8
|
||
✅ /runtime.plan "实现新功能X"
|
||
```
|
||
|
||
### 实践2: 用小需求练习
|
||
|
||
```bash
|
||
# 复杂需求(不建议首次尝试)
|
||
❌ /runtime.plan "重构整个微服务架构"
|
||
|
||
# 从小需求开始
|
||
✅ /runtime.plan "添加密码重置功能" # 3-5个任务
|
||
✅ /runtime.plan "实现用户注册" # 2-3个任务
|
||
```
|
||
|
||
### 实践3: 定期重新规划
|
||
|
||
```python
|
||
# 需求变更时
|
||
if requirement_changed:
|
||
# 不是继续执行旧计划
|
||
old_plan = load_old_plan()
|
||
|
||
# 而是重新规划
|
||
new_plan = runtime.plan(new_requirement)
|
||
|
||
# 比较差异
|
||
diff = compare_plans(old_plan, new_plan)
|
||
|
||
# 适应新计划
|
||
runtime.iterate(plan=new_plan)
|
||
```
|
||
|
||
### 实践4: 保存并复用模式
|
||
|
||
```bash
|
||
# 规划完成后
|
||
/runtime.plan "实现OAuth2.0认证"
|
||
|
||
# 固化成功模式
|
||
/runtime.remember "OAuth2.0认证的任务树模板"
|
||
|
||
# 下次类似需求
|
||
/runtime.plan "实现SAML认证"
|
||
→ AI从记忆中提取OAuth2.0模式作为参考
|
||
→ 生成类似结构的任务树
|
||
```
|
||
|
||
---
|
||
|
||
## 输出规范
|
||
|
||
### JSON Schema
|
||
|
||
```json
|
||
{
|
||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||
"type": "object",
|
||
"properties": {
|
||
"version": {"type": "string"},
|
||
"project": {"type": "string"},
|
||
"requirement": {"type": "string"},
|
||
"created_at": {"type": "string"},
|
||
"total_tasks": {"type": "integer"},
|
||
"total_effort": {"type": "string"},
|
||
"critical_path": {
|
||
"type": "array",
|
||
"items": {"type": "string"}
|
||
},
|
||
"tasks": {
|
||
"type": "array",
|
||
"items": {
|
||
"type": "object",
|
||
"properties": {
|
||
"id": {"type": "string"},
|
||
"name": {"type": "string"},
|
||
"layer": {"type": "string"},
|
||
"effort": {"type": "number"},
|
||
"priority": {"type": "string"},
|
||
"dependencies": {
|
||
"type": "array",
|
||
"items": {"type": "string"}
|
||
},
|
||
"acceptance_criteria": {
|
||
"type": "array",
|
||
"items": {"type": "string"}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"risks": {
|
||
"type": "array",
|
||
"items": {
|
||
"type": "object",
|
||
"properties": {
|
||
"task": {"type": "string"},
|
||
"level": {"type": "string"},
|
||
"category": {"type": "string"},
|
||
"description": {"type": "string"},
|
||
"mitigation": {"type": "string"}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 宪法遵循
|
||
|
||
**遵循原则**:
|
||
- ✓ 1.2 类脑思维: 将需求拆解为可管理的模块
|
||
- ✓ 2.1 代码即知识: 任务树是代码结构的心智模型
|
||
- ✓ 4.4 规划透明: 规划过程清晰可见(新增)
|
||
- ✓ 1.3 谦逊与不确定: 明确标注置信度和风险
|
||
- ✓ 2.2 渐进式实施: 支持MVP和风险驱动策略
|
||
|
||
---
|
||
|
||
**命令定义**: `.ai-runtime/commands/runtime.plan.md`
|
||
**脚本**: `.ai-runtime/scripts/task-analyzer.py` (辅助分析)
|
||
**输出**: `cognition/plans/plan-{timestamp}.{json|md}`
|
||
**版本**: 1.0.0 |