Files

483 lines
11 KiB
Markdown
Raw Permalink Normal View History

2025-12-19 02:30:45 +08:00
# Aide 用户流程图生成
你正在执行 Aide 用户流程图生成流程。这个命令帮助用户创建面向用户的长期维护流程图系统。
## 分步执行机制
此命令支持**真正有效的分步执行和接续执行**,适用于任意规模项目。
### 设计原则
1. **索引式计划文档**`plan.md` 只做索引,详细信息存在独立步骤文档中
2. **自包含步骤文档**:每个步骤包含执行所需的全部信息(已分析好的模块结构)
3. **粒度动态控制**:根据模块复杂度动态拆分步骤
4. **分析与执行分离**:分析阶段产出详细计划,执行阶段直接绘图
### 文档结构
```
docs/graph-guide/
├── plan.md # 计划文件(索引式)
├── steps/ # 步骤详情目录
│ ├── step-001.md # 步骤1详情
│ ├── step-002.md # 步骤2详情
│ └── ...
└── [区块目录]/ # 流程图目录
├── guide.puml
└── *.puml
```
2025-12-19 02:30:45 +08:00
2025-12-19 05:00:29 +08:00
这可能是一个非常长的任务,因此规划您的工作可能会很有益。**建议花费您的整个输出上下文来处理任务 - 只需确保您不会在有大量未提交的工作时用尽上下文。**继续系统地工作,直到您完成此任务。**您的上下文窗口将在接近其限制时自动压缩,允许您从中断的地方继续无限期地工作。因此,不要因为令牌预算问题而提前停止任务。**当您接近令牌预算限制时,在上下文窗口刷新前将您当前的进度和状态保存到内存中。始终尽可能坚持和自主,并完全完成任务,即使您的预算即将用尽。无论剩余上下文如何,永远不要人为地提前停止任何任务。
2025-12-19 02:30:45 +08:00
---
## 前置准备
**首先检查项目文档是否存在。**
```bash
aide config get docs.path
```
如果项目文档目录(`.aide/project-docs/`)不存在:
> 用户流程图依赖项目文档来了解项目结构。建议先执行 `/aide:docs` 和 `/aide:load`。
使用 AskUserQuestion 询问:
- **先执行 /aide:docs**(推荐)
- **继续(基于代码分析)**
---
## 开始
### 检查计划文件
```bash
aide config get user_docs.graph_plan_path
aide config get user_docs.graph_steps_path
2025-12-19 02:30:45 +08:00
```
如果未配置,使用默认值:
- 计划文件:`docs/graph-guide/plan.md`
- 步骤目录:`docs/graph-guide/steps`
2025-12-19 02:30:45 +08:00
**根据计划文件状态决定流程**
- **计划文件不存在** → 进入**分析和计划阶段**
- **计划文件存在** → 进入**接续执行阶段**
---
## 分析和计划阶段
`plan.md` 不存在时执行此流程。
2025-12-19 02:30:45 +08:00
### 1. 加载项目文档
读取 `.aide/project-docs/` 下的项目文档:
1. 读取总导览(`README.md`)获取:
- 项目类型(文档/程序/混合)
- 子项目/模块列表
- 技术栈信息
2. 阅读相关区块文档了解详细结构
### 2. 区块划分
**划分原则**(与项目文档不同):
- 目标是呈现**整体形式**
- 按**业务逻辑**或**独立开发项目**划分
- 不追求深度全覆盖
**区块类型**
| 类型 | 说明 | 典型内容 |
|------|------|----------|
| 库项目 | 独立的库/工具包 | API 设计、核心逻辑 |
| 应用 | 可运行的程序 | 启动流程、业务逻辑 |
| 前端 | UI 相关 | 组件结构、数据流 |
| 文档 | 纯文档项目 | 内容导航、学习路径 |
### 3. 复杂度分析与步骤拆分
**这是实现有效分步执行的核心阶段。**
#### 3.1 评估区块复杂度
2025-12-19 02:30:45 +08:00
对每个区块评估:
| 复杂度 | 特征 | 处理方式 |
|--------|------|----------|
| 小 | 单模块,逻辑简单 | 整个区块作为 1 个步骤 |
| 中 | 多模块,有交互 | 按模块拆分为 2-5 个步骤 |
| 大 | 复杂系统,多层次 | 按子模块拆分为 5-10 个步骤 |
| 超大 | 巨型模块 | 按功能点拆分为 10+ 个步骤 |
#### 3.2 生成步骤文档
2025-12-19 02:30:45 +08:00
**为每个步骤生成独立的步骤文档**,存放在 `steps/` 目录。
2025-12-19 02:30:45 +08:00
**步骤文档格式**
2025-12-19 02:30:45 +08:00
```markdown
# 步骤 XXX[区块名] - [流程图名称]
2025-12-19 02:30:45 +08:00
## 元信息
2025-12-19 02:30:45 +08:00
| 属性 | 值 |
|------|-----|
| 状态 | pending / in_progress / completed |
| 所属区块 | [区块名] |
| 流程图类型 | guide / 模块图 |
| 预估工作量 | 小 / 中 / 大 |
| 依赖步骤 | [无 / step-XXX] |
2025-12-19 02:30:45 +08:00
## 任务描述
2025-12-19 02:30:45 +08:00
绘制 [区块名] 的 [流程图名称],展示 [具体内容]。
2025-12-19 02:30:45 +08:00
## 模块结构(已分析)
2025-12-19 02:30:45 +08:00
以下是执行本步骤所需的全部模块信息,**已从项目文档和代码中提取整理**
2025-12-19 02:30:45 +08:00
### 涉及文件
2025-12-19 02:30:45 +08:00
| 文件路径 | 职责 | 关键内容 |
|----------|------|----------|
| `path/to/file1.py` | 入口模块 | main() 函数 |
| `path/to/file2.py` | 核心逻辑 | Parser 类、Executor 类 |
| ... | ... | ... |
2025-12-19 02:30:45 +08:00
### 模块关系
2025-12-19 02:30:45 +08:00
```
[已分析好的模块调用关系ASCII 图或文字描述]
例如:
main.py
└→ parser.py::parse()
└→ executor.py::execute()
└→ output.py::write()
```
2025-12-19 02:30:45 +08:00
### 数据流
2025-12-19 02:30:45 +08:00
```
[已分析好的数据流向]
2025-12-19 02:30:45 +08:00
例如:
输入(stdin) → Parser → AST → Executor → Result → 输出(stdout)
2025-12-19 02:30:45 +08:00
```
### 关键函数/类
| 名称 | 位置 | 说明 |
|------|------|------|
| `main()` | main.py:10 | 程序入口 |
| `Parser` | parser.py:25 | 解析输入 |
| `Executor` | executor.py:50 | 执行逻辑 |
## 输出要求
- 文件:`[区块目录]/[filename].puml`
- 类型:[活动图 / 组件图 / 序列图]
- 内容要求:
- [ ] 展示 [具体内容1]
- [ ] 展示 [具体内容2]
- [ ] 标注关键节点
## PlantUML 模板
```plantuml
@startuml [filename]
skinparam defaultFontName "PingFang SC"
skinparam dpi 300
scale 0.5
' TODO: 基于上述模块结构绘制流程图
@enduml
```
## 执行记录
(执行时填写)
| 时间 | 操作 | 备注 |
|------|------|------|
| | 开始执行 | |
| | 完成 | |
```
#### 3.3 生成计划文件(索引)
生成 `plan.md` 作为索引:
```markdown
# 用户流程图编写计划
> 最后更新YYYY-MM-DD HH:MM
## 项目概述
{{基于项目文档的简要描述}}
## 区块索引
| # | 区块名称 | 类型 | 步骤数 | 状态 | 步骤范围 |
|---|----------|------|--------|------|----------|
| 1 | api-lib | 库项目 | 3 | pending | 001-003 |
| 2 | api | 应用 | 5 | pending | 004-008 |
| ... | ... | ... | ... | ... | ... |
## 步骤索引
| 步骤 | 所属区块 | 流程图 | 状态 |
|------|----------|--------|------|
| [001](steps/step-001.md) | api-lib | guide.puml | pending |
| [002](steps/step-002.md) | api-lib | core.puml | pending |
| [003](steps/step-003.md) | api-lib | parser.puml | pending |
| [004](steps/step-004.md) | api | guide.puml | pending |
| ... | ... | ... | ... |
## 整体进度
- 总步骤数XX
- 已完成0
- 进行中0
- 待处理XX
## 执行日志
| 时间 | 步骤 | 操作 | 备注 |
|------|------|------|------|
| | | | |
```
### 4. 创建目录结构
2025-12-19 02:30:45 +08:00
```bash
aide config get user_docs.graph_path
```
创建流程图目录和子目录:
```
docs/graph-guide/
├── plan.md
├── steps/
└── [区块名]/
2025-12-19 02:30:45 +08:00
```
### 5. 用户确认
2025-12-19 02:30:45 +08:00
> 流程图编写计划已生成。
>
> **区块数**X 个
> **总步骤数**Y 个
2025-12-19 02:30:45 +08:00
>
> 步骤文档已生成,每个步骤包含已分析好的模块结构,执行时可直接绘图。
2025-12-19 02:30:45 +08:00
>
> 是否开始执行?
**选项**
- **开始执行**(推荐)
- **查看计划详情**
2025-12-19 02:30:45 +08:00
- **稍后执行**
如选择开始执行,进入步骤执行流程。
---
## 接续执行阶段
`plan.md` 存在时执行此流程。
2025-12-19 02:30:45 +08:00
### 1. 读取计划文件
2025-12-19 02:30:45 +08:00
读取 plan.md 获取:
- 步骤索引
- 整体进度
- 执行日志
2025-12-19 02:30:45 +08:00
### 2. 显示进度
> **流程图编写进度**
>
> 总步骤数XX
> 已完成YYZZ%
> 当前步骤step-NNN
> 上次更新YYYY-MM-DD HH:MM
2025-12-19 02:30:45 +08:00
### 3. 确认继续
使用 AskUserQuestion
> 是否从当前进度继续执行?
**选项**
- **继续执行**(推荐)
- **查看待处理步骤**
2025-12-19 02:30:45 +08:00
- **重新开始**(清空进度)
---
## 步骤执行流程
### 执行单个步骤
1. **读取步骤文档**
- 打开 `steps/step-XXX.md`
- 获取已分析好的模块结构
2025-12-19 02:30:45 +08:00
2. **绘制流程图**
- 基于步骤文档中的模块结构直接绘图
- **无需重新分析代码**,信息已在步骤文档中
- 遵循 PlantUML 模板和内容要求
2025-12-19 02:30:45 +08:00
3. **保存产出**
- 写入 puml 文件
- 生成 PNG如配置了 PlantUML
2025-12-19 02:30:45 +08:00
4. **更新步骤文档**
- 标记步骤为 `completed`
- 填写执行记录
2025-12-19 02:30:45 +08:00
5. **更新计划文件**
- 更新步骤状态
- 更新整体进度
- 添加执行日志
2025-12-19 02:30:45 +08:00
### 步骤间询问
每完成一个步骤后:
2025-12-19 02:30:45 +08:00
> 步骤 XXX 已完成:[流程图名称]
>
> 已完成YY/ZZ进度 WW%
2025-12-19 02:30:45 +08:00
>
> 是否继续下一步?
**选项**
- **继续**(推荐)
- **查看产出**
- **暂停(保存进度)**
如选择暂停,当前进度已保存,下次可直接接续。
2025-12-19 02:30:45 +08:00
---
## 流程图内容规范
### 总导览流程图guide.puml
每个区块的 guide.puml 应包含:
- 模块概览
- 调用关系
- 数据流向
### 详细流程图module.puml
#### 不含程序的项目
- 内容导航图
- 学习路径图
- 概念关系图
#### 含程序的项目
参考 `/aide:run` 中的程序逻辑流图规范:
1. **入口点**:从程序入口开始
2. **控制结构**:体现顺序、分支、循环
3. **语义化抽象**:人类可理解的业务描述
4. **模块化表示**
- 函数/模块表示为"盒子"
- 标注输入输出
5. **层次化组织**
- 主流程图 + 详细子图
### PlantUML 配置
2025-12-19 02:30:45 +08:00
每个文件必须包含头部配置:
2025-12-19 02:30:45 +08:00
```bash
aide config get plantuml.font_name
aide config get plantuml.dpi
aide config get plantuml.scale
```
2025-12-19 02:30:45 +08:00
```plantuml
@startuml [name]
skinparam defaultFontName "[font_name]"
skinparam dpi [dpi]
scale [scale]
2025-12-19 02:30:45 +08:00
' 内容...
2025-12-19 02:30:45 +08:00
@enduml
```
---
## 目录结构
最终生成的目录结构:
```
docs/graph-guide/
├── plan.md # 计划文件(索引)
├── steps/ # 步骤详情目录
│ ├── step-001.md
│ ├── step-002.md
│ └── ...
├── api-lib/ # 区块 1
│ ├── guide.puml
│ ├── core.puml
│ └── parser.puml
├── api/ # 区块 2
2025-12-19 02:30:45 +08:00
│ ├── guide.puml
│ └── ...
└── ...
```
---
## 完成流程
当所有步骤完成时:
1. 确认所有步骤状态为 `completed`
2. 生成总导览流程图(如需要)
3. 向用户汇报完成情况
```
用户流程图已完成:
- 目录docs/graph-guide/
- 区块数N 个
- 总步骤数M 个
- 流程图数X 个
```
---
2025-12-19 02:30:45 +08:00
## 配置项
| 配置项 | 默认值 | 说明 |
|--------|--------|------|
| `user_docs.graph_path` | `docs/graph-guide` | 流程图目录路径 |
| `user_docs.graph_plan_path` | `docs/graph-guide/plan.md` | 计划文件路径 |
| `user_docs.graph_steps_path` | `docs/graph-guide/steps` | 步骤文档目录 |
2025-12-19 02:30:45 +08:00
---
## 注意事项
1. **分步执行**:每个步骤文档包含已分析好的模块结构,执行时无需重新分析
2. **进度持久化**:进度同时保存在步骤文档和计划文件中
3. **粒度可控**:大型模块自动拆分为多个步骤
4. **PNG 生成**:需要配置 PlantUML参考 `[plantuml]` 配置)