Files
agent-aide/.aide/project-docs/blocks/aide-program-env.md

164 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# aide-program-env
> 路径aide-program/aide/env/
> 最后更新2025-12-17
## 概述
环境检测和管理模块负责检测和修复开发环境。采用插件式架构支持多种开发环境的检测。模块分为两类类型A全局工具无需配置和类型B项目级需要配置路径
## 目录结构
```
aide-program/aide/env/
├── __init__.py 模块初始化
├── manager.py 环境管理器
├── registry.py 模块注册表
└── modules/
├── __init__.py 模块集合初始化
├── base.py 模块基类定义
├── python.py Python 解释器检测
├── uv.py uv 包管理器检测
├── venv.py 虚拟环境管理
├── requirements.py Python 依赖管理
├── rust.py Rust 工具链检测
├── node.py Node.js 运行时检测
├── node_deps.py Node.js 项目依赖
├── flutter.py Flutter SDK 检测
└── android.py Android SDK 检测
```
## 文件清单
| 文件 | 类型 | 说明 |
|------|------|------|
| __init__.py | 源码 | 模块初始化 |
| manager.py | 源码 | EnvManager 类,环境检测核心逻辑 |
| registry.py | 源码 | ModuleRegistry 注册表,管理所有检测模块 |
| modules/base.py | 源码 | BaseModule 基类和数据类定义 |
| modules/python.py | 源码 | Python 版本检测类型A |
| modules/uv.py | 源码 | uv 包管理器检测类型A |
| modules/venv.py | 源码 | 虚拟环境检测/创建类型B |
| modules/requirements.py | 源码 | Python 依赖检测/安装类型B |
| modules/rust.py | 源码 | Rust 工具链检测类型A |
| modules/node.py | 源码 | Node.js 运行时检测类型A |
| modules/node_deps.py | 源码 | Node.js 依赖检测/安装类型B |
| modules/flutter.py | 源码 | Flutter SDK 检测类型A |
| modules/android.py | 源码 | Android SDK 检测类型A |
## 核心组件
### EnvManager 类
- **职责**:环境管理器,协调各模块的检测和修复
- **位置**`aide/env/manager.py:53`
- **关键方法**
- `list_modules()` - 列出所有可用模块aide env list
- `ensure()` - 检测并修复环境aide env ensure
- `set_modules()` - 设置启用的模块列表
- `set_module_config()` - 设置模块配置
- `_process_module()` - 处理单个模块的检测/修复
### ModuleRegistry 类
- **职责**:模块注册表,管理所有可用的环境检测模块
- **位置**`aide/env/registry.py:8`
- **关键方法**
- `register(module)` - 注册模块
- `get(name)` - 获取指定模块
- `names()` - 获取所有模块名称
- `list_info()` - 获取所有模块的元信息
### BaseModule 抽象类
- **职责**:模块基类,定义检测模块的接口
- **位置**`aide/env/modules/base.py:37`
- **抽象方法**
- `info` - 返回模块元信息ModuleInfo
- `check(config, root)` - 检测环境
- `ensure(config, root)` - 修复环境(可选)
- `validate_config(config)` - 验证模块配置
### CheckResult 数据类
- **职责**:检测结果封装
- **位置**`aide/env/modules/base.py:12`
- **字段**
- `success: bool` - 是否成功
- `version: str | None` - 版本信息
- `message: str | None` - 消息
- `can_ensure: bool` - 是否可修复
### ModuleInfo 数据类
- **职责**:模块元信息
- **位置**`aide/env/modules/base.py:22`
- **字段**
- `name: str` - 模块名称
- `description: str` - 描述
- `capabilities: list[str]` - 能力check, ensure
- `requires_config: bool` - 是否需要配置
- `config_keys: list[str]` - 需要的配置键
## 模块列表
| 模块 | 类型 | 能力 | 说明 |
|------|------|------|------|
| python | A | check | Python 解释器版本检测 |
| uv | A | check | uv 包管理器检测 |
| venv | B | check, ensure | 虚拟环境检测/创建 |
| requirements | B | check, ensure | Python 依赖检测/安装 |
| rust | A | check | Rust 工具链rustc + cargo |
| node | A | check | Node.js 运行时 |
| node_deps | B | check, ensure | Node.js 项目依赖 |
| flutter | A | check | Flutter SDK |
| android | A | check | Android SDK |
## 接口说明
### 环境检测 API
```python
from aide.env.manager import EnvManager
from aide.core.config import ConfigManager
cfg = ConfigManager(Path.cwd())
manager = EnvManager(Path.cwd(), cfg)
# 检测运行时环境
manager.ensure(runtime_only=True)
# 检测所有启用模块
manager.ensure()
# 检测指定模块
manager.ensure(modules=["python", "node"])
# 列出可用模块
manager.list_modules()
```
### 模块实例化命名
支持多项目场景,如 `node_deps:frontend``node_deps:backend`
```python
# 配置格式
# [env."node_deps:frontend"]
# path = "frontend"
# manager = "pnpm"
```
## 依赖关系
- 依赖aide/coreConfigManager、output
- 被依赖aide/main.py
## 注意事项
- 类型A模块无需配置即可检测全局工具
- 类型B模块需要在配置中指定路径
- requirements 模块会自动注入 venv 路径
- node_deps 模块支持自动检测包管理器npm/yarn/pnpm/bun
- 模块名支持实例化命名module_type:instance_name