Files
agent-aide/CHANGELOG.md

452 lines
19 KiB
Markdown
Raw Permalink 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.

# CHANGELOG
本文件记录 Aide 项目对使用者可见的重要变更。
## 2025-12-19
### 重大优化
**三个命令的分步执行机制重构docs / user-graph / user-docs**
针对大型项目(百万行代码级别)的分步执行和接续执行需求,对三个命令进行了根本性重构:
**核心改进**
- **索引式计划文档**:计划文件只做索引,详细信息存在独立步骤文档(`steps/step-XXX.md`
- **自包含步骤文档**:每个步骤包含执行所需的全部信息,接续执行无需重新分析
- **粒度动态控制**:根据复杂度评估动态拆分步骤,确保单次对话可完成
- **分析与执行分离**:分析阶段产出详细计划,执行阶段直接产出
**docs.md项目文档管理**
- 新增"步骤生成"阶段:为每个区块生成详细步骤文档(包含文件清单、已知上下文)
- 区块计划升级为索引式:`block-plan.md` 只做索引,`steps/` 目录存详情
- 支持区块内细粒度进度追踪:大型区块自动拆分为多个步骤
- 新增配置项 `docs.steps_path`(默认 `.aide/project-docs/steps`
**user-graph.md用户流程图生成**
- 步骤文档包含已分析好的模块结构(涉及文件、模块关系、数据流、关键函数)
- 执行阶段直接基于模块结构绘图,无需重新分析代码
- 新增配置项 `user_docs.graph_steps_path`(默认 `docs/graph-guide/steps`
**user-docs.md用户文档生成**
- 步骤文档包含已提取的源信息(项目基础信息、相关模块、关键代码摘要)
- 执行阶段直接基于源信息生成文档
- 新增配置项 `user_docs.docs_steps_path`(默认 `docs/steps`
**解决的问题**
- 原有"分步"是形式上的分步(基于逻辑单元),对大型项目无效
- 每次对话需重新"理解"项目,消耗大量上下文
- 单个区块/文档可能需要多次对话才能完成,但无法追踪内部进度
---
### 优化
**user-docs 分步执行和接续执行能力**
- 重构 `commands/user-docs.md`,添加与 `user-graph.md` 相同的分步执行机制
- 新增"分析和计划阶段":首次运行时分析项目、规划结构、生成计划文档
- 新增"接续执行阶段":后续运行时读取计划、显示进度、支持接续
- 新增"步骤执行流程":每步完成后更新计划、支持暂停保存进度
- 新增配置项 `user_docs.docs_plan_path`(默认 `docs/user-docs-plan.md`
- 适用于大型项目的文档生成,支持分多次对话完成
**finish 清理代码移除**
- 移除 `run.md``auto-run.md` 中的"清理临时文件"指令和 `aide flow next-step "任务完成"` 命令
- 原因aide 程序在 finish 时已自动执行清理,无需在命令文档中重复指导
**finish 提交信息格式优化**
- 修改 `branch.py` 中的收尾提交信息格式:
- 正常完成:`完成:<分支名> - <任务名>`
- 强制清理:`任务中断,清理:<分支名> - <任务名>`
- 替代原有的 `{短哈希}的任务收尾` 格式,更加语义化
- 新增 `_clean_task_summary()` 函数,移除任务名中的"开始任务准备:"前缀
- 支持半角/全角冒号、有无空格的多种格式
**decide 界面源文件显示**
- `handlers.py` 新增 `_read_source_lines` 方法:读取待定项来源文件的指定行内容
- `handle_get_items` 方法增强:返回数据中包含 `source_content` 字段
- `app.js` 更新:显示待定项来源文件的原文内容(以代码块形式)
- `style.css` 新增:`.location-label``.source-content` 样式
### 新增功能
**PlantUML 渲染配置**
- 新增 `plantuml.font_name` 配置项:默认字体 "Arial"
- 新增 `plantuml.dpi` 配置项:默认 DPI 300
- 新增 `plantuml.scale` 配置项:默认缩放 0.5
- run.md 流程图示例更新:添加配置获取说明和 skinparam/scale 示例
**finish 环节自动清理任务计划文件**
- `aide flow next-part finish` 时自动清理 `.aide/task-plans/` 目录下的所有文件
- 功能由 `hooks.py` 中的 `_hook_clean_task_plans` 实现
- 从 run.md 中删除了手动清理指令
**返工流程警告增强**
- `aide flow back-part` 输出确认 key 前,新增 rework skill 学习提示
- 明确要求完成准备工作后才能确认返工
### 移除
**移除安装命令和离线安装程序**
- 删除 `/aide:install-linux` 命令(`aide-marketplace/aide-plugin/commands/install-linux.md`
- 删除 `/aide:install-win` 命令(`aide-marketplace/aide-plugin/commands/install-win.md`
- 删除 `aide-program/offline-installer/` 目录及其全部内容
- 清理项目文档中的相关引用
### 新增功能
**返工流程优化**
- 新增 `rework` skill提供返工流程指南包含返工类型判断、文档更新格式、用户提醒模板
- 新增 `aide flow back-confirm --key <key>` 命令:确认返工请求并执行
- 修改 `aide flow back-part`:执行时生成确认 key需先完成准备工作后执行 back-confirm 确认
- 返工确认机制防止误操作,确保返工前完成文档更新
- 状态文件 `.aide/back-confirm-state.json` 用于存储待确认的返工请求
**面向用户的文档系统**
- 新增 `/aide:readme` 命令:生成面向用户的 README.md
- 新增 `/aide:user-docs` 命令:生成面向用户的文档
- 新增 `/aide:user-graph` 命令:生成面向用户的流程图
- 新增 `readme-templates` skill提供 README 编写模板和模块
**基础配置修改**
- `gitignore_aide` 配置项默认值改为 `false`
- `aide init` 支持在任意目录执行初始化
## 2025-12-18
### 修复
**修复 end_commit 记录逻辑**
- `end_commit` 现在记录 tracker 创建的 finish 提交哈希(`[aide] finish: {summary}`
- `finished_at` 使用 finish 提交的时间戳
- tracker.py移除多余的 `[aide] finish: 更新状态文件` 提交,改为传递 end_commit 和 finished_at 给 branch_mgr
- branch.pyfinish_branch_merge 接收 end_commit 和 finished_at 参数
- 正常 finish 流程不再创建额外的结束提交,直接使用 tracker 传入的值
- 强制清理clean仍会创建自己的结束提交
- flow-status.json 和 branches.json/md 的更新合并到同一个提交 `[aide] finish: 更新状态`
- 新增 `git.amend()` 方法(备用)
**修复 find_project_root 在子项目中定位错误的问题**
- 原因:从复制的测试目录运行时,因没有 `flow-status.json` 而向上查找到父项目
- 解决:添加"步骤 0",如果当前目录已有 `.aide` 目录,直接使用不向上查找
- 新的查找策略:
0. 当前目录有 `.aide` → 直接使用
1. 向上查找有 `flow-status.json` 的目录(活跃任务)
2. 向上查找有 `config.toml` 的目录
### 新增功能
**`aide flow clean` 强制清理命令**
- 用于在任务中途强制终止流程
- 如果工作区不干净,自动创建一个提交
- 执行流程与 finish 类似,但:
- 提交消息格式为 `{start_commit[:7]}的强制清理`
- 分支状态标记为 `force-cleaned`
- 保留任务分支供后续参考
### 修复
**修复 finish 流程中起始/结束提交哈希相同的 bug**
- 原因:切回源分支后才调用 `record_branch_finish`,导致 `rev_parse_head()` 获取的是源分支 HEAD
- 解决:在任务分支上先创建"结束提交"并记录哈希,在最终保存时直接使用保存的变量
- 新增 `record_end_commit` 方法:仅记录结束提交和时间,不更新状态
-`_merge_normal``_merge_with_temp_branch` 中,直接使用保存的 `end_commit` 变量,确保不会丢失
### 变更
**finish/clean 流程重构**
- 新流程:结束提交 → 记录哈希 → 清理 → 清理提交 → 切回源分支 → squash 合并 → 更新状态(使用保存的end_commit) → 收尾提交
- `_merge_normal` 方法新增 `is_force_clean` 参数,不再调用 `update_branch_status`,直接内联更新
- `_merge_with_temp_branch` 方法也同步更新
**decisions 清理逻辑简化**
- 清理时不再备份 `decisions/*.json`,直接删除
- 移除备份目录创建逻辑
**branches.md 时间格式调整**
- 起始时间和结束时间分别单独列出
- 原格式:`- **时间**: 2025-12-18 10:30 ~ 11:45`
- 新格式:
- `- **起始时间**: 2025-12-18 10:30`
- `- **结束时间**: 2025-12-18 11:45`
### 修改的文件
- `aide-program/aide/core/config.py`
- `find_project_root` 函数:添加步骤 0当前目录有 .aide 时不向上查找
- `aide-program/aide/flow/git.py`
- 新增 `amend` 方法:将暂存区内容追加到上一次提交
- `aide-program/aide/flow/branch.py`
- `_cleanup_task_files` 方法decisions 直接删除不备份
- `record_branch_finish` 方法:保持兼容
- 新增 `record_end_commit` 方法
- `clean_branch_merge` 方法:脏工作区时自动创建提交
- `_merge_normal` 方法:重构流程,结束提交后立即更新状态再清理
- `_merge_with_temp_branch` 方法:同步重构
- `_generate_markdown` 方法:时间格式分开显示
- `aide-program/aide/flow/tracker.py`
- 新增 `clean` 方法
- `aide-program/aide/main.py`
- 新增 `flow clean` 子命令
- 新增 `handle_flow_clean` 处理函数
---
### 改进
**收尾清理逻辑增强**
- 新增删除 `pending-items.json` 文件的清理步骤
- 新增删除流程图目录(`.aide/diagrams/`)下所有文件的清理步骤
- 支持删除 `.puml``.plantuml``.png` 文件
- 保留目录本身
### 修改的文件
- `aide-program/aide/flow/branch.py` - `_cleanup_task_files` 方法增加两个清理步骤
### 改进
**aide 命令递归查找项目根目录**
- 新增 `find_project_root()` 函数,支持从子目录运行 aide 命令
- 类似 git 查找 `.git` 目录的逻辑:从当前目录向上递归查找
- 查找策略(两遍遍历):
1. 优先查找包含 `flow-status.json` 的目录(活跃任务)
2. 其次查找包含 `config.toml` 的目录
- 解决了会话重启后工作目录变更导致任务状态"丢失"的问题
### 修改的文件
- `aide-program/aide/core/config.py` - 新增 `find_project_root()` 函数
- `aide-program/aide/main.py` - 所有 handler 函数改用 `find_project_root()` 替代 `Path.cwd()`
---
### 新增功能
**全自动任务执行命令 `/aide:auto-run`**
- 基于 `/aide:run` 的全自动化版本
- 去除所有用户交互环节:
- 待定项自动决策(选择 recommend 或最高分选项)
- 任务细则自动确认(无需用户确认)
- 跳过 confirm 阶段docs → finish
- 新增错误自动处理机制:
- 优先委托 `general-purpose` 子代理解决
- 无子代理时自行解决(需先记录并更新计划)
- 新增计划外情况处理机制:
- 必须先记录遇到的情况
- 更新任务计划文档后才能继续
- 适用场景:批量处理、后台执行、无需人工干预的任务
**用户确认阶段 (confirm)**
- 在 docs 和 finish 之间新增 `confirm` 阶段
- 用于用户审阅和测试已完成的工作
- 支持返工机制:根据问题类型返回相应阶段
- 返工前强制更新任务文档,便于上下文恢复
**复杂任务子计划文档规范**
- 新增 `task.plans_path` 配置项(默认 `.aide/task-plans/`
- 规范化文档结构:
- `guide.md` - 任务计划总导览
- `spec-01.md`, `spec-02.md`, ... - 各子计划细则
- 更新复杂任务执行模式:`task-optimize → [flow-design → impl → verify → docs → confirm] × N → finish`
- 子计划状态管理:在 guide.md 中维护状态表
### 变更
- 流程阶段更新为 7 个task-optimize → flow-design → impl → verify → docs → confirm → finish
- run.md 中"阶段 6收尾"更新为"阶段 7收尾"
- 更新 aide skill 文档,添加 confirm 环节和 task-plans 目录说明
### 修改的文件
- `aide-program/aide/core/config.py` - 添加 plans_path 配置和 confirm 阶段
- `aide-marketplace/aide-plugin/commands/run.md` - 任务细则规范、子计划执行、confirm 阶段
- `aide-marketplace/aide-plugin/skills/aide/SKILL.md` - 环节列表、数据存储、流程示例
- `.aide/config.toml` - 项目配置更新
---
## 2025-12-18 (earlier)
### 变更
**aide flow finish 流程重构**
- 简化 git 历史finish 后原分支只保留 2 个提交(起始 + 收尾)
- 收尾提交信息格式改为:`{起始哈希}的任务收尾`
- 分支记录不再保存 `end_commit`(简化数据结构)
**finish 时自动清理任务文件**
- 删除 `.aide/*.lock` 文件
- 删除任务细则文件(`task.spec` 配置路径)
- 清空任务原文件(`task.source` 配置路径,保留文件本身)
- 备份并删除 `flow-status.json``.aide/logs/{task_id}-status.json`
- 备份并删除 `decisions/*.json``.aide/logs/{task_id}-decisions/`
### 修改的文件
- `aide-program/aide/flow/branch.py` - 重构 `_merge_normal()` 方法,新增 `_cleanup_task_files()` 清理函数
- `aide-program/aide/flow/tracker.py` - 传递 `ConfigManager``BranchManager`
## 2025-12-17
### 修复
**aide flow 分支切换问题修复**
- 修复 finish 阶段分支切换时 lock 文件冲突的问题
- 修复 finish 阶段状态文件未提交导致切换失败的问题
-`BranchManager` 添加 `_cleanup_lock_file` 方法
- 调整 `FlowTracker` 中分支合并的执行顺序(先提交再合并)
- **修复 `_merge_normal` 方法使用错误的 reset_soft 逻辑,改用 merge_squash**
- 在分支合并前额外提交状态文件(解决 git_commit hash 更新后未提交的问题)
- **修复 finish 后工作目录不干净的问题:在 `record_branch_finish` 后添加收尾提交**
- **修复 `git add_all` 改用 `-A` 参数,确保删除的文件也被正确暂存**
### 新增功能
**环境安装 Commands**
- 新增 `/aide:install-win` - Windows 环境安装命令
- 新增 `/aide:install-linux` - Linux 环境安装命令
- 支持两种安装模式自动安装报告→确认→执行和手动指南markdown + 脚本)
- 自动检测并安装 uv、Pythonvia uv、Java JRE
- 包含 aide PATH 配置指导
**离线安装程序**
- 新增 `aide-program/offline-installer/windows/` - Windows 离线安装程序
- 新增 `aide-program/offline-installer/linux/` - Linux 离线安装程序
- 提供资源清单resources.json、安装脚本和使用说明
- 支持在无网络环境下安装 aide 所需的环境依赖
**aide flow 自动 Git 分支管理**
- 任务开始时自动创建 `aide/NNN` 分支(三位递增编号)
- 任务结束时自动合并并压缩提交
- 分支概况文档JSON + MD 双格式)
- 安全合并策略(检测源分支变更,必要时创建临时分支)
- 新增 `BranchManager` 类管理分支编号和概况
- 扩展 `GitIntegration` 类支持分支操作
### 变更
**command/run 流程更新**
- 智能续接判断逻辑:检查任务细则文档,判断是否符合当前任务
- 待定项处理强制执行
- 任务细则生成后强制确认(使用 AskUserQuestion
### 优化
**/aide:docs 命令强化完整性覆盖**
- 新增"完整覆盖"规则:根目录下每个非忽略的子目录都必须归入某个区块
- 新增强制完整性检查步骤:区块划分后必须验证所有顶层目录都已覆盖
- 新增非代码区块示例:展示如何处理 docs/、discuss/、assets/ 等目录
- 更新目录树生成规则:明确要求包含所有顶层目录(包括非代码目录)
- 更新完成检查清单:新增目录完整性最终检查项
- 修复了之前执行 /aide:docs 时遗漏 docs/、discuss/ 等非代码目录的问题
**/aide:docs 命令增强**(早期更新)
- 新增"完全深度探索"核心原则:不考虑效率,对每个文件/目录完全覆盖
- 新增完整目录树结构展示(类似 tree 命令输出)
- 支持混合模式:总导览使用简化版(前两层),区块文档使用完整 tree
- 新增空目录处理:记录并标注 `[空目录]`
- 新增被忽略文件处理:标注 `[ignored]`
- 新增二进制文件处理:根据上下文推断概括
- 新增文件类型列和统计信息
- 移除"单个区块不超过 5000 行代码"的限制
### 文档更新 (docs 阶段)
- 更新 commands/docs.md 命令定义
- 更新 aide-plugin-commands.md 区块文档
- 更新 CHANGELOG.md 记录变更详情
---
## 2025-12-16
### 新增功能
**新增 task-parser skill**
- 口语化任务内容解析器
- 支持语义解析、批判性分析、建设性建议
- 自动识别口语化特征并进行规范化转换
**流程图规范强化**
- 明确区分两种流程图类型:
- 任务执行流程图(所有任务必需)
- 程序逻辑流图(程序类任务必需)
- 程序逻辑流图规范:从入口函数开始,支持模块化和层次化表示
### 优化
**aide flow git 提交顺序调整**
- 状态文件先保存再执行 git 操作
- 确保 flow-status.json 的更新包含在 commit 中
### 文档
- 更新项目导览和区块文档
- 新增 task-parser skill 说明
---
## 2025-12-15 (v2.0.3)
### 文档
- 重写 README.md提供面向用户的快速上手指南
- 原 README.md 移至 `docs/project-details.md` 作为项目详细说明
## 2025-12-15 (v2.0.0)
### 新增功能
**Commands 重组**
- 新增 `/aide:setup` - 独立的环境配置命令
- 新增 `/aide:load` - 项目文档按需载入命令
- 新增 `/aide:docs` - 项目文档创建和维护命令
- 新增 `/aide:run` - 整合任务准备和执行的核心命令(替代原 prep + exec
**aide flow 增强**
- 新增 `aide flow status` - 查看当前任务状态
- 新增 `aide flow list` - 列出所有任务(当前 + 归档)
- 新增 `aide flow show <task_id>` - 查看指定任务的详细状态历史
**配置系统增强**
- 配置文件完全自文档化(所有配置项含详细注释说明)
- 新增 `[general]` 节:`gitignore_aide` 配置是否忽略 .aide 目录
- 新增 `[docs]` 节:项目文档路径配置
- 新增 `[flow]` 节:`diagram_path` 流程图目录配置
- 新增 `[plantuml]`PlantUML jar 路径配置
**PlantUML 集成**
- 内置 plantuml.jar支持本地流程图校验和构建
- flow-design 阶段自动校验 PlantUML 语法
- 进入 impl 阶段时自动生成 PNG 图片
**项目文档体系**
- 设计面向 LLM 的区块化文档结构
- 支持总导览 + 多子区块的文档组织
- 支持增量更新和多对话续接
**任务分析增强**
- 制定任务复杂度评估指导原则
- 支持复杂任务拆分为多个子计划
- 子计划循环执行机制
### 变更
-`/aide:init` 重命名为 `/aide:setup`
-`/aide:prep``/aide:exec` 合并为 `/aide:run`
- 旧命令文件保留为 `_deprecated_*.md` 供参考
## 2025-12-14
- 实现 `aide flow`(进度追踪 + Git 自动提交 + 流程校验 + Hooks
- 补充 `aide flow` 详细设计文档与导航链路