4.2 KiB
4.2 KiB
aide init 子命令设计文档
一、背景
1.1 解决的问题
| 问题 | 影响 |
|---|---|
| 配置文件缺失 | 其他 aide 命令无法正常工作 |
| 目录结构不存在 | 状态文件、决策记录无处存放 |
| .gitignore 未配置 | aide 数据文件被提交到仓库 |
1.2 设计目标
提供一键初始化:
- 创建 .aide/ 目录结构
- 生成默认配置文件
- 配置 .gitignore
二、职责
2.1 做什么
- 创建
.aide/目录 - 创建
.aide/decisions/子目录 - 创建
.aide/logs/子目录 - 生成默认
config.toml - 检查并更新
.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 默认配置内容
# 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 修改默认配置
- 更新本文档的"默认配置内容"章节
- 修改
ConfigManager中的DEFAULT_CONFIG - 同步更新 配置格式文档
8.2 修改目录结构
- 更新本文档的"目录结构"章节
- 修改
ensure_base_dirs()方法 - 同步更新相关文档
8.3 添加新的初始化步骤
- 在本文档添加步骤说明
- 在
ensure_config()或新方法中实现 - 更新业务流程图