独立开发2:less intelligence,more structure
上面这个文档仍然是在AI编程工具中实现agent调用和自动化工作流的基础,它刻画了一个核心的概念:操作人要指挥 AI 完成一个任务。
- 操作人做的事情:
- 定义任务;
- 给出约束条件;
- 给出基础材料参考(prd、structure、uiux;project_rules、docs_index)。
- AI 要做的事情:根据人的指令做事情;
- 任务有哪些:编码、文档维护。
但有些事情还不够清晰,或者说需要做取舍
- 项目内的 agent 和项目外的 agent
- Agent 的构建有轻有重,有些 agent 需要很重的资料库;有些 agent 不需要资料库,但是需要很强的任务规划能力;
- 当前我的考虑是将 prd、structure、uiux 、project_rules 的构建交给外部 agent,因为它们都需要固定资料库的支撑。
- 项目内:一个 agent 还是一堆 agent?这个问题算是核心问题,它问的其实是,人在给出一个任务之后,如何执行任务
- 方案一:操作人自己知道应该干什么,所以提前写了很多个流程,比如"文档更新流程"、"测试流程"。一个通用agnet 依据操作人给出的【任务+流程】就知道先收集什么信息,再做什么开发和更新。
- 方案二:操作人只负责给出任务,不管怎么干。这要求操作人事先需要训练一个任务编排的 agent 和一堆专业 agent。操作人给出指令之后,由任务编排 agent 完成意图解析和任务编排,监督其他 agent 完成任务。
- 方案对比:
- 工作量:第一种方案人同时也是智能路由,需要深度维护流程文档。第二种方案,agent 也需要人来维护。二者工作量其实差不多。
- 稳定性:第一种方案的稳定性比较高,每次 agent 都要按照固定流程做事情,任务执行结果好量化好溯源。第二种,agent 的自由度比较高,在任务编排和执行阶段的波动空间比较大。
- 智能性和扩展性:第一种是工作流,不太好扩展,但对于一个固定场景其实是够用的,只是较为固定的流程可能会限制模型能力的发挥。第二种方案会给 agent 指定不同的角色,他们的弹性也比较大,随着模型能力的升级 agent 的工作质量也会提高。另外,方案二是一套活系统,随时可以在 agent 列表中增加新的角色,拓展新的能力。
- 项目初始化谁来做?
- 项目初始化的主要工作就是根据项目的初始材料去构建起他材料,比如根据已有文档构建 docs_index 文档地图;
- 项目初始化和项目维护对应了两套规则,比如如果要初始化文档地图那就要知道文档地图怎么设计, 但如果只是维护,则依样画葫芦就行。这对 agent 的任务编排来说,是个比较复杂的事情,可能会让整套系统变得很重。
- 现阶段我觉得,可能还是让 agent 包揽项目的初始化和维护比较好,这样未来的拓展性比较强。
最终方案
- 操作人的工作:创建完整的文件夹和文档(包括空文档);
- Agent 分工:外部 agent+内部 agent;
- 内部 agent:一个任务编排 agent(任务规划引擎)+一群专业 agent;
- 专业 agent 的任务:任务执行(比如编程、测试等)、文档维护(包括创建和创建之后增删改)
- 任务执行:要给 agent 指定角色
- 文档创建:要告诉 agent,如果文档为空则执行初始化,初始化的要求每个文档不一样。
- Database 文档初始化规则:
- Service 文档初始化规则:
- Workflow 文档初始化规则:
- Docs_index 文档初始化规则:但最好是操作人来进行初始化
- Memory 文档初始化规则:但最好是操作人来进行初始化
- 文档维护:完成对应的任务之后要对文档进行增删改。
该方案对应的核心文档目录说明
- 前端文件夹
- 后端文件夹
- Core_documents:
- Library
- Prd:操作人填充初始内容
- Structure:操作人填充初始内容
- Uiux:操作人填充初始内容
- Service
- Workflow
- Database
- Develp_plan
- Version 1
- Version 2
- · · · · · ·
- History_record
- Record 1
- Record 2
- · · · · · ·
- Docs_index
- Project_rules:操作人填充初始内容
- Memory:操作人填充初始内容
- Test_instances:
- Version 1
- Featurexxx
- · · · · · ·
- Library
该方案对应的文档维护职责矩阵
- prd.md - 产品经理Agent,维护用户故事和产品需求,确保其清晰、无歧义。
- uiux.md - 产品经理 Agent,维护用户界面和交互流程设计。
- structure.md - 架构师Agent,维护项目的高阶技术选型和系统架构图。
- database.md - 架构师Agent,维护详细的数据库表结构、字段和关系。
- service.md - 架构师 Agent,维护所有 API端点的定义、请求和响应格式。
- workflow.md - 架构师 Agent,维护核心业务的流程图和状态机。
- develp_plan/ - 架构师 Agent,维护每一个版本的开发计划。
- frontend/ - 前端工程专家 Agent,维护所有前端代码。
- backend/ - 后端工程专家 Agent,维护所有后端代码。
- test_instances/ - 测试人员Agent,维护和执行测试用例,产出测试报告。
- project_rules.md - 项目管理员Agent,维护项目级别的编码规范、Git 流程等规则。
- docs_index.md - 项目管理员Agent,维护所有核心文档的索引和摘要,作为项目地图。
- history_record/ - 项目管理员Agent,在任务完成后,创建新的历史记录文件,记录变更。
- memory.md - 项目管理员 Agent,在任务完成后,将本次任务的核心结论或重要原则追加到记忆文档中。