Compare commits
25 Commits
d2882c9b99
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 4a0759e36c | |||
| 37c434b92a | |||
| 114c0df380 | |||
| 5942bd2d6c | |||
| d2161690a1 | |||
| d2842d46db | |||
| 3313dc1fb8 | |||
| af40327146 | |||
| 66a0782c73 | |||
| af6605e5b9 | |||
| bd5719febb | |||
| 4cf9fc7a60 | |||
| 3de9101705 | |||
| 5a29146c32 | |||
| 93d1b21bb8 | |||
| 0079bd5cd4 | |||
| 575b07e9e5 | |||
| 714848745d | |||
| b1c422ad7b | |||
| f4a82c96ee | |||
| e808201ec3 | |||
| 645a30cace | |||
| 2ba61695d0 | |||
| 80ebbd4d85 | |||
| 5a2f50d13b |
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"next_number": 14,
|
||||
"next_number": 26,
|
||||
"branches": [
|
||||
{
|
||||
"number": 1,
|
||||
@@ -150,6 +150,150 @@
|
||||
"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"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,5 +1,137 @@
|
||||
# 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 工作流
|
||||
@@ -8,7 +140,8 @@
|
||||
- **起始提交**: f4b9620
|
||||
- **结束提交**: f4b9620
|
||||
- **状态**: finished
|
||||
- **时间**: 2025-12-18 10:41 ~ 11:22
|
||||
- **起始时间**: 2025-12-18 10:41
|
||||
- **结束时间**: 2025-12-18 11:22
|
||||
|
||||
## aide/012
|
||||
|
||||
@@ -17,7 +150,7 @@
|
||||
- **源分支**: master
|
||||
- **起始提交**: c6f45f9
|
||||
- **状态**: active
|
||||
- **时间**: 2025-12-18 10:09
|
||||
- **起始时间**: 2025-12-18 10:09
|
||||
|
||||
## aide/011
|
||||
|
||||
@@ -27,7 +160,8 @@
|
||||
- **起始提交**: 2042238
|
||||
- **结束提交**: 8ea9ce7
|
||||
- **状态**: finished
|
||||
- **时间**: 2025-12-18 10:03 ~ 10:03
|
||||
- **起始时间**: 2025-12-18 10:03
|
||||
- **结束时间**: 2025-12-18 10:03
|
||||
|
||||
## aide/010
|
||||
|
||||
@@ -37,7 +171,8 @@
|
||||
- **起始提交**: c8d20db
|
||||
- **结束提交**: 2034962
|
||||
- **状态**: finished
|
||||
- **时间**: 2025-12-17 06:34 ~ 06:35
|
||||
- **起始时间**: 2025-12-17 06:34
|
||||
- **结束时间**: 2025-12-17 06:35
|
||||
|
||||
## aide/009
|
||||
|
||||
@@ -47,7 +182,8 @@
|
||||
- **起始提交**: 6305f61
|
||||
- **结束提交**: d705a73
|
||||
- **状态**: finished
|
||||
- **时间**: 2025-12-17 06:31 ~ 06:32
|
||||
- **起始时间**: 2025-12-17 06:31
|
||||
- **结束时间**: 2025-12-17 06:32
|
||||
|
||||
## aide/008
|
||||
|
||||
@@ -57,7 +193,8 @@
|
||||
- **起始提交**: c685c31
|
||||
- **结束提交**: 92eb2ba
|
||||
- **状态**: finished
|
||||
- **时间**: 2025-12-17 06:27 ~ 06:28
|
||||
- **起始时间**: 2025-12-17 06:27
|
||||
- **结束时间**: 2025-12-17 06:28
|
||||
|
||||
## aide/007
|
||||
|
||||
@@ -67,7 +204,8 @@
|
||||
- **起始提交**: 8d4cae6
|
||||
- **结束提交**: 346ec90
|
||||
- **状态**: finished
|
||||
- **时间**: 2025-12-17 06:07 ~ 06:07
|
||||
- **起始时间**: 2025-12-17 06:07
|
||||
- **结束时间**: 2025-12-17 06:07
|
||||
|
||||
## aide/006
|
||||
|
||||
@@ -77,7 +215,8 @@
|
||||
- **起始提交**: 2b0c007
|
||||
- **结束提交**: d60f0ba
|
||||
- **状态**: finished
|
||||
- **时间**: 2025-12-17 06:03 ~ 06:05
|
||||
- **起始时间**: 2025-12-17 06:03
|
||||
- **结束时间**: 2025-12-17 06:05
|
||||
|
||||
## aide/005
|
||||
|
||||
@@ -87,7 +226,8 @@
|
||||
- **起始提交**: a1d7263
|
||||
- **结束提交**: b2f922b
|
||||
- **状态**: finished
|
||||
- **时间**: 2025-12-17 06:00 ~ 06:02
|
||||
- **起始时间**: 2025-12-17 06:00
|
||||
- **结束时间**: 2025-12-17 06:02
|
||||
|
||||
## aide/004
|
||||
|
||||
@@ -97,7 +237,8 @@
|
||||
- **起始提交**: 6179833
|
||||
- **结束提交**: 6179833
|
||||
- **状态**: finished
|
||||
- **时间**: 2025-12-17 05:54 ~ 05:55
|
||||
- **起始时间**: 2025-12-17 05:54
|
||||
- **结束时间**: 2025-12-17 05:55
|
||||
|
||||
## aide/003
|
||||
|
||||
@@ -107,7 +248,8 @@
|
||||
- **起始提交**: aa067fc
|
||||
- **结束提交**: aa067fc
|
||||
- **状态**: finished
|
||||
- **时间**: 2025-12-17 05:42 ~ 05:48
|
||||
- **起始时间**: 2025-12-17 05:42
|
||||
- **结束时间**: 2025-12-17 05:48
|
||||
|
||||
## aide/002
|
||||
|
||||
@@ -116,7 +258,7 @@
|
||||
- **源分支**: master
|
||||
- **起始提交**: be25738
|
||||
- **状态**: active
|
||||
- **时间**: 2025-12-17 05:33
|
||||
- **起始时间**: 2025-12-17 05:33
|
||||
|
||||
## aide/001
|
||||
|
||||
@@ -125,4 +267,4 @@
|
||||
- **源分支**: master
|
||||
- **起始提交**: bd72362
|
||||
- **状态**: active
|
||||
- **时间**: 2025-12-17 04:54
|
||||
- **起始时间**: 2025-12-17 04:54
|
||||
|
||||
@@ -56,6 +56,12 @@ source = "task-now.md"
|
||||
# /aide:exec 命令在未指定参数时读取此文件
|
||||
spec = "task-spec.md"
|
||||
|
||||
# 复杂任务计划文档目录
|
||||
# 当任务被拆分为多个子计划时,存放:
|
||||
# - guide.md: 任务计划总导览
|
||||
# - spec-01.md, spec-02.md, ...: 各子计划细则
|
||||
plans_path = ".aide/task-plans/"
|
||||
|
||||
################################################################################
|
||||
# [env] - 环境检测配置
|
||||
################################################################################
|
||||
@@ -168,8 +174,9 @@ block_plan_path = ".aide/project-docs/block-plan.md"
|
||||
# impl - 迭代实现
|
||||
# verify - 验证交付
|
||||
# docs - 文档更新
|
||||
# confirm - 用户确认(审阅与返工)
|
||||
# finish - 收尾
|
||||
phases = ["task-optimize", "flow-design", "impl", "verify", "docs", "finish"]
|
||||
phases = ["task-optimize", "flow-design", "impl", "verify", "docs", "confirm", "finish"]
|
||||
|
||||
# 流程图目录路径
|
||||
# 存放 PlantUML 源文件(.puml)和生成的图片(.png)
|
||||
@@ -186,6 +193,9 @@ diagram_path = ".aide/diagrams"
|
||||
# 支持绝对路径或相对于 aide-program 目录的相对路径
|
||||
# 默认使用 aide-program/lib/plantuml.jar
|
||||
jar_path = "lib/plantuml.jar"
|
||||
font_name = "PingFang SC"
|
||||
dpi = 300
|
||||
scale = 0.5
|
||||
|
||||
# Java 命令路径(可选)
|
||||
# 默认使用系统 PATH 中的 java
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 82 KiB |
@@ -1,49 +0,0 @@
|
||||
@startuml program-logic
|
||||
title 程序逻辑流图:finish_branch_merge 重构
|
||||
|
||||
start
|
||||
:进入 finish_branch_merge();
|
||||
note right: branch.py
|
||||
|
||||
:获取分支信息\nbranch_info = get_active_branch_info();
|
||||
|
||||
if (源分支有新提交?) then (是)
|
||||
:创建临时分支合并\n(保持现有逻辑);
|
||||
:返回提示信息;
|
||||
stop
|
||||
else (否)
|
||||
:进入 _merge_normal();
|
||||
endif
|
||||
|
||||
partition "清理操作" {
|
||||
:删除 .aide/*.lock;
|
||||
:删除 task-spec.md;
|
||||
:清空 task-now.md\n(保留文件);
|
||||
:备份并删除\nflow-status.json;
|
||||
:备份并删除\ndecisions/*.json;
|
||||
}
|
||||
|
||||
partition "创建临时提交" {
|
||||
:git add -A;
|
||||
:git commit\n"清理任务临时文件";
|
||||
}
|
||||
|
||||
partition "切换并合并" {
|
||||
:git checkout\n源分支;
|
||||
:清理 .lock 文件;
|
||||
:git merge --squash\n任务分支;
|
||||
:构建提交信息\n格式: {hash}的任务收尾;
|
||||
:git add -A;
|
||||
:git commit\n收尾提交;
|
||||
}
|
||||
|
||||
partition "更新记录" {
|
||||
:更新分支记录\nstatus = finished;
|
||||
:git add -A;
|
||||
:git commit\n更新分支记录;
|
||||
}
|
||||
|
||||
:返回成功;
|
||||
stop
|
||||
|
||||
@enduml
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 56 KiB |
@@ -1,45 +0,0 @@
|
||||
@startuml task-flow
|
||||
title 任务执行流程图:改进 aide flow 的 git 工作流
|
||||
|
||||
start
|
||||
:阅读任务细则;
|
||||
note right: task-spec.md
|
||||
|
||||
partition "代码修改" {
|
||||
:修改 branch.py;
|
||||
note right
|
||||
- 重构 _merge_normal()
|
||||
- 添加清理函数
|
||||
- 修改提交信息格式
|
||||
end note
|
||||
|
||||
:修改 tracker.py;
|
||||
note right
|
||||
调整 finish 触发逻辑
|
||||
(如需要)
|
||||
end note
|
||||
}
|
||||
|
||||
partition "测试验证" {
|
||||
:创建测试任务;
|
||||
:执行完整 flow 流程;
|
||||
:检查最终 git 历史;
|
||||
|
||||
if (只有 2 个提交?) then (是)
|
||||
:检查文件清理结果;
|
||||
if (清理正确?) then (是)
|
||||
:验证通过;
|
||||
else (否)
|
||||
:修复清理逻辑;
|
||||
-> 执行完整 flow 流程;
|
||||
endif
|
||||
else (否)
|
||||
:修复合并逻辑;
|
||||
-> 执行完整 flow 流程;
|
||||
endif
|
||||
}
|
||||
|
||||
:更新文档;
|
||||
stop
|
||||
|
||||
@enduml
|
||||
59
.aide/logs/2025-12-18T11-53-13-status.json
Normal file
59
.aide/logs/2025-12-18T11-53-13-status.json
Normal 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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
158
.aide/logs/2025-12-18T12-14-13-decisions/pending.json
Normal file
158
.aide/logs/2025-12-18T12-14-13-decisions/pending.json
Normal 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"
|
||||
}
|
||||
}
|
||||
139
.aide/logs/2025-12-18T12-14-13-status.json
Normal file
139
.aide/logs/2025-12-18T12-14-13-status.json
Normal 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"
|
||||
}
|
||||
115
.aide/logs/2025-12-18T13-29-05-status.json
Normal file
115
.aide/logs/2025-12-18T13-29-05-status.json
Normal 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"
|
||||
}
|
||||
155
.aide/logs/2025-12-18T14-09-44-status.json
Normal file
155
.aide/logs/2025-12-18T14-09-44-status.json
Normal 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"
|
||||
}
|
||||
195
.aide/logs/2025-12-18T18-38-48-status.json
Normal file
195
.aide/logs/2025-12-18T18-38-48-status.json
Normal 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"
|
||||
}
|
||||
211
.aide/logs/2025-12-19T00-40-02-status.json
Normal file
211
.aide/logs/2025-12-19T00-40-02-status.json
Normal 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"
|
||||
}
|
||||
219
.aide/logs/2025-12-19T03-01-27-status.json
Normal file
219
.aide/logs/2025-12-19T03-01-27-status.json
Normal 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"
|
||||
}
|
||||
139
.aide/logs/2025-12-19T04-09-25-status.json
Normal file
139
.aide/logs/2025-12-19T04-09-25-status.json
Normal 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"
|
||||
}
|
||||
139
.aide/logs/2025-12-19T04-37-00-status.json
Normal file
139
.aide/logs/2025-12-19T04-37-00-status.json
Normal 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"
|
||||
}
|
||||
115
.aide/logs/2025-12-19T05-00-29-status.json
Normal file
115
.aide/logs/2025-12-19T05-00-29-status.json
Normal 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"
|
||||
}
|
||||
123
.aide/logs/2025-12-19T05-31-03-status.json
Normal file
123
.aide/logs/2025-12-19T05-31-03-status.json
Normal 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"
|
||||
}
|
||||
155
.aide/logs/2025-12-19T05-41-57-status.json
Normal file
155
.aide/logs/2025-12-19T05-41-57-status.json
Normal 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"
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,18 +1,18 @@
|
||||
# ccoptimize 项目文档
|
||||
# agent-aide 项目文档
|
||||
|
||||
> 最后更新:2025-12-18
|
||||
> 最后更新:2025-12-19
|
||||
|
||||
## 项目概述
|
||||
|
||||
**ccoptimize** 是 Aide 工作流工具优化项目,包含 Aide 命令行工具的核心实现和 Claude Code 插件。
|
||||
**agent-aide** 是 Aide 工作流工具项目,包含 Aide 命令行工具的核心实现和 Claude Code 插件。
|
||||
|
||||
### 项目统计
|
||||
|
||||
| 指标 | 数值 |
|
||||
|------|------|
|
||||
| 总文件数 | 132(排除忽略项) |
|
||||
| 总目录数 | 53(含 5 个空目录) |
|
||||
| 代码行数 | 约 20082 行 |
|
||||
| 总文件数 | 161(排除忽略项) |
|
||||
| 总目录数 | 54(含 3 个空目录) |
|
||||
| 代码行数 | 约 5350 行(Python) |
|
||||
| 主要语言 | Python |
|
||||
| 被忽略项 | 7 个目录 |
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
| 区块 | 路径 | 文档 | 说明 |
|
||||
|------|------|------|------|
|
||||
| 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) | 配置文件和项目文档 |
|
||||
|
||||
## 快速导航
|
||||
@@ -35,32 +35,33 @@
|
||||
| 环境检测 | `aide-program/aide/env/` | 检测 Python/Node/Rust 等环境 |
|
||||
| 流程追踪 | `aide-program/aide/flow/` | 任务状态管理和 Git 集成 |
|
||||
| 待定项确认 | `aide-program/aide/decide/` | Web 界面交互式决策 |
|
||||
| 斜杠命令 | `aide-marketplace/aide-plugin/commands/` | `/aide:run` 等命令定义 |
|
||||
| 技能定义 | `aide-marketplace/aide-plugin/skills/` | aide、env-config、task-parser |
|
||||
| 斜杠命令 | `aide-marketplace/aide-plugin/commands/` | 8 个命令定义 |
|
||||
| 技能定义 | `aide-marketplace/aide-plugin/skills/` | 5 个技能定义 |
|
||||
|
||||
### 按文件类型
|
||||
|
||||
| 类型 | 数量 | 位置 |
|
||||
|------|------|------|
|
||||
| Python 源码 | ~35 | `aide-program/aide/` |
|
||||
| Markdown 命令 | 4 | `aide-marketplace/aide-plugin/commands/` |
|
||||
| Markdown 技能 | 3 | `aide-marketplace/aide-plugin/skills/` |
|
||||
| Markdown 命令 | 8 | `aide-marketplace/aide-plugin/commands/` |
|
||||
| Markdown 技能 | 5 | `aide-marketplace/aide-plugin/skills/` |
|
||||
| 配置文件 | ~5 | `.aide/`, 根目录 |
|
||||
| 文档 | ~15 | `docs/`, `aide-program/docs/` |
|
||||
| 文档 | ~15 | `docs/reference/`, `aide-program/docs/` |
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
ccoptimize/
|
||||
agent-aide/
|
||||
├── .aide/ 项目级 Aide 配置
|
||||
│ ├── config.toml 配置文件
|
||||
│ ├── branches.json 分支概况数据
|
||||
│ ├── branches.md 分支概况文档
|
||||
│ ├── pending-items.json 待定项数据
|
||||
│ ├── diagrams/ PlantUML 流程图
|
||||
│ ├── decisions/ [空目录] 决策记录
|
||||
│ ├── diagrams/ [空目录] PlantUML 流程图
|
||||
│ ├── task-plans/ [空目录] 复杂任务计划
|
||||
│ ├── logs/ 历史任务归档
|
||||
│ └── project-docs/ 本文档目录
|
||||
├── aide-program/ 核心程序(~55 文件)
|
||||
├── aide-program/ 核心程序(~72 文件)
|
||||
│ ├── aide/ Python 源码
|
||||
│ │ ├── core/ 核心模块
|
||||
│ │ ├── env/ 环境检测
|
||||
@@ -68,21 +69,15 @@ ccoptimize/
|
||||
│ │ └── decide/ 待定项确认
|
||||
│ ├── bin/ 可执行脚本
|
||||
│ ├── docs/ 程序文档
|
||||
│ ├── lib/ 依赖库
|
||||
│ └── offline-installer/ 离线安装器
|
||||
├── aide-marketplace/ 插件市场(~20 文件)
|
||||
│ └── lib/ 依赖库
|
||||
├── aide-marketplace/ 插件市场(~39 文件)
|
||||
│ ├── .claude-plugin/ 市场配置
|
||||
│ └── aide-plugin/ Aide 插件(版本 2.0.8)
|
||||
│ ├── commands/ 斜杠命令(含 install-linux/win)
|
||||
│ ├── skills/ 技能定义
|
||||
│ └── aide-plugin/ Aide 插件(版本 2.1.3)
|
||||
│ ├── commands/ 斜杠命令(8 个)
|
||||
│ ├── skills/ 技能定义(5 个)
|
||||
│ └── docs/ 插件文档
|
||||
├── docs/ 项目文档
|
||||
│ ├── aide-overview.md 系统概述
|
||||
│ ├── project-details.md 详细说明
|
||||
│ └── 01-04 指南系列 Claude Code 指南
|
||||
├── statements/ [空目录] 声明文档
|
||||
├── discuss/ [空目录] 讨论记录
|
||||
├── reply/ [空目录] 回复记录
|
||||
│ └── reference/ 参考文档(7 个)
|
||||
├── CLAUDE.md Claude 配置指令
|
||||
├── CHANGELOG.md 变更日志
|
||||
├── README.md 项目说明
|
||||
@@ -106,6 +101,19 @@ Aide 是一套面向 LLM 驱动开发的工作流工具,核心设计原则:
|
||||
| Commands | 定义流程和步骤 | `/aide:run` 定义任务执行流程 |
|
||||
| Skills | 提供工具使用指南 | `aide` skill 提供 CLI 命令用法 |
|
||||
|
||||
### 命令清单
|
||||
|
||||
| 命令 | 说明 |
|
||||
|------|------|
|
||||
| `/aide:setup` | 环境配置(分析、检测、修复) |
|
||||
| `/aide:load` | 项目认知载入 |
|
||||
| `/aide:docs` | 项目文档创建和维护 |
|
||||
| `/aide:run` | 任务执行(核心命令) |
|
||||
| `/aide:auto-run` | 全自动任务执行 |
|
||||
| `/aide:readme` | README 生成 |
|
||||
| `/aide:user-docs` | 用户文档生成 |
|
||||
| `/aide:user-graph` | 用户流程图生成 |
|
||||
|
||||
### 环境检测模块
|
||||
|
||||
| 类型 | 模块 | 说明 |
|
||||
@@ -118,20 +126,19 @@ Aide 是一套面向 LLM 驱动开发的工作流工具,核心设计原则:
|
||||
| 目录 | 用途 |
|
||||
|------|------|
|
||||
| `.aide/decisions/` | 待定项决策记录 |
|
||||
| `aide-program/.aide/decisions/` | 程序级决策记录 |
|
||||
| `aide-program/.aide/logs/` | 程序级日志归档 |
|
||||
| `discuss/` | 项目讨论记录 |
|
||||
| `reply/` | 项目回复记录 |
|
||||
| `.aide/diagrams/` | PlantUML 流程图 |
|
||||
| `.aide/task-plans/` | 复杂任务计划文档 |
|
||||
|
||||
## 被忽略项
|
||||
|
||||
| 目录 | 说明 |
|
||||
|------|------|
|
||||
| `anthropic-agent-skills/` | 第三方技能库 |
|
||||
| `.venv/` | 虚拟环境 |
|
||||
| `.venv/` | 根目录虚拟环境 |
|
||||
| `aide-program/.venv/` | 程序虚拟环境 |
|
||||
| `__pycache__/` | Python 字节码 |
|
||||
| `cache/`, `.cache/`, `test-cache/` | 缓存目录 |
|
||||
| `cache/`, `.cache/` | 缓存目录 |
|
||||
| `test-cache/` | 测试缓存目录 |
|
||||
|
||||
## 使用指南
|
||||
|
||||
|
||||
@@ -1,58 +1,48 @@
|
||||
# 区块计划
|
||||
|
||||
> 最后更新:2025-12-18
|
||||
> 最后更新:2025-12-19
|
||||
|
||||
## 项目概况
|
||||
|
||||
- 项目名称:ccoptimize(Aide 工作流工具优化项目)
|
||||
- 项目名称:agent-aide(Aide 工作流工具项目)
|
||||
- 主要语言:Python
|
||||
- 总文件数:132(排除忽略项)
|
||||
- 总目录数:53(含 5 个空目录)
|
||||
- 总文件数:161(排除忽略项)
|
||||
- 总目录数:54(含 3 个空目录)
|
||||
- 被忽略项:7 个目录
|
||||
- 代码行数:约 20082 行
|
||||
- 代码行数:约 5350 行(Python)
|
||||
|
||||
## 完整目录树(简化版 - 前两层)
|
||||
|
||||
```
|
||||
ccoptimize/
|
||||
agent-aide/
|
||||
├── .aide/ Aide 配置和数据目录
|
||||
│ ├── config.toml 项目配置文件
|
||||
│ ├── branches.json 分支概况数据
|
||||
│ ├── branches.md 分支概况文档
|
||||
│ ├── pending-items.json 待定项数据
|
||||
│ ├── diagrams/ 流程图目录(含 .puml 和 .png)
|
||||
│ ├── decisions/ [空目录] 待定项决策记录
|
||||
│ ├── diagrams/ [空目录] PlantUML 流程图
|
||||
│ ├── task-plans/ [空目录] 复杂任务计划文档
|
||||
│ ├── logs/ 历史任务归档
|
||||
│ └── project-docs/ 项目文档目录(本文档所在)
|
||||
├── aide-marketplace/ Aide 插件市场
|
||||
│ ├── .claude-plugin/ 插件市场配置
|
||||
│ └── aide-plugin/ Aide 插件源码(版本 2.0.8)
|
||||
│ ├── .claude-plugin/ 市场配置
|
||||
│ └── aide-plugin/ Aide 插件源码(版本 2.1.3)
|
||||
├── aide-program/ Aide 主程序
|
||||
│ ├── .aide/ 程序级配置
|
||||
│ ├── aide/ Python 源码目录
|
||||
│ ├── bin/ 可执行脚本
|
||||
│ ├── docs/ 程序文档
|
||||
│ ├── lib/ 依赖库(plantuml.jar)
|
||||
│ ├── offline-installer/ 离线安装器
|
||||
│ ├── .venv/ [ignored] 虚拟环境
|
||||
│ ├── requirements.txt 依赖清单
|
||||
│ └── .gitignore 忽略规则
|
||||
├── anthropic-agent-skills/ [ignored] Anthropic Agent Skills(第三方)
|
||||
├── cache/ [ignored] 缓存目录
|
||||
├── cache/ 临时缓存目录
|
||||
├── .cache/ [ignored] 隐藏缓存目录
|
||||
├── test-cache/ [ignored] 测试缓存目录
|
||||
├── .venv/ [ignored] 根目录虚拟环境
|
||||
├── __pycache__/ [ignored] Python 字节码缓存
|
||||
├── discuss/ [空目录] 讨论文档目录
|
||||
├── docs/ 项目文档目录
|
||||
│ ├── 01-自定义斜杠命令指南.md
|
||||
│ ├── 02-技能指南.md
|
||||
│ ├── 03-插件指南.md
|
||||
│ ├── 04-插件市场指南.md
|
||||
│ ├── aide-overview.md
|
||||
│ ├── project-details.md
|
||||
│ └── 为什么要更换到command+skill+专用处理程序.md
|
||||
├── reply/ [空目录] 回复目录
|
||||
├── statements/ [空目录] 声明文档目录
|
||||
│ └── reference/ 参考文档(7 个文件)
|
||||
├── AGENTS.md Agent 配置说明
|
||||
├── CHANGELOG.md 变更日志
|
||||
├── CLAUDE.md Claude 配置指令
|
||||
@@ -67,8 +57,8 @@ ccoptimize/
|
||||
### 区块 1:aide-program(核心程序)
|
||||
|
||||
- **路径**:`aide-program/`
|
||||
- **文件数**:约 55 个源码文件
|
||||
- **空目录**:2 个(decisions/, logs/)
|
||||
- **文件数**:约 72 个文件(排除 .venv 和 __pycache__)
|
||||
- **空目录**:0 个
|
||||
- **状态**:已完成
|
||||
- **说明**:Aide 命令行工具的核心实现,包括:
|
||||
- `aide/core/` - 核心功能模块(配置、输出)
|
||||
@@ -77,33 +67,33 @@ ccoptimize/
|
||||
- `aide/decide/` - 待定项确认模块
|
||||
- `bin/` - 可执行脚本
|
||||
- `docs/` - 程序文档
|
||||
- `offline-installer/` - 离线安装器(Linux/Windows)
|
||||
|
||||
### 区块 2:aide-marketplace(插件市场)
|
||||
|
||||
- **路径**:`aide-marketplace/`
|
||||
- **文件数**:约 20 个文件
|
||||
- **文件数**:约 39 个文件
|
||||
- **空目录**:0 个
|
||||
- **状态**:已完成
|
||||
- **说明**:Aide 插件市场和 aide-plugin 源码(版本 2.0.8),包括:
|
||||
- **说明**:Aide 插件市场和 aide-plugin 源码(版本 2.1.3),包括:
|
||||
- `.claude-plugin/` - 市场配置
|
||||
- `aide-plugin/commands/` - 斜杠命令定义(含 install-linux、install-win)
|
||||
- `aide-plugin/skills/` - 技能定义
|
||||
- `aide-plugin/commands/` - 斜杠命令定义(8 个)
|
||||
- `aide-plugin/skills/` - 技能定义(5 个,含 readme-templates 和 rework)
|
||||
- `aide-plugin/docs/` - 插件文档
|
||||
|
||||
### 区块 3:项目配置与文档(合并原区块 3 和 4)
|
||||
### 区块 3:项目配置与文档
|
||||
|
||||
- **路径**:`.aide/`, `docs/`, `discuss/`, `reply/`, `statements/`, 根目录配置文件
|
||||
- **文件数**:约 25 个文件
|
||||
- **空目录**:3 个(discuss/, reply/, statements/)
|
||||
- **路径**:`.aide/`, `docs/`, 根目录配置文件
|
||||
- **文件数**:约 50 个文件
|
||||
- **空目录**:3 个(.aide/decisions/, .aide/diagrams/, .aide/task-plans/)
|
||||
- **状态**:已完成
|
||||
- **说明**:项目级配置、Aide 数据目录和项目文档资源,包括:
|
||||
- `.aide/config.toml` - 项目配置
|
||||
- `.aide/branches.json/.md` - 分支概况数据
|
||||
- `.aide/pending-items.json` - 待定项数据
|
||||
- `.aide/diagrams/` - 流程图
|
||||
- `docs/` - 指南和概览文档
|
||||
- `discuss/`, `reply/`, `statements/` - [空目录]
|
||||
- `.aide/decisions/` - [空目录] 待定项决策记录
|
||||
- `.aide/diagrams/` - [空目录] PlantUML 流程图
|
||||
- `.aide/task-plans/` - [空目录] 复杂任务计划文档
|
||||
- `.aide/logs/` - 历史任务归档
|
||||
- `docs/reference/` - 指南和概览文档(7 个)
|
||||
- 根目录 `.md` 文件
|
||||
|
||||
## 被忽略项清单
|
||||
@@ -111,7 +101,7 @@ ccoptimize/
|
||||
| 目录 | 说明 |
|
||||
|------|------|
|
||||
| `anthropic-agent-skills/` | 第三方技能库(Git submodule) |
|
||||
| `cache/` | 临时缓存目录 |
|
||||
| `cache/` | 临时缓存目录(部分保留) |
|
||||
| `.cache/` | 隐藏缓存目录 |
|
||||
| `test-cache/` | 测试缓存目录 |
|
||||
| `.venv/` | 根目录虚拟环境 |
|
||||
@@ -122,5 +112,5 @@ ccoptimize/
|
||||
|
||||
- [x] 区块 1:aide-program
|
||||
- [x] 区块 2:aide-marketplace
|
||||
- [x] 区块 3:项目配置与文档(合并区块 3 和 4)
|
||||
- [x] 区块 3:项目配置与文档
|
||||
- [x] 总导览文档生成
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# aide-marketplace(插件市场)
|
||||
|
||||
> 路径:`aide-marketplace/`
|
||||
> 最后更新:2025-12-18
|
||||
> 最后更新:2025-12-19
|
||||
|
||||
## 概述
|
||||
|
||||
@@ -15,23 +15,46 @@ aide-marketplace/
|
||||
│ └── marketplace.json 市场元数据
|
||||
└── aide-plugin/ Aide 插件
|
||||
├── .claude-plugin/ 插件配置
|
||||
│ └── plugin.json 插件元数据(版本 2.0.8)
|
||||
├── commands/ 斜杠命令定义
|
||||
│ ├── docs.md /aide:docs 文档管理(400 行)
|
||||
│ ├── install-linux.md /aide:install-linux Linux 环境安装(692 行)
|
||||
│ ├── install-win.md /aide:install-win Windows 环境安装
|
||||
│ ├── load.md /aide:load 项目认知载入(96 行)
|
||||
│ ├── run.md /aide:run 任务执行(392 行)
|
||||
│ └── setup.md /aide:setup 环境配置(93 行)
|
||||
├── skills/ 技能定义
|
||||
│ └── plugin.json 插件元数据(版本 2.1.3)
|
||||
├── commands/ 斜杠命令定义(8 个)
|
||||
│ ├── auto-run.md /aide:auto-run 全自动任务执行(566 行)
|
||||
│ ├── docs.md /aide:docs 文档管理(402 行)
|
||||
│ ├── load.md /aide:load 项目认知载入(95 行)
|
||||
│ ├── readme.md /aide:readme README 生成(253 行)
|
||||
│ ├── 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/ 基础命令指南
|
||||
│ │ └── SKILL.md aide skill(569 行)
|
||||
│ │ └── SKILL.md aide skill(603 行)
|
||||
│ ├── env-config/ 环境配置指南
|
||||
│ │ └── SKILL.md env-config skill(299 行)
|
||||
│ │ └── SKILL.md env-config skill(298 行)
|
||||
│ ├── readme-templates/ README 模板集
|
||||
│ │ ├── SKILL.md readme-templates skill(106 行)
|
||||
│ │ ├── 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 skill(165 行)
|
||||
│ └── task-parser/ 口语化内容解析
|
||||
│ └── SKILL.md task-parser skill(280 行)
|
||||
│ └── SKILL.md task-parser skill(279 行)
|
||||
└── docs/ 插件文档
|
||||
├── README.md 设计文档导览(207 行)
|
||||
├── README.md 设计文档导览
|
||||
├── commands/ 命令文档
|
||||
│ ├── docs.md
|
||||
│ ├── load.md
|
||||
@@ -49,15 +72,19 @@ aide-marketplace/
|
||||
| 文件 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| .claude-plugin/marketplace.json | 配置 | 市场元数据,定义市场名和插件列表 |
|
||||
| aide-plugin/.claude-plugin/plugin.json | 配置 | 插件元数据,版本 2.0.8 |
|
||||
| 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/install-linux.md | Command | /aide:install-linux Linux 环境安装流程 |
|
||||
| aide-plugin/commands/install-win.md | Command | /aide:install-win Windows 环境安装流程 |
|
||||
| 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/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/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/docs/README.md | 文档 | 插件设计文档导览 |
|
||||
|
||||
@@ -68,16 +95,18 @@ aide-marketplace/
|
||||
| 命令 | 职责 | 触发 Skill | 独立运行 |
|
||||
|------|------|------------|----------|
|
||||
| `/aide:setup` | 环境配置(分析、检测、修复) | env-config | 是 |
|
||||
| `/aide:install-linux` | Linux 环境安装 | aide | 是 |
|
||||
| `/aide:install-win` | Windows 环境安装 | aide | 是 |
|
||||
| `/aide:load` | 项目认知载入 | aide | 否(由 run 调用) |
|
||||
| `/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 工作流程
|
||||
|
||||
```
|
||||
task-optimize → flow-design → impl → verify → docs → finish
|
||||
task-optimize → flow-design → impl → verify → docs → confirm → finish
|
||||
│ │
|
||||
├─ 任务分析 ├─ 流程图设计
|
||||
├─ 复杂度评估 └─ PlantUML 校验
|
||||
@@ -85,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(技能)
|
||||
|
||||
| 技能 | 触发方式 | 职责 |
|
||||
|------|----------|------|
|
||||
| aide | /aide:run 强制触发 | aide 命令基础用法 |
|
||||
| env-config | /aide:setup 强制触发 | 环境配置详细指南 |
|
||||
| readme-templates | /aide:readme 强制触发 | README 模板选择和使用指南 |
|
||||
| rework | 返工场景时触发 | 返工流程处理指南 |
|
||||
| task-parser | 检测到口语化内容时 | 口语化任务内容解析 |
|
||||
|
||||
### aide skill
|
||||
@@ -98,7 +177,7 @@ task-optimize → flow-design → impl → verify → docs → finish
|
||||
提供 aide 命令行工具的完整使用指南,包括:
|
||||
|
||||
- `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 config` - 配置管理(get/set)
|
||||
- `aide init` - 初始化
|
||||
@@ -113,6 +192,31 @@ task-optimize → flow-design → impl → verify → docs → finish
|
||||
- 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
|
||||
|
||||
用于解析口语化任务内容:
|
||||
@@ -140,7 +244,7 @@ task-optimize → flow-design → impl → verify → docs → finish
|
||||
```json
|
||||
{
|
||||
"name": "aide-plugin",
|
||||
"version": "2.0.8",
|
||||
"version": "2.1.3",
|
||||
"description": "Aide 工作流体系插件"
|
||||
}
|
||||
```
|
||||
@@ -156,6 +260,11 @@ task-optimize → flow-design → impl → verify → docs → finish
|
||||
- Commands 定义"做什么"和"按什么顺序做"
|
||||
- Skills 定义"怎么调用工具"
|
||||
|
||||
2. **版本管理**:当前版本 2.0.8,原 `/aide:init`、`/aide:prep`、`/aide:exec` 已重组为 `/aide:setup`、`/aide:load`、`/aide:docs`、`/aide:run`,并新增 `/aide:install-linux`、`/aide:install-win` 环境安装命令
|
||||
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 按需触发,避免信息过载
|
||||
|
||||
4. **分步执行支持**:`/aide:user-docs` 和 `/aide:user-graph` 支持分步执行和接续执行,适用于大型项目
|
||||
|
||||
@@ -11,9 +11,6 @@ Aide 命令行工具的核心实现,提供环境检测、流程追踪、待定
|
||||
|
||||
```
|
||||
aide-program/
|
||||
├── .aide/ 程序级 Aide 配置
|
||||
│ ├── config.toml 配置文件
|
||||
│ └── decisions/ [空目录] 决策记录
|
||||
├── aide/ Python 源码包
|
||||
│ ├── __init__.py 包入口(docstring)
|
||||
│ ├── __main__.py 模块入口
|
||||
@@ -94,15 +91,6 @@ aide-program/
|
||||
│ └── data.md 数据格式
|
||||
├── lib/ 依赖库
|
||||
│ └── plantuml.jar PlantUML(二进制)
|
||||
├── offline-installer/ 离线安装器目录
|
||||
│ ├── linux/ Linux 安装
|
||||
│ │ ├── install.sh 安装脚本(470 行)
|
||||
│ │ ├── README.md 安装说明
|
||||
│ │ └── resources.json 资源配置
|
||||
│ └── windows/ Windows 安装
|
||||
│ ├── install.ps1 PowerShell 安装脚本(405 行)
|
||||
│ ├── README.md 安装说明
|
||||
│ └── resources.json 资源配置
|
||||
├── .venv/ [ignored] 虚拟环境
|
||||
├── requirements.txt Python 依赖
|
||||
└── .gitignore 忽略规则
|
||||
|
||||
@@ -1,26 +1,27 @@
|
||||
# 项目配置与文档
|
||||
|
||||
> 路径:`.aide/`, `docs/`, `discuss/`, `reply/`, `statements/`, 根目录配置文件
|
||||
> 最后更新:2025-12-18
|
||||
> 路径:`.aide/`, `docs/`, 根目录配置文件
|
||||
> 最后更新:2025-12-19
|
||||
|
||||
## 概述
|
||||
|
||||
项目级配置、Aide 数据目录和项目文档资源。包括 Aide 配置、项目说明文档、Claude Code 指南文档和开发声明。
|
||||
项目级配置、Aide 数据目录和项目文档资源。包括 Aide 配置、项目说明文档和 Claude Code 指南文档。
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
ccoptimize/
|
||||
agent-aide/
|
||||
├── .aide/ Aide 配置和数据目录
|
||||
│ ├── config.toml 项目配置文件(225 行,全注释)
|
||||
│ ├── config.toml 项目配置文件(全注释)
|
||||
│ ├── branches.json 分支概况数据(JSON)
|
||||
│ ├── branches.md 分支概况文档(Markdown)
|
||||
│ ├── pending-items.json 待定项数据
|
||||
│ ├── diagrams/ 流程图目录
|
||||
│ │ ├── *.puml PlantUML 源文件
|
||||
│ │ └── *.png 生成的图片
|
||||
│ ├── decisions/ [空目录] 待定项决策记录
|
||||
│ ├── diagrams/ [空目录] PlantUML 流程图
|
||||
│ ├── task-plans/ [空目录] 复杂任务计划文档
|
||||
│ ├── logs/ 历史任务归档
|
||||
│ │ └── flow-status.*.json 归档任务文件
|
||||
│ │ ├── YYYY-MM-DDTHH-MM-SS-status.json 任务状态归档
|
||||
│ │ ├── YYYY-MM-DDTHH-MM-SS-decisions/ 决策记录归档
|
||||
│ │ └── flow-status.*.json 旧格式归档(历史)
|
||||
│ └── project-docs/ 项目文档(本文档所在)
|
||||
│ ├── README.md 总导览
|
||||
│ ├── block-plan.md 区块计划
|
||||
@@ -29,16 +30,19 @@ ccoptimize/
|
||||
│ ├── aide-marketplace.md
|
||||
│ └── project-config-docs.md
|
||||
├── docs/ 项目文档目录
|
||||
│ ├── aide-overview.md Aide 系统概述(136 行)
|
||||
│ ├── project-details.md 项目详细说明(约 300 行)
|
||||
│ ├── 01-自定义斜杠命令指南.md Claude Code 命令指南(304 行)
|
||||
│ ├── 02-技能指南.md Claude Code 技能指南(约 400 行)
|
||||
│ ├── 03-插件指南.md Claude Code 插件指南(约 350 行)
|
||||
│ ├── 04-插件市场指南.md Claude Code 市场指南(约 320 行)
|
||||
│ └── 为什么要更换到command+skill+专用处理程序.md 设计背景
|
||||
├── discuss/ [空目录] 讨论记录目录
|
||||
├── reply/ [空目录] 回复记录目录
|
||||
├── statements/ [空目录] 声明文档目录
|
||||
│ └── reference/ 参考文档
|
||||
│ ├── aide-overview.md Aide 系统概述(135 行)
|
||||
│ ├── project-details.md 项目详细说明(273 行)
|
||||
│ ├── 01-自定义斜杠命令指南.md Claude Code 命令指南(303 行)
|
||||
│ ├── 02-技能指南.md Claude Code 技能指南(457 行)
|
||||
│ ├── 03-插件指南.md Claude Code 插件指南(436 行)
|
||||
│ ├── 04-插件市场指南.md Claude Code 市场指南(382 行)
|
||||
│ └── 为什么要更换到command+skill+专用处理程序.md 设计背景(245 行)
|
||||
├── cache/ 缓存目录
|
||||
│ ├── old-task.md 旧任务文档
|
||||
│ ├── update_docs.sh 文档更新脚本
|
||||
│ └── verify_links.sh 链接验证脚本
|
||||
├── .cache/ [ignored] 隐藏缓存目录
|
||||
├── AGENTS.md Agent 配置说明
|
||||
├── CHANGELOG.md 变更日志
|
||||
├── CLAUDE.md Claude 配置指令
|
||||
@@ -55,20 +59,19 @@ ccoptimize/
|
||||
| .aide/config.toml | 配置 | 项目配置,全注释自文档化 |
|
||||
| .aide/branches.json | 数据 | 分支概况数据(JSON 格式) |
|
||||
| .aide/branches.md | 文档 | 分支概况文档(Markdown 格式) |
|
||||
| .aide/pending-items.json | 数据 | 待定项数据 |
|
||||
| .aide/diagrams/ | 目录 | PlantUML 流程图 |
|
||||
| .aide/decisions/ | 目录 | [空目录] 待定项决策记录 |
|
||||
| .aide/diagrams/ | 目录 | [空目录] PlantUML 流程图 |
|
||||
| .aide/task-plans/ | 目录 | [空目录] 复杂任务计划文档 |
|
||||
| .aide/logs/ | 目录 | 历史任务归档 |
|
||||
| .aide/project-docs/ | 目录 | 面向 LLM 的项目文档 |
|
||||
| docs/aide-overview.md | 文档 | Aide 系统架构和设计理念 |
|
||||
| docs/project-details.md | 文档 | 项目详细说明和实现状态 |
|
||||
| docs/01-自定义斜杠命令指南.md | 文档 | Claude Code 斜杠命令指南 |
|
||||
| docs/02-技能指南.md | 文档 | Claude Code 技能指南 |
|
||||
| docs/03-插件指南.md | 文档 | Claude Code 插件指南 |
|
||||
| docs/04-插件市场指南.md | 文档 | Claude Code 市场指南 |
|
||||
| docs/为什么要更换...md | 文档 | 架构设计背景说明 |
|
||||
| discuss/ | 目录 | [空目录] 讨论记录 |
|
||||
| reply/ | 目录 | [空目录] 回复记录 |
|
||||
| statements/ | 目录 | [空目录] 声明文档 |
|
||||
| docs/reference/aide-overview.md | 文档 | Aide 系统架构和设计理念 |
|
||||
| docs/reference/project-details.md | 文档 | 项目详细说明和实现状态 |
|
||||
| docs/reference/01-自定义斜杠命令指南.md | 文档 | Claude Code 斜杠命令指南 |
|
||||
| docs/reference/02-技能指南.md | 文档 | Claude Code 技能指南 |
|
||||
| docs/reference/03-插件指南.md | 文档 | Claude Code 插件指南 |
|
||||
| docs/reference/04-插件市场指南.md | 文档 | Claude Code 市场指南 |
|
||||
| docs/reference/为什么要更换...md | 文档 | 架构设计背景说明 |
|
||||
| cache/ | 目录 | 临时缓存和脚本 |
|
||||
| AGENTS.md | 配置 | Agent 配置说明 |
|
||||
| CHANGELOG.md | 文档 | 变更日志 |
|
||||
| CLAUDE.md | 配置 | Claude 指令(简体中文要求) |
|
||||
@@ -89,9 +92,10 @@ Aide 的核心配置文件,完全自文档化(所有配置项均有详细注
|
||||
|--------|------|
|
||||
| `[general]` | 通用配置(gitignore_aide) |
|
||||
| `[runtime]` | 运行时要求(python_min, use_uv) |
|
||||
| `[task]` | 任务文档路径(source, spec) |
|
||||
| `[task]` | 任务文档路径(source, spec, plans_path) |
|
||||
| `[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) |
|
||||
| `[plantuml]` | PlantUML 配置(jar_path) |
|
||||
| `[decide]` | 待定项确认配置(port, bind, url, timeout) |
|
||||
@@ -126,7 +130,7 @@ Claude 配置指令:
|
||||
|
||||
## 项目文档
|
||||
|
||||
### docs/aide-overview.md
|
||||
### docs/reference/aide-overview.md
|
||||
|
||||
Aide 系统概述,包含:
|
||||
- 系统简介和解决的问题
|
||||
@@ -135,7 +139,7 @@ Aide 系统概述,包含:
|
||||
- 子区块索引
|
||||
- 快速导航
|
||||
|
||||
### docs/project-details.md
|
||||
### docs/reference/project-details.md
|
||||
|
||||
项目详细说明,包含:
|
||||
- 项目架构
|
||||
@@ -152,11 +156,22 @@ Claude Code 功能的完整指南系列:
|
||||
|
||||
## 空目录说明
|
||||
|
||||
| 目录 | 用途推断 |
|
||||
|------|----------|
|
||||
| discuss/ | 项目讨论记录存放目录 |
|
||||
| reply/ | 项目回复记录存放目录 |
|
||||
| statements/ | 声明文档目录(历史文件已清理) |
|
||||
| 目录 | 用途 |
|
||||
|------|------|
|
||||
| .aide/decisions/ | 待定项决策记录存放目录 |
|
||||
| .aide/diagrams/ | PlantUML 流程图存放目录 |
|
||||
| .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` - 旧版任务状态归档
|
||||
|
||||
## 依赖关系
|
||||
|
||||
@@ -169,3 +184,4 @@ Claude Code 功能的完整指南系列:
|
||||
2. **流程图**:.puml 文件会被 aide flow 自动校验和构建
|
||||
3. **文档同步**:更新代码后注意同步更新 CHANGELOG.md
|
||||
4. **中文要求**:遵循 CLAUDE.md 中的简体中文要求
|
||||
5. **文档结构变化**:`docs/` 下的文件已移至 `docs/reference/` 子目录
|
||||
|
||||
271
CHANGELOG.md
271
CHANGELOG.md
@@ -2,8 +2,278 @@
|
||||
|
||||
本文件记录 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.py:finish_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 流程重构**
|
||||
@@ -178,3 +448,4 @@
|
||||
- 补充 `aide flow` 详细设计文档与导航链路
|
||||
|
||||
|
||||
|
||||
|
||||
12
README.md
12
README.md
@@ -72,7 +72,7 @@ aide env ensure --runtime
|
||||
```
|
||||
/aide:run # 执行任务(核心命令)
|
||||
/aide:setup # 环境配置
|
||||
/aide:docs # 项目文档管理
|
||||
/aide:docs/reference # 项目文档管理
|
||||
```
|
||||
|
||||
## 核心功能
|
||||
@@ -81,7 +81,7 @@ aide env ensure --runtime
|
||||
|------|------|
|
||||
| `/aide:run` | 任务执行(核心命令),整合任务准备和执行流程 |
|
||||
| `/aide:setup` | 环境配置,检测和修复开发环境 |
|
||||
| `/aide:docs` | 项目文档创建和维护 |
|
||||
| `/aide:docs/reference` | 项目文档创建和维护 |
|
||||
| `/aide:load` | 项目认知载入(由 run 内部调用) |
|
||||
|
||||
## aide 命令行工具
|
||||
@@ -100,10 +100,10 @@ aide decide result # 获取决策结果
|
||||
|
||||
## 文档
|
||||
|
||||
- [项目详细说明](docs/project-details.md) - 项目架构和实现状态
|
||||
- [Aide 系统概述](docs/aide-overview.md) - 系统设计理念
|
||||
- [aide-plugin 文档](aide-marketplace/aide-plugin/docs/README.md) - 插件设计
|
||||
- [aide-program 文档](aide-program/docs/README.md) - 命令行工具设计
|
||||
- [项目详细说明](docs/reference/project-details.md) - 项目架构和实现状态
|
||||
- [Aide 系统概述](docs/reference/aide-overview.md) - 系统设计理念
|
||||
- [aide-plugin 文档](aide-marketplace/aide-plugin/docs/reference/README.md) - 插件设计
|
||||
- [aide-program 文档](aide-program/docs/reference/README.md) - 命令行工具设计
|
||||
|
||||
## 许可证
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{
|
||||
"name": "aide-plugin",
|
||||
"description": "Aide 工作流体系插件,提供环境配置、项目认知、文档管理和任务执行的标准化流程",
|
||||
"version": "2.0.8",
|
||||
"description": "Aide 工作流体系插件,提供环境配置、项目认知、文档管理和任务执行(含全自动模式)的标准化流程",
|
||||
"version": "2.1.3",
|
||||
"author": {
|
||||
"name": "Aide Team"
|
||||
},
|
||||
"keywords": ["workflow", "task", "aide", "productivity", "documentation"]
|
||||
"keywords": ["workflow", "task", "aide", "productivity", "documentation", "automation"]
|
||||
}
|
||||
|
||||
566
aide-marketplace/aide-plugin/commands/auto-run.md
Normal file
566
aide-marketplace/aide-plugin/commands/auto-run.md
Normal 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. 单次对话可能无法完成
|
||||
@@ -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 命令的使用方法。**
|
||||
|
||||
这是一个非常长的任务,因此规划您的工作可能会很有益。**建议花费您的整个输出上下文来处理任务 - 只需确保您不会在有大量未提交的工作时用尽上下文。**继续系统地工作,直到您完成此任务。**您的上下文窗口将在接近其限制时自动压缩,允许您从中断的地方继续无限期地工作。因此,不要因为令牌预算问题而提前停止任务。**当您接近令牌预算限制时,在上下文窗口刷新前将您当前的进度和状态保存到内存中。始终尽可能坚持和自主,并完全完成任务,即使您的预算即将用尽。无论剩余上下文如何,永远不要人为地提前停止任何任务。
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 开始
|
||||
@@ -22,17 +47,19 @@
|
||||
```bash
|
||||
aide config get docs.path
|
||||
aide config get docs.block_plan_path
|
||||
aide config get docs.steps_path
|
||||
```
|
||||
|
||||
如果未配置,使用默认值:
|
||||
- 文档目录:`.aide/project-docs`
|
||||
- 区块计划:`.aide/project-docs/block-plan.md`
|
||||
- 步骤目录:`.aide/project-docs/steps`
|
||||
|
||||
### 检查文档状态
|
||||
|
||||
检查文档目录是否存在及其内容:
|
||||
- 不存在或为空 → 进入**创建流程**
|
||||
- 已存在 → 进入**更新流程**
|
||||
检查区块计划文件是否存在:
|
||||
- **不存在** → 进入**创建流程**
|
||||
- **已存在** → 进入**接续流程**
|
||||
|
||||
---
|
||||
|
||||
@@ -63,34 +90,7 @@ find . -not -path './.git/*' -not -name '.git' | sort
|
||||
|
||||
#### 1.3 生成目录树结构
|
||||
|
||||
生成类似 `tree` 命令输出的完整目录结构,对于 .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
|
||||
```
|
||||
生成完整目录结构,对于 .gitignore 中的项目标注 `[ignored]`。
|
||||
|
||||
#### 1.4 统计项目信息
|
||||
|
||||
@@ -102,7 +102,7 @@ project/
|
||||
- 代码行数:约 xxx 行
|
||||
```
|
||||
|
||||
### 阶段 2:初步区块划分
|
||||
### 阶段 2:区块划分
|
||||
|
||||
根据以下规则划分区块:
|
||||
|
||||
@@ -110,193 +110,253 @@ project/
|
||||
2. **按功能模块**:相关功能的文件归为一个区块
|
||||
3. **包含空目录**:空目录也要归入相应区块
|
||||
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
|
||||
# 区块计划
|
||||
|
||||
> 最后更新:YYYY-MM-DD HH:MM
|
||||
|
||||
## 项目概况
|
||||
|
||||
- 项目名称:xxx
|
||||
- 主要语言:xxx
|
||||
- 文件总数:xxx(含 xx 被忽略)
|
||||
- 空目录数:xxx
|
||||
- 代码行数:xxx
|
||||
|
||||
## 完整目录树(简化版)
|
||||
## 目录树(简化版)
|
||||
|
||||
```
|
||||
[前两层目录结构]
|
||||
|
||||
## 区块划分
|
||||
|
||||
### 区块 1:[名称]
|
||||
- 路径:xxx/
|
||||
- 文件数:xx
|
||||
- 空目录:xx
|
||||
- 状态:待处理
|
||||
|
||||
### 区块 2:[名称]
|
||||
...
|
||||
|
||||
### 区块 N:项目文档与资源
|
||||
- 路径:docs/, assets/, discuss/, statements/
|
||||
- 文件数:xx
|
||||
- 空目录:xx
|
||||
- 状态:待处理
|
||||
- 说明:非代码资源文件(文档、讨论记录、声明等)
|
||||
|
||||
> 注:即使是非代码目录,也必须作为区块进行完整深度探索
|
||||
|
||||
## 进度追踪
|
||||
- [ ] 区块 1
|
||||
- [ ] 区块 2
|
||||
...
|
||||
```
|
||||
|
||||
### 阶段 3:区块验证
|
||||
## 区块索引
|
||||
|
||||
对每个区块进行浅层探索:
|
||||
1. 确认区块包含的所有文件和目录
|
||||
2. 验证区块划分是否合理
|
||||
3. 调整区块边界(如需要)
|
||||
4. 确保没有遗漏任何文件或目录
|
||||
| # | 区块名 | 路径 | 文件数 | 步骤数 | 状态 | 步骤范围 |
|
||||
|---|--------|------|--------|--------|------|----------|
|
||||
| 1 | core | src/core/ | 25 | 3 | pending | 001-003 |
|
||||
| 2 | utils | src/utils/ | 45 | 5 | pending | 004-008 |
|
||||
| ... | ... | ... | ... | ... | ... | ... |
|
||||
|
||||
**强制完整性检查**:
|
||||
## 步骤索引
|
||||
|
||||
```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
|
||||
|
||||
## 执行日志
|
||||
|
||||
| 时间 | 步骤 | 操作 | 备注 |
|
||||
|------|------|------|------|
|
||||
| | | | |
|
||||
```
|
||||
|
||||
对照检查结果,确认:
|
||||
- 每个子目录都出现在某个区块中,或被标记为 `[ignored]`
|
||||
- 如有未归属的目录,必须补充区块或归入现有区块
|
||||
- 运行以下验证:`所有区块覆盖的目录 ∪ 被忽略的目录 = 根目录下所有子目录`
|
||||
### 阶段 4:用户确认
|
||||
|
||||
### 阶段 4:逐区块完全深度探索
|
||||
向用户展示计划摘要:
|
||||
|
||||
**对每个区块,必须完整阅读该区块内的每一个文件,从头到尾,不允许遗漏任何一行。**
|
||||
> 区块计划已生成。
|
||||
>
|
||||
> **区块数**:X 个
|
||||
> **总步骤数**:Y 个
|
||||
> **预估**:约需 Z 次对话完成
|
||||
>
|
||||
> 步骤文档已生成在 `steps/` 目录,每个步骤包含完整的执行信息。
|
||||
>
|
||||
> 是否开始执行?
|
||||
|
||||
#### 4.1 文件处理规则
|
||||
**选项**:
|
||||
- **开始执行**(推荐)
|
||||
- **查看计划详情**
|
||||
- **稍后执行**
|
||||
|
||||
---
|
||||
|
||||
## 接续流程
|
||||
|
||||
当区块计划已存在时执行此流程。
|
||||
|
||||
### 1. 读取区块计划
|
||||
|
||||
读取 `block-plan.md` 获取:
|
||||
- 步骤索引
|
||||
- 整体进度
|
||||
- 执行日志
|
||||
|
||||
### 2. 显示进度
|
||||
|
||||
> **项目文档进度**
|
||||
>
|
||||
> 总步骤数:XX
|
||||
> 已完成:YY(ZZ%)
|
||||
> 当前步骤: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:读取区块计划
|
||||
|
||||
读取现有的区块计划文档,了解当前文档结构和完整目录树。
|
||||
|
||||
### 阶段 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 行
|
||||
```
|
||||
|
||||
### 子区块文档格式
|
||||
每个区块生成独立文档 `blocks/[区块名].md`:
|
||||
|
||||
```markdown
|
||||
# [区块名称]
|
||||
@@ -310,31 +370,23 @@ project/
|
||||
|
||||
## 目录结构
|
||||
|
||||
[区块内完整目录树,类似 tree 输出]
|
||||
|
||||
```
|
||||
xxx/
|
||||
├── module1/
|
||||
│ ├── __init__.py
|
||||
│ ├── core.py
|
||||
│ └── utils.py
|
||||
├── module2/
|
||||
│ ├── __init__.py
|
||||
│ └── handler.py
|
||||
│ └── core.py
|
||||
├── empty_dir/ [空目录]
|
||||
└── README.md
|
||||
```
|
||||
|
||||
## 文件清单
|
||||
|
||||
| 文件 | 类型 | 说明 |
|
||||
|------|------|------|
|
||||
| module1/__init__.py | 源码 | 模块初始化 |
|
||||
| module1/core.py | 源码 | 核心逻辑实现 |
|
||||
| module1/utils.py | 源码 | 工具函数 |
|
||||
| empty_dir/ | 目录 | [空目录] 用途推断 |
|
||||
| data.bin | 二进制 | [根据上下文推断的说明] |
|
||||
| ... | ... | ... |
|
||||
| 文件 | 类型 | 行数 | 说明 |
|
||||
|------|------|------|------|
|
||||
| module1/__init__.py | 源码 | 10 | 模块初始化 |
|
||||
| module1/core.py | 源码 | 150 | 核心逻辑实现 |
|
||||
| empty_dir/ | 目录 | - | [空目录] 用途推断 |
|
||||
| ... | ... | ... | ... |
|
||||
|
||||
## 核心组件
|
||||
|
||||
@@ -346,57 +398,103 @@ xxx/
|
||||
- `method1()` - 说明
|
||||
- `method2()` - 说明
|
||||
|
||||
## 接口说明
|
||||
|
||||
[对外暴露的接口、API、命令等]
|
||||
|
||||
## 依赖关系
|
||||
|
||||
- 依赖:[其他区块名]
|
||||
- 被依赖:[其他区块名]
|
||||
|
||||
## 注意事项
|
||||
|
||||
[开发时需要注意的点]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 多对话续接
|
||||
## 总导览文档格式
|
||||
|
||||
如果项目过大,可能需要多次对话完成:
|
||||
所有区块完成后,生成/更新总导览 `README.md`:
|
||||
|
||||
1. 每次开始时读取区块计划
|
||||
2. 找到未完成的区块
|
||||
3. **大小控制**:单个区块不超过 5000 行代码
|
||||
4. **完全深度探索**该区块(每个文件从头到尾)
|
||||
5. 生成区块内完整目录树
|
||||
6. 更新区块计划的进度
|
||||
```markdown
|
||||
# [项目名称] 项目文档
|
||||
|
||||
---
|
||||
> 面向 LLM 的项目文档,用于快速了解项目结构和脉络。
|
||||
> 最后更新:YYYY-MM-DD
|
||||
|
||||
## 完成
|
||||
## 项目概述
|
||||
|
||||
文档创建/更新完成后:
|
||||
[1-2 段简要描述]
|
||||
|
||||
1. 确认所有区块已处理
|
||||
2. 确认每个区块都有完整目录树
|
||||
3. 确认总导览包含简化版目录结构
|
||||
4. 确认没有遗漏任何文件或目录(包括空目录)
|
||||
5. **运行目录完整性最终检查**:
|
||||
```bash
|
||||
# 列出根目录下所有子目录
|
||||
ls -d */ 2>/dev/null | sort
|
||||
```
|
||||
逐一核对每个子目录,确认都出现在项目文档中(区块覆盖或标记 [ignored])
|
||||
6. 向用户汇报完成情况
|
||||
## 技术栈
|
||||
|
||||
- 语言:xxx
|
||||
- 框架:xxx
|
||||
- 主要依赖:xxx
|
||||
|
||||
## 目录结构(简化版)
|
||||
|
||||
```
|
||||
项目文档已更新:
|
||||
- 总导览:.aide/project-docs/README.md
|
||||
- 区块数:N 个
|
||||
project/
|
||||
├── src/ 源码目录
|
||||
├── 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
|
||||
- 本次更新:[新增/更新的区块列表]
|
||||
- 代码行数:约 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. **完整性保证**:每个文件的处理状态都有记录
|
||||
|
||||
@@ -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 权限
|
||||
- 如果安装过程中断,可以重新运行此命令继续
|
||||
- 建议在安装完成后重启终端以确保环境变量生效
|
||||
@@ -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 前执行一次
|
||||
- 所有安装操作都需要用户确认,不会静默修改系统
|
||||
- 如果安装过程中断,可以重新运行此命令继续
|
||||
- 建议在安装完成后重启终端以确保环境变量生效
|
||||
253
aide-marketplace/aide-plugin/commands/readme.md
Normal file
253
aide-marketplace/aide-plugin/commands/readme.md
Normal 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 管理,无需额外备份
|
||||
@@ -139,16 +139,75 @@ aide config get task.source
|
||||
|
||||
**必须执行**:
|
||||
|
||||
##### 简单/中等任务
|
||||
|
||||
1. 根据分析结果生成任务细则文档
|
||||
2. 保存到配置的路径:
|
||||
```bash
|
||||
aide config get task.spec
|
||||
```
|
||||
3. **强制确认点**:
|
||||
- 向用户展示细则摘要
|
||||
- 使用 AskUserQuestion 询问用户是否确认
|
||||
- 等待用户明确答复后才能继续
|
||||
- 如用户有修改意见,更新细则后重新确认
|
||||
|
||||
##### 复杂任务(需拆分为子计划)
|
||||
|
||||
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 询问用户是否确认
|
||||
- 等待用户明确答复后才能继续
|
||||
- 如用户有修改意见,更新细则后重新确认
|
||||
|
||||
```bash
|
||||
aide flow next-step "任务细则已确认"
|
||||
@@ -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
|
||||
@startuml
|
||||
skinparam defaultFontName "Arial"
|
||||
skinparam dpi 300
|
||||
scale 0.5
|
||||
|
||||
' 主程序流程图
|
||||
start
|
||||
:初始化配置;
|
||||
@@ -303,20 +377,41 @@ aide flow next-part docs "验证通过,进入文档环节"
|
||||
aide flow next-step "文档更新完成"
|
||||
```
|
||||
|
||||
### 阶段 6:收尾 (finish)
|
||||
### 阶段 6:用户确认 (confirm)
|
||||
|
||||
```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
|
||||
- 向用户汇报完成情况
|
||||
|
||||
```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. 对每个子计划:
|
||||
- 进入 flow-design,为该子计划设计流程图
|
||||
- 进入 impl,实现该子计划
|
||||
- 进入 verify,验证该子计划
|
||||
- 进入 docs,更新该子计划相关文档
|
||||
- 标记子计划完成,更新任务导览
|
||||
- 进入 confirm,等待用户确认
|
||||
- 用户确认后,更新 `guide.md` 中该子计划状态为 `completed`
|
||||
3. 所有子计划完成后,进入 finish
|
||||
|
||||
### 子计划切换
|
||||
|
||||
完成一个子计划的 docs 后:
|
||||
完成一个子计划的 confirm 后:
|
||||
|
||||
```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 |
|
||||
|
||||
---
|
||||
|
||||
## 附录:任务复杂度评估指导原则
|
||||
|
||||
499
aide-marketplace/aide-plugin/commands/user-docs.md
Normal file
499
aide-marketplace/aide-plugin/commands/user-docs.md
Normal 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
|
||||
> 已完成:YY(ZZ%)
|
||||
> 当前步骤: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. **增量更新**:多次运行不会覆盖用户自定义内容
|
||||
482
aide-marketplace/aide-plugin/commands/user-graph.md
Normal file
482
aide-marketplace/aide-plugin/commands/user-graph.md
Normal 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
|
||||
> 已完成:YY(ZZ%)
|
||||
> 当前步骤: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]` 配置)
|
||||
@@ -146,9 +146,34 @@ aide flow next-part impl "流程设计完成,开始实现"
|
||||
aide flow back-part <环节名> "<原因>"
|
||||
```
|
||||
|
||||
**注意**:执行 back-part 时会生成一个确认 key,需要先完成准备工作后执行 back-confirm 确认。
|
||||
|
||||
**示例**:
|
||||
```bash
|
||||
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
|
||||
@@ -252,6 +277,7 @@ aide flow show 2025-12-15T17-28-53
|
||||
| `impl` | 迭代实现 | exec 阶段使用 |
|
||||
| `verify` | 验证交付 | exec 阶段使用 |
|
||||
| `docs` | 文档更新 | exec 阶段使用 |
|
||||
| `confirm` | 用户确认 | 审阅与返工 |
|
||||
| `finish` | 收尾 | exec 阶段使用 |
|
||||
|
||||
### 流程校验
|
||||
@@ -452,6 +478,9 @@ aide init
|
||||
├── diagrams/ # 流程图目录
|
||||
│ ├── *.puml # PlantUML 源文件
|
||||
│ └── *.png # 生成的图片
|
||||
├── task-plans/ # 复杂任务计划文档(可配置)
|
||||
│ ├── guide.md # 任务计划总导览
|
||||
│ └── spec-NN.md # 子计划细则
|
||||
└── project-docs/ # 项目文档(面向 LLM)
|
||||
├── README.md # 总导览
|
||||
├── block-plan.md # 区块计划
|
||||
@@ -498,8 +527,14 @@ aide flow next-step "验证完成: 所有测试通过"
|
||||
aide flow next-part docs "验证通过,进入文档环节"
|
||||
aide flow next-step "文档更新完成"
|
||||
|
||||
# 9. 收尾
|
||||
aide flow next-part finish "文档更新完成,进入收尾"
|
||||
# 9. 进入用户确认
|
||||
aide flow next-part confirm "文档更新完成,进入用户确认环节"
|
||||
# 等待用户确认...
|
||||
# 如用户确认通过:
|
||||
aide flow next-step "用户确认通过"
|
||||
|
||||
# 10. 收尾
|
||||
aide flow next-part finish "用户确认通过,进入收尾"
|
||||
aide flow next-step "任务完成"
|
||||
```
|
||||
|
||||
|
||||
106
aide-marketplace/aide-plugin/skills/readme-templates/SKILL.md
Normal file
106
aide-marketplace/aide-plugin/skills/readme-templates/SKILL.md
Normal 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. **简洁明了**:避免冗余,突出重点
|
||||
@@ -0,0 +1,89 @@
|
||||
<!--
|
||||
模块:api(API 文档)
|
||||
用途:详细的接口说明
|
||||
位置:库项目的核心章节
|
||||
-->
|
||||
|
||||
## 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}})。
|
||||
|
||||
<!--
|
||||
编写提示:
|
||||
- 每个函数都有签名、参数、返回值、示例
|
||||
- 类型定义要完整
|
||||
- 说明错误处理方式
|
||||
- 保持格式统一
|
||||
-->
|
||||
@@ -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}}
|
||||
|
||||
<!--
|
||||
编写提示:
|
||||
- 图文结合说明架构
|
||||
- 清晰说明各组件职责
|
||||
- 记录重要设计决策
|
||||
- 说明扩展方式
|
||||
-->
|
||||
@@ -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}}
|
||||
|
||||
<!--
|
||||
编写提示:
|
||||
- 按版本倒序排列
|
||||
- 每个版本包含:新增、变更、修复、移除
|
||||
- 提供版本对比链接
|
||||
- 保持格式一致
|
||||
-->
|
||||
@@ -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}}
|
||||
```
|
||||
|
||||
<!--
|
||||
编写提示:
|
||||
- 说明所有配置方式
|
||||
- 每个配置项有类型、默认值、说明
|
||||
- 提供实际场景配置示例
|
||||
- 说明优先级和验证方法
|
||||
-->
|
||||
@@ -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 检查清单
|
||||
-->
|
||||
@@ -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}}
|
||||
|
||||
<!--
|
||||
编写提示:
|
||||
- 从简单到复杂递进
|
||||
- 示例代码可直接运行
|
||||
- 包含输出帮助理解
|
||||
- 解释关键代码逻辑
|
||||
-->
|
||||
@@ -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}})
|
||||
|
||||
<!--
|
||||
编写提示:
|
||||
- 按类别组织问题
|
||||
- 问题简洁,答案详细
|
||||
- 包含代码示例和排查步骤
|
||||
- 提供进一步帮助的链接
|
||||
-->
|
||||
@@ -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}}
|
||||
|
||||
<!--
|
||||
编写提示:
|
||||
- 覆盖主流平台
|
||||
- 提供多种安装方式
|
||||
- 包含验证步骤
|
||||
- 列出常见安装问题
|
||||
-->
|
||||
@@ -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.
|
||||
```
|
||||
|
||||
<!--
|
||||
编写提示:
|
||||
- 选择合适的许可证
|
||||
- 简要说明权限和限制
|
||||
- 提供完整许可证链接
|
||||
-->
|
||||
@@ -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 步
|
||||
- 每步都应有可执行的命令
|
||||
- 包含预期输出帮助用户验证
|
||||
- 链接到更详细的文档
|
||||
-->
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -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}}
|
||||
@@ -0,0 +1,36 @@
|
||||
<!--
|
||||
模板:minimal(微型项目)
|
||||
适用:< 500 行代码的小工具、脚本、单文件项目
|
||||
特点:精简、聚焦核心功能、快速理解
|
||||
-->
|
||||
|
||||
# {{PROJECT_NAME}}
|
||||
|
||||
{{PROJECT_DESCRIPTION}}
|
||||
|
||||
## 用法
|
||||
|
||||
```bash
|
||||
{{USAGE}}
|
||||
```
|
||||
|
||||
## 示例
|
||||
|
||||
```
|
||||
{{EXAMPLES}}
|
||||
```
|
||||
|
||||
## 安装
|
||||
|
||||
```bash
|
||||
{{INSTALLATION}}
|
||||
```
|
||||
|
||||
<!-- 可选:如有配置项 -->
|
||||
## 配置
|
||||
|
||||
{{CONFIGURATION}}
|
||||
|
||||
## 许可证
|
||||
|
||||
{{LICENSE}}
|
||||
@@ -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}}
|
||||
|
||||
各子项目可能有独立的许可证,详见各项目目录。
|
||||
165
aide-marketplace/aide-plugin/skills/rework/SKILL.md
Normal file
165
aide-marketplace/aide-plugin/skills/rework/SKILL.md
Normal 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`
|
||||
@@ -10,6 +10,74 @@ from tomli_w import dumps as toml_dumps
|
||||
|
||||
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 = """################################################################################
|
||||
# Aide 配置文件 (config.toml)
|
||||
################################################################################
|
||||
@@ -33,10 +101,10 @@ DEFAULT_CONFIG = """############################################################
|
||||
|
||||
[general]
|
||||
# 是否在 .gitignore 中忽略 .aide 目录
|
||||
# - true(默认):自动添加 .aide/ 到 .gitignore,不跟踪 aide 状态
|
||||
# - false:不修改 .gitignore,允许 git 跟踪 .aide 目录
|
||||
# 适用于需要在多设备同步 aide 状态的场景
|
||||
gitignore_aide = true
|
||||
# - true:自动添加 .aide/ 到 .gitignore,不跟踪 aide 状态
|
||||
# - false(默认):不修改 .gitignore,允许 git 跟踪 .aide 目录
|
||||
# 推荐使用此设置,便于多设备同步 aide 状态和任务历史
|
||||
gitignore_aide = false
|
||||
|
||||
################################################################################
|
||||
# [runtime] - Aide 运行时要求
|
||||
@@ -68,6 +136,12 @@ source = "task-now.md"
|
||||
# /aide:exec 命令在未指定参数时读取此文件
|
||||
spec = "task-spec.md"
|
||||
|
||||
# 复杂任务计划文档目录
|
||||
# 当任务被拆分为多个子计划时,存放:
|
||||
# - guide.md: 任务计划总导览
|
||||
# - spec-01.md, spec-02.md, ...: 各子计划细则
|
||||
plans_path = ".aide/task-plans/"
|
||||
|
||||
################################################################################
|
||||
# [env] - 环境检测配置
|
||||
################################################################################
|
||||
@@ -166,6 +240,30 @@ path = ".aide/project-docs"
|
||||
# 默认:.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] - 流程追踪配置
|
||||
################################################################################
|
||||
@@ -180,8 +278,9 @@ block_plan_path = ".aide/project-docs/block-plan.md"
|
||||
# impl - 迭代实现
|
||||
# verify - 验证交付
|
||||
# docs - 文档更新
|
||||
# confirm - 用户确认(审阅与返工)
|
||||
# finish - 收尾
|
||||
phases = ["task-optimize", "flow-design", "impl", "verify", "docs", "finish"]
|
||||
phases = ["task-optimize", "flow-design", "impl", "verify", "docs", "confirm", "finish"]
|
||||
|
||||
# 流程图目录路径
|
||||
# 存放 PlantUML 源文件(.puml)和生成的图片(.png)
|
||||
@@ -203,6 +302,21 @@ jar_path = "lib/plantuml.jar"
|
||||
# 默认使用系统 PATH 中的 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] - 待定项确认配置
|
||||
################################################################################
|
||||
@@ -252,11 +366,11 @@ class ConfigManager:
|
||||
|
||||
def ensure_gitignore(self) -> None:
|
||||
"""根据配置决定是否在 .gitignore 中添加 .aide/ 忽略项。"""
|
||||
# 读取配置,默认为 True(忽略 .aide 目录)
|
||||
# 读取配置,默认为 False(不忽略 .aide 目录)
|
||||
config = self.load_config()
|
||||
gitignore_aide = self._walk_get(config, "general.gitignore_aide")
|
||||
if gitignore_aide is None:
|
||||
gitignore_aide = True # 默认值
|
||||
gitignore_aide = False # 默认值
|
||||
|
||||
if not gitignore_aide:
|
||||
# 配置为 False,不添加忽略项
|
||||
|
||||
@@ -65,10 +65,39 @@ class DecideHandlers:
|
||||
if pending is None:
|
||||
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"})
|
||||
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:
|
||||
try:
|
||||
pending = self.storage.load_pending()
|
||||
|
||||
@@ -88,10 +88,22 @@ function renderItemCard(item) {
|
||||
}
|
||||
|
||||
if (item.location && item.location.file) {
|
||||
const location = document.createElement("div");
|
||||
location.className = "item-location";
|
||||
location.textContent = `位置: ${item.location.file}:${item.location.start}-${item.location.end}`;
|
||||
card.appendChild(location);
|
||||
const locationWrap = document.createElement("div");
|
||||
locationWrap.className = "item-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);
|
||||
|
||||
@@ -130,6 +130,26 @@ body {
|
||||
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 {
|
||||
margin-top: var(--spacing-md);
|
||||
display: grid;
|
||||
|
||||
@@ -87,6 +87,26 @@ class BranchesData:
|
||||
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:
|
||||
"""管理 aide flow 任务分支"""
|
||||
|
||||
@@ -118,6 +138,8 @@ class BranchManager:
|
||||
- 清空任务原文件 (task.source),保留文件本身
|
||||
- 备份并删除 flow-status.json
|
||||
- 备份并删除 decisions/*.json
|
||||
- 删除 pending-items.json
|
||||
- 删除流程图目录下的所有文件 (.puml, .plantuml, .png)
|
||||
"""
|
||||
# 确保 logs 目录存在
|
||||
self.logs_dir.mkdir(parents=True, exist_ok=True)
|
||||
@@ -160,21 +182,34 @@ class BranchManager:
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
# 5. 备份并删除 decisions/*.json
|
||||
# 5. 直接删除 decisions/*.json(不备份)
|
||||
decisions_dir = self.aide_dir / "decisions"
|
||||
if decisions_dir.exists():
|
||||
decision_files = list(decisions_dir.glob("*.json"))
|
||||
if decision_files:
|
||||
# 创建备份目录
|
||||
backup_decisions_dir = self.logs_dir / f"{task_id}-decisions"
|
||||
backup_decisions_dir.mkdir(parents=True, exist_ok=True)
|
||||
for decision_file in decision_files:
|
||||
for decision_file in decisions_dir.glob("*.json"):
|
||||
try:
|
||||
shutil.copy2(decision_file, backup_decisions_dir / decision_file.name)
|
||||
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:
|
||||
"""加载分支概况"""
|
||||
if self._data is not None:
|
||||
@@ -231,10 +266,13 @@ class BranchManager:
|
||||
if branch.end_commit:
|
||||
lines.append(f"- **结束提交**: {branch.end_commit[:7]}")
|
||||
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:
|
||||
time_str += f" ~ {branch.finished_at[11:16]}"
|
||||
lines.append(f"- **时间**: {time_str}")
|
||||
end_time_str = branch.finished_at[:16].replace("T", " ")
|
||||
lines.append(f"- **结束时间**: {end_time_str}")
|
||||
if branch.temp_branch:
|
||||
lines.append(f"- **临时分支**: {branch.temp_branch}")
|
||||
lines.append("")
|
||||
@@ -328,7 +366,7 @@ class BranchManager:
|
||||
end_commit: str | None = None,
|
||||
temp_branch: str | None = None,
|
||||
) -> None:
|
||||
"""记录分支结束信息"""
|
||||
"""记录分支结束信息(兼容旧接口,一次性更新所有字段)"""
|
||||
data = self.load_branches()
|
||||
branch_info = self.get_active_branch_info()
|
||||
|
||||
@@ -357,9 +395,97 @@ class BranchManager:
|
||||
self._current_branch_info = None
|
||||
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()
|
||||
@@ -377,49 +503,148 @@ class BranchManager:
|
||||
return self._merge_with_temp_branch(
|
||||
branch_info=branch_info,
|
||||
task_summary=task_summary,
|
||||
end_commit=end_commit,
|
||||
finished_at=finished_at,
|
||||
)
|
||||
else:
|
||||
# 正常合并流程
|
||||
return self._merge_normal(
|
||||
branch_info=branch_info,
|
||||
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(
|
||||
self,
|
||||
branch_info: BranchInfo,
|
||||
task_summary: str,
|
||||
is_force_clean: bool = False,
|
||||
end_commit: str | None = None,
|
||||
finished_at: str | None = None,
|
||||
) -> 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
|
||||
task_branch = branch_info.branch_name
|
||||
task_id = branch_info.task_id
|
||||
start_commit = branch_info.start_commit
|
||||
branch_number = branch_info.number
|
||||
|
||||
# 1. 执行任务文件清理(在工作分支上)
|
||||
# === 在任务分支上执行 ===
|
||||
|
||||
# 对于强制清理,需要创建结束提交;对于正常 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)
|
||||
|
||||
# 2. 创建临时提交保存清理后的变更
|
||||
# 5. 创建"清理提交"
|
||||
self.git.add_all()
|
||||
self.git.commit("[aide] 清理任务临时文件")
|
||||
|
||||
# 3. 切回源分支
|
||||
# === 切回源分支执行 ===
|
||||
|
||||
# 6. 切回源分支
|
||||
self.git.checkout(source_branch)
|
||||
|
||||
# 切换分支后清理 lock 文件
|
||||
self._cleanup_lock_file()
|
||||
|
||||
# 4. squash 合并任务分支
|
||||
# 7. squash 合并任务分支
|
||||
self.git.merge_squash(task_branch)
|
||||
|
||||
# 5. 先更新分支记录(不再记录 end_commit)
|
||||
self.record_branch_finish(status="finished")
|
||||
|
||||
# 6. 创建收尾提交(包含 squash 内容和分支记录更新)
|
||||
# 格式:{起始哈希}的任务收尾
|
||||
# 8. 创建收尾提交
|
||||
self.git.add_all()
|
||||
short_hash = start_commit[:7] if start_commit else "unknown"
|
||||
commit_msg = f"{short_hash}的任务收尾"
|
||||
clean_summary = _clean_task_summary(branch_info.task_summary)
|
||||
if is_force_clean:
|
||||
commit_msg = f"任务中断,清理:{task_branch} - {clean_summary}"
|
||||
else:
|
||||
commit_msg = f"完成:{task_branch} - {clean_summary}"
|
||||
self.git.commit(commit_msg)
|
||||
|
||||
return True, f"任务分支已合并到 {source_branch}"
|
||||
@@ -428,35 +653,104 @@ class BranchManager:
|
||||
self,
|
||||
branch_info: BranchInfo,
|
||||
task_summary: str,
|
||||
is_force_clean: bool = False,
|
||||
end_commit: str | None = None,
|
||||
finished_at: str | None = None,
|
||||
) -> 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
|
||||
task_branch = branch_info.branch_name
|
||||
task_id = branch_info.task_id
|
||||
branch_number = branch_info.number
|
||||
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)
|
||||
|
||||
# 切换分支后清理 lock 文件
|
||||
self._cleanup_lock_file()
|
||||
|
||||
# 在临时分支执行 squash 合并
|
||||
# 7. 在临时分支执行 squash 合并
|
||||
self.git.merge_squash(task_branch)
|
||||
|
||||
# 创建提交
|
||||
# 8. 创建压缩提交
|
||||
self.git.add_all()
|
||||
commit_msg = f"[aide] 任务压缩提交: {task_summary}"
|
||||
end_commit = self.git.commit(commit_msg)
|
||||
|
||||
# 记录完成(保留任务分支和临时分支)
|
||||
self.record_branch_finish(
|
||||
status="merged-to-temp",
|
||||
end_commit=end_commit,
|
||||
temp_branch=temp_branch,
|
||||
)
|
||||
clean_summary = _clean_task_summary(task_summary)
|
||||
if is_force_clean:
|
||||
commit_msg = f"[aide] 强制清理压缩提交: {clean_summary}"
|
||||
else:
|
||||
commit_msg = f"[aide] 任务压缩提交: {clean_summary}"
|
||||
self.git.commit(commit_msg)
|
||||
|
||||
action_name = "强制清理" if is_force_clean else "任务完成"
|
||||
return False, (
|
||||
f"⚠ 源分支 {branch_info.source_branch} 有新提交\n"
|
||||
f"已在临时分支 {temp_branch} 完成合并\n"
|
||||
f"已在临时分支 {temp_branch} 完成{action_name}合并\n"
|
||||
f"请手动处理后续操作"
|
||||
)
|
||||
|
||||
@@ -127,6 +127,13 @@ class GitIntegration:
|
||||
if result.returncode != 0:
|
||||
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]:
|
||||
return subprocess.run(
|
||||
["git", *args],
|
||||
|
||||
@@ -27,6 +27,8 @@ def run_pre_commit_hooks(
|
||||
_hook_plantuml(root=root, config=config)
|
||||
if from_phase == "docs" and action in {"next-part", "back-part"}:
|
||||
_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:
|
||||
@@ -145,3 +147,29 @@ def _hook_changelog_on_leave_docs(*, root: Path, git: GitIntegration, status: Fl
|
||||
|
||||
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)} 个")
|
||||
|
||||
|
||||
@@ -4,13 +4,14 @@ from __future__ import annotations
|
||||
|
||||
import json
|
||||
import os
|
||||
import secrets
|
||||
import time
|
||||
from contextlib import contextmanager
|
||||
from pathlib import Path
|
||||
|
||||
from aide.flow.errors import FlowError
|
||||
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:
|
||||
@@ -21,6 +22,7 @@ class FlowStorage:
|
||||
self.lock_path = self.aide_dir / "flow-status.lock"
|
||||
self.tmp_path = self.aide_dir / "flow-status.json.tmp"
|
||||
self.logs_dir = self.aide_dir / "logs"
|
||||
self.back_confirm_path = self.aide_dir / "back-confirm-state.json"
|
||||
|
||||
def ensure_ready(self) -> None:
|
||||
if not self.aide_dir.exists():
|
||||
@@ -144,3 +146,45 @@ class FlowStorage:
|
||||
|
||||
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}")
|
||||
|
||||
|
||||
@@ -39,7 +39,67 @@ class FlowTracker:
|
||||
return self._run(action="next-part", to_phase=phase, text=summary)
|
||||
|
||||
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:
|
||||
return self._run(action="issue", to_phase=None, text=description)
|
||||
@@ -47,6 +107,37 @@ class FlowTracker:
|
||||
def error(self, description: str) -> bool:
|
||||
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:
|
||||
try:
|
||||
self.storage.ensure_ready()
|
||||
@@ -129,12 +220,18 @@ class FlowTracker:
|
||||
|
||||
# 如果进入 finish 环节,执行分支合并(必须在提交后执行)
|
||||
if action == "next-part" and to_phase == "finish":
|
||||
# 再次提交状态文件(因为 save_status 更新了 git_commit hash)
|
||||
self.git.add_all()
|
||||
self.git.commit("[aide] finish: 更新状态文件")
|
||||
# finish 提交的哈希就是 end_commit
|
||||
finish_commit = None
|
||||
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(
|
||||
task_summary=normalized_text,
|
||||
end_commit=finish_commit,
|
||||
finished_at=finish_timestamp,
|
||||
)
|
||||
if not success:
|
||||
output.warn(merge_msg)
|
||||
|
||||
@@ -8,7 +8,7 @@ from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
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.flow.tracker import FlowTracker
|
||||
|
||||
@@ -119,6 +119,10 @@ def build_parser() -> argparse.ArgumentParser:
|
||||
flow_back_part.add_argument("reason", help="回退原因")
|
||||
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.add_argument("description", help="问题描述")
|
||||
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.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)
|
||||
|
||||
# aide decide
|
||||
@@ -162,6 +170,7 @@ def build_parser() -> argparse.ArgumentParser:
|
||||
|
||||
|
||||
def handle_init(args: argparse.Namespace) -> bool:
|
||||
# 使用当前工作目录(原地初始化,类似 git init)
|
||||
root = Path.cwd()
|
||||
cfg = ConfigManager(root)
|
||||
cfg.ensure_config()
|
||||
@@ -174,7 +183,7 @@ def handle_env_default(args: argparse.Namespace) -> bool:
|
||||
"""aide env(无子命令)等同于 aide env ensure。"""
|
||||
if args.env_command is None:
|
||||
# 无子命令,执行默认的 ensure
|
||||
root = Path.cwd()
|
||||
root = find_project_root()
|
||||
cfg = ConfigManager(root)
|
||||
manager = EnvManager(root, cfg)
|
||||
return manager.ensure()
|
||||
@@ -183,7 +192,7 @@ def handle_env_default(args: argparse.Namespace) -> bool:
|
||||
|
||||
def handle_env_ensure(args: argparse.Namespace) -> bool:
|
||||
"""aide env ensure 处理。"""
|
||||
root = Path.cwd()
|
||||
root = find_project_root()
|
||||
cfg = ConfigManager(root)
|
||||
manager = EnvManager(root, cfg)
|
||||
|
||||
@@ -202,7 +211,7 @@ def handle_env_ensure(args: argparse.Namespace) -> bool:
|
||||
|
||||
def handle_env_list(args: argparse.Namespace) -> bool:
|
||||
"""aide env list 处理。"""
|
||||
root = Path.cwd()
|
||||
root = find_project_root()
|
||||
cfg = ConfigManager(root)
|
||||
manager = EnvManager(root, cfg)
|
||||
manager.list_modules()
|
||||
@@ -211,7 +220,7 @@ def handle_env_list(args: argparse.Namespace) -> bool:
|
||||
|
||||
def handle_env_set(args: argparse.Namespace) -> bool:
|
||||
"""aide env set 处理。"""
|
||||
root = Path.cwd()
|
||||
root = find_project_root()
|
||||
cfg = ConfigManager(root)
|
||||
manager = EnvManager(root, cfg)
|
||||
|
||||
@@ -238,7 +247,7 @@ def handle_env_set(args: argparse.Namespace) -> bool:
|
||||
|
||||
|
||||
def handle_config_get(args: argparse.Namespace) -> bool:
|
||||
root = Path.cwd()
|
||||
root = find_project_root()
|
||||
cfg = ConfigManager(root)
|
||||
value = cfg.get_value(args.key)
|
||||
if value is None:
|
||||
@@ -249,7 +258,7 @@ def handle_config_get(args: argparse.Namespace) -> bool:
|
||||
|
||||
|
||||
def handle_config_set(args: argparse.Namespace) -> bool:
|
||||
root = Path.cwd()
|
||||
root = find_project_root()
|
||||
cfg = ConfigManager(root)
|
||||
parsed_value = _parse_value(args.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:
|
||||
root = Path.cwd()
|
||||
root = find_project_root()
|
||||
cfg = ConfigManager(root)
|
||||
tracker = FlowTracker(root, cfg)
|
||||
return tracker.start(args.phase, args.summary)
|
||||
|
||||
|
||||
def handle_flow_next_step(args: argparse.Namespace) -> bool:
|
||||
root = Path.cwd()
|
||||
root = find_project_root()
|
||||
cfg = ConfigManager(root)
|
||||
tracker = FlowTracker(root, cfg)
|
||||
return tracker.next_step(args.summary)
|
||||
|
||||
|
||||
def handle_flow_back_step(args: argparse.Namespace) -> bool:
|
||||
root = Path.cwd()
|
||||
root = find_project_root()
|
||||
cfg = ConfigManager(root)
|
||||
tracker = FlowTracker(root, cfg)
|
||||
return tracker.back_step(args.reason)
|
||||
|
||||
|
||||
def handle_flow_next_part(args: argparse.Namespace) -> bool:
|
||||
root = Path.cwd()
|
||||
root = find_project_root()
|
||||
cfg = ConfigManager(root)
|
||||
tracker = FlowTracker(root, cfg)
|
||||
return tracker.next_part(args.phase, args.summary)
|
||||
|
||||
|
||||
def handle_flow_back_part(args: argparse.Namespace) -> bool:
|
||||
root = Path.cwd()
|
||||
root = find_project_root()
|
||||
cfg = ConfigManager(root)
|
||||
tracker = FlowTracker(root, cfg)
|
||||
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:
|
||||
root = Path.cwd()
|
||||
root = find_project_root()
|
||||
cfg = ConfigManager(root)
|
||||
tracker = FlowTracker(root, cfg)
|
||||
return tracker.issue(args.description)
|
||||
|
||||
|
||||
def handle_flow_error(args: argparse.Namespace) -> bool:
|
||||
root = Path.cwd()
|
||||
root = find_project_root()
|
||||
cfg = ConfigManager(root)
|
||||
tracker = FlowTracker(root, cfg)
|
||||
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:
|
||||
"""aide flow status - 查看当前任务状态。"""
|
||||
from aide.flow.storage import FlowStorage
|
||||
|
||||
root = Path.cwd()
|
||||
root = find_project_root()
|
||||
storage = FlowStorage(root)
|
||||
|
||||
try:
|
||||
@@ -346,7 +370,7 @@ def handle_flow_list(args: argparse.Namespace) -> bool:
|
||||
"""aide flow list - 列出所有任务。"""
|
||||
from aide.flow.storage import FlowStorage
|
||||
|
||||
root = Path.cwd()
|
||||
root = find_project_root()
|
||||
storage = FlowStorage(root)
|
||||
|
||||
try:
|
||||
@@ -374,7 +398,7 @@ def handle_flow_show(args: argparse.Namespace) -> bool:
|
||||
"""aide flow show <task_id> - 查看指定任务的详细状态。"""
|
||||
from aide.flow.storage import FlowStorage
|
||||
|
||||
root = Path.cwd()
|
||||
root = find_project_root()
|
||||
storage = FlowStorage(root)
|
||||
|
||||
try:
|
||||
|
||||
@@ -199,9 +199,9 @@ aide-program/
|
||||
|
||||
### 5.2 .gitignore 处理
|
||||
|
||||
- `aide init` 时自动检查 `.gitignore`
|
||||
- 默认添加 `.aide/` 为忽略项
|
||||
- 可通过配置 `general.gitignore_aide = false` 禁用此行为
|
||||
- `aide init` 时根据配置决定是否修改 `.gitignore`
|
||||
- 默认不修改(`gitignore_aide = false`),推荐将 .aide/ 纳入版本控制
|
||||
- 可通过配置 `general.gitignore_aide = true` 自动添加 `.aide/` 为忽略项
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ aide 使用 TOML 格式的配置文件,位于 `.aide/config.toml`。
|
||||
|
||||
# general: 通用设置
|
||||
[general]
|
||||
gitignore_aide = true # 是否自动将 .aide/ 添加到 .gitignore
|
||||
gitignore_aide = false # 是否自动将 .aide/ 添加到 .gitignore
|
||||
|
||||
# runtime: aide 自身运行要求
|
||||
[runtime]
|
||||
@@ -81,11 +81,12 @@ timeout = 0
|
||||
|
||||
| 字段 | 类型 | 默认值 | 说明 |
|
||||
|------|------|--------|------|
|
||||
| `gitignore_aide` | bool | `true` | 是否自动将 .aide/ 添加到 .gitignore |
|
||||
| `gitignore_aide` | bool | `false` | 是否自动将 .aide/ 添加到 .gitignore |
|
||||
|
||||
**使用场景**:
|
||||
- `aide init` 时检查此配置,决定是否修改 .gitignore
|
||||
- 设为 `false` 可将 .aide/ 纳入版本控制
|
||||
- 默认 `false`,推荐将 .aide/ 纳入版本控制,便于多设备同步
|
||||
- 设为 `true` 可自动将 .aide/ 添加到 .gitignore
|
||||
|
||||
### 4.2 [runtime] 运行时配置
|
||||
|
||||
|
||||
@@ -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),请从发布页面下载对应架构的资源文件。
|
||||
@@ -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 ""
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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 # [需下载]
|
||||
```
|
||||
@@ -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 ""
|
||||
@@ -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%"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1 +1,2 @@
|
||||
# 在此添加依赖
|
||||
tomli-w==1.2.0
|
||||
30
cache/old-task.md
vendored
Normal file
30
cache/old-task.md
vendored
Normal 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+运行构建用户文档流程图的命令即可,第一次会开始分析和计划之后,之后的每次执行都会在产出的同时同步更新计划文档,后续的新对话中通过检索计划即可,计划文档应起到分布计划+状态记录+指导任务细节的作用,
|
||||
Reference in New Issue
Block a user