feat: 实现扩展模块和设置命令

This commit is contained in:
2025-12-14 07:35:29 +08:00
parent f016b51709
commit a48fbb5fae
19 changed files with 1415 additions and 255 deletions

View File

@@ -43,11 +43,29 @@ aide-program 是 Aide 工作流体系的命令行工具,为 aide-plugin 提供
| 子命令 | 设计文档 | 实现状态 | 职责 |
|--------|----------|----------|------|
| `aide init` | [commands/init.md](commands/init.md) | ✅ 已实现 | 初始化 .aide 目录 |
| `aide env` | [commands/env.md](commands/env.md) | ✅ 已实现 | 环境检测与修复 |
| `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) | ✅ 已实现 | 设置环境配置(带验证) |
| `aide config` | [formats/config.md](formats/config.md) | ✅ 已实现 | 配置读写 |
| `aide flow` | [commands/flow.md](commands/flow.md) | ⏳ 待实现 | 进度追踪与 git 集成 |
| `aide decide` | [commands/decide.md](commands/decide.md) | ⏳ 待实现 | 待定项 Web 确认 |
### 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需要配置路径
- 支持模块实例化命名:`模块类型:实例名`
---
## 三、目录结构
@@ -71,21 +89,21 @@ aide-program/
├── __main__.py # 支持 python -m aide
├── main.py # CLI 解析与命令分发
├── core/
│ ├── __init__.py
│ ├── config.py # 配置读写
│ └── output.py # 输出格式(✓/⚠/✗/→)
├── env/
│ ├── __init__.py
── ensure.py # 环境检测与修复
│ ├── 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
├── flow/ # 待实现
── __init__.py
│ ├── tracker.py # 进度追踪
│ ├── git.py # git 自动提交
│ └── validator.py # 流程校验
── ...
└── decide/ # 待实现
── __init__.py
├── server.py # HTTP 服务
└── web/ # 静态前端
── ...
```
---

View File

@@ -28,6 +28,7 @@
aide env # 等同于 aide env ensure
aide env ensure [options] # 检测并修复
aide env list # 列出所有可用模块
aide env set <key> <value> # 设置环境配置(带验证)
```
### 2.1 aide env ensure
@@ -47,6 +48,45 @@ aide env list # 列出所有可用模块
列出所有可用的环境检测模块及其状态。
### 2.3 aide env set
设置环境配置,带模块名称验证。
**用法:**
```bash
aide env set modules <模块列表> # 设置启用的模块(逗号分隔)
aide env set <模块名>.<配置项> <值> # 设置模块配置
```
**示例:**
```bash
# 设置启用的模块
aide env set modules python,uv,rust,node
# 设置模块配置
aide env set venv.path .venv
aide env set requirements.path requirements.txt
# 设置实例化模块(多项目场景)
aide env set modules rust,node,flutter,android,node_deps:react
aide env set node_deps:react.path react-demo
```
**验证规则:**
- 设置 `modules` 时,验证每个模块类型是否存在
- 设置模块配置时,验证模块类型是否存在
- 无效模块名会报错并显示可用模块列表
**错误示例:**
```
✗ 未知模块: fortran, cobol
→ 可用模块: python, uv, venv, requirements, rust, node, flutter, node_deps, android
```
---
## 三、模块系统
@@ -59,6 +99,10 @@ aide env list # 列出所有可用模块
|------|------|------|
| `python` | Python 解释器版本 | check |
| `uv` | uv 包管理器 | check |
| `rust` | Rust 工具链rustc + cargo | check |
| `node` | Node.js 运行时 | check |
| `flutter` | Flutter SDK | check |
| `android` | Android SDK | check |
**类型B路径依赖模块必须有配置才能检测**
@@ -66,12 +110,36 @@ aide env list # 列出所有可用模块
|------|------|------|----------|
| `venv` | Python 虚拟环境 | check, ensure | `path` |
| `requirements` | Python 依赖管理 | check, ensure | `path` |
| `node_deps` | Node.js 项目依赖 | check, ensure | `path` |
### 3.2 模块能力
- `check`:检测环境是否可用
- `ensure`:检测失败时尝试自动修复
### 3.3 模块实例化命名
支持 `模块类型:实例名` 格式,用于同类型多实例场景:
```toml
# 多个 Node.js 项目
modules = ["node", "node_deps:react", "node_deps:vue"]
[env."node_deps:react"]
path = "react-demo"
[env."node_deps:vue"]
path = "vue-demo"
manager = "pnpm"
```
**输出示例:**
```
✓ node: 24.11.1 (npm 11.6.2)
✓ node_deps:react: react-demo (npm)
✓ node_deps:vue: vue-demo (pnpm)
```
---
## 四、配置
@@ -95,7 +163,32 @@ path = ".venv"
path = "requirements.txt"
```
### 4.2 配置兼容性
### 4.2 多项目配置示例
```toml
[env]
modules = ["rust", "node", "flutter", "android", "node_deps:react"]
# Node.js 项目依赖(实例化命名)
[env."node_deps:react"]
path = "react-demo"
# manager = "npm" # 可选,默认自动检测
```
### 4.3 node_deps 模块配置
| 配置项 | 必需 | 说明 |
|--------|------|------|
| `path` | 是 | package.json 所在目录 |
| `manager` | 否 | 包管理器npm/pnpm/yarn/bun默认自动检测 |
**自动检测逻辑**(按锁文件判断):
- `pnpm-lock.yaml` → pnpm
- `yarn.lock` → yarn
- `bun.lockb` → bun
- `package-lock.json` 或无锁文件 → npm
### 4.4 配置兼容性
支持旧格式配置:
@@ -129,88 +222,6 @@ requirements = "requirements.txt"
- 未启用模块失败 = 警告(⚠) = 可忽略
- 启用的B类模块无配置 = 错误(✗) = 配置错误
### 5.2 业务流程
```
@startuml
skinparam defaultFontName "PingFang SC"
start
:读取配置;
:获取启用模块列表;
if (--runtime?) then (是)
:target = [python, uv];
else if (--modules?) then (是)
:target = 指定模块;
else if (--all?) then (是)
:target = 启用模块;
:check_only = true;
else (否)
:target = 启用模块;
endif
if (verbose?) then (是)
:输出详细头部信息;
endif
:遍历 target 模块;
repeat
:获取模块实例;
:获取模块配置;
if (verbose?) then (是)
:输出模块配置详情;
endif
if (B类模块 && 无配置?) then (是)
if (在启用列表?) then (是)
:输出错误;
stop
else (否)
:输出警告,跳过;
endif
endif
:执行 check();
if (成功?) then (是)
:输出成功;
else (否)
if (check_only?) then (是)
:输出警告;
else if (可修复?) then (是)
:执行 ensure();
if (修复成功?) then (是)
:输出成功;
else (否)
if (在启用列表?) then (是)
:输出错误;
stop
else (否)
:输出警告;
endif
endif
else (否)
if (在启用列表?) then (是)
:输出错误;
stop
else (否)
:输出警告;
endif
endif
endif
repeat while (还有模块?)
:输出环境就绪;
stop
@enduml
```
---
## 六、输出示例
@@ -219,93 +230,48 @@ stop
```
可用模块:
模块 描述 能力 需要配置
模块 描述 能力 需要配置
────────────────────────────────────────────────────────────
python Python 解释器版本 check 否
uv uv 包管理器 check 否
venv Python 虚拟环境 check, ensure 是 [path]
requirements Python 依赖管理 check, ensure 是 [path]
python Python 解释器版本 check 否
uv uv 包管理器 check 否
venv Python 虚拟环境 check, ensure 是 [path]
requirements Python 依赖管理 check, ensure 是 [path]
rust Rust 工具链 check 否
node Node.js 运行时 check 否
flutter Flutter SDK check 否
node_deps Node.js 项目依赖 check, ensure 是 [path]
android Android SDK check 否
当前启用: python, uv, venv, requirements
当前启用: rust, node, flutter, android, node_deps:react
```
### 6.2 aide env ensure
**成功:**
```
✓ python: 3.14.2 (>=3.11)
✓ uv: uv 0.9.16
✓ venv: .venv
✓ requirements: requirements.txt
✓ 环境就绪 (python:3.14.2, uv:uv 0.9.16, venv:.venv, requirements:requirements.txt)
```
**需修复:**
```
✓ python: 3.14.2 (>=3.11)
✓ uv: uv 0.9.16
→ venv: 虚拟环境不存在: .venv尝试修复...
✓ venv: 已创建
✓ requirements: requirements.txt
✓ 环境就绪 (...)
```
**启用模块失败:**
```
✓ python: 3.14.2 (>=3.11)
✓ uv: uv 0.9.16
✗ venv: 已启用但缺少配置项: path
```
### 6.3 aide env ensure --verbose
### 6.2 aide env ensure(多项目场景)
```
============================================================
环境检测详细信息
============================================================
工作目录: /home/user/myproject
配置文件: /home/user/myproject/.aide/config.toml
配置存在: 是
启用模块: python, uv, venv, requirements
目标模块: python, uv, venv, requirements
[python] 配置:
min_version: 3.11
✓ python: 3.14.2 (>=3.11)
[uv] 配置:
(无配置)
✓ uv: uv 0.9.16
[venv] 配置:
path: .venv
path (绝对): /home/user/myproject/.venv
path (存在): 是
✓ venv: .venv
[requirements] 配置:
path: requirements.txt
path (绝对): /home/user/myproject/requirements.txt
path (存在): 是
✓ requirements: requirements.txt
✓ 环境就绪 (...)
✓ rust: 1.94.0-nightly (cargo 1.94.0-nightly)
✓ node: 24.11.1 (npm 11.6.2)
✓ flutter: 3.38.4 (dart 3.10.3)
✓ android: /home/user/android-sdk (adb 1.0.41, build-tools 36.1.0, API 36)
→ node_deps:react: node_modules 不存在,尝试修复...
✓ node_deps:react: 已安装 (npm)
✓ 环境就绪 (rust:1.94.0-nightly, node:24.11.1, flutter:3.38.4, android:/home/user/android-sdk, node_deps:react:react-demo)
```
### 6.4 aide env ensure --runtime
### 6.3 aide env set 示例
```
✓ python: 3.14.2 (>=3.11)
✓ uv: uv 0.9.16
环境就绪 (python:3.14.2, uv:uv 0.9.16)
```
```bash
# 设置多种环境模块
$ aide env set modules rust,node,flutter,android,node_deps:react
已更新 env.modules = ['rust', 'node', 'flutter', 'android', 'node_deps:react']
### 6.5 aide env ensure --all
# 设置实例化模块配置
$ aide env set node_deps:react.path react-demo
✓ 已更新 env."node_deps:react".path = 'react-demo'
```
✓ python: 3.14.2 (>=3.11)
✓ uv: uv 0.9.16
✓ venv: .venv
✓ requirements: requirements.txt
# 验证失败示例
$ aide env set modules python,fortran
✗ 未知模块: fortran
→ 可用模块: python, uv, venv, requirements, rust, node, flutter, node_deps, android
```
---
@@ -323,7 +289,12 @@ aide/env/
├── python.py # Python 模块
├── uv.py # uv 模块
├── venv.py # venv 模块
── requirements.py # requirements 模块
── requirements.py # requirements 模块
├── rust.py # Rust 模块
├── node.py # Node.js 模块
├── flutter.py # Flutter 模块
├── node_deps.py # Node.js 项目依赖模块
└── android.py # Android SDK 模块
```
### 7.1 模块基类

View File

@@ -89,10 +89,20 @@ phases = ["task-optimize", "flow-design", "impl", "verify", "docs", "finish"]
| `modules` | array | `["python", "uv", "venv", "requirements"]` | 启用的环境检测模块 |
**可用模块**
- `python` - Python 解释器版本检测
- `uv` - uv 包管理器检测
- `venv` - Python 虚拟环境管理
- `requirements` - Python 依赖管理
| 模块 | 类型 | 说明 |
|------|------|------|
| `python` | A | Python 解释器版本检测 |
| `uv` | A | uv 包管理器检测 |
| `rust` | A | Rust 工具链检测rustc + cargo |
| `node` | A | Node.js 运行时检测 |
| `flutter` | A | Flutter SDK 检测 |
| `android` | A | Android SDK 检测 |
| `venv` | B | Python 虚拟环境管理 |
| `requirements` | B | Python 依赖管理 |
| `node_deps` | B | Node.js 项目依赖管理 |
**模块实例化命名**:支持 `模块类型:实例名` 格式,用于同类型多实例场景。
#### 4.3.2 模块配置
@@ -111,6 +121,24 @@ path = ".venv" # 虚拟环境目录路径
[env.requirements]
path = "requirements.txt" # 依赖文件路径
[env.node_deps]
path = "frontend" # package.json 所在目录
manager = "npm" # 可选npm/pnpm/yarn/bun默认自动检测
```
**实例化模块配置**(多项目场景):
```toml
[env]
modules = ["node", "node_deps:react", "node_deps:vue"]
[env."node_deps:react"]
path = "react-demo"
[env."node_deps:vue"]
path = "vue-demo"
manager = "pnpm"
```
**使用场景**