✨ feat: 清理项目结构、文档内容
This commit is contained in:
28
.cache/p2/before-1.md
Normal file
28
.cache/p2/before-1.md
Normal file
@@ -0,0 +1,28 @@
|
||||
先对目前存在的问题进行讨论
|
||||
|
||||
是的,期望的行为是用户只需通过README学习可用的command即可,通过快捷命令触发流程启动,也无需关心skills,它被command自动触发学习和使用,
|
||||
|
||||
我认为需要封装的操作是一些流程与形式上的操作,以此减少不确定性并减少token污染减少不必要的LLM注意,
|
||||
把核心的分析、思考、业务内容交给LLM不加限制竭尽所能尽情发挥,
|
||||
我这里有一点前期设计草案,
|
||||
|
||||
这套系统开发好后我希望成品是3项:
|
||||
- 一个可供用户快速上手且能引导用户根据需要进行深入了解的README.md
|
||||
- 一个可以快速安装的插件市场(在README中提供快捷指令)
|
||||
- 一套实现了目标程序系统的项目目录
|
||||
|
||||
我希望的下发/分享方式是把这1个文档+2个目录打包为一个压缩包分享(先以此为暂定目标,当该体系经验证可用且高效后再考虑更好的形式:再把插件市场迁入远程仓库,把程序投放到一些包托管平台,便于快速安装,然后只需以网页或文档的形式分享README即可),
|
||||
|
||||
@aide-requirements.md 是一个我原本暂定的细则文档(如果它有任何不合理之处,你都可以质疑,这只是个草案,不要被它的定式限制),现在需要你根据我前述的需求,评估这个文档是否满足:仅以这一份文档为核心,辅以原 ai-agent-memory/ 和 docs/ 目录下的信息,开始实际开发任务,得到3项最终产出
|
||||
|
||||
关于 @aide-requirements.md 的补充:
|
||||
1. prep和exec的细节都要从原ai-agent-memory目录下的相关文档中获取,
|
||||
2. 其实我希望你可以完全忽略我在aide-requirements.md中aide程序的细节设计,
|
||||
- 就是说,保留`aide env`和`aide progress`等主要支项(这个也可以忽略,不遵循,仅部分参考,后续可以增添或删减),但完全忽略`aide env check`、`aid env ensure`、`aide progress init`等更细节的内容,还包括具体的输入输出数据结构等,
|
||||
- 因为我希望你可以引导我对aide程序体系进行重新设计,部分参考原本的设计,找出可能存在的不足,可以完善的部分,可能存在的伪需求,可以删减的部分,
|
||||
3. 关于待定项的交互流程,我想实现一个程序(最终要把它集成到aide中,以aide为入口启动),启动这个程序后,它会读取相关的数据文件(用户提出的原始任务文档及其他本次任务涉及到的文件、LLM分析得出的待定项数据),基于这些数据渲染成对用户友好的web界面,提供网页的HTTP链接供用户访问,用户在网页界面中以图形化的方式交互式操作数据,程序把用户的操作结果(用户的决定)存储到一个新的数据文件,然后LLM请求用户意见结果时,aide读取这个文件把用户的决定反馈给LLM
|
||||
4. 我希望最外层的aide入口封装使用平台的shell脚本,但仅仅只是封装部分,这个封装的任务是检查python虚拟环境或系统环境的python,然后通过检测到的python执行真正的python入口程序,
|
||||
- 封装部分仅负责检测python并执行真正的入口,在检测到不存在时抛出致命错误,需要用户处理好至少先提供一个可用的基本的python3才能继续
|
||||
- 封装部分教轻量,可以为win、linux/mac单独编写也不会太麻烦
|
||||
- 由封装调用真正的python入口程序后,处理更核心的逻辑,
|
||||
- 使用python是为了减少统一跨平台、开发、调试与测试运行的成本,同时还可以作为胶水语言在适当的时候引入其他语言更好的完成部分任务,比如前面说的处理待定项交互的程序,就很适合用ts+react+nextjs这样的全栈技术栈来实现,同时兼顾界面和后端,还能快速落地,前端比flutter轻量,后端比rust轻量,且性能完全满足需求,
|
||||
133
.cache/p2/before-2.md
Normal file
133
.cache/p2/before-2.md
Normal file
@@ -0,0 +1,133 @@
|
||||
# 对已发现的可能存在的问题的答复
|
||||
|
||||
## 状态记录的必要性存疑
|
||||
|
||||
要把保存状态记录的操作程序化
|
||||
|
||||
记录每一个步骤的状态变更是因为实际使用时可能会中断任务执行,但恢复时可能不再使用claude code,而是其他agent cli,或者是直接由真实开发人员接手,此时可以通过状态记录追溯当前进度和操作痕迹,甚至是通过git提交看到每一个步骤的细节,
|
||||
|
||||
但是为了减轻负担,所以把这个其实不太必要,任务简单但却频繁重复的过程封装为固定程序,
|
||||
|
||||
创建一个独立的aide二级命令<1>完成这项任务
|
||||
|
||||
> 我会在答复中把我认为应该创建为单独二级命令的部分提出来,但是我不会立刻为其命名,仅标记为"二级命令<n>",后续我们再详细谈明确的命令职责界定,业务细节,及其命名,
|
||||
|
||||
## 伪需求/过度封装
|
||||
|
||||
其实我想说的忽略掉细节的命令分支比如二级命令env、build、version等,三级命令check、ensure、init、update等,不是说要在新设计中去除掉所有的二三级命令,而是希望你忽略原有的设计定式,引导我进行重新设计,使所有的命令都更符合需求、符合场景,
|
||||
|
||||
env的check和ensure确实存在伪需求现象,仅保留ensure即可
|
||||
|
||||
workspace、version和build都可以删去,uml图的图像输出和版本控制都完全交由二级命令<1>在流程中动态反馈,
|
||||
|
||||
## aide-version
|
||||
|
||||
是的,claude code本身能很好地完成git操作,但它会出于一些难以预见的实际项目情况考虑,频繁大量使用git status、git stash等操作,每一次操作的输出都会大量污染LLM的上下文
|
||||
|
||||
git操作单独封装确实价值很有限,我想把这部分操作集成进二级命令<1>中,细节后面我会单独提意见
|
||||
|
||||
## aide:init
|
||||
|
||||
它主要是触发agent cli中LLM对项目内容详情的主动认知,并对项目所需的开发环境进行检测和自动修复,避免后续因为环境报错导致不必要的上下文污染,
|
||||
|
||||
LLM确实能在遇到问题时很好地解决问题,但我希望它在处理业务逻辑时不要被这些不必要的问题所打扰,
|
||||
|
||||
若在init阶段发现并解决了环境问题,此时的沉没成本很小,我可以在解决问题后直接结束本次对话,重新开始新的对话,此时的init就只会看到一些✓,然后我可以放心的继续接下来的任务计划完成,
|
||||
|
||||
## Web待定项界面
|
||||
|
||||
这部分实现确实具有不小的复杂度,
|
||||
|
||||
我想把它单独创建为一个二级命令<2>,
|
||||
|
||||
## 缺失:错误恢复机制
|
||||
|
||||
> 原设计定义了输出前缀(✓/⚠/✗),但没有定义:
|
||||
> - 错误发生后LLM应该如何响应
|
||||
> - 是否需要重试机制
|
||||
> - 如何处理部分成功的情况
|
||||
|
||||
我的想法:
|
||||
|
||||
遇到⚠时使用二级命令<1>记录,分析其是否影响继续执行,若不影响原定计划实现,则记录“继续-(遇到的问题信息)”,若影响则记录“解决阻塞-(遇到的问题 + 受影响的部分),
|
||||
|
||||
若遇到✗则不论是否阻塞计划,都要先记录并解决,同时注意:
|
||||
- 默认情况都自行取最优解以解决阻塞,失败则尝试更换解决方案,中途无需记录对解决方案的分析思考和决定,仅在成功解决时才在 discuss/ 目录下创建问题的分析和解决记录文档,若3次尝试都无法解决则强制停止计划执行并创建错误报告然后通知用户等待用户给出下一步意见,
|
||||
- 如果用户明确指出,不应该自行解决遇到的✗,则每遇到✗时停止或按用户的特定指导进行操作
|
||||
|
||||
## 缺失:配置的默认值与覆盖机制
|
||||
|
||||
配置文件不存在时输出⚠警告消息并视为未指定配置文件
|
||||
|
||||
运行aide-init时,若看到配置不存在的警告,应该按照全局默认配置并根据项目创建项目下默认配置文件,然后根据项目情况分析后对配置文件进行针对性设置更新(通过skill学习然后操作aide进行设置,不允许直接读配置文件,因为我希望配置文件自带大量详细的注释和配置示例实现子文档化,对用户友好,但这样的文件被LLM读取会严重污染上下文,LLM只被允许通过aide读取环境配置)
|
||||
|
||||
对于配置文件,后续有可能会为其开发像待定项web界面那样专用的面向用户的图形化交互式界面,
|
||||
|
||||
配置不需要单独的验证指令,每一次的设置和获取都应该封装好集成的验证,若无问题则表现为无事发生,仅在自动检验出现异常现象时输出✗错误,
|
||||
|
||||
# 对一些二级命令的想法💡
|
||||
|
||||
因为希望你根据功能为各命令进行命名,使其名称可以简短的同时能见名知意、名副其实
|
||||
|
||||
但是有个名称更便于指代,所以后续我都用cmdn来作为临时名称,例如二级命令<1>就暂称为`aide cmd1`
|
||||
|
||||
## 二级命令`<1>`
|
||||
|
||||
预期的行为(本节下面出现的`<desc>`表示必填占位描述,`[desc]`表示选填占位描述):
|
||||
|
||||
- `aide cmd1 start <task-optimize> <开始tui贪吃蛇程序设计>`
|
||||
- `aide cmd1 next-step <完成任务分析,输出待定项,等待用户确认>`
|
||||
- `aide cmd1 back-step <用户确认待定项同时提出新的意见>`
|
||||
- `aide cmd1 next-step <重新分析优化待定项,等待用户确认>`
|
||||
- `aide cmd1 next-step <用户完成待定项处理并确认继续>`
|
||||
- `aide cmd1 next-step <生成优化结果-任务细则,等待用户确认>`
|
||||
- `aide cmd1 next-part <flow-design> <任务细则经用户确认,进入流程图设计环节>`
|
||||
- `aide cmd1 next-step <流程图设计完成>`
|
||||
- `aide cmd1 next-step <解决流程图报错>`
|
||||
- `aide cmd1 next-part <main> <成功生成png流程图像,进入主体环节>`
|
||||
- `aide cmd1 next-step <mod1完成>`
|
||||
- `aide cmd1 next-step <mod2完成>`
|
||||
- `aide cmd1 back-part <task-optimize> <用户中断,用户分析流程图后提出问题,返工重新制定任务>`
|
||||
- `aide cmd1 next-step <重新分析优化待定项,等待用户确认>`
|
||||
- ……
|
||||
- `aide cmd1 next-step <mod1完成>`
|
||||
- `aide cmd1 issue <⚠实现mod2时遇到阻塞性问题>`
|
||||
- `aide cmd1 next-step <问题解决,mod2完成,保存问题分析报告>`
|
||||
- `aide cmd1 issue <⚠实现mod3时遇到阻塞性问题>`
|
||||
- `aide cmd1 error <✗问题无法解决,保存错误报告,等待用户处理>`
|
||||
- ……
|
||||
|
||||
|
||||
以上,从前到后,是任务过程中预期的一种流程(此处为了演示和为分析提供信息,含有较多返工和警告与错误,实际情况可能问题较少能一直next),及其预期的参数形式
|
||||
|
||||
其中只有start和next-part、back-part这三项除了总结还需要携带具体的指定大环节名,其他的则只需要LLM为当前小步骤生成一句总结即可,
|
||||
|
||||
start需要是因为任务开始时不能保证一定是从最初的任务优化开始的,start会触发aide cmd1生成新的项目任务工作空间,
|
||||
|
||||
next-part和back-part需要是因为进入下一环节时简单的增强一下“现在你已经进入了xxxx大环节了”的概念,一个环节名不会花费多少token但能稍微聚焦一下注意力,而back则是非常需要,因为aide没法自行确定应该返工到的是哪一个环节,返工不一定只返上一个环节,也不一定每次都要返回到最初的环节,
|
||||
|
||||
我希望aide cmd1可以集成对git的处理,每一次的步骤变化,都把环节名加上LLM生成的总结作为提交信息,自动使用`add .`添加然后完成提交,完全不需要LLM再关注版本控制问题,skills中也不再需要单独处理,
|
||||
|
||||
aide cmd1还有一个作用就是,按既有流程顺序对环节的变化做检验,比如task-optimize时的下一环节应该是flow-design,但如果LLM此时调用了next-part main,则aide cmd1会小小的输出一个⚠警告,动态反馈给LLM提醒流程有误
|
||||
|
||||
当已处于flow-design这一环节时,每一次的next-step,cmd1都应该尝试校验环境配置中流程图文件目录下的所有文件,当校验出错时输出一个⚠警告,提醒LLM需要解决流程图错误,当next-part时,除了检验还要生成png图像输出,出错则警告,顺利完成则无输出,进行git提交后正常进入下一环节
|
||||
|
||||
当进入docs-upgrade环节时,cmd1输出普通消息提醒LLM记得更新CHANGELOG,对CHANGELOG文件的修改不需要封装,交给LLM自由发挥,已处于docs-upgrade环节尝试next-part时,cmd1要检验CHANGELOG是否有更新,并从git提交记录中找到旧的CHANGELOG文件,检查版本号部分是否正常更新,
|
||||
|
||||
一般情况下aide cmd1无输出,“没有消息就是好消息”
|
||||
|
||||
aide cmd1的数据文件不保存在项目目录下,而是和一般的APP一样保存在自己的用户数据目录下属于这个程序的存储路径中,
|
||||
|
||||
cmd1不需要和start、next-*等命令同级的complete命令用于完成时,即使最后一环节步骤全部完成也不需要,用户随时有可能返工或重新切入任务流程重新启动
|
||||
|
||||
## 二级命令`<2>`
|
||||
|
||||
暂时仅规定它需要输入的数据格式和它应该输出的数据格式,及其启动入口,
|
||||
|
||||
另外再单独讨论其实现细节,
|
||||
|
||||
它本身可以是任何形式的比如web、app、cli等,只要满足输入输出要求即可,但是APP过于重量级,而cli也较为麻烦需要用户单独启动一个终端并进入目标目标运行,一键启动的前后端分离式web形式对用户最友好,启动后简单输出链接地址,用户直接访问网页链接即可进行操作,
|
||||
|
||||
我希望使用python+静态react,不用nextjs全栈,但需要python在启动时,不仅提供用于操作本地文件的后端API,还封装好类似nginx的web服务器,它基于静态的index.html提供前端的web访问,避免用户还要自行部署react才能访问
|
||||
|
||||
关于待定项的典型数量和复杂度等输入数据格式细节,你可以尝试以 @now-task-example.md 为一个待分析和优化的用户任务,对其按照原体系中的task-builder要求进行处理,输出原版待定项文档,然后从中提取和转化出含有完整关键信息但更精简的json数据结构,
|
||||
55
.cache/p2/example-1.md
Normal file
55
.cache/p2/example-1.md
Normal file
@@ -0,0 +1,55 @@
|
||||
proc environment manager
|
||||
|
||||
## 说明
|
||||
|
||||
`proc`是一个已经被用户正确安装的程序,可以像`ls`、`cd`、`cat`,`curl`等常用命令一样通过`proc`这个命令名直接随时调用而无需关心其安装路径和程序配置,
|
||||
|
||||
proc是一套针对性设计用于专业步骤流程的程序系统的访问入口,
|
||||
|
||||
可通过`proc`访问其一系列子程序,例如现在将要具体学习的`proc env`,`env`子项专用于处理项目开发时的开发环境情况问题,
|
||||
|
||||
## 行为与用例
|
||||
|
||||
> 下方代码片段是用空行分隔的多组命令调用示例,每一段注释后直到下一个空行前的一条或多条shell命令是一组,同一组的命令是等效的(通常较短的命令是其他长命令的参数缺省形式),
|
||||
|
||||
```bash
|
||||
# 对于已启用的项目(python、jdk、gcc、cmake、cargo、rustc、uv、nodejs等)检测其环境的可用性及版本,由默认配置或工作目录下的默认环境配置文件决定启用哪些项目的检测
|
||||
proc env
|
||||
proc env check
|
||||
proc env check --all
|
||||
proc env check --all --env-config ./env-config.toml
|
||||
# 这一组(也包括下一组`proc env show`)中的`--env-config`选项需要一个文件路径参数用于指定环境配置文件,其默认值是工作目录下的`./env-config.toml`
|
||||
|
||||
# 列出所有支持的环境模块并显示:
|
||||
# 1.当前配置下该环境检测模块是否启用
|
||||
# 2.该模块支持的操作(有些模块可能仅支持check而不支持ensure操作)
|
||||
proc env show
|
||||
proc env show --all
|
||||
proc env show --all --env-config ./env-config.toml
|
||||
|
||||
# 支持的参数选项同上,运行所有已启用的环境模块检测其环境的可用性及版本,当目标环境不可用时尝试按既定程序修复环境,仅当所有修复都失败时输出失败消息
|
||||
proc env ensure
|
||||
|
||||
# 运行指定的环境模块检测其环境的可用性及版本,且不论其是否已在环境配置中启用
|
||||
proc env check --spec ['python']
|
||||
proc env check --spec ['java','rust','uv']
|
||||
# 这一组中的`--spec`选项需要一个字符串列表参数(即使只有一项),支持的选项可通过`proc env show`获取
|
||||
|
||||
# 运行指定的环境模块检测其环境的可用性及版本,且不论其是否已在环境配置中启用,当目标环境不可用时尝试按既定程序修复环境,仅当所有修复都失败时输出失败消息
|
||||
proc env ensure --spec ['python']
|
||||
proc env ensure --spec ['java','rust']
|
||||
```
|
||||
|
||||
## IO约定与示例
|
||||
|
||||
- env子项仅支持[行为与用例](#行为与用例)中所示的参数选项,不支持动态输入其他参数值
|
||||
- 输出前缀:
|
||||
- 成功:✓
|
||||
- 警告:⚠
|
||||
- 失败:✗
|
||||
|
||||
### 输出示例
|
||||
|
||||
```
|
||||
✓ 虚拟环境可用: /home/user/.local/pro-process-program/.venv/bin/python
|
||||
```
|
||||
17
.cache/p2/now-task-example.md
Normal file
17
.cache/p2/now-task-example.md
Normal file
@@ -0,0 +1,17 @@
|
||||
使用rust编写一个terminalUI的cli贪吃蛇游戏
|
||||
|
||||
支持引入随机数和一些难度递增规则自动生成后续关卡
|
||||
|
||||
支持游戏历史记录数据的自动保存和自动读取
|
||||
|
||||
游戏启动界面可以读取存档或创建新存档,支持设置难度递增速度、设置玩家名
|
||||
|
||||
游戏界面显示关卡信息、分数信息等丰富玩家体验
|
||||
|
||||
支持暂停
|
||||
|
||||
除了设置玩家名这样的,其他所有输入都要是无缓冲输入,按下即生效
|
||||
|
||||
要能让界面自动适应终端窗口大小(界面实时显示界面大小),且不要那种滚轮往上滑满是被刷屏的之前的旧帧,要直接修改字符坐标,
|
||||
|
||||
退出程序后我不想看到往上翻全是被刷满屏的样子(不是说用clear清屏,是希望不要用疯狂刷屏来刷新界面),
|
||||
17
.cache/p2/re-01.md
Normal file
17
.cache/p2/re-01.md
Normal file
@@ -0,0 +1,17 @@
|
||||
1. 你的理解准确无误
|
||||
2. 命名分别选用`aide flow`和`aide decide`
|
||||
3. json数据结构大体上设计的挺好的,还有小部分我不太满意,你看看我的意见是否合理:
|
||||
- json的数据可以不再需要Uxxx这样的编号形式,直接1、2、3简单递增即可
|
||||
- 仅给出了LLM自行生成的问题简述,我需要的是具体的指出原文的哪一行到哪一行,(后续我希望web界面呈现问题时渲染出原文件的局部,带行号,模糊/歧义/可优化的来源部分高亮显示)
|
||||
- 同样决策中的编号也只需简单序号即可
|
||||
- 非常棒,额外的意见字段只需要在有的时候才出现,没有备注时连"note"键都不应该出现
|
||||
4. 新的意见,我想把所有由aide自动创建、统一管理的数据文件都默认保存到项目路径下的`.aide`目录下,比如环境配置文件、状态更新数据文件(之前计划的是和一般的APP一样保存在自己的用户数据目录下属于这个程序的存储路径中,现在改到.aide),默认情况下在init环境检查`.gitignore`,为.aide添加为忽略项,除非在环境配置中指定不忽略
|
||||
|
||||
---
|
||||
|
||||
另外,我想知道目前为止的所有信息是否已经足够建立一份核心文档,足够以这一份文档为核心,辅以原 ai-agent-memory/ 和 docs/ 目录下的信息,开始实际开发任务,得到3项最终产出(README+插件市场目录+程序系统目录)
|
||||
|
||||
若已经足够我希望能先对原有的aide-requirements.md(以它为核心文档)进行更新,补充完善不足之处,删去即将讨论和重新定义的部分,
|
||||
接下来开始引导我对aide整个系统进行重新设计,
|
||||
这个过程中我希望你的所有想法、建议、报告等等信息全部以.md文档报告的形式保存到 discuss/ 目录下(从现在之后开始,刚刚这次不需要重新建立报告),这便于我仔细查阅和思考,
|
||||
而我也会把我的回复创建.md文档报告保存到 reply/ 目录下并告诉你文件名(就像现在这个答复文档这样),
|
||||
3
.cache/p2/re-02.md
Normal file
3
.cache/p2/re-02.md
Normal file
@@ -0,0 +1,3 @@
|
||||
1. 我同意方案A
|
||||
2. 由你在遵循commands设计理念的规则下自行发挥,编写能实现目标效果的最优commands
|
||||
3. 连续完成commands和skills部分,暂时不处理aide细节设计,
|
||||
5
.cache/p2/re-05.md
Normal file
5
.cache/p2/re-05.md
Normal file
@@ -0,0 +1,5 @@
|
||||
编写一份文档保存到statements/目录下,要求能通过这份文档了解当前整个项目的情况和状态,大概像now-status.md里`## 然后现在的要求`之前的描述的意思那样,
|
||||
|
||||
然后我会清空discuss、reply、ai-agent-memory目录下的所有内容,删掉now-status.md和aide-requirements.md(不需要你帮我进行删除操作),
|
||||
|
||||
我希望之后的其他人,能根据那份文档的信息配合现有的aide-marketplace、aide-program、docs、statements目录下的内容,可以对本项目有完全的了解以展开后续工作任务
|
||||
Reference in New Issue
Block a user