Compare commits

...

35 Commits

Author SHA1 Message Date
4a0759e36c 完成:aide/025 - 分析和优化 user-docs/user-graph 的分步执行能力 2025-12-19 06:06:51 +08:00
37c434b92a [aide] 保存未提交的变更 2025-12-19 05:41:57 +08:00
114c0df380 完成:aide/024 - 优化 finish 后提交信息中的任务名格式 2025-12-19 05:39:19 +08:00
5942bd2d6c [aide] 保存未提交的变更 2025-12-19 05:31:03 +08:00
d2161690a1 完成:aide/023 - 开始任务准备: 为 user-docs 添加分步执行和接续执行能力 2025-12-19 05:17:07 +08:00
d2842d46db [aide] 保存未提交的变更 2025-12-19 05:00:29 +08:00
3313dc1fb8 完成:aide/022 - 开始任务准备: 调整 aide 体系的 finish 清理、提交信息和 decide 界面 2025-12-19 04:50:05 +08:00
af40327146 [aide] 保存未提交的变更 2025-12-19 04:37:00 +08:00
66a0782c73 af6605e的任务收尾 2025-12-19 04:25:16 +08:00
af6605e5b9 [aide] 保存未提交的变更 2025-12-19 04:09:25 +08:00
bd5719febb [aide] finish: 清理遗留的任务计划文件 2025-12-19 04:00:47 +08:00
4cf9fc7a60 3de9101的任务收尾 2025-12-19 03:58:34 +08:00
3de9101705 [aide] 保存未提交的变更 2025-12-19 03:01:27 +08:00
5a29146c32 93d1b21的任务收尾 2025-12-19 02:30:45 +08:00
93d1b21bb8 [aide] 保存未提交的变更 2025-12-19 00:40:02 +08:00
0079bd5cd4 📃 docs: 暂存 2025-12-18 22:52:53 +08:00
575b07e9e5 7148487的强制清理 2025-12-18 20:33:37 +08:00
714848745d [aide] 保存未提交的变更 2025-12-18 18:38:48 +08:00
b1c422ad7b f4a82c9的任务收尾 2025-12-18 18:18:43 +08:00
f4a82c96ee [aide] 保存未提交的变更 2025-12-18 14:09:44 +08:00
e808201ec3 645a30c的任务收尾 2025-12-18 13:58:35 +08:00
645a30cace [aide] 保存未提交的变更 2025-12-18 13:29:05 +08:00
2ba61695d0 80ebbd4的任务收尾 2025-12-18 12:50:59 +08:00
80ebbd4d85 [aide] 保存未提交的变更 2025-12-18 12:14:13 +08:00
5a2f50d13b d2882c9的任务收尾 2025-12-18 11:53:15 +08:00
d2882c9b99 📃 docs: 文档更新 2025-12-18 11:46:20 +08:00
83a63046b5 f4b9620的任务收尾 2025-12-18 11:22:54 +08:00
f4b96202d0 [aide] 保存未提交的变更 2025-12-18 10:41:43 +08:00
3f2bff5ac0 [aide] task-optimize: 从 git 历史中移除 .lock 文件跟踪 2025-12-18 10:12:35 +08:00
f3de256fa3 [aide] task-optimize: 修复已实现:git add_all 方法排除 .lock 文件 2025-12-18 10:11:18 +08:00
9d4f6b8a22 [aide] task-optimize: 问题定位完成:finish 环节在锁内执行 git add,导致 .lock 文件被提交 2025-12-18 10:10:40 +08:00
dcf9eb38cf [aide] task-optimize: 开始任务准备: 修复 aide finish 后 .lock 文件残留问题 2025-12-18 10:09:00 +08:00
c6f45f9e36 [aide] 保存未提交的变更 2025-12-18 10:09:00 +08:00
d84a63cb9e [aide] 收尾: 更新分支记录 2025-12-18 10:03:52 +08:00
8ea9ce7295 [aide] 任务: test 2025-12-18 10:03:52 +08:00
93 changed files with 7845 additions and 3447 deletions

View File

@@ -1,5 +1,5 @@
{ {
"next_number": 11, "next_number": 26,
"branches": [ "branches": [
{ {
"number": 1, "number": 1,
@@ -116,6 +116,184 @@
"status": "finished", "status": "finished",
"end_commit": "2034962ecea461c8768d1cc422745ae7a293a3bc", "end_commit": "2034962ecea461c8768d1cc422745ae7a293a3bc",
"finished_at": "2025-12-17T06:35:03+08:00" "finished_at": "2025-12-17T06:35:03+08:00"
},
{
"number": 11,
"branch_name": "aide/011",
"source_branch": "master",
"start_commit": "2042238b5cda7a12cff417eeb4f9f11b7714d91d",
"task_id": "2025-12-18T10-03-32",
"task_summary": "测试",
"started_at": "2025-12-18T10:03:33+08:00",
"status": "finished",
"end_commit": "8ea9ce72954b3c2ed7417679996852cf0dfb18cb",
"finished_at": "2025-12-18T10:03:52+08:00"
},
{
"number": 12,
"branch_name": "aide/012",
"source_branch": "master",
"start_commit": "c6f45f9e36ad877b413c12c67a463d8b0c862dbc",
"task_id": "2025-12-18T10-09-00",
"task_summary": "开始任务准备: 修复 aide finish 后 .lock 文件残留问题",
"started_at": "2025-12-18T10:09:00+08:00",
"status": "active"
},
{
"number": 13,
"branch_name": "aide/013",
"source_branch": "aide/012",
"start_commit": "f4b96202d0d4407407e9291f74dd74af3b1067a9",
"task_id": "2025-12-18T10-41-43",
"task_summary": "开始任务准备: 改进 aide flow 的 git 工作流",
"started_at": "2025-12-18T10:41:43+08:00",
"status": "finished",
"end_commit": "f4b96202d0d4407407e9291f74dd74af3b1067a9",
"finished_at": "2025-12-18T11:22:54+08:00"
},
{
"number": 14,
"branch_name": "aide/014",
"source_branch": "master",
"start_commit": "d2882c9b995ee686fac48e183191848d6071c995",
"task_id": "2025-12-18T11-53-13",
"task_summary": "测试",
"started_at": "2025-12-18T11:53:13+08:00",
"status": "finished",
"end_commit": "d2882c9b995ee686fac48e183191848d6071c995",
"finished_at": "2025-12-18T11:53:15+08:00"
},
{
"number": 15,
"branch_name": "aide/015",
"source_branch": "master",
"start_commit": "80ebbd4d85aaa8b3408cd83c35627c972057beda",
"task_id": "2025-12-18T12-14-13",
"task_summary": "开始任务准备: 调整 Aide 工作流流程",
"started_at": "2025-12-18T12:14:13+08:00",
"status": "finished",
"end_commit": "80ebbd4d85aaa8b3408cd83c35627c972057beda",
"finished_at": "2025-12-18T12:50:59+08:00"
},
{
"number": 16,
"branch_name": "aide/016",
"source_branch": "master",
"start_commit": "645a30cace5e7653c19c60fa1f23c22d1db73d34",
"task_id": "2025-12-18T13-29-05",
"task_summary": "开始任务准备: 构建 auto-run 全自动任务执行命令",
"started_at": "2025-12-18T13:29:05+08:00",
"status": "finished",
"end_commit": "645a30cace5e7653c19c60fa1f23c22d1db73d34",
"finished_at": "2025-12-18T13:58:35+08:00"
},
{
"number": 17,
"branch_name": "aide/017",
"source_branch": "master",
"start_commit": "f4a82c96eec49822c39da4f68c87351fe527b0fe",
"task_id": "2025-12-18T14-09-44",
"task_summary": "开始任务准备: 调整aide收尾清理逻辑",
"started_at": "2025-12-18T14:09:44+08:00",
"status": "finished",
"end_commit": "f4a82c96eec49822c39da4f68c87351fe527b0fe",
"finished_at": "2025-12-18T18:18:43+08:00"
},
{
"number": 18,
"branch_name": "aide/018",
"source_branch": "master",
"start_commit": "714848745d2e443ff4ee1d907b3e3df0b5e65dc4",
"task_id": "2025-12-18T18-38-48",
"task_summary": "开始任务准备: aide flow clean 指令与分支概况文档分析",
"started_at": "2025-12-18T18:38:48+08:00",
"status": "force-cleaned",
"end_commit": "19aa94e2e2e084b1c72b8b9e55d565948b8ac19d",
"finished_at": "2025-12-18T20:33:37+08:00"
},
{
"number": 19,
"branch_name": "aide/019",
"source_branch": "master",
"start_commit": "93d1b21bb8497d75ac7ee36422a4b4214b517bb7",
"task_id": "2025-12-19T00-40-02",
"task_summary": "开始任务准备: Aide 体系多项调整任务",
"started_at": "2025-12-19T00:40:02+08:00",
"status": "finished",
"end_commit": "de4a3a63975faf59c89a28c2e29c1ac58a48789b",
"finished_at": "2025-12-19T02:30:45+08:00"
},
{
"number": 20,
"branch_name": "aide/020",
"source_branch": "master",
"start_commit": "3de91017057046f93c9d2a52300a83314e1f7e58",
"task_id": "2025-12-19T03-01-27",
"task_summary": "开始任务准备: 调整 commands/skills/aide-program 体系",
"started_at": "2025-12-19T03:01:27+08:00",
"status": "finished",
"end_commit": "3ed7848bd721f2c7f5fb7b247259c5c3a201ded6",
"finished_at": "2025-12-19T03:58:34+08:00"
},
{
"number": 21,
"branch_name": "aide/021",
"source_branch": "master",
"start_commit": "af6605e5b98073727129e613cc5d37e27dc300f8",
"task_id": "2025-12-19T04-09-25",
"task_summary": "开始任务准备: 将任务计划文件清理功能从 command/run 迁移到 aide",
"started_at": "2025-12-19T04:09:25+08:00",
"status": "finished",
"end_commit": "d93eecca44169cf88d0d1397dcf80e507487d1c0",
"finished_at": "2025-12-19T04:25:16+08:00"
},
{
"number": 22,
"branch_name": "aide/022",
"source_branch": "master",
"start_commit": "af40327146d6be0781bb8f9ccdcaf8b2ce216455",
"task_id": "2025-12-19T04-37-00",
"task_summary": "开始任务准备: 调整 aide 体系的 finish 清理、提交信息和 decide 界面",
"started_at": "2025-12-19T04:37:00+08:00",
"status": "finished",
"end_commit": "76026e4b62996b667b2f788a2cf6e34cc79cebfb",
"finished_at": "2025-12-19T04:50:04+08:00"
},
{
"number": 23,
"branch_name": "aide/023",
"source_branch": "master",
"start_commit": "d2842d46dbef9b7fe9f85749a9d2c8feae4ee528",
"task_id": "2025-12-19T05-00-29",
"task_summary": "开始任务准备: 为 user-docs 添加分步执行和接续执行能力",
"started_at": "2025-12-19T05:00:29+08:00",
"status": "finished",
"end_commit": "91c9bca5d5356e7c06d018fab0138152ab96c56a",
"finished_at": "2025-12-19T05:17:07+08:00"
},
{
"number": 24,
"branch_name": "aide/024",
"source_branch": "master",
"start_commit": "5942bd2d6c906d57574aba6a4bff52f6ae649604",
"task_id": "2025-12-19T05-31-03",
"task_summary": "开始任务准备: 优化 finish 后提交信息中的任务名格式",
"started_at": "2025-12-19T05:31:03+08:00",
"status": "finished",
"end_commit": "4fdf7664c19b276336970421e1788a27c19815d7",
"finished_at": "2025-12-19T05:39:19+08:00"
},
{
"number": 25,
"branch_name": "aide/025",
"source_branch": "master",
"start_commit": "37c434b92ad2c8a7d0533ee2070e7ac36d232b6d",
"task_id": "2025-12-19T05-41-57",
"task_summary": "开始任务准备: 分析和优化 user-docs/user-graph 的分步执行能力",
"started_at": "2025-12-19T05:41:57+08:00",
"status": "finished",
"end_commit": "cb7e960a28a46b615b34ffc1dc4e74cc22e50584",
"finished_at": "2025-12-19T06:06:51+08:00"
} }
] ]
} }

View File

@@ -1,5 +1,168 @@
# Git 分支概况 # Git 分支概况
## aide/025
- **任务**: 开始任务准备: 分析和优化 user-docs/user-graph 的分步执行能力
- **任务ID**: 2025-12-19T05-41-57
- **源分支**: master
- **起始提交**: 37c434b
- **结束提交**: cb7e960
- **状态**: finished
- **起始时间**: 2025-12-19 05:41
- **结束时间**: 2025-12-19 06:06
## aide/024
- **任务**: 开始任务准备: 优化 finish 后提交信息中的任务名格式
- **任务ID**: 2025-12-19T05-31-03
- **源分支**: master
- **起始提交**: 5942bd2
- **结束提交**: 4fdf766
- **状态**: finished
- **起始时间**: 2025-12-19 05:31
- **结束时间**: 2025-12-19 05:39
## aide/023
- **任务**: 开始任务准备: 为 user-docs 添加分步执行和接续执行能力
- **任务ID**: 2025-12-19T05-00-29
- **源分支**: master
- **起始提交**: d2842d4
- **结束提交**: 91c9bca
- **状态**: finished
- **起始时间**: 2025-12-19 05:00
- **结束时间**: 2025-12-19 05:17
## aide/022
- **任务**: 开始任务准备: 调整 aide 体系的 finish 清理、提交信息和 decide 界面
- **任务ID**: 2025-12-19T04-37-00
- **源分支**: master
- **起始提交**: af40327
- **结束提交**: 76026e4
- **状态**: finished
- **起始时间**: 2025-12-19 04:37
- **结束时间**: 2025-12-19 04:50
## aide/021
- **任务**: 开始任务准备: 将任务计划文件清理功能从 command/run 迁移到 aide
- **任务ID**: 2025-12-19T04-09-25
- **源分支**: master
- **起始提交**: af6605e
- **结束提交**: d93eecc
- **状态**: finished
- **起始时间**: 2025-12-19 04:09
- **结束时间**: 2025-12-19 04:25
## aide/020
- **任务**: 开始任务准备: 调整 commands/skills/aide-program 体系
- **任务ID**: 2025-12-19T03-01-27
- **源分支**: master
- **起始提交**: 3de9101
- **结束提交**: 3ed7848
- **状态**: finished
- **起始时间**: 2025-12-19 03:01
- **结束时间**: 2025-12-19 03:58
## aide/019
- **任务**: 开始任务准备: Aide 体系多项调整任务
- **任务ID**: 2025-12-19T00-40-02
- **源分支**: master
- **起始提交**: 93d1b21
- **结束提交**: de4a3a6
- **状态**: finished
- **起始时间**: 2025-12-19 00:40
- **结束时间**: 2025-12-19 02:30
## aide/018
- **任务**: 开始任务准备: aide flow clean 指令与分支概况文档分析
- **任务ID**: 2025-12-18T18-38-48
- **源分支**: master
- **起始提交**: 7148487
- **结束提交**: 19aa94e
- **状态**: force-cleaned
- **起始时间**: 2025-12-18 18:38
- **结束时间**: 2025-12-18 20:33
## aide/017
- **任务**: 开始任务准备: 调整aide收尾清理逻辑
- **任务ID**: 2025-12-18T14-09-44
- **源分支**: master
- **起始提交**: f4a82c9
- **结束提交**: f4a82c9
- **状态**: finished
- **起始时间**: 2025-12-18 14:09
- **结束时间**: 2025-12-18 18:18
## aide/016
- **任务**: 开始任务准备: 构建 auto-run 全自动任务执行命令
- **任务ID**: 2025-12-18T13-29-05
- **源分支**: master
- **起始提交**: 645a30c
- **结束提交**: 645a30c
- **状态**: finished
- **起始时间**: 2025-12-18 13:29
- **结束时间**: 2025-12-18 13:58
## aide/015
- **任务**: 开始任务准备: 调整 Aide 工作流流程
- **任务ID**: 2025-12-18T12-14-13
- **源分支**: master
- **起始提交**: 80ebbd4
- **结束提交**: 80ebbd4
- **状态**: finished
- **起始时间**: 2025-12-18 12:14
- **结束时间**: 2025-12-18 12:50
## aide/014
- **任务**: 测试
- **任务ID**: 2025-12-18T11-53-13
- **源分支**: master
- **起始提交**: d2882c9
- **结束提交**: d2882c9
- **状态**: finished
- **起始时间**: 2025-12-18 11:53
- **结束时间**: 2025-12-18 11:53
## aide/013
- **任务**: 开始任务准备: 改进 aide flow 的 git 工作流
- **任务ID**: 2025-12-18T10-41-43
- **源分支**: aide/012
- **起始提交**: f4b9620
- **结束提交**: f4b9620
- **状态**: finished
- **起始时间**: 2025-12-18 10:41
- **结束时间**: 2025-12-18 11:22
## aide/012
- **任务**: 开始任务准备: 修复 aide finish 后 .lock 文件残留问题
- **任务ID**: 2025-12-18T10-09-00
- **源分支**: master
- **起始提交**: c6f45f9
- **状态**: active
- **起始时间**: 2025-12-18 10:09
## aide/011
- **任务**: 测试
- **任务ID**: 2025-12-18T10-03-32
- **源分支**: master
- **起始提交**: 2042238
- **结束提交**: 8ea9ce7
- **状态**: finished
- **起始时间**: 2025-12-18 10:03
- **结束时间**: 2025-12-18 10:03
## aide/010 ## aide/010
- **任务**: 测试 - **任务**: 测试
@@ -8,7 +171,8 @@
- **起始提交**: c8d20db - **起始提交**: c8d20db
- **结束提交**: 2034962 - **结束提交**: 2034962
- **状态**: finished - **状态**: finished
- **时间**: 2025-12-17 06:34 ~ 06:35 - **起始时间**: 2025-12-17 06:34
- **结束时间**: 2025-12-17 06:35
## aide/009 ## aide/009
@@ -18,7 +182,8 @@
- **起始提交**: 6305f61 - **起始提交**: 6305f61
- **结束提交**: d705a73 - **结束提交**: d705a73
- **状态**: finished - **状态**: finished
- **时间**: 2025-12-17 06:31 ~ 06:32 - **起始时间**: 2025-12-17 06:31
- **结束时间**: 2025-12-17 06:32
## aide/008 ## aide/008
@@ -28,7 +193,8 @@
- **起始提交**: c685c31 - **起始提交**: c685c31
- **结束提交**: 92eb2ba - **结束提交**: 92eb2ba
- **状态**: finished - **状态**: finished
- **时间**: 2025-12-17 06:27 ~ 06:28 - **起始时间**: 2025-12-17 06:27
- **结束时间**: 2025-12-17 06:28
## aide/007 ## aide/007
@@ -38,7 +204,8 @@
- **起始提交**: 8d4cae6 - **起始提交**: 8d4cae6
- **结束提交**: 346ec90 - **结束提交**: 346ec90
- **状态**: finished - **状态**: finished
- **时间**: 2025-12-17 06:07 ~ 06:07 - **起始时间**: 2025-12-17 06:07
- **结束时间**: 2025-12-17 06:07
## aide/006 ## aide/006
@@ -48,7 +215,8 @@
- **起始提交**: 2b0c007 - **起始提交**: 2b0c007
- **结束提交**: d60f0ba - **结束提交**: d60f0ba
- **状态**: finished - **状态**: finished
- **时间**: 2025-12-17 06:03 ~ 06:05 - **起始时间**: 2025-12-17 06:03
- **结束时间**: 2025-12-17 06:05
## aide/005 ## aide/005
@@ -58,7 +226,8 @@
- **起始提交**: a1d7263 - **起始提交**: a1d7263
- **结束提交**: b2f922b - **结束提交**: b2f922b
- **状态**: finished - **状态**: finished
- **时间**: 2025-12-17 06:00 ~ 06:02 - **起始时间**: 2025-12-17 06:00
- **结束时间**: 2025-12-17 06:02
## aide/004 ## aide/004
@@ -68,7 +237,8 @@
- **起始提交**: 6179833 - **起始提交**: 6179833
- **结束提交**: 6179833 - **结束提交**: 6179833
- **状态**: finished - **状态**: finished
- **时间**: 2025-12-17 05:54 ~ 05:55 - **起始时间**: 2025-12-17 05:54
- **结束时间**: 2025-12-17 05:55
## aide/003 ## aide/003
@@ -78,7 +248,8 @@
- **起始提交**: aa067fc - **起始提交**: aa067fc
- **结束提交**: aa067fc - **结束提交**: aa067fc
- **状态**: finished - **状态**: finished
- **时间**: 2025-12-17 05:42 ~ 05:48 - **起始时间**: 2025-12-17 05:42
- **结束时间**: 2025-12-17 05:48
## aide/002 ## aide/002
@@ -87,7 +258,7 @@
- **源分支**: master - **源分支**: master
- **起始提交**: be25738 - **起始提交**: be25738
- **状态**: active - **状态**: active
- **时间**: 2025-12-17 05:33 - **起始时间**: 2025-12-17 05:33
## aide/001 ## aide/001
@@ -96,4 +267,4 @@
- **源分支**: master - **源分支**: master
- **起始提交**: bd72362 - **起始提交**: bd72362
- **状态**: active - **状态**: active
- **时间**: 2025-12-17 04:54 - **起始时间**: 2025-12-17 04:54

View File

@@ -56,6 +56,12 @@ source = "task-now.md"
# /aide:exec 命令在未指定参数时读取此文件 # /aide:exec 命令在未指定参数时读取此文件
spec = "task-spec.md" spec = "task-spec.md"
# 复杂任务计划文档目录
# 当任务被拆分为多个子计划时,存放:
# - guide.md: 任务计划总导览
# - spec-01.md, spec-02.md, ...: 各子计划细则
plans_path = ".aide/task-plans/"
################################################################################ ################################################################################
# [env] - 环境检测配置 # [env] - 环境检测配置
################################################################################ ################################################################################
@@ -168,8 +174,9 @@ block_plan_path = ".aide/project-docs/block-plan.md"
# impl - 迭代实现 # impl - 迭代实现
# verify - 验证交付 # verify - 验证交付
# docs - 文档更新 # docs - 文档更新
# confirm - 用户确认(审阅与返工)
# finish - 收尾 # finish - 收尾
phases = ["task-optimize", "flow-design", "impl", "verify", "docs", "finish"] phases = ["task-optimize", "flow-design", "impl", "verify", "docs", "confirm", "finish"]
# 流程图目录路径 # 流程图目录路径
# 存放 PlantUML 源文件(.puml和生成的图片.png # 存放 PlantUML 源文件(.puml和生成的图片.png
@@ -186,6 +193,9 @@ diagram_path = ".aide/diagrams"
# 支持绝对路径或相对于 aide-program 目录的相对路径 # 支持绝对路径或相对于 aide-program 目录的相对路径
# 默认使用 aide-program/lib/plantuml.jar # 默认使用 aide-program/lib/plantuml.jar
jar_path = "lib/plantuml.jar" jar_path = "lib/plantuml.jar"
font_name = "PingFang SC"
dpi = 300
scale = 0.5
# Java 命令路径(可选) # Java 命令路径(可选)
# 默认使用系统 PATH 中的 java # 默认使用系统 PATH 中的 java

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

View File

@@ -1,48 +0,0 @@
@startuml task-flow
!theme plain
skinparam backgroundColor #FFFFFF
skinparam activityBackgroundColor #F5F5F5
skinparam activityBorderColor #333333
title 任务执行流程图 - 多模块调整
|#LightBlue|子计划1: 创建 skill|
start
:读取 statements/optimize.md;
:分析并扩展内容;
:创建 task-parser.md;
:验证 skill 结构完整性;
|#LightGreen|子计划2: 修改 run 命令|
:阅读现有 run.md;
:设计口语化检测逻辑;
:添加 skill 触发规则;
:更新命令文档;
|#LightYellow|子计划3: 强化流程图规范|
:定义两种流程图类型;
:编写任务执行流程图规范;
:编写程序逻辑流图规范;
:更新 run.md 流程设计部分;
|#LightCoral|子计划4: 创建示例程序|
:设计 Python 程序结构;
:创建 test-cache/demo-program/;
:实现模块化程序;
:绘制程序逻辑流图;
:验证流程图规范有效性;
|#LightCyan|子计划5: 调整 git 提交顺序|
:分析 tracker.py 当前逻辑;
:重构 _apply_action 方法;
:确保状态先保存再提交;
:测试验证;
|#Lavender|子计划6: 更新文档|
:更新 aide-plugin-skills.md;
:更新 aide-plugin-commands.md;
:更新 aide-program-flow.md;
:检查其他相关文档;
stop
@enduml

View File

@@ -1 +0,0 @@
483763

View File

@@ -0,0 +1,107 @@
{
"task_id": "2025-12-18T10-41-43",
"current_phase": "finish",
"current_step": 12,
"started_at": "2025-12-18T10:41:43+08:00",
"history": [
{
"timestamp": "2025-12-18T10:41:43+08:00",
"action": "start",
"phase": "task-optimize",
"step": 1,
"summary": "开始任务准备: 改进 aide flow 的 git 工作流",
"git_commit": "68db39fd46d28a8a22d4b8a3494d74be0fdcae47"
},
{
"timestamp": "2025-12-18T11:09:10+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 2,
"summary": "任务细则已确认",
"git_commit": "39477a4bdc09a9303d97239d1451aed22ae5739b"
},
{
"timestamp": "2025-12-18T11:09:24+08:00",
"action": "next-part",
"phase": "flow-design",
"step": 3,
"summary": "进入流程设计环节",
"git_commit": "88ae24d4a158fa17c5fd7f3cf38cf234718ef65d"
},
{
"timestamp": "2025-12-18T11:11:04+08:00",
"action": "next-step",
"phase": "flow-design",
"step": 4,
"summary": "流程图设计完成",
"git_commit": "100a1339821494213fd33272e83d4a063ed01295"
},
{
"timestamp": "2025-12-18T11:11:54+08:00",
"action": "next-part",
"phase": "impl",
"step": 5,
"summary": "流程设计完成,进入实现环节",
"git_commit": "6c2304e92cd353dd111b51082241c176a194c208"
},
{
"timestamp": "2025-12-18T11:15:53+08:00",
"action": "next-step",
"phase": "impl",
"step": 6,
"summary": "完成 branch.py 和 tracker.py 修改",
"git_commit": "5397a4f6007baca020549ef66f9945176b06513f"
},
{
"timestamp": "2025-12-18T11:18:38+08:00",
"action": "next-step",
"phase": "impl",
"step": 7,
"summary": "修复收尾提交逻辑,确保最终只有 2 个提交",
"git_commit": "59efe233b2e7976e674b39ed37739ae8ef59c162"
},
{
"timestamp": "2025-12-18T11:19:03+08:00",
"action": "next-part",
"phase": "verify",
"step": 8,
"summary": "实现完成,进入验证环节",
"git_commit": "fc347f6bd3a886a7558729d98acb124c0aa7c1c0"
},
{
"timestamp": "2025-12-18T11:20:24+08:00",
"action": "next-step",
"phase": "verify",
"step": 9,
"summary": "验证完成: 所有成功标准均已满足",
"git_commit": "f9bed1d6af0dfe2514756204045b8a51e59983f7"
},
{
"timestamp": "2025-12-18T11:20:50+08:00",
"action": "next-part",
"phase": "docs",
"step": 10,
"summary": "验证通过,进入文档环节",
"git_commit": "dee577df67aac98d65088cfa4243d9c37260812c"
},
{
"timestamp": "2025-12-18T11:22:42+08:00",
"action": "next-step",
"phase": "docs",
"step": 11,
"summary": "文档更新完成CHANGELOG.md 已更新",
"git_commit": "c7d44fc3d7b4fe1465cbd0ab20dade20cfe7de49"
},
{
"timestamp": "2025-12-18T11:22:53+08:00",
"action": "next-part",
"phase": "finish",
"step": 12,
"summary": "文档更新完成,进入收尾",
"git_commit": "41ccaa0b50054a28f543737e1eb33a9559c8b180"
}
],
"source_branch": "aide/012",
"start_commit": "f4b96202d0d4407407e9291f74dd74af3b1067a9",
"task_branch": "aide/013"
}

View File

@@ -0,0 +1,59 @@
{
"task_id": "2025-12-18T11-53-13",
"current_phase": "finish",
"current_step": 6,
"started_at": "2025-12-18T11:53:13+08:00",
"history": [
{
"timestamp": "2025-12-18T11:53:13+08:00",
"action": "start",
"phase": "task-optimize",
"step": 1,
"summary": "测试",
"git_commit": "d6432d63f5b01e805eb8ea772bd4148f6c730bd4"
},
{
"timestamp": "2025-12-18T11:53:13+08:00",
"action": "next-part",
"phase": "flow-design",
"step": 2,
"summary": "test",
"git_commit": "d34f41004d713669057eaf4cc3cd09b16df2d266"
},
{
"timestamp": "2025-12-18T11:53:15+08:00",
"action": "next-part",
"phase": "impl",
"step": 3,
"summary": "test",
"git_commit": "3bbf655fa31919998ca0bb98c6e3c2a4739a7950"
},
{
"timestamp": "2025-12-18T11:53:15+08:00",
"action": "next-part",
"phase": "verify",
"step": 4,
"summary": "test",
"git_commit": "904529154e15593eb79620e52c052383eaa61d1d"
},
{
"timestamp": "2025-12-18T11:53:15+08:00",
"action": "next-part",
"phase": "docs",
"step": 5,
"summary": "test",
"git_commit": "aca63d17a582126016931576b950825a587cdb7c"
},
{
"timestamp": "2025-12-18T11:53:15+08:00",
"action": "next-part",
"phase": "finish",
"step": 6,
"summary": "test",
"git_commit": "4f103af9d3ea9094fcf3ce92d5ff2564e009a231"
}
],
"source_branch": "master",
"start_commit": "d2882c9b995ee686fac48e183191848d6071c995",
"task_branch": "aide/014"
}

View File

@@ -0,0 +1,174 @@
{
"input": {
"task": "调整 Aide 工作流流程",
"source": "task-now.md",
"items": [
{
"id": 1,
"title": "新阶段命名",
"options": [
{
"value": "review",
"label": "review",
"score": 90.0,
"pros": [
"语义清晰,表示审阅",
"简洁常用"
],
"cons": [
"与 code review 可能混淆"
]
},
{
"value": "confirm",
"label": "confirm",
"score": 85.0,
"pros": [
"明确表示确认动作",
"与任务流程含义一致"
],
"cons": [
"较长"
]
},
{
"value": "approve",
"label": "approve",
"score": 75.0,
"pros": [
"表示批准/通过",
"正式感强"
],
"cons": [
"较正式,可能过于严肃"
]
}
],
"location": {
"file": "task-now.md",
"start": 3,
"end": 9
},
"context": "需要在 docs 和 finish 之间插入一个用户确认阶段。当前 flow phases 为: task-optimize, flow-design, impl, verify, docs, finish。新阶段需要一个简洁且语义明确的英文名称。",
"recommend": "review"
},
{
"id": 2,
"title": "复杂任务文档存储位置",
"options": [
{
"value": "aide_dir",
"label": ".aide/task-plans/",
"score": 90.0,
"pros": [
"与现有 .aide/ 结构一致",
"集中管理",
"自动被 gitignore"
],
"cons": [
"路径较深"
]
},
{
"value": "root_dir",
"label": "项目根目录",
"score": 60.0,
"pros": [
"访问方便"
],
"cons": [
"污染根目录",
"需要手动 gitignore"
]
},
{
"value": "spec_alongside",
"label": "与 task.spec 同目录",
"score": 75.0,
"pros": [
"与现有细则位置一致"
],
"cons": [
"需要额外的命名规范"
]
}
],
"location": {
"file": "task-now.md",
"start": 27,
"end": 28
},
"context": "复杂任务需要生成任务计划总导览和多个子计划细则,每个都是独立文档。需要确定这些文档的存储位置。",
"recommend": "aide_dir"
},
{
"id": 3,
"title": "子计划文档命名规范",
"options": [
{
"value": "numbered",
"label": "数字编号: spec-01.md, spec-02.md",
"score": 85.0,
"pros": [
"简洁",
"顺序清晰"
],
"cons": [
"无语义信息"
]
},
{
"value": "named",
"label": "语义命名: spec-login.md, spec-payment.md",
"score": 80.0,
"pros": [
"语义清晰",
"易于识别"
],
"cons": [
"命名需要额外考虑",
"可能重名"
]
},
{
"value": "hybrid",
"label": "混合: spec-01-login.md, spec-02-payment.md",
"score": 90.0,
"pros": [
"兼顾顺序和语义",
"易于排序和识别"
],
"cons": [
"命名较长"
]
}
],
"location": {
"file": "task-now.md",
"start": 27,
"end": 28
},
"context": "每个子计划需要独立的细则文档,需要确定命名规范以便识别和管理。",
"recommend": "hybrid"
}
]
},
"output": {
"decisions": [
{
"id": 1,
"chosen": "confirm"
},
{
"id": 2,
"chosen": "aide_dir",
"note": "需要跟source spec一样在环境配置中设置使用时通过aide获取配置的路径默认配置值为.aide/task-plans/"
},
{
"id": 3,
"chosen": "numbered"
}
]
},
"completed_at": "2025-12-18T12:21:10+08:00"
}

View File

@@ -0,0 +1,158 @@
{
"task": "调整 Aide 工作流流程",
"source": "task-now.md",
"items": [
{
"id": 1,
"title": "新阶段命名",
"options": [
{
"value": "review",
"label": "review",
"score": 90.0,
"pros": [
"语义清晰,表示审阅",
"简洁常用"
],
"cons": [
"与 code review 可能混淆"
]
},
{
"value": "confirm",
"label": "confirm",
"score": 85.0,
"pros": [
"明确表示确认动作",
"与任务流程含义一致"
],
"cons": [
"较长"
]
},
{
"value": "approve",
"label": "approve",
"score": 75.0,
"pros": [
"表示批准/通过",
"正式感强"
],
"cons": [
"较正式,可能过于严肃"
]
}
],
"location": {
"file": "task-now.md",
"start": 3,
"end": 9
},
"context": "需要在 docs 和 finish 之间插入一个用户确认阶段。当前 flow phases 为: task-optimize, flow-design, impl, verify, docs, finish。新阶段需要一个简洁且语义明确的英文名称。",
"recommend": "review"
},
{
"id": 2,
"title": "复杂任务文档存储位置",
"options": [
{
"value": "aide_dir",
"label": ".aide/task-plans/",
"score": 90.0,
"pros": [
"与现有 .aide/ 结构一致",
"集中管理",
"自动被 gitignore"
],
"cons": [
"路径较深"
]
},
{
"value": "root_dir",
"label": "项目根目录",
"score": 60.0,
"pros": [
"访问方便"
],
"cons": [
"污染根目录",
"需要手动 gitignore"
]
},
{
"value": "spec_alongside",
"label": "与 task.spec 同目录",
"score": 75.0,
"pros": [
"与现有细则位置一致"
],
"cons": [
"需要额外的命名规范"
]
}
],
"location": {
"file": "task-now.md",
"start": 27,
"end": 28
},
"context": "复杂任务需要生成任务计划总导览和多个子计划细则,每个都是独立文档。需要确定这些文档的存储位置。",
"recommend": "aide_dir"
},
{
"id": 3,
"title": "子计划文档命名规范",
"options": [
{
"value": "numbered",
"label": "数字编号: spec-01.md, spec-02.md",
"score": 85.0,
"pros": [
"简洁",
"顺序清晰"
],
"cons": [
"无语义信息"
]
},
{
"value": "named",
"label": "语义命名: spec-login.md, spec-payment.md",
"score": 80.0,
"pros": [
"语义清晰",
"易于识别"
],
"cons": [
"命名需要额外考虑",
"可能重名"
]
},
{
"value": "hybrid",
"label": "混合: spec-01-login.md, spec-02-payment.md",
"score": 90.0,
"pros": [
"兼顾顺序和语义",
"易于排序和识别"
],
"cons": [
"命名较长"
]
}
],
"location": {
"file": "task-now.md",
"start": 27,
"end": 28
},
"context": "每个子计划需要独立的细则文档,需要确定命名规范以便识别和管理。",
"recommend": "hybrid"
}
],
"_meta": {
"created_at": "2025-12-18T12:18:01+08:00",
"session_id": "2025-12-18T12-18-01"
}
}

View File

@@ -0,0 +1,139 @@
{
"task_id": "2025-12-18T12-14-13",
"current_phase": "finish",
"current_step": 16,
"started_at": "2025-12-18T12:14:13+08:00",
"history": [
{
"timestamp": "2025-12-18T12:14:13+08:00",
"action": "start",
"phase": "task-optimize",
"step": 1,
"summary": "开始任务准备: 调整 Aide 工作流流程",
"git_commit": "3ad14cbd896ab9955dba3bb0bdb0999ffdca83e4"
},
{
"timestamp": "2025-12-18T12:21:59+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 2,
"summary": "用户完成待定项确认",
"git_commit": "1d8daf1a267a7e3260e45332b26c2760a5b19919"
},
{
"timestamp": "2025-12-18T12:30:51+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 3,
"summary": "任务细则已确认",
"git_commit": "a3624f0994278ad348148431dacc73d97b597762"
},
{
"timestamp": "2025-12-18T12:31:12+08:00",
"action": "next-part",
"phase": "flow-design",
"step": 4,
"summary": "进入流程设计环节",
"git_commit": "2e8e756908c5fe151bee21c2e8e1c86bbb1425f4"
},
{
"timestamp": "2025-12-18T12:32:26+08:00",
"action": "next-step",
"phase": "flow-design",
"step": 5,
"summary": "流程图设计完成",
"git_commit": "a1175f0cfb818c852fc32c17e74147c5022062be"
},
{
"timestamp": "2025-12-18T12:32:55+08:00",
"action": "next-part",
"phase": "impl",
"step": 6,
"summary": "流程设计完成,进入实现环节",
"git_commit": "99710dd8a649188db92f0e18c71ed92b4e73c189"
},
{
"timestamp": "2025-12-18T12:34:08+08:00",
"action": "next-step",
"phase": "impl",
"step": 7,
"summary": "完成 config.py 修改: 添加 plans_path 和 confirm 阶段",
"git_commit": "7a902cf5485e88228ed6469bdce96fde59cc8288"
},
{
"timestamp": "2025-12-18T12:36:37+08:00",
"action": "next-step",
"phase": "impl",
"step": 8,
"summary": "完成 run.md 修改: 任务细则、子计划执行、confirm 阶段",
"git_commit": "d7a105bbcc3a9bd5f0eba607b7681efbc9a08b23"
},
{
"timestamp": "2025-12-18T12:38:13+08:00",
"action": "next-step",
"phase": "impl",
"step": 9,
"summary": "完成 aide skill 文档更新",
"git_commit": "ec3b4e342f058296742a78eed403c3a859fe4e1a"
},
{
"timestamp": "2025-12-18T12:38:26+08:00",
"action": "next-part",
"phase": "verify",
"step": 10,
"summary": "实现完成,进入验证环节",
"git_commit": "f6657164870f26e6576baa50325322961164eda5"
},
{
"timestamp": "2025-12-18T12:40:20+08:00",
"action": "next-step",
"phase": "verify",
"step": 11,
"summary": "验证完成: 所有修改点确认正确",
"git_commit": "1955a2701c8244bd17d3c927465d180d89b080da"
},
{
"timestamp": "2025-12-18T12:40:35+08:00",
"action": "next-part",
"phase": "docs",
"step": 12,
"summary": "验证通过,进入文档环节",
"git_commit": "7eb5a3443d6e121ebe0622938113b5e19c96873e"
},
{
"timestamp": "2025-12-18T12:42:11+08:00",
"action": "next-step",
"phase": "docs",
"step": 13,
"summary": "文档更新完成: 更新 CHANGELOG.md",
"git_commit": "4494170b932f74e0749e527cfe0e50b287d987d4"
},
{
"timestamp": "2025-12-18T12:42:22+08:00",
"action": "next-part",
"phase": "confirm",
"step": 14,
"summary": "文档更新完成,进入用户确认环节",
"git_commit": "9f1c0fdfc3f47a1926f437e3b7a7681287d5cbc3"
},
{
"timestamp": "2025-12-18T12:50:46+08:00",
"action": "next-step",
"phase": "confirm",
"step": 15,
"summary": "用户确认通过",
"git_commit": "749b20fa15d8726e72bb2bfc404021208d8b5559"
},
{
"timestamp": "2025-12-18T12:50:59+08:00",
"action": "next-part",
"phase": "finish",
"step": 16,
"summary": "用户确认通过,进入收尾",
"git_commit": "a0bba367bc101c28b27efee0b925335466779ccf"
}
],
"source_branch": "master",
"start_commit": "80ebbd4d85aaa8b3408cd83c35627c972057beda",
"task_branch": "aide/015"
}

View File

@@ -0,0 +1,115 @@
{
"task_id": "2025-12-18T13-29-05",
"current_phase": "finish",
"current_step": 13,
"started_at": "2025-12-18T13:29:05+08:00",
"history": [
{
"timestamp": "2025-12-18T13:29:05+08:00",
"action": "start",
"phase": "task-optimize",
"step": 1,
"summary": "开始任务准备: 构建 auto-run 全自动任务执行命令",
"git_commit": "26c735ed294c7a6a4790dce190129baa7a6048bc"
},
{
"timestamp": "2025-12-18T13:31:10+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 2,
"summary": "任务解析完成",
"git_commit": "4748a0a7a92746600c69bbe57c32d04d75fbef3c"
},
{
"timestamp": "2025-12-18T13:34:59+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 3,
"summary": "任务细则已确认",
"git_commit": "a10d9de196ef4ee2b61fa180ec5605c195803c3d"
},
{
"timestamp": "2025-12-18T13:35:18+08:00",
"action": "next-part",
"phase": "flow-design",
"step": 4,
"summary": "进入流程设计环节",
"git_commit": "f0909c5124d8bb3e81dcaac876ab8ff40b6fe7ca"
},
{
"timestamp": "2025-12-18T13:36:15+08:00",
"action": "next-step",
"phase": "flow-design",
"step": 5,
"summary": "流程图设计完成",
"git_commit": "5c1ada7991903f9394460fa8eedfcd7b1a320ee8"
},
{
"timestamp": "2025-12-18T13:36:35+08:00",
"action": "next-part",
"phase": "impl",
"step": 6,
"summary": "流程设计完成,进入实现环节",
"git_commit": "7a748544773259a10759da7578d96bc6aefdef23"
},
{
"timestamp": "2025-12-18T13:50:07+08:00",
"action": "next-step",
"phase": "impl",
"step": 7,
"summary": "auto-run.md 实现完成",
"git_commit": "a2531526536ee3b47a68fb8aea245180477f5bee"
},
{
"timestamp": "2025-12-18T13:50:21+08:00",
"action": "next-part",
"phase": "verify",
"step": 8,
"summary": "实现完成,进入验证环节",
"git_commit": "5fa9b25d78bf10e58faa14be122e32b9835572c9"
},
{
"timestamp": "2025-12-18T13:51:18+08:00",
"action": "next-step",
"phase": "verify",
"step": 9,
"summary": "验证完成: 所有验证标准通过",
"git_commit": "3fd58acbd07ae284b96eb0791aad74933bf5da2f"
},
{
"timestamp": "2025-12-18T13:51:30+08:00",
"action": "next-part",
"phase": "docs",
"step": 10,
"summary": "验证通过,进入文档环节",
"git_commit": "ffa5ba5d4e553f5ddda9d8e305b92a02c0084b9a"
},
{
"timestamp": "2025-12-18T13:52:42+08:00",
"action": "next-step",
"phase": "docs",
"step": 11,
"summary": "文档更新完成",
"git_commit": "ec847df46943eb3d89754c48380b53766b0b2da9"
},
{
"timestamp": "2025-12-18T13:52:57+08:00",
"action": "next-part",
"phase": "confirm",
"step": 12,
"summary": "文档更新完成,进入用户确认环节",
"git_commit": "360628db5766ec02d7df654eebcdb4451503f128"
},
{
"timestamp": "2025-12-18T13:58:35+08:00",
"action": "next-part",
"phase": "finish",
"step": 13,
"summary": "用户确认通过,进入收尾",
"git_commit": "e9e12a672e67b7630762a5d95588abed8cd338d3"
}
],
"source_branch": "master",
"start_commit": "645a30cace5e7653c19c60fa1f23c22d1db73d34",
"task_branch": "aide/016"
}

View File

@@ -0,0 +1,155 @@
{
"task_id": "2025-12-18T14-09-44",
"current_phase": "finish",
"current_step": 18,
"started_at": "2025-12-18T14:09:44+08:00",
"history": [
{
"timestamp": "2025-12-18T14:09:44+08:00",
"action": "start",
"phase": "task-optimize",
"step": 1,
"summary": "开始任务准备: 调整aide收尾清理逻辑",
"git_commit": "58e6d2860c4aab56501416242b4ac635c2afa760"
},
{
"timestamp": "2025-12-18T14:13:19+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 2,
"summary": "任务分析完成,无待定项",
"git_commit": "748796325dbb94b666aea08439c009c30fa68aa4"
},
{
"timestamp": "2025-12-18T14:14:15+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 3,
"summary": "任务细则已生成,自动确认",
"git_commit": "cf57481bcff2d8e57ba8d3c2c66a7120d53e5221"
},
{
"timestamp": "2025-12-18T14:14:27+08:00",
"action": "next-part",
"phase": "flow-design",
"step": 4,
"summary": "进入流程设计环节",
"git_commit": "5369765724248c11e21c2a58184db149473c83c4"
},
{
"timestamp": "2025-12-18T14:15:01+08:00",
"action": "next-step",
"phase": "flow-design",
"step": 5,
"summary": "流程图设计完成",
"git_commit": "55904d9416a13df115dac01be763cfc626e1b837"
},
{
"timestamp": "2025-12-18T14:15:26+08:00",
"action": "next-part",
"phase": "impl",
"step": 6,
"summary": "流程设计完成,进入实现环节",
"git_commit": "3e7f1ab05855d18d344cee32c96a27ccd049bdd3"
},
{
"timestamp": "2025-12-18T14:16:16+08:00",
"action": "next-step",
"phase": "impl",
"step": 7,
"summary": "完成代码修改:添加 pending-items.json 和流程图文件清理逻辑",
"git_commit": "6f44b388c8e3cf1e25dd2465d80e474dcdc19fdd"
},
{
"timestamp": "2025-12-18T14:17:04+08:00",
"action": "next-part",
"phase": "verify",
"step": 8,
"summary": "实现完成,进入验证环节",
"git_commit": "e0823e096c4051a43695cae2214d2bb472fc955b"
},
{
"timestamp": "2025-12-18T14:26:30+08:00",
"action": "back-part",
"phase": "task-optimize",
"step": 9,
"summary": "返工:添加 aide 命令递归查找 .aide 目录的需求",
"git_commit": "1d2de3efe04fe1679c013c47c7995bf41fe19d68"
},
{
"timestamp": "2025-12-18T14:50:27+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 10,
"summary": "完成代码实现:收尾清理增强 + 递归查找功能",
"git_commit": "82633b90fd0cb423f870283cf41179d4bb62b574"
},
{
"timestamp": "2025-12-18T18:13:11+08:00",
"action": "next-part",
"phase": "flow-design",
"step": 11,
"summary": "进入流程设计环节",
"git_commit": "19d2e727542b3ab1320c956373064c8a272868be"
},
{
"timestamp": "2025-12-18T18:13:31+08:00",
"action": "next-part",
"phase": "impl",
"step": 12,
"summary": "流程设计已有,进入实现环节",
"git_commit": "ba8f4a9a6ce8a1f803a83febc1f02320525f11b7"
},
{
"timestamp": "2025-12-18T18:13:42+08:00",
"action": "next-part",
"phase": "verify",
"step": 13,
"summary": "实现完成,进入验证环节",
"git_commit": "47e21e2b2617573a3cd7adf8fca2d26dae3f19c6"
},
{
"timestamp": "2025-12-18T18:14:24+08:00",
"action": "next-part",
"phase": "docs",
"step": 14,
"summary": "验证通过,进入文档更新环节",
"git_commit": "beeb93e782498e9c1521bf34d93c85f81038b9d0"
},
{
"timestamp": "2025-12-18T18:16:40+08:00",
"action": "next-step",
"phase": "docs",
"step": 15,
"summary": "CHANGELOG.md 已在之前更新完成",
"git_commit": "e3b5e45d329f3a0c8ee06c6d88858d32a01d6de9"
},
{
"timestamp": "2025-12-18T18:17:59+08:00",
"action": "next-step",
"phase": "docs",
"step": 16,
"summary": "完善 CHANGELOG.md 格式",
"git_commit": "5ee698c22064fd0ef86c070a365aa6000c1273a3"
},
{
"timestamp": "2025-12-18T18:18:13+08:00",
"action": "next-part",
"phase": "confirm",
"step": 17,
"summary": "文档更新完成,进入确认环节",
"git_commit": "8f93eb8c40199206740f31b48737512fb59026bf"
},
{
"timestamp": "2025-12-18T18:18:43+08:00",
"action": "next-part",
"phase": "finish",
"step": 18,
"summary": "确认完成,进入收尾环节",
"git_commit": "8fb54dca415446b11643961a2c552f3fc59c8e10"
}
],
"source_branch": "master",
"start_commit": "f4a82c96eec49822c39da4f68c87351fe527b0fe",
"task_branch": "aide/017"
}

View File

@@ -0,0 +1,195 @@
{
"task_id": "2025-12-18T18-38-48",
"current_phase": "task-optimize",
"current_step": 23,
"started_at": "2025-12-18T18:38:48+08:00",
"history": [
{
"timestamp": "2025-12-18T18:38:48+08:00",
"action": "start",
"phase": "task-optimize",
"step": 1,
"summary": "开始任务准备: aide flow clean 指令与分支概况文档分析",
"git_commit": "f74306e46f459e6642eb84c8463e86d9e0bc697b"
},
{
"timestamp": "2025-12-18T18:42:34+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 2,
"summary": "任务内容解析完成,生成结构化任务描述",
"git_commit": "e5211e7e1299da688db14baa65c37a6920f4c9ed"
},
{
"timestamp": "2025-12-18T18:50:34+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 3,
"summary": "用户确认任务需求,发现分支哈希相同的 bug 原因",
"git_commit": "3417151e189396a1b2ae8369603045e5c040057b"
},
{
"timestamp": "2025-12-18T18:53:07+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 4,
"summary": "任务细则已确认",
"git_commit": "345c44455cc05bbb1c128b96b98c9c6c4b46cb81"
},
{
"timestamp": "2025-12-18T18:53:18+08:00",
"action": "next-part",
"phase": "flow-design",
"step": 5,
"summary": "进入流程设计环节",
"git_commit": "ca07defc6e5760dccade2969aae608d5d27b9f4b"
},
{
"timestamp": "2025-12-18T18:55:03+08:00",
"action": "next-step",
"phase": "flow-design",
"step": 6,
"summary": "流程图设计完成",
"git_commit": "aa456b7f3f09d3e089df0ddd16fcc432648db8f9"
},
{
"timestamp": "2025-12-18T18:55:18+08:00",
"action": "next-part",
"phase": "impl",
"step": 7,
"summary": "流程设计完成,进入实现环节",
"git_commit": "65660e4265e1a67420bc62b503923444236323d7"
},
{
"timestamp": "2025-12-18T18:56:06+08:00",
"action": "next-step",
"phase": "impl",
"step": 8,
"summary": "完成: decisions 清理逻辑修改为直接删除不备份",
"git_commit": "9ed16d17f24c3e962dc91d85efdd198f434c5f6b"
},
{
"timestamp": "2025-12-18T18:59:53+08:00",
"action": "next-step",
"phase": "impl",
"step": 9,
"summary": "完成: finish 流程重构,修复哈希 bug添加 clean_branch_merge 方法",
"git_commit": "e0cc0a4556577b953cec406f79d05857d2840829"
},
{
"timestamp": "2025-12-18T19:01:34+08:00",
"action": "next-step",
"phase": "impl",
"step": 10,
"summary": "完成: 添加 aide flow clean 指令",
"git_commit": "57cc51781e9a9e5aae02c7fef6604c739c6b4f47"
},
{
"timestamp": "2025-12-18T19:02:57+08:00",
"action": "next-step",
"phase": "impl",
"step": 11,
"summary": "测试验证: clean 命令正确检测工作区状态",
"git_commit": "f28cb62ccb5154afdc09a626608c56f0e23c3892"
},
{
"timestamp": "2025-12-18T19:03:11+08:00",
"action": "next-part",
"phase": "verify",
"step": 12,
"summary": "实现完成,进入验证环节",
"git_commit": "0f2de0a72b93b36a55e35dba718f78b2e50982e5"
},
{
"timestamp": "2025-12-18T19:04:52+08:00",
"action": "next-step",
"phase": "verify",
"step": 13,
"summary": "验证完成: finish 流程、clean 指令、decisions 清理逻辑均已验证",
"git_commit": "2c20dd4d11d804583e2e5ebe78203909a1b61dbf"
},
{
"timestamp": "2025-12-18T19:05:06+08:00",
"action": "next-part",
"phase": "docs",
"step": 14,
"summary": "验证通过,进入文档环节",
"git_commit": "52dde4809fd8359c962ea77d37f78f03b7560e84"
},
{
"timestamp": "2025-12-18T19:07:09+08:00",
"action": "next-step",
"phase": "docs",
"step": 15,
"summary": "CHANGELOG.md 更新完成",
"git_commit": "5e7b1381b9b23c72eed2a7af7486f3b2a1875fe6"
},
{
"timestamp": "2025-12-18T19:07:24+08:00",
"action": "next-part",
"phase": "confirm",
"step": 16,
"summary": "文档更新完成,进入用户确认环节",
"git_commit": "d3c1986de7b08f69051a6a2f5aa7d19fd5743456"
},
{
"timestamp": "2025-12-18T19:29:56+08:00",
"action": "back-part",
"phase": "task-optimize",
"step": 17,
"summary": "返工:修复三个问题 - 1.结束提交哈希未记录到md 2.md时间格式调整 3.clean应自动提交脏工作区",
"git_commit": "9858fa48c393b6b21f0ab8d51f54aec5d5b12a8e"
},
{
"timestamp": "2025-12-18T19:33:43+08:00",
"action": "next-part",
"phase": "flow-design",
"step": 18,
"summary": "开始修复三个问题",
"git_commit": "f166f406b52586a4b9e357b8f3b29d19b24dfb64"
},
{
"timestamp": "2025-12-18T19:36:49+08:00",
"action": "next-part",
"phase": "impl",
"step": 19,
"summary": "开始验证修复",
"git_commit": "878d10cd7b79d2a9aaf2889a37de122a2e025c31"
},
{
"timestamp": "2025-12-18T19:38:06+08:00",
"action": "next-part",
"phase": "verify",
"step": 20,
"summary": "验证修复完成",
"git_commit": "64552682b4f2d3f86ce7d97f3930d9251f0add4a"
},
{
"timestamp": "2025-12-18T19:38:18+08:00",
"action": "next-part",
"phase": "docs",
"step": 21,
"summary": "更新文档",
"git_commit": "64d626d32c861125dd636281eea8fd974d3bd90c"
},
{
"timestamp": "2025-12-18T19:39:28+08:00",
"action": "next-part",
"phase": "confirm",
"step": 22,
"summary": "返工修复完成,进入用户确认",
"git_commit": "1bf8ff39654b7d9c915f90684c1587f3e63a173b"
},
{
"timestamp": "2025-12-18T19:50:49+08:00",
"action": "back-part",
"phase": "task-optimize",
"step": 23,
"summary": "返工:修复 find_project_root 向上查找逻辑",
"git_commit": "05dace3dd55e5cf33236270180eb105dac6e3175"
}
],
"source_branch": "master",
"start_commit": "714848745d2e443ff4ee1d907b3e3df0b5e65dc4",
"task_branch": "aide/018"
}

View File

@@ -0,0 +1,211 @@
{
"task_id": "2025-12-19T00-40-02",
"current_phase": "finish",
"current_step": 25,
"started_at": "2025-12-19T00:40:02+08:00",
"history": [
{
"timestamp": "2025-12-19T00:40:02+08:00",
"action": "start",
"phase": "task-optimize",
"step": 1,
"summary": "开始任务准备: Aide 体系多项调整任务",
"git_commit": "f7a811ec18679acda7850be5b3a0794a7d7b81f2"
},
{
"timestamp": "2025-12-19T00:42:55+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 2,
"summary": "任务分析完成识别出5个子计划和4个待定项",
"git_commit": "bf60a4a3e9578f792c39dc833e91349121e28556"
},
{
"timestamp": "2025-12-19T00:49:06+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 3,
"summary": "用户完成待定项确认",
"git_commit": "2b03d564dd5614bbaba9e890ae4d0112b9ea3dbb"
},
{
"timestamp": "2025-12-19T00:53:39+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 4,
"summary": "生成任务细则文档完成guide.md + 6个spec文档",
"git_commit": "43c1d810dbd0ad6291b126102267eb3052f0a5e4"
},
{
"timestamp": "2025-12-19T00:58:32+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 5,
"summary": "根据用户反馈修正 spec-06 数据流设计",
"git_commit": "b2ef44157bc3b8034601a62eef0a60174c4a70f0"
},
{
"timestamp": "2025-12-19T01:08:18+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 6,
"summary": "任务细则已确认",
"git_commit": "4f7041b68dea04cbd3fa4d4a7a85d842824fa8dc"
},
{
"timestamp": "2025-12-19T01:08:32+08:00",
"action": "next-part",
"phase": "flow-design",
"step": 7,
"summary": "进入流程设计环节",
"git_commit": "ba23a62232f03a1dea825898c49c12ccdd3232cb"
},
{
"timestamp": "2025-12-19T01:13:58+08:00",
"action": "next-step",
"phase": "flow-design",
"step": 8,
"summary": "流程图设计完成task-flow + spec-01-init + spec-06-back-confirm",
"git_commit": "272269266b8f89bdba77cabead2008d51e41e6bc"
},
{
"timestamp": "2025-12-19T01:14:12+08:00",
"action": "next-part",
"phase": "impl",
"step": 9,
"summary": "流程设计完成,进入实现环节",
"git_commit": "15a4a51267e8931164249ebaa09b21c917747be8"
},
{
"timestamp": "2025-12-19T01:33:20+08:00",
"action": "back-step",
"phase": "impl",
"step": 10,
"summary": "流程图不完整,需补充各子计划的任务执行流程图",
"git_commit": "4fb1cc045ea010f7f39dc1f6e4c9e7a0d94ceee0"
},
{
"timestamp": "2025-12-19T01:35:25+08:00",
"action": "next-step",
"phase": "impl",
"step": 11,
"summary": "补充完成6个子计划的任务执行流程图",
"git_commit": "5ea3241564bb976cdb6add82b842758ffee781d2"
},
{
"timestamp": "2025-12-19T01:38:37+08:00",
"action": "back-part",
"phase": "flow-design",
"step": 12,
"summary": "返回流程图生成",
"git_commit": "fbe63297b5e784518ad1d20bfe5e970b9660ac30"
},
{
"timestamp": "2025-12-19T01:39:02+08:00",
"action": "next-part",
"phase": "impl",
"step": 13,
"summary": "完成流程图",
"git_commit": "be0e03ca517d09b41f522bed29b1e34b94228df6"
},
{
"timestamp": "2025-12-19T01:44:20+08:00",
"action": "next-step",
"phase": "impl",
"step": 14,
"summary": "完成子计划1: gitignore_aide默认值改为false, aide init支持任意目录",
"git_commit": "2ca64a7f984c65fa6ff63abe215ad19695d65da7"
},
{
"timestamp": "2025-12-19T01:47:50+08:00",
"action": "next-step",
"phase": "impl",
"step": 15,
"summary": "完成子计划2: readme-templates skill创建完成 (1 SKILL.md + 5模板 + 10模块)",
"git_commit": "d32a4162b872391fa3f6fe8337a25df5a93148f9"
},
{
"timestamp": "2025-12-19T01:50:17+08:00",
"action": "next-step",
"phase": "impl",
"step": 16,
"summary": "完成子计划3: /aide:readme 命令实现 (配置项 + 命令文件)",
"git_commit": "ab547dcaa39d79f5ed7041681ddb23b89ad98bdd"
},
{
"timestamp": "2025-12-19T01:51:48+08:00",
"action": "next-step",
"phase": "impl",
"step": 17,
"summary": "完成子计划4: /aide:user-docs 命令实现",
"git_commit": "59125688891cf3b63018c4a8c4172fbe54082f7f"
},
{
"timestamp": "2025-12-19T01:57:58+08:00",
"action": "next-step",
"phase": "impl",
"step": 18,
"summary": "完成子计划5: /aide:user-graph 命令实现 (配置项 + 命令文件)",
"git_commit": "eebfd18562f237cbece37f2d4ce69d3eb4151490"
},
{
"timestamp": "2025-12-19T02:15:49+08:00",
"action": "next-step",
"phase": "impl",
"step": 19,
"summary": "完成子计划6: 返工流程优化 (rework skill + back-confirm 机制)",
"git_commit": "0a8eb4912c23a0a294e0059b5ab5e042605f017a"
},
{
"timestamp": "2025-12-19T02:16:00+08:00",
"action": "next-part",
"phase": "verify",
"step": 20,
"summary": "所有子计划实现完成,进入验证环节",
"git_commit": "d19dbec7cb15bd751bcd3cfdc1062c612145446d"
},
{
"timestamp": "2025-12-19T02:16:57+08:00",
"action": "next-step",
"phase": "verify",
"step": 21,
"summary": "验证完成: 所有验证标准通过",
"git_commit": "e3e1c9ecbc22279e7d3e101321b0ddd3af7ff0d7"
},
{
"timestamp": "2025-12-19T02:17:08+08:00",
"action": "next-part",
"phase": "docs",
"step": 22,
"summary": "验证通过,进入文档环节",
"git_commit": "b76b238bb1a122aafbce8ba3a802c9806ad189e8"
},
{
"timestamp": "2025-12-19T02:18:09+08:00",
"action": "next-step",
"phase": "docs",
"step": 23,
"summary": "文档更新完成: aide skill + CHANGELOG.md",
"git_commit": "7f0cf95e02671f9ff8514a2f209726ba42ce1dd7"
},
{
"timestamp": "2025-12-19T02:18:27+08:00",
"action": "next-part",
"phase": "confirm",
"step": 24,
"summary": "文档更新完成,进入用户确认环节",
"git_commit": "fe9a950031656ec3a3bfa3d85af85addeec3451e"
},
{
"timestamp": "2025-12-19T02:30:45+08:00",
"action": "next-part",
"phase": "finish",
"step": 25,
"summary": "用户确认通过,进入收尾",
"git_commit": "de4a3a63975faf59c89a28c2e29c1ac58a48789b"
}
],
"source_branch": "master",
"start_commit": "93d1b21bb8497d75ac7ee36422a4b4214b517bb7",
"task_branch": "aide/019"
}

View File

@@ -0,0 +1,219 @@
{
"task_id": "2025-12-19T03-01-27",
"current_phase": "finish",
"current_step": 26,
"started_at": "2025-12-19T03:01:27+08:00",
"history": [
{
"timestamp": "2025-12-19T03:01:27+08:00",
"action": "start",
"phase": "task-optimize",
"step": 1,
"summary": "开始任务准备: 调整 commands/skills/aide-program 体系",
"git_commit": "509876676c0dad2007412140a1616c957d667a3b"
},
{
"timestamp": "2025-12-19T03:12:25+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 2,
"summary": "任务细则已确认",
"git_commit": "01cf08937b85be33f7838aeac75a43af743c7993"
},
{
"timestamp": "2025-12-19T03:12:37+08:00",
"action": "next-part",
"phase": "flow-design",
"step": 3,
"summary": "进入流程设计环节",
"git_commit": "0ada83ec47251ed4862b1dbcb79d75a7c5bbfcae"
},
{
"timestamp": "2025-12-19T03:13:45+08:00",
"action": "next-step",
"phase": "flow-design",
"step": 4,
"summary": "流程图设计完成",
"git_commit": "d34d4bec9ada31612443dbfc64a767962d78841c"
},
{
"timestamp": "2025-12-19T03:13:58+08:00",
"action": "next-part",
"phase": "impl",
"step": 5,
"summary": "流程设计完成,进入实现环节",
"git_commit": "47de3641d288675c35730fb809f8030dd5bf9178"
},
{
"timestamp": "2025-12-19T03:14:53+08:00",
"action": "next-step",
"phase": "impl",
"step": 6,
"summary": "完成 config.py 修改:添加 plantuml 配置项",
"git_commit": "1b22454beef76d84b79fb4ad1a4058c79930bdeb"
},
{
"timestamp": "2025-12-19T03:15:42+08:00",
"action": "next-step",
"phase": "impl",
"step": 7,
"summary": "完成 run.md 修改finish 清理 + 流程图配置",
"git_commit": "bb9e4bac909820f6d4861896feab35c7282173f4"
},
{
"timestamp": "2025-12-19T03:16:01+08:00",
"action": "next-part",
"phase": "verify",
"step": 8,
"summary": "实现完成,进入验证环节",
"git_commit": "767f723665eddceabcd1e6f5c8fca596df61a0cf"
},
{
"timestamp": "2025-12-19T03:17:26+08:00",
"action": "next-step",
"phase": "verify",
"step": 9,
"summary": "验证完成: 所有修改语法正确,内容完整",
"git_commit": "63d15dcb6dc534ecf0ac692a38ddb7f6a35bb9f9"
},
{
"timestamp": "2025-12-19T03:17:53+08:00",
"action": "next-part",
"phase": "docs",
"step": 10,
"summary": "验证通过,进入文档环节",
"git_commit": "45aaf52696fa798de49463a4f8c4952b4f9fb818"
},
{
"timestamp": "2025-12-19T03:18:33+08:00",
"action": "next-step",
"phase": "docs",
"step": 11,
"summary": "文档更新完成",
"git_commit": "29cf81ac1707aadfe1fa3d61842cd9da1b52f785"
},
{
"timestamp": "2025-12-19T03:18:55+08:00",
"action": "next-part",
"phase": "confirm",
"step": 12,
"summary": "文档更新完成,进入用户确认环节",
"git_commit": "5871ce8d1655657fc81540eff5ede9bc44d00b82"
},
{
"timestamp": "2025-12-19T03:33:30+08:00",
"action": "back-part",
"phase": "task-optimize",
"step": 13,
"summary": "用户要求返工:移除 win-install/linux-install 及半自动化安装程序",
"git_commit": "0572fcca0c7d4226a3dd4c463907af020b31464f"
},
{
"timestamp": "2025-12-19T03:47:04+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 14,
"summary": "返工任务细则已确认",
"git_commit": "bd53a118cd61ffa0ab5d37d7d70c43b5fbdcafac"
},
{
"timestamp": "2025-12-19T03:47:24+08:00",
"action": "next-part",
"phase": "flow-design",
"step": 15,
"summary": "进入返工流程设计环节",
"git_commit": "e283007dc7fb57bd2874880ab1c81c08472855d6"
},
{
"timestamp": "2025-12-19T03:48:25+08:00",
"action": "next-step",
"phase": "flow-design",
"step": 16,
"summary": "返工流程图设计完成",
"git_commit": "0fcbb32a423f226f63bb167cf31100ebc4d052ad"
},
{
"timestamp": "2025-12-19T03:48:38+08:00",
"action": "next-part",
"phase": "impl",
"step": 17,
"summary": "流程设计完成,进入返工实现环节",
"git_commit": "7d62e0b69f5edaa4fe1c993a69ad23732e96574e"
},
{
"timestamp": "2025-12-19T03:52:05+08:00",
"action": "next-step",
"phase": "impl",
"step": 18,
"summary": "完成文档引用清理",
"git_commit": "4db60843b69b608dfa9413b50ddccd667ad24f45"
},
{
"timestamp": "2025-12-19T03:53:09+08:00",
"action": "next-step",
"phase": "impl",
"step": 19,
"summary": "完成 back-part 警告修改",
"git_commit": "eb033993a09af192b3f8b7f18de3116702974281"
},
{
"timestamp": "2025-12-19T03:53:34+08:00",
"action": "next-part",
"phase": "verify",
"step": 20,
"summary": "实现完成,进入验证环节",
"git_commit": "1a4ac906a1fdcdd7c4cd5c1c692eb2ac8984f687"
},
{
"timestamp": "2025-12-19T03:55:20+08:00",
"action": "next-step",
"phase": "verify",
"step": 21,
"summary": "验证完成: 所有修改正确",
"git_commit": "cfd43cdfed0c79629466e6db0bb7d0a26f110288"
},
{
"timestamp": "2025-12-19T03:55:43+08:00",
"action": "next-part",
"phase": "docs",
"step": 22,
"summary": "验证通过,进入文档环节",
"git_commit": "6962cc5d53e55709798b67b079ef80206623d616"
},
{
"timestamp": "2025-12-19T03:56:11+08:00",
"action": "next-step",
"phase": "docs",
"step": 23,
"summary": "文档更新完成",
"git_commit": "4234fc42af2e00fc008d851baa19e0b20ed0e4b5"
},
{
"timestamp": "2025-12-19T03:56:37+08:00",
"action": "next-part",
"phase": "confirm",
"step": 24,
"summary": "文档更新完成,进入用户确认环节",
"git_commit": "1ba81d0844189cc6b4d3ea4603a82d71c2638c1b"
},
{
"timestamp": "2025-12-19T03:58:22+08:00",
"action": "next-step",
"phase": "confirm",
"step": 25,
"summary": "用户确认通过",
"git_commit": "727ece8c8cfdb5af45265458cfad799a69fc0d65"
},
{
"timestamp": "2025-12-19T03:58:34+08:00",
"action": "next-part",
"phase": "finish",
"step": 26,
"summary": "用户确认通过,进入收尾",
"git_commit": "3ed7848bd721f2c7f5fb7b247259c5c3a201ded6"
}
],
"source_branch": "master",
"start_commit": "3de91017057046f93c9d2a52300a83314e1f7e58",
"task_branch": "aide/020"
}

View File

@@ -0,0 +1,139 @@
{
"task_id": "2025-12-19T04-09-25",
"current_phase": "finish",
"current_step": 16,
"started_at": "2025-12-19T04:09:25+08:00",
"history": [
{
"timestamp": "2025-12-19T04:09:25+08:00",
"action": "start",
"phase": "task-optimize",
"step": 1,
"summary": "开始任务准备: 将任务计划文件清理功能从 command/run 迁移到 aide",
"git_commit": "94c9f2fad7b174e85c9b840c8064c2b01517b6ea"
},
{
"timestamp": "2025-12-19T04:15:15+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 2,
"summary": "任务细则已确认",
"git_commit": "1895b5619b3d3edd2bc7631ed25940686376251c"
},
{
"timestamp": "2025-12-19T04:15:33+08:00",
"action": "next-part",
"phase": "flow-design",
"step": 3,
"summary": "进入流程设计环节",
"git_commit": "625036addd0f5acc8df78f394380d0aebb034c4f"
},
{
"timestamp": "2025-12-19T04:17:08+08:00",
"action": "next-step",
"phase": "flow-design",
"step": 4,
"summary": "流程图设计完成",
"git_commit": "a894c6c0ffc10893bf032e7cf41ca39d258f48c8"
},
{
"timestamp": "2025-12-19T04:17:59+08:00",
"action": "next-part",
"phase": "impl",
"step": 5,
"summary": "流程设计完成,进入实现环节",
"git_commit": "5a781cbd92a7c76e4016e2334da6f006c3733539"
},
{
"timestamp": "2025-12-19T04:19:01+08:00",
"action": "next-step",
"phase": "impl",
"step": 6,
"summary": "完成 hooks.py 修改:添加 _hook_clean_task_plans 函数",
"git_commit": "7c269070045f4e2f29efeda778bc92c8a1391d71"
},
{
"timestamp": "2025-12-19T04:19:49+08:00",
"action": "next-step",
"phase": "impl",
"step": 7,
"summary": "完成 run.md 修改:删除手动清理指令",
"git_commit": "1fc90a92a44e62a85e230f4441914c1ec9640041"
},
{
"timestamp": "2025-12-19T04:20:35+08:00",
"action": "next-step",
"phase": "impl",
"step": 8,
"summary": "auto-run.md 无需修改(已确认无手动清理指令)",
"git_commit": "fe04fcffa8fb5a950da5ca08b397a36387d9993a"
},
{
"timestamp": "2025-12-19T04:22:09+08:00",
"action": "next-step",
"phase": "impl",
"step": 9,
"summary": "测试通过:清理功能正常工作,边界情况处理正确",
"git_commit": "28600865c77dd401a9a07287a3329ff66cc6f2be"
},
{
"timestamp": "2025-12-19T04:22:33+08:00",
"action": "next-part",
"phase": "verify",
"step": 10,
"summary": "实现完成,进入验证环节",
"git_commit": "33bc0bce3e3e057493b3e56391dbc57379402fea"
},
{
"timestamp": "2025-12-19T04:23:16+08:00",
"action": "next-step",
"phase": "verify",
"step": 11,
"summary": "验证完成: 所有验证标准通过",
"git_commit": "8ffeca17159a5f27258ec9c4357d651cda7f407b"
},
{
"timestamp": "2025-12-19T04:23:32+08:00",
"action": "next-part",
"phase": "docs",
"step": 12,
"summary": "验证通过,进入文档环节",
"git_commit": "c15b1d961570041f0d9680beab8c37b855eec28c"
},
{
"timestamp": "2025-12-19T04:24:09+08:00",
"action": "next-step",
"phase": "docs",
"step": 13,
"summary": "文档更新完成",
"git_commit": "27723abf8db5551db38897a314d68435e85f032c"
},
{
"timestamp": "2025-12-19T04:24:25+08:00",
"action": "next-part",
"phase": "confirm",
"step": 14,
"summary": "文档更新完成,进入用户确认环节",
"git_commit": "2390eb44423b65b38210ad8ba68cf92fb95bd6ce"
},
{
"timestamp": "2025-12-19T04:25:02+08:00",
"action": "next-step",
"phase": "confirm",
"step": 15,
"summary": "用户确认通过",
"git_commit": "c8b90cbf95c916b75b2337fb4591763f69833dc4"
},
{
"timestamp": "2025-12-19T04:25:16+08:00",
"action": "next-part",
"phase": "finish",
"step": 16,
"summary": "用户确认通过,进入收尾",
"git_commit": "d93eecca44169cf88d0d1397dcf80e507487d1c0"
}
],
"source_branch": "master",
"start_commit": "af6605e5b98073727129e613cc5d37e27dc300f8",
"task_branch": "aide/021"
}

View File

@@ -0,0 +1,139 @@
{
"task_id": "2025-12-19T04-37-00",
"current_phase": "finish",
"current_step": 16,
"started_at": "2025-12-19T04:37:00+08:00",
"history": [
{
"timestamp": "2025-12-19T04:37:00+08:00",
"action": "start",
"phase": "task-optimize",
"step": 1,
"summary": "开始任务准备: 调整 aide 体系的 finish 清理、提交信息和 decide 界面",
"git_commit": "18e06ff3d19999097c915c0af67e75dec95a5260"
},
{
"timestamp": "2025-12-19T04:39:17+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 2,
"summary": "任务分析完成,识别出 5 个需要修改的文件",
"git_commit": "caf4cb96664ed21ea90662e81530d2524a5aa805"
},
{
"timestamp": "2025-12-19T04:42:45+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 3,
"summary": "任务细则已确认",
"git_commit": "40edc8ca26b7e4632681693cef14e569f0a30a84"
},
{
"timestamp": "2025-12-19T04:42:58+08:00",
"action": "next-part",
"phase": "flow-design",
"step": 4,
"summary": "进入流程设计环节",
"git_commit": "ef0b2a020e1fac1faf5a4a625a703fd1fc2291ff"
},
{
"timestamp": "2025-12-19T04:43:45+08:00",
"action": "next-step",
"phase": "flow-design",
"step": 5,
"summary": "流程图设计完成",
"git_commit": "a17521ba8a3a3dc777494f2c71e8dd1f5245a3da"
},
{
"timestamp": "2025-12-19T04:43:59+08:00",
"action": "next-part",
"phase": "impl",
"step": 6,
"summary": "流程设计完成,进入实现环节",
"git_commit": "d2d5155c6e72e6a4ef7aafc6ea28ba29dc4f8aa4"
},
{
"timestamp": "2025-12-19T04:45:09+08:00",
"action": "next-step",
"phase": "impl",
"step": 7,
"summary": "子任务 1 完成:移除 run.md 和 auto-run.md 中的清理代码",
"git_commit": "2b2c130f9594d0443dcb06ef6490e34e6930cbb5"
},
{
"timestamp": "2025-12-19T04:45:41+08:00",
"action": "next-step",
"phase": "impl",
"step": 8,
"summary": "子任务 2 完成:修改 branch.py 中的提交信息格式",
"git_commit": "804fdc62012c70e9802fe8dfdab52d362a711329"
},
{
"timestamp": "2025-12-19T04:47:07+08:00",
"action": "next-step",
"phase": "impl",
"step": 9,
"summary": "子任务 3 完成:调整 decide 界面显示源文件内容",
"git_commit": "f5eedaa0651baaac630a03a7c7cbaf630605c028"
},
{
"timestamp": "2025-12-19T04:47:19+08:00",
"action": "next-part",
"phase": "verify",
"step": 10,
"summary": "实现完成,进入验证环节",
"git_commit": "111b711e64ad7f925c227999e9d0220532682381"
},
{
"timestamp": "2025-12-19T04:47:58+08:00",
"action": "next-step",
"phase": "verify",
"step": 11,
"summary": "验证完成: 所有修改通过语法检查和功能验证",
"git_commit": "580f6738f7a458f7d3def30df999f4a78d841a81"
},
{
"timestamp": "2025-12-19T04:48:14+08:00",
"action": "next-part",
"phase": "docs",
"step": 12,
"summary": "验证通过,进入文档环节",
"git_commit": "b5f5633a40d682383dbe4835a71b9289d596052d"
},
{
"timestamp": "2025-12-19T04:48:50+08:00",
"action": "next-step",
"phase": "docs",
"step": 13,
"summary": "文档更新完成",
"git_commit": "2b8c75563972bcb20f8afac95cd03ef1f7b3c180"
},
{
"timestamp": "2025-12-19T04:49:06+08:00",
"action": "next-part",
"phase": "confirm",
"step": 14,
"summary": "文档更新完成,进入用户确认环节",
"git_commit": "856f0596a4f89c19fb5758c11bd84d1f46fec16b"
},
{
"timestamp": "2025-12-19T04:49:51+08:00",
"action": "next-step",
"phase": "confirm",
"step": 15,
"summary": "用户确认通过",
"git_commit": "cee9a1e110e2617b686f38594ac970c365bbd2b3"
},
{
"timestamp": "2025-12-19T04:50:04+08:00",
"action": "next-part",
"phase": "finish",
"step": 16,
"summary": "用户确认通过,进入收尾",
"git_commit": "76026e4b62996b667b2f788a2cf6e34cc79cebfb"
}
],
"source_branch": "master",
"start_commit": "af40327146d6be0781bb8f9ccdcaf8b2ce216455",
"task_branch": "aide/022"
}

View File

@@ -0,0 +1,115 @@
{
"task_id": "2025-12-19T05-00-29",
"current_phase": "finish",
"current_step": 13,
"started_at": "2025-12-19T05:00:29+08:00",
"history": [
{
"timestamp": "2025-12-19T05:00:29+08:00",
"action": "start",
"phase": "task-optimize",
"step": 1,
"summary": "开始任务准备: 为 user-docs 添加分步执行和接续执行能力",
"git_commit": "6bae19a71c609d86f2da23c28cf2385402c49f5d"
},
{
"timestamp": "2025-12-19T05:04:30+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 2,
"summary": "任务细则已确认",
"git_commit": "8cd54588b37ef771b1e2ac61a328b1565c7c93b1"
},
{
"timestamp": "2025-12-19T05:09:48+08:00",
"action": "next-part",
"phase": "flow-design",
"step": 3,
"summary": "进入流程设计环节",
"git_commit": "009e1733196dcba594b5916ad3887846d616c795"
},
{
"timestamp": "2025-12-19T05:10:49+08:00",
"action": "next-step",
"phase": "flow-design",
"step": 4,
"summary": "流程图设计完成",
"git_commit": "a466de3d80e5e25fdda9b7f16063d464101480fe"
},
{
"timestamp": "2025-12-19T05:11:10+08:00",
"action": "next-part",
"phase": "impl",
"step": 5,
"summary": "流程设计完成,进入实现环节",
"git_commit": "2f8de410688c7de42c4799779e377fafe3b86a52"
},
{
"timestamp": "2025-12-19T05:12:49+08:00",
"action": "next-step",
"phase": "impl",
"step": 6,
"summary": "完成 user-docs.md 重构",
"git_commit": "ee4c1f2e6a675d3021c84e2a9523a2dddcc0afe5"
},
{
"timestamp": "2025-12-19T05:13:24+08:00",
"action": "next-part",
"phase": "verify",
"step": 7,
"summary": "实现完成,进入验证环节",
"git_commit": "5692f32827531de7059df393b0270eb169f35557"
},
{
"timestamp": "2025-12-19T05:14:04+08:00",
"action": "next-step",
"phase": "verify",
"step": 8,
"summary": "验证完成: 所有标准通过",
"git_commit": "167eb17787dcc5ca775a20d2efd2049df6b81c75"
},
{
"timestamp": "2025-12-19T05:14:38+08:00",
"action": "next-part",
"phase": "docs",
"step": 9,
"summary": "验证通过,进入文档环节",
"git_commit": "30ae787d5009708fccd8eb30bfddbc9f9c7f4be7"
},
{
"timestamp": "2025-12-19T05:15:24+08:00",
"action": "next-step",
"phase": "docs",
"step": 10,
"summary": "文档更新完成",
"git_commit": "bf829bc5cae3a264118d34bd1194799b94b6c579"
},
{
"timestamp": "2025-12-19T05:15:38+08:00",
"action": "next-part",
"phase": "confirm",
"step": 11,
"summary": "文档更新完成,进入用户确认环节",
"git_commit": "b2588d1b761956d0584ff292ff854ff7fa535f1c"
},
{
"timestamp": "2025-12-19T05:16:50+08:00",
"action": "next-step",
"phase": "confirm",
"step": 12,
"summary": "用户确认通过",
"git_commit": "d58f754bf01b9e8396b084fcacc1557b6cb33a89"
},
{
"timestamp": "2025-12-19T05:17:07+08:00",
"action": "next-part",
"phase": "finish",
"step": 13,
"summary": "用户确认通过,进入收尾",
"git_commit": "91c9bca5d5356e7c06d018fab0138152ab96c56a"
}
],
"source_branch": "master",
"start_commit": "d2842d46dbef9b7fe9f85749a9d2c8feae4ee528",
"task_branch": "aide/023"
}

View File

@@ -0,0 +1,123 @@
{
"task_id": "2025-12-19T05-31-03",
"current_phase": "finish",
"current_step": 14,
"started_at": "2025-12-19T05:31:03+08:00",
"history": [
{
"timestamp": "2025-12-19T05:31:03+08:00",
"action": "start",
"phase": "task-optimize",
"step": 1,
"summary": "开始任务准备: 优化 finish 后提交信息中的任务名格式",
"git_commit": "9b8814a16b93b0119007991b6e4525319309c5b3"
},
{
"timestamp": "2025-12-19T05:33:45+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 2,
"summary": "任务分析完成:修改 branch.py 去除提交信息中的任务名前缀",
"git_commit": "0922f60205c1a2017251671f78075fa593229160"
},
{
"timestamp": "2025-12-19T05:35:01+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 3,
"summary": "任务细则已确认",
"git_commit": "4b499cef435649bddd27e5cf60ce833f654a3bd5"
},
{
"timestamp": "2025-12-19T05:35:14+08:00",
"action": "next-part",
"phase": "flow-design",
"step": 4,
"summary": "进入流程设计环节",
"git_commit": "e7028827d841419dfcedebe302f529581b35f6ea"
},
{
"timestamp": "2025-12-19T05:36:13+08:00",
"action": "next-step",
"phase": "flow-design",
"step": 5,
"summary": "流程图设计完成",
"git_commit": "dabdad8ee9ca142f46255b831fb3c16c52017f8f"
},
{
"timestamp": "2025-12-19T05:36:29+08:00",
"action": "next-part",
"phase": "impl",
"step": 6,
"summary": "流程设计完成,进入实现环节",
"git_commit": "837fcbef5cc629e34e5f8ab6cd41659c8a013014"
},
{
"timestamp": "2025-12-19T05:36:43+08:00",
"action": "next-step",
"phase": "impl",
"step": 7,
"summary": "代码实现完成:添加 _clean_task_summary 函数并修改提交信息生成逻辑",
"git_commit": "ba78733192b47e2b47082f2078119136fef7340d"
},
{
"timestamp": "2025-12-19T05:36:55+08:00",
"action": "next-part",
"phase": "verify",
"step": 8,
"summary": "实现完成,进入验证环节",
"git_commit": "eda0235c71db77fdad3467d4246250c17198686d"
},
{
"timestamp": "2025-12-19T05:37:38+08:00",
"action": "next-step",
"phase": "verify",
"step": 9,
"summary": "验证完成: 所有测试用例通过_clean_task_summary 函数工作正常",
"git_commit": "1f47af58d7f58251b67841a528e8ca6e6b150db7"
},
{
"timestamp": "2025-12-19T05:37:49+08:00",
"action": "next-part",
"phase": "docs",
"step": 10,
"summary": "验证通过,进入文档环节",
"git_commit": "6814f8ec9c9c5c244d9e2d4e8c50a4c278c9373d"
},
{
"timestamp": "2025-12-19T05:38:24+08:00",
"action": "next-step",
"phase": "docs",
"step": 11,
"summary": "文档更新完成",
"git_commit": "bfd3c8f488b773808c9124a69272f908f63f1765"
},
{
"timestamp": "2025-12-19T05:38:35+08:00",
"action": "next-part",
"phase": "confirm",
"step": 12,
"summary": "文档更新完成,进入用户确认环节",
"git_commit": "82086b484b873078843528b217e61b08e66b2496"
},
{
"timestamp": "2025-12-19T05:39:08+08:00",
"action": "next-step",
"phase": "confirm",
"step": 13,
"summary": "用户确认通过",
"git_commit": "ba0748a19c11b01a8e59d468f55b8516efe34e4a"
},
{
"timestamp": "2025-12-19T05:39:19+08:00",
"action": "next-part",
"phase": "finish",
"step": 14,
"summary": "用户确认通过,进入收尾",
"git_commit": "4fdf7664c19b276336970421e1788a27c19815d7"
}
],
"source_branch": "master",
"start_commit": "5942bd2d6c906d57574aba6a4bff52f6ae649604",
"task_branch": "aide/024"
}

View File

@@ -0,0 +1,155 @@
{
"task_id": "2025-12-19T05-41-57",
"current_phase": "finish",
"current_step": 18,
"started_at": "2025-12-19T05:41:57+08:00",
"history": [
{
"timestamp": "2025-12-19T05:41:57+08:00",
"action": "start",
"phase": "task-optimize",
"step": 1,
"summary": "开始任务准备: 分析和优化 user-docs/user-graph 的分步执行能力",
"git_commit": "d49d46fe850a8cc42d01664469e0e08d91a9ef94"
},
{
"timestamp": "2025-12-19T05:44:15+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 2,
"summary": "完成口语化内容解析和深度分析",
"git_commit": "35bbe6874a0c639dce92689289c3302bd0856865"
},
{
"timestamp": "2025-12-19T05:45:16+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 3,
"summary": "任务优化完成,识别待定项",
"git_commit": "2f1fbf5a1385f5fd6e4dc2812fd96632523d8c7c"
},
{
"timestamp": "2025-12-19T05:48:46+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 4,
"summary": "完成 docs.md 分析,更新任务范围",
"git_commit": "b9c5d32faade3c51f46c346a3b437f7abbe4a0bf"
},
{
"timestamp": "2025-12-19T05:52:53+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 5,
"summary": "任务细则已确认",
"git_commit": "f581fce69957585a0a09da5456aeb5a63b1dae56"
},
{
"timestamp": "2025-12-19T05:53:13+08:00",
"action": "next-part",
"phase": "flow-design",
"step": 6,
"summary": "进入流程设计环节",
"git_commit": "ab11105550972c46c6133abc9b253d10380a6c91"
},
{
"timestamp": "2025-12-19T05:54:10+08:00",
"action": "next-step",
"phase": "flow-design",
"step": 7,
"summary": "流程图设计完成",
"git_commit": "ed49d3c0a94369ff62191ce2fa5ebbc4e15422d5"
},
{
"timestamp": "2025-12-19T05:54:25+08:00",
"action": "next-part",
"phase": "impl",
"step": 8,
"summary": "流程设计完成,进入实现环节",
"git_commit": "d3433cc277ca9774d16c07308113e46f2e472571"
},
{
"timestamp": "2025-12-19T05:56:27+08:00",
"action": "next-step",
"phase": "impl",
"step": 9,
"summary": "完成 docs.md 修改",
"git_commit": "354b97583fc36df379a12417d153a12ef35fb860"
},
{
"timestamp": "2025-12-19T05:58:20+08:00",
"action": "next-step",
"phase": "impl",
"step": 10,
"summary": "完成 user-graph.md 修改",
"git_commit": "0c05c25ee65a23c547f6555ba2e05e9937c59fb0"
},
{
"timestamp": "2025-12-19T06:00:19+08:00",
"action": "next-step",
"phase": "impl",
"step": 11,
"summary": "完成 user-docs.md 修改",
"git_commit": "a2269e75f2075dbf2d4a2264ae293a8d30045da6"
},
{
"timestamp": "2025-12-19T06:01:29+08:00",
"action": "next-step",
"phase": "impl",
"step": 12,
"summary": "验证三个命令一致性通过",
"git_commit": "0de028f22727ea20fbcd70511344db2a2b46ab68"
},
{
"timestamp": "2025-12-19T06:01:58+08:00",
"action": "next-part",
"phase": "verify",
"step": 13,
"summary": "实现完成,进入验证环节",
"git_commit": "a1056d9047547a6c186c3a589610b4b687c18a35"
},
{
"timestamp": "2025-12-19T06:02:15+08:00",
"action": "next-step",
"phase": "verify",
"step": 14,
"summary": "验证完成: 所有成功标准满足",
"git_commit": "c80c7abec4c9b52e208a63aadb75d7720d9c6df5"
},
{
"timestamp": "2025-12-19T06:02:28+08:00",
"action": "next-part",
"phase": "docs",
"step": 15,
"summary": "验证通过,进入文档环节",
"git_commit": "a93ccbf0d7090f0f9cf1c64aa69deb4f3aaabee5"
},
{
"timestamp": "2025-12-19T06:04:18+08:00",
"action": "next-step",
"phase": "docs",
"step": 16,
"summary": "文档更新完成",
"git_commit": "9eae387e7fc5eafdb4a895dd5d1b77c1e65653fb"
},
{
"timestamp": "2025-12-19T06:04:31+08:00",
"action": "next-part",
"phase": "confirm",
"step": 17,
"summary": "文档更新完成,进入用户确认环节",
"git_commit": "1a5f84f1952820d35a71d4d123db746fb154d4d7"
},
{
"timestamp": "2025-12-19T06:06:51+08:00",
"action": "next-part",
"phase": "finish",
"step": 18,
"summary": "用户已确认,进入收尾环节",
"git_commit": "cb7e960a28a46b615b34ffc1dc4e74cc22e50584"
}
],
"source_branch": "master",
"start_commit": "37c434b92ad2c8a7d0533ee2070e7ac36d232b6d",
"task_branch": "aide/025"
}

View File

@@ -0,0 +1,59 @@
{
"task_id": "2025-12-18T10-03-32",
"current_phase": "finish",
"current_step": 6,
"started_at": "2025-12-18T10:03:33+08:00",
"history": [
{
"timestamp": "2025-12-18T10:03:33+08:00",
"action": "start",
"phase": "task-optimize",
"step": 1,
"summary": "测试",
"git_commit": "1da821a237aef817fd3dcc1626274eb9ef5d99a5"
},
{
"timestamp": "2025-12-18T10:03:36+08:00",
"action": "next-part",
"phase": "flow-design",
"step": 2,
"summary": "test",
"git_commit": "eb2be1ce4af9d801ae3138d2a916783884ede27b"
},
{
"timestamp": "2025-12-18T10:03:40+08:00",
"action": "next-part",
"phase": "impl",
"step": 3,
"summary": "test",
"git_commit": "4338e5bf2bd1857f4bb85f39f705d7161e92de08"
},
{
"timestamp": "2025-12-18T10:03:42+08:00",
"action": "next-part",
"phase": "verify",
"step": 4,
"summary": "test",
"git_commit": "43ba3740378f6589c62f8e58f8b8af91e4d13792"
},
{
"timestamp": "2025-12-18T10:03:45+08:00",
"action": "next-part",
"phase": "docs",
"step": 5,
"summary": "test",
"git_commit": "a6520f97a893ff67c2272cf17d262a9eebb0950c"
},
{
"timestamp": "2025-12-18T10:03:52+08:00",
"action": "next-part",
"phase": "finish",
"step": 6,
"summary": "test",
"git_commit": "6dff4f3ec476eb619d0febd46f2deef01262e281"
}
],
"source_branch": "master",
"start_commit": "2042238b5cda7a12cff417eeb4f9f11b7714d91d",
"task_branch": "aide/011"
}

View File

@@ -0,0 +1,43 @@
{
"task_id": "2025-12-18T10-09-00",
"current_phase": "task-optimize",
"current_step": 4,
"started_at": "2025-12-18T10:09:00+08:00",
"history": [
{
"timestamp": "2025-12-18T10:09:00+08:00",
"action": "start",
"phase": "task-optimize",
"step": 1,
"summary": "开始任务准备: 修复 aide finish 后 .lock 文件残留问题",
"git_commit": "dcf9eb38cfc77adc5944e60d7ddb5857f43ba958"
},
{
"timestamp": "2025-12-18T10:10:40+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 2,
"summary": "问题定位完成finish 环节在锁内执行 git add导致 .lock 文件被提交",
"git_commit": "9d4f6b8a2234376ce5498fc0a0c4f3d06e2f4550"
},
{
"timestamp": "2025-12-18T10:11:18+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 3,
"summary": "修复已实现git add_all 方法排除 .lock 文件",
"git_commit": "f3de256fa3dfa6ca35020a2bac138f6f8b736581"
},
{
"timestamp": "2025-12-18T10:12:35+08:00",
"action": "next-step",
"phase": "task-optimize",
"step": 4,
"summary": "从 git 历史中移除 .lock 文件跟踪",
"git_commit": "3f2bff5ac0aa663f6eb9df2b5a6f43a45f272a68"
}
],
"source_branch": "master",
"start_commit": "c6f45f9e36ad877b413c12c67a463d8b0c862dbc",
"task_branch": "aide/012"
}

View File

@@ -1,94 +0,0 @@
{
"task": "创建环境安装 Command",
"source": "task-now.md",
"items": [
{
"id": 1,
"title": "离线安装程序是否需要实现?",
"location": {
"file": "task-now.md",
"start": 17,
"end": 21
},
"context": "任务文档中询问是否可以实现离线安装方案:先提供资源清单,用户下载资源后通过程序完成安装。这是一个独立的功能模块,与 Command 是两种不同的实现方式。",
"options": [
{
"value": "defer",
"label": "暂不实现,作为后续迭代",
"score": 85,
"pros": ["聚焦核心需求", "减少本次工作量", "可以先验证 Command 方案的有效性"],
"cons": ["无法处理完全无网络的环境"]
},
{
"value": "implement",
"label": "本次一并实现离线安装程序",
"score": 60,
"pros": ["一次性完整覆盖所有场景", "支持企业内网环境"],
"cons": ["工作量大", "维护成本高", "需要处理多平台二进制分发"]
},
{
"value": "resource_list_only",
"label": "仅提供资源清单和手动指南",
"score": 70,
"pros": ["折中方案", "用户可自行下载"],
"cons": ["离线体验不完整", "用户需手动操作较多"]
}
],
"recommend": "defer"
},
{
"id": 2,
"title": "是否需要支持 macOS",
"location": {
"file": "task-now.md",
"start": 5,
"end": 5
},
"context": "任务文档明确提到需要为 Windows 和 Linux 创建专用 command但未提及 macOS。macOS 在开发者群体中使用广泛,需要确认是否纳入本次实现范围。",
"options": [
{
"value": "no_macos",
"label": "仅支持 Windows 和 Linux",
"score": 75,
"pros": ["严格按任务要求", "减少工作量"],
"cons": ["macOS 用户无法使用"]
},
{
"value": "include_macos",
"label": "增加 macOS 支持",
"score": 80,
"pros": ["覆盖主流开发平台", "macOS 与 Linux 安装方式相似"],
"cons": ["增加一定工作量", "需要测试验证"]
}
],
"recommend": "include_macos"
},
{
"id": 3,
"title": "Command 命名和组织方式",
"location": {
"file": "task-now.md",
"start": 5,
"end": 5
},
"context": "任务提到「为 Windows 和 Linux 单独创建专用的完整 command」这可以理解为两种组织方式统一命令自动检测系统或分离命令让用户选择。",
"options": [
{
"value": "unified",
"label": "/aide:install统一命令自动检测系统",
"score": 90,
"pros": ["用户体验统一", "自动适配系统", "一个命令解决问题"],
"cons": ["Command 文件会较长"]
},
{
"value": "separated",
"label": "/aide:install-win 和 /aide:install-linux分离命令",
"score": 65,
"pros": ["文件结构清晰", "平台逻辑隔离"],
"cons": ["用户需要知道自己的系统", "维护多个文件"]
}
],
"recommend": "unified"
}
]
}

View File

@@ -1,18 +1,18 @@
# ccoptimize 项目文档 # agent-aide 项目文档
> 最后更新2025-12-17 > 最后更新2025-12-19
## 项目概述 ## 项目概述
**ccoptimize** 是 Aide 工作流工具优化项目,包含 Aide 命令行工具的核心实现和 Claude Code 插件。 **agent-aide** 是 Aide 工作流工具项目,包含 Aide 命令行工具的核心实现和 Claude Code 插件。
### 项目统计 ### 项目统计
| 指标 | 数值 | | 指标 | 数值 |
|------|------| |------|------|
| 总文件数 | 132(排除忽略项) | | 总文件数 | 161(排除忽略项) |
| 总目录数 | 53(含 5 个空目录) | | 总目录数 | 54(含 3 个空目录) |
| 代码行数 | 约 20082 行 | | 代码行数 | 约 5350 行Python |
| 主要语言 | Python | | 主要语言 | Python |
| 被忽略项 | 7 个目录 | | 被忽略项 | 7 个目录 |
@@ -23,7 +23,7 @@
| 区块 | 路径 | 文档 | 说明 | | 区块 | 路径 | 文档 | 说明 |
|------|------|------|------| |------|------|------|------|
| aide-program | `aide-program/` | [查看](blocks/aide-program.md) | 核心命令行工具实现 | | aide-program | `aide-program/` | [查看](blocks/aide-program.md) | 核心命令行工具实现 |
| aide-marketplace | `aide-marketplace/` | [查看](blocks/aide-marketplace.md) | 插件市场和 aide-plugin | | aide-marketplace | `aide-marketplace/` | [查看](blocks/aide-marketplace.md) | 插件市场和 aide-plugin(版本 2.1.3 |
| 项目配置与文档 | `.aide/`, `docs/` 等 | [查看](blocks/project-config-docs.md) | 配置文件和项目文档 | | 项目配置与文档 | `.aide/`, `docs/` 等 | [查看](blocks/project-config-docs.md) | 配置文件和项目文档 |
## 快速导航 ## 快速导航
@@ -35,52 +35,49 @@
| 环境检测 | `aide-program/aide/env/` | 检测 Python/Node/Rust 等环境 | | 环境检测 | `aide-program/aide/env/` | 检测 Python/Node/Rust 等环境 |
| 流程追踪 | `aide-program/aide/flow/` | 任务状态管理和 Git 集成 | | 流程追踪 | `aide-program/aide/flow/` | 任务状态管理和 Git 集成 |
| 待定项确认 | `aide-program/aide/decide/` | Web 界面交互式决策 | | 待定项确认 | `aide-program/aide/decide/` | Web 界面交互式决策 |
| 斜杠命令 | `aide-marketplace/aide-plugin/commands/` | `/aide:run`命令定义 | | 斜杠命令 | `aide-marketplace/aide-plugin/commands/` | 8 个命令定义 |
| 技能定义 | `aide-marketplace/aide-plugin/skills/` | aide、env-config、task-parser | | 技能定义 | `aide-marketplace/aide-plugin/skills/` | 5 个技能定义 |
### 按文件类型 ### 按文件类型
| 类型 | 数量 | 位置 | | 类型 | 数量 | 位置 |
|------|------|------| |------|------|------|
| Python 源码 | ~35 | `aide-program/aide/` | | Python 源码 | ~35 | `aide-program/aide/` |
| Markdown 命令 | 4 | `aide-marketplace/aide-plugin/commands/` | | Markdown 命令 | 8 | `aide-marketplace/aide-plugin/commands/` |
| Markdown 技能 | 3 | `aide-marketplace/aide-plugin/skills/` | | Markdown 技能 | 5 | `aide-marketplace/aide-plugin/skills/` |
| 配置文件 | ~5 | `.aide/`, 根目录 | | 配置文件 | ~5 | `.aide/`, 根目录 |
| 文档 | ~15 | `docs/`, `aide-program/docs/` | | 文档 | ~15 | `docs/reference/`, `aide-program/docs/` |
## 目录结构 ## 目录结构
``` ```
ccoptimize/ agent-aide/
├── .aide/ 项目级 Aide 配置 ├── .aide/ 项目级 Aide 配置
│ ├── config.toml 配置文件 │ ├── config.toml 配置文件
│ ├── flow-status.json 当前任务进度 │ ├── branches.json 分支概况数据
│ ├── branches.md 分支概况文档
│ ├── decisions/ [空目录] 决策记录 │ ├── decisions/ [空目录] 决策记录
│ ├── diagrams/ PlantUML 流程图 │ ├── diagrams/ [空目录] PlantUML 流程图
│ ├── task-plans/ [空目录] 复杂任务计划
│ ├── logs/ 历史任务归档 │ ├── logs/ 历史任务归档
│ └── project-docs/ 本文档目录 │ └── project-docs/ 本文档目录
├── aide-program/ 核心程序(~50 文件) ├── aide-program/ 核心程序(~72 文件)
│ ├── aide/ Python 源码 │ ├── aide/ Python 源码
│ │ ├── core/ 核心模块 │ │ ├── core/ 核心模块
│ │ ├── env/ 环境检测 │ │ ├── env/ 环境检测
│ │ ├── flow/ 流程追踪 │ │ ├── flow/ 流程追踪(含分支管理)
│ │ └── decide/ 待定项确认 │ │ └── decide/ 待定项确认
│ ├── bin/ 可执行脚本 │ ├── bin/ 可执行脚本
│ ├── docs/ 程序文档 │ ├── docs/ 程序文档
│ └── lib/ 依赖库 │ └── lib/ 依赖库
├── aide-marketplace/ 插件市场(~15 文件) ├── aide-marketplace/ 插件市场(~39 文件)
│ ├── .claude-plugin/ 市场配置 │ ├── .claude-plugin/ 市场配置
│ └── aide-plugin/ Aide 插件 │ └── aide-plugin/ Aide 插件(版本 2.1.3
│ ├── commands/ 斜杠命令 │ ├── commands/ 斜杠命令8 个)
│ ├── skills/ 技能定义 │ ├── skills/ 技能定义5 个)
│ └── docs/ 插件文档 │ └── docs/ 插件文档
├── docs/ 项目文档 ├── docs/ 项目文档
── aide-overview.md 系统概述 ── reference/ 参考文档7 个)
│ ├── project-details.md 详细说明
│ └── 01-04 指南系列 Claude Code 指南
├── statements/ 声明文档
├── discuss/ [空目录] 讨论记录
├── reply/ [空目录] 回复记录
├── CLAUDE.md Claude 配置指令 ├── CLAUDE.md Claude 配置指令
├── CHANGELOG.md 变更日志 ├── CHANGELOG.md 变更日志
├── README.md 项目说明 ├── README.md 项目说明
@@ -104,6 +101,19 @@ Aide 是一套面向 LLM 驱动开发的工作流工具,核心设计原则:
| Commands | 定义流程和步骤 | `/aide:run` 定义任务执行流程 | | Commands | 定义流程和步骤 | `/aide:run` 定义任务执行流程 |
| Skills | 提供工具使用指南 | `aide` skill 提供 CLI 命令用法 | | Skills | 提供工具使用指南 | `aide` skill 提供 CLI 命令用法 |
### 命令清单
| 命令 | 说明 |
|------|------|
| `/aide:setup` | 环境配置(分析、检测、修复) |
| `/aide:load` | 项目认知载入 |
| `/aide:docs` | 项目文档创建和维护 |
| `/aide:run` | 任务执行(核心命令) |
| `/aide:auto-run` | 全自动任务执行 |
| `/aide:readme` | README 生成 |
| `/aide:user-docs` | 用户文档生成 |
| `/aide:user-graph` | 用户流程图生成 |
### 环境检测模块 ### 环境检测模块
| 类型 | 模块 | 说明 | | 类型 | 模块 | 说明 |
@@ -116,20 +126,19 @@ Aide 是一套面向 LLM 驱动开发的工作流工具,核心设计原则:
| 目录 | 用途 | | 目录 | 用途 |
|------|------| |------|------|
| `.aide/decisions/` | 待定项决策记录 | | `.aide/decisions/` | 待定项决策记录 |
| `aide-program/.aide/decisions/` | 程序级决策记录 | | `.aide/diagrams/` | PlantUML 流程图 |
| `aide-program/.aide/logs/` | 程序级日志归档 | | `.aide/task-plans/` | 复杂任务计划文档 |
| `discuss/` | 项目讨论记录 |
| `reply/` | 项目回复记录 |
## 被忽略项 ## 被忽略项
| 目录 | 说明 | | 目录 | 说明 |
|------|------| |------|------|
| `anthropic-agent-skills/` | 第三方技能库 | | `anthropic-agent-skills/` | 第三方技能库 |
| `.venv/` | 虚拟环境 | | `.venv/` | 根目录虚拟环境 |
| `aide-program/.venv/` | 程序虚拟环境 | | `aide-program/.venv/` | 程序虚拟环境 |
| `__pycache__/` | Python 字节码 | | `__pycache__/` | Python 字节码 |
| `cache/`, `.cache/`, `test-cache/` | 缓存目录 | | `cache/`, `.cache/` | 缓存目录 |
| `test-cache/` | 测试缓存目录 |
## 使用指南 ## 使用指南

View File

@@ -1,32 +1,33 @@
# 区块计划 # 区块计划
> 最后更新2025-12-17 > 最后更新2025-12-19
## 项目概况 ## 项目概况
- 项目名称:ccoptimizeAide 工作流工具优化项目) - 项目名称:agent-aideAide 工作流工具项目)
- 主要语言Python - 主要语言Python
- 总文件数132(排除忽略项) - 总文件数161(排除忽略项)
- 总目录数53(含 5 个空目录) - 总目录数54(含 3 个空目录)
- 被忽略项7 个目录 - 被忽略项7 个目录
- 代码行数:约 20082 行 - 代码行数:约 5350 行Python
## 完整目录树(简化版 - 前两层) ## 完整目录树(简化版 - 前两层)
``` ```
ccoptimize/ agent-aide/
├── .aide/ Aide 配置和数据目录 ├── .aide/ Aide 配置和数据目录
│ ├── config.toml 项目配置文件 │ ├── config.toml 项目配置文件
│ ├── branches.json 分支概况数据
│ ├── branches.md 分支概况文档
│ ├── decisions/ [空目录] 待定项决策记录 │ ├── decisions/ [空目录] 待定项决策记录
│ ├── diagrams/ 流程图目录(含 .puml 和 .png │ ├── diagrams/ [空目录] PlantUML 流程图
│ ├── flow-status.json 当前任务进度 │ ├── task-plans/ [空目录] 复杂任务计划文档
│ ├── logs/ 历史任务归档 │ ├── logs/ 历史任务归档
│ └── project-docs/ 项目文档目录(本文档所在) │ └── project-docs/ 项目文档目录(本文档所在)
├── aide-marketplace/ Aide 插件市场 ├── aide-marketplace/ Aide 插件市场
│ ├── .claude-plugin/ 插件市场配置 │ ├── .claude-plugin/ 市场配置
│ └── aide-plugin/ Aide 插件源码 │ └── aide-plugin/ Aide 插件源码(版本 2.1.3
├── aide-program/ Aide 主程序 ├── aide-program/ Aide 主程序
│ ├── .aide/ 程序级配置
│ ├── aide/ Python 源码目录 │ ├── aide/ Python 源码目录
│ ├── bin/ 可执行脚本 │ ├── bin/ 可执行脚本
│ ├── docs/ 程序文档 │ ├── docs/ 程序文档
@@ -35,24 +36,13 @@ ccoptimize/
│ ├── requirements.txt 依赖清单 │ ├── requirements.txt 依赖清单
│ └── .gitignore 忽略规则 │ └── .gitignore 忽略规则
├── anthropic-agent-skills/ [ignored] Anthropic Agent Skills第三方 ├── anthropic-agent-skills/ [ignored] Anthropic Agent Skills第三方
├── cache/ [ignored] 缓存目录 ├── cache/ 临时缓存目录
├── .cache/ [ignored] 隐藏缓存目录 ├── .cache/ [ignored] 隐藏缓存目录
├── test-cache/ [ignored] 测试缓存目录 ├── test-cache/ [ignored] 测试缓存目录
├── .venv/ [ignored] 根目录虚拟环境 ├── .venv/ [ignored] 根目录虚拟环境
├── __pycache__/ [ignored] Python 字节码缓存 ├── __pycache__/ [ignored] Python 字节码缓存
├── discuss/ [空目录] 讨论文档目录
├── docs/ 项目文档目录 ├── docs/ 项目文档目录
── 01-自定义斜杠命令指南.md ── reference/ 参考文档7 个文件)
│ ├── 02-技能指南.md
│ ├── 03-插件指南.md
│ ├── 04-插件市场指南.md
│ ├── aide-overview.md
│ ├── project-details.md
│ └── 为什么要更换到command+skill+专用处理程序.md
├── reply/ [空目录] 回复目录
├── statements/ 声明文档目录
│ ├── old-task-section.md
│ └── optimize.md
├── AGENTS.md Agent 配置说明 ├── AGENTS.md Agent 配置说明
├── CHANGELOG.md 变更日志 ├── CHANGELOG.md 变更日志
├── CLAUDE.md Claude 配置指令 ├── CLAUDE.md Claude 配置指令
@@ -67,13 +57,13 @@ ccoptimize/
### 区块 1aide-program核心程序 ### 区块 1aide-program核心程序
- **路径**`aide-program/` - **路径**`aide-program/`
- **文件数**:约 50 个源码文件 - **文件数**:约 72 个文件(排除 .venv 和 __pycache__
- **空目录**2decisions/, logs/ - **空目录**0
- **状态**待处理 - **状态**已完成
- **说明**Aide 命令行工具的核心实现,包括: - **说明**Aide 命令行工具的核心实现,包括:
- `aide/core/` - 核心功能模块(配置、输出) - `aide/core/` - 核心功能模块(配置、输出)
- `aide/env/` - 环境检测模块 - `aide/env/` - 环境检测模块
- `aide/flow/` - 流程追踪模块 - `aide/flow/` - 流程追踪模块(含分支管理)
- `aide/decide/` - 待定项确认模块 - `aide/decide/` - 待定项确认模块
- `bin/` - 可执行脚本 - `bin/` - 可执行脚本
- `docs/` - 程序文档 - `docs/` - 程序文档
@@ -81,45 +71,37 @@ ccoptimize/
### 区块 2aide-marketplace插件市场 ### 区块 2aide-marketplace插件市场
- **路径**`aide-marketplace/` - **路径**`aide-marketplace/`
- **文件数**:约 15 个文件 - **文件数**:约 39 个文件
- **空目录**0 个 - **空目录**0 个
- **状态**待处理 - **状态**已完成
- **说明**Aide 插件市场和 aide-plugin 源码,包括: - **说明**Aide 插件市场和 aide-plugin 源码(版本 2.1.3,包括:
- `.claude-plugin/` - 市场配置 - `.claude-plugin/` - 市场配置
- `aide-plugin/commands/` - 斜杠命令定义 - `aide-plugin/commands/` - 斜杠命令定义8 个)
- `aide-plugin/skills/` - 技能定义 - `aide-plugin/skills/` - 技能定义5 个,含 readme-templates 和 rework
- `aide-plugin/docs/` - 插件文档 - `aide-plugin/docs/` - 插件文档
### 区块 3项目配置(根目录配置) ### 区块 3项目配置与文档
- **路径**`.aide/`, 根目录配置文件 - **路径**`.aide/`, `docs/`, 根目录配置文件
- **文件数**:约 15 个文件 - **文件数**:约 50 个文件
- **空目录**1decisions/ - **空目录**3 个(.aide/decisions/, .aide/diagrams/, .aide/task-plans/
- **状态**待处理 - **状态**已完成
- **说明**:项目级配置Aide 数据目录,包括: - **说明**:项目级配置Aide 数据目录和项目文档资源,包括:
- `.aide/config.toml` - 项目配置 - `.aide/config.toml` - 项目配置
- `.aide/diagrams/` - 流程图 - `.aide/branches.json/.md` - 分支概况数据
- `.aide/flow-status.json` - 任务状态 - `.aide/decisions/` - [空目录] 待定项决策记录
- `.aide/diagrams/` - [空目录] PlantUML 流程图
- `.aide/task-plans/` - [空目录] 复杂任务计划文档
- `.aide/logs/` - 历史任务归档
- `docs/reference/` - 指南和概览文档7 个)
- 根目录 `.md` 文件 - 根目录 `.md` 文件
### 区块 4项目文档与资源
- **路径**`docs/`, `discuss/`, `reply/`, `statements/`
- **文件数**:约 10 个文件
- **空目录**2 个discuss/, reply/
- **状态**:待处理
- **说明**:项目文档和资源文件目录,包括:
- `docs/` - 指南和概览文档
- `statements/` - 声明文档
- `discuss/` - [空目录] 讨论记录
- `reply/` - [空目录] 回复记录
## 被忽略项清单 ## 被忽略项清单
| 目录 | 说明 | | 目录 | 说明 |
|------|------| |------|------|
| `anthropic-agent-skills/` | 第三方技能库Git submodule | | `anthropic-agent-skills/` | 第三方技能库Git submodule |
| `cache/` | 临时缓存目录 | | `cache/` | 临时缓存目录(部分保留) |
| `.cache/` | 隐藏缓存目录 | | `.cache/` | 隐藏缓存目录 |
| `test-cache/` | 测试缓存目录 | | `test-cache/` | 测试缓存目录 |
| `.venv/` | 根目录虚拟环境 | | `.venv/` | 根目录虚拟环境 |
@@ -130,5 +112,5 @@ ccoptimize/
- [x] 区块 1aide-program - [x] 区块 1aide-program
- [x] 区块 2aide-marketplace - [x] 区块 2aide-marketplace
- [x] 区块 3项目配置与文档(合并区块 3 和 4 - [x] 区块 3项目配置与文档
- [x] 总导览文档生成 - [x] 总导览文档生成

View File

@@ -1,7 +1,7 @@
# aide-marketplace插件市场 # aide-marketplace插件市场
> 路径:`aide-marketplace/` > 路径:`aide-marketplace/`
> 最后更新2025-12-17 > 最后更新2025-12-19
## 概述 ## 概述
@@ -15,21 +15,46 @@ aide-marketplace/
│ └── marketplace.json 市场元数据 │ └── marketplace.json 市场元数据
└── aide-plugin/ Aide 插件 └── aide-plugin/ Aide 插件
├── .claude-plugin/ 插件配置 ├── .claude-plugin/ 插件配置
│ └── plugin.json 插件元数据(版本 2.0.6 │ └── plugin.json 插件元数据(版本 2.1.3
├── commands/ 斜杠命令定义 ├── commands/ 斜杠命令定义8 个)
│ ├── docs.md /aide:docs 文档管理400 行) │ ├── auto-run.md /aide:auto-run 全自动任务执行566 行)
│ ├── load.md /aide:load 项目认知载入96 行) │ ├── docs.md /aide:docs 文档管理402 行)
│ ├── run.md /aide:run 任务执行392 行) │ ├── load.md /aide:load 项目认知载入95 行)
── setup.md /aide:setup 环境配置93 行) ── readme.md /aide:readme README 生成253 行)
├── skills/ 技能定义 │ ├── run.md /aide:run 任务执行557 行)
│ ├── setup.md /aide:setup 环境配置92 行)
│ ├── user-docs.md /aide:user-docs 用户文档生成401 行)
│ └── user-graph.md /aide:user-graph 用户流程图生成329 行)
├── skills/ 技能定义5 个)
│ ├── aide/ 基础命令指南 │ ├── aide/ 基础命令指南
│ │ └── SKILL.md aide skill569 行) │ │ └── SKILL.md aide skill603 行)
│ ├── env-config/ 环境配置指南 │ ├── env-config/ 环境配置指南
│ │ └── SKILL.md env-config skill299 行) │ │ └── SKILL.md env-config skill298 行)
│ ├── readme-templates/ README 模板集
│ │ ├── SKILL.md readme-templates skill106 行)
│ │ ├── templates/ 基础模板5 个)
│ │ │ ├── application.md 应用程序模板
│ │ │ ├── documentation.md 文档模板
│ │ │ ├── library.md 库模板
│ │ │ ├── minimal.md 最小模板
│ │ │ └── monorepo.md 多项目仓库模板
│ │ └── modules/ 可选模块10 个)
│ │ ├── module-api.md
│ │ ├── module-architecture.md
│ │ ├── module-changelog.md
│ │ ├── module-configuration.md
│ │ ├── module-contributing.md
│ │ ├── module-examples.md
│ │ ├── module-faq.md
│ │ ├── module-installation.md
│ │ ├── module-license.md
│ │ └── module-quickstart.md
│ ├── rework/ 返工流程指南
│ │ └── SKILL.md rework skill165 行)
│ └── task-parser/ 口语化内容解析 │ └── task-parser/ 口语化内容解析
│ └── SKILL.md task-parser skill280 行) │ └── SKILL.md task-parser skill279 行)
└── docs/ 插件文档 └── docs/ 插件文档
├── README.md 设计文档导览207 行) ├── README.md 设计文档导览
├── commands/ 命令文档 ├── commands/ 命令文档
│ ├── docs.md │ ├── docs.md
│ ├── load.md │ ├── load.md
@@ -47,13 +72,19 @@ aide-marketplace/
| 文件 | 类型 | 说明 | | 文件 | 类型 | 说明 |
|------|------|------| |------|------|------|
| .claude-plugin/marketplace.json | 配置 | 市场元数据,定义市场名和插件列表 | | .claude-plugin/marketplace.json | 配置 | 市场元数据,定义市场名和插件列表 |
| aide-plugin/.claude-plugin/plugin.json | 配置 | 插件元数据,版本 2.0.6 | | aide-plugin/.claude-plugin/plugin.json | 配置 | 插件元数据,版本 2.1.3 |
| aide-plugin/commands/auto-run.md | Command | /aide:auto-run 全自动任务执行流程 |
| aide-plugin/commands/docs.md | Command | /aide:docs 项目文档管理流程 | | aide-plugin/commands/docs.md | Command | /aide:docs 项目文档管理流程 |
| aide-plugin/commands/load.md | Command | /aide:load 项目认知载入流程 | | aide-plugin/commands/load.md | Command | /aide:load 项目认知载入流程 |
| aide-plugin/commands/readme.md | Command | /aide:readme README 生成流程 |
| aide-plugin/commands/run.md | Command | /aide:run 任务执行核心流程 | | aide-plugin/commands/run.md | Command | /aide:run 任务执行核心流程 |
| aide-plugin/commands/setup.md | Command | /aide:setup 环境配置流程 | | aide-plugin/commands/setup.md | Command | /aide:setup 环境配置流程 |
| aide-plugin/commands/user-docs.md | Command | /aide:user-docs 用户文档生成流程 |
| aide-plugin/commands/user-graph.md | Command | /aide:user-graph 用户流程图生成流程 |
| aide-plugin/skills/aide/SKILL.md | Skill | aide 命令使用指南 | | aide-plugin/skills/aide/SKILL.md | Skill | aide 命令使用指南 |
| aide-plugin/skills/env-config/SKILL.md | Skill | 环境配置详细指南 | | aide-plugin/skills/env-config/SKILL.md | Skill | 环境配置详细指南 |
| aide-plugin/skills/readme-templates/SKILL.md | Skill | README 模板选择和使用指南 |
| aide-plugin/skills/rework/SKILL.md | Skill | 返工流程处理指南 |
| aide-plugin/skills/task-parser/SKILL.md | Skill | 口语化内容解析器 | | aide-plugin/skills/task-parser/SKILL.md | Skill | 口语化内容解析器 |
| aide-plugin/docs/README.md | 文档 | 插件设计文档导览 | | aide-plugin/docs/README.md | 文档 | 插件设计文档导览 |
@@ -66,12 +97,16 @@ aide-marketplace/
| `/aide:setup` | 环境配置(分析、检测、修复) | env-config | 是 | | `/aide:setup` | 环境配置(分析、检测、修复) | env-config | 是 |
| `/aide:load` | 项目认知载入 | aide | 否(由 run 调用) | | `/aide:load` | 项目认知载入 | aide | 否(由 run 调用) |
| `/aide:docs` | 项目文档创建和维护 | aide | 是 | | `/aide:docs` | 项目文档创建和维护 | aide | 是 |
| `/aide:run` | 任务执行(核心命令) | aide | 否 | | `/aide:run` | 任务执行(核心命令) | aide, rework | 否 |
| `/aide:auto-run` | 全自动任务执行 | aide, task-parser | 是 |
| `/aide:readme` | README 生成 | readme-templates | 是 |
| `/aide:user-docs` | 用户文档生成 | readme-templates | 是 |
| `/aide:user-graph` | 用户流程图生成 | - | 是 |
### /aide:run 工作流程 ### /aide:run 工作流程
``` ```
task-optimize → flow-design → impl → verify → docs → finish task-optimize → flow-design → impl → verify → docs → confirm → finish
│ │ │ │
├─ 任务分析 ├─ 流程图设计 ├─ 任务分析 ├─ 流程图设计
├─ 复杂度评估 └─ PlantUML 校验 ├─ 复杂度评估 └─ PlantUML 校验
@@ -79,12 +114,62 @@ task-optimize → flow-design → impl → verify → docs → finish
└─ 生成任务细则 └─ 生成任务细则
``` ```
### /aide:auto-run 工作流程
`/aide:run` 的自动化版本,去除所有需要用户参与的环节:
```
task-optimize → flow-design → impl → verify → docs → finish
│ │
├─ 待定项自动决策 └─ 跳过 confirm 阶段
└─ 任务细则自动确认
```
**与 /aide:run 的区别**
- 待定项自动决策(无需用户 Web 确认)
- 任务细则自动确认(无需用户确认)
- 跳过 confirm 阶段(无需用户验收)
- 错误自动处理(优先委托子代理,否则自行解决)
### /aide:readme 工作流程
```
检查规范文件 → 规范引导/README生成
├─ 不存在 → 分析项目 → 推荐模板 → 创建规范
└─ 存在 → 读取规范 → 加载项目信息 → 生成README
```
### /aide:user-docs 工作流程
支持分步执行和接续执行:
```
检查计划文件 → 分析和计划/接续执行
├─ 不存在 → 分析项目 → 规划结构 → 生成计划
└─ 存在 → 读取进度 → 继续执行步骤
```
### /aide:user-graph 工作流程
用户流程图生成,支持分步执行:
```
检查计划文件 → 分析和计划/接续执行
├─ 不存在 → 区块划分 → 复杂度分析 → 生成计划
└─ 存在 → 读取进度 → 继续执行步骤
```
### Skills技能 ### Skills技能
| 技能 | 触发方式 | 职责 | | 技能 | 触发方式 | 职责 |
|------|----------|------| |------|----------|------|
| aide | /aide:run 强制触发 | aide 命令基础用法 | | aide | /aide:run 强制触发 | aide 命令基础用法 |
| env-config | /aide:setup 强制触发 | 环境配置详细指南 | | env-config | /aide:setup 强制触发 | 环境配置详细指南 |
| readme-templates | /aide:readme 强制触发 | README 模板选择和使用指南 |
| rework | 返工场景时触发 | 返工流程处理指南 |
| task-parser | 检测到口语化内容时 | 口语化任务内容解析 | | task-parser | 检测到口语化内容时 | 口语化任务内容解析 |
### aide skill ### aide skill
@@ -92,7 +177,7 @@ task-optimize → flow-design → impl → verify → docs → finish
提供 aide 命令行工具的完整使用指南,包括: 提供 aide 命令行工具的完整使用指南,包括:
- `aide env` - 环境管理ensure/list/set - `aide env` - 环境管理ensure/list/set
- `aide flow` - 进度追踪start/next-step/back-step/next-part/back-part/issue/error/status/list/show - `aide flow` - 进度追踪start/next-step/back-step/next-part/back-part/back-confirm/issue/error/status/list/show
- `aide decide` - 待定项确认submit/result - `aide decide` - 待定项确认submit/result
- `aide config` - 配置管理get/set - `aide config` - 配置管理get/set
- `aide init` - 初始化 - `aide init` - 初始化
@@ -107,6 +192,31 @@ task-optimize → flow-design → impl → verify → docs → finish
- node_deps 模块详解 - node_deps 模块详解
- 故障排除指南 - 故障排除指南
### readme-templates skill
提供 README 模板体系:
**基础模板**5 个):
- `minimal.md` - 小工具/脚本
- `library.md` - 库/SDK
- `application.md` - 应用程序
- `documentation.md` - 文档/教程
- `monorepo.md` - 多项目仓库
**可选模块**10 个):
- quickstart、installation、examples、api、configuration
- architecture、contributing、changelog、license、faq
### rework skill
提供返工流程处理指南:
- 返工类型判断task-optimize/flow-design/impl/verify
- task.source 更新格式
- new-requirements.md 格式
- 确认机制back-part → back-confirm
- 用户提醒模板
### task-parser skill ### task-parser skill
用于解析口语化任务内容: 用于解析口语化任务内容:
@@ -134,7 +244,7 @@ task-optimize → flow-design → impl → verify → docs → finish
```json ```json
{ {
"name": "aide-plugin", "name": "aide-plugin",
"version": "2.0.6", "version": "2.1.3",
"description": "Aide 工作流体系插件" "description": "Aide 工作流体系插件"
} }
``` ```
@@ -150,6 +260,11 @@ task-optimize → flow-design → impl → verify → docs → finish
- Commands 定义"做什么"和"按什么顺序做" - Commands 定义"做什么"和"按什么顺序做"
- Skills 定义"怎么调用工具" - Skills 定义"怎么调用工具"
2. **版本管理**:当前版本 2.0.6,原 `/aide:init``/aide:prep``/aide:exec` 已重组为 `/aide:setup``/aide:load``/aide:docs``/aide:run` 2. **版本管理**:当前版本 2.1.3
- 2.1.3:新增 `/aide:readme``/aide:user-docs``/aide:user-graph` 命令,新增 `readme-templates``rework` 技能
- 2.1.0:新增 `/aide:auto-run` 全自动任务执行命令
-`/aide:init``/aide:prep``/aide:exec` 已重组为 `/aide:setup``/aide:load``/aide:docs``/aide:run`
3. **触发机制**Skills 按需触发,避免信息过载 3. **触发机制**Skills 按需触发,避免信息过载
4. **分步执行支持**`/aide:user-docs``/aide:user-graph` 支持分步执行和接续执行,适用于大型项目

View File

@@ -1,7 +1,7 @@
# aide-program核心程序 # aide-program核心程序
> 路径:`aide-program/` > 路径:`aide-program/`
> 最后更新2025-12-17 > 最后更新2025-12-18
## 概述 ## 概述
@@ -11,10 +11,6 @@ Aide 命令行工具的核心实现,提供环境检测、流程追踪、待定
``` ```
aide-program/ aide-program/
├── .aide/ 程序级 Aide 配置
│ ├── config.toml 配置文件
│ ├── decisions/ [空目录] 决策记录
│ └── logs/ [空目录] 日志归档
├── aide/ Python 源码包 ├── aide/ Python 源码包
│ ├── __init__.py 包入口docstring │ ├── __init__.py 包入口docstring
│ ├── __main__.py 模块入口 │ ├── __main__.py 模块入口
@@ -47,6 +43,7 @@ aide-program/
│ │ ├── storage.py 状态存储147 行) │ │ ├── storage.py 状态存储147 行)
│ │ ├── validator.py 流程校验55 行) │ │ ├── validator.py 流程校验55 行)
│ │ ├── git.py Git 集成79 行) │ │ ├── git.py Git 集成79 行)
│ │ ├── branch.py 分支管理462 行)
│ │ ├── hooks.py 环节钩子148 行) │ │ ├── hooks.py 环节钩子148 行)
│ │ ├── errors.py 错误类型9 行) │ │ ├── errors.py 错误类型9 行)
│ │ └── utils.py 工具函数19 行) │ │ └── utils.py 工具函数19 行)
@@ -125,6 +122,7 @@ aide-program/
| aide/flow/storage.py | 源码 | 状态文件读写和归档 | | aide/flow/storage.py | 源码 | 状态文件读写和归档 |
| aide/flow/validator.py | 源码 | 环节跳转校验 | | aide/flow/validator.py | 源码 | 环节跳转校验 |
| aide/flow/git.py | 源码 | Git 操作封装 | | aide/flow/git.py | 源码 | Git 操作封装 |
| aide/flow/branch.py | 源码 | 分支管理器,任务分支创建、记录、合并 |
| aide/flow/hooks.py | 源码 | PlantUML/CHANGELOG 钩子 | | aide/flow/hooks.py | 源码 | PlantUML/CHANGELOG 钩子 |
| aide/flow/errors.py | 源码 | FlowError 异常类 | | aide/flow/errors.py | 源码 | FlowError 异常类 |
| aide/flow/utils.py | 源码 | 时间戳和文本处理 | | aide/flow/utils.py | 源码 | 时间戳和文本处理 |

View File

@@ -1,25 +1,27 @@
# 项目配置与文档 # 项目配置与文档
> 路径:`.aide/`, `docs/`, `discuss/`, `reply/`, `statements/`, 根目录配置文件 > 路径:`.aide/`, `docs/`, 根目录配置文件
> 最后更新2025-12-17 > 最后更新2025-12-19
## 概述 ## 概述
项目级配置、Aide 数据目录和项目文档资源。包括 Aide 配置、项目说明文档Claude Code 指南文档和开发声明 项目级配置、Aide 数据目录和项目文档资源。包括 Aide 配置、项目说明文档Claude Code 指南文档。
## 目录结构 ## 目录结构
``` ```
ccoptimize/ agent-aide/
├── .aide/ Aide 配置和数据目录 ├── .aide/ Aide 配置和数据目录
│ ├── config.toml 项目配置文件(225 行,全注释) │ ├── config.toml 项目配置文件(全注释)
│ ├── flow-status.json 当前任务进度 │ ├── branches.json 分支概况数据JSON
│ ├── branches.md 分支概况文档Markdown
│ ├── decisions/ [空目录] 待定项决策记录 │ ├── decisions/ [空目录] 待定项决策记录
│ ├── diagrams/ 流程图目录 │ ├── diagrams/ [空目录] PlantUML 流程图
│ ├── *.puml PlantUML 源文件 │ ├── task-plans/ [空目录] 复杂任务计划文档
│ │ └── *.png 生成的图片
│ ├── logs/ 历史任务归档 │ ├── logs/ 历史任务归档
│ │ ── flow-status.*.json 归档任务文件 │ │ ── YYYY-MM-DDTHH-MM-SS-status.json 任务状态归档
│ │ ├── YYYY-MM-DDTHH-MM-SS-decisions/ 决策记录归档
│ │ └── flow-status.*.json 旧格式归档(历史)
│ └── project-docs/ 项目文档(本文档所在) │ └── project-docs/ 项目文档(本文档所在)
│ ├── README.md 总导览 │ ├── README.md 总导览
│ ├── block-plan.md 区块计划 │ ├── block-plan.md 区块计划
@@ -28,18 +30,19 @@ ccoptimize/
│ ├── aide-marketplace.md │ ├── aide-marketplace.md
│ └── project-config-docs.md │ └── project-config-docs.md
├── docs/ 项目文档目录 ├── docs/ 项目文档目录
── aide-overview.md Aide 系统概述136 行) ── reference/ 参考文档
├── project-details.md 项目详细说明(约 300 行) ├── aide-overview.md Aide 系统概述135 行)
├── 01-自定义斜杠命令指南.md Claude Code 命令指南304 行) ├── project-details.md 项目详细说明273 行)
│ ├── 02-技能指南.md Claude Code 技能指南(约 400 行) ├── 01-自定义斜杠命令指南.md Claude Code 命令指南(303 行)
│ ├── 03-插件指南.md Claude Code 插件指南(约 350 行) ├── 02-技能指南.md Claude Code 技能指南(457 行)
│ ├── 04-插件市场指南.md Claude Code 市场指南(约 320 行) ├── 03-插件指南.md Claude Code 插件指南(436 行)
└── 为什么要更换到command+skill+专用处理程序.md 设计背景 ├── 04-插件市场指南.md Claude Code 市场指南382 行)
├── discuss/ [空目录] 讨论记录目录 │ └── 为什么要更换到command+skill+专用处理程序.md 设计背景245 行)
├── reply/ [空目录] 回复记录目录 ├── cache/ 缓存目录
├── statements/ 声明文档目录 │ ├── old-task.md 旧任务文档
│ ├── old-task-section.md 历史任务节选 │ ├── update_docs.sh 文档更新脚本
│ └── optimize.md 口头话解析准则 │ └── verify_links.sh 链接验证脚本
├── .cache/ [ignored] 隐藏缓存目录
├── AGENTS.md Agent 配置说明 ├── AGENTS.md Agent 配置说明
├── CHANGELOG.md 变更日志 ├── CHANGELOG.md 变更日志
├── CLAUDE.md Claude 配置指令 ├── CLAUDE.md Claude 配置指令
@@ -54,22 +57,21 @@ ccoptimize/
| 文件 | 类型 | 说明 | | 文件 | 类型 | 说明 |
|------|------|------| |------|------|------|
| .aide/config.toml | 配置 | 项目配置,全注释自文档化 | | .aide/config.toml | 配置 | 项目配置,全注释自文档化 |
| .aide/flow-status.json | 数据 | 当前任务进度状态 | | .aide/branches.json | 数据 | 分支概况数据JSON 格式) |
| .aide/branches.md | 文档 | 分支概况文档Markdown 格式) |
| .aide/decisions/ | 目录 | [空目录] 待定项决策记录 | | .aide/decisions/ | 目录 | [空目录] 待定项决策记录 |
| .aide/diagrams/ | 目录 | PlantUML 流程图 | | .aide/diagrams/ | 目录 | [空目录] PlantUML 流程图 |
| .aide/task-plans/ | 目录 | [空目录] 复杂任务计划文档 |
| .aide/logs/ | 目录 | 历史任务归档 | | .aide/logs/ | 目录 | 历史任务归档 |
| .aide/project-docs/ | 目录 | 面向 LLM 的项目文档 | | .aide/project-docs/ | 目录 | 面向 LLM 的项目文档 |
| docs/aide-overview.md | 文档 | Aide 系统架构和设计理念 | | docs/reference/aide-overview.md | 文档 | Aide 系统架构和设计理念 |
| docs/project-details.md | 文档 | 项目详细说明和实现状态 | | docs/reference/project-details.md | 文档 | 项目详细说明和实现状态 |
| docs/01-自定义斜杠命令指南.md | 文档 | Claude Code 斜杠命令指南 | | docs/reference/01-自定义斜杠命令指南.md | 文档 | Claude Code 斜杠命令指南 |
| docs/02-技能指南.md | 文档 | Claude Code 技能指南 | | docs/reference/02-技能指南.md | 文档 | Claude Code 技能指南 |
| docs/03-插件指南.md | 文档 | Claude Code 插件指南 | | docs/reference/03-插件指南.md | 文档 | Claude Code 插件指南 |
| docs/04-插件市场指南.md | 文档 | Claude Code 市场指南 | | docs/reference/04-插件市场指南.md | 文档 | Claude Code 市场指南 |
| docs/为什么要更换...md | 文档 | 架构设计背景说明 | | docs/reference/为什么要更换...md | 文档 | 架构设计背景说明 |
| discuss/ | 目录 | [空目录] 讨论记录 | | cache/ | 目录 | 临时缓存和脚本 |
| reply/ | 目录 | [空目录] 回复记录 |
| statements/old-task-section.md | 文档 | 历史任务节选 |
| statements/optimize.md | 文档 | 口头话解析准则 |
| AGENTS.md | 配置 | Agent 配置说明 | | AGENTS.md | 配置 | Agent 配置说明 |
| CHANGELOG.md | 文档 | 变更日志 | | CHANGELOG.md | 文档 | 变更日志 |
| CLAUDE.md | 配置 | Claude 指令(简体中文要求) | | CLAUDE.md | 配置 | Claude 指令(简体中文要求) |
@@ -90,9 +92,10 @@ Aide 的核心配置文件,完全自文档化(所有配置项均有详细注
|--------|------| |--------|------|
| `[general]` | 通用配置gitignore_aide | | `[general]` | 通用配置gitignore_aide |
| `[runtime]` | 运行时要求python_min, use_uv | | `[runtime]` | 运行时要求python_min, use_uv |
| `[task]` | 任务文档路径source, spec | | `[task]` | 任务文档路径source, spec, plans_path |
| `[env]` | 环境检测模块配置 | | `[env]` | 环境检测模块配置 |
| `[docs]` | 项目文档路径配置 | | `[docs]` | 项目文档路径配置path, block_plan_path |
| `[user_docs]` | 用户文档配置readme_path, rules_path, docs_path, docs_plan_path, graph_path, graph_plan_path |
| `[flow]` | 流程追踪配置phases, diagram_path | | `[flow]` | 流程追踪配置phases, diagram_path |
| `[plantuml]` | PlantUML 配置jar_path | | `[plantuml]` | PlantUML 配置jar_path |
| `[decide]` | 待定项确认配置port, bind, url, timeout | | `[decide]` | 待定项确认配置port, bind, url, timeout |
@@ -127,7 +130,7 @@ Claude 配置指令:
## 项目文档 ## 项目文档
### docs/aide-overview.md ### docs/reference/aide-overview.md
Aide 系统概述,包含: Aide 系统概述,包含:
- 系统简介和解决的问题 - 系统简介和解决的问题
@@ -136,7 +139,7 @@ Aide 系统概述,包含:
- 子区块索引 - 子区块索引
- 快速导航 - 快速导航
### docs/project-details.md ### docs/reference/project-details.md
项目详细说明,包含: 项目详细说明,包含:
- 项目架构 - 项目架构
@@ -153,11 +156,22 @@ Claude Code 功能的完整指南系列:
## 空目录说明 ## 空目录说明
| 目录 | 用途推断 | | 目录 | 用途 |
|------|----------| |------|------|
| discuss/ | 项目讨论记录存放目录 | | .aide/decisions/ | 待定项决策记录存放目录 |
| reply/ | 项目回复记录存放目录 | | .aide/diagrams/ | PlantUML 流程图存放目录 |
| .aide/decisions/ | aide decide 决策记录 | | .aide/task-plans/ | 复杂任务计划文档目录guide.md + spec-NN.md |
## 日志归档格式
`.aide/logs/` 目录下的归档文件:
**新格式(当前使用)**
- `YYYY-MM-DDTHH-MM-SS-status.json` - 任务状态归档
- `YYYY-MM-DDTHH-MM-SS-decisions/` - 决策记录归档目录
**旧格式(历史兼容)**
- `flow-status.YYYY-MM-DDTHH-MM-SS.json` - 旧版任务状态归档
## 依赖关系 ## 依赖关系
@@ -170,3 +184,4 @@ Claude Code 功能的完整指南系列:
2. **流程图**.puml 文件会被 aide flow 自动校验和构建 2. **流程图**.puml 文件会被 aide flow 自动校验和构建
3. **文档同步**:更新代码后注意同步更新 CHANGELOG.md 3. **文档同步**:更新代码后注意同步更新 CHANGELOG.md
4. **中文要求**:遵循 CLAUDE.md 中的简体中文要求 4. **中文要求**:遵循 CLAUDE.md 中的简体中文要求
5. **文档结构变化**`docs/` 下的文件已移至 `docs/reference/` 子目录

View File

@@ -2,6 +2,296 @@
本文件记录 Aide 项目对使用者可见的重要变更。 本文件记录 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 ## 2025-12-17
### 修复 ### 修复
@@ -157,3 +447,5 @@
- 实现 `aide flow`(进度追踪 + Git 自动提交 + 流程校验 + Hooks - 实现 `aide flow`(进度追踪 + Git 自动提交 + 流程校验 + Hooks
- 补充 `aide flow` 详细设计文档与导航链路 - 补充 `aide flow` 详细设计文档与导航链路

View File

@@ -72,7 +72,7 @@ aide env ensure --runtime
``` ```
/aide:run # 执行任务(核心命令) /aide:run # 执行任务(核心命令)
/aide:setup # 环境配置 /aide:setup # 环境配置
/aide:docs # 项目文档管理 /aide:docs/reference # 项目文档管理
``` ```
## 核心功能 ## 核心功能
@@ -81,7 +81,7 @@ aide env ensure --runtime
|------|------| |------|------|
| `/aide:run` | 任务执行(核心命令),整合任务准备和执行流程 | | `/aide:run` | 任务执行(核心命令),整合任务准备和执行流程 |
| `/aide:setup` | 环境配置,检测和修复开发环境 | | `/aide:setup` | 环境配置,检测和修复开发环境 |
| `/aide:docs` | 项目文档创建和维护 | | `/aide:docs/reference` | 项目文档创建和维护 |
| `/aide:load` | 项目认知载入(由 run 内部调用) | | `/aide:load` | 项目认知载入(由 run 内部调用) |
## aide 命令行工具 ## aide 命令行工具
@@ -100,10 +100,10 @@ aide decide result # 获取决策结果
## 文档 ## 文档
- [项目详细说明](docs/project-details.md) - 项目架构和实现状态 - [项目详细说明](docs/reference/project-details.md) - 项目架构和实现状态
- [Aide 系统概述](docs/aide-overview.md) - 系统设计理念 - [Aide 系统概述](docs/reference/aide-overview.md) - 系统设计理念
- [aide-plugin 文档](aide-marketplace/aide-plugin/docs/README.md) - 插件设计 - [aide-plugin 文档](aide-marketplace/aide-plugin/docs/reference/README.md) - 插件设计
- [aide-program 文档](aide-program/docs/README.md) - 命令行工具设计 - [aide-program 文档](aide-program/docs/reference/README.md) - 命令行工具设计
## 许可证 ## 许可证

View File

@@ -1,9 +1,9 @@
{ {
"name": "aide-plugin", "name": "aide-plugin",
"description": "Aide 工作流体系插件,提供环境配置、项目认知、文档管理和任务执行的标准化流程", "description": "Aide 工作流体系插件,提供环境配置、项目认知、文档管理和任务执行(含全自动模式)的标准化流程",
"version": "2.0.8", "version": "2.1.3",
"author": { "author": {
"name": "Aide Team" "name": "Aide Team"
}, },
"keywords": ["workflow", "task", "aide", "productivity", "documentation"] "keywords": ["workflow", "task", "aide", "productivity", "documentation", "automation"]
} }

View File

@@ -0,0 +1,566 @@
# Aide 全自动任务执行
你正在执行 Aide **全自动**任务执行流程。这是 `/aide:run` 的自动化版本,去除了所有需要用户参与的环节,适用于批量处理或后台执行场景。
**与 `/aide:run` 的主要区别**
- 待定项自动决策(无需用户 Web 确认)
- 任务细则自动确认(无需用户确认)
- 跳过 confirm 阶段(无需用户验收)
- 错误自动处理(优先委托子代理,否则自行解决)
## 参数
- `$ARGUMENTS`:任务文档路径(可选)
- 未传入时根据 flow 状态决定行为
---
## 前置准备
**首先触发 `aide` skill 学习 aide 命令的使用方法。**
这是一个非常长的任务,因此规划您的工作可能会很有益。**建议花费您的整个输出上下文来处理任务 - 只需确保您不会在有大量未提交的工作时用尽上下文。**继续系统地工作,直到您完成此任务。**您的上下文窗口将在接近其限制时自动压缩,允许您从中断的地方继续无限期地工作。因此,不要因为令牌预算问题而提前停止任务。**当您接近令牌预算限制时,在上下文窗口刷新前将您当前的进度和状态保存到内存中。始终尽可能坚持和自主,并完全完成任务,即使您的预算即将用尽。无论剩余上下文如何,永远不要人为地提前停止任何任务。
---
## 开始
### 检查 flow 状态
```bash
aide flow status
```
根据状态决定行为:
- **无活跃任务** 或 **当前任务已 finish** → 进入**新任务流程**
- **当前任务未完成** → 进入**续接流程**
---
## 新任务流程
### 阶段 1任务准备 (task-optimize)
#### 1.1 启动流程追踪
```bash
aide flow start task-optimize "开始任务准备: <任务简述>"
```
#### 1.2 确定任务文档
```bash
# 如果传入了参数
任务文档 = $ARGUMENTS
# 如果未传入参数,使用配置默认值
aide config get task.source
```
读取任务文档内容。如文档不存在,**报错退出**(全自动模式不支持交互式输入)。
#### 1.3 口语化内容检测
检查任务文档或用户对话是否具有以下口语化特征:
- 使用非正式的口头表达方式
- 包含大量模糊表述("我觉得"、"好像"、"大概"、"应该"等)
- 句子结构松散,缺乏条理性
- 包含冗余或重复的表达
- 思维跳跃,逻辑不连贯
**如果检测到口语化特征**
1. 触发 `task-parser` skill 学习口语化内容解析方法
2. 按照 skill 指南对内容进行深度理解和规范化转换
3. 将转换后的结构化内容作为后续分析的基础
> 即使内容部分口语化,也应进行解析,提取核心意图
#### 1.4 任务分析
##### 深度理解任务
- 任务要解决什么问题?
- 最终交付物是什么?
- 成功的标准是什么?
- 涉及哪些模块/系统?
- 是否有技术难点?
##### 分析项目环境
根据需要阅读相关代码/文档,理解任务与项目现有结构的关系。
> 复杂任务(多子目标、多方案对比)建议使用 sequential-thinking 进行结构化分析
#### 1.5 复杂度评估
根据**任务复杂度评估指导原则**(见附录)评估任务复杂度:
- **简单/中等任务**:直接生成任务细则
- **复杂/超大任务**:拆分为多个子计划
#### 1.6 任务优化
##### 准确性优化
- 识别**歧义**和**不明确之处**
- 识别**隐含假设**和**未说明的前提**
- 明确任务**边界**
##### 简洁性优化
- 识别**冗余表述**
- 区分**真冗余**与**必要强调**
##### 可执行性优化
- 将抽象要求转化为**具体步骤**
- 确保每个步骤有明确的**输入、输出、验证标准**
- 识别可能的**替代方案**
##### 生成待定项
对于存在多种方案、有歧义、需要用户确认的内容,准备待定项数据。
#### 1.7 待定项自动处理
**必须执行**,无论是否有待定项:
1. **如果有待定项**
- 分析各待定项的选项
- 对于每个待定项:
- 如果有 `recommend` 字段,选择推荐选项
- 如果无推荐,根据 `score` 字段选择最高分选项
- 如果无评分,选择第一个选项
- 记录决策理由到 flow 日志:
```bash
aide flow next-step "自动决策: <决策摘要>"
```
2. **如果无待定项**
- 继续下一步(无需向用户报告)
#### 1.8 生成任务细则
**必须执行**
##### 简单/中等任务
1. 根据分析结果生成任务细则文档
2. 保存到配置的路径:
```bash
aide config get task.spec
```
##### 复杂任务(需拆分为子计划)
1. 获取计划文档目录:
```bash
aide config get task.plans_path
```
2. 创建目录(如不存在)
3. 生成以下文档:
**任务计划总导览guide.md**
```markdown
# 任务计划总导览
## 任务简述
[一句话描述任务目标]
## 子计划列表
| # | 名称 | 状态 | 细则文档 |
|---|------|------|----------|
| 1 | [子计划1名称] | pending | spec-01.md |
| 2 | [子计划2名称] | pending | spec-02.md |
...
## 执行顺序
[说明子计划之间的依赖关系和执行顺序]
## 备注
[其他需要说明的内容]
```
**各子计划细则spec-01.md, spec-02.md, ...**
```markdown
# 子计划 N[名称]
## 目标
[具体目标]
## 具体步骤
1. [步骤1]
2. [步骤2]
...
## 验证标准
- [标准1]
- [标准2]
## 依赖
- 前置:[依赖的子计划,如无则写"无"]
- 后续:[依赖本计划的子计划,如无则写"无"]
```
##### 自动确认
全自动模式下,生成任务细则后直接进入下一阶段:
```bash
aide flow next-step "任务细则已生成,自动确认"
```
### 阶段 2流程设计 (flow-design)
```bash
aide flow next-part flow-design "进入流程设计环节"
```
#### 2.1 制定执行计划
- 具体的实现步骤
- 每个步骤的预期产出
- 潜在风险和应对方案
#### 2.2 创建流程图
在配置的流程图目录创建 PlantUML 源文件:
```bash
aide config get flow.diagram_path
```
##### 流程图类型
根据任务类型,需要创建不同类型的流程图:
| 类型 | 适用场景 | 必需性 |
|------|----------|--------|
| 任务执行流程图 | 所有任务 | **必需** |
| 程序逻辑流图 | 含程序设计与代码编写的任务 | **必需** |
##### 任务执行流程图规范
展示任务执行的步骤顺序:
- **步骤分解**:将任务分解为具体的执行步骤
- **顺序关系**:明确步骤之间的先后顺序
- **决策点**:标注关键决策点和分支条件
- **依赖关系**:体现步骤之间的依赖
##### 程序逻辑流图规范
展示程序代码的执行逻辑(仅限程序类任务):
- **入口点**:从程序入口函数(如 main、\_\_main\_\_开始
- **控制结构**体现顺序、分支if/switch、循环for/while结构
- **语义化抽象**:将代码逻辑抽象为人类可理解的业务描述,而非代码细节
- **模块化表示**
- 函数/模块表示为"盒子"
- 标注预期输入和输出
- 复杂函数可单独绘制详图
- **层次化组织**
- 主流程图展示程序整体执行流
- 关键子系统/模块可单独绘制详细流程图
- 通过引用关联主图与详图
> **为什么需要程序逻辑流图**
> - 用户可以通过流程图快速理解程序的执行逻辑
> - 在流程图阶段发现业务逻辑错误,避免实现后才发现方向错误
> - 比逐行审阅代码更高效
##### 流程图示例结构
```plantuml
@startuml
' 主程序流程图
start
:初始化配置;
:解析命令行参数;
if (参数有效?) then (是)
:调用处理模块;
note right: 详见 process-module.puml
else (否)
:显示错误信息;
stop
endif
:输出结果;
stop
@enduml
```
**所有任务必须有流程图**,用于:
- 规范化思考
- 方便用户审阅
- 早期发现逻辑错误
```bash
aide flow next-step "流程图设计完成"
```
#### 2.3 进入实现环节
```bash
aide flow next-part impl "流程设计完成,进入实现环节"
```
> aide flow 会自动校验 PlantUML 并生成 PNG
### 阶段 3迭代实现 (impl)
按计划执行,每完成一个步骤:
```bash
aide flow next-step "<完成内容简述>"
```
遇到问题时:
```bash
aide flow issue "<一般问题>"
aide flow error "<严重错误>"
```
#### 错误自动处理
全自动模式下,遇到错误时按以下流程处理:
1. **记录错误**
```bash
aide flow error "<错误描述>"
```
2. **尝试自动解决**
- **优先委托子代理**:如果存在 `general-purpose` 子代理,使用 Task 工具委托其解决
- **自行解决**:如果无子代理可用,则自行解决
3. **自行解决前的必要操作**(见下文「计划外情况处理」)
需要回退时:
```bash
aide flow back-step "<原因>"
aide flow back-part <环节名> "<原因>"
```
#### 计划外情况处理
当遇到以下情况时:
- 只能自行解决的问题(无子代理可用)
- 可能大幅消耗上下文的计划外情况
- 需要重大决策但无法委托的情况
**必须执行以下操作后才能继续**
1. **记录遇到的情况**
```bash
aide flow issue "<情况描述>"
```
2. **更新任务计划文档**
- 简单任务:更新 `task.spec`
- 复杂任务:更新相应的子计划文档(`spec-NN.md`
- 新增「计划外处理」章节,说明:
- 遇到的情况
- 选择的处理方案
- 预期影响
3. **记录更新完成**
```bash
aide flow next-step "计划外情况已记录,继续执行"
```
4. **执行处理方案**
> 这一机制确保即使上下文中断,也能通过文档恢复状态
### 阶段 4验证交付 (verify)
```bash
aide flow next-part verify "实现完成,进入验证环节"
```
- 对照任务细则验证每个成功标准
- 执行测试(如适用)
- 验证失败则回退修复
```bash
aide flow next-step "验证完成: <验证结论>"
```
### 阶段 5文档更新 (docs)
```bash
aide flow next-part docs "验证通过,进入文档环节"
```
更新相关文档:
- `README.md`(如有用户可见变更)
- `CHANGELOG.md`
- 其他相关文档
```bash
aide flow next-step "文档更新完成"
```
### 阶段 6收尾 (finish)
> 全自动模式跳过用户确认阶段,从文档更新直接进入收尾
```bash
aide flow next-part finish "文档更新完成,进入收尾"
```
- 检查遗漏的 TODO
- 输出完成摘要
---
## 续接流程
当检测到未完成的任务时:
### 1. 智能续接判断
1. **检查任务细则文档是否存在**
```bash
aide config get task.spec
```
读取配置的细则文档路径。
2. **如果细则文档不存在**
- 旧状态已无效
- **报错退出**:「检测到未完成的任务,但任务细则不存在。全自动模式无法继续。」
3. **如果细则文档存在**
- 阅读细则文档内容
- 判断上次未完成任务的名称和步骤是否符合细则含义
- **符合** → 接续之前的状态继续执行
- **不符合** → 旧状态已无效,需要 start 新任务
4. **如果判断为应继续,但 git 状态不干净**
- aide flow 会自动执行 git add . 并创建清理提交
- 这是预期行为,无需手动处理
### 2. 分析当前进度
```bash
aide flow status
aide flow show <task_id>
```
了解:
- 当前处于哪个环节
- 已完成哪些步骤
- 最后的操作是什么
### 2. 载入项目认知
调用 `/aide:load` 的逻辑,按需载入项目文档。
### 3. 读取任务细则
```bash
aide config get task.spec
```
读取任务细则,了解任务目标和计划。
### 4. 继续执行
根据当前环节,从中断处继续执行。
---
## 复杂任务的子计划执行
对于拆分为多个子计划的复杂任务:
### 文档结构
复杂任务的文档存放在 `task.plans_path` 配置的目录下(默认 `.aide/task-plans/`
```
.aide/task-plans/
├── guide.md # 任务计划总导览
├── spec-01.md # 子计划 1 细则
├── spec-02.md # 子计划 2 细则
└── spec-NN.md # 子计划 N 细则
```
### 执行模式
```
task-optimize → [flow-design → impl → verify → docs] × N → finish
```
> 全自动模式:跳过 confirm 阶段,每个子计划完成 docs 后直接进入下一个子计划
### 流程
1. 完成 task-optimize
- 生成 `guide.md`(任务计划总导览)
- 生成所有 `spec-NN.md`(子计划细则)
2. 对每个子计划:
- 进入 flow-design为该子计划设计流程图
- 进入 impl实现该子计划
- 进入 verify验证该子计划
- 进入 docs更新该子计划相关文档
- 更新 `guide.md` 中该子计划状态为 `completed`
3. 所有子计划完成后,进入 finish
### 子计划切换
完成一个子计划的 docs 后:
```bash
aide flow next-step "子计划 N 完成,开始子计划 N+1"
aide flow back-part flow-design "开始下一个子计划的流程设计"
```
### 子计划状态管理
每完成一个子计划,更新 `guide.md` 中的状态表:
| # | 名称 | 状态 | 细则文档 |
|---|------|------|----------|
| 1 | [子计划1名称] | **completed** | spec-01.md |
| 2 | [子计划2名称] | **in_progress** | spec-02.md |
| 3 | [子计划3名称] | pending | spec-03.md |
---
## 附录:任务复杂度评估指导原则
### 评估维度
1. **结构维度**:模块数量、文件数量、依赖关系
2. **逻辑维度**:业务复杂度、状态管理、边界条件
3. **集成维度**:外部依赖、数据格式、兼容性
4. **风险维度**:技术风险、影响范围、回滚难度
### 复杂度等级
| 等级 | 特征 | 处理方式 |
|------|------|----------|
| 简单 | 单文件或少量文件,逻辑清晰 | 直接执行 |
| 中等 | 2-4 个模块,有一定依赖 | 直接执行,注意顺序 |
| 复杂 | 5+ 模块,复杂依赖 | **拆分为子计划** |
| 超大 | 10+ 模块,全面重构 | 拆分为独立任务 |
### 拆分判断标准
满足以下任一条件时应拆分:
1. 涉及 3 个以上独立功能模块
2. 任务自然分为多个可独立交付的阶段
3. 存在高风险环节,需要阶段性验证
4. 存在明确的前后依赖关系
5. 单次对话可能无法完成

View File

@@ -6,13 +6,38 @@
> **完全深度探索**:不考虑过度设计、开销、效率问题。对项目中的每一个文件、每一个目录(包括空目录)都要完全覆盖,不允许遗漏。 > **完全深度探索**:不考虑过度设计、开销、效率问题。对项目中的每一个文件、每一个目录(包括空目录)都要完全覆盖,不允许遗漏。
## 分步执行机制
此命令支持**真正有效的分步执行和接续执行**,适用于任意规模项目(包括百万行代码级别)。
### 设计原则
1. **索引式计划文档**`block-plan.md` 只做索引,详细信息存在独立步骤文档中
2. **自包含步骤文档**:每个步骤包含执行所需的全部信息,接续执行无需重新分析
3. **粒度动态控制**:根据区块大小动态拆分步骤,确保单次对话可完成
4. **分析与执行分离**:分析阶段产出详细计划,执行阶段直接产出
### 文档结构
```
.aide/project-docs/
├── README.md # 总导览
├── block-plan.md # 区块计划(索引式)
├── steps/ # 步骤详情目录
│ ├── step-001.md # 步骤1详情
│ ├── step-002.md # 步骤2详情
│ └── ...
└── blocks/ # 区块文档
├── block-1.md
└── ...
```
## 前置准备 ## 前置准备
**首先触发 `aide` skill 学习 aide 命令的使用方法。** **首先触发 `aide` skill 学习 aide 命令的使用方法。**
这是一个非常长的任务,因此规划您的工作可能会很有益。**建议花费您的整个输出上下文来处理任务 - 只需确保您不会在有大量未提交的工作时用尽上下文。**继续系统地工作,直到您完成此任务。**您的上下文窗口将在接近其限制时自动压缩,允许您从中断的地方继续无限期地工作。因此,不要因为令牌预算问题而提前停止任务。**当您接近令牌预算限制时,在上下文窗口刷新前将您当前的进度和状态保存到内存中。始终尽可能坚持和自主,并完全完成任务,即使您的预算即将用尽。无论剩余上下文如何,永远不要人为地提前停止任何任务。 这是一个非常长的任务,因此规划您的工作可能会很有益。**建议花费您的整个输出上下文来处理任务 - 只需确保您不会在有大量未提交的工作时用尽上下文。**继续系统地工作,直到您完成此任务。**您的上下文窗口将在接近其限制时自动压缩,允许您从中断的地方继续无限期地工作。因此,不要因为令牌预算问题而提前停止任务。**当您接近令牌预算限制时,在上下文窗口刷新前将您当前的进度和状态保存到内存中。始终尽可能坚持和自主,并完全完成任务,即使您的预算即将用尽。无论剩余上下文如何,永远不要人为地提前停止任何任务。
--- ---
## 开始 ## 开始
@@ -22,17 +47,19 @@
```bash ```bash
aide config get docs.path aide config get docs.path
aide config get docs.block_plan_path aide config get docs.block_plan_path
aide config get docs.steps_path
``` ```
如果未配置,使用默认值: 如果未配置,使用默认值:
- 文档目录:`.aide/project-docs` - 文档目录:`.aide/project-docs`
- 区块计划:`.aide/project-docs/block-plan.md` - 区块计划:`.aide/project-docs/block-plan.md`
- 步骤目录:`.aide/project-docs/steps`
### 检查文档状态 ### 检查文档状态
检查文档目录是否存在及其内容 检查区块计划文件是否存在
- 不存在或为空 → 进入**创建流程** - **不存在** → 进入**创建流程**
- 已存在 → 进入**更新流程** - **已存在** → 进入**接续流程**
--- ---
@@ -63,34 +90,7 @@ find . -not -path './.git/*' -not -name '.git' | sort
#### 1.3 生成目录树结构 #### 1.3 生成目录树结构
生成类似 `tree` 命令输出的完整目录结构,对于 .gitignore 中的项目标注 `[ignored]` 生成完整目录结构,对于 .gitignore 中的项目标注 `[ignored]`
**目录树必须完整**
- 根目录下的**所有**子目录都必须列出(包括非代码目录如 docs/、assets/、discuss/ 等)
- 每个目录至少有简短说明
- 被忽略的目录也要列出并标注 `[ignored]`
```
project/
├── src/ 源码目录
│ ├── main.py
│ ├── utils/
│ │ ├── helper.py
│ │ └── config.py
│ └── __init__.py
├── tests/ 测试目录
│ └── test_main.py
├── docs/ 项目文档目录
│ ├── design.md
│ └── api.md
├── discuss/ 讨论记录目录
├── assets/ [空目录] 资源文件
├── cache/ [ignored]
├── node_modules/ [ignored]
├── .gitignore
├── README.md
└── requirements.txt
```
#### 1.4 统计项目信息 #### 1.4 统计项目信息
@@ -102,7 +102,7 @@ project/
- 代码行数:约 xxx 行 - 代码行数:约 xxx 行
``` ```
### 阶段 2初步区块划分 ### 阶段 2区块划分
根据以下规则划分区块: 根据以下规则划分区块:
@@ -110,193 +110,253 @@ project/
2. **按功能模块**:相关功能的文件归为一个区块 2. **按功能模块**:相关功能的文件归为一个区块
3. **包含空目录**:空目录也要归入相应区块 3. **包含空目录**:空目录也要归入相应区块
4. **低耦合**:区块间依赖关系尽量简单 4. **低耦合**:区块间依赖关系尽量简单
5. **完整覆盖**根目录下每个非忽略的子目录都必须归入某个区块 5. **完整覆盖**:每个非忽略的子目录都必须归入某个区块
> **强制规则**:非代码目录(如 `docs/`、`assets/`、`discuss/` 等)同样必须作为区块进行覆盖,不能因为"非核心代码"而跳过。 ### 阶段 3步骤生成关键阶段
生成初步区块计划: **这是实现有效分步执行的核心阶段。**
#### 3.1 评估区块复杂度
对每个区块评估:
| 复杂度 | 文件数 | 代码行数 | 处理方式 |
|--------|--------|----------|----------|
| 小 | <20 | <2000 | 整个区块作为 1 个步骤 |
| | 20-100 | 2000-10000 | 按子目录拆分为 2-5 个步骤 |
| | 100-500 | 10000-50000 | 按文件组拆分为 5-15 个步骤 |
| 超大 | >500 | >50000 | 按单文件或小文件组拆分 |
#### 3.2 生成步骤文档
**为每个步骤生成独立的步骤文档**,存放在 `steps/` 目录。
**步骤文档格式**
```markdown
# 步骤 XXX[区块名] - [子任务描述]
## 元信息
| 属性 | 值 |
|------|-----|
| 状态 | pending / in_progress / completed |
| 所属区块 | [区块名] |
| 预估工作量 | 小 / 中 / 大 |
| 依赖步骤 | [无 / step-XXX] |
## 任务描述
完全深度探索以下文件/目录,生成/更新区块文档中的相应部分。
## 目标文件清单
| 文件路径 | 类型 | 大小 | 状态 |
|----------|------|------|------|
| `path/to/file1.py` | 源码 | 150行 | - |
| `path/to/file2.py` | 源码 | 200行 | - |
| `path/to/subdir/` | 目录 | 5文件 | - |
| ... | ... | ... | ... |
## 已知上下文
(在分析阶段填写,供执行时参考)
### 目录结构
```
[该步骤涉及的目录结构]
```
### 关键信息
- [已知的模块职责]
- [已知的依赖关系]
- [需要特别注意的点]
## 输出要求
- 更新文件:`blocks/[区块名].md`
- 更新内容:
- [ ] 文件清单中的文件概述
- [ ] 核心组件说明
- [ ] 目录树对应部分
## 执行记录
(执行时填写)
| 时间 | 操作 | 备注 |
|------|------|------|
| | 开始执行 | |
| | 完成 | |
```
#### 3.3 生成区块计划(索引)
生成 `block-plan.md` 作为索引:
```markdown ```markdown
# 区块计划 # 区块计划
> 最后更新YYYY-MM-DD HH:MM
## 项目概况 ## 项目概况
- 项目名称xxx - 项目名称xxx
- 主要语言xxx - 主要语言xxx
- 文件总数xxx含 xx 被忽略) - 文件总数xxx含 xx 被忽略)
- 空目录数xxx - 空目录数xxx
- 代码行数xxx - 代码行数xxx
## 完整目录树(简化版) ## 目录树(简化版)
```
[前两层目录结构] [前两层目录结构]
## 区块划分
### 区块 1[名称]
- 路径xxx/
- 文件数xx
- 空目录xx
- 状态:待处理
### 区块 2[名称]
...
### 区块 N项目文档与资源
- 路径docs/, assets/, discuss/, statements/
- 文件数xx
- 空目录xx
- 状态:待处理
- 说明:非代码资源文件(文档、讨论记录、声明等)
> 注:即使是非代码目录,也必须作为区块进行完整深度探索
## 进度追踪
- [ ] 区块 1
- [ ] 区块 2
...
``` ```
### 阶段 3区块验证 ## 区块索引
对每个区块进行浅层探索: | # | 区块名 | 路径 | 文件数 | 步骤数 | 状态 | 步骤范围 |
1. 确认区块包含的所有文件和目录 |---|--------|------|--------|--------|------|----------|
2. 验证区块划分是否合理 | 1 | core | src/core/ | 25 | 3 | pending | 001-003 |
3. 调整区块边界(如需要) | 2 | utils | src/utils/ | 45 | 5 | pending | 004-008 |
4. 确保没有遗漏任何文件或目录 | ... | ... | ... | ... | ... | ... | ... |
**强制完整性检查** ## 步骤索引
```bash | 步骤 | 所属区块 | 描述 | 状态 |
# 列出根目录下所有子目录(排除 .git |------|----------|------|------|
ls -d */ 2>/dev/null | sort | [001](steps/step-001.md) | core | 分析 core 主模块 | pending |
| [002](steps/step-002.md) | core | 分析 core/parser | pending |
| [003](steps/step-003.md) | core | 分析 core/executor | pending |
| [004](steps/step-004.md) | utils | 分析 utils/helper | pending |
| ... | ... | ... | ... |
## 整体进度
- 总步骤数XX
- 已完成0
- 进行中0
- 待处理XX
## 执行日志
| 时间 | 步骤 | 操作 | 备注 |
|------|------|------|------|
| | | | |
``` ```
对照检查结果,确认 ### 阶段 4用户确认
- 每个子目录都出现在某个区块中,或被标记为 `[ignored]`
- 如有未归属的目录,必须补充区块或归入现有区块
- 运行以下验证:`所有区块覆盖的目录 被忽略的目录 = 根目录下所有子目录`
### 阶段 4逐区块完全深度探索 向用户展示计划摘要:
**对每个区块,必须完整阅读该区块内的每一个文件,从头到尾,不允许遗漏任何一行。** > 区块计划已生成。
>
> **区块数**X 个
> **总步骤数**Y 个
> **预估**:约需 Z 次对话完成
>
> 步骤文档已生成在 `steps/` 目录,每个步骤包含完整的执行信息。
>
> 是否开始执行?
#### 4.1 文件处理规则 **选项**
- **开始执行**(推荐)
- **查看计划详情**
- **稍后执行**
---
## 接续流程
当区块计划已存在时执行此流程。
### 1. 读取区块计划
读取 `block-plan.md` 获取:
- 步骤索引
- 整体进度
- 执行日志
### 2. 显示进度
> **项目文档进度**
>
> 总步骤数XX
> 已完成YYZZ%
> 当前步骤step-NNN
> 上次更新YYYY-MM-DD HH:MM
### 3. 确认继续
使用 AskUserQuestion
> 是否从当前进度继续执行?
**选项**
- **继续执行**(推荐)
- **查看待处理步骤**
- **重新开始**(清空进度)
---
## 步骤执行流程
### 执行单个步骤
1. **读取步骤文档**
- 打开 `steps/step-XXX.md`
- 获取目标文件清单和已知上下文
2. **完全深度探索**
- 按清单逐个阅读文件(从头到尾,不遗漏任何一行)
- 应用文件处理规则(见下文)
3. **生成/更新区块文档**
- 更新 `blocks/[区块名].md` 的相应部分
- 更新文件清单中的文件状态
4. **更新步骤文档**
- 标记步骤为 `completed`
- 填写执行记录
5. **更新区块计划**
- 更新步骤状态
- 更新整体进度
- 添加执行日志
### 文件处理规则
| 文件类型 | 处理方式 | | 文件类型 | 处理方式 |
|----------|----------| |----------|----------|
| **源码文件** | 完整阅读,分析逻辑和结构,提取核心信息 | | **源码文件** | 完整阅读,分析逻辑和结构,提取核心信息 |
| **配置文件** | 完整阅读,记录关键配置项 | | **配置文件** | 完整阅读,记录关键配置项 |
| **文档文件** | 完整阅读,提取主要内容 | | **文档文件** | 完整阅读,提取主要内容 |
| **二进制文件** | 根据文件名、大小、关联文件信息进行上下文推断概括 | | **二进制文件** | 根据文件名、大小、关联文件信息进行上下文推断 |
| **被忽略文件** | 只记录文件名/目录名,标注 `[ignored]`,不分析内容 | | **被忽略文件** | 只记录文件名/目录名,标注 `[ignored]` |
| **空目录** | 记录目录名,标注 `[空目录]`,根据名称推断用途 | | **空目录** | 记录目录名,标注 `[空目录]`,根据名称推断用途 |
#### 4.2 每个区块需要生成 ### 步骤间询问
1. **区块内完整目录树**:类似 tree 输出,包含该区块内所有文件和子目录 每完成一个步骤后:
2. **文件清单及概括**:每个文件一行概括说明
3. **核心组件说明**:重要类/函数/模块的详细说明
4. **依赖关系**:与其他区块的依赖
### 阶段 5生成总导览 > 步骤 XXX 已完成:[描述]
>
> 已完成YY/ZZ进度 WW%
>
> 是否继续下一步?
整合所有区块信息,生成总导览文档。 **选项**
- **继续**(推荐)
- **查看产出**
- **暂停(保存进度)**
**总导览使用简化版目录结构**(前两层),详细结构在各区块文档中展示 如选择暂停,当前进度已保存在步骤文档和区块计划中,下次可直接接续
--- ---
## 更新流程 ## 区块文档格式
### 阶段 1读取区块计划 每个区块生成独立文档 `blocks/[区块名].md`
读取现有的区块计划文档,了解当前文档结构和完整目录树。
### 阶段 2重新扫描目录
1. 重新执行完整目录扫描
2. 对比当前目录结构与文档中记录的结构
3. 识别新增、删除、移动的文件和目录
### 阶段 3分区块验证
对每个区块:
1. **完全重读**有变化的文件(从头到尾)
2. 识别差异(新增、删除、修改)
3. 更新区块内目录树
### 阶段 4增量更新
1. 更新有变化的区块文档
2. 更新区块内完整目录树
3. 更新总导览的简化目录树(如有结构变化)
4. 更新区块计划的时间戳
---
## 文档格式规范
### 总导览文档格式
```markdown
# [项目名称] 项目导览
> 本文档面向 LLM用于快速了解项目结构和脉络。
> 最后更新YYYY-MM-DD
## 项目简介
[1-2 段简要描述项目目的和核心功能]
## 技术栈
- 语言xxx
- 框架xxx
- 主要依赖xxx
## 项目结构(简化版)
[展示前两层目录结构,**必须包含所有顶层子目录**,包含空目录和忽略项标注]
```
project/
├── src/ 源码目录
├── tests/ 测试目录
├── docs/ 项目文档目录
├── discuss/ 讨论记录目录
├── assets/ [空目录] 资源文件
├── cache/ [ignored]
├── .gitignore
└── README.md
```
> 详细结构见各区块文档
> **注意**:此处必须列出根目录下的所有子目录,不能遗漏非代码目录
## 架构概述
[简要描述项目架构,可包含简单的 ASCII 图]
## 区块索引
| 区块 | 路径 | 文件数 | 说明 |
|------|------|--------|------|
| [区块名](./blocks/xxx.md) | xxx/ | xx | 简要说明 |
| ... | ... | ... | ... |
## 快速导航
- 想了解 xxx → 查看 [区块名](./blocks/xxx.md)
- 想修改 xxx → 查看 [区块名](./blocks/xxx.md)
## 统计信息
- 总目录数xx含 xx 个空目录)
- 总文件数xx
- 被忽略项xx
- 代码行数:约 xxx 行
```
### 子区块文档格式
```markdown ```markdown
# [区块名称] # [区块名称]
@@ -310,31 +370,23 @@ project/
## 目录结构 ## 目录结构
[区块内完整目录树,类似 tree 输出]
``` ```
xxx/ xxx/
├── module1/ ├── module1/
│ ├── __init__.py │ ├── __init__.py
── core.py ── core.py
│ └── utils.py
├── module2/
│ ├── __init__.py
│ └── handler.py
├── empty_dir/ [空目录] ├── empty_dir/ [空目录]
└── README.md └── README.md
``` ```
## 文件清单 ## 文件清单
| 文件 | 类型 | 说明 | | 文件 | 类型 | 行数 | 说明 |
|------|------|------| |------|------|------|------|
| module1/__init__.py | 源码 | 模块初始化 | | module1/__init__.py | 源码 | 10 | 模块初始化 |
| module1/core.py | 源码 | 核心逻辑实现 | | module1/core.py | 源码 | 150 | 核心逻辑实现 |
| module1/utils.py | 源码 | 工具函数 | | empty_dir/ | 目录 | - | [空目录] 用途推断 |
| empty_dir/ | 目录 | [空目录] 用途推断 | | ... | ... | ... | ... |
| data.bin | 二进制 | [根据上下文推断的说明] |
| ... | ... | ... |
## 核心组件 ## 核心组件
@@ -346,57 +398,103 @@ xxx/
- `method1()` - 说明 - `method1()` - 说明
- `method2()` - 说明 - `method2()` - 说明
## 接口说明
[对外暴露的接口、API、命令等]
## 依赖关系 ## 依赖关系
- 依赖:[其他区块名] - 依赖:[其他区块名]
- 被依赖:[其他区块名] - 被依赖:[其他区块名]
## 注意事项
[开发时需要注意的点]
``` ```
--- ---
## 多对话续接 ## 总导览文档格式
如果项目过大,可能需要多次对话完成 所有区块完成后,生成/更新总导览 `README.md`
1. 每次开始时读取区块计划 ```markdown
2. 找到未完成的区块 # [项目名称] 项目文档
3. **大小控制**:单个区块不超过 5000 行代码
4. **完全深度探索**该区块(每个文件从头到尾)
5. 生成区块内完整目录树
6. 更新区块计划的进度
--- > 面向 LLM 的项目文档,用于快速了解项目结构和脉络。
> 最后更新YYYY-MM-DD
## 完成 ## 项目概述
文档创建/更新完成后: [1-2 段简要描述]
1. 确认所有区块已处理 ## 技术栈
2. 确认每个区块都有完整目录树
3. 确认总导览包含简化版目录结构 - 语言xxx
4. 确认没有遗漏任何文件或目录(包括空目录) - 框架xxx
5. **运行目录完整性最终检查** - 主要依赖xxx
```bash
# 列出根目录下所有子目录 ## 目录结构(简化版)
ls -d */ 2>/dev/null | sort
```
逐一核对每个子目录,确认都出现在项目文档中(区块覆盖或标记 [ignored]
6. 向用户汇报完成情况
``` ```
项目文档已更新: project/
- 总导览:.aide/project-docs/README.md ├── src/ 源码目录
- 区块数N 个 ├── tests/ 测试目录
├── docs/ [空目录] 文档目录
├── cache/ [ignored]
└── README.md
```
> 详细结构见各区块文档
## 区块索引
| 区块 | 路径 | 文档 | 说明 |
|------|------|------|------|
| core | src/core/ | [查看](blocks/core.md) | 核心逻辑 |
| utils | src/utils/ | [查看](blocks/utils.md) | 工具函数 |
| ... | ... | ... | ... |
## 快速导航
- 想了解 xxx → 查看 [区块名](blocks/xxx.md)
- 想修改 xxx → 查看 [区块名](blocks/xxx.md)
## 统计信息
- 总目录数xx含 xx 个空目录) - 总目录数xx含 xx 个空目录)
- 总文件数xx - 总文件数xx
- 被忽略项xx - 被忽略项xx
- 本次更新:[新增/更新的区块列表] - 代码行数:约 xxx 行
``` ```
---
## 完成流程
当所有步骤完成时:
1. 确认所有步骤状态为 `completed`
2. 生成/更新总导览文档
3. 运行完整性检查
4. 向用户汇报完成情况
```
项目文档已完成:
- 总导览:.aide/project-docs/README.md
- 区块数N 个
- 总步骤数M 个
- 总目录数xx含 xx 个空目录)
- 总文件数xx
```
---
## 配置项
| 配置项 | 默认值 | 说明 |
|--------|--------|------|
| `docs.path` | `.aide/project-docs` | 文档目录 |
| `docs.block_plan_path` | `.aide/project-docs/block-plan.md` | 区块计划文件 |
| `docs.steps_path` | `.aide/project-docs/steps` | 步骤文档目录 |
---
## 注意事项
1. **分步执行**:每个步骤文档包含完整执行信息,接续执行无需重新分析
2. **进度持久化**:进度同时保存在步骤文档和区块计划中
3. **粒度可控**:大型区块自动拆分为多个步骤
4. **完整性保证**:每个文件的处理状态都有记录

View File

@@ -1,691 +0,0 @@
# Aide Linux 环境安装
你正在执行 Aide Linux 环境安装流程。这是一个**独立运行**的命令,用于在 Linux 系统上安装 aide 所需的全部环境依赖。
## 概述
本命令将检测并安装以下工具:
- **uv** - Python 包管理器(用于管理 Python 和依赖)
- **Python** - aide 运行时环境(通过 uv 安装)
- **Java JRE** - PlantUML 运行依赖(用于生成流程图)
---
## 开始
### 1. 系统检测
首先确认当前系统是 Linux
```bash
uname -s
```
如果不是 Linux 系统,请提示用户使用 `/aide:install-win` 命令。
### 2. 发行版识别
检测 Linux 发行版类型:
```bash
# 读取发行版信息
cat /etc/os-release 2>/dev/null || lsb_release -a 2>/dev/null
```
根据发行版确定包管理器:
- **Debian/Ubuntu**: apt
- **RHEL/Fedora/CentOS**: dnf (或 yum)
- **Arch/Manjaro**: pacman
- **openSUSE**: zypper
- **其他**: 手动安装
### 3. 环境检测
检测当前环境中各工具的可用性:
#### 3.1 检测 uv
```bash
uv --version 2>/dev/null
```
#### 3.2 检测 Python
```bash
# 先尝试 uv 管理的 Python
uv python list 2>/dev/null
# 如果 uv 不可用,检测系统 Python
python3 --version 2>/dev/null
python --version 2>/dev/null
```
#### 3.3 检测 Java
```bash
java -version 2>&1
```
#### 3.4 汇总检测结果
根据检测结果,列出:
- 已安装的工具及版本
- 缺失的工具
如果所有工具都已安装跳转到「aide PATH 配置」章节。
---
### 4. 安装模式选择
向用户询问安装模式:
**模式 A自动安装**
- 生成安装报告,用户确认后自动执行安装
- 适合希望快速完成的用户
**模式 B手动指南**
- 生成详细的操作指南和自动化脚本
- 用户可以自行选择执行
- 适合需要完全控制安装过程的用户
使用 AskUserQuestion 工具询问用户选择。
---
### 5. 模式 A自动安装
#### 5.1 生成安装报告
在执行任何安装操作前,必须先生成安装报告,内容包括:
**将要执行的操作**
- 列出每个需要安装的工具
- 说明安装命令
**安装位置**
- uv: `~/.local/bin/``~/.cargo/bin/`
- Python: 由 uv 管理,位于 `~/.local/share/uv/python/`
- Java: 系统包管理器默认位置或 `/opt/java/`
**可能的副作用**
- 会修改 shell 配置文件 (~/.bashrc, ~/.zshrc)
- Java 安装可能需要 sudo 权限
**潜在风险**
- 如果已有其他 Python 安装,可能产生版本冲突
- 需要网络连接下载安装包
#### 5.2 请求用户确认
使用 AskUserQuestion 工具,展示报告并请求用户确认。
如果用户不确认,取消安装并退出。
#### 5.3 执行安装
##### 安装 uv如需要
```bash
# 使用官方安装脚本
curl -LsSf https://astral.sh/uv/install.sh | sh
```
安装后重新加载 shell 环境:
```bash
# 加载新的 PATH
source ~/.bashrc 2>/dev/null || source ~/.zshrc 2>/dev/null
# 或者直接添加到当前会话
export PATH="$HOME/.local/bin:$PATH"
# 验证安装
uv --version
```
##### 安装 Python如需要
```bash
# 使用 uv 安装 Python 3.11
uv python install 3.11
# 验证安装
uv python list
```
##### 安装 Java JRE如需要
根据发行版使用对应的包管理器:
**Debian/Ubuntu (apt)**
```bash
sudo apt update
sudo apt install -y openjdk-17-jre-headless
```
**RHEL/Fedora (dnf)**
```bash
sudo dnf install -y java-17-openjdk-headless
```
**CentOS (yum)**
```bash
sudo yum install -y java-17-openjdk-headless
```
**Arch (pacman)**
```bash
sudo pacman -S --noconfirm jre17-openjdk-headless
```
**openSUSE (zypper)**
```bash
sudo zypper install -y java-17-openjdk-headless
```
**无包管理器或其他发行版**
提供 Adoptium Temurin JRE 下载链接:
- https://adoptium.net/temurin/releases/?os=linux&arch=x64&package=jre
指导用户下载 tarball 并手动安装:
```bash
# 下载后解压
tar -xzf OpenJDK17U-jre_x64_linux_*.tar.gz -C /opt/
# 创建符号链接
sudo ln -sf /opt/jdk-17*/bin/java /usr/local/bin/java
```
安装后验证:
```bash
java -version
```
#### 5.4 汇报安装结果
列出每个工具的安装状态和版本。
---
### 6. 模式 B手动指南
#### 6.1 生成 Markdown 操作指南
创建文件 `aide-install-guide.md`,内容包括:
```markdown
# Aide 环境安装指南 (Linux)
## 1. 安装 uv
uv 是 Astral 开发的高性能 Python 包管理器。
### 方法一:官方脚本(推荐)
```bash
curl -LsSf https://astral.sh/uv/install.sh | sh
```
安装后重新加载 shell
```bash
source ~/.bashrc # 或 source ~/.zshrc
```
### 方法二:手动下载
1. 访问 https://github.com/astral-sh/uv/releases
2. 下载 `uv-x86_64-unknown-linux-gnu.tar.gz`
3. 解压到 `~/.local/bin/`
4. 确保 `~/.local/bin` 在 PATH 中
### 验证安装
```bash
uv --version
```
## 2. 安装 Python
使用 uv 安装受管理的 Python
```bash
uv python install 3.11
```
### 验证安装
```bash
uv python list
```
## 3. 安装 Java JRE
Java 用于运行 PlantUML 生成流程图。
### Debian/Ubuntu
```bash
sudo apt update
sudo apt install openjdk-17-jre-headless
```
### RHEL/Fedora
```bash
sudo dnf install java-17-openjdk-headless
```
### Arch Linux
```bash
sudo pacman -S jre17-openjdk-headless
```
### 手动安装(通用)
1. 访问 https://adoptium.net/temurin/releases/?os=linux&arch=x64&package=jre
2. 下载 tarball
3. 解压并配置:
```bash
tar -xzf OpenJDK17U-jre_x64_linux_*.tar.gz -C /opt/
sudo ln -sf /opt/jdk-17*/bin/java /usr/local/bin/java
```
### 验证安装
```bash
java -version
```
## 4. 配置 aide PATH
将 aide-program 添加到 PATH
### Bash 用户
```bash
echo 'export PATH="$PATH:/path/to/aide-program/bin"' >> ~/.bashrc
source ~/.bashrc
```
### Zsh 用户
```bash
echo 'export PATH="$PATH:/path/to/aide-program/bin"' >> ~/.zshrc
source ~/.zshrc
```
### Fish 用户
```fish
set -Ua fish_user_paths /path/to/aide-program/bin
```
## 5. 验证安装
```bash
aide env ensure --runtime
```
## 常见问题
### Q: uv 安装后命令找不到?
A: 运行 `source ~/.bashrc` 或重新打开终端。
### Q: Python 版本冲突?
A: uv 管理的 Python 独立于系统 Python不会冲突。
### Q: sudo 权限问题?
A: Java 安装需要 root 权限,或使用 Adoptium tarball 安装到用户目录。
```
#### 6.2 生成 Shell 安装脚本
创建文件 `aide-install.sh`
```bash
#!/bin/bash
#
# Aide 环境自动安装脚本 (Linux)
#
# 此脚本用于安装 aide 工具所需的环境依赖:
# - uv (Python 包管理器)
# - Python (通过 uv 安装)
# - Java JRE (用于 PlantUML)
#
# 用法:
# chmod +x aide-install.sh
# ./aide-install.sh [--aide-path /path/to/aide-program]
#
# 选项:
# --aide-path PATH 指定 aide-program 目录路径
# --skip-uv 跳过 uv 安装
# --skip-python 跳过 Python 安装
# --skip-java 跳过 Java 安装
# -h, --help 显示帮助信息
#
set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
# 输出函数
success() { echo -e "${GREEN}✓${NC} $1"; }
warning() { echo -e "${YELLOW}⚠${NC} $1"; }
error() { echo -e "${RED}✗${NC} $1"; }
info() { echo -e "${CYAN}→${NC} $1"; }
# 默认值
AIDE_PATH=""
SKIP_UV=false
SKIP_PYTHON=false
SKIP_JAVA=false
# 解析参数
while [[ $# -gt 0 ]]; do
case $1 in
--aide-path)
AIDE_PATH="$2"
shift 2
;;
--skip-uv)
SKIP_UV=true
shift
;;
--skip-python)
SKIP_PYTHON=true
shift
;;
--skip-java)
SKIP_JAVA=true
shift
;;
-h|--help)
echo "用法: $0 [选项]"
echo ""
echo "选项:"
echo " --aide-path PATH 指定 aide-program 目录路径"
echo " --skip-uv 跳过 uv 安装"
echo " --skip-python 跳过 Python 安装"
echo " --skip-java 跳过 Java 安装"
echo " -h, --help 显示帮助信息"
exit 0
;;
*)
error "未知选项: $1"
exit 1
;;
esac
done
# 检测命令是否可用
command_exists() {
command -v "$1" >/dev/null 2>&1
}
# 检测发行版
detect_distro() {
if [ -f /etc/os-release ]; then
. /etc/os-release
echo "$ID"
elif command_exists lsb_release; then
lsb_release -is | tr '[:upper:]' '[:lower:]'
else
echo "unknown"
fi
}
# 获取包管理器
get_package_manager() {
local distro=$(detect_distro)
case $distro in
ubuntu|debian|linuxmint|pop)
echo "apt"
;;
fedora|rhel|centos|rocky|almalinux)
if command_exists dnf; then
echo "dnf"
else
echo "yum"
fi
;;
arch|manjaro|endeavouros)
echo "pacman"
;;
opensuse*)
echo "zypper"
;;
*)
echo "unknown"
;;
esac
}
echo "========================================"
echo " Aide 环境安装脚本 (Linux) "
echo "========================================"
echo ""
DISTRO=$(detect_distro)
PKG_MANAGER=$(get_package_manager)
info "检测到发行版: $DISTRO"
info "包管理器: $PKG_MANAGER"
echo ""
# 1. 安装 uv
if [ "$SKIP_UV" = false ]; then
info "检测 uv..."
if command_exists uv; then
UV_VERSION=$(uv --version 2>&1)
success "uv 已安装: $UV_VERSION"
else
info "安装 uv..."
curl -LsSf https://astral.sh/uv/install.sh | sh
# 加载新的 PATH
export PATH="$HOME/.local/bin:$PATH"
if command_exists uv; then
success "uv 安装成功"
else
warning "uv 安装后需要重启终端"
fi
fi
fi
# 2. 安装 Python
if [ "$SKIP_PYTHON" = false ]; then
info "检测 Python..."
if command_exists uv; then
PYTHON_LIST=$(uv python list 2>&1 || true)
if echo "$PYTHON_LIST" | grep -q "3\."; then
success "Python 已通过 uv 安装"
else
info "通过 uv 安装 Python 3.11..."
uv python install 3.11
success "Python 3.11 安装成功"
fi
else
warning "uv 不可用,无法安装 Python"
fi
fi
# 3. 安装 Java
if [ "$SKIP_JAVA" = false ]; then
info "检测 Java..."
if command_exists java; then
JAVA_VERSION=$(java -version 2>&1 | head -n 1)
success "Java 已安装: $JAVA_VERSION"
else
info "安装 Java JRE..."
case $PKG_MANAGER in
apt)
sudo apt update
sudo apt install -y openjdk-17-jre-headless
;;
dnf)
sudo dnf install -y java-17-openjdk-headless
;;
yum)
sudo yum install -y java-17-openjdk-headless
;;
pacman)
sudo pacman -S --noconfirm jre17-openjdk-headless
;;
zypper)
sudo zypper install -y java-17-openjdk-headless
;;
*)
warning "未检测到支持的包管理器,请手动安装 Java JRE"
info "下载地址: https://adoptium.net/temurin/releases/?os=linux&arch=x64&package=jre"
;;
esac
if command_exists java; then
success "Java 安装成功"
fi
fi
fi
# 4. 配置 aide PATH
if [ -n "$AIDE_PATH" ]; then
BIN_PATH="$AIDE_PATH/bin"
if [ -d "$BIN_PATH" ]; then
# 检测当前 shell
SHELL_NAME=$(basename "$SHELL")
case $SHELL_NAME in
bash)
RC_FILE="$HOME/.bashrc"
;;
zsh)
RC_FILE="$HOME/.zshrc"
;;
*)
RC_FILE="$HOME/.profile"
;;
esac
if ! grep -q "$BIN_PATH" "$RC_FILE" 2>/dev/null; then
info "添加 aide 到 PATH ($RC_FILE)..."
echo "" >> "$RC_FILE"
echo "# Aide" >> "$RC_FILE"
echo "export PATH=\"\$PATH:$BIN_PATH\"" >> "$RC_FILE"
export PATH="$PATH:$BIN_PATH"
success "aide 已添加到 PATH"
else
success "aide 已在 PATH 中"
fi
else
warning "aide-program/bin 目录不存在: $BIN_PATH"
fi
fi
echo ""
echo "========================================"
echo " 安装完成!请重启终端后使用 "
echo "========================================"
```
#### 6.3 保存文件
将上述两个文件保存到当前工作目录,并告知用户文件位置。
同时设置脚本执行权限:
```bash
chmod +x aide-install.sh
```
---
### 7. aide PATH 配置
检测 aide-program 的位置(通常是本仓库的 `aide-program/bin` 目录)。
#### 7.1 检测当前 PATH
```bash
echo $PATH | tr ':' '\n' | grep -i aide
```
#### 7.2 如果 aide 不在 PATH 中
检测用户的 shell 类型:
```bash
echo $SHELL
```
根据 shell 类型生成配置命令:
**Bash**
```bash
echo 'export PATH="$PATH:/完整路径/aide-program/bin"' >> ~/.bashrc
source ~/.bashrc
```
**Zsh**
```bash
echo 'export PATH="$PATH:/完整路径/aide-program/bin"' >> ~/.zshrc
source ~/.zshrc
```
**Fish**
```fish
set -Ua fish_user_paths /完整路径/aide-program/bin
```
#### 7.3 验证配置
```bash
which aide
aide --help
```
---
### 8. 最终验证
运行 aide 环境检测:
```bash
aide env ensure --runtime
```
如果验证通过,显示成功信息。
如果验证失败,显示问题诊断和解决建议。
---
## 完成
安装完成后,向用户汇报:
```
环境安装完成:
- uv: [版本]
- Python: [版本]
- Java: [版本]
- aide: [PATH 状态]
- 发行版: [检测到的发行版]
下一步:
- 运行 /aide:setup 配置项目环境
- 或直接使用 /aide:run 执行任务
```
---
## 注意事项
- 此命令是**独立运行**的,通常在首次使用 aide 前执行一次
- 所有安装操作都需要用户确认,不会静默修改系统
- Java 安装可能需要 sudo 权限
- 如果安装过程中断,可以重新运行此命令继续
- 建议在安装完成后重启终端以确保环境变量生效

View File

@@ -1,535 +0,0 @@
# Aide Windows 环境安装
你正在执行 Aide Windows 环境安装流程。这是一个**独立运行**的命令,用于在 Windows 系统上安装 aide 所需的全部环境依赖。
## 概述
本命令将检测并安装以下工具:
- **uv** - Python 包管理器(用于管理 Python 和依赖)
- **Python** - aide 运行时环境(通过 uv 安装)
- **Java JRE** - PlantUML 运行依赖(用于生成流程图)
---
## 开始
### 1. 系统检测
首先确认当前系统是 Windows
```powershell
# 检测操作系统
$env:OS
```
如果不是 Windows 系统,请提示用户使用 `/aide:install-linux` 命令。
### 2. 环境检测
检测当前环境中各工具的可用性:
#### 2.1 检测 uv
```powershell
uv --version
```
#### 2.2 检测 Python
```powershell
# 先尝试 uv 管理的 Python
uv python list 2>$null
# 如果 uv 不可用,检测系统 Python
python --version 2>$null
python3 --version 2>$null
```
#### 2.3 检测 Java
```powershell
java -version 2>&1
```
#### 2.4 汇总检测结果
根据检测结果,列出:
- 已安装的工具及版本
- 缺失的工具
如果所有工具都已安装跳转到「aide PATH 配置」章节。
---
### 3. 安装模式选择
向用户询问安装模式:
**模式 A自动安装**
- 生成安装报告,用户确认后自动执行安装
- 适合希望快速完成的用户
**模式 B手动指南**
- 生成详细的操作指南和自动化脚本
- 用户可以自行选择执行
- 适合需要完全控制安装过程的用户
使用 AskUserQuestion 工具询问用户选择。
---
### 4. 模式 A自动安装
#### 4.1 生成安装报告
在执行任何安装操作前,必须先生成安装报告,内容包括:
**将要执行的操作**
- 列出每个需要安装的工具
- 说明安装命令
**安装位置**
- uv: `%USERPROFILE%\.local\bin\``%USERPROFILE%\.cargo\bin\`
- Python: 由 uv 管理,位于 `%USERPROFILE%\.local\share\uv\python\`
- Java: 取决于安装方式winget/scoop/手动)
**可能的副作用**
- 会修改用户 PATH 环境变量
- 可能需要重启终端生效
**潜在风险**
- 如果已有其他 Python 安装,可能产生版本冲突
- 需要网络连接下载安装包
#### 4.2 请求用户确认
使用 AskUserQuestion 工具,展示报告并请求用户确认。
如果用户不确认,取消安装并退出。
#### 4.3 执行安装
##### 安装 uv如需要
```powershell
# 使用官方安装脚本
irm https://astral.sh/uv/install.ps1 | iex
```
安装后验证:
```powershell
# 刷新环境变量
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","User") + ";" + [System.Environment]::GetEnvironmentVariable("Path","Machine")
# 验证安装
uv --version
```
##### 安装 Python如需要
```powershell
# 使用 uv 安装 Python 3.11
uv python install 3.11
# 验证安装
uv python list
```
##### 安装 Java JRE如需要
检测可用的包管理器:
```powershell
# 检测 winget
winget --version 2>$null
# 检测 scoop
scoop --version 2>$null
# 检测 chocolatey
choco --version 2>$null
```
根据可用的包管理器选择安装方式:
**使用 winget推荐**
```powershell
winget install EclipseAdoptium.Temurin.17.JRE
```
**使用 scoop**
```powershell
scoop bucket add java
scoop install temurin17-jre
```
**使用 chocolatey**
```powershell
choco install temurin17jre -y
```
**无包管理器**
提供 Adoptium Temurin JRE 下载链接:
- https://adoptium.net/temurin/releases/?os=windows&arch=x64&package=jre
指导用户下载并手动安装 MSI 包。
安装后验证:
```powershell
java -version
```
#### 4.4 汇报安装结果
列出每个工具的安装状态和版本。
---
### 5. 模式 B手动指南
#### 5.1 生成 Markdown 操作指南
创建文件 `aide-install-guide.md`,内容包括:
```markdown
# Aide 环境安装指南 (Windows)
## 1. 安装 uv
uv 是 Astral 开发的高性能 Python 包管理器。
### 方法一PowerShell 脚本(推荐)
```powershell
irm https://astral.sh/uv/install.ps1 | iex
```
### 方法二:手动下载
1. 访问 https://github.com/astral-sh/uv/releases
2. 下载 `uv-x86_64-pc-windows-msvc.zip`
3. 解压到 `%USERPROFILE%\.local\bin\`
4. 将该目录添加到 PATH
### 验证安装
```powershell
uv --version
```
## 2. 安装 Python
使用 uv 安装受管理的 Python
```powershell
uv python install 3.11
```
### 验证安装
```powershell
uv python list
```
## 3. 安装 Java JRE
Java 用于运行 PlantUML 生成流程图。
### 方法一:使用 winget推荐
```powershell
winget install EclipseAdoptium.Temurin.17.JRE
```
### 方法二:使用 scoop
```powershell
scoop bucket add java
scoop install temurin17-jre
```
### 方法三:手动下载
1. 访问 https://adoptium.net/temurin/releases/?os=windows&arch=x64&package=jre
2. 下载 MSI 安装包
3. 运行安装程序
### 验证安装
```powershell
java -version
```
## 4. 配置 aide PATH
将 aide-program 添加到系统 PATH
```powershell
# 获取 aide-program 路径(根据实际位置调整)
$aidePath = "C:\path\to\aide-program\bin"
# 添加到用户 PATH
$currentPath = [Environment]::GetEnvironmentVariable("Path", "User")
if ($currentPath -notlike "*$aidePath*") {
[Environment]::SetEnvironmentVariable("Path", "$currentPath;$aidePath", "User")
}
```
## 5. 验证安装
```powershell
# 重启终端后运行
aide env ensure --runtime
```
## 常见问题
### Q: uv 安装后命令找不到?
A: 重启终端或手动刷新环境变量。
### Q: Python 版本冲突?
A: uv 管理的 Python 独立于系统 Python不会冲突。
### Q: Java 安装后仍然找不到?
A: 检查 JAVA_HOME 和 PATH 是否正确配置。
```
#### 5.2 生成 PowerShell 安装脚本
创建文件 `aide-install.ps1`
```powershell
#Requires -Version 5.1
<#
.SYNOPSIS
Aide 环境自动安装脚本 (Windows)
.DESCRIPTION
此脚本用于安装 aide 工具所需的环境依赖:
- uv (Python 包管理器)
- Python (通过 uv 安装)
- Java JRE (用于 PlantUML)
.PARAMETER AideProgramPath
aide-program 目录的路径
.PARAMETER SkipUv
跳过 uv 安装
.PARAMETER SkipPython
跳过 Python 安装
.PARAMETER SkipJava
跳过 Java 安装
.EXAMPLE
.\aide-install.ps1 -AideProgramPath "C:\projects\aide-program"
.NOTES
作者: aide
版本: 1.0
#>
param(
[string]$AideProgramPath,
[switch]$SkipUv,
[switch]$SkipPython,
[switch]$SkipJava
)
# 颜色输出函数
function Write-Success { Write-Host "✓ $args" -ForegroundColor Green }
function Write-Warning { Write-Host "⚠ $args" -ForegroundColor Yellow }
function Write-Error { Write-Host "✗ $args" -ForegroundColor Red }
function Write-Info { Write-Host "→ $args" -ForegroundColor Cyan }
# 检测工具是否可用
function Test-Command {
param([string]$Command)
$null -ne (Get-Command $Command -ErrorAction SilentlyContinue)
}
# 刷新环境变量
function Update-Path {
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","User") + ";" + [System.Environment]::GetEnvironmentVariable("Path","Machine")
}
Write-Host "========================================" -ForegroundColor Cyan
Write-Host " Aide 环境安装脚本 (Windows) " -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
Write-Host ""
# 1. 安装 uv
if (-not $SkipUv) {
Write-Info "检测 uv..."
if (Test-Command "uv") {
$uvVersion = uv --version 2>&1
Write-Success "uv 已安装: $uvVersion"
} else {
Write-Info "安装 uv..."
try {
Invoke-RestMethod https://astral.sh/uv/install.ps1 | Invoke-Expression
Update-Path
if (Test-Command "uv") {
Write-Success "uv 安装成功"
} else {
Write-Error "uv 安装后仍无法找到,请重启终端后重试"
}
} catch {
Write-Error "uv 安装失败: $_"
}
}
}
# 2. 安装 Python
if (-not $SkipPython) {
Write-Info "检测 Python..."
if (Test-Command "uv") {
$pythonList = uv python list 2>&1
if ($pythonList -match "3\.\d+") {
Write-Success "Python 已通过 uv 安装"
} else {
Write-Info "通过 uv 安装 Python 3.11..."
uv python install 3.11
Write-Success "Python 3.11 安装成功"
}
} else {
Write-Warning "uv 不可用,无法安装 Python"
}
}
# 3. 安装 Java
if (-not $SkipJava) {
Write-Info "检测 Java..."
if (Test-Command "java") {
$javaVersion = java -version 2>&1 | Select-Object -First 1
Write-Success "Java 已安装: $javaVersion"
} else {
Write-Info "安装 Java JRE..."
if (Test-Command "winget") {
Write-Info "使用 winget 安装..."
winget install EclipseAdoptium.Temurin.17.JRE --silent
Update-Path
} elseif (Test-Command "scoop") {
Write-Info "使用 scoop 安装..."
scoop bucket add java
scoop install temurin17-jre
} elseif (Test-Command "choco") {
Write-Info "使用 chocolatey 安装..."
choco install temurin17jre -y
Update-Path
} else {
Write-Warning "未检测到包管理器,请手动安装 Java JRE"
Write-Info "下载地址: https://adoptium.net/temurin/releases/?os=windows&arch=x64&package=jre"
}
if (Test-Command "java") {
Write-Success "Java 安装成功"
}
}
}
# 4. 配置 aide PATH
if ($AideProgramPath) {
$binPath = Join-Path $AideProgramPath "bin"
if (Test-Path $binPath) {
$currentPath = [Environment]::GetEnvironmentVariable("Path", "User")
if ($currentPath -notlike "*$binPath*") {
Write-Info "添加 aide 到 PATH..."
[Environment]::SetEnvironmentVariable("Path", "$currentPath;$binPath", "User")
Update-Path
Write-Success "aide 已添加到 PATH"
} else {
Write-Success "aide 已在 PATH 中"
}
} else {
Write-Warning "aide-program/bin 目录不存在: $binPath"
}
}
Write-Host ""
Write-Host "========================================" -ForegroundColor Cyan
Write-Host " 安装完成!请重启终端后使用 " -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
```
#### 5.3 保存文件
将上述两个文件保存到当前工作目录,并告知用户文件位置。
---
### 6. aide PATH 配置
检测 aide-program 的位置(通常是本仓库的 `aide-program/bin` 目录)。
#### 6.1 检测当前 PATH
```powershell
$env:Path -split ";" | Where-Object { $_ -like "*aide*" }
```
#### 6.2 如果 aide 不在 PATH 中
生成配置命令:
```powershell
# 获取 aide-program 完整路径
$aidePath = "完整路径\aide-program\bin"
# 方法一:临时添加(当前会话)
$env:Path += ";$aidePath"
# 方法二:永久添加(用户级别)
$currentPath = [Environment]::GetEnvironmentVariable("Path", "User")
[Environment]::SetEnvironmentVariable("Path", "$currentPath;$aidePath", "User")
```
#### 6.3 验证配置
```powershell
# 重启终端后
aide --help
```
---
### 7. 最终验证
运行 aide 环境检测:
```powershell
aide env ensure --runtime
```
如果验证通过,显示成功信息。
如果验证失败,显示问题诊断和解决建议。
---
## 完成
安装完成后,向用户汇报:
```
环境安装完成:
- uv: [版本]
- Python: [版本]
- Java: [版本]
- aide: [PATH 状态]
下一步:
- 运行 /aide:setup 配置项目环境
- 或直接使用 /aide:run 执行任务
```
---
## 注意事项
- 此命令是**独立运行**的,通常在首次使用 aide 前执行一次
- 所有安装操作都需要用户确认,不会静默修改系统
- 如果安装过程中断,可以重新运行此命令继续
- 建议在安装完成后重启终端以确保环境变量生效

View File

@@ -0,0 +1,253 @@
# Aide README 生成
你正在执行 Aide README 生成流程。这个命令帮助用户创建和维护项目 README 文件。
这是一个非常长的任务,因此规划您的工作可能会很有益。**建议花费您的整个输出上下文来处理任务 - 只需确保您不会在有大量未提交的工作时用尽上下文。**继续系统地工作,直到您完成此任务。**您的上下文窗口将在接近其限制时自动压缩,允许您从中断的地方继续无限期地工作。因此,不要因为令牌预算问题而提前停止任务。**当您接近令牌预算限制时,在上下文窗口刷新前将您当前的进度和状态保存到内存中。始终尽可能坚持和自主,并完全完成任务,即使您的预算即将用尽。无论剩余上下文如何,永远不要人为地提前停止任何任务。
---
## 前置准备
**首先触发 `readme-templates` skill 学习模板使用方法。**
---
## 开始
### 检查规范文件
```bash
aide config get user_docs.rules_path
```
读取配置的规范文件路径,检查文件是否存在。
**根据规范文件状态决定流程**
- **规范文件不存在** → 进入**规范引导流程**
- **规范文件存在** → 进入**README 生成流程**
---
## 规范引导流程
`make-readme-rules.md` 不存在时执行此流程。
### 1. 提示用户
向用户说明:
> 检测到项目尚未创建 README 编写规范(`make-readme-rules.md`)。
>
> **建议**
> - 如果尚未创建面向 LLM 的项目文档(`.aide/project-docs/`),建议先执行 `/aide:docs` 和 `/aide:load`
> - 项目文档可以帮助我更好地理解项目,从而提供更准确的 README 建议
>
> 规范制定是一个重要任务,建议在本次对话中专注完成。完成后可使用 `/exit` 退出。
### 2. 询问用户
使用 AskUserQuestion 询问:
> 是否继续创建 README 编写规范?
**选项**
- **继续创建**(推荐)
- **先执行 /aide:docs**(如果项目文档不存在)
### 3. 分析项目
如用户选择继续:
#### 3.1 检查项目文档
```bash
aide config get docs.path
```
如果项目文档目录存在,阅读总导览(`README.md`),了解:
- 项目类型
- 技术栈
- 主要功能
- 模块结构
#### 3.2 分析项目代码(如无项目文档)
如果没有项目文档,快速浏览:
- `README.md`(如存在)
- `package.json` / `Cargo.toml` / `pyproject.toml` 等配置文件
- 入口文件
- 目录结构
### 4. 推荐模板
基于项目分析,向用户推荐:
#### 4.1 基础模板推荐
根据项目类型推荐一个基础模板:
| 项目类型 | 推荐模板 |
|----------|----------|
| 小脚本/工具 | `minimal` |
| npm/pip/cargo 库 | `library` |
| CLI/GUI/Web 应用 | `application` |
| 文档/教程 | `documentation` |
| 多项目仓库 | `monorepo` |
说明推荐理由。
#### 4.2 可选模块推荐
基于项目特点,推荐启用的模块:
| 模块 | 推荐场景 |
|------|----------|
| `quickstart` | 用户需要快速上手 |
| `installation` | 有多种安装方式 |
| `examples` | API/工具类项目 |
| `api` | 库/SDK 项目 |
| `configuration` | 有配置文件 |
| `architecture` | 复杂系统 |
| `contributing` | 开源项目 |
| `changelog` | 需要版本追踪 |
| `license` | 公开项目 |
| `faq` | 预期有常见问题 |
### 5. 用户确认
使用 AskUserQuestion 确认:
- 基础模板选择
- 启用的模块列表
- 其他自定义要求
### 6. 生成规范文件
根据用户选择生成 `make-readme-rules.md`
```markdown
# README 编写规范
## 基础模板
模板:{{TEMPLATE_NAME}}
## 启用模块
{{ENABLED_MODULES_LIST}}
## 自定义要求
{{CUSTOM_REQUIREMENTS}}
## 生成时间
{{TIMESTAMP}}
```
### 7. 询问是否立即生成
> 规范文件已创建。是否立即生成 README
**选项**
- **立即生成**(推荐)
- **稍后生成**
如选择立即生成,进入 README 生成流程。
---
## README 生成流程
`make-readme-rules.md` 存在时执行此流程。
### 1. 读取规范文件
读取 `make-readme-rules.md`,获取:
- 选择的基础模板
- 启用的模块列表
- 自定义要求
### 2. 加载项目信息
#### 2.1 项目文档(优先)
如果存在 `.aide/project-docs/`,读取总导览获取:
- 项目名称和描述
- 技术栈信息
- 功能特性
- 架构概述
#### 2.2 代码分析(补充)
补充分析:
- 安装方式(从配置文件推断)
- 使用示例(从测试或文档提取)
- API 文档(从代码注释提取)
### 3. 读取模板
根据规范文件中的模板选择,读取对应的模板文件:
```
aide-marketplace/aide-plugin/skills/readme-templates/templates/{template}.md
```
### 4. 读取模块
读取启用的模块文件:
```
aide-marketplace/aide-plugin/skills/readme-templates/modules/module-{name}.md
```
### 5. 生成 README
结合模板、模块和项目信息:
1. 以基础模板为框架
2. 在适当位置插入模块内容
3. 填充所有占位符
4. 应用自定义要求
### 6. 检查现有 README
```bash
aide config get user_docs.readme_path
```
- 如果 README 已存在直接覆盖无需备份git 提供版本控制)
- 如果不存在,创建新文件
### 7. 写入 README
将生成的内容写入 `README.md`(或配置的路径)。
### 8. 完成提示
> README 已生成:`README.md`
>
> 建议:
> - 检查生成的内容是否准确
> - 补充具体的代码示例
> - 更新任何过时的信息
>
> 如需调整规范,可编辑 `make-readme-rules.md` 后重新运行 `/aide:readme`。
---
## 配置项
| 配置项 | 默认值 | 说明 |
|--------|--------|------|
| `user_docs.readme_path` | `README.md` | README 文件路径 |
| `user_docs.rules_path` | `make-readme-rules.md` | 编写规范文件路径 |
---
## 注意事项
1. **规范文件的重要性**:规范文件确保每次生成的 README 风格一致
2. **项目文档的价值**:有项目文档时,生成的 README 质量更高
3. **迭代改进**:可以多次运行命令,逐步完善 README
4. **版本控制**README 的历史版本由 git 管理,无需额外备份

View File

@@ -139,12 +139,71 @@ aide config get task.source
**必须执行** **必须执行**
##### 简单/中等任务
1. 根据分析结果生成任务细则文档 1. 根据分析结果生成任务细则文档
2. 保存到配置的路径: 2. 保存到配置的路径:
```bash ```bash
aide config get task.spec aide config get task.spec
``` ```
3. **强制确认点**
##### 复杂任务(需拆分为子计划)
1. 获取计划文档目录:
```bash
aide config get task.plans_path
```
2. 创建目录(如不存在)
3. 生成以下文档:
**任务计划总导览guide.md**
```markdown
# 任务计划总导览
## 任务简述
[一句话描述任务目标]
## 子计划列表
| # | 名称 | 状态 | 细则文档 |
|---|------|------|----------|
| 1 | [子计划1名称] | pending | spec-01.md |
| 2 | [子计划2名称] | pending | spec-02.md |
...
## 执行顺序
[说明子计划之间的依赖关系和执行顺序]
## 备注
[其他需要说明的内容]
```
**各子计划细则spec-01.md, spec-02.md, ...**
```markdown
# 子计划 N[名称]
## 目标
[具体目标]
## 具体步骤
1. [步骤1]
2. [步骤2]
...
## 验证标准
- [标准1]
- [标准2]
## 依赖
- 前置:[依赖的子计划,如无则写"无"]
- 后续:[依赖本计划的子计划,如无则写"无"]
```
##### 强制确认点
无论简单还是复杂任务:
- 向用户展示细则摘要 - 向用户展示细则摘要
- 使用 AskUserQuestion 询问用户是否确认 - 使用 AskUserQuestion 询问用户是否确认
- 等待用户明确答复后才能继续 - 等待用户明确答复后才能继续
@@ -215,8 +274,23 @@ aide config get flow.diagram_path
##### 流程图示例结构 ##### 流程图示例结构
**必须在 PlantUML 文件头部添加渲染配置**
```bash
# 获取配置值
aide config get plantuml.font_name # 默认 "Arial"
aide config get plantuml.dpi # 默认 300
aide config get plantuml.scale # 默认 0.5
```
将获取的值添加到 PlantUML 文件头部:
```plantuml ```plantuml
@startuml @startuml
skinparam defaultFontName "Arial"
skinparam dpi 300
scale 0.5
' 主程序流程图 ' 主程序流程图
start start
:初始化配置; :初始化配置;
@@ -303,20 +377,41 @@ aide flow next-part docs "验证通过,进入文档环节"
aide flow next-step "文档更新完成" aide flow next-step "文档更新完成"
``` ```
### 阶段 6收尾 (finish) ### 阶段 6用户确认 (confirm)
```bash ```bash
aide flow next-part finish "文档更新完成,进入收尾" aide flow next-part confirm "文档更新完成,进入用户确认环节"
```
#### 6.1 向用户报告完成信息
汇总已完成的工作:
- 列出主要变更点
- 说明验证结果
- 提供关键文件清单
#### 6.2 等待用户确认
**用户可能的操作**
1. **确认通过** → 直接进入 finish
2. **发现问题** → 进入返工流程
#### 6.3 返工流程
当用户发现问题或有新需求时:
**触发 rework skill**:加载 `rework` skill 学习返工流程指南,按照指南完成返工处理。
### 阶段 7收尾 (finish)
```bash
aide flow next-part finish "用户确认通过,进入收尾"
``` ```
- 清理临时文件
- 检查遗漏的 TODO - 检查遗漏的 TODO
- 向用户汇报完成情况 - 向用户汇报完成情况
```bash
aide flow next-step "任务完成"
```
--- ---
## 续接流程 ## 续接流程
@@ -379,32 +474,59 @@ aide config get task.spec
对于拆分为多个子计划的复杂任务: 对于拆分为多个子计划的复杂任务:
### 文档结构
复杂任务的文档存放在 `task.plans_path` 配置的目录下(默认 `.aide/task-plans/`
```
.aide/task-plans/
├── guide.md # 任务计划总导览
├── spec-01.md # 子计划 1 细则
├── spec-02.md # 子计划 2 细则
└── spec-NN.md # 子计划 N 细则
```
### 执行模式 ### 执行模式
``` ```
task-optimize → [flow-design → impl → verify → docs] × N → finish task-optimize → [flow-design → impl → verify → docs → confirm] × N → finish
``` ```
> 注:每个子计划完成 docs 后需经过 confirm 阶段,用户确认后才进入下一个子计划
### 流程 ### 流程
1. 完成 task-optimize,生成任务导览和所有子计划细则 1. 完成 task-optimize
- 生成 `guide.md`(任务计划总导览)
- 生成所有 `spec-NN.md`(子计划细则)
2. 对每个子计划: 2. 对每个子计划:
- 进入 flow-design为该子计划设计流程图 - 进入 flow-design为该子计划设计流程图
- 进入 impl实现该子计划 - 进入 impl实现该子计划
- 进入 verify验证该子计划 - 进入 verify验证该子计划
- 进入 docs更新该子计划相关文档 - 进入 docs更新该子计划相关文档
- 标记子计划完成,更新任务导览 - 进入 confirm等待用户确认
- 用户确认后,更新 `guide.md` 中该子计划状态为 `completed`
3. 所有子计划完成后,进入 finish 3. 所有子计划完成后,进入 finish
### 子计划切换 ### 子计划切换
完成一个子计划的 docs 后: 完成一个子计划的 confirm 后:
```bash ```bash
aide flow next-step "子计划 N 完成,开始子计划 N+1" aide flow next-step "子计划 N 完成,开始子计划 N+1"
aide flow back-part flow-design "开始下一个子计划的流程设计" aide flow back-part flow-design "开始下一个子计划的流程设计"
``` ```
### 子计划状态管理
每完成一个子计划,更新 `guide.md` 中的状态表:
| # | 名称 | 状态 | 细则文档 |
|---|------|------|----------|
| 1 | [子计划1名称] | **completed** | spec-01.md |
| 2 | [子计划2名称] | **in_progress** | spec-02.md |
| 3 | [子计划3名称] | pending | spec-03.md |
--- ---
## 附录:任务复杂度评估指导原则 ## 附录:任务复杂度评估指导原则

View File

@@ -0,0 +1,499 @@
# Aide 用户文档生成
你正在执行 Aide 用户文档生成流程。这个命令帮助用户在 docs 目录下创建面向用户的详细文档。
## 分步执行机制
此命令支持**真正有效的分步执行和接续执行**,适用于任意规模项目。
### 设计原则
1. **索引式计划文档**`user-docs-plan.md` 只做索引,详细信息存在独立步骤文档中
2. **自包含步骤文档**:每个步骤包含执行所需的全部信息(已提取的源信息)
3. **粒度动态控制**:根据文档复杂度动态拆分步骤
4. **分析与执行分离**:分析阶段产出详细计划,执行阶段直接生成文档
### 文档结构
```
docs/
├── user-docs-plan.md # 计划文件(索引式)
├── steps/ # 步骤详情目录
│ ├── step-001.md # 步骤1详情
│ ├── step-002.md # 步骤2详情
│ └── ...
└── [生成的文档] # 产出的文档
├── getting-started.md
├── installation.md
└── ...
```
这可能是一个非常长的任务,因此规划您的工作可能会很有益。**建议花费您的整个输出上下文来处理任务 - 只需确保您不会在有大量未提交的工作时用尽上下文。**继续系统地工作,直到您完成此任务。**您的上下文窗口将在接近其限制时自动压缩,允许您从中断的地方继续无限期地工作。因此,不要因为令牌预算问题而提前停止任务。**当您接近令牌预算限制时,在上下文窗口刷新前将您当前的进度和状态保存到内存中。始终尽可能坚持和自主,并完全完成任务,即使您的预算即将用尽。无论剩余上下文如何,永远不要人为地提前停止任何任务。
---
## 前置准备
**首先触发 `readme-templates` skill 学习模板使用方法。**
---
## 开始
### 检查计划文件
```bash
aide config get user_docs.docs_plan_path
aide config get user_docs.docs_steps_path
```
如果未配置,使用默认值:
- 计划文件:`docs/user-docs-plan.md`
- 步骤目录:`docs/steps`
**根据计划文件状态决定流程**
- **计划文件不存在** → 进入**分析和计划阶段**
- **计划文件存在** → 进入**接续执行阶段**
---
## 分析和计划阶段
当计划文件不存在时执行此流程。
### 1. 检查前置条件
#### 1.1 检查 README 规范文件
```bash
aide config get user_docs.rules_path
```
如果规范文件不存在:
> 检测到 README 编写规范(`make-readme-rules.md`)不存在。
>
> 建议先执行 `/aide:readme` 创建规范文件。规范文件定义了项目的文档风格,
> 用户文档应与 README 保持一致的风格。
使用 AskUserQuestion 询问:
- **先执行 /aide:readme**(推荐)
- **继续生成文档**(使用默认风格)
#### 1.2 检查项目文档
```bash
aide config get docs.path
```
如果项目文档目录(`.aide/project-docs/`)不存在:
> 检测到面向 LLM 的项目文档(`.aide/project-docs/`)不存在。
>
> 建议先执行 `/aide:docs` 和 `/aide:load` 创建项目文档。
> 项目文档可以帮助生成更准确、更完整的用户文档。
使用 AskUserQuestion 询问:
- **先执行 /aide:docs**(推荐)
- **继续生成文档**(基于代码分析)
### 2. 分析项目
#### 2.1 读取项目信息
**优先级**
1. **项目文档**(如果存在):
- 读取 `.aide/project-docs/README.md` 获取项目概述
- 阅读相关区块文档了解详细信息
2. **README**(如果存在):
- 读取 README.md 了解项目定位
3. **代码分析**
- 分析配置文件package.json、Cargo.toml、pyproject.toml 等)
- 分析目录结构
- 识别主要功能模块
#### 2.2 确定项目类型
| 类型 | 特征 |
|------|------|
| 纯文档/材料 | 主要是 markdown 文件,无代码 |
| 单体程序 | 单一主项目,可能有子模块 |
| 多项目仓库 | 包含多个独立子项目 |
### 3. 规划文档结构
根据项目类型选择文档结构模板。
#### 3.1 确定文档清单
根据项目分析确定需要生成的文档:
| 文档类型 | 适用场景 | 典型内容 |
|----------|----------|----------|
| getting-started.md | 所有项目 | 最小可运行示例 |
| installation.md | 需安装的项目 | 系统要求、安装步骤 |
| usage.md | 有 CLI/API 的项目 | 命令、参数说明 |
| configuration.md | 有配置项的项目 | 配置详解 |
| api/ | 库项目 | API 文档 |
| guides/ | 复杂项目 | 使用指南 |
### 4. 步骤生成(关键阶段)
**这是实现有效分步执行的核心阶段。**
#### 4.1 评估文档复杂度
对每个文档评估:
| 复杂度 | 特征 | 处理方式 |
|--------|------|----------|
| 小 | 单一主题,内容简单 | 整个文档作为 1 个步骤 |
| 中 | 多个章节,有交叉引用 | 按章节拆分为 2-3 个步骤 |
| 大 | 大量内容,需要分析多个模块 | 按功能点拆分为 3-5 个步骤 |
| 超大 | API 文档等,涉及大量接口 | 按模块/文件拆分为多个步骤 |
#### 4.2 生成步骤文档
**为每个步骤生成独立的步骤文档**,存放在 `steps/` 目录。
**步骤文档格式**
```markdown
# 步骤 XXX生成 [文档名称]
## 元信息
| 属性 | 值 |
|------|-----|
| 状态 | pending / in_progress / completed |
| 目标文档 | [文档路径] |
| 预估工作量 | 小 / 中 / 大 |
| 依赖步骤 | [无 / step-XXX] |
## 任务描述
生成/更新 [文档名称],包含 [具体内容]。
## 源信息(已提取)
以下是生成本文档所需的全部信息,**已从项目文档和代码中提取整理**
### 项目基础信息
| 属性 | 值 |
|------|-----|
| 项目名称 | xxx |
| 项目类型 | 库/应用/工具 |
| 主要语言 | xxx |
| 入口文件 | xxx |
### 相关模块/功能
| 模块 | 位置 | 说明 |
|------|------|------|
| [模块1] | path/to/module1 | 功能说明 |
| [模块2] | path/to/module2 | 功能说明 |
### 关键代码摘要
(已从代码中提取的关键信息,如函数签名、配置项等)
```
[已提取的关键代码片段或结构说明]
```
### 已有文档参考
(从项目文档或 README 中提取的相关内容)
> [引用的相关内容]
## 输出要求
- 文件:`docs/[filename].md`
- 格式要求:
- [ ] 包含自动生成标记
- [ ] 保留用户编辑区域
- [ ] 符合 README 规范风格
### 内容大纲
1. [章节1]
- [要点1]
- [要点2]
2. [章节2]
- [要点1]
- [要点2]
## 执行记录
(执行时填写)
| 时间 | 操作 | 备注 |
|------|------|------|
| | 开始执行 | |
| | 完成 | |
```
#### 4.3 生成计划文件(索引)
生成 `user-docs-plan.md` 作为索引:
```markdown
# 用户文档生成计划
> 最后更新YYYY-MM-DD HH:MM
## 项目概述
{{基于项目文档/分析的简要描述}}
## 项目类型
{{纯文档/单体程序/多项目仓库}}
## 文档结构
```
docs/
├── getting-started.md
├── installation.md
├── usage.md
└── ...
```
## 步骤索引
| 步骤 | 目标文档 | 描述 | 状态 |
|------|----------|------|------|
| [001](steps/step-001.md) | getting-started.md | 快速开始指南 | pending |
| [002](steps/step-002.md) | installation.md | 安装说明 | pending |
| [003](steps/step-003.md) | usage.md | 使用说明 | pending |
| ... | ... | ... | ... |
## 整体进度
- 总步骤数XX
- 已完成0
- 进行中0
- 待处理XX
## 执行日志
| 时间 | 步骤 | 操作 | 备注 |
|------|------|------|------|
| | | | |
```
### 5. 用户确认
向用户展示规划的文档结构:
> 用户文档计划已生成。
>
> **文档清单**
> ```
> {{PLANNED_STRUCTURE}}
> ```
>
> **总步骤数**{{TOTAL_STEPS}}
>
> 步骤文档已生成,每个步骤包含已提取的源信息,执行时可直接生成文档。
>
> 是否开始执行?
**选项**
- **开始执行**(推荐)
- **调整结构**(自定义)
- **稍后执行**
如用户选择调整,通过对话确认最终结构后更新计划文件。
如选择开始执行,进入步骤执行流程。
---
## 接续执行阶段
当计划文件存在时执行此流程。
### 1. 读取计划文件
读取 `user-docs-plan.md` 获取:
- 步骤索引
- 整体进度
- 执行日志
### 2. 显示进度
> **用户文档生成进度**
>
> 总步骤数XX
> 已完成YYZZ%
> 当前步骤step-NNN
> 上次更新YYYY-MM-DD HH:MM
### 3. 确认继续
使用 AskUserQuestion
> 是否从当前进度继续执行?
**选项**
- **继续执行**(推荐)
- **查看待处理步骤**
- **重新开始**(清空进度)
如选择重新开始,删除计划文件后进入分析和计划阶段。
---
## 步骤执行流程
### 执行单个步骤
1. **读取步骤文档**
- 打开 `steps/step-XXX.md`
- 获取已提取的源信息和内容大纲
2. **生成文档**
- 基于步骤文档中的源信息直接生成
- **无需重新分析代码/项目文档**,信息已在步骤文档中
- 遵循内容大纲和格式要求
3. **保存产出**
- 写入文档文件
- 使用自动生成标记区分自动内容和用户编辑区域
4. **更新步骤文档**
- 标记步骤为 `completed`
- 填写执行记录
5. **更新计划文件**
- 更新步骤状态
- 更新整体进度
- 添加执行日志
### 步骤间询问
每完成一个步骤后询问:
> 步骤 XXX 已完成:{{STEP_DESCRIPTION}}
>
> 已完成YY/ZZ进度 WW%
>
> 是否继续下一步?
**选项**
- **继续**(推荐)
- **查看产出**
- **暂停(保存进度)**
如选择暂停,当前进度已保存,下次可直接接续。
---
## 文档内容规范
### 文档文件结构
每个文档文件应包含:
```markdown
# 文档标题
<!-- AUTO-GENERATED: This section is automatically maintained -->
{{自动生成内容}}
<!-- USER-EDIT: DO NOT MODIFY ABOVE -->
<!-- You can add custom content below -->
{{用户自定义内容区域}}
```
### 各类文档内容要求
#### getting-started.md快速开始
- 最小可运行示例
- 简洁的步骤说明
- 链接到详细文档
#### installation.md安装指南
- 系统要求
- 多种安装方式
- 安装验证步骤
- 常见问题
#### usage.md使用说明
- 基本用法
- 常用命令/操作
- 参数说明
#### configuration.md配置说明
- 配置文件位置
- 配置项详解
- 配置示例
#### api/API 文档)
- 按模块组织
- 函数签名
- 参数说明
- 使用示例
---
## 完成流程
当所有步骤完成时:
1. 确认所有步骤状态为 `completed`
2. 更新 README 中的文档链接(如需要)
3. 向用户汇报完成情况
```
用户文档已生成docs/
生成的文档:
- getting-started.md
- installation.md
- usage.md
- ...
建议:
- 检查生成的内容是否准确
- 在 <!-- USER-EDIT --> 标记下方添加自定义内容
- 自定义内容不会被后续更新覆盖
如需重新生成,可删除计划文件后再次运行 /aide:user-docs。
```
---
## 配置项
| 配置项 | 默认值 | 说明 |
|--------|--------|------|
| `user_docs.docs_path` | `docs` | 用户文档目录路径 |
| `user_docs.docs_plan_path` | `docs/user-docs-plan.md` | 计划文件路径 |
| `user_docs.docs_steps_path` | `docs/steps` | 步骤文档目录 |
| `user_docs.rules_path` | `make-readme-rules.md` | README 规范文件路径 |
---
## 注意事项
1. **分步执行**:每个步骤文档包含已提取的源信息,执行时无需重新分析
2. **进度持久化**:进度同时保存在步骤文档和计划文件中
3. **保留用户编辑**:使用标记区分自动生成和用户编辑的内容
4. **风格一致**:文档风格与 README 保持一致
5. **增量更新**:多次运行不会覆盖用户自定义内容

View File

@@ -0,0 +1,482 @@
# Aide 用户流程图生成
你正在执行 Aide 用户流程图生成流程。这个命令帮助用户创建面向用户的长期维护流程图系统。
## 分步执行机制
此命令支持**真正有效的分步执行和接续执行**,适用于任意规模项目。
### 设计原则
1. **索引式计划文档**`plan.md` 只做索引,详细信息存在独立步骤文档中
2. **自包含步骤文档**:每个步骤包含执行所需的全部信息(已分析好的模块结构)
3. **粒度动态控制**:根据模块复杂度动态拆分步骤
4. **分析与执行分离**:分析阶段产出详细计划,执行阶段直接绘图
### 文档结构
```
docs/graph-guide/
├── plan.md # 计划文件(索引式)
├── steps/ # 步骤详情目录
│ ├── step-001.md # 步骤1详情
│ ├── step-002.md # 步骤2详情
│ └── ...
└── [区块目录]/ # 流程图目录
├── guide.puml
└── *.puml
```
这可能是一个非常长的任务,因此规划您的工作可能会很有益。**建议花费您的整个输出上下文来处理任务 - 只需确保您不会在有大量未提交的工作时用尽上下文。**继续系统地工作,直到您完成此任务。**您的上下文窗口将在接近其限制时自动压缩,允许您从中断的地方继续无限期地工作。因此,不要因为令牌预算问题而提前停止任务。**当您接近令牌预算限制时,在上下文窗口刷新前将您当前的进度和状态保存到内存中。始终尽可能坚持和自主,并完全完成任务,即使您的预算即将用尽。无论剩余上下文如何,永远不要人为地提前停止任何任务。
---
## 前置准备
**首先检查项目文档是否存在。**
```bash
aide config get docs.path
```
如果项目文档目录(`.aide/project-docs/`)不存在:
> 用户流程图依赖项目文档来了解项目结构。建议先执行 `/aide:docs` 和 `/aide:load`。
使用 AskUserQuestion 询问:
- **先执行 /aide:docs**(推荐)
- **继续(基于代码分析)**
---
## 开始
### 检查计划文件
```bash
aide config get user_docs.graph_plan_path
aide config get user_docs.graph_steps_path
```
如果未配置,使用默认值:
- 计划文件:`docs/graph-guide/plan.md`
- 步骤目录:`docs/graph-guide/steps`
**根据计划文件状态决定流程**
- **计划文件不存在** → 进入**分析和计划阶段**
- **计划文件存在** → 进入**接续执行阶段**
---
## 分析和计划阶段
`plan.md` 不存在时执行此流程。
### 1. 加载项目文档
读取 `.aide/project-docs/` 下的项目文档:
1. 读取总导览(`README.md`)获取:
- 项目类型(文档/程序/混合)
- 子项目/模块列表
- 技术栈信息
2. 阅读相关区块文档了解详细结构
### 2. 区块划分
**划分原则**(与项目文档不同):
- 目标是呈现**整体形式**
- 按**业务逻辑**或**独立开发项目**划分
- 不追求深度全覆盖
**区块类型**
| 类型 | 说明 | 典型内容 |
|------|------|----------|
| 库项目 | 独立的库/工具包 | API 设计、核心逻辑 |
| 应用 | 可运行的程序 | 启动流程、业务逻辑 |
| 前端 | UI 相关 | 组件结构、数据流 |
| 文档 | 纯文档项目 | 内容导航、学习路径 |
### 3. 复杂度分析与步骤拆分
**这是实现有效分步执行的核心阶段。**
#### 3.1 评估区块复杂度
对每个区块评估:
| 复杂度 | 特征 | 处理方式 |
|--------|------|----------|
| 小 | 单模块,逻辑简单 | 整个区块作为 1 个步骤 |
| 中 | 多模块,有交互 | 按模块拆分为 2-5 个步骤 |
| 大 | 复杂系统,多层次 | 按子模块拆分为 5-10 个步骤 |
| 超大 | 巨型模块 | 按功能点拆分为 10+ 个步骤 |
#### 3.2 生成步骤文档
**为每个步骤生成独立的步骤文档**,存放在 `steps/` 目录。
**步骤文档格式**
```markdown
# 步骤 XXX[区块名] - [流程图名称]
## 元信息
| 属性 | 值 |
|------|-----|
| 状态 | pending / in_progress / completed |
| 所属区块 | [区块名] |
| 流程图类型 | guide / 模块图 |
| 预估工作量 | 小 / 中 / 大 |
| 依赖步骤 | [无 / step-XXX] |
## 任务描述
绘制 [区块名] 的 [流程图名称],展示 [具体内容]。
## 模块结构(已分析)
以下是执行本步骤所需的全部模块信息,**已从项目文档和代码中提取整理**
### 涉及文件
| 文件路径 | 职责 | 关键内容 |
|----------|------|----------|
| `path/to/file1.py` | 入口模块 | main() 函数 |
| `path/to/file2.py` | 核心逻辑 | Parser 类、Executor 类 |
| ... | ... | ... |
### 模块关系
```
[已分析好的模块调用关系ASCII 图或文字描述]
例如:
main.py
└→ parser.py::parse()
└→ executor.py::execute()
└→ output.py::write()
```
### 数据流
```
[已分析好的数据流向]
例如:
输入(stdin) → Parser → AST → Executor → Result → 输出(stdout)
```
### 关键函数/类
| 名称 | 位置 | 说明 |
|------|------|------|
| `main()` | main.py:10 | 程序入口 |
| `Parser` | parser.py:25 | 解析输入 |
| `Executor` | executor.py:50 | 执行逻辑 |
## 输出要求
- 文件:`[区块目录]/[filename].puml`
- 类型:[活动图 / 组件图 / 序列图]
- 内容要求:
- [ ] 展示 [具体内容1]
- [ ] 展示 [具体内容2]
- [ ] 标注关键节点
## PlantUML 模板
```plantuml
@startuml [filename]
skinparam defaultFontName "PingFang SC"
skinparam dpi 300
scale 0.5
' TODO: 基于上述模块结构绘制流程图
@enduml
```
## 执行记录
(执行时填写)
| 时间 | 操作 | 备注 |
|------|------|------|
| | 开始执行 | |
| | 完成 | |
```
#### 3.3 生成计划文件(索引)
生成 `plan.md` 作为索引:
```markdown
# 用户流程图编写计划
> 最后更新YYYY-MM-DD HH:MM
## 项目概述
{{基于项目文档的简要描述}}
## 区块索引
| # | 区块名称 | 类型 | 步骤数 | 状态 | 步骤范围 |
|---|----------|------|--------|------|----------|
| 1 | api-lib | 库项目 | 3 | pending | 001-003 |
| 2 | api | 应用 | 5 | pending | 004-008 |
| ... | ... | ... | ... | ... | ... |
## 步骤索引
| 步骤 | 所属区块 | 流程图 | 状态 |
|------|----------|--------|------|
| [001](steps/step-001.md) | api-lib | guide.puml | pending |
| [002](steps/step-002.md) | api-lib | core.puml | pending |
| [003](steps/step-003.md) | api-lib | parser.puml | pending |
| [004](steps/step-004.md) | api | guide.puml | pending |
| ... | ... | ... | ... |
## 整体进度
- 总步骤数XX
- 已完成0
- 进行中0
- 待处理XX
## 执行日志
| 时间 | 步骤 | 操作 | 备注 |
|------|------|------|------|
| | | | |
```
### 4. 创建目录结构
```bash
aide config get user_docs.graph_path
```
创建流程图目录和子目录:
```
docs/graph-guide/
├── plan.md
├── steps/
└── [区块名]/
```
### 5. 用户确认
> 流程图编写计划已生成。
>
> **区块数**X 个
> **总步骤数**Y 个
>
> 步骤文档已生成,每个步骤包含已分析好的模块结构,执行时可直接绘图。
>
> 是否开始执行?
**选项**
- **开始执行**(推荐)
- **查看计划详情**
- **稍后执行**
如选择开始执行,进入步骤执行流程。
---
## 接续执行阶段
`plan.md` 存在时执行此流程。
### 1. 读取计划文件
读取 plan.md 获取:
- 步骤索引
- 整体进度
- 执行日志
### 2. 显示进度
> **流程图编写进度**
>
> 总步骤数XX
> 已完成YYZZ%
> 当前步骤step-NNN
> 上次更新YYYY-MM-DD HH:MM
### 3. 确认继续
使用 AskUserQuestion
> 是否从当前进度继续执行?
**选项**
- **继续执行**(推荐)
- **查看待处理步骤**
- **重新开始**(清空进度)
---
## 步骤执行流程
### 执行单个步骤
1. **读取步骤文档**
- 打开 `steps/step-XXX.md`
- 获取已分析好的模块结构
2. **绘制流程图**
- 基于步骤文档中的模块结构直接绘图
- **无需重新分析代码**,信息已在步骤文档中
- 遵循 PlantUML 模板和内容要求
3. **保存产出**
- 写入 puml 文件
- 生成 PNG如配置了 PlantUML
4. **更新步骤文档**
- 标记步骤为 `completed`
- 填写执行记录
5. **更新计划文件**
- 更新步骤状态
- 更新整体进度
- 添加执行日志
### 步骤间询问
每完成一个步骤后:
> 步骤 XXX 已完成:[流程图名称]
>
> 已完成YY/ZZ进度 WW%
>
> 是否继续下一步?
**选项**
- **继续**(推荐)
- **查看产出**
- **暂停(保存进度)**
如选择暂停,当前进度已保存,下次可直接接续。
---
## 流程图内容规范
### 总导览流程图guide.puml
每个区块的 guide.puml 应包含:
- 模块概览
- 调用关系
- 数据流向
### 详细流程图module.puml
#### 不含程序的项目
- 内容导航图
- 学习路径图
- 概念关系图
#### 含程序的项目
参考 `/aide:run` 中的程序逻辑流图规范:
1. **入口点**:从程序入口开始
2. **控制结构**:体现顺序、分支、循环
3. **语义化抽象**:人类可理解的业务描述
4. **模块化表示**
- 函数/模块表示为"盒子"
- 标注输入输出
5. **层次化组织**
- 主流程图 + 详细子图
### PlantUML 配置
每个文件必须包含头部配置:
```bash
aide config get plantuml.font_name
aide config get plantuml.dpi
aide config get plantuml.scale
```
```plantuml
@startuml [name]
skinparam defaultFontName "[font_name]"
skinparam dpi [dpi]
scale [scale]
' 内容...
@enduml
```
---
## 目录结构
最终生成的目录结构:
```
docs/graph-guide/
├── plan.md # 计划文件(索引)
├── steps/ # 步骤详情目录
│ ├── step-001.md
│ ├── step-002.md
│ └── ...
├── api-lib/ # 区块 1
│ ├── guide.puml
│ ├── core.puml
│ └── parser.puml
├── api/ # 区块 2
│ ├── guide.puml
│ └── ...
└── ...
```
---
## 完成流程
当所有步骤完成时:
1. 确认所有步骤状态为 `completed`
2. 生成总导览流程图(如需要)
3. 向用户汇报完成情况
```
用户流程图已完成:
- 目录docs/graph-guide/
- 区块数N 个
- 总步骤数M 个
- 流程图数X 个
```
---
## 配置项
| 配置项 | 默认值 | 说明 |
|--------|--------|------|
| `user_docs.graph_path` | `docs/graph-guide` | 流程图目录路径 |
| `user_docs.graph_plan_path` | `docs/graph-guide/plan.md` | 计划文件路径 |
| `user_docs.graph_steps_path` | `docs/graph-guide/steps` | 步骤文档目录 |
---
## 注意事项
1. **分步执行**:每个步骤文档包含已分析好的模块结构,执行时无需重新分析
2. **进度持久化**:进度同时保存在步骤文档和计划文件中
3. **粒度可控**:大型模块自动拆分为多个步骤
4. **PNG 生成**:需要配置 PlantUML参考 `[plantuml]` 配置)

View File

@@ -146,9 +146,34 @@ aide flow next-part impl "流程设计完成,开始实现"
aide flow back-part <环节名> "<原因>" aide flow back-part <环节名> "<原因>"
``` ```
**注意**:执行 back-part 时会生成一个确认 key需要先完成准备工作后执行 back-confirm 确认。
**示例** **示例**
```bash ```bash
aide flow back-part flow-design "实现中发现设计遗漏,需要补充" aide flow back-part flow-design "实现中发现设计遗漏,需要补充"
# 输出: ⚠ 返工需要确认。请先完成准备工作,然后执行:
# aide flow back-confirm --key abc123
```
### aide flow back-confirm
确认返工请求并执行。
```bash
aide flow back-confirm --key <key>
```
**参数**
| 参数 | 说明 |
|------|------|
| `--key` | back-part 生成的确认 key |
**示例**
```bash
aide flow back-confirm --key abc123
# 输出: ⚠ 回退到环节: flow-design
# ⚠ 建议执行 /exit 重新开始对话
``` ```
### aide flow issue ### aide flow issue
@@ -252,6 +277,7 @@ aide flow show 2025-12-15T17-28-53
| `impl` | 迭代实现 | exec 阶段使用 | | `impl` | 迭代实现 | exec 阶段使用 |
| `verify` | 验证交付 | exec 阶段使用 | | `verify` | 验证交付 | exec 阶段使用 |
| `docs` | 文档更新 | exec 阶段使用 | | `docs` | 文档更新 | exec 阶段使用 |
| `confirm` | 用户确认 | 审阅与返工 |
| `finish` | 收尾 | exec 阶段使用 | | `finish` | 收尾 | exec 阶段使用 |
### 流程校验 ### 流程校验
@@ -452,6 +478,9 @@ aide init
├── diagrams/ # 流程图目录 ├── diagrams/ # 流程图目录
│ ├── *.puml # PlantUML 源文件 │ ├── *.puml # PlantUML 源文件
│ └── *.png # 生成的图片 │ └── *.png # 生成的图片
├── task-plans/ # 复杂任务计划文档(可配置)
│ ├── guide.md # 任务计划总导览
│ └── spec-NN.md # 子计划细则
└── project-docs/ # 项目文档(面向 LLM └── project-docs/ # 项目文档(面向 LLM
├── README.md # 总导览 ├── README.md # 总导览
├── block-plan.md # 区块计划 ├── block-plan.md # 区块计划
@@ -498,8 +527,14 @@ aide flow next-step "验证完成: 所有测试通过"
aide flow next-part docs "验证通过,进入文档环节" aide flow next-part docs "验证通过,进入文档环节"
aide flow next-step "文档更新完成" aide flow next-step "文档更新完成"
# 9. 收尾 # 9. 进入用户确认
aide flow next-part finish "文档更新完成,进入收尾" aide flow next-part confirm "文档更新完成,进入用户确认环节"
# 等待用户确认...
# 如用户确认通过:
aide flow next-step "用户确认通过"
# 10. 收尾
aide flow next-part finish "用户确认通过,进入收尾"
aide flow next-step "任务完成" aide flow next-step "任务完成"
``` ```

View File

@@ -0,0 +1,106 @@
---
name: readme-templates
description: README 模板集。提供多种项目类型的 README 模板和可选模块,供 /aide:readme 命令使用。当需要生成或更新项目 README 时使用。
---
# README 模板集
本 skill 提供一套完整的 README 模板体系,包含多种项目类型模板和可组合的功能模块。
## 模板选择指南
根据项目类型选择合适的基础模板:
| 项目类型 | 推荐模板 | 特点 |
|----------|----------|------|
| 小工具/脚本 | `minimal.md` | 精简,核心信息 |
| 库/SDK | `library.md` | 安装、API、示例 |
| 应用程序 | `application.md` | 功能、安装、配置 |
| 文档/教程 | `documentation.md` | 结构清晰、导航便捷 |
| 多项目仓库 | `monorepo.md` | 子项目索引、统一说明 |
## 模板结构
### templates/ - 完整模板
每个模板都是独立完整的 README 结构,包含该类型项目最常用的章节。
### modules/ - 可选模块
模块是可自由组合的内容块,用于扩展或定制 README
| 模块 | 用途 | 推荐场景 |
|------|------|----------|
| `quickstart` | 5分钟上手 | 希望用户快速体验 |
| `installation` | 详细安装 | 有多种安装方式 |
| `examples` | 代码示例 | API 或工具类项目 |
| `api` | 接口文档 | 库/SDK 项目 |
| `configuration` | 配置说明 | 有配置文件的项目 |
| `architecture` | 架构概述 | 复杂系统 |
| `contributing` | 贡献指南 | 开源项目 |
| `changelog` | 变更日志 | 需要版本追踪 |
| `license` | 许可证 | 所有公开项目 |
| `faq` | 常见问题 | 用户问题较多 |
## 推荐组合
### 开源库项目
```
模板: library.md
模块: + quickstart + examples + api + contributing + license
```
### 内部工具项目
```
模板: application.md
模块: + installation + configuration + faq
```
### 文档项目
```
模板: documentation.md
模块: + contributing
```
### 微型脚本
```
模板: minimal.md
模块: (无需额外模块)
```
## 占位符说明
模板中使用以下占位符,需根据实际项目填充:
| 占位符 | 说明 |
|--------|------|
| `{{PROJECT_NAME}}` | 项目名称 |
| `{{PROJECT_DESCRIPTION}}` | 项目简介(一句话) |
| `{{BADGE_SECTION}}` | 徽章区(可选) |
| `{{FEATURES}}` | 功能特性列表 |
| `{{INSTALLATION}}` | 安装步骤 |
| `{{USAGE}}` | 基本用法 |
| `{{EXAMPLES}}` | 示例代码 |
| `{{API_DOCS}}` | API 文档 |
| `{{CONFIGURATION}}` | 配置说明 |
| `{{LICENSE}}` | 许可证类型 |
| `{{AUTHOR}}` | 作者信息 |
## 使用方式
1. 根据项目类型选择基础模板
2. 阅读项目代码,提取关键信息
3. 根据需要添加可选模块
4. 填充占位符,生成最终 README
## 编写原则
1. **用户视角**:从使用者角度组织内容
2. **渐进披露**:重要信息在前,细节在后
3. **可执行**:示例代码可直接运行
4. **保持更新**:与代码同步更新
5. **简洁明了**:避免冗余,突出重点

View File

@@ -0,0 +1,89 @@
<!--
模块apiAPI 文档)
用途:详细的接口说明
位置:库项目的核心章节
-->
## API 文档
### 概览
{{API_OVERVIEW}}
### 核心 API
#### `{{FUNCTION_1_NAME}}`
{{FUNCTION_1_DESCRIPTION}}
**签名**
```{{LANGUAGE}}
{{FUNCTION_1_SIGNATURE}}
```
**参数**
| 参数 | 类型 | 必需 | 说明 |
|------|------|------|------|
{{FUNCTION_1_PARAMS}}
**返回值**
{{FUNCTION_1_RETURN}}
**示例**
```{{LANGUAGE}}
{{FUNCTION_1_EXAMPLE}}
```
#### `{{FUNCTION_2_NAME}}`
{{FUNCTION_2_DESCRIPTION}}
**签名**
```{{LANGUAGE}}
{{FUNCTION_2_SIGNATURE}}
```
**参数**
| 参数 | 类型 | 必需 | 说明 |
|------|------|------|------|
{{FUNCTION_2_PARAMS}}
**返回值**
{{FUNCTION_2_RETURN}}
### 类型定义
```{{LANGUAGE}}
{{TYPE_DEFINITIONS}}
```
### 常量
| 常量 | 值 | 说明 |
|------|-----|------|
{{CONSTANTS_TABLE}}
### 错误处理
| 错误码 | 说明 | 处理建议 |
|--------|------|----------|
{{ERRORS_TABLE}}
### 完整 API 参考
详细的 API 文档请查看 [API Reference]({{API_REFERENCE_URL}})。
<!--
编写提示:
- 每个函数都有签名、参数、返回值、示例
- 类型定义要完整
- 说明错误处理方式
- 保持格式统一
-->

View File

@@ -0,0 +1,77 @@
<!--
模块architecture架构概述
用途:说明系统架构和设计
位置:复杂项目的重要章节
-->
## 架构
### 系统概览
{{SYSTEM_OVERVIEW}}
### 架构图
```
{{ARCHITECTURE_DIAGRAM}}
```
### 核心组件
| 组件 | 职责 | 技术 |
|------|------|------|
{{COMPONENTS_TABLE}}
### 数据流
```
{{DATA_FLOW_DIAGRAM}}
```
### 目录结构
```
{{DIRECTORY_STRUCTURE}}
```
### 模块说明
#### {{MODULE_1_NAME}}
- **职责**{{MODULE_1_RESPONSIBILITY}}
- **位置**`{{MODULE_1_PATH}}`
- **依赖**{{MODULE_1_DEPENDENCIES}}
#### {{MODULE_2_NAME}}
- **职责**{{MODULE_2_RESPONSIBILITY}}
- **位置**`{{MODULE_2_PATH}}`
- **依赖**{{MODULE_2_DEPENDENCIES}}
### 技术选型
| 领域 | 选择 | 原因 |
|------|------|------|
{{TECH_CHOICES_TABLE}}
### 设计决策
#### {{DECISION_1_TITLE}}
**背景**{{DECISION_1_CONTEXT}}
**方案**{{DECISION_1_SOLUTION}}
**权衡**{{DECISION_1_TRADEOFFS}}
### 扩展点
{{EXTENSION_POINTS}}
<!--
编写提示:
- 图文结合说明架构
- 清晰说明各组件职责
- 记录重要设计决策
- 说明扩展方式
-->

View File

@@ -0,0 +1,71 @@
<!--
模块changelog变更日志
用途:版本历史和变更记录
位置:通常作为独立文件或 README 章节
-->
## 变更日志
所有重要的变更都会记录在此文件中。
格式基于 [Keep a Changelog](https://keepachangelog.com/)
版本号遵循 [语义化版本](https://semver.org/)。
### [Unreleased]
#### 新增
- {{UNRELEASED_ADDED}}
#### 变更
- {{UNRELEASED_CHANGED}}
#### 修复
- {{UNRELEASED_FIXED}}
---
### [{{VERSION_1}}] - {{DATE_1}}
#### 新增
- {{V1_ADDED_1}}
- {{V1_ADDED_2}}
#### 变更
- {{V1_CHANGED_1}}
#### 修复
- {{V1_FIXED_1}}
#### 移除
- {{V1_REMOVED_1}}
---
### [{{VERSION_2}}] - {{DATE_2}}
#### 新增
- {{V2_ADDED_1}}
#### 修复
- {{V2_FIXED_1}}
---
### [{{VERSION_INITIAL}}] - {{DATE_INITIAL}}
- 首次发布
---
[Unreleased]: {{COMPARE_UNRELEASED_URL}}
[{{VERSION_1}}]: {{COMPARE_V1_URL}}
[{{VERSION_2}}]: {{COMPARE_V2_URL}}
[{{VERSION_INITIAL}}]: {{TAG_INITIAL_URL}}
<!--
编写提示:
- 按版本倒序排列
- 每个版本包含:新增、变更、修复、移除
- 提供版本对比链接
- 保持格式一致
-->

View File

@@ -0,0 +1,85 @@
<!--
模块configuration配置说明
用途:详细的配置项说明
位置:安装/使用之后
-->
## 配置
### 配置文件
配置文件位置:`{{CONFIG_PATH}}`
首次运行会自动生成默认配置。
### 配置方式
#### 1. 配置文件
编辑 `{{CONFIG_FILE}}`
```{{CONFIG_FORMAT}}
{{CONFIG_EXAMPLE}}
```
#### 2. 环境变量
```bash
{{ENV_VARS_EXAMPLE}}
```
#### 3. 命令行参数
```bash
{{CLI_ARGS_EXAMPLE}}
```
**优先级**:命令行参数 > 环境变量 > 配置文件
### 配置项详解
#### `{{CONFIG_SECTION_1}}`
| 配置项 | 类型 | 默认值 | 说明 |
|--------|------|--------|------|
{{CONFIG_SECTION_1_TABLE}}
#### `{{CONFIG_SECTION_2}}`
| 配置项 | 类型 | 默认值 | 说明 |
|--------|------|--------|------|
{{CONFIG_SECTION_2_TABLE}}
### 完整配置示例
```{{CONFIG_FORMAT}}
{{FULL_CONFIG_EXAMPLE}}
```
### 配置验证
```bash
{{VALIDATE_CONFIG_COMMAND}}
```
### 常见配置场景
#### 场景 1{{SCENARIO_1_NAME}}
```{{CONFIG_FORMAT}}
{{SCENARIO_1_CONFIG}}
```
#### 场景 2{{SCENARIO_2_NAME}}
```{{CONFIG_FORMAT}}
{{SCENARIO_2_CONFIG}}
```
<!--
编写提示:
- 说明所有配置方式
- 每个配置项有类型、默认值、说明
- 提供实际场景配置示例
- 说明优先级和验证方法
-->

View File

@@ -0,0 +1,95 @@
<!--
模块contributing贡献指南
用途:指导如何为项目做贡献
位置:开源项目必备
-->
## 贡献指南
感谢你考虑为 {{PROJECT_NAME}} 做贡献!
### 贡献方式
- 报告 Bug
- 提交功能建议
- 改进文档
- 提交代码 PR
### 开发环境
#### 环境要求
{{DEV_REQUIREMENTS}}
#### 环境搭建
```bash
# 克隆仓库
git clone {{REPO_URL}}
cd {{PROJECT_DIR}}
# 安装依赖
{{INSTALL_DEPS}}
# 运行测试
{{RUN_TESTS}}
```
### 代码规范
{{CODE_STYLE}}
#### 提交信息格式
```
<type>(<scope>): <subject>
<body>
<footer>
```
**type 类型**
- `feat`: 新功能
- `fix`: 修复 Bug
- `docs`: 文档更新
- `style`: 代码格式
- `refactor`: 重构
- `test`: 测试相关
- `chore`: 构建/工具
### 提交 PR
1. Fork 本仓库
2. 创建特性分支:`git checkout -b feature/your-feature`
3. 提交更改:`git commit -m 'feat: add some feature'`
4. 推送分支:`git push origin feature/your-feature`
5. 创建 Pull Request
### PR 检查清单
- [ ] 代码通过所有测试
- [ ] 新功能有对应测试
- [ ] 更新了相关文档
- [ ] 提交信息格式正确
### 代码审查
所有 PR 都需要至少一位维护者审查后才能合并。
### 行为准则
请阅读并遵守我们的 [行为准则](CODE_OF_CONDUCT.md)。
### 联系方式
- 问题讨论:[GitHub Discussions]({{DISCUSSIONS_URL}})
- Bug 报告:[GitHub Issues]({{ISSUES_URL}})
<!--
编写提示:
- 清晰说明贡献流程
- 提供开发环境搭建指南
- 说明代码规范
- 包含 PR 检查清单
-->

View File

@@ -0,0 +1,71 @@
<!--
模块examples使用示例
用途:展示典型用例和代码示例
位置:通常放在基本用法之后
-->
## 示例
### 基础示例
#### {{EXAMPLE_1_NAME}}
{{EXAMPLE_1_DESCRIPTION}}
```{{LANGUAGE}}
{{EXAMPLE_1_CODE}}
```
输出:
```
{{EXAMPLE_1_OUTPUT}}
```
#### {{EXAMPLE_2_NAME}}
{{EXAMPLE_2_DESCRIPTION}}
```{{LANGUAGE}}
{{EXAMPLE_2_CODE}}
```
### 进阶示例
#### {{ADVANCED_EXAMPLE_NAME}}
{{ADVANCED_EXAMPLE_DESCRIPTION}}
```{{LANGUAGE}}
{{ADVANCED_EXAMPLE_CODE}}
```
### 实际场景
#### 场景:{{SCENARIO_NAME}}
**需求**{{SCENARIO_REQUIREMENT}}
**解决方案**
```{{LANGUAGE}}
{{SCENARIO_CODE}}
```
**说明**{{SCENARIO_EXPLANATION}}
### 完整示例项目
查看 [examples/](examples/) 目录获取完整的示例项目:
| 示例 | 说明 | 难度 |
|------|------|------|
{{EXAMPLES_TABLE}}
<!--
编写提示:
- 从简单到复杂递进
- 示例代码可直接运行
- 包含输出帮助理解
- 解释关键代码逻辑
-->

View File

@@ -0,0 +1,85 @@
<!--
模块faq常见问题
用途:解答用户常见问题
位置:文档末尾或独立页面
-->
## 常见问题
### 一般问题
#### Q: {{GENERAL_Q1}}
**A**: {{GENERAL_A1}}
#### Q: {{GENERAL_Q2}}
**A**: {{GENERAL_A2}}
### 安装问题
#### Q: {{INSTALL_Q1}}
**A**: {{INSTALL_A1}}
```bash
{{INSTALL_SOLUTION_1}}
```
#### Q: {{INSTALL_Q2}}
**A**: {{INSTALL_A2}}
### 使用问题
#### Q: {{USAGE_Q1}}
**A**: {{USAGE_A1}}
示例:
```{{LANGUAGE}}
{{USAGE_EXAMPLE_1}}
```
#### Q: {{USAGE_Q2}}
**A**: {{USAGE_A2}}
### 故障排除
#### Q: {{TROUBLE_Q1}}
**A**: {{TROUBLE_A1}}
排查步骤:
1. {{TROUBLE_STEP_1}}
2. {{TROUBLE_STEP_2}}
3. {{TROUBLE_STEP_3}}
#### Q: {{TROUBLE_Q2}}
**A**: {{TROUBLE_A2}}
### 性能问题
#### Q: {{PERF_Q1}}
**A**: {{PERF_A1}}
### 其他问题
没有找到你的问题?
- 搜索 [Issues]({{ISSUES_URL}}) 看是否有人遇到过类似问题
- 在 [Discussions]({{DISCUSSIONS_URL}}) 中提问
- 提交新的 [Issue]({{NEW_ISSUE_URL}})
<!--
编写提示:
- 按类别组织问题
- 问题简洁,答案详细
- 包含代码示例和排查步骤
- 提供进一步帮助的链接
-->

View File

@@ -0,0 +1,88 @@
<!--
模块installation安装指南
用途:详细的多平台安装说明
位置:通常放在功能特性之后
-->
## 安装
### 系统要求
{{SYSTEM_REQUIREMENTS}}
### 方式一:包管理器(推荐)
#### macOS
```bash
{{INSTALL_MACOS}}
```
#### Linux
```bash
{{INSTALL_LINUX}}
```
#### Windows
```powershell
{{INSTALL_WINDOWS}}
```
### 方式二:预编译二进制
从 [Releases]({{RELEASES_URL}}) 下载对应平台的版本:
| 平台 | 架构 | 下载 |
|------|------|------|
| macOS | Intel/ARM | {{DOWNLOAD_MACOS}} |
| Linux | x64/ARM | {{DOWNLOAD_LINUX}} |
| Windows | x64 | {{DOWNLOAD_WINDOWS}} |
### 方式三:从源码构建
```bash
# 克隆仓库
git clone {{REPO_URL}}
cd {{PROJECT_DIR}}
# 安装依赖
{{INSTALL_DEPS}}
# 构建
{{BUILD_COMMAND}}
# 安装到系统
{{INSTALL_LOCAL}}
```
### 验证安装
```bash
{{VERIFY_COMMAND}}
```
预期输出:
```
{{VERIFY_OUTPUT}}
```
### 常见问题
#### 问题 1{{ISSUE_1}}
{{SOLUTION_1}}
#### 问题 2{{ISSUE_2}}
{{SOLUTION_2}}
<!--
编写提示:
- 覆盖主流平台
- 提供多种安装方式
- 包含验证步骤
- 列出常见安装问题
-->

View File

@@ -0,0 +1,88 @@
<!--
模块license许可证
用途:说明项目许可证
位置README 末尾
-->
## 许可证
本项目采用 {{LICENSE_NAME}} 许可证。
### 简要说明
{{LICENSE_SUMMARY}}
### 你可以
- {{CAN_1}}
- {{CAN_2}}
- {{CAN_3}}
### 你不可以
- {{CANNOT_1}}
- {{CANNOT_2}}
### 你必须
- {{MUST_1}}
- {{MUST_2}}
### 完整许可证
查看 [LICENSE](LICENSE) 文件获取完整许可证文本。
---
**常用许可证模板**
#### MIT
```
MIT License
Copyright (c) {{YEAR}} {{AUTHOR}}
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```
#### Apache 2.0
```
Copyright {{YEAR}} {{AUTHOR}}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
```
<!--
编写提示:
- 选择合适的许可证
- 简要说明权限和限制
- 提供完整许可证链接
-->

View File

@@ -0,0 +1,47 @@
<!--
模块quickstart快速开始
用途:让用户在 5 分钟内体验核心功能
位置:通常放在安装之后
-->
## 快速开始
只需 3 步,即可体验 {{PROJECT_NAME}} 的核心功能:
### 1. 安装
```bash
{{INSTALL_COMMAND}}
```
### 2. 初始化
```bash
{{INIT_COMMAND}}
```
### 3. 运行
```bash
{{RUN_COMMAND}}
```
**预期输出**
```
{{EXPECTED_OUTPUT}}
```
### 下一步
- [完整使用指南](#使用说明)
- [配置选项](#配置)
- [更多示例](#示例)
<!--
编写提示:
- 保持步骤简洁,最多 3-5 步
- 每步都应有可执行的命令
- 包含预期输出帮助用户验证
- 链接到更详细的文档
-->

View File

@@ -0,0 +1,97 @@
<!--
模板application应用程序
适用CLI 工具、GUI 应用、Web 应用、后端服务
特点:安装部署清晰、功能完整、配置详细
-->
# {{PROJECT_NAME}}
{{BADGE_SECTION}}
{{PROJECT_DESCRIPTION}}
## 功能特性
{{FEATURES}}
## 截图/演示
{{SCREENSHOTS}}
## 系统要求
{{REQUIREMENTS}}
## 安装
### 方式一:预编译版本
{{INSTALL_BINARY}}
### 方式二:从源码构建
{{INSTALL_SOURCE}}
## 快速开始
{{QUICKSTART}}
## 使用说明
### 基本命令
{{BASIC_COMMANDS}}
### 常用操作
{{COMMON_OPERATIONS}}
## 配置
### 配置文件位置
{{CONFIG_LOCATION}}
### 配置项说明
{{CONFIG_OPTIONS}}
### 配置示例
```
{{CONFIG_EXAMPLE}}
```
## 开发
### 环境搭建
{{DEV_SETUP}}
### 构建
{{BUILD}}
### 测试
{{TEST}}
## 常见问题
{{FAQ}}
## 更新日志
查看 [CHANGELOG.md](CHANGELOG.md) 了解版本历史。
## 贡献
欢迎贡献!请查看 [贡献指南](CONTRIBUTING.md)。
## 许可证
{{LICENSE}}
## 致谢
{{ACKNOWLEDGEMENTS}}

View File

@@ -0,0 +1,64 @@
<!--
模板documentation纯文档
适用:教程、指南、规范文档、知识库、材料集
特点:结构清晰、导航便捷、内容为主
-->
# {{PROJECT_NAME}}
{{PROJECT_DESCRIPTION}}
## 目录
{{TOC}}
## 概述
{{OVERVIEW}}
## 目标读者
{{AUDIENCE}}
## 如何阅读
{{READING_GUIDE}}
## 文档结构
```
{{STRUCTURE}}
```
## 快速导航
| 主题 | 文档 | 说明 |
|------|------|------|
{{NAV_TABLE}}
## 入门指南
{{GETTING_STARTED}}
## 核心概念
{{CORE_CONCEPTS}}
## 参考资料
{{REFERENCES}}
## 贡献
欢迎改进文档!
- 发现错误:提交 Issue
- 内容建议:提交 PR
## 版本历史
{{VERSION_HISTORY}}
## 许可证
{{LICENSE}}

View File

@@ -0,0 +1,69 @@
<!--
模板library库/工具)
适用npm/cargo/pip/gem 等包管理器发布的库、SDK、工具包
特点安装优先、API 清晰、示例丰富
-->
# {{PROJECT_NAME}}
{{BADGE_SECTION}}
{{PROJECT_DESCRIPTION}}
## 功能特性
{{FEATURES}}
## 安装
```bash
{{INSTALLATION}}
```
## 快速开始
```
{{QUICKSTART_CODE}}
```
## API 文档
{{API_DOCS}}
### 核心方法
{{CORE_METHODS}}
### 配置选项
{{OPTIONS}}
## 示例
### 基础用法
```
{{EXAMPLE_BASIC}}
```
### 进阶用法
```
{{EXAMPLE_ADVANCED}}
```
## 兼容性
{{COMPATIBILITY}}
## 贡献
欢迎贡献代码!请查看 [贡献指南](CONTRIBUTING.md)。
## 许可证
{{LICENSE}}
## 作者
{{AUTHOR}}

View File

@@ -0,0 +1,36 @@
<!--
模板minimal微型项目
适用:< 500 行代码的小工具、脚本、单文件项目
特点:精简、聚焦核心功能、快速理解
-->
# {{PROJECT_NAME}}
{{PROJECT_DESCRIPTION}}
## 用法
```bash
{{USAGE}}
```
## 示例
```
{{EXAMPLES}}
```
## 安装
```bash
{{INSTALLATION}}
```
<!-- 可选:如有配置项 -->
## 配置
{{CONFIGURATION}}
## 许可证
{{LICENSE}}

View File

@@ -0,0 +1,101 @@
<!--
模板monorepo多项目仓库
适用:包含多个子项目的仓库、工作区项目
特点:子项目索引、统一说明、各项目独立介绍
-->
# {{PROJECT_NAME}}
{{BADGE_SECTION}}
{{PROJECT_DESCRIPTION}}
## 项目结构
```
{{STRUCTURE}}
```
## 子项目
| 项目 | 路径 | 说明 | 状态 |
|------|------|------|------|
{{SUBPROJECTS_TABLE}}
## 快速开始
### 环境要求
{{REQUIREMENTS}}
### 克隆仓库
```bash
{{CLONE_COMMAND}}
```
### 初始化
```bash
{{INIT_COMMAND}}
```
## 各子项目介绍
### {{SUBPROJECT_1_NAME}}
{{SUBPROJECT_1_DESCRIPTION}}
**快速开始**
```bash
{{SUBPROJECT_1_QUICKSTART}}
```
[详细文档]({{SUBPROJECT_1_README}})
### {{SUBPROJECT_2_NAME}}
{{SUBPROJECT_2_DESCRIPTION}}
**快速开始**
```bash
{{SUBPROJECT_2_QUICKSTART}}
```
[详细文档]({{SUBPROJECT_2_README}})
<!-- 根据实际子项目数量添加更多 -->
## 开发指南
### 依赖管理
{{DEPENDENCY_MANAGEMENT}}
### 构建所有项目
```bash
{{BUILD_ALL}}
```
### 测试所有项目
```bash
{{TEST_ALL}}
```
### 发布流程
{{RELEASE_PROCESS}}
## 贡献
请查看 [贡献指南](CONTRIBUTING.md)。
## 许可证
{{LICENSE}}
各子项目可能有独立的许可证,详见各项目目录。

View File

@@ -0,0 +1,165 @@
# 返工流程指南
本指南帮助你在 Aide 工作流中处理返工rework场景。返工是指用户在 confirm 阶段发现问题或有新需求,需要回退到之前的阶段重新处理。
## 返工类型判断
根据问题类型选择返工目标阶段:
| 返工目标 | 触发条件 | 处理方式 |
|----------|----------|----------|
| task-optimize | 新需求、需求理解偏差 | 更新 task.source |
| flow-design | 架构/流程设计问题 | 更新细则 + new-requirements.md |
| impl | 实现问题 | 更新细则 + new-requirements.md |
| verify | 验证未通过 | 更新细则 + new-requirements.md |
---
## 返工到 task-optimize 阶段
当需要重新理解需求或有重大新需求时使用。
### 流程
1. 记录问题:
```bash
aide flow issue "准备返工: [原因简述]"
```
2. 更新 task.source 文档(见下方格式)
3. 向用户发出提醒(见下方模板)
4. 执行返工命令:
```bash
aide flow back-part task-optimize "[原因]"
```
5. 执行确认命令:
```bash
aide flow back-confirm --key [key]
```
> 注key 由 `aide flow back-part` 生成
### task.source 更新格式
在文档末尾添加:
```markdown
---
## 返工记录 [时间戳]
### 用户反馈
[用户原文]
### 提出时机
[在哪个阶段/步骤提出]
### LLM 建议
[如有]
```
---
## 返工到其他阶段
返工到 flow-design、impl、verify 阶段时使用。
### 流程
1. 记录问题:
```bash
aide flow issue "准备返工前处理需求整合: [原因简述]"
```
2. 创建/更新 new-requirements.md见下方格式
3. 更新细则文档:
- 在导览部分添加返工声明
- 梳理:已完成项、未完成项、需重新处理项
- 处理需求冲突
- 融入新需求
- 删除返工声明
4. 向用户发出提醒(见下方模板)
5. 执行返工命令:
```bash
aide flow back-part [阶段] "[原因]"
```
6. 执行确认命令:
```bash
aide flow back-confirm --key [key]
```
### new-requirements.md 格式
位置:`.aide/new-requirements.md`
```markdown
# 新需求记录
## 返工 [时间戳]
### 用户反馈
[原文]
### 提出时机
[阶段/步骤]
### 影响分析
- 已完成项:[列表]
- 未完成项:[列表]
- 需重新处理:[列表]
### 冲突处理
[如何处理与原细则的冲突]
```
---
## 提醒用户模板
### 返工到 task-optimize
> 我将会对 task-now.md 进行更新,加入您的新需求和我的建议,然后更新流程状态返工到 task-optimize 阶段。建议您在流程状态返工后使用 `/exit` 结束本次对话,重新启动一个新的对话执行 load+run我将会自动接续任务的处理。
### 返工到其他阶段
> 我将会对 new-requirements.md 进行更新,加入您的新需求和我的建议,然后处理好您的新需求和原细则的需求冲突整合,然后更新流程状态返工到 [阶段] 阶段。建议您在流程状态返工后使用 `/exit` 结束本次对话,重新启动一个新的对话执行 load+run我将会自动接续任务的处理。
---
## 确认机制
返工前必须完成确认流程:
1. 当执行 `aide flow back-part` 时,系统会检测是否已确认
2. 如未确认,系统会生成一个随机 key 并输出提示
3. 完成准备工作后,执行 `aide flow back-confirm --key <key>` 确认
4. 确认成功后,系统会自动执行返工操作并创建清洁提交
### 命令说明
```bash
# 首次调用:生成 key记录目标阶段
aide flow back-part flow-design "设计遗漏"
# 输出: ⚠ 返工需要确认。请先完成准备工作,然后执行:
# aide flow back-confirm --key abc123
# 完成准备后:确认并执行
aide flow back-confirm --key abc123
# 输出: ✓ 返工确认成功,回退到环节: flow-design
# ⚠ 建议执行 /exit 重新开始对话
```
---
## 注意事项
1. **文档优先**:返工前必须更新相关文档,确保上下文不丢失
2. **清洁提交**:确认后系统会自动创建 git 提交,保留当前状态
3. **重启对话**:建议返工后重启对话,避免上下文混乱
4. **状态文件**:确认状态存储在 `.aide/back-confirm-state.json`

View File

@@ -10,6 +10,74 @@ from tomli_w import dumps as toml_dumps
from aide.core import output from aide.core import output
def find_project_root(start_path: Path | None = None) -> Path:
"""递归向上查找包含有效 .aide 目录的项目根目录。
类似于 git 查找 .git 目录的逻辑:从当前目录开始向上遍历,
直到找到包含有效 .aide 目录的父目录。
查找策略(三遍遍历):
0. 首先:如果当前目录有 .aide 目录,直接使用(不向上查找)
1. 第一遍:优先查找包含 flow-status.json 的目录(活跃任务)
2. 第二遍:如果第一遍未找到,查找包含 config.toml 的目录
这样可以确保:
- 在子项目目录运行时,使用子项目的配置
- 从子目录运行时,优先找到有活跃任务的项目根目录
Args:
start_path: 起始路径,默认为当前工作目录
Returns:
找到有效 .aide 目录的父目录路径,如果未找到则返回起始路径
"""
if start_path is None:
start_path = Path.cwd()
start_path = start_path.resolve()
def search_upward(check_fn) -> Path | None:
"""向上遍历查找满足条件的目录"""
current = start_path
while current != current.parent:
if check_fn(current):
return current
current = current.parent
# 检查根目录本身
if check_fn(current):
return current
return None
def has_aide_dir(path: Path) -> bool:
"""检查是否有 .aide 目录"""
return (path / ".aide").is_dir()
def has_flow_status(path: Path) -> bool:
"""检查是否有活跃任务状态文件"""
return (path / ".aide" / "flow-status.json").exists()
def has_config(path: Path) -> bool:
"""检查是否有配置文件"""
return (path / ".aide" / "config.toml").exists()
# 步骤 0如果当前目录有 .aide 目录,直接使用(不向上查找)
if has_aide_dir(start_path):
return start_path
# 第一遍:优先查找有活跃任务的目录
result = search_upward(has_flow_status)
if result is not None:
return result
# 第二遍:查找有配置文件的目录
result = search_upward(has_config)
if result is not None:
return result
# 未找到有效 .aide 目录,返回原始起始路径
return start_path
DEFAULT_CONFIG = """################################################################################ DEFAULT_CONFIG = """################################################################################
# Aide 配置文件 (config.toml) # Aide 配置文件 (config.toml)
################################################################################ ################################################################################
@@ -33,10 +101,10 @@ DEFAULT_CONFIG = """############################################################
[general] [general]
# 是否在 .gitignore 中忽略 .aide 目录 # 是否在 .gitignore 中忽略 .aide 目录
# - true(默认):自动添加 .aide/ 到 .gitignore不跟踪 aide 状态 # - true自动添加 .aide/ 到 .gitignore不跟踪 aide 状态
# - false不修改 .gitignore允许 git 跟踪 .aide 目录 # - false(默认):不修改 .gitignore允许 git 跟踪 .aide 目录
# 适用于需要在多设备同步 aide 状态的场景 # 推荐使用此设置,便于多设备同步 aide 状态和任务历史
gitignore_aide = true gitignore_aide = false
################################################################################ ################################################################################
# [runtime] - Aide 运行时要求 # [runtime] - Aide 运行时要求
@@ -68,6 +136,12 @@ source = "task-now.md"
# /aide:exec 命令在未指定参数时读取此文件 # /aide:exec 命令在未指定参数时读取此文件
spec = "task-spec.md" spec = "task-spec.md"
# 复杂任务计划文档目录
# 当任务被拆分为多个子计划时,存放:
# - guide.md: 任务计划总导览
# - spec-01.md, spec-02.md, ...: 各子计划细则
plans_path = ".aide/task-plans/"
################################################################################ ################################################################################
# [env] - 环境检测配置 # [env] - 环境检测配置
################################################################################ ################################################################################
@@ -166,6 +240,30 @@ path = ".aide/project-docs"
# 默认:.aide/project-docs/block-plan.md # 默认:.aide/project-docs/block-plan.md
block_plan_path = ".aide/project-docs/block-plan.md" block_plan_path = ".aide/project-docs/block-plan.md"
################################################################################
# [user_docs] - 面向用户的文档配置
################################################################################
# 配置面向用户的文档系统。
# 包括 README、用户文档和流程图等。
[user_docs]
# README 文件路径(相对于项目根目录)
readme_path = "README.md"
# README 编写规范文件路径
# 存放项目的 README 编写规范和模板选择
rules_path = "make-readme-rules.md"
# 用户文档目录路径
docs_path = "docs"
# 用户流程图目录路径
graph_path = "docs/graph-guide"
# 流程图计划文件路径
# 存放流程图编写计划和进度,用于分步执行和接续执行
graph_plan_path = "docs/graph-guide/plan.md"
################################################################################ ################################################################################
# [flow] - 流程追踪配置 # [flow] - 流程追踪配置
################################################################################ ################################################################################
@@ -180,8 +278,9 @@ block_plan_path = ".aide/project-docs/block-plan.md"
# impl - 迭代实现 # impl - 迭代实现
# verify - 验证交付 # verify - 验证交付
# docs - 文档更新 # docs - 文档更新
# confirm - 用户确认(审阅与返工)
# finish - 收尾 # finish - 收尾
phases = ["task-optimize", "flow-design", "impl", "verify", "docs", "finish"] phases = ["task-optimize", "flow-design", "impl", "verify", "docs", "confirm", "finish"]
# 流程图目录路径 # 流程图目录路径
# 存放 PlantUML 源文件(.puml和生成的图片.png # 存放 PlantUML 源文件(.puml和生成的图片.png
@@ -203,6 +302,21 @@ jar_path = "lib/plantuml.jar"
# 默认使用系统 PATH 中的 java # 默认使用系统 PATH 中的 java
# java_path = "/usr/bin/java" # java_path = "/usr/bin/java"
# 流程图渲染配置
# LLM 编写 PlantUML 时应在文件头部添加这些配置:
# skinparam defaultFontName "<font_name>"
# skinparam dpi <dpi>
# scale <scale>
# 默认字体名称
font_name = "Arial"
# DPI 值(影响图片清晰度)
dpi = 300
# 缩放系数0.5 表示缩小到 50%
scale = 0.5
################################################################################ ################################################################################
# [decide] - 待定项确认配置 # [decide] - 待定项确认配置
################################################################################ ################################################################################
@@ -252,11 +366,11 @@ class ConfigManager:
def ensure_gitignore(self) -> None: def ensure_gitignore(self) -> None:
"""根据配置决定是否在 .gitignore 中添加 .aide/ 忽略项。""" """根据配置决定是否在 .gitignore 中添加 .aide/ 忽略项。"""
# 读取配置,默认为 True忽略 .aide 目录) # 读取配置,默认为 False忽略 .aide 目录)
config = self.load_config() config = self.load_config()
gitignore_aide = self._walk_get(config, "general.gitignore_aide") gitignore_aide = self._walk_get(config, "general.gitignore_aide")
if gitignore_aide is None: if gitignore_aide is None:
gitignore_aide = True # 默认值 gitignore_aide = False # 默认值
if not gitignore_aide: if not gitignore_aide:
# 配置为 False不添加忽略项 # 配置为 False不添加忽略项

View File

@@ -65,10 +65,39 @@ class DecideHandlers:
if pending is None: if pending is None:
return self._server_error("无法读取待定项数据", "文件不存在或格式错误") return self._server_error("无法读取待定项数据", "文件不存在或格式错误")
body = json.dumps(pending.to_dict(include_meta=False), ensure_ascii=False).encode("utf-8") # 转换为字典并为每个 item 添加 source_content
data = pending.to_dict(include_meta=False)
for item in data.get("items", []):
location = item.get("location")
if location and location.get("file"):
source_content = self._read_source_lines(
location["file"],
location.get("start", 1),
location.get("end", 1)
)
if source_content:
item["source_content"] = source_content
body = json.dumps(data, ensure_ascii=False).encode("utf-8")
headers = self._cors_headers({"Content-Type": "application/json; charset=utf-8"}) headers = self._cors_headers({"Content-Type": "application/json; charset=utf-8"})
return 200, headers, body return 200, headers, body
def _read_source_lines(self, file_path: str, start: int, end: int) -> str | None:
"""读取源文件指定行范围的内容"""
try:
# 相对路径基于项目根目录
full_path = Path(self.storage.root) / file_path
if not full_path.exists():
return None
lines = full_path.read_text(encoding="utf-8").splitlines()
# 转换为 0-indexed
start_idx = max(0, start - 1)
end_idx = min(len(lines), end)
selected = lines[start_idx:end_idx]
return "\n".join(selected)
except Exception:
return None
def handle_submit(self, body: bytes) -> Response: def handle_submit(self, body: bytes) -> Response:
try: try:
pending = self.storage.load_pending() pending = self.storage.load_pending()

View File

@@ -88,10 +88,22 @@ function renderItemCard(item) {
} }
if (item.location && item.location.file) { if (item.location && item.location.file) {
const location = document.createElement("div"); const locationWrap = document.createElement("div");
location.className = "item-location"; locationWrap.className = "item-location";
location.textContent = `位置: ${item.location.file}:${item.location.start}-${item.location.end}`;
card.appendChild(location); const locationLabel = document.createElement("div");
locationLabel.className = "location-label";
locationLabel.textContent = `来源: ${item.location.file} (行 ${item.location.start}-${item.location.end})`;
locationWrap.appendChild(locationLabel);
if (item.source_content) {
const sourceContent = document.createElement("pre");
sourceContent.className = "source-content";
sourceContent.textContent = item.source_content;
locationWrap.appendChild(sourceContent);
}
card.appendChild(locationWrap);
} }
const options = renderOptions(item); const options = renderOptions(item);

View File

@@ -130,6 +130,26 @@ body {
line-height: 1.6; line-height: 1.6;
} }
.location-label {
font-size: var(--font-size-sm);
margin-bottom: var(--spacing-xs);
}
.source-content {
background: var(--color-background);
border: 1px solid var(--color-border);
border-radius: var(--radius-sm);
padding: var(--spacing-sm);
margin: var(--spacing-xs) 0 0 0;
font-family: "SF Mono", Monaco, Consolas, monospace;
font-size: 13px;
line-height: 1.5;
overflow-x: auto;
white-space: pre-wrap;
word-break: break-word;
color: var(--color-text);
}
.options-list { .options-list {
margin-top: var(--spacing-md); margin-top: var(--spacing-md);
display: grid; display: grid;

View File

@@ -3,14 +3,18 @@
from __future__ import annotations from __future__ import annotations
import json import json
import shutil
from dataclasses import dataclass from dataclasses import dataclass
from pathlib import Path from pathlib import Path
from typing import Any from typing import Any, TYPE_CHECKING
from aide.flow.errors import FlowError from aide.flow.errors import FlowError
from aide.flow.git import GitIntegration from aide.flow.git import GitIntegration
from aide.flow.utils import now_iso from aide.flow.utils import now_iso
if TYPE_CHECKING:
from aide.core.config import ConfigManager
@dataclass @dataclass
class BranchInfo: class BranchInfo:
@@ -83,16 +87,38 @@ class BranchesData:
return BranchesData(next_number=next_number, branches=branches) return BranchesData(next_number=next_number, branches=branches)
# 需要从 task_summary 中移除的前缀列表finish 提交信息使用)
_TASK_SUMMARY_PREFIXES = [
"开始任务准备: ",
"开始任务准备:",
"开始任务准备: ",
"开始任务准备:",
]
def _clean_task_summary(task_summary: str) -> str:
"""清理 task_summary 中的前缀。
用于生成 finish 提交信息时,移除 "开始任务准备:" 等前缀。
"""
for prefix in _TASK_SUMMARY_PREFIXES:
if task_summary.startswith(prefix):
return task_summary[len(prefix):]
return task_summary
class BranchManager: class BranchManager:
"""管理 aide flow 任务分支""" """管理 aide flow 任务分支"""
def __init__(self, root: Path, git: GitIntegration): def __init__(self, root: Path, git: GitIntegration, cfg: "ConfigManager"):
self.root = root self.root = root
self.git = git self.git = git
self.cfg = cfg
self.aide_dir = root / ".aide" self.aide_dir = root / ".aide"
self.branches_json = self.aide_dir / "branches.json" self.branches_json = self.aide_dir / "branches.json"
self.branches_md = self.aide_dir / "branches.md" self.branches_md = self.aide_dir / "branches.md"
self.lock_path = self.aide_dir / "flow-status.lock" self.lock_path = self.aide_dir / "flow-status.lock"
self.logs_dir = self.aide_dir / "logs"
self._data: BranchesData | None = None self._data: BranchesData | None = None
self._current_branch_info: BranchInfo | None = None self._current_branch_info: BranchInfo | None = None
@@ -104,6 +130,86 @@ class BranchManager:
except OSError: except OSError:
pass pass
def _cleanup_task_files(self, task_id: str) -> None:
"""清理任务相关文件
- 删除 .aide/*.lock
- 删除任务细则文件 (task.spec)
- 清空任务原文件 (task.source),保留文件本身
- 备份并删除 flow-status.json
- 备份并删除 decisions/*.json
- 删除 pending-items.json
- 删除流程图目录下的所有文件 (.puml, .plantuml, .png)
"""
# 确保 logs 目录存在
self.logs_dir.mkdir(parents=True, exist_ok=True)
# 1. 删除所有 .lock 文件
for lock_file in self.aide_dir.glob("*.lock"):
try:
lock_file.unlink()
except OSError:
pass
# 2. 删除任务细则文件
task_spec = self.cfg.get_value("task.spec")
if task_spec:
spec_path = self.root / task_spec
if spec_path.exists():
try:
spec_path.unlink()
except OSError:
pass
# 3. 清空任务原文件(保留文件本身)
task_source = self.cfg.get_value("task.source")
if task_source:
source_path = self.root / task_source
if source_path.exists():
try:
source_path.write_text("", encoding="utf-8")
except OSError:
pass
# 4. 备份并删除 flow-status.json
status_path = self.aide_dir / "flow-status.json"
if status_path.exists():
backup_name = f"{task_id}-status.json"
backup_path = self.logs_dir / backup_name
try:
shutil.copy2(status_path, backup_path)
status_path.unlink()
except OSError:
pass
# 5. 直接删除 decisions/*.json不备份
decisions_dir = self.aide_dir / "decisions"
if decisions_dir.exists():
for decision_file in decisions_dir.glob("*.json"):
try:
decision_file.unlink()
except OSError:
pass
# 6. 删除 pending-items.json
pending_items_path = self.aide_dir / "pending-items.json"
if pending_items_path.exists():
try:
pending_items_path.unlink()
except OSError:
pass
# 7. 删除流程图目录下的所有文件
diagram_path = self.cfg.get_value("flow.diagram_path") or ".aide/diagrams"
diagram_dir = self.root / diagram_path
if diagram_dir.exists() and diagram_dir.is_dir():
for diagram_file in diagram_dir.iterdir():
if diagram_file.is_file() and diagram_file.suffix in (".puml", ".plantuml", ".png"):
try:
diagram_file.unlink()
except OSError:
pass
def load_branches(self) -> BranchesData: def load_branches(self) -> BranchesData:
"""加载分支概况""" """加载分支概况"""
if self._data is not None: if self._data is not None:
@@ -160,10 +266,13 @@ class BranchManager:
if branch.end_commit: if branch.end_commit:
lines.append(f"- **结束提交**: {branch.end_commit[:7]}") lines.append(f"- **结束提交**: {branch.end_commit[:7]}")
lines.append(f"- **状态**: {branch.status}") lines.append(f"- **状态**: {branch.status}")
time_str = branch.started_at[:16].replace("T", " ") # 起始时间
start_time_str = branch.started_at[:16].replace("T", " ")
lines.append(f"- **起始时间**: {start_time_str}")
# 结束时间(单独列出)
if branch.finished_at: if branch.finished_at:
time_str += f" ~ {branch.finished_at[11:16]}" end_time_str = branch.finished_at[:16].replace("T", " ")
lines.append(f"- **时间**: {time_str}") lines.append(f"- **结束时间**: {end_time_str}")
if branch.temp_branch: if branch.temp_branch:
lines.append(f"- **临时分支**: {branch.temp_branch}") lines.append(f"- **临时分支**: {branch.temp_branch}")
lines.append("") lines.append("")
@@ -257,7 +366,7 @@ class BranchManager:
end_commit: str | None = None, end_commit: str | None = None,
temp_branch: str | None = None, temp_branch: str | None = None,
) -> None: ) -> None:
"""记录分支结束信息""" """记录分支结束信息(兼容旧接口,一次性更新所有字段)"""
data = self.load_branches() data = self.load_branches()
branch_info = self.get_active_branch_info() branch_info = self.get_active_branch_info()
@@ -286,9 +395,97 @@ class BranchManager:
self._current_branch_info = None self._current_branch_info = None
self.save_branches() self.save_branches()
def finish_branch_merge(self, task_summary: str) -> tuple[bool, str]: def record_end_commit(self, end_commit: str) -> None:
"""记录结束提交和时间(不更新状态)
用于在任务分支上先记录结束点,再执行清理操作。
"""
data = self.load_branches()
branch_info = self.get_active_branch_info()
if branch_info is None:
return
# 更新分支信息(只更新 end_commit 和 finished_at
for i, branch in enumerate(data.branches):
if branch.number == branch_info.number:
data.branches[i] = BranchInfo(
number=branch.number,
branch_name=branch.branch_name,
source_branch=branch.source_branch,
start_commit=branch.start_commit,
end_commit=end_commit,
task_id=branch.task_id,
task_summary=branch.task_summary,
started_at=branch.started_at,
finished_at=now_iso(),
status=branch.status, # 保持原状态
temp_branch=branch.temp_branch,
)
break
self._data = data
self.save_branches()
def update_branch_status(self, status: str) -> None:
"""更新分支状态(不修改其他字段)
用于在切回源分支后更新最终状态。
"""
data = self.load_branches()
# 查找当前任务分支(可能已不是当前分支)
current_branch = self.git.get_current_branch()
# 优先使用缓存的分支信息
target_number = None
if self._current_branch_info is not None:
target_number = self._current_branch_info.number
else:
# 查找最近的活跃分支
for branch in reversed(data.branches):
if branch.status == "active":
target_number = branch.number
break
if target_number is None:
return
# 更新分支状态
for i, branch in enumerate(data.branches):
if branch.number == target_number:
data.branches[i] = BranchInfo(
number=branch.number,
branch_name=branch.branch_name,
source_branch=branch.source_branch,
start_commit=branch.start_commit,
end_commit=branch.end_commit,
task_id=branch.task_id,
task_summary=branch.task_summary,
started_at=branch.started_at,
finished_at=branch.finished_at,
status=status,
temp_branch=branch.temp_branch,
)
break
self._data = data
self._current_branch_info = None
self.save_branches()
def finish_branch_merge(
self,
task_summary: str,
end_commit: str | None = None,
finished_at: str | None = None,
) -> tuple[bool, str]:
"""执行分支合并逻辑 """执行分支合并逻辑
Args:
task_summary: 任务摘要
end_commit: 结束提交哈希(由 tracker 传入)
finished_at: 结束时间(由 tracker 传入)
返回 (是否成功, 消息) 返回 (是否成功, 消息)
""" """
branch_info = self.get_active_branch_info() branch_info = self.get_active_branch_info()
@@ -306,46 +503,149 @@ class BranchManager:
return self._merge_with_temp_branch( return self._merge_with_temp_branch(
branch_info=branch_info, branch_info=branch_info,
task_summary=task_summary, task_summary=task_summary,
end_commit=end_commit,
finished_at=finished_at,
) )
else: else:
# 正常合并流程 # 正常合并流程
return self._merge_normal( return self._merge_normal(
branch_info=branch_info, branch_info=branch_info,
task_summary=task_summary, task_summary=task_summary,
end_commit=end_commit,
finished_at=finished_at,
)
def clean_branch_merge(self) -> tuple[bool, str]:
"""强制清理当前任务分支
如果工作区不干净,会自动创建一个提交。
返回 (是否成功, 消息)
"""
# 如果工作区不干净,自动创建提交
if not self.git.is_clean():
self.git.add_all()
self.git.commit("[aide] 强制清理前保存未提交的变更")
branch_info = self.get_active_branch_info()
if branch_info is None:
return False, "未找到活跃的任务分支"
source_branch = branch_info.source_branch
start_commit = branch_info.start_commit
# 检查源分支是否有新提交
if self.git.has_commits_since(start_commit, source_branch):
# 源分支有新提交,使用临时分支策略(强制清理模式)
return self._merge_with_temp_branch(
branch_info=branch_info,
task_summary="强制清理",
is_force_clean=True,
)
else:
# 正常合并流程(强制清理模式)
return self._merge_normal(
branch_info=branch_info,
task_summary="强制清理",
is_force_clean=True,
) )
def _merge_normal( def _merge_normal(
self, self,
branch_info: BranchInfo, branch_info: BranchInfo,
task_summary: str, task_summary: str,
is_force_clean: bool = False,
end_commit: str | None = None,
finished_at: str | None = None,
) -> tuple[bool, str]: ) -> tuple[bool, str]:
"""正常合并流程:squash 合并任务分支到源分支""" """正常合并流程:更新状态 → 清理 → squash 合并 → 收尾提交
Args:
branch_info: 分支信息
task_summary: 任务摘要
is_force_clean: 是否为强制清理模式
end_commit: 结束提交哈希finish 时由 tracker 传入)
finished_at: 结束时间finish 时由 tracker 传入)
"""
source_branch = branch_info.source_branch source_branch = branch_info.source_branch
task_branch = branch_info.branch_name task_branch = branch_info.branch_name
task_id = branch_info.task_id
start_commit = branch_info.start_commit
branch_number = branch_info.number
# 切回源分支 # === 在任务分支上执行 ===
# 对于强制清理,需要创建结束提交;对于正常 finish使用 tracker 传入的
if is_force_clean:
# 1. 创建"结束提交"(强制清理模式)
self.git.add_all()
end_commit_msg = f"[aide] 强制清理: {task_summary}"
self.git.commit(end_commit_msg)
end_commit = self.git.rev_parse_head()
finished_at = now_iso()
# 如果没有 end_commit兜底使用当前 HEAD
if end_commit is None:
end_commit = self.git.rev_parse_head()
if finished_at is None:
finished_at = now_iso()
# 2. 更新分支状态(记录 end_commit 和完成时间)
status = "force-cleaned" if is_force_clean else "finished"
data = self.load_branches()
for i, branch in enumerate(data.branches):
if branch.number == branch_number:
data.branches[i] = BranchInfo(
number=branch.number,
branch_name=branch.branch_name,
source_branch=branch.source_branch,
start_commit=branch.start_commit,
end_commit=end_commit,
task_id=branch.task_id,
task_summary=branch.task_summary,
started_at=branch.started_at,
finished_at=finished_at,
status=status,
temp_branch=branch.temp_branch,
)
break
self._data = data
self._current_branch_info = None
self.save_branches()
# 3. 提交状态更新(包含 flow-status.json 和 branches.json/md
self.git.add_all()
if is_force_clean:
self.git.commit("[aide] 强制清理: 更新状态")
else:
self.git.commit("[aide] finish: 更新状态")
# 4. 执行任务文件清理
self._cleanup_task_files(task_id)
# 5. 创建"清理提交"
self.git.add_all()
self.git.commit("[aide] 清理任务临时文件")
# === 切回源分支执行 ===
# 6. 切回源分支
self.git.checkout(source_branch) self.git.checkout(source_branch)
# 切换分支后清理 lock 文件(确保 master 上的 lock 文件也被删除) # 切换分支后清理 lock 文件
self._cleanup_lock_file() self._cleanup_lock_file()
# squash 合并任务分支 # 7. squash 合并任务分支
self.git.merge_squash(task_branch) self.git.merge_squash(task_branch)
# 创建压缩提交(结束提交) # 8. 创建收尾提交
self.git.add_all() self.git.add_all()
commit_msg = f"[aide] 任务: {task_summary}" clean_summary = _clean_task_summary(branch_info.task_summary)
end_commit = self.git.commit(commit_msg) if is_force_clean:
commit_msg = f"任务中断,清理:{task_branch} - {clean_summary}"
# 记录完成(更新 branches.json/md else:
self.record_branch_finish( commit_msg = f"完成:{task_branch} - {clean_summary}"
status="finished", self.git.commit(commit_msg)
end_commit=end_commit,
)
# 收尾提交:清理工作区(包含 branches.json/md 的更新)
self.git.add_all()
self.git.commit("[aide] 收尾: 更新分支记录")
return True, f"任务分支已合并到 {source_branch}" return True, f"任务分支已合并到 {source_branch}"
@@ -353,35 +653,104 @@ class BranchManager:
self, self,
branch_info: BranchInfo, branch_info: BranchInfo,
task_summary: str, task_summary: str,
is_force_clean: bool = False,
end_commit: str | None = None,
finished_at: str | None = None,
) -> tuple[bool, str]: ) -> tuple[bool, str]:
"""临时分支合并策略:源分支有新提交时使用""" """临时分支合并策略:源分支有新提交时使用
流程:更新状态 → 清理 → 临时分支 squash 合并
Args:
branch_info: 分支信息
task_summary: 任务摘要
is_force_clean: 是否为强制清理模式
end_commit: 结束提交哈希finish 时由 tracker 传入)
finished_at: 结束时间finish 时由 tracker 传入)
"""
start_commit = branch_info.start_commit start_commit = branch_info.start_commit
task_branch = branch_info.branch_name task_branch = branch_info.branch_name
task_id = branch_info.task_id
branch_number = branch_info.number
temp_branch = f"{task_branch}-merge" temp_branch = f"{task_branch}-merge"
# 从起始提交检出临时分支 # === 在任务分支上执行 ===
# 对于强制清理,需要创建结束提交;对于正常 finish使用 tracker 传入的
if is_force_clean:
# 1. 创建"结束提交"(强制清理模式)
self.git.add_all()
end_commit_msg = f"[aide] 强制清理: {task_summary}"
self.git.commit(end_commit_msg)
end_commit = self.git.rev_parse_head()
finished_at = now_iso()
# 如果没有 end_commit兜底使用当前 HEAD
if end_commit is None:
end_commit = self.git.rev_parse_head()
if finished_at is None:
finished_at = now_iso()
# 2. 更新分支状态(记录 end_commit 和完成时间)
status = "force-cleaned-to-temp" if is_force_clean else "merged-to-temp"
data = self.load_branches()
for i, branch in enumerate(data.branches):
if branch.number == branch_number:
data.branches[i] = BranchInfo(
number=branch.number,
branch_name=branch.branch_name,
source_branch=branch.source_branch,
start_commit=branch.start_commit,
end_commit=end_commit,
task_id=branch.task_id,
task_summary=branch.task_summary,
started_at=branch.started_at,
finished_at=finished_at,
status=status,
temp_branch=temp_branch,
)
break
self._data = data
self._current_branch_info = None
self.save_branches()
# 3. 提交状态更新(包含 flow-status.json 和 branches.json/md
self.git.add_all()
if is_force_clean:
self.git.commit("[aide] 强制清理: 更新状态")
else:
self.git.commit("[aide] finish: 更新状态")
# 4. 执行任务文件清理
self._cleanup_task_files(task_id)
# 5. 创建"清理提交"
self.git.add_all()
self.git.commit("[aide] 清理任务临时文件")
# === 切换到临时分支执行 ===
# 6. 从起始提交检出临时分支
self.git.checkout_new_branch(temp_branch, start_commit) self.git.checkout_new_branch(temp_branch, start_commit)
# 切换分支后清理 lock 文件 # 切换分支后清理 lock 文件
self._cleanup_lock_file() self._cleanup_lock_file()
# 在临时分支执行 squash 合并 # 7. 在临时分支执行 squash 合并
self.git.merge_squash(task_branch) self.git.merge_squash(task_branch)
# 创建提交 # 8. 创建压缩提交
self.git.add_all() self.git.add_all()
commit_msg = f"[aide] 任务压缩提交: {task_summary}" clean_summary = _clean_task_summary(task_summary)
end_commit = self.git.commit(commit_msg) if is_force_clean:
commit_msg = f"[aide] 强制清理压缩提交: {clean_summary}"
# 记录完成(保留任务分支和临时分支) else:
self.record_branch_finish( commit_msg = f"[aide] 任务压缩提交: {clean_summary}"
status="merged-to-temp", self.git.commit(commit_msg)
end_commit=end_commit,
temp_branch=temp_branch,
)
action_name = "强制清理" if is_force_clean else "任务完成"
return False, ( return False, (
f"⚠ 源分支 {branch_info.source_branch} 有新提交\n" f"⚠ 源分支 {branch_info.source_branch} 有新提交\n"
f"已在临时分支 {temp_branch} 完成合并\n" f"已在临时分支 {temp_branch} 完成{action_name}合并\n"
f"请手动处理后续操作" f"请手动处理后续操作"
) )

View File

@@ -25,8 +25,8 @@ class GitIntegration:
def add_all(self) -> None: def add_all(self) -> None:
self.ensure_repo() self.ensure_repo()
# 使用 -A 确保删除的文件也被暂存 # 使用 -A 确保删除的文件也被暂存,排除 .lock 文件避免锁文件被提交
result = self._run(["add", "-A"], check=False) result = self._run(["add", "-A", "--", ".", ":!*.lock"], check=False)
if result.returncode != 0: if result.returncode != 0:
raise FlowError(_format_git_error("git add 失败", result)) raise FlowError(_format_git_error("git add 失败", result))
@@ -127,6 +127,13 @@ class GitIntegration:
if result.returncode != 0: if result.returncode != 0:
raise FlowError(_format_git_error(f"squash 合并分支 {branch} 失败", result)) raise FlowError(_format_git_error(f"squash 合并分支 {branch} 失败", result))
def amend(self) -> str:
"""将暂存区内容追加到上一次提交(不修改提交消息)"""
result = self._run(["commit", "--amend", "--no-edit"], check=False)
if result.returncode != 0:
raise FlowError(_format_git_error("git commit --amend 失败", result))
return self.rev_parse_head()
def _run(self, args: list[str], check: bool) -> subprocess.CompletedProcess[str]: def _run(self, args: list[str], check: bool) -> subprocess.CompletedProcess[str]:
return subprocess.run( return subprocess.run(
["git", *args], ["git", *args],

View File

@@ -27,6 +27,8 @@ def run_pre_commit_hooks(
_hook_plantuml(root=root, config=config) _hook_plantuml(root=root, config=config)
if from_phase == "docs" and action in {"next-part", "back-part"}: if from_phase == "docs" and action in {"next-part", "back-part"}:
_hook_changelog_on_leave_docs(root=root, git=git, status=status) _hook_changelog_on_leave_docs(root=root, git=git, status=status)
if to_phase == "finish" and action == "next-part":
_hook_clean_task_plans(root=root, config=config)
def run_post_commit_hooks(*, to_phase: str, action: str) -> None: def run_post_commit_hooks(*, to_phase: str, action: str) -> None:
@@ -145,3 +147,29 @@ def _hook_changelog_on_leave_docs(*, root: Path, git: GitIntegration, status: Fl
raise FlowError("离开 docs 前需要更新 CHANGELOG.md未检测到 docs 阶段的更新记录)") raise FlowError("离开 docs 前需要更新 CHANGELOG.md未检测到 docs 阶段的更新记录)")
def _hook_clean_task_plans(*, root: Path, config: dict[str, Any] | None) -> None:
"""进入 finish 时清理任务计划文件。"""
# 获取任务计划目录配置
plans_path = ".aide/task-plans"
if config:
plans_path = config.get("task", {}).get("plans_path", plans_path)
# 移除末尾斜杠(如有)
plans_path = plans_path.rstrip("/")
plans_dir = root / plans_path
if not plans_dir.exists():
return
# 收集所有文件
files = [f for f in plans_dir.iterdir() if f.is_file()]
if not files:
return
# 删除文件
for f in files:
f.unlink()
output.ok(f"已清理任务计划文件: {len(files)}")

View File

@@ -4,13 +4,14 @@ from __future__ import annotations
import json import json
import os import os
import secrets
import time import time
from contextlib import contextmanager from contextlib import contextmanager
from pathlib import Path from pathlib import Path
from aide.flow.errors import FlowError from aide.flow.errors import FlowError
from aide.flow.types import FlowStatus from aide.flow.types import FlowStatus
from aide.flow.utils import now_task_id from aide.flow.utils import now_iso, now_task_id
class FlowStorage: class FlowStorage:
@@ -21,6 +22,7 @@ class FlowStorage:
self.lock_path = self.aide_dir / "flow-status.lock" self.lock_path = self.aide_dir / "flow-status.lock"
self.tmp_path = self.aide_dir / "flow-status.json.tmp" self.tmp_path = self.aide_dir / "flow-status.json.tmp"
self.logs_dir = self.aide_dir / "logs" self.logs_dir = self.aide_dir / "logs"
self.back_confirm_path = self.aide_dir / "back-confirm-state.json"
def ensure_ready(self) -> None: def ensure_ready(self) -> None:
if not self.aide_dir.exists(): if not self.aide_dir.exists():
@@ -144,3 +146,45 @@ class FlowStorage:
return None return None
# === Back-confirm 状态管理 ===
def has_pending_back_confirm(self) -> bool:
"""检查是否存在待确认的 back 请求。"""
return self.back_confirm_path.exists()
def load_back_confirm_state(self) -> dict | None:
"""加载 back-confirm 状态。"""
if not self.back_confirm_path.exists():
return None
try:
raw = self.back_confirm_path.read_text(encoding="utf-8")
data = json.loads(raw)
if not isinstance(data, dict):
raise ValueError("back-confirm 状态文件格式错误")
return data
except Exception as exc:
raise FlowError(f"读取 back-confirm 状态失败: {exc}")
def save_back_confirm_state(self, target_part: str, reason: str) -> str:
"""保存 back-confirm 状态,返回生成的 key。"""
key = secrets.token_hex(6) # 12 字符的随机 key
data = {
"pending_key": key,
"target_part": target_part,
"reason": reason,
"created_at": now_iso(),
}
try:
payload = json.dumps(data, ensure_ascii=False, indent=2) + "\n"
self.back_confirm_path.write_text(payload, encoding="utf-8")
except Exception as exc:
raise FlowError(f"保存 back-confirm 状态失败: {exc}")
return key
def clear_back_confirm_state(self) -> None:
"""清除 back-confirm 状态文件。"""
try:
self.back_confirm_path.unlink(missing_ok=True)
except Exception as exc:
raise FlowError(f"清除 back-confirm 状态失败: {exc}")

View File

@@ -24,7 +24,7 @@ class FlowTracker:
self.cfg = cfg self.cfg = cfg
self.storage = FlowStorage(root) self.storage = FlowStorage(root)
self.git = GitIntegration(root) self.git = GitIntegration(root)
self.branch_mgr = BranchManager(root, self.git) self.branch_mgr = BranchManager(root, self.git, cfg)
def start(self, phase: str, summary: str) -> bool: def start(self, phase: str, summary: str) -> bool:
return self._run(action="start", to_phase=phase, text=summary) return self._run(action="start", to_phase=phase, text=summary)
@@ -39,7 +39,67 @@ class FlowTracker:
return self._run(action="next-part", to_phase=phase, text=summary) return self._run(action="next-part", to_phase=phase, text=summary)
def back_part(self, phase: str, reason: str) -> bool: def back_part(self, phase: str, reason: str) -> bool:
return self._run(action="back-part", to_phase=phase, text=reason) """返工请求:检测是否已确认,未确认则生成 key。"""
try:
self.storage.ensure_ready()
# 检查是否存在待确认的 back 请求
if self.storage.has_pending_back_confirm():
state = self.storage.load_back_confirm_state()
if state:
output.warn("已存在待确认的返工请求")
output.info(f"目标环节: {state['target_part']}")
output.info(f"原因: {state['reason']}")
output.info(f"请执行: aide flow back-confirm --key {state['pending_key']}")
return False
# 生成新的确认 key
key = self.storage.save_back_confirm_state(phase, reason)
output.warn("返工需要确认。请先完成以下准备工作:")
output.info("1. 触发 rework skill 学习返工流程指南")
output.info("2. 按照指南更新任务文档(记录返工原因和新需求)")
output.info("3. 完成准备工作后执行:")
output.info(f" aide flow back-confirm --key {key}")
return True
except FlowError as exc:
output.err(str(exc))
return False
def back_confirm(self, key: str) -> bool:
"""确认返工请求并执行。"""
try:
self.storage.ensure_ready()
# 检查是否存在待确认的请求
state = self.storage.load_back_confirm_state()
if state is None:
output.err("无待确认的返工请求")
return False
# 验证 key
if state.get("pending_key") != key:
output.err("确认 key 不匹配")
return False
# 获取目标阶段和原因
target_part = state["target_part"]
reason = state["reason"]
# 清除确认状态文件
self.storage.clear_back_confirm_state()
# 执行实际的 back-part 操作
result = self._run(action="back-part", to_phase=target_part, text=reason)
if result:
output.warn("建议执行 /exit 重新开始对话")
return result
except FlowError as exc:
output.err(str(exc))
return False
def issue(self, description: str) -> bool: def issue(self, description: str) -> bool:
return self._run(action="issue", to_phase=None, text=description) return self._run(action="issue", to_phase=None, text=description)
@@ -47,6 +107,37 @@ class FlowTracker:
def error(self, description: str) -> bool: def error(self, description: str) -> bool:
return self._run(action="error", to_phase=None, text=description) return self._run(action="error", to_phase=None, text=description)
def clean(self) -> bool:
"""强制清理当前任务
前提条件:工作区必须干净
"""
try:
self.storage.ensure_ready()
with self.storage.lock():
status = self.storage.load_status()
if status is None:
output.err("未找到活跃任务,无需清理")
return False
# 执行强制清理
success, msg = self.branch_mgr.clean_branch_merge()
if success:
output.ok(f"强制清理完成: {msg}")
else:
if "工作区不干净" in msg or "未找到活跃" in msg:
output.err(msg)
else:
# 临时分支情况,需要手动处理
output.warn(msg)
return success
except FlowError as exc:
output.err(str(exc))
return False
def _run(self, *, action: str, to_phase: str | None, text: str) -> bool: def _run(self, *, action: str, to_phase: str | None, text: str) -> bool:
try: try:
self.storage.ensure_ready() self.storage.ensure_ready()
@@ -129,12 +220,18 @@ class FlowTracker:
# 如果进入 finish 环节,执行分支合并(必须在提交后执行) # 如果进入 finish 环节,执行分支合并(必须在提交后执行)
if action == "next-part" and to_phase == "finish": if action == "next-part" and to_phase == "finish":
# 再次提交状态文件(因为 save_status 更新了 git_commit hash # finish 提交的哈希就是 end_commit
self.git.add_all() finish_commit = None
self.git.commit("[aide] finish: 更新状态文件") finish_timestamp = None
if final_status.history:
last_entry = final_status.history[-1]
finish_commit = last_entry.git_commit
finish_timestamp = last_entry.timestamp
success, merge_msg = self.branch_mgr.finish_branch_merge( success, merge_msg = self.branch_mgr.finish_branch_merge(
task_summary=normalized_text, task_summary=normalized_text,
end_commit=finish_commit,
finished_at=finish_timestamp,
) )
if not success: if not success:
output.warn(merge_msg) output.warn(merge_msg)

View File

@@ -8,7 +8,7 @@ from pathlib import Path
from typing import Any from typing import Any
from aide.core import output from aide.core import output
from aide.core.config import ConfigManager from aide.core.config import ConfigManager, find_project_root
from aide.env.manager import EnvManager from aide.env.manager import EnvManager
from aide.flow.tracker import FlowTracker from aide.flow.tracker import FlowTracker
@@ -119,6 +119,10 @@ def build_parser() -> argparse.ArgumentParser:
flow_back_part.add_argument("reason", help="回退原因") flow_back_part.add_argument("reason", help="回退原因")
flow_back_part.set_defaults(func=handle_flow_back_part) flow_back_part.set_defaults(func=handle_flow_back_part)
flow_back_confirm = flow_sub.add_parser("back-confirm", help="确认返工请求")
flow_back_confirm.add_argument("--key", required=True, help="确认 key")
flow_back_confirm.set_defaults(func=handle_flow_back_confirm)
flow_issue = flow_sub.add_parser("issue", help="记录一般问题(不阻塞继续)") flow_issue = flow_sub.add_parser("issue", help="记录一般问题(不阻塞继续)")
flow_issue.add_argument("description", help="问题描述") flow_issue.add_argument("description", help="问题描述")
flow_issue.set_defaults(func=handle_flow_issue) flow_issue.set_defaults(func=handle_flow_issue)
@@ -140,6 +144,10 @@ def build_parser() -> argparse.ArgumentParser:
flow_show.add_argument("task_id", help="任务 ID时间戳格式如 20251215-103000") flow_show.add_argument("task_id", help="任务 ID时间戳格式如 20251215-103000")
flow_show.set_defaults(func=handle_flow_show) flow_show.set_defaults(func=handle_flow_show)
# aide flow clean
flow_clean = flow_sub.add_parser("clean", help="强制清理当前任务(工作区需干净)")
flow_clean.set_defaults(func=handle_flow_clean)
flow_parser.set_defaults(func=handle_flow_help) flow_parser.set_defaults(func=handle_flow_help)
# aide decide # aide decide
@@ -162,6 +170,7 @@ def build_parser() -> argparse.ArgumentParser:
def handle_init(args: argparse.Namespace) -> bool: def handle_init(args: argparse.Namespace) -> bool:
# 使用当前工作目录(原地初始化,类似 git init
root = Path.cwd() root = Path.cwd()
cfg = ConfigManager(root) cfg = ConfigManager(root)
cfg.ensure_config() cfg.ensure_config()
@@ -174,7 +183,7 @@ def handle_env_default(args: argparse.Namespace) -> bool:
"""aide env无子命令等同于 aide env ensure。""" """aide env无子命令等同于 aide env ensure。"""
if args.env_command is None: if args.env_command is None:
# 无子命令,执行默认的 ensure # 无子命令,执行默认的 ensure
root = Path.cwd() root = find_project_root()
cfg = ConfigManager(root) cfg = ConfigManager(root)
manager = EnvManager(root, cfg) manager = EnvManager(root, cfg)
return manager.ensure() return manager.ensure()
@@ -183,7 +192,7 @@ def handle_env_default(args: argparse.Namespace) -> bool:
def handle_env_ensure(args: argparse.Namespace) -> bool: def handle_env_ensure(args: argparse.Namespace) -> bool:
"""aide env ensure 处理。""" """aide env ensure 处理。"""
root = Path.cwd() root = find_project_root()
cfg = ConfigManager(root) cfg = ConfigManager(root)
manager = EnvManager(root, cfg) manager = EnvManager(root, cfg)
@@ -202,7 +211,7 @@ def handle_env_ensure(args: argparse.Namespace) -> bool:
def handle_env_list(args: argparse.Namespace) -> bool: def handle_env_list(args: argparse.Namespace) -> bool:
"""aide env list 处理。""" """aide env list 处理。"""
root = Path.cwd() root = find_project_root()
cfg = ConfigManager(root) cfg = ConfigManager(root)
manager = EnvManager(root, cfg) manager = EnvManager(root, cfg)
manager.list_modules() manager.list_modules()
@@ -211,7 +220,7 @@ def handle_env_list(args: argparse.Namespace) -> bool:
def handle_env_set(args: argparse.Namespace) -> bool: def handle_env_set(args: argparse.Namespace) -> bool:
"""aide env set 处理。""" """aide env set 处理。"""
root = Path.cwd() root = find_project_root()
cfg = ConfigManager(root) cfg = ConfigManager(root)
manager = EnvManager(root, cfg) manager = EnvManager(root, cfg)
@@ -238,7 +247,7 @@ def handle_env_set(args: argparse.Namespace) -> bool:
def handle_config_get(args: argparse.Namespace) -> bool: def handle_config_get(args: argparse.Namespace) -> bool:
root = Path.cwd() root = find_project_root()
cfg = ConfigManager(root) cfg = ConfigManager(root)
value = cfg.get_value(args.key) value = cfg.get_value(args.key)
if value is None: if value is None:
@@ -249,7 +258,7 @@ def handle_config_get(args: argparse.Namespace) -> bool:
def handle_config_set(args: argparse.Namespace) -> bool: def handle_config_set(args: argparse.Namespace) -> bool:
root = Path.cwd() root = find_project_root()
cfg = ConfigManager(root) cfg = ConfigManager(root)
parsed_value = _parse_value(args.value) parsed_value = _parse_value(args.value)
cfg.set_value(args.key, parsed_value) cfg.set_value(args.key, parsed_value)
@@ -262,59 +271,74 @@ def handle_flow_help(args: argparse.Namespace) -> bool:
def handle_flow_start(args: argparse.Namespace) -> bool: def handle_flow_start(args: argparse.Namespace) -> bool:
root = Path.cwd() root = find_project_root()
cfg = ConfigManager(root) cfg = ConfigManager(root)
tracker = FlowTracker(root, cfg) tracker = FlowTracker(root, cfg)
return tracker.start(args.phase, args.summary) return tracker.start(args.phase, args.summary)
def handle_flow_next_step(args: argparse.Namespace) -> bool: def handle_flow_next_step(args: argparse.Namespace) -> bool:
root = Path.cwd() root = find_project_root()
cfg = ConfigManager(root) cfg = ConfigManager(root)
tracker = FlowTracker(root, cfg) tracker = FlowTracker(root, cfg)
return tracker.next_step(args.summary) return tracker.next_step(args.summary)
def handle_flow_back_step(args: argparse.Namespace) -> bool: def handle_flow_back_step(args: argparse.Namespace) -> bool:
root = Path.cwd() root = find_project_root()
cfg = ConfigManager(root) cfg = ConfigManager(root)
tracker = FlowTracker(root, cfg) tracker = FlowTracker(root, cfg)
return tracker.back_step(args.reason) return tracker.back_step(args.reason)
def handle_flow_next_part(args: argparse.Namespace) -> bool: def handle_flow_next_part(args: argparse.Namespace) -> bool:
root = Path.cwd() root = find_project_root()
cfg = ConfigManager(root) cfg = ConfigManager(root)
tracker = FlowTracker(root, cfg) tracker = FlowTracker(root, cfg)
return tracker.next_part(args.phase, args.summary) return tracker.next_part(args.phase, args.summary)
def handle_flow_back_part(args: argparse.Namespace) -> bool: def handle_flow_back_part(args: argparse.Namespace) -> bool:
root = Path.cwd() root = find_project_root()
cfg = ConfigManager(root) cfg = ConfigManager(root)
tracker = FlowTracker(root, cfg) tracker = FlowTracker(root, cfg)
return tracker.back_part(args.phase, args.reason) return tracker.back_part(args.phase, args.reason)
def handle_flow_back_confirm(args: argparse.Namespace) -> bool:
root = find_project_root()
cfg = ConfigManager(root)
tracker = FlowTracker(root, cfg)
return tracker.back_confirm(args.key)
def handle_flow_issue(args: argparse.Namespace) -> bool: def handle_flow_issue(args: argparse.Namespace) -> bool:
root = Path.cwd() root = find_project_root()
cfg = ConfigManager(root) cfg = ConfigManager(root)
tracker = FlowTracker(root, cfg) tracker = FlowTracker(root, cfg)
return tracker.issue(args.description) return tracker.issue(args.description)
def handle_flow_error(args: argparse.Namespace) -> bool: def handle_flow_error(args: argparse.Namespace) -> bool:
root = Path.cwd() root = find_project_root()
cfg = ConfigManager(root) cfg = ConfigManager(root)
tracker = FlowTracker(root, cfg) tracker = FlowTracker(root, cfg)
return tracker.error(args.description) return tracker.error(args.description)
def handle_flow_clean(args: argparse.Namespace) -> bool:
"""aide flow clean - 强制清理当前任务。"""
root = find_project_root()
cfg = ConfigManager(root)
tracker = FlowTracker(root, cfg)
return tracker.clean()
def handle_flow_status(args: argparse.Namespace) -> bool: def handle_flow_status(args: argparse.Namespace) -> bool:
"""aide flow status - 查看当前任务状态。""" """aide flow status - 查看当前任务状态。"""
from aide.flow.storage import FlowStorage from aide.flow.storage import FlowStorage
root = Path.cwd() root = find_project_root()
storage = FlowStorage(root) storage = FlowStorage(root)
try: try:
@@ -346,7 +370,7 @@ def handle_flow_list(args: argparse.Namespace) -> bool:
"""aide flow list - 列出所有任务。""" """aide flow list - 列出所有任务。"""
from aide.flow.storage import FlowStorage from aide.flow.storage import FlowStorage
root = Path.cwd() root = find_project_root()
storage = FlowStorage(root) storage = FlowStorage(root)
try: try:
@@ -374,7 +398,7 @@ def handle_flow_show(args: argparse.Namespace) -> bool:
"""aide flow show <task_id> - 查看指定任务的详细状态。""" """aide flow show <task_id> - 查看指定任务的详细状态。"""
from aide.flow.storage import FlowStorage from aide.flow.storage import FlowStorage
root = Path.cwd() root = find_project_root()
storage = FlowStorage(root) storage = FlowStorage(root)
try: try:

View File

@@ -199,9 +199,9 @@ aide-program/
### 5.2 .gitignore 处理 ### 5.2 .gitignore 处理
- `aide init`自动检查 `.gitignore` - `aide init`根据配置决定是否修改 `.gitignore`
- 默认添加 `.aide/` 为忽略项 - 默认不修改(`gitignore_aide = false`),推荐将 .aide/ 纳入版本控制
- 可通过配置 `general.gitignore_aide = false` 禁用此行为 - 可通过配置 `general.gitignore_aide = true` 自动添加 `.aide/` 为忽略项
--- ---

View File

@@ -25,7 +25,7 @@ aide 使用 TOML 格式的配置文件,位于 `.aide/config.toml`。
# general: 通用设置 # general: 通用设置
[general] [general]
gitignore_aide = true # 是否自动将 .aide/ 添加到 .gitignore gitignore_aide = false # 是否自动将 .aide/ 添加到 .gitignore
# runtime: aide 自身运行要求 # runtime: aide 自身运行要求
[runtime] [runtime]
@@ -81,11 +81,12 @@ timeout = 0
| 字段 | 类型 | 默认值 | 说明 | | 字段 | 类型 | 默认值 | 说明 |
|------|------|--------|------| |------|------|--------|------|
| `gitignore_aide` | bool | `true` | 是否自动将 .aide/ 添加到 .gitignore | | `gitignore_aide` | bool | `false` | 是否自动将 .aide/ 添加到 .gitignore |
**使用场景** **使用场景**
- `aide init` 时检查此配置,决定是否修改 .gitignore - `aide init` 时检查此配置,决定是否修改 .gitignore
- 设为 `false`将 .aide/ 纳入版本控制 - 默认 `false`,推荐将 .aide/ 纳入版本控制,便于多设备同步
- 设为 `true` 可自动将 .aide/ 添加到 .gitignore
### 4.2 [runtime] 运行时配置 ### 4.2 [runtime] 运行时配置

View File

@@ -1,209 +0,0 @@
# Aide 离线安装程序 (Linux)
本目录包含 Aide 工具的 Linux 离线安装程序,用于在无网络或受限网络环境下安装所需的环境依赖。
## 概述
此离线安装程序可以安装以下组件:
- **uv** - 高性能 Python 包管理器
- **Java JRE 17** - PlantUML 运行依赖
- **Python 3.11** - Aide 运行时(通过 uv 安装,需要网络)
## 使用步骤
### 第 1 步:下载资源文件
参考 `resources.json` 中的下载链接,下载以下文件到本目录:
| 文件名 | 说明 | 下载链接 |
|--------|------|----------|
| `uv-x86_64-unknown-linux-gnu.tar.gz` | uv 安装包 | [GitHub Releases](https://github.com/astral-sh/uv/releases/latest) |
| `OpenJDK17U-jre_x64_linux_hotspot_*.tar.gz` | Java JRE 17 | [Adoptium](https://adoptium.net/temurin/releases/?os=linux&arch=x64&package=jre&version=17) |
> **注意**Java JRE 的版本号可能会更新,请下载最新的 JRE 17 版本。脚本会自动识别 `OpenJDK17U-jre_x64_linux_*.tar.gz` 格式的文件。
### 第 2 步:运行安装脚本
```bash
# 添加执行权限
chmod +x install.sh
# 运行安装脚本
./install.sh
```
### 第 3 步:配置 aide PATH可选
如果要将 aide 添加到系统 PATH运行时指定 aide-program 路径:
```bash
./install.sh --aide-path /path/to/aide-program
```
### 第 4 步:安装 Python
由于 Python 需要通过 uv 下载,离线安装无法自动完成。请在有网络的环境下运行:
```bash
uv python install 3.11
```
> **提示**:如果需要完全离线安装,可以在有网络的机器上提前运行此命令,然后复制 `~/.local/share/uv/python/` 目录到目标机器。
### 第 5 步:刷新环境并验证
```bash
# 刷新 shell 环境
source ~/.bashrc # 或 source ~/.zshrc
# 检查各组件版本
uv --version
java -version
# 验证 aide 环境
aide env ensure --runtime
```
## 命令行选项
```bash
./install.sh [选项]
```
| 选项 | 说明 |
|------|------|
| `--aide-path PATH` | 指定 aide-program 目录路径,自动添加到 PATH |
| `--java-path PATH` | 指定 Java 安装路径(默认 `~/.local/java/jre-17` |
| `--system-java` | 安装 Java 到 `/opt/java/jre-17`(需要 sudo |
| `--silent` | 静默安装模式,不显示交互提示 |
| `--skip-uv` | 跳过 uv 安装 |
| `--skip-java` | 跳过 Java 安装 |
| `-h, --help` | 显示帮助信息 |
## 示例
### 交互式安装(用户目录)
```bash
./install.sh
```
### 静默安装
```bash
./install.sh --silent
```
### 系统级安装(需要 sudo
```bash
./install.sh --system-java
```
### 完整安装(包含 aide PATH 配置)
```bash
./install.sh --aide-path ~/projects/ccoptimize/aide-program
```
### 仅安装 uv
```bash
./install.sh --skip-java
```
## 安装位置
### 用户级安装(默认)
| 组件 | 安装位置 |
|------|----------|
| uv | `~/.local/bin/` |
| Java JRE | `~/.local/java/jre-17/` |
| Python | `~/.local/share/uv/python/` (通过 uv 管理) |
### 系统级安装(--system-java
| 组件 | 安装位置 |
|------|----------|
| uv | `~/.local/bin/` |
| Java JRE | `/opt/java/jre-17/` |
## 环境变量
安装程序会自动在 shell 配置文件中添加以下内容:
```bash
# ~/.bashrc 或 ~/.zshrc
export PATH="$PATH:~/.local/bin"
export PATH="$PATH:~/.local/java/jre-17/bin" # 或 /opt/java/jre-17/bin
export JAVA_HOME="~/.local/java/jre-17" # 或 /opt/java/jre-17
```
## 支持的 Shell
- Bash (`~/.bashrc`)
- Zsh (`~/.zshrc`)
- Fish (`~/.config/fish/config.fish`)
- 其他 (`~/.profile`)
## 故障排除
### Q: 运行脚本时提示"权限不足"
A: 确保脚本有执行权限:
```bash
chmod +x install.sh
```
### Q: 安装后命令找不到?
A: 刷新 shell 环境:
```bash
source ~/.bashrc # 或 source ~/.zshrc
```
或者重新打开终端。
### Q: 系统安装 Java 失败?
A: 使用 `--system-java` 选项需要 sudo 权限。或者使用默认的用户级安装。
### Q: uv python install 失败?
A: 此命令需要网络连接。如果在完全离线环境,请在有网络的机器上提前下载 Python然后复制缓存目录。
### Q: 如何完全卸载?
A: 删除以下目录和配置:
```bash
# 删除安装的文件
rm -f ~/.local/bin/uv ~/.local/bin/uvx
rm -rf ~/.local/java/jre-17 # 或 sudo rm -rf /opt/java/jre-17
# 编辑 shell 配置文件,移除相关的 PATH 和 JAVA_HOME 设置
nano ~/.bashrc # 或 ~/.zshrc
```
## 文件清单
```
linux/
├── README.md # 本说明文件
├── resources.json # 资源清单(含下载链接)
├── install.sh # 主安装脚本
├── uv-x86_64-unknown-linux-gnu.tar.gz # [需下载]
└── OpenJDK17U-jre_x64_linux_*.tar.gz # [需下载]
```
## 不同发行版说明
此离线安装程序适用于所有 Linux 发行版x86_64 架构),包括:
- Ubuntu / Debian
- Fedora / RHEL / CentOS
- Arch Linux / Manjaro
- openSUSE
- 其他 x64 Linux 发行版
如果您的系统是 ARM 架构(如 Raspberry Pi请从发布页面下载对应架构的资源文件。

View File

@@ -1,470 +0,0 @@
#!/bin/bash
#
# Aide 离线环境安装脚本 (Linux)
#
# 此脚本从本地资源文件安装 aide 工具所需的环境依赖:
# - uv (Python 包管理器)
# - Java JRE (用于 PlantUML)
#
# 运行前请确保已下载所有必需的资源文件到脚本所在目录。
# 参见 resources.json 获取资源下载链接。
#
# 用法:
# chmod +x install.sh
# ./install.sh [选项]
#
# 选项:
# --aide-path PATH 指定 aide-program 目录路径
# --java-path PATH 指定 Java 安装路径(默认 ~/.local/java/jre-17
# --system-java 使用 /opt/java/jre-17需要 sudo
# --silent 静默安装模式
# --skip-uv 跳过 uv 安装
# --skip-java 跳过 Java 安装
# -h, --help 显示帮助信息
#
# 作者: Aide Team
# 版本: 1.0.0
#
set -e
# ============================================================
# 配置
# ============================================================
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# 资源文件名
UV_TAR_FILE="uv-x86_64-unknown-linux-gnu.tar.gz"
JAVA_TAR_FILE="OpenJDK17U-jre_x64_linux_hotspot_17.0.9_9.tar.gz"
# 默认安装路径
UV_INSTALL_PATH="$HOME/.local/bin"
JAVA_INSTALL_PATH="$HOME/.local/java/jre-17"
# 默认选项
AIDE_PATH=""
SILENT=false
SKIP_UV=false
SKIP_JAVA=false
SYSTEM_JAVA=false
# ============================================================
# 颜色定义
# ============================================================
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
# ============================================================
# 辅助函数
# ============================================================
success() { echo -e "${GREEN}${NC} $1"; }
warning() { echo -e "${YELLOW}${NC} $1"; }
error() { echo -e "${RED}${NC} $1"; }
info() { echo -e "${CYAN}${NC} $1"; }
header() {
echo ""
echo -e "${CYAN}========================================${NC}"
echo -e "${CYAN} $1${NC}"
echo -e "${CYAN}========================================${NC}"
echo ""
}
command_exists() {
command -v "$1" >/dev/null 2>&1
}
get_shell_rc() {
case "$(basename "$SHELL")" in
bash) echo "$HOME/.bashrc" ;;
zsh) echo "$HOME/.zshrc" ;;
fish) echo "$HOME/.config/fish/config.fish" ;;
*) echo "$HOME/.profile" ;;
esac
}
add_to_path() {
local path_to_add="$1"
local rc_file
rc_file=$(get_shell_rc)
if [[ "$SHELL" == *"fish"* ]]; then
if ! grep -q "$path_to_add" "$rc_file" 2>/dev/null; then
echo "set -gx PATH \$PATH $path_to_add" >> "$rc_file"
return 0
fi
else
if ! grep -q "$path_to_add" "$rc_file" 2>/dev/null; then
echo "" >> "$rc_file"
echo "# Added by Aide installer" >> "$rc_file"
echo "export PATH=\"\$PATH:$path_to_add\"" >> "$rc_file"
return 0
fi
fi
return 1
}
set_java_home() {
local java_path="$1"
local rc_file
rc_file=$(get_shell_rc)
if [[ "$SHELL" == *"fish"* ]]; then
if ! grep -q "JAVA_HOME" "$rc_file" 2>/dev/null; then
echo "set -gx JAVA_HOME $java_path" >> "$rc_file"
fi
else
if ! grep -q "JAVA_HOME" "$rc_file" 2>/dev/null; then
echo "export JAVA_HOME=\"$java_path\"" >> "$rc_file"
fi
fi
}
show_help() {
echo "用法: $0 [选项]"
echo ""
echo "Aide 离线环境安装脚本 (Linux)"
echo ""
echo "选项:"
echo " --aide-path PATH 指定 aide-program 目录路径"
echo " --java-path PATH 指定 Java 安装路径(默认 ~/.local/java/jre-17"
echo " --system-java 使用 /opt/java/jre-17需要 sudo"
echo " --silent 静默安装模式"
echo " --skip-uv 跳过 uv 安装"
echo " --skip-java 跳过 Java 安装"
echo " -h, --help 显示帮助信息"
echo ""
echo "示例:"
echo " $0 # 交互式安装"
echo " $0 --silent # 静默安装"
echo " $0 --aide-path /path/to/aide # 配置 aide PATH"
echo " $0 --system-java # 安装 Java 到 /opt需要 sudo"
}
# ============================================================
# 解析参数
# ============================================================
while [[ $# -gt 0 ]]; do
case $1 in
--aide-path)
AIDE_PATH="$2"
shift 2
;;
--java-path)
JAVA_INSTALL_PATH="$2"
shift 2
;;
--system-java)
SYSTEM_JAVA=true
JAVA_INSTALL_PATH="/opt/java/jre-17"
shift
;;
--silent)
SILENT=true
shift
;;
--skip-uv)
SKIP_UV=true
shift
;;
--skip-java)
SKIP_JAVA=true
shift
;;
-h|--help)
show_help
exit 0
;;
*)
error "未知选项: $1"
echo "运行 '$0 --help' 查看帮助"
exit 1
;;
esac
done
# ============================================================
# 主逻辑
# ============================================================
header "Aide 离线安装程序 (Linux)"
# 检查资源文件
info "检查资源文件..."
missing_resources=()
if [ "$SKIP_UV" = false ]; then
uv_tar_path="$SCRIPT_DIR/$UV_TAR_FILE"
if [ ! -f "$uv_tar_path" ]; then
missing_resources+=("$UV_TAR_FILE")
fi
fi
if [ "$SKIP_JAVA" = false ]; then
java_tar_path="$SCRIPT_DIR/$JAVA_TAR_FILE"
if [ ! -f "$java_tar_path" ]; then
# 尝试匹配通配符
java_tar_path=$(find "$SCRIPT_DIR" -name "OpenJDK17U-jre_x64_linux_*.tar.gz" 2>/dev/null | head -n 1)
if [ -z "$java_tar_path" ]; then
missing_resources+=("$JAVA_TAR_FILE (或任意 OpenJDK17U-jre_x64_linux_*.tar.gz)")
else
JAVA_TAR_FILE=$(basename "$java_tar_path")
fi
fi
fi
if [ ${#missing_resources[@]} -gt 0 ]; then
error "缺少以下资源文件:"
for resource in "${missing_resources[@]}"; do
echo " - $resource"
done
echo ""
info "请参考 resources.json 下载所需文件后重新运行此脚本"
exit 1
fi
success "所有资源文件已就绪"
# 确认安装
if [ "$SILENT" = false ]; then
echo ""
info "将要安装以下组件:"
if [ "$SKIP_UV" = false ]; then
echo " - uv (Python 包管理器) -> $UV_INSTALL_PATH"
fi
if [ "$SKIP_JAVA" = false ]; then
echo " - Java JRE 17 -> $JAVA_INSTALL_PATH"
fi
echo ""
read -p "是否继续? (Y/n) " -n 1 -r
echo
if [[ $REPLY =~ ^[Nn]$ ]]; then
info "安装已取消"
exit 0
fi
fi
# ============================================================
# 安装 uv
# ============================================================
if [ "$SKIP_UV" = false ]; then
echo ""
info "安装 uv..."
if command_exists uv; then
uv_version=$(uv --version 2>&1)
success "uv 已安装: $uv_version"
else
uv_tar_path="$SCRIPT_DIR/$UV_TAR_FILE"
# 创建安装目录
mkdir -p "$UV_INSTALL_PATH"
# 解压
info "解压 uv..."
temp_dir=$(mktemp -d)
tar -xzf "$uv_tar_path" -C "$temp_dir"
# 查找并复制 uv 可执行文件
uv_exe=$(find "$temp_dir" -name "uv" -type f | head -n 1)
if [ -n "$uv_exe" ]; then
cp "$uv_exe" "$UV_INSTALL_PATH/"
chmod +x "$UV_INSTALL_PATH/uv"
# 同时复制 uvx如果存在
uvx_exe=$(find "$temp_dir" -name "uvx" -type f | head -n 1)
if [ -n "$uvx_exe" ]; then
cp "$uvx_exe" "$UV_INSTALL_PATH/"
chmod +x "$UV_INSTALL_PATH/uvx"
fi
success "uv 已解压到 $UV_INSTALL_PATH"
else
error "在压缩包中找不到 uv 可执行文件"
rm -rf "$temp_dir"
exit 1
fi
# 清理临时目录
rm -rf "$temp_dir"
# 添加到 PATH
if add_to_path "$UV_INSTALL_PATH"; then
success "已添加 $UV_INSTALL_PATH 到 PATH"
else
info "uv 路径已在 shell 配置中"
fi
# 更新当前会话的 PATH
export PATH="$PATH:$UV_INSTALL_PATH"
# 验证
if command_exists uv; then
success "uv 安装成功"
else
warning "uv 安装完成,但需要重启终端或运行 'source $(get_shell_rc)'"
fi
fi
fi
# ============================================================
# 安装 Java JRE
# ============================================================
if [ "$SKIP_JAVA" = false ]; then
echo ""
info "安装 Java JRE..."
if command_exists java; then
java_version=$(java -version 2>&1 | head -n 1)
success "Java 已安装: $java_version"
else
java_tar_path="$SCRIPT_DIR/$JAVA_TAR_FILE"
# 创建安装目录
if [ "$SYSTEM_JAVA" = true ]; then
sudo mkdir -p "$(dirname "$JAVA_INSTALL_PATH")"
else
mkdir -p "$(dirname "$JAVA_INSTALL_PATH")"
fi
# 解压
info "解压 Java JRE..."
temp_dir=$(mktemp -d)
tar -xzf "$java_tar_path" -C "$temp_dir"
# 查找解压后的 JRE 目录
jre_dir=$(find "$temp_dir" -maxdepth 1 -type d -name "jdk-*-jre" | head -n 1)
if [ -z "$jre_dir" ]; then
jre_dir=$(find "$temp_dir" -maxdepth 1 -type d | tail -n 1)
fi
if [ -n "$jre_dir" ] && [ "$jre_dir" != "$temp_dir" ]; then
# 移动到目标位置
if [ "$SYSTEM_JAVA" = true ]; then
sudo rm -rf "$JAVA_INSTALL_PATH" 2>/dev/null || true
sudo mv "$jre_dir" "$JAVA_INSTALL_PATH"
else
rm -rf "$JAVA_INSTALL_PATH" 2>/dev/null || true
mv "$jre_dir" "$JAVA_INSTALL_PATH"
fi
success "Java JRE 已安装到 $JAVA_INSTALL_PATH"
else
error "在压缩包中找不到 JRE 目录"
rm -rf "$temp_dir"
exit 1
fi
# 清理临时目录
rm -rf "$temp_dir"
# 配置 JAVA_HOME
set_java_home "$JAVA_INSTALL_PATH"
export JAVA_HOME="$JAVA_INSTALL_PATH"
info "已设置 JAVA_HOME = $JAVA_INSTALL_PATH"
# 添加到 PATH
java_bin_path="$JAVA_INSTALL_PATH/bin"
if add_to_path "$java_bin_path"; then
success "已添加 Java bin 到 PATH"
else
info "Java bin 路径已在 shell 配置中"
fi
# 更新当前会话的 PATH
export PATH="$PATH:$java_bin_path"
# 创建符号链接(仅系统安装)
if [ "$SYSTEM_JAVA" = true ]; then
sudo ln -sf "$java_bin_path/java" /usr/local/bin/java 2>/dev/null || true
fi
# 验证
if command_exists java; then
java_version=$(java -version 2>&1 | head -n 1)
success "Java 安装成功: $java_version"
else
warning "Java 安装完成,但需要重启终端或运行 'source $(get_shell_rc)'"
fi
fi
fi
# ============================================================
# 安装 Python (通过 uv)
# ============================================================
echo ""
info "配置 Python..."
if command_exists uv; then
python_list=$(uv python list 2>&1 || true)
if echo "$python_list" | grep -q "3\."; then
success "Python 已通过 uv 安装"
else
info "通过 uv 安装 Python 3.11..."
if uv python install 3.11 2>/dev/null; then
success "Python 3.11 安装成功"
else
warning "Python 安装需要网络连接,请稍后手动运行: uv python install 3.11"
fi
fi
else
warning "uv 不可用,无法安装 Python。请重启终端后运行: uv python install 3.11"
fi
# ============================================================
# 配置 aide PATH
# ============================================================
if [ -n "$AIDE_PATH" ]; then
echo ""
info "配置 aide PATH..."
aide_bin_path="$AIDE_PATH/bin"
if [ -d "$aide_bin_path" ]; then
if add_to_path "$aide_bin_path"; then
success "已添加 aide 到 PATH: $aide_bin_path"
else
info "aide 已在 PATH 中"
fi
export PATH="$PATH:$aide_bin_path"
else
warning "aide-program/bin 目录不存在: $aide_bin_path"
fi
fi
# ============================================================
# 完成
# ============================================================
header "安装完成"
info "已安装组件:"
if command_exists uv; then
echo -e " ${GREEN}${NC} uv: $(uv --version 2>&1)"
else
echo -e " ${YELLOW}${NC} uv: 需要重启终端"
fi
if command_exists java; then
echo -e " ${GREEN}${NC} Java: $(java -version 2>&1 | head -n 1)"
else
echo -e " ${YELLOW}${NC} Java: 需要重启终端"
fi
echo ""
info "下一步:"
echo " 1. 重启终端或运行: source $(get_shell_rc)"
echo " 2. 运行 'uv python install 3.11' 安装 Python如尚未安装"
echo " 3. 运行 'aide env ensure --runtime' 验证安装"
echo ""

View File

@@ -1,62 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Aide 离线安装资源清单 (Linux)",
"description": "包含所有需要下载的资源文件信息",
"version": "1.0.0",
"platform": "linux",
"arch": "x64",
"resources": [
{
"id": "uv",
"name": "uv (Python 包管理器)",
"version": "latest",
"required": true,
"filename": "uv-x86_64-unknown-linux-gnu.tar.gz",
"url": "https://github.com/astral-sh/uv/releases/latest/download/uv-x86_64-unknown-linux-gnu.tar.gz",
"checksum": {
"algorithm": "sha256",
"value": "请从发布页面获取"
},
"install_path": "~/.local/bin",
"notes": "解压后将 uv 可执行文件放入安装路径"
},
{
"id": "java_jre",
"name": "Eclipse Temurin JRE 17",
"version": "17",
"required": true,
"filename": "OpenJDK17U-jre_x64_linux_hotspot_17.0.9_9.tar.gz",
"url": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.9%2B9/OpenJDK17U-jre_x64_linux_hotspot_17.0.9_9.tar.gz",
"checksum": {
"algorithm": "sha256",
"value": "请从发布页面获取"
},
"install_path": "/opt/java/jre-17 或 ~/.local/java/jre-17",
"notes": "解压后配置 JAVA_HOME 和 PATH"
}
],
"download_instructions": {
"zh": [
"1. 访问上述每个资源的 url 下载文件",
"2. 将下载的文件保存到此目录(与本文件同目录)",
"3. 确保文件名与 filename 字段一致",
"4. 运行 chmod +x install.sh && ./install.sh"
],
"en": [
"1. Visit the url for each resource and download the file",
"2. Save the downloaded files to this directory",
"3. Ensure filenames match the filename field",
"4. Run chmod +x install.sh && ./install.sh"
]
},
"post_install": {
"python": {
"note": "Python 将通过 uv python install 命令安装",
"offline_option": "如需完全离线安装 Python请提前运行 'uv python install 3.11' 下载 Python 到本地缓存"
},
"aide": {
"note": "安装完成后需要将 aide-program/bin 添加到 PATH",
"path_variable": "$PATH"
}
}
}

View File

@@ -1,167 +0,0 @@
# Aide 离线安装程序 (Windows)
本目录包含 Aide 工具的 Windows 离线安装程序,用于在无网络或受限网络环境下安装所需的环境依赖。
## 概述
此离线安装程序可以安装以下组件:
- **uv** - 高性能 Python 包管理器
- **Java JRE 17** - PlantUML 运行依赖
- **Python 3.11** - Aide 运行时(通过 uv 安装,需要网络)
## 使用步骤
### 第 1 步:下载资源文件
参考 `resources.json` 中的下载链接,下载以下文件到本目录:
| 文件名 | 说明 | 下载链接 |
|--------|------|----------|
| `uv-x86_64-pc-windows-msvc.zip` | uv 安装包 | [GitHub Releases](https://github.com/astral-sh/uv/releases/latest) |
| `OpenJDK17U-jre_x64_windows_hotspot_17.0.9_9.zip` | Java JRE 17 | [Adoptium](https://adoptium.net/temurin/releases/?os=windows&arch=x64&package=jre&version=17) |
> **注意**Java JRE 的版本号可能会更新,请下载最新的 JRE 17 版本,并相应修改 `resources.json` 中的文件名。
### 第 2 步:运行安装脚本
1. 以管理员身份打开 PowerShell
2. 导航到本目录
3. 运行安装脚本:
```powershell
# 设置执行策略(如需要)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# 运行安装脚本
.\install.ps1
```
### 第 3 步:配置 aide PATH可选
如果要将 aide 添加到系统 PATH运行时指定 aide-program 路径:
```powershell
.\install.ps1 -AideProgramPath "C:\path\to\aide-program"
```
### 第 4 步:安装 Python
由于 Python 需要通过 uv 下载,离线安装无法自动完成。请在有网络的环境下运行:
```powershell
uv python install 3.11
```
> **提示**:如果需要完全离线安装,可以在有网络的机器上提前运行此命令,然后复制 `~/.local/share/uv/python/` 目录到目标机器。
### 第 5 步:验证安装
重启终端后运行:
```powershell
# 检查各组件版本
uv --version
java -version
# 验证 aide 环境
aide env ensure --runtime
```
## 命令行选项
```powershell
.\install.ps1 [-AideProgramPath <path>] [-Silent] [-SkipJava] [-SkipUv]
```
| 选项 | 说明 |
|------|------|
| `-AideProgramPath` | 指定 aide-program 目录路径,自动添加到 PATH |
| `-Silent` | 静默安装模式,不显示交互提示 |
| `-SkipJava` | 跳过 Java JRE 安装 |
| `-SkipUv` | 跳过 uv 安装 |
## 示例
### 交互式安装
```powershell
.\install.ps1
```
### 静默安装
```powershell
.\install.ps1 -Silent
```
### 完整安装(包含 aide PATH 配置)
```powershell
.\install.ps1 -AideProgramPath "C:\projects\ccoptimize\aide-program"
```
### 仅安装 uv
```powershell
.\install.ps1 -SkipJava
```
## 安装位置
| 组件 | 安装位置 |
|------|----------|
| uv | `%USERPROFILE%\.local\bin\` |
| Java JRE | `%LOCALAPPDATA%\Programs\Java\jre-17\` |
| Python | `%USERPROFILE%\.local\share\uv\python\` (通过 uv 管理) |
## 环境变量
安装程序会自动配置以下环境变量:
| 变量 | 值 |
|------|-----|
| `PATH` | 添加 uv 和 Java bin 目录 |
| `JAVA_HOME` | Java JRE 安装路径 |
## 故障排除
### Q: 运行脚本时提示"无法加载文件,因为在此系统上禁止运行脚本"
A: 运行以下命令修改执行策略:
```powershell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
```
### Q: 安装后命令找不到?
A: 重启 PowerShell 或手动刷新环境变量:
```powershell
$env:Path = [System.Environment]::GetEnvironmentVariable("Path","User") + ";" + [System.Environment]::GetEnvironmentVariable("Path","Machine")
```
### Q: Java 安装后 java 命令仍然找不到?
A: 检查 JAVA_HOME 和 PATH 是否正确设置:
```powershell
$env:JAVA_HOME
$env:Path -split ";" | Where-Object { $_ -like "*java*" }
```
### Q: 如何完全卸载?
A: 删除以下目录和环境变量:
1. 删除 `%USERPROFILE%\.local\bin\uv.exe`
2. 删除 `%LOCALAPPDATA%\Programs\Java\jre-17\`
3. 从用户 PATH 中移除相关路径
4. 删除 JAVA_HOME 环境变量
## 文件清单
```
windows/
├── README.md # 本说明文件
├── resources.json # 资源清单(含下载链接)
├── install.ps1 # 主安装脚本
├── uv-x86_64-pc-windows-msvc.zip # [需下载]
└── OpenJDK17U-jre_x64_windows_*.zip # [需下载]
```

View File

@@ -1,405 +0,0 @@
#Requires -Version 5.1
<#
.SYNOPSIS
Aide 离线环境安装脚本 (Windows)
.DESCRIPTION
此脚本从本地资源文件安装 aide 工具所需的环境依赖:
- uv (Python 包管理器)
- Java JRE (用于 PlantUML)
运行前请确保已下载所有必需的资源文件到脚本所在目录。
参见 resources.json 获取资源下载链接。
.PARAMETER AideProgramPath
aide-program 目录的路径(可选,用于配置 PATH
.PARAMETER Silent
静默安装模式,不显示交互提示
.PARAMETER SkipJava
跳过 Java 安装
.PARAMETER SkipUv
跳过 uv 安装
.EXAMPLE
.\install.ps1
交互式安装
.EXAMPLE
.\install.ps1 -Silent -AideProgramPath "C:\aide\aide-program"
静默安装并配置 aide PATH
.NOTES
作者: Aide Team
版本: 1.0.0
要求: Windows 10/11, PowerShell 5.1+
#>
param(
[string]$AideProgramPath,
[switch]$Silent,
[switch]$SkipJava,
[switch]$SkipUv
)
# ============================================================
# 配置
# ============================================================
$ErrorActionPreference = "Stop"
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
# 资源文件名
$UvZipFile = "uv-x86_64-pc-windows-msvc.zip"
$JavaZipFile = "OpenJDK17U-jre_x64_windows_hotspot_17.0.9_9.zip"
# 安装路径
$UvInstallPath = "$env:USERPROFILE\.local\bin"
$JavaInstallPath = "$env:LOCALAPPDATA\Programs\Java\jre-17"
# ============================================================
# 辅助函数
# ============================================================
function Write-Success {
param([string]$Message)
Write-Host "$Message" -ForegroundColor Green
}
function Write-Warning {
param([string]$Message)
Write-Host "$Message" -ForegroundColor Yellow
}
function Write-Error {
param([string]$Message)
Write-Host "$Message" -ForegroundColor Red
}
function Write-Info {
param([string]$Message)
Write-Host "$Message" -ForegroundColor Cyan
}
function Write-Header {
param([string]$Message)
Write-Host ""
Write-Host "========================================" -ForegroundColor Cyan
Write-Host " $Message" -ForegroundColor Cyan
Write-Host "========================================" -ForegroundColor Cyan
Write-Host ""
}
function Test-Command {
param([string]$Command)
$null -ne (Get-Command $Command -ErrorAction SilentlyContinue)
}
function Update-PathEnvironment {
# 刷新当前会话的 PATH
$env:Path = [System.Environment]::GetEnvironmentVariable("Path", "User") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "Machine")
}
function Add-ToUserPath {
param([string]$PathToAdd)
$currentPath = [Environment]::GetEnvironmentVariable("Path", "User")
if ($currentPath -notlike "*$PathToAdd*") {
[Environment]::SetEnvironmentVariable("Path", "$currentPath;$PathToAdd", "User")
Update-PathEnvironment
return $true
}
return $false
}
function Test-FileChecksum {
param(
[string]$FilePath,
[string]$ExpectedHash,
[string]$Algorithm = "SHA256"
)
if ([string]::IsNullOrWhiteSpace($ExpectedHash) -or $ExpectedHash -eq "请从发布页面获取") {
Write-Warning "跳过校验和验证(未提供预期值)"
return $true
}
$actualHash = (Get-FileHash -Path $FilePath -Algorithm $Algorithm).Hash
return $actualHash -eq $ExpectedHash
}
function Expand-ArchiveToPath {
param(
[string]$ZipPath,
[string]$DestinationPath,
[switch]$CreateIfNotExists
)
if ($CreateIfNotExists -and -not (Test-Path $DestinationPath)) {
New-Item -ItemType Directory -Path $DestinationPath -Force | Out-Null
}
Expand-Archive -Path $ZipPath -DestinationPath $DestinationPath -Force
}
# ============================================================
# 主逻辑
# ============================================================
Write-Header "Aide 离线安装程序 (Windows)"
# 检查资源文件
Write-Info "检查资源文件..."
$missingResources = @()
if (-not $SkipUv) {
$uvZipPath = Join-Path $ScriptDir $UvZipFile
if (-not (Test-Path $uvZipPath)) {
$missingResources += $UvZipFile
}
}
if (-not $SkipJava) {
$javaZipPath = Join-Path $ScriptDir $JavaZipFile
if (-not (Test-Path $javaZipPath)) {
$missingResources += $JavaZipFile
}
}
if ($missingResources.Count -gt 0) {
Write-Error "缺少以下资源文件:"
foreach ($resource in $missingResources) {
Write-Host " - $resource" -ForegroundColor Red
}
Write-Host ""
Write-Info "请参考 resources.json 下载所需文件后重新运行此脚本"
exit 1
}
Write-Success "所有资源文件已就绪"
# 确认安装
if (-not $Silent) {
Write-Host ""
Write-Info "将要安装以下组件:"
if (-not $SkipUv) {
Write-Host " - uv (Python 包管理器) -> $UvInstallPath"
}
if (-not $SkipJava) {
Write-Host " - Java JRE 17 -> $JavaInstallPath"
}
Write-Host ""
$confirm = Read-Host "是否继续? (Y/n)"
if ($confirm -eq "n" -or $confirm -eq "N") {
Write-Info "安装已取消"
exit 0
}
}
# ============================================================
# 安装 uv
# ============================================================
if (-not $SkipUv) {
Write-Host ""
Write-Info "安装 uv..."
# 检查是否已安装
if (Test-Command "uv") {
$uvVersion = uv --version 2>&1
Write-Success "uv 已安装: $uvVersion"
} else {
$uvZipPath = Join-Path $ScriptDir $UvZipFile
# 创建安装目录
if (-not (Test-Path $UvInstallPath)) {
New-Item -ItemType Directory -Path $UvInstallPath -Force | Out-Null
Write-Info "创建目录: $UvInstallPath"
}
# 解压
Write-Info "解压 uv..."
$tempDir = Join-Path $env:TEMP "uv-extract-$(Get-Random)"
Expand-ArchiveToPath -ZipPath $uvZipPath -DestinationPath $tempDir -CreateIfNotExists
# 复制 uv.exe
$uvExe = Get-ChildItem -Path $tempDir -Filter "uv.exe" -Recurse | Select-Object -First 1
if ($uvExe) {
Copy-Item -Path $uvExe.FullName -Destination $UvInstallPath -Force
# 同时复制 uvx.exe (如果存在)
$uvxExe = Get-ChildItem -Path $tempDir -Filter "uvx.exe" -Recurse | Select-Object -First 1
if ($uvxExe) {
Copy-Item -Path $uvxExe.FullName -Destination $UvInstallPath -Force
}
Write-Success "uv 已解压到 $UvInstallPath"
} else {
Write-Error "在压缩包中找不到 uv.exe"
exit 1
}
# 清理临时目录
Remove-Item -Path $tempDir -Recurse -Force -ErrorAction SilentlyContinue
# 添加到 PATH
if (Add-ToUserPath $UvInstallPath) {
Write-Success "已添加 $UvInstallPath 到 PATH"
} else {
Write-Info "uv 路径已在 PATH 中"
}
# 验证
Update-PathEnvironment
if (Test-Command "uv") {
Write-Success "uv 安装成功"
} else {
Write-Warning "uv 安装完成,但需要重启终端后才能使用"
}
}
}
# ============================================================
# 安装 Java JRE
# ============================================================
if (-not $SkipJava) {
Write-Host ""
Write-Info "安装 Java JRE..."
# 检查是否已安装
if (Test-Command "java") {
$javaVersion = java -version 2>&1 | Select-Object -First 1
Write-Success "Java 已安装: $javaVersion"
} else {
$javaZipPath = Join-Path $ScriptDir $JavaZipFile
# 创建安装目录的父目录
$javaParentDir = Split-Path $JavaInstallPath -Parent
if (-not (Test-Path $javaParentDir)) {
New-Item -ItemType Directory -Path $javaParentDir -Force | Out-Null
}
# 解压
Write-Info "解压 Java JRE..."
$tempDir = Join-Path $env:TEMP "java-extract-$(Get-Random)"
Expand-ArchiveToPath -ZipPath $javaZipPath -DestinationPath $tempDir -CreateIfNotExists
# 找到解压后的 JRE 目录
$jreDir = Get-ChildItem -Path $tempDir -Directory | Where-Object { $_.Name -like "jdk-*-jre" -or $_.Name -like "jre*" } | Select-Object -First 1
if (-not $jreDir) {
$jreDir = Get-ChildItem -Path $tempDir -Directory | Select-Object -First 1
}
if ($jreDir) {
# 移动到目标位置
if (Test-Path $JavaInstallPath) {
Remove-Item -Path $JavaInstallPath -Recurse -Force
}
Move-Item -Path $jreDir.FullName -Destination $JavaInstallPath -Force
Write-Success "Java JRE 已安装到 $JavaInstallPath"
} else {
Write-Error "在压缩包中找不到 JRE 目录"
exit 1
}
# 清理临时目录
Remove-Item -Path $tempDir -Recurse -Force -ErrorAction SilentlyContinue
# 配置 JAVA_HOME
[Environment]::SetEnvironmentVariable("JAVA_HOME", $JavaInstallPath, "User")
$env:JAVA_HOME = $JavaInstallPath
Write-Info "已设置 JAVA_HOME = $JavaInstallPath"
# 添加到 PATH
$javaBinPath = Join-Path $JavaInstallPath "bin"
if (Add-ToUserPath $javaBinPath) {
Write-Success "已添加 Java bin 到 PATH"
} else {
Write-Info "Java bin 路径已在 PATH 中"
}
# 验证
Update-PathEnvironment
if (Test-Command "java") {
$javaVersion = java -version 2>&1 | Select-Object -First 1
Write-Success "Java 安装成功: $javaVersion"
} else {
Write-Warning "Java 安装完成,但需要重启终端后才能使用"
}
}
}
# ============================================================
# 安装 Python (通过 uv)
# ============================================================
Write-Host ""
Write-Info "配置 Python..."
if (Test-Command "uv") {
$pythonList = uv python list 2>&1
if ($pythonList -match "3\.\d+") {
Write-Success "Python 已通过 uv 安装"
} else {
Write-Info "通过 uv 安装 Python 3.11..."
try {
uv python install 3.11
Write-Success "Python 3.11 安装成功"
} catch {
Write-Warning "Python 安装需要网络连接,请稍后手动运行: uv python install 3.11"
}
}
} else {
Write-Warning "uv 不可用,无法安装 Python。请重启终端后运行: uv python install 3.11"
}
# ============================================================
# 配置 aide PATH
# ============================================================
if ($AideProgramPath) {
Write-Host ""
Write-Info "配置 aide PATH..."
$aideBinPath = Join-Path $AideProgramPath "bin"
if (Test-Path $aideBinPath) {
if (Add-ToUserPath $aideBinPath) {
Write-Success "已添加 aide 到 PATH: $aideBinPath"
} else {
Write-Info "aide 已在 PATH 中"
}
} else {
Write-Warning "aide-program/bin 目录不存在: $aideBinPath"
}
}
# ============================================================
# 完成
# ============================================================
Write-Header "安装完成"
Write-Info "已安装组件:"
if (Test-Command "uv") {
Write-Host " ✓ uv: $(uv --version 2>&1)" -ForegroundColor Green
} else {
Write-Host " ⚠ uv: 需要重启终端" -ForegroundColor Yellow
}
if (Test-Command "java") {
Write-Host " ✓ Java: $(java -version 2>&1 | Select-Object -First 1)" -ForegroundColor Green
} else {
Write-Host " ⚠ Java: 需要重启终端" -ForegroundColor Yellow
}
Write-Host ""
Write-Info "下一步:"
Write-Host " 1. 重启终端使环境变量生效"
Write-Host " 2. 运行 'uv python install 3.11' 安装 Python如尚未安装"
Write-Host " 3. 运行 'aide env ensure --runtime' 验证安装"
Write-Host ""

View File

@@ -1,62 +0,0 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Aide 离线安装资源清单 (Windows)",
"description": "包含所有需要下载的资源文件信息",
"version": "1.0.0",
"platform": "windows",
"arch": "x64",
"resources": [
{
"id": "uv",
"name": "uv (Python 包管理器)",
"version": "latest",
"required": true,
"filename": "uv-x86_64-pc-windows-msvc.zip",
"url": "https://github.com/astral-sh/uv/releases/latest/download/uv-x86_64-pc-windows-msvc.zip",
"checksum": {
"algorithm": "sha256",
"value": "请从发布页面获取"
},
"install_path": "%USERPROFILE%\\.local\\bin",
"notes": "解压后将 uv.exe 放入安装路径"
},
{
"id": "java_jre",
"name": "Eclipse Temurin JRE 17",
"version": "17",
"required": true,
"filename": "OpenJDK17U-jre_x64_windows_hotspot_17.0.9_9.zip",
"url": "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.9%2B9/OpenJDK17U-jre_x64_windows_hotspot_17.0.9_9.zip",
"checksum": {
"algorithm": "sha256",
"value": "请从发布页面获取"
},
"install_path": "%LOCALAPPDATA%\\Programs\\Java\\jre-17",
"notes": "解压后配置 JAVA_HOME 和 PATH"
}
],
"download_instructions": {
"zh": [
"1. 访问上述每个资源的 url 下载文件",
"2. 将下载的文件保存到此目录(与本文件同目录)",
"3. 确保文件名与 filename 字段一致",
"4. 以管理员身份运行 install.ps1"
],
"en": [
"1. Visit the url for each resource and download the file",
"2. Save the downloaded files to this directory",
"3. Ensure filenames match the filename field",
"4. Run install.ps1 as Administrator"
]
},
"post_install": {
"python": {
"note": "Python 将通过 uv python install 命令安装",
"offline_option": "如需完全离线安装 Python请提前运行 'uv python install 3.11' 下载 Python 到本地缓存"
},
"aide": {
"note": "安装完成后需要将 aide-program/bin 添加到 PATH",
"path_variable": "%PATH%"
}
}
}

View File

@@ -1 +1,2 @@
# 在此添加依赖 # 在此添加依赖
tomli-w==1.2.0

30
cache/old-task.md vendored Normal file
View File

@@ -0,0 +1,30 @@
> commands & skills都是将会提供给你使用的指导规范以及工具和能力下文中会用LLM来指代你的角色
对现有的 commands & skills & aide program 体系做一些调整:
创建一个类似docs的命令但这个新命令主要面向人类用户尤其是目标用户很可能是从未接触过工作目录下的项目对此项目完全没有了解的陌生新人
- 入口是README.md细节放在docs目录因为是面向用户而非程序所有都不要默认放在.aide目录下而是直接放在外面根目录下就好README.md和docs这两个路径都要在环境配置中设置使用时必须用aide读取路径
- 需要单独讨论一下README应该放些什么样的东西我想的是在配置中指定一个`make-readme-rules.md`
- 需要注意上面说的README.md、docs、make-readme-rules.md都是路径值具体配置项的命名还需要你酌情考虑
- 然后如果当前项目不存在make-readme-rules.md就要首先引导用户设定入口编写规范引导用户设定入口编写规范前应提示用户如果还没有对此项目运行过docs+load建议先完成面向LLM文档的构建再重新启动对话加载项目文档后再运行此命令以便于LLM更好的分析和提供对面向用户文档的编写建议除非这个项目真的非常非常的简单微型然后确定完成了load或是确定不需要load后再建议把这个制定过程作为一个完整的对话在这次对话中专注于README文档编写规范的制定为这项任务允许消耗全部的上下文当任务完成之后要使用`/exit`退出本次对话重新开始一个新的对话继续完成之前的任务)
- 制作一个skills包含一个SKILL.md和数个README.md规范模板需要把这数模版的编写作为一个完整的子任务单独执行先完成该skill再实现这个第3点的其他需求
- 可以向用户介绍有哪些可用模板或者提供一些可选的模块化README内容规范板块供用户自由拼搭
- 同时应该根据当前项目的项目文档面向LLM的由docs命令构建的项目文档进行分析为用户提供可参考的建议
- 我需要你尽情发挥你的创造力和专业性,指导我,像这种面向用户的文档应该写些什么,怎么写,怎么组织分布,
- 如果是一个单纯的文档&材料类项目应该怎么处理
- 如果是一个单一的cargo、springboot、flutter、android、vue、react等这类的单体项目应该怎么处理
- 如果是一个项目下同时含有文档&材料和cargo等程序开发单体项目应该怎么处理
- 如果该项目下同时含有多个单体项目例如同时含有多个cargo lib crate、cargo bin crate、多个springboot单体服务、vue前端单体项目又应该怎么处理
- 这些情况之间是否应该有较明显的区分?
- 我希望要在细节文档目录下docs目录下创建一个专用于面向用户的长期维护的完善的流程图目录不同于run时创建的专用于当时任务的流程图而是供用户快速理解用
- 如果是不含程序开发内容的项目,就制作用于引导用户如何了解项目的流程图,
- 如果含程序开发则同时制作引导的流程图和对于该项目的流程图程序方面的流程图参考run中的程序逻辑流图规范要求以一整套程序开发项目为单位编写一整套流程图例如cargo一整个目录就是一整个项目
- 如果同时含有多个开发项目,则要对于每一个项目都编写一套流程图,
- 一套流程图是指一整个专用于这套流程图的目录目录下含有一个guide.puml和其他子模块的puml
- 假设一个项目下同时含有一个cargo lib crate、一个 cargo bin crate 、一个vue项目分别名为api-lib、api、user-interface且假设已设定用户文档的流程图目录名为graph-guide
- 则graph-guide目录下应该至少含有三个目录api-lib、api、user-interface和一个文件guide.puml且每个子目录下都至少有一个guide.puml
- 在开始编写流程图前应该要先根据load加载的项目文档对项目进行分析和流程图分划处理用户文档的区块划分不同于项目文档项目文档的要求是完完全全的深度且全面的覆盖便于先脉络后枝叶的按需加载和检索但用户文档要按照逻辑或业务呈现一个整体的形式为目标
- 先按需读取项目文档知道足够对项目信息做出业务逻辑整体的区块划分,然后再深入分析其复杂度和工作量,对流程图的编写工作进行步骤计划,
- 步骤计划不一定是一个子项目一个计划例如前面api-lib+api+ui的项目可以分为3个整体区块但不一定只要三步就能完成如果api-lib过于庞大可能即使每一次都消耗满上下文分布工作10次也不一定能完成这一个区块的任务
- 必须先分划好区块,然后分析具体步骤计划,编写计划进度文档然后才能开始具体的流程图设计,
- 也许可以把这个命令拆分为多个命令先完成好流程图的任务再处理文档的事这样的话就可以在写文档时如果需要用到图的话直接插入已生成的png流程图且做好拆分的话更利于流程图的任务分步执行和接续执行初始化以及后续的每次对话都只需要load+运行构建用户文档流程图的命令即可,第一次会开始分析和计划之后,之后的每次执行都会在产出的同时同步更新计划文档,后续的新对话中通过检索计划即可,计划文档应起到分布计划+状态记录+指导任务细节的作用,

View File

@@ -1,23 +0,0 @@
创建和维护一份用于记录git分支概况的文档
当start一个新任务时检查git状态是否干净若有未跟踪未暂存的文件状态使用git add .跟踪和暂存所有这些所有文件,然后创建一个提交保存状态版本,然后记录下这个提交的哈希,
如果已经是干净的状态了则无需新建提交,直接记录下目前最新的提交的哈希,
如果当前是空状态还没有任何提交如果不在仓库没有被git管理就git init初始化一个仓库创建一个空的.gitkeep文件然后创建一个初始化提交记录下这个提交的哈希
然后从当前记录的提交,创建一个新的分支,并将分支名和该起始提交哈希还有从哪个分支创建出来的都记录到文档,
后续所有的流程变动与集成的git操作都是在这个分支上进行的
最后finish之后把finish时的哈希记录到那个文档中作为结束提交哈希
然后此时因为要记录下最后的结束哈希flow的状态数据和那个文档都会有更新把这些都git add .然后创建一个提交,此时仓库状态是干净的了,
从这个提交合并到原本的分支去回到原来的分支后使用git reset --soft 软重置到起始提交,
然后再git add . ,再根据那个分支所执行的任务名生成提交信息,创建一个新提交,
这样在原本的分支可以只留下极少的提交同时又能切换到任务分支查看变更的细节提交主要是便于回溯实际上如果问题最终解决了即使过程中出了点问题最后解决了任务完成后可能也不会回去看了我希望我的git记录能干净些而且就算有查看细节的需求也可以通过查那份维护的文档切换到目标分支去看步骤细节
我希望可以尽可能少的改动commands&skills把这些全部封装到aide flow中可能都不需要改commands只要在skill中更新一部分信息让LLM简单了解到aide flow会发生这些副作用即可
这样的封装能实现吗?
aide flow start task-optimize 测试
aide flow next-part flow-design test
aide flow next-part impl test
aide flow next-part verify test
aide flow next-part docs test
echo "" >> CHANGELOG.md
aide flow next-part finish test

View File

@@ -1,17 +0,0 @@
口头话解析准则(优化版)
1. 理解层面
- 语义解析:分析口语化表达,提取核心意图和真实需求
- 目标识别:明确你想要达成的最终目标,而非仅关注表面描述
2. 批判性分析
- 逻辑漏洞:指出推理链条中的致命错误或逻辑矛盾
- 盲点与不足:识别被忽略的重要因素或潜在风险
- 过度设计:标记不必要的复杂性或多余的考虑
3. 建设性建议
- 优化空间:提出可以改进的具体方向
- 替代方案:对于关键步骤,给出多种可行路径供选择
- 权衡分析:说明不同方案的利弊
4. 沟通方式
- 坦诚直接:发现问题直接指出,不回避冲突
- 优先级排序:按重要程度排列反馈,关键问题优先
- 追问确认:遇到歧义时主动澄清,而非猜测

View File

@@ -1 +0,0 @@
在test-cache目录下写一个python的hello程序

View File

@@ -1,157 +0,0 @@
# 任务细则:环境安装 Command 与离线安装程序
> 生成时间2025-12-17
> 任务来源task-now.md
## 任务概述
为 aide 工具创建完整的环境安装解决方案,包括:
1. Windows 环境安装 Command (`/aide:install-win`)
2. Linux 环境安装 Command (`/aide:install-linux`)
3. 离线安装程序(支持 Windows 和 Linux
## 用户决策记录
| 决策项 | 用户选择 |
|--------|----------|
| 离线安装程序 | 本次一并实现 |
| macOS 支持 | 不支持(仅 Windows/Linux |
| Command 组织 | 分离命令 |
## 需要安装的工具
| 工具 | 用途 | 安装方式 |
|------|------|----------|
| uv | Python 包管理器 | 官方安装脚本 |
| Python | aide 运行时 | 通过 `uv python install` |
| Java (JRE) | PlantUML 依赖 | 系统包管理器或 Adoptium |
## 子计划拆分
本任务拆分为 4 个子计划:
### 子计划 1Windows 环境安装 Command
**目标**:创建 `/aide:install-win` command
**产出**
- `aide-marketplace/aide-plugin/commands/install-win.md`
**功能要求**
1. 检测当前环境状态uv、Python、Java
2. 对于缺失的工具,提供两种安装模式:
- **模式 A自动安装**:生成安装报告,用户确认后执行安装
- **模式 B手动指南**:生成 markdown 操作指南 + PowerShell 脚本
3. 安装完成后验证工具可用性
4. 指导用户将 aide-program 添加到 PATH
**技术要点**
- uv 安装:`irm https://astral.sh/uv/install.ps1 | iex`
- Python 安装:`uv python install 3.11`
- Java 安装winget/scoop 或 Adoptium MSI
- PATH 配置:修改用户环境变量
### 子计划 2Linux 环境安装 Command
**目标**:创建 `/aide:install-linux` command
**产出**
- `aide-marketplace/aide-plugin/commands/install-linux.md`
**功能要求**
1. 检测当前环境状态uv、Python、Java
2. 检测 Linux 发行版Debian/Ubuntu、RHEL/Fedora、Arch
3. 对于缺失的工具,提供两种安装模式:
- **模式 A自动安装**:生成安装报告,用户确认后执行安装
- **模式 B手动指南**:生成 markdown 操作指南 + Shell 脚本
4. 安装完成后验证工具可用性
5. 指导用户将 aide-program 添加到 PATH
**技术要点**
- uv 安装:`curl -LsSf https://astral.sh/uv/install.sh | sh`
- Python 安装:`uv python install 3.11`
- Java 安装apt/dnf/pacman 或 Adoptium tarball
- PATH 配置:修改 ~/.bashrc 或 ~/.zshrc
### 子计划 3离线安装程序 - Windows 版
**目标**:创建 Windows 离线安装程序
**产出**
- `aide-program/offline-installer/windows/` 目录
- `install.ps1` - 主安装脚本
- `resources.json` - 资源清单
- `README.md` - 使用说明
**功能要求**
1. 生成资源清单(下载链接列表)
2. 用户下载资源到指定目录
3. 运行安装脚本,从本地文件完成安装
4. 支持静默安装和交互式安装
**资源清单内容**
- uv 安装包Windows x64
- Python 安装包(通过 uv 管理,可选预下载)
- Java JREAdoptium Temurin
### 子计划 4离线安装程序 - Linux 版
**目标**:创建 Linux 离线安装程序
**产出**
- `aide-program/offline-installer/linux/` 目录
- `install.sh` - 主安装脚本
- `resources.json` - 资源清单
- `README.md` - 使用说明
**功能要求**
1. 生成资源清单(下载链接列表)
2. 用户下载资源到指定目录
3. 运行安装脚本,从本地文件完成安装
4. 支持多种 Linux 发行版
**资源清单内容**
- uv 安装包Linux x64
- Python 安装包(通过 uv 管理,可选预下载)
- Java JREAdoptium Temurin tarball
## 执行顺序
```
子计划 1 (Windows Command)
子计划 2 (Linux Command)
子计划 3 (Windows 离线安装)
子计划 4 (Linux 离线安装)
```
## 成功标准
1. **Command 功能验证**
- 能正确检测环境状态
- 自动安装模式能成功安装所有工具
- 手动指南清晰可执行
- aide 命令在 PATH 中可用
2. **离线安装验证**
- 资源清单完整且链接有效
- 安装脚本能从本地文件完成安装
- 安装后环境检测通过
## 风险与缓解
| 风险 | 缓解措施 |
|------|----------|
| 系统权限不足 | 明确提示所需权限,提供非管理员替代方案 |
| 网络环境受限 | 离线安装程序作为备选 |
| 版本兼容性 | 指定明确的版本要求,提供版本检测 |
| 安装失败回滚 | 记录安装前状态,提供回滚指南 |
## 约束条件
1. 不修改 aide-program 核心代码(仅添加离线安装器目录)
2. Command 遵循现有 aide-marketplace 格式规范
3. 所有脚本需包含完整注释
4. 安装过程需用户确认,不得静默修改系统