✨ feat: 完成文档拆分
This commit is contained in:
353
aide-program/docs/commands/decide.md
Normal file
353
aide-program/docs/commands/decide.md
Normal file
@@ -0,0 +1,353 @@
|
||||
# aide decide 子命令设计文档
|
||||
|
||||
## 一、背景
|
||||
|
||||
### 1.1 解决的问题
|
||||
|
||||
| 问题 | 影响 |
|
||||
|------|------|
|
||||
| 待定项呈现繁琐 | LLM 输出大量文本描述选项 |
|
||||
| 用户确认不便 | 在终端中逐项确认效率低 |
|
||||
| 决策记录分散 | 难以追溯历史决策 |
|
||||
|
||||
### 1.2 设计目标
|
||||
|
||||
提供**程序化的待定项确认机制**:
|
||||
- LLM 传入精简 JSON 数据
|
||||
- 程序启动 Web 服务,提供可视化界面
|
||||
- 用户在 Web 界面操作
|
||||
- LLM 读取精简决策结果
|
||||
|
||||
---
|
||||
|
||||
## 二、职责
|
||||
|
||||
### 2.1 做什么
|
||||
|
||||
1. 接收待定项 JSON 数据
|
||||
2. 启动 HTTP 服务
|
||||
3. 提供 Web 界面供用户操作
|
||||
4. 存储用户决策
|
||||
5. 返回决策结果
|
||||
|
||||
### 2.2 不做什么
|
||||
|
||||
- 不分析待定项内容
|
||||
- 不做决策建议
|
||||
- 不修改业务代码
|
||||
|
||||
---
|
||||
|
||||
## 三、接口规格
|
||||
|
||||
### 3.1 aide decide(提交数据)
|
||||
|
||||
**用途**:提交待定项数据并启动 Web 服务
|
||||
|
||||
**语法**:
|
||||
```
|
||||
aide decide '<json数据>'
|
||||
```
|
||||
|
||||
**输入**:待定项 JSON 数据(见数据格式章节)
|
||||
|
||||
**输出**:
|
||||
```
|
||||
→ Web 服务已启动
|
||||
→ 请访问: http://localhost:3721
|
||||
→ 等待用户完成决策...
|
||||
```
|
||||
|
||||
### 3.2 aide decide result
|
||||
|
||||
**用途**:获取用户决策结果
|
||||
|
||||
**语法**:
|
||||
```
|
||||
aide decide result
|
||||
```
|
||||
|
||||
**输出**:
|
||||
```json
|
||||
{
|
||||
"decisions": [
|
||||
{"id": 1, "chosen": "option_a"},
|
||||
{"id": 2, "chosen": "option_b", "note": "用户的补充说明"}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
**错误情况**:
|
||||
```
|
||||
✗ 尚无决策结果,请等待用户完成操作
|
||||
```
|
||||
|
||||
```
|
||||
✗ 未找到待定项数据,请先执行 aide decide '<json>'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 四、业务流程
|
||||
|
||||
### 4.1 整体流程
|
||||
|
||||
```
|
||||
@startuml
|
||||
skinparam defaultFontName "PingFang SC"
|
||||
|
||||
participant LLM
|
||||
participant "aide decide" as Decide
|
||||
participant "Web Server" as Web
|
||||
participant User
|
||||
|
||||
LLM -> Decide : aide decide '<json>'
|
||||
Decide -> Decide : 解析 JSON
|
||||
Decide -> Decide : 保存待定项数据
|
||||
Decide -> Web : 启动 HTTP 服务
|
||||
Decide --> LLM : 输出访问链接
|
||||
|
||||
LLM -> User : 告知访问链接
|
||||
|
||||
User -> Web : 访问页面
|
||||
Web -> User : 渲染待定项界面
|
||||
User -> Web : 选择选项、添加备注
|
||||
User -> Web : 提交决策
|
||||
Web -> Web : 保存决策结果
|
||||
|
||||
LLM -> Decide : aide decide result
|
||||
Decide -> Decide : 读取决策结果
|
||||
Decide --> LLM : 返回 JSON 结果
|
||||
|
||||
@enduml
|
||||
```
|
||||
|
||||
### 4.2 Web 服务流程
|
||||
|
||||
```
|
||||
@startuml
|
||||
skinparam defaultFontName "PingFang SC"
|
||||
|
||||
start
|
||||
|
||||
:接收 JSON 数据;
|
||||
|
||||
:解析并验证格式;
|
||||
if (格式有效?) then (是)
|
||||
else (否)
|
||||
:输出错误信息;
|
||||
stop
|
||||
endif
|
||||
|
||||
:保存到 .aide/decisions/pending.json;
|
||||
|
||||
:启动 HTTP 服务;
|
||||
note right: 默认端口 3721
|
||||
|
||||
:输出访问链接;
|
||||
|
||||
:等待用户操作;
|
||||
|
||||
:用户提交决策;
|
||||
|
||||
:保存决策结果;
|
||||
note right: .aide/decisions/{timestamp}.json
|
||||
|
||||
:关闭 HTTP 服务;
|
||||
|
||||
stop
|
||||
@enduml
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 五、数据结构
|
||||
|
||||
### 5.1 输入格式(LLM → 程序)
|
||||
|
||||
```
|
||||
DecideInput:
|
||||
task: str # 任务简述
|
||||
source: str # 来源文档
|
||||
items: list[DecideItem] # 待定项列表
|
||||
|
||||
DecideItem:
|
||||
id: int # 待定项 ID
|
||||
title: str # 问题标题
|
||||
location: Location | None # 原文位置(可选)
|
||||
context: str | None # 详细说明(可选)
|
||||
options: list[Option] # 选项列表
|
||||
recommend: str | None # 推荐选项的 value(可选)
|
||||
|
||||
Location:
|
||||
file: str # 文件路径
|
||||
start: int # 起始行
|
||||
end: int # 结束行
|
||||
|
||||
Option:
|
||||
value: str # 选项标识
|
||||
label: str # 选项描述
|
||||
score: int | None # 评分(可选)
|
||||
pros: list[str] | None # 优点列表(可选)
|
||||
cons: list[str] | None # 缺点列表(可选)
|
||||
```
|
||||
|
||||
### 5.2 输出格式(程序 → LLM)
|
||||
|
||||
```
|
||||
DecideOutput:
|
||||
decisions: list[Decision] # 决策列表
|
||||
|
||||
Decision:
|
||||
id: int # 待定项 ID
|
||||
chosen: str # 选中的选项 value
|
||||
note: str | None # 用户备注(可选)
|
||||
```
|
||||
|
||||
### 5.3 方法签名原型
|
||||
|
||||
```
|
||||
class DecideServer:
|
||||
root: Path
|
||||
port: int # 默认 3721
|
||||
pending_path: Path # .aide/decisions/pending.json
|
||||
decisions_dir: Path # .aide/decisions/
|
||||
|
||||
submit(json_data: str) -> bool
|
||||
# 提交待定项数据,启动服务
|
||||
|
||||
get_result() -> DecideOutput | None
|
||||
# 获取决策结果
|
||||
|
||||
_parse_input(json_data: str) -> DecideInput
|
||||
# 解析输入 JSON
|
||||
|
||||
_validate_input(data: DecideInput) -> bool
|
||||
# 验证输入格式
|
||||
|
||||
_start_server() -> None
|
||||
# 启动 HTTP 服务
|
||||
|
||||
_stop_server() -> None
|
||||
# 停止 HTTP 服务
|
||||
|
||||
_save_pending(data: DecideInput) -> None
|
||||
# 保存待定项数据
|
||||
|
||||
_save_result(result: DecideOutput) -> None
|
||||
# 保存决策结果
|
||||
|
||||
_load_result() -> DecideOutput | None
|
||||
# 加载决策结果
|
||||
```
|
||||
|
||||
### 5.4 Web 界面组件
|
||||
|
||||
```
|
||||
DecideApp:
|
||||
# React 前端应用
|
||||
|
||||
state:
|
||||
items: list[DecideItem] # 待定项列表
|
||||
decisions: dict[int, str] # 当前选择
|
||||
notes: dict[int, str] # 用户备注
|
||||
|
||||
methods:
|
||||
loadItems() -> None # 加载待定项
|
||||
selectOption(id, value) -> None # 选择选项
|
||||
addNote(id, note) -> None # 添加备注
|
||||
submit() -> None # 提交决策
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 六、Web 界面设计
|
||||
|
||||
### 6.1 页面结构
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────┐
|
||||
│ Aide 待定项确认 │
|
||||
│ 任务: <task> │
|
||||
├─────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌─────────────────────────────────────────┐ │
|
||||
│ │ 1. <title> │ │
|
||||
│ │ <context> │ │
|
||||
│ │ │ │
|
||||
│ │ ○ <option_a.label> [推荐] │ │
|
||||
│ │ 优点: ... 缺点: ... │ │
|
||||
│ │ │ │
|
||||
│ │ ○ <option_b.label> │ │
|
||||
│ │ 优点: ... 缺点: ... │ │
|
||||
│ │ │ │
|
||||
│ │ 备注: [________________] │ │
|
||||
│ └─────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────────────────────────────┐ │
|
||||
│ │ 2. <title> │ │
|
||||
│ │ ... │ │
|
||||
│ └─────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ [提交决策] │
|
||||
└─────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 6.2 交互流程
|
||||
|
||||
1. 页面加载时从后端获取待定项数据
|
||||
2. 用户点击选项进行选择
|
||||
3. 用户可选择性添加备注
|
||||
4. 点击"提交决策"按钮
|
||||
5. 前端发送决策到后端
|
||||
6. 后端保存结果并关闭服务
|
||||
7. 页面显示"决策已提交"
|
||||
|
||||
---
|
||||
|
||||
## 七、依赖
|
||||
|
||||
| 依赖项 | 类型 | 说明 |
|
||||
|--------|------|------|
|
||||
| output | 内部模块 | 输出格式化 |
|
||||
| http.server | 标准库 | HTTP 服务 |
|
||||
| json | 标准库 | JSON 解析 |
|
||||
|
||||
---
|
||||
|
||||
## 八、被依赖
|
||||
|
||||
| 依赖方 | 说明 |
|
||||
|--------|------|
|
||||
| /aide:prep | 调用 decide 处理待定项 |
|
||||
|
||||
---
|
||||
|
||||
## 九、修改指南
|
||||
|
||||
### 9.1 修改输入/输出格式
|
||||
|
||||
1. 更新本文档的数据结构章节
|
||||
2. 修改代码实现
|
||||
3. 同步更新 [数据格式文档](../formats/data.md)
|
||||
4. 同步更新 [aide skill 设计文档](../../../aide-marketplace/aide-plugin/docs/skill/aide.md)
|
||||
|
||||
### 9.2 修改 Web 界面
|
||||
|
||||
1. 更新本文档的界面设计章节
|
||||
2. 修改 `aide/decide/web/` 下的前端代码
|
||||
|
||||
### 9.3 修改端口配置
|
||||
|
||||
1. 在配置文件中添加端口配置项
|
||||
2. 修改 `DecideServer` 读取配置
|
||||
3. 更新 [配置格式文档](../formats/config.md)
|
||||
|
||||
---
|
||||
|
||||
## 十、相关文档
|
||||
|
||||
- [program 导览](../README.md)
|
||||
- [数据格式文档](../formats/data.md)
|
||||
- [aide skill 设计文档](../../../aide-marketplace/aide-plugin/docs/skill/aide.md)
|
||||
- [/aide:prep 命令设计](../../../aide-marketplace/aide-plugin/docs/commands/prep.md)
|
||||
257
aide-program/docs/commands/env.md
Normal file
257
aide-program/docs/commands/env.md
Normal file
@@ -0,0 +1,257 @@
|
||||
# aide env 子命令设计文档
|
||||
|
||||
## 一、背景
|
||||
|
||||
### 1.1 解决的问题
|
||||
|
||||
| 问题 | 影响 |
|
||||
|------|------|
|
||||
| 环境不一致 | 命令执行失败,打断业务流程 |
|
||||
| 手动检查繁琐 | 每次都要检查 Python、虚拟环境、依赖 |
|
||||
| 修复方式不统一 | 不同人有不同的修复习惯 |
|
||||
|
||||
### 1.2 设计目标
|
||||
|
||||
提供**统一的环境检测与修复**:
|
||||
- 自动检测环境问题
|
||||
- 能修复的自动修复
|
||||
- 不能修复的给出明确建议
|
||||
|
||||
---
|
||||
|
||||
## 二、职责
|
||||
|
||||
### 2.1 做什么
|
||||
|
||||
1. 检测 Python 版本是否满足要求
|
||||
2. 检测 uv 是否可用
|
||||
3. 检测/创建虚拟环境
|
||||
4. 安装依赖
|
||||
5. 输出项目配置信息
|
||||
|
||||
### 2.2 不做什么
|
||||
|
||||
- 不修改业务代码
|
||||
- 不执行业务逻辑
|
||||
- 不进行流程追踪
|
||||
|
||||
---
|
||||
|
||||
## 三、接口规格
|
||||
|
||||
### 3.1 命令语法
|
||||
|
||||
```
|
||||
aide env ensure [--runtime]
|
||||
```
|
||||
|
||||
### 3.2 参数
|
||||
|
||||
| 参数 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| `--runtime` | 可选 | 仅检查 aide 运行时环境,不依赖配置文件 |
|
||||
|
||||
### 3.3 输出
|
||||
|
||||
**成功(runtime 模式)**:
|
||||
```
|
||||
✓ 运行时环境就绪 (python:3.12, uv:0.4.0)
|
||||
```
|
||||
|
||||
**成功(完整模式)**:
|
||||
```
|
||||
→ 任务原文档: task-now.md
|
||||
→ 任务细则文档: task-spec.md
|
||||
✓ 环境就绪 (python:3.12, uv:0.4.0, venv:.venv)
|
||||
```
|
||||
|
||||
**自动修复**:
|
||||
```
|
||||
→ 创建虚拟环境: .venv
|
||||
✓ 已创建虚拟环境
|
||||
⚠ 未找到 requirements.txt,已创建空文件
|
||||
→ 安装依赖(uv pip install -r requirements.txt)
|
||||
✓ 环境就绪 (python:3.12, uv:0.4.0, venv:.venv)
|
||||
```
|
||||
|
||||
**失败**:
|
||||
```
|
||||
✗ Python 版本不足,要求>=3.11,当前 3.9
|
||||
```
|
||||
|
||||
```
|
||||
✗ 未检测到 uv,请先安装(FileNotFoundError)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 四、业务流程
|
||||
|
||||
```
|
||||
@startuml
|
||||
skinparam defaultFontName "PingFang SC"
|
||||
|
||||
start
|
||||
|
||||
if (--runtime 参数?) then (是)
|
||||
:required_py = "3.11" (硬编码);
|
||||
else (否)
|
||||
:从配置文件读取 required_py;
|
||||
endif
|
||||
|
||||
:检查 Python 版本;
|
||||
if (版本满足?) then (是)
|
||||
else (否)
|
||||
:输出错误信息;
|
||||
stop
|
||||
endif
|
||||
|
||||
:检查 uv 可用性;
|
||||
if (uv 可用?) then (是)
|
||||
else (否)
|
||||
:输出错误信息;
|
||||
stop
|
||||
endif
|
||||
|
||||
if (--runtime 参数?) then (是)
|
||||
:输出运行时环境就绪;
|
||||
stop
|
||||
endif
|
||||
|
||||
:读取配置文件;
|
||||
:确保 .gitignore 包含 .aide/;
|
||||
|
||||
:读取 venv 路径配置;
|
||||
if (虚拟环境存在?) then (是)
|
||||
else (否)
|
||||
:使用 uv venv 创建;
|
||||
if (创建成功?) then (是)
|
||||
else (否)
|
||||
:输出错误信息;
|
||||
stop
|
||||
endif
|
||||
endif
|
||||
|
||||
:读取 requirements 路径配置;
|
||||
if (requirements.txt 存在?) then (是)
|
||||
else (否)
|
||||
:创建空文件;
|
||||
:输出警告;
|
||||
endif
|
||||
|
||||
:使用 uv pip install 安装依赖;
|
||||
if (安装成功?) then (是)
|
||||
else (否)
|
||||
:输出错误信息;
|
||||
stop
|
||||
endif
|
||||
|
||||
:输出任务文档路径配置;
|
||||
:输出环境就绪;
|
||||
|
||||
stop
|
||||
@enduml
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 五、数据结构
|
||||
|
||||
### 5.1 配置依赖
|
||||
|
||||
从 `.aide/config.toml` 读取:
|
||||
|
||||
```
|
||||
[runtime]
|
||||
python_min # Python 最低版本要求
|
||||
|
||||
[env]
|
||||
venv # 虚拟环境路径
|
||||
requirements # 依赖文件路径
|
||||
|
||||
[task]
|
||||
source # 任务原文档路径
|
||||
spec # 任务细则文档路径
|
||||
```
|
||||
|
||||
### 5.2 方法签名原型
|
||||
|
||||
```
|
||||
class EnvManager:
|
||||
root: Path # 项目根目录
|
||||
|
||||
ensure(runtime_only: bool, cfg: ConfigManager) -> bool
|
||||
# 主入口,返回是否成功
|
||||
|
||||
_get_required_python(cfg: ConfigManager, runtime_only: bool) -> str
|
||||
# 获取 Python 版本要求
|
||||
|
||||
_parse_version(version: str) -> tuple[int, ...]
|
||||
# 解析版本号字符串
|
||||
|
||||
_check_python_version(required: str) -> bool
|
||||
# 检查 Python 版本
|
||||
|
||||
_check_uv() -> str | None
|
||||
# 检查 uv,返回版本号或 None
|
||||
|
||||
_ensure_venv(venv_path: Path) -> bool
|
||||
# 确保虚拟环境存在
|
||||
|
||||
_ensure_requirements_file(req_path: Path) -> None
|
||||
# 确保 requirements.txt 存在
|
||||
|
||||
_install_requirements(venv_path: Path, req_path: Path) -> bool
|
||||
# 安装依赖
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 六、依赖
|
||||
|
||||
| 依赖项 | 类型 | 说明 |
|
||||
|--------|------|------|
|
||||
| ConfigManager | 内部模块 | 配置读写 |
|
||||
| output | 内部模块 | 输出格式化 |
|
||||
| uv | 外部工具 | 虚拟环境和依赖管理 |
|
||||
|
||||
---
|
||||
|
||||
## 七、被依赖
|
||||
|
||||
| 依赖方 | 说明 |
|
||||
|--------|------|
|
||||
| /aide:init | 调用 env ensure --runtime 和 env ensure |
|
||||
| aide init | 内部可能调用 env 检查 |
|
||||
|
||||
---
|
||||
|
||||
## 八、修改指南
|
||||
|
||||
### 8.1 修改检测逻辑
|
||||
|
||||
1. 更新本文档的业务流程图
|
||||
2. 修改 `aide/env/ensure.py`
|
||||
3. 如有新的输出,更新输出示例
|
||||
|
||||
### 8.2 添加新的检测项
|
||||
|
||||
1. 在本文档添加检测项说明
|
||||
2. 在 `EnvManager` 添加对应方法
|
||||
3. 在 `ensure()` 中调用
|
||||
4. 更新 [aide skill 设计文档](../../../aide-marketplace/aide-plugin/docs/skill/aide.md)
|
||||
|
||||
### 8.3 修改配置依赖
|
||||
|
||||
1. 更新本文档的"配置依赖"章节
|
||||
2. 修改代码实现
|
||||
3. 同步更新 [配置格式文档](../formats/config.md)
|
||||
|
||||
---
|
||||
|
||||
## 九、相关文档
|
||||
|
||||
- [program 导览](../README.md)
|
||||
- [配置格式文档](../formats/config.md)
|
||||
- [aide skill 设计文档](../../../aide-marketplace/aide-plugin/docs/skill/aide.md)
|
||||
- [/aide:init 命令设计](../../../aide-marketplace/aide-plugin/docs/commands/init.md)
|
||||
387
aide-program/docs/commands/flow.md
Normal file
387
aide-program/docs/commands/flow.md
Normal file
@@ -0,0 +1,387 @@
|
||||
# aide flow 子命令设计文档
|
||||
|
||||
## 一、背景
|
||||
|
||||
### 1.1 解决的问题
|
||||
|
||||
| 问题 | 影响 |
|
||||
|------|------|
|
||||
| 状态记录分散 | 难以追踪任务进度 |
|
||||
| git 提交不规范 | 提交信息不一致,难以追溯 |
|
||||
| 流程跳跃 | 遗漏重要环节 |
|
||||
| 返工无记录 | 问题原因和解决方案丢失 |
|
||||
|
||||
### 1.2 设计目标
|
||||
|
||||
提供**统一的进度追踪与版本控制**:
|
||||
- 自动记录状态变化
|
||||
- 自动执行 git add + commit
|
||||
- 校验流程跳转合理性
|
||||
- 环节特定行为(如 PlantUML 校验)
|
||||
|
||||
---
|
||||
|
||||
## 二、职责
|
||||
|
||||
### 2.1 做什么
|
||||
|
||||
1. 记录任务执行状态(环节、步骤)
|
||||
2. 自动执行 git add . && git commit
|
||||
3. 校验环节跳转是否符合预期流程
|
||||
4. 在特定环节执行特定行为(如校验 PlantUML)
|
||||
|
||||
### 2.2 不做什么
|
||||
|
||||
- 不执行业务逻辑
|
||||
- 不进行任务分析
|
||||
- 不修改业务代码
|
||||
|
||||
---
|
||||
|
||||
## 三、接口规格
|
||||
|
||||
### 3.1 aide flow start
|
||||
|
||||
**用途**:开始新任务
|
||||
|
||||
**语法**:
|
||||
```
|
||||
aide flow start <环节名> "<总结>"
|
||||
```
|
||||
|
||||
**参数**:
|
||||
|
||||
| 参数 | 说明 |
|
||||
|------|------|
|
||||
| `<环节名>` | task-optimize / flow-design |
|
||||
| `<总结>` | 本次操作的简要说明 |
|
||||
|
||||
**输出**:
|
||||
```
|
||||
✓ 任务开始: <环节名>
|
||||
```
|
||||
|
||||
### 3.2 aide flow next-step
|
||||
|
||||
**用途**:记录小步骤前进
|
||||
|
||||
**语法**:
|
||||
```
|
||||
aide flow next-step "<总结>"
|
||||
```
|
||||
|
||||
**输出**:静默(成功无输出)
|
||||
|
||||
### 3.3 aide flow back-step
|
||||
|
||||
**用途**:记录小步骤回退
|
||||
|
||||
**语法**:
|
||||
```
|
||||
aide flow back-step "<原因>"
|
||||
```
|
||||
|
||||
**输出**:静默(成功无输出)
|
||||
|
||||
### 3.4 aide flow next-part
|
||||
|
||||
**用途**:进入下一个大环节
|
||||
|
||||
**语法**:
|
||||
```
|
||||
aide flow next-part <环节名> "<总结>"
|
||||
```
|
||||
|
||||
**输出**:
|
||||
```
|
||||
✓ 进入环节: <环节名>
|
||||
```
|
||||
|
||||
**特殊行为**:
|
||||
- 离开 `flow-design` 时:校验 PlantUML 语法,生成 PNG
|
||||
- 进入 `docs` 时:提示更新 CHANGELOG
|
||||
- 离开 `docs` 时:校验 CHANGELOG 是否已更新
|
||||
|
||||
### 3.5 aide flow back-part
|
||||
|
||||
**用途**:回退到之前的大环节
|
||||
|
||||
**语法**:
|
||||
```
|
||||
aide flow back-part <环节名> "<原因>"
|
||||
```
|
||||
|
||||
**输出**:
|
||||
```
|
||||
⚠ 回退到环节: <环节名>
|
||||
```
|
||||
|
||||
### 3.6 aide flow issue
|
||||
|
||||
**用途**:记录一般问题(不阻塞继续)
|
||||
|
||||
**语法**:
|
||||
```
|
||||
aide flow issue "<描述>"
|
||||
```
|
||||
|
||||
**输出**:静默(成功无输出)
|
||||
|
||||
### 3.7 aide flow error
|
||||
|
||||
**用途**:记录严重错误(需要解决)
|
||||
|
||||
**语法**:
|
||||
```
|
||||
aide flow error "<描述>"
|
||||
```
|
||||
|
||||
**输出**:
|
||||
```
|
||||
✗ 错误已记录: <描述>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 四、业务流程
|
||||
|
||||
### 4.1 状态记录流程
|
||||
|
||||
```
|
||||
@startuml
|
||||
skinparam defaultFontName "PingFang SC"
|
||||
|
||||
start
|
||||
|
||||
:接收命令和参数;
|
||||
|
||||
:读取当前状态;
|
||||
note right: .aide/flow-status.json
|
||||
|
||||
:校验操作合法性;
|
||||
if (合法?) then (是)
|
||||
else (否)
|
||||
:输出错误信息;
|
||||
stop
|
||||
endif
|
||||
|
||||
:更新状态文件;
|
||||
|
||||
:执行 git add .;
|
||||
|
||||
:生成提交信息;
|
||||
note right: [aide] <环节>: <总结>
|
||||
|
||||
:执行 git commit;
|
||||
|
||||
if (环节特定行为?) then (是)
|
||||
:执行特定行为;
|
||||
endif
|
||||
|
||||
:输出结果;
|
||||
|
||||
stop
|
||||
@enduml
|
||||
```
|
||||
|
||||
### 4.2 流程校验规则
|
||||
|
||||
```
|
||||
@startuml
|
||||
skinparam defaultFontName "PingFang SC"
|
||||
|
||||
[*] --> task_optimize : start (prep阶段)
|
||||
[*] --> flow_design : start (exec阶段)
|
||||
|
||||
task_optimize --> task_optimize : next-step
|
||||
task_optimize --> [*] : 完成prep
|
||||
|
||||
flow_design --> flow_design : next-step
|
||||
flow_design --> impl : next-part
|
||||
|
||||
impl --> impl : next-step
|
||||
impl --> flow_design : back-part
|
||||
impl --> verify : next-part
|
||||
|
||||
verify --> verify : next-step
|
||||
verify --> impl : back-part
|
||||
verify --> docs : next-part
|
||||
|
||||
docs --> docs : next-step
|
||||
docs --> verify : back-part
|
||||
docs --> finish : next-part
|
||||
|
||||
finish --> finish : next-step
|
||||
finish --> [*] : 完成exec
|
||||
|
||||
@enduml
|
||||
```
|
||||
|
||||
**校验规则**:
|
||||
- `next-part` 只能前进到相邻环节或回退
|
||||
- 不允许跳过环节(如 flow-design → finish)
|
||||
- `back-part` 可以回退到任意之前的环节
|
||||
|
||||
---
|
||||
|
||||
## 五、数据结构
|
||||
|
||||
### 5.1 状态文件格式
|
||||
|
||||
位置:`.aide/flow-status.json`
|
||||
|
||||
```
|
||||
FlowStatus:
|
||||
task_id: str # 任务标识(时间戳)
|
||||
current_phase: str # 当前环节名
|
||||
current_step: int # 当前步骤序号
|
||||
started_at: str # 开始时间(ISO格式)
|
||||
history: list[HistoryEntry] # 历史记录
|
||||
|
||||
HistoryEntry:
|
||||
timestamp: str # 时间戳
|
||||
action: str # 操作类型(start/next-step/next-part/...)
|
||||
phase: str # 环节名
|
||||
step: int # 步骤序号
|
||||
summary: str # 总结/原因
|
||||
git_commit: str | None # git commit hash
|
||||
```
|
||||
|
||||
### 5.2 方法签名原型
|
||||
|
||||
```
|
||||
class FlowTracker:
|
||||
root: Path
|
||||
status_path: Path # .aide/flow-status.json
|
||||
|
||||
start(phase: str, summary: str) -> bool
|
||||
# 开始新任务
|
||||
|
||||
next_step(summary: str) -> bool
|
||||
# 记录步骤前进
|
||||
|
||||
back_step(reason: str) -> bool
|
||||
# 记录步骤回退
|
||||
|
||||
next_part(phase: str, summary: str) -> bool
|
||||
# 进入下一环节
|
||||
|
||||
back_part(phase: str, reason: str) -> bool
|
||||
# 回退到之前环节
|
||||
|
||||
issue(description: str) -> bool
|
||||
# 记录一般问题
|
||||
|
||||
error(description: str) -> bool
|
||||
# 记录严重错误
|
||||
|
||||
_load_status() -> FlowStatus | None
|
||||
# 加载状态文件
|
||||
|
||||
_save_status(status: FlowStatus) -> None
|
||||
# 保存状态文件
|
||||
|
||||
_validate_transition(from_phase: str, to_phase: str) -> bool
|
||||
# 校验环节跳转
|
||||
|
||||
_git_commit(message: str) -> str | None
|
||||
# 执行 git add + commit,返回 commit hash
|
||||
|
||||
_run_phase_hooks(phase: str, entering: bool) -> None
|
||||
# 执行环节特定行为
|
||||
```
|
||||
|
||||
### 5.3 Git 集成
|
||||
|
||||
```
|
||||
class GitIntegration:
|
||||
root: Path
|
||||
|
||||
add_all() -> bool
|
||||
# git add .
|
||||
|
||||
commit(message: str) -> str | None
|
||||
# git commit -m "...",返回 commit hash
|
||||
|
||||
get_status() -> str
|
||||
# git status -sb
|
||||
```
|
||||
|
||||
### 5.4 流程校验
|
||||
|
||||
```
|
||||
class FlowValidator:
|
||||
PHASE_ORDER: list[str] # 环节顺序定义
|
||||
VALID_TRANSITIONS: dict # 有效跳转映射
|
||||
|
||||
validate_start(phase: str) -> bool
|
||||
# 校验 start 操作
|
||||
|
||||
validate_next_part(from_phase: str, to_phase: str) -> bool
|
||||
# 校验 next-part 操作
|
||||
|
||||
validate_back_part(from_phase: str, to_phase: str) -> bool
|
||||
# 校验 back-part 操作
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 六、环节特定行为
|
||||
|
||||
| 触发时机 | 行为 |
|
||||
|----------|------|
|
||||
| 离开 flow-design | 校验 PlantUML 语法,生成 PNG |
|
||||
| 进入 docs | 输出提示:请更新 CHANGELOG |
|
||||
| 离开 docs | 校验 CHANGELOG 是否已更新 |
|
||||
|
||||
---
|
||||
|
||||
## 七、依赖
|
||||
|
||||
| 依赖项 | 类型 | 说明 |
|
||||
|--------|------|------|
|
||||
| ConfigManager | 内部模块 | 读取配置 |
|
||||
| output | 内部模块 | 输出格式化 |
|
||||
| git | 外部工具 | 版本控制 |
|
||||
| plantuml | 外部工具 | 流程图生成(可选) |
|
||||
|
||||
---
|
||||
|
||||
## 八、被依赖
|
||||
|
||||
| 依赖方 | 说明 |
|
||||
|--------|------|
|
||||
| /aide:prep | 调用 flow start、next-step |
|
||||
| /aide:exec | 调用 flow next-part、next-step、issue、error |
|
||||
|
||||
---
|
||||
|
||||
## 九、修改指南
|
||||
|
||||
### 9.1 修改环节定义
|
||||
|
||||
1. 更新本文档的流程校验规则图
|
||||
2. 修改 `FlowValidator.PHASE_ORDER` 和 `VALID_TRANSITIONS`
|
||||
3. 同步更新 [aide skill 设计文档](../../../aide-marketplace/aide-plugin/docs/skill/aide.md)
|
||||
|
||||
### 9.2 添加环节特定行为
|
||||
|
||||
1. 在本文档添加行为说明
|
||||
2. 在 `_run_phase_hooks()` 中实现
|
||||
3. 更新相关 Command 设计文档
|
||||
|
||||
### 9.3 修改状态文件格式
|
||||
|
||||
1. 更新本文档的数据结构章节
|
||||
2. 修改代码实现
|
||||
3. 同步更新 [数据格式文档](../formats/data.md)
|
||||
|
||||
---
|
||||
|
||||
## 十、相关文档
|
||||
|
||||
- [program 导览](../README.md)
|
||||
- [数据格式文档](../formats/data.md)
|
||||
- [aide skill 设计文档](../../../aide-marketplace/aide-plugin/docs/skill/aide.md)
|
||||
- [/aide:prep 命令设计](../../../aide-marketplace/aide-plugin/docs/commands/prep.md)
|
||||
- [/aide:exec 命令设计](../../../aide-marketplace/aide-plugin/docs/commands/exec.md)
|
||||
221
aide-program/docs/commands/init.md
Normal file
221
aide-program/docs/commands/init.md
Normal file
@@ -0,0 +1,221 @@
|
||||
# aide init 子命令设计文档
|
||||
|
||||
## 一、背景
|
||||
|
||||
### 1.1 解决的问题
|
||||
|
||||
| 问题 | 影响 |
|
||||
|------|------|
|
||||
| 配置文件缺失 | 其他 aide 命令无法正常工作 |
|
||||
| 目录结构不存在 | 状态文件、决策记录无处存放 |
|
||||
| .gitignore 未配置 | aide 数据文件被提交到仓库 |
|
||||
|
||||
### 1.2 设计目标
|
||||
|
||||
提供**一键初始化**:
|
||||
- 创建 .aide/ 目录结构
|
||||
- 生成默认配置文件
|
||||
- 配置 .gitignore
|
||||
|
||||
---
|
||||
|
||||
## 二、职责
|
||||
|
||||
### 2.1 做什么
|
||||
|
||||
1. 创建 `.aide/` 目录
|
||||
2. 创建 `.aide/decisions/` 子目录
|
||||
3. 创建 `.aide/logs/` 子目录
|
||||
4. 生成默认 `config.toml`
|
||||
5. 检查并更新 `.gitignore`
|
||||
|
||||
### 2.2 不做什么
|
||||
|
||||
- 不检测环境(那是 env 的职责)
|
||||
- 不执行业务逻辑
|
||||
- 不修改业务代码
|
||||
|
||||
---
|
||||
|
||||
## 三、接口规格
|
||||
|
||||
### 3.1 命令语法
|
||||
|
||||
```
|
||||
aide init
|
||||
```
|
||||
|
||||
### 3.2 参数
|
||||
|
||||
无参数。
|
||||
|
||||
### 3.3 输出
|
||||
|
||||
**首次初始化**:
|
||||
```
|
||||
✓ 已创建默认配置 .aide/config.toml
|
||||
✓ 初始化完成,.aide/ 与默认配置已准备就绪
|
||||
```
|
||||
|
||||
**已存在时**:
|
||||
```
|
||||
✓ 初始化完成,.aide/ 与默认配置已准备就绪
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 四、业务流程
|
||||
|
||||
```
|
||||
@startuml
|
||||
skinparam defaultFontName "PingFang SC"
|
||||
|
||||
start
|
||||
|
||||
:创建 .aide/ 目录;
|
||||
note right: 如已存在则跳过
|
||||
|
||||
:创建 .aide/decisions/ 目录;
|
||||
|
||||
:创建 .aide/logs/ 目录;
|
||||
|
||||
if (config.toml 存在?) then (是)
|
||||
:加载现有配置;
|
||||
else (否)
|
||||
:生成默认配置;
|
||||
:写入 config.toml;
|
||||
:输出创建提示;
|
||||
endif
|
||||
|
||||
:检查 .gitignore;
|
||||
if (.aide/ 已在忽略列表?) then (是)
|
||||
else (否)
|
||||
:添加 .aide/ 到 .gitignore;
|
||||
endif
|
||||
|
||||
:输出初始化完成;
|
||||
|
||||
stop
|
||||
@enduml
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 五、数据结构
|
||||
|
||||
### 5.1 目录结构
|
||||
|
||||
```
|
||||
.aide/
|
||||
├── config.toml # 项目配置
|
||||
├── flow-status.json # 当前任务进度(由 flow 创建)
|
||||
├── decisions/ # 待定项决策记录
|
||||
│ └── {timestamp}.json
|
||||
└── logs/ # 操作日志
|
||||
```
|
||||
|
||||
### 5.2 默认配置内容
|
||||
|
||||
```toml
|
||||
# Aide 默认配置(由 aide init 生成)
|
||||
# runtime: aide 自身运行要求
|
||||
# task: 任务文档路径
|
||||
# env: 虚拟环境与依赖配置
|
||||
# flow: 环节名称列表,供流程校验使用
|
||||
|
||||
[runtime]
|
||||
python_min = "3.11"
|
||||
use_uv = true
|
||||
|
||||
[task]
|
||||
source = "task-now.md"
|
||||
spec = "task-spec.md"
|
||||
|
||||
[env]
|
||||
venv = ".venv"
|
||||
requirements = "requirements.txt"
|
||||
|
||||
[flow]
|
||||
phases = ["task-optimize", "flow-design", "impl", "verify", "docs", "finish"]
|
||||
```
|
||||
|
||||
### 5.3 方法签名原型
|
||||
|
||||
```
|
||||
class ConfigManager:
|
||||
root: Path
|
||||
aide_dir: Path # .aide/
|
||||
config_path: Path # .aide/config.toml
|
||||
decisions_dir: Path # .aide/decisions/
|
||||
logs_dir: Path # .aide/logs/
|
||||
|
||||
ensure_base_dirs() -> None
|
||||
# 创建基础目录结构
|
||||
|
||||
ensure_gitignore() -> None
|
||||
# 确保 .gitignore 包含 .aide/
|
||||
|
||||
ensure_config() -> dict
|
||||
# 确保配置文件存在,返回配置内容
|
||||
|
||||
load_config() -> dict
|
||||
# 加载配置文件
|
||||
|
||||
get_value(key: str) -> Any
|
||||
# 获取配置值(点号分隔的键)
|
||||
|
||||
set_value(key: str, value: Any) -> None
|
||||
# 设置配置值
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 六、依赖
|
||||
|
||||
| 依赖项 | 类型 | 说明 |
|
||||
|--------|------|------|
|
||||
| output | 内部模块 | 输出格式化 |
|
||||
| tomllib | 标准库 | TOML 读取 |
|
||||
| tomli_w | 第三方库 | TOML 写入 |
|
||||
|
||||
---
|
||||
|
||||
## 七、被依赖
|
||||
|
||||
| 依赖方 | 说明 |
|
||||
|--------|------|
|
||||
| /aide:init | 调用 aide init 初始化配置 |
|
||||
| aide env ensure | 依赖配置文件存在 |
|
||||
| aide flow | 依赖目录结构存在 |
|
||||
| aide decide | 依赖 decisions/ 目录存在 |
|
||||
|
||||
---
|
||||
|
||||
## 八、修改指南
|
||||
|
||||
### 8.1 修改默认配置
|
||||
|
||||
1. 更新本文档的"默认配置内容"章节
|
||||
2. 修改 `ConfigManager` 中的 `DEFAULT_CONFIG`
|
||||
3. 同步更新 [配置格式文档](../formats/config.md)
|
||||
|
||||
### 8.2 修改目录结构
|
||||
|
||||
1. 更新本文档的"目录结构"章节
|
||||
2. 修改 `ensure_base_dirs()` 方法
|
||||
3. 同步更新相关文档
|
||||
|
||||
### 8.3 添加新的初始化步骤
|
||||
|
||||
1. 在本文档添加步骤说明
|
||||
2. 在 `ensure_config()` 或新方法中实现
|
||||
3. 更新业务流程图
|
||||
|
||||
---
|
||||
|
||||
## 九、相关文档
|
||||
|
||||
- [program 导览](../README.md)
|
||||
- [配置格式文档](../formats/config.md)
|
||||
- [aide skill 设计文档](../../../aide-marketplace/aide-plugin/docs/skill/aide.md)
|
||||
- [/aide:init 命令设计](../../../aide-marketplace/aide-plugin/docs/commands/init.md)
|
||||
Reference in New Issue
Block a user