2025-12-13 22:22:01 +08:00
|
|
|
|
# Aide Program 设计文档
|
|
|
|
|
|
|
|
|
|
|
|
## 一、概述
|
|
|
|
|
|
|
|
|
|
|
|
aide-program 是 Aide 工作流体系的命令行工具,为 aide-plugin 提供底层支持。
|
|
|
|
|
|
|
|
|
|
|
|
### 1.1 解决的问题
|
|
|
|
|
|
|
|
|
|
|
|
| 问题 | 解决方案 |
|
|
|
|
|
|
|------|----------|
|
|
|
|
|
|
| 操作不确定性 | 程序化封装,固定输入输出 |
|
|
|
|
|
|
| 输出信息冗余 | 精简输出,静默即成功 |
|
|
|
|
|
|
| git 操作分散 | 集成到 flow 命令,自动提交 |
|
|
|
|
|
|
| 状态难追踪 | 统一的状态文件和日志 |
|
|
|
|
|
|
|
|
|
|
|
|
### 1.2 与 aide-plugin 的关系
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
┌─────────────────────────────────────────────────┐
|
|
|
|
|
|
│ aide-plugin │
|
|
|
|
|
|
│ Commands: 定义流程(做什么、按什么顺序) │
|
|
|
|
|
|
│ Skill: 定义工具使用方法(怎么调用) │
|
|
|
|
|
|
└─────────────────────────────────────────────────┘
|
|
|
|
|
|
│
|
|
|
|
|
|
▼ 调用
|
|
|
|
|
|
┌─────────────────────────────────────────────────┐
|
|
|
|
|
|
│ aide-program │
|
|
|
|
|
|
│ 实际执行操作,返回精简结果 │
|
|
|
|
|
|
│ │
|
|
|
|
|
|
│ ┌────────┐ ┌────────┐ ┌────────┐ │
|
|
|
|
|
|
│ │ env │ │ flow │ │ decide │ │
|
|
|
|
|
|
│ └────────┘ └────────┘ └────────┘ │
|
|
|
|
|
|
│ ┌────────┐ ┌────────┐ │
|
|
|
|
|
|
│ │ config │ │ init │ │
|
|
|
|
|
|
│ └────────┘ └────────┘ │
|
|
|
|
|
|
└─────────────────────────────────────────────────┘
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 二、子命令索引
|
|
|
|
|
|
|
|
|
|
|
|
| 子命令 | 设计文档 | 实现状态 | 职责 |
|
|
|
|
|
|
|--------|----------|----------|------|
|
|
|
|
|
|
| `aide init` | [commands/init.md](commands/init.md) | ✅ 已实现 | 初始化 .aide 目录 |
|
2025-12-14 07:35:29 +08:00
|
|
|
|
| `aide env ensure` | [commands/env.md](commands/env.md) | ✅ 已实现 | 环境检测与修复 |
|
|
|
|
|
|
| `aide env list` | [commands/env.md](commands/env.md) | ✅ 已实现 | 列出可用模块 |
|
|
|
|
|
|
| `aide env set` | [commands/env.md](commands/env.md) | ✅ 已实现 | 设置环境配置(带验证) |
|
2025-12-13 22:22:01 +08:00
|
|
|
|
| `aide config` | [formats/config.md](formats/config.md) | ✅ 已实现 | 配置读写 |
|
2025-12-15 18:53:39 +08:00
|
|
|
|
| `aide flow start` | [commands/flow.md](commands/flow.md) | ✅ 已实现 | 开始新任务 |
|
|
|
|
|
|
| `aide flow next-part` | [commands/flow.md](commands/flow.md) | ✅ 已实现 | 进入下一阶段 |
|
|
|
|
|
|
| `aide flow next-step` | [commands/flow.md](commands/flow.md) | ✅ 已实现 | 记录步骤完成 |
|
|
|
|
|
|
| `aide flow status` | [commands/flow.md](commands/flow.md) | ✅ 已实现 | 查看当前任务状态 |
|
|
|
|
|
|
| `aide flow list` | [commands/flow.md](commands/flow.md) | ✅ 已实现 | 列出所有任务 |
|
|
|
|
|
|
| `aide flow show` | [commands/flow.md](commands/flow.md) | ✅ 已实现 | 查看指定任务详情 |
|
2025-12-15 02:59:03 +08:00
|
|
|
|
| `aide decide submit` | [commands/decide.md](commands/decide.md) | ✅ 已实现 | 提交待定项并启动 Web 服务 |
|
|
|
|
|
|
| `aide decide result` | [commands/decide.md](commands/decide.md) | ✅ 已实现 | 获取用户决策结果 |
|
2025-12-13 22:22:01 +08:00
|
|
|
|
|
2025-12-15 02:59:03 +08:00
|
|
|
|
补充:
|
|
|
|
|
|
- flow 的实现细节与验证清单见 [commands/flow/README.md](commands/flow/README.md)
|
|
|
|
|
|
- decide 的实现细节与验证清单见 [commands/decide/README.md](commands/decide/README.md)
|
2025-12-14 23:10:02 +08:00
|
|
|
|
|
2025-12-14 07:35:29 +08:00
|
|
|
|
### 2.1 环境检测模块
|
|
|
|
|
|
|
|
|
|
|
|
| 模块 | 类型 | 说明 |
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
| python, uv | A | Python 运行时 |
|
|
|
|
|
|
| rust | A | Rust 工具链 |
|
|
|
|
|
|
| node | A | Node.js 运行时 |
|
|
|
|
|
|
| flutter | A | Flutter SDK |
|
|
|
|
|
|
| android | A | Android SDK |
|
|
|
|
|
|
| venv, requirements | B | Python 项目依赖 |
|
|
|
|
|
|
| node_deps | B | Node.js 项目依赖 |
|
|
|
|
|
|
|
|
|
|
|
|
- 类型A:无需配置即可检测
|
|
|
|
|
|
- 类型B:需要配置路径
|
|
|
|
|
|
- 支持模块实例化命名:`模块类型:实例名`
|
|
|
|
|
|
|
2025-12-13 22:22:01 +08:00
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 三、目录结构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
aide-program/
|
2025-12-14 23:10:02 +08:00
|
|
|
|
├── bin/ # 入口脚本
|
|
|
|
|
|
│ ├── aide.sh # Linux/Mac
|
|
|
|
|
|
│ ├── aide.bat # Windows
|
|
|
|
|
|
│ └── aide # 软链接(指向 aide.sh)
|
2025-12-13 22:22:01 +08:00
|
|
|
|
├── docs/ # 设计文档(本目录)
|
|
|
|
|
|
│ ├── README.md # 导览(本文件)
|
|
|
|
|
|
│ ├── commands/ # 子命令设计文档
|
|
|
|
|
|
│ │ ├── env.md
|
|
|
|
|
|
│ │ ├── flow.md
|
2025-12-14 23:10:02 +08:00
|
|
|
|
│ │ ├── flow/ # flow 详细设计(交接包)
|
2025-12-13 22:22:01 +08:00
|
|
|
|
│ │ ├── decide.md
|
|
|
|
|
|
│ │ └── init.md
|
|
|
|
|
|
│ └── formats/ # 数据格式文档
|
|
|
|
|
|
│ ├── config.md
|
|
|
|
|
|
│ └── data.md
|
|
|
|
|
|
└── aide/ # Python 代码
|
|
|
|
|
|
├── __init__.py
|
|
|
|
|
|
├── __main__.py # 支持 python -m aide
|
|
|
|
|
|
├── main.py # CLI 解析与命令分发
|
|
|
|
|
|
├── core/
|
|
|
|
|
|
│ ├── config.py # 配置读写
|
|
|
|
|
|
│ └── output.py # 输出格式(✓/⚠/✗/→)
|
|
|
|
|
|
├── env/
|
2025-12-14 07:35:29 +08:00
|
|
|
|
│ ├── manager.py # 环境管理器
|
|
|
|
|
|
│ ├── registry.py # 模块注册表
|
|
|
|
|
|
│ └── modules/ # 环境检测模块
|
|
|
|
|
|
│ ├── base.py # 模块基类
|
|
|
|
|
|
│ ├── python.py, uv.py, rust.py
|
|
|
|
|
|
│ ├── node.py, flutter.py, android.py
|
|
|
|
|
|
│ ├── venv.py, requirements.py
|
|
|
|
|
|
│ └── node_deps.py
|
2025-12-14 23:10:02 +08:00
|
|
|
|
├── flow/ # 进度追踪(已实现)
|
|
|
|
|
|
│ ├── tracker.py
|
|
|
|
|
|
│ ├── validator.py
|
|
|
|
|
|
│ ├── storage.py
|
|
|
|
|
|
│ ├── git.py
|
|
|
|
|
|
│ ├── hooks.py
|
|
|
|
|
|
│ ├── types.py
|
2025-12-14 07:35:29 +08:00
|
|
|
|
│ └── ...
|
2025-12-15 02:59:03 +08:00
|
|
|
|
└── decide/ # 待定项确认(已实现)
|
|
|
|
|
|
├── cli.py # CLI 入口
|
|
|
|
|
|
├── server.py # HTTP 服务
|
|
|
|
|
|
├── storage.py # 数据存储
|
|
|
|
|
|
├── handlers.py # API 处理器
|
|
|
|
|
|
├── types.py # 数据类型
|
|
|
|
|
|
└── web/ # 前端资源
|
|
|
|
|
|
├── index.html
|
|
|
|
|
|
├── style.css
|
|
|
|
|
|
└── app.js
|
2025-12-13 22:22:01 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 四、输出规范
|
|
|
|
|
|
|
|
|
|
|
|
### 4.1 前缀符号
|
|
|
|
|
|
|
|
|
|
|
|
| 前缀 | 函数 | 用途 |
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
| `✓` | `output.ok()` | 成功 |
|
|
|
|
|
|
| `⚠` | `output.warn()` | 警告(可继续) |
|
|
|
|
|
|
| `✗` | `output.err()` | 失败 |
|
|
|
|
|
|
| `→` | `output.info()` | 进行中/信息 |
|
|
|
|
|
|
| `[n/m]` | `output.step()` | 步骤进度 |
|
|
|
|
|
|
|
|
|
|
|
|
### 4.2 静默原则
|
|
|
|
|
|
|
|
|
|
|
|
**无输出 = 正常完成**
|
|
|
|
|
|
|
|
|
|
|
|
只有在需要反馈信息时才输出。
|
|
|
|
|
|
|
|
|
|
|
|
### 4.3 输出示例
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# 成功
|
|
|
|
|
|
✓ 环境就绪 (python:3.12, uv:0.4.0)
|
|
|
|
|
|
|
|
|
|
|
|
# 警告
|
|
|
|
|
|
⚠ 已修复: 创建虚拟环境 .venv
|
|
|
|
|
|
|
|
|
|
|
|
# 错误
|
|
|
|
|
|
✗ Python 版本不满足要求 (需要 >=3.10, 当前 3.8)
|
|
|
|
|
|
建议: 安装 Python 3.10+ 或使用 pyenv 管理版本
|
|
|
|
|
|
|
|
|
|
|
|
# 信息
|
|
|
|
|
|
→ 任务原文档: task-now.md
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 五、数据存储
|
|
|
|
|
|
|
|
|
|
|
|
### 5.1 存储位置
|
|
|
|
|
|
|
|
|
|
|
|
所有 aide 数据文件存放在项目根目录的 `.aide/` 下:
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
.aide/
|
2025-12-15 18:53:39 +08:00
|
|
|
|
├── config.toml # 项目配置(自文档化)
|
2025-12-13 22:22:01 +08:00
|
|
|
|
├── flow-status.json # 当前任务进度状态
|
2025-12-15 18:53:39 +08:00
|
|
|
|
├── archive/ # 已完成任务归档
|
|
|
|
|
|
│ └── {task_id}.json
|
2025-12-13 22:22:01 +08:00
|
|
|
|
├── decisions/ # 待定项决策记录
|
|
|
|
|
|
│ └── {timestamp}.json
|
2025-12-15 18:53:39 +08:00
|
|
|
|
├── diagrams/ # 流程图文件
|
|
|
|
|
|
│ └── {task_id}/
|
|
|
|
|
|
│ ├── *.puml # PlantUML 源文件
|
|
|
|
|
|
│ └── *.png # 生成的图片
|
|
|
|
|
|
├── project-docs/ # 项目文档(由 /aide:docs 生成)
|
|
|
|
|
|
│ ├── README.md # 总导览
|
|
|
|
|
|
│ ├── block-plan.md # 区块计划
|
|
|
|
|
|
│ └── blocks/ # 子区块文档
|
2025-12-13 22:22:01 +08:00
|
|
|
|
└── logs/ # 操作日志
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 5.2 .gitignore 处理
|
|
|
|
|
|
|
|
|
|
|
|
- `aide init` 时自动检查 `.gitignore`
|
|
|
|
|
|
- 默认添加 `.aide/` 为忽略项
|
2025-12-15 18:53:39 +08:00
|
|
|
|
- 可通过配置 `general.gitignore_aide = false` 禁用此行为
|
2025-12-13 22:22:01 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 六、运行方式
|
|
|
|
|
|
|
|
|
|
|
|
### 6.1 通过入口脚本
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
# Linux/Mac
|
2025-12-14 23:10:02 +08:00
|
|
|
|
./aide-program/bin/aide.sh <command> [args]
|
2025-12-13 22:22:01 +08:00
|
|
|
|
|
|
|
|
|
|
# Windows
|
2025-12-14 23:10:02 +08:00
|
|
|
|
aide-program\bin\aide.bat <command> [args]
|
2025-12-13 22:22:01 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 6.2 通过 Python 模块
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
2025-12-14 23:10:02 +08:00
|
|
|
|
# 需要先使用 uv 创建并安装依赖,或直接使用入口脚本 ./aide-program/bin/aide.sh
|
|
|
|
|
|
# 这里展示“直接使用虚拟环境的 python”运行模块:
|
|
|
|
|
|
aide-program/.venv/bin/python -m aide <command> [args]
|
2025-12-13 22:22:01 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 6.3 依赖要求
|
|
|
|
|
|
|
|
|
|
|
|
- Python >= 3.11
|
|
|
|
|
|
- uv(用于虚拟环境和依赖管理)
|
|
|
|
|
|
- tomli-w(TOML 写入)
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 七、开发指南
|
|
|
|
|
|
|
|
|
|
|
|
### 7.1 添加新子命令
|
|
|
|
|
|
|
|
|
|
|
|
1. 在 `docs/commands/` 创建设计文档
|
|
|
|
|
|
2. 在 `aide/` 下创建对应模块目录
|
|
|
|
|
|
3. 在 `aide/main.py` 添加 CLI 路由
|
|
|
|
|
|
4. 更新本导览的子命令索引
|
|
|
|
|
|
5. 更新 [aide skill 设计文档](../../aide-marketplace/aide-plugin/docs/skill/aide.md)
|
|
|
|
|
|
|
|
|
|
|
|
### 7.2 修改现有子命令
|
|
|
|
|
|
|
|
|
|
|
|
1. 阅读对应的设计文档
|
|
|
|
|
|
2. 修改代码实现
|
|
|
|
|
|
3. 更新设计文档(如有接口变更)
|
|
|
|
|
|
4. 同步更新 aide skill 文档
|
|
|
|
|
|
|
|
|
|
|
|
### 7.3 代码规范
|
|
|
|
|
|
|
|
|
|
|
|
- 所有输出使用 `core/output.py` 中的函数
|
|
|
|
|
|
- 配置操作使用 `core/config.py` 中的 `ConfigManager`
|
|
|
|
|
|
- 遵循静默原则:成功时尽量少输出
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 八、相关文档
|
|
|
|
|
|
|
|
|
|
|
|
- [总导览](../../docs/aide-overview.md)
|
|
|
|
|
|
- [aide-plugin 导览](../../aide-marketplace/aide-plugin/docs/README.md)
|
|
|
|
|
|
- [aide skill 设计文档](../../aide-marketplace/aide-plugin/docs/skill/aide.md)
|