十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

AI Agent团队协作实战:基于AGENTS.md与5分支Git工作流的开发框架

AI Agent团队协作实战:基于AGENTS.md与5分支Git工作流的开发框架 1. 项目概述一次真实的AI团队协作实验上个月我们一个10人的小团队进行了一场为期30天的、完全基于AI Agent的协作开发实验。听起来有点科幻对吧但这就是我们正在经历的现实。实验的核心目标很简单验证在缺乏传统“项目经理”和“架构师”角色的情况下一群由AI驱动的“数字员工”能否通过一套严谨的协作规则自主、高效地完成一个中等复杂度的软件项目。实验的成果远超预期。我们不仅成功交付了项目更重要的是我们沉淀出了一套可复现的、基于文本的AI协作框架。这套框架的核心就是三个看似简单却威力巨大的工具组合AGENTS.mdAI角色与行为宪法、5分支Git工作流结构化协作流程、以及Agent角色矩阵职责与能力映射。整个过程我们像在指挥一支由代码和提示词组成的交响乐团而这篇复盘就是我们的乐谱和指挥笔记。无论你是对AI协作充满好奇的开发者还是正在为团队效率发愁的技术负责人这篇文章都将为你提供一个从零到一的完整视角。我会详细拆解我们如何配置AGENTS.md、设计Git分支策略、定义Agent角色并附上我们实际使用的自动化脚本。这不是纸上谈兵的理论而是我们踩了无数坑、熬了不止一个夜后总结出的实战手册。2. 核心协作框架设计为什么是这三板斧在启动实验前我们面临的首要问题是如何让多个AI我们主要使用了Claude、GPT-4和DeepSeek像一支真正的团队一样工作而不是各自为战、产出混乱的代码和文档经过几轮预演我们确定了以“规则即代码流程即文档”为核心的设计思路并最终选定了三个支柱。2.1 AGENTS.md团队的“数字宪法”AGENTS.md不是一个简单的配置文件它是整个AI团队的“宪法”和“集体记忆”。它的核心作用有两个统一上下文和规范行为。为什么需要它当你同时与多个AI模型交互时最大的挑战是“上下文隔离”。你告诉Claude的设计思路GPT-4并不知道你与DeepSeek讨论的API细节不会自动同步给其他模型。AGENTS.md作为一个中心化的、版本可控的文本文件解决了这个问题。每个AI在开始工作前都必须“阅读”并理解这份文件确保大家在同一认知基础上起步。我们的AGENTS.md结构我们将其分为几个关键部分每一部分都像法律条文一样清晰项目愿景与边界用一段话明确项目要解决的核心问题、不做什么这比“要做什么”更重要以及成功的定义。这确保了所有Agent的努力方向一致。技术栈与架构约束明确规定使用的编程语言、框架版本、数据库选型、代码风格如PEP 8、Airbnb JavaScript Style Guide、以及关键的架构决策如采用RESTful API还是GraphQL。这避免了技术栈的随意扩散和架构上的分歧。协作协议这是核心中的核心。我们定义了通信格式任何需要其他Agent知晓的决策、发现的问题都必须以特定的Markdown格式如## DECISION:## ISSUE:写入AGENTS.md的“日志”部分。决策机制当出现技术分歧时由哪个角色的Agent如“首席架构师”拥有裁决权或者需要发起“投票”即将问题抛给人类或另一个专门的“仲裁Agent”。知识沉淀规范所有验证过的解决方案、踩过的坑都必须以## KNOWLEDGE:的格式归档形成团队的知识库。实操心得AGENTS.md的撰写本身就是一个迭代过程。不要试图在第一版就写完美。我们最初只写了三行然后在协作中不断补充。关键是要立刻开始并规定所有Agent都有权且必须提议修改它。我们甚至设置了一个“宪法守护者”Agent专门负责审核对AGENTS.md的修改提议确保变更的合理性和一致性。2.2 5分支Git工作流结构化的异步流水线传统的Gitflow对于纯AI团队来说过于复杂而简单的GitHub Flow又缺乏必要的结构来管理多Agent的并行贡献。我们借鉴了CI/CD和特性标志Feature Flag的思想设计了一套5分支工作流。分支结构及其设计逻辑main神圣不可变的发布分支。只有经过完整测试、审核的代码才能合并至此。它始终代表可部署的生产就绪状态。develop集成与预发布分支。所有完成的功能在此合并进行集成测试。它是main的缓冲区。feature/*功能开发分支。每个独立的功能或用户故事User Story都在自己的feature/分支上开发。这是AI Agent的主要工作场所。agent/*这是我们工作流的关键创新。每个活跃的AI Agent都拥有一个以自己命名的长期分支例如agent/claude-architectagent/gpt4-frontend。Agent的所有草稿代码、实验性更改都先提交到自己的分支。当需要开发一个具体功能时Agent会从自己的分支切出feature/分支完成后将feature/合并回自己的agent/分支再向develop发起合并请求Pull Request。这相当于每个Agent都有一个独立的“工作沙盒”避免了交叉污染。hotfix/*用于紧急修复main分支上的Bug。工作流程示例假设“前端工程师”Agent在agent/gpt4-frontend上需要开发一个登录表单。步骤一它从自己的agent/gpt4-frontend分支创建新分支feature/user-login。步骤二在feature/user-login上完成开发并提交符合Conventional Commits规范的 commit。步骤三将feature/user-login合并回agent/gpt4-frontend。步骤四从agent/gpt4-frontend向develop分支发起一个Pull Request。步骤五由“测试工程师”Agent或人类进行代码审查审核通过后合并到develop。注意事项一定要为每个Agent配置独立的Git身份user.name和user.email。这能让提交历史清晰可追溯例如git log --oneline --authorclaude-architect可以快速查看架构师的所有贡献。同时强制使用Conventional Commits如feat(auth): add user login form component至关重要这能让后续的自动化生成变更日志CHANGELOG和语义化版本SemVer成为可能。2.3 Agent角色矩阵清晰定义职责与接口给AI一个模糊的“开发者”角色是行不通的。你必须像定义微服务一样明确每个Agent的职责边界、输入和输出。我们构建了一个角色矩阵表格作为AGENTS.md的一部分。角色代号核心职责主要工作产出依赖的上游输入服务的下游对象首选AI模型架构师 (Architect)系统设计、技术选型、API定义、数据库Schema设计架构设计文档、openapi.yaml、ER图、关键接口定义项目愿景、非功能性需求所有开发AgentClaude-3.5-Sonnet后端工程师 (Backend)实现业务逻辑、数据库操作、API端点功能代码、单元测试、API集成测试用例架构师提供的API定义、需求说明前端工程师、测试工程师GPT-4前端工程师 (Frontend)实现用户界面、交互逻辑、调用后端API组件代码、页面路由、状态管理、E2E测试用例产品原型、API文档测试工程师、最终用户GPT-4测试工程师 (QA)制定测试策略、编写自动化测试、执行测试、报告Bug测试计划、自动化测试脚本、Bug报告需求文档、开发完成的代码所有开发Agent、项目经理Claude-3-Haiku运维工程师 (DevOps)配置CI/CD流水线、管理部署环境、监控Dockerfile,.github/workflows/ci.yml, 部署脚本代码仓库、构建需求整个团队、生产环境DeepSeek-Coder这个矩阵的威力在于消除歧义当后端工程师Agent收到一个任务时它清楚地知道该找架构师要API定义完成后交给测试工程师验证。简化提示词你不再需要给每个Agent写长篇大论的上下文。给后端工程师的指令可以简化为“请根据AGENTS.md中‘用户管理模块’的API定义实现POST /api/users端点。你的角色是后端工程师请遵循矩阵中的职责。”便于调度你可以根据任务类型精准地调用最合适的Agent就像在Kubernetes里调度Pod一样。3. 实操全流程从零启动一个AI协作项目理论讲完了我们来看一个具体的启动示例开发一个简单的“任务管理看板”Task Board应用。3.1 第1步初始化仓库与AGENTS.md首先在GitHub或GitLab上创建一个新仓库。克隆到本地后第一件事不是写代码而是创建并编写AGENTS.md。# 项目宪法任务管理看板 (Task Board) ## 愿景与边界 构建一个极简、高效的个人与团队任务管理Web应用。核心价值是“快速记录、清晰归类、轻松协作”。 **我们不做**复杂的甘特图、时间追踪、移动端原生应用优先响应式Web。 ## 技术栈 * **后端**Python 3.11 FastAPI * **前端**React 18 TypeScript Vite Tailwind CSS * **数据库**PostgreSQL (开发环境可使用SQLite) * **代码风格**后端Black/isort前端Prettier/ESLint配置已共享 ## 协作协议 1. **所有重大决策**必须在下方 ## 日志 区域记录格式为 ## DECISION: [标题]并简述理由。 2. **遇到阻塞性问题**格式为 ## ISSUE: [标题]描述现象、已尝试方案、寻求哪类帮助。 3. **沉淀知识**格式为 ## KNOWLEDGE: [标题]记录解决方案、最佳实践、踩坑记录。 ## 角色矩阵 此处插入上文中的角色矩阵表格 ## 日志 * ## DECISION: 项目初始化 - 决定采用上述技术栈因其生态成熟、开发效率高符合“极简高效”愿景。 (2023-10-27 by Human)将这个文件提交并推送到main分支。这是你们团队的“创世提交”。3.2 第2步配置Git与自动化脚本为每个计划使用的AI Agent在本地或服务器上配置独立的Git工作目录和身份。我们编写了一个Bash脚本来自动化部分流程。setup_agent_env.sh#!/bin/bash # 设置AI Agent的Git环境 AGENT_NAME$1 AGENT_EMAIL$2 if [ -z $AGENT_NAME ] || [ -z $AGENT_EMAIL ]; then echo Usage: $0 agent_name agent_email exit 1 fi # 创建Agent专属目录 mkdir -p ~/ai-team/$AGENT_NAME cd ~/ai-team/$AGENT_NAME # 克隆仓库如果尚未克隆 if [ ! -d .git ]; then git clone 你的仓库地址 . fi # 配置该目录下的Git身份 git config user.name $AGENT_NAME git config user.email $AGENT_EMAIL # 创建并切换到该Agent的长期分支 git checkout -b agent/$AGENT_NAME 2/dev/null || git checkout agent/$AGENT_NAME echo 环境设置完成 for $AGENT_NAME. Workdir: $(pwd)运行示例./setup_agent_env.sh claude-architect archai-team.example.comagent_workflow.sh简化版核心函数 这个脚本封装了Agent开始工作、创建功能分支、提交代码、发起PR的常用命令。#!/bin/bash # Agent工作流辅助脚本 start_feature() { FEATURE_NAME$1 CURRENT_AGENT_BRANCH$(git branch --show-current) # 假设当前在 agent/xxx 分支 # 从当前Agent分支创建功能分支 git checkout -b feature/$FEATURE_NAME echo 切换到功能分支 feature/$FEATURE_NAME } commit_work() { COMMIT_MSG$1 # 使用Conventional Commits格式 git add . git commit -m $COMMIT_MSG echo 提交完成: $COMMIT_MSG } merge_to_agent_branch() { FEATURE_NAME$1 AGENT_BRANCH$2 git checkout $AGENT_BRANCH git merge --no-ff feature/$FEATURE_NAME -m merge feature/$FEATURE_NAME into $AGENT_BRANCH git branch -d feature/$FEATURE_NAME echo 功能分支已合并并删除 } # 注意实际PR创建需通过GitHub CLI (gh) 或 GitLab API实现此处为示意 echo 请手动将 $AGENT_BRANCH 推送并到Git平台创建指向develop的PR。3.3 第3步启动协作循环现在你可以开始调度你的AI团队了。流程如下人类你作为“产品负责人”在项目的Issue跟踪器如GitHub Issues中创建一个新的Issue描述“作为一个用户我希望能够创建新的任务并为其设置标题、描述和状态待办/进行中/完成”。召唤“架构师”Agent将Issue链接和AGENTS.md内容一起发给Claude扮演架构师。提示词可以是“你是本项目的架构师请针对Issue #1 的需求设计‘任务’Task的数据模型和相关的RESTful API端点。请将你的设计草案更新到AGENTS.md的‘日志’部分并使用## DECISION:的格式。”架构师产出Claude会分析需求在AGENTS.md中追加类似内容## DECISION: 任务(Task)数据模型与API设计 * 数据模型Task { id: UUID, title: string, description: text, status: enum(todo,doing,done), created_at: datetime } * API端点 * GET /api/tasks - 列表查询支持按状态过滤 * POST /api/tasks - 创建任务 * GET /api/tasks/{id} - 获取详情 * PUT /api/tasks/{id} - 更新任务 * DELETE /api/tasks/{id} - 删除任务 * 理由该设计满足最小化MVP需求状态枚举值简单明确为后续扩展如分配责任人、截止日期预留字段空间。然后架构师会创建openapi.yaml文件或类似的详细API文档提交到自己的agent/claude-architect分支并推送到远程。调度“后端工程师”Agent将更新后的AGENTS.md包含架构决策和API文档链接发给GPT-4扮演后端工程师。提示词“你是后端工程师请根据AGENTS.md中最新关于任务API的决策使用FastAPI实现POST /api/tasks和GET /api/tasks这两个端点。请遵循我们的代码规范并编写基本的单元测试。完成后请运行start_feature task-crud-api开始你的工作。”后端工程师工作GPT-4会在自己的环境中运行脚本创建feature/task-crud-api分支编写FastAPI代码、SQLAlchemy模型、Pytest测试并使用commit_work(feat(api): implement task creation and listing endpoints)提交。完成后它将这个功能分支合并回自己的agent/gpt4-backend分支。发起集成后端工程师Agent或由人类操作将其agent/gpt4-backend分支推送到远程并创建一个指向develop分支的Pull Request。在PR描述中它会测试工程师Agent。“测试工程师”Agent介入Claude Haiku扮演测试工程师会收到通知审查PR中的代码并运行CI流水线如果已配置。它会编写或补充集成测试确保API按预期工作。只有测试通过后它才会批准合并。循环往复前端、运维等角色以类似方式介入。整个过程中所有Agent都通过更新和查阅AGENTS.md来保持同步通过结构化的Git分支来管理代码变更。4. 踩坑实录与关键问题排查30天的实验并非一帆风顺以下是几个最具代表性的问题及我们的解决方案。4.1 问题一Agent的“上下文失忆”与信息不一致现象前端Agent基于一个旧的API版本开发导致联调失败。或者架构师做了一个决策但其他Agent似乎没看到。根因Agent在单次会话中记忆有限且没有强制机制让其每次工作时都重新读取最新的AGENTS.md。解决方案强制同步我们在给每个Agent的提示词开头都加入一条强制指令“在开始任何工作前你必须首先从仓库的main分支拉取最新的AGENTS.md文件并仔细阅读‘日志’部分的最后5条记录。” 这可以通过脚本自动化实现例如在start_feature脚本中自动执行git pull origin main。变更广播我们建立了一个简单的“发布-订阅”通知机制。任何Agent在AGENTS.md中记录## DECISION或## ISSUE后必须在一个指定的频道我们用了Slack的Webhook你也可以用钉钉、飞书发送一条简短通知附上变更链接。其他Agent的启动脚本会监听这个频道。版本化决策对于重要的架构决策我们不再仅仅写在日志里而是创建docs/decisions/0001-task-api-design.md这样的决策记录Architecture Decision Record, ADR文件并将其纳入版本控制。这比纯文本日志更结构化也更容易被引用。4.2 问题二Git合并冲突与代码风格混乱现象多个Agent同时修改了同一个文件的相邻区域导致合并冲突。或者代码格式千奇百怪。根因缺乏预提交pre-commit检查和清晰的代码所有权划分。解决方案自动化代码格式化在项目根目录配置.pre-commit-config.yaml使用black,isort,prettier,eslint等工具。确保在每次提交前自动格式化代码。这是“铁律”必须强制执行。清晰的代码所有权在AGENTS.md中粗略定义模块负责人。例如“/backend/api/tasks.py及其相关测试文件由后端工程师主要维护”。当其他Agent需要修改这些文件时必须在提交信息或PR描述中主要维护者对应的Agent角色。小而频的提交鼓励Agent每完成一个逻辑完整的小功能就提交一次而不是攒一个大提交。这减少了冲突的范围和解决难度。我们的脚本鼓励使用commit_work功能。冲突解决策略我们规定合并冲突的解决优先级是人类 架构师 模块主要维护者Agent。对于简单的格式冲突可以由负责的Agent自行解决对于逻辑冲突必须升级到人类或架构师仲裁并将解决方案作为## KNOWLEDGE记录。4.3 问题三CI/CD流水线的“最后一公里”问题现象代码在本地测试通过但合并到develop后CI流水线失败如类型检查不通过、测试覆盖率不足。根因Agent的本地环境与CI环境存在细微差异或者Agent没有运行完整的本地检查套件。解决方案本地模拟CI我们在每个Agent的工作目录中放置了一个scripts/local-ci.sh脚本其执行步骤与GitHub Actions/GitLab CI的流程完全一致安装依赖、格式化检查、静态分析、单元测试、集成测试。要求Agent在发起PR前必须成功运行此脚本。精细化测试分类将测试分为单元测试快和集成测试慢。CI流水线中每次推送都运行单元测试只有向develop或main分支的PR才运行完整的集成测试套件。这加快了反馈循环。失败快速反馈配置CI工具一旦流水线失败立即通过通知渠道提交代码的Agent角色和测试工程师Agent。错误日志要清晰最好能链接到具体的代码行。4.4 问题四Agent的“创造性偏差”与需求蔓延现象Agent特别是能力较强的模型有时会“过度设计”或添加需求中没有明确要求的功能导致项目范围膨胀。根因提示词不够精确或者Agent在试图“理解”需求时进行了过多的外推。解决方案需求“合同化”给Agent的需求描述要像写技术合同一样精确。使用“给定-当-那么”Given-When-Then的格式描述用户故事。例如“给定用户已登录并位于任务列表页当用户点击‘新建任务’按钮并填写标题和描述后点击提交那么系统应创建一个状态为‘待办’的新任务并刷新列表显示该任务。”明确“不做”清单在AGENTS.md的“愿景与边界”部分反复强调“我们不做”的事情。在给具体Agent分配任务时可以再次重申“请严格按API文档实现不要添加文档中未定义的额外字段或端点。”代码审查聚焦测试工程师Agent在审查时第一要务就是核对实现是否与需求合同、API文档严格一致。任何偏差都必须提出质疑。5. 效能评估与未来展望经过30天的运行我们对这套模式的效能做了定量和定性评估。定量数据对比传统2人小团队初期开发类似项目代码产出速度平均每日有效提交次数提升约40%。这得益于多个Agent的并行工作能力。Bug密度在开发阶段由CI流水线和测试Agent发现的Bug数量与传统模式相当但Bug的严重程度普遍较低多是边界条件或配置问题因为代码规范被严格执行。文档完整性由于AGENTS.md和决策记录被强制更新项目文档的实时性和完整性远超传统项目初期。定性感受人类角色转变我从一个“写代码者”转变为一个“系统设计者”、“规则制定者”和“流程调度员”。我的时间更多地花在定义清晰的边界、设计稳健的流程和解决Agent间的仲裁问题上。可追溯性极强Git提交历史清晰得益于Conventional Commits和分支策略所有决策和讨论都有文本记录AGENTS.md项目的一切变化都有迹可循。7x24小时潜力理论上只要计算资源允许这支AI团队可以不同断工作。我们确实尝试过在夜间让Agent运行自动化测试和代码生成任务效果显著。个人体会与后续优化方向这次实验最深的体会是AI协作的成败90%取决于规则与流程的设计而非AI模型本身的能力。一个混乱的流程会让最强的模型产出垃圾而一个严谨的框架能让中等模型协同创造出令人惊喜的结果。对于想尝试的团队我的建议是从小处着手。不要一开始就规划一个宏大的项目。可以先从一个非常具体的、边界清晰的小功能开始比如“为现有项目添加一个用户反馈表单”。用这个微型项目来跑通你的AGENTS.md、双分支Git流程和两个Agent如一个前端、一个后端的协作。在这个过程中你会迅速发现流程中的漏洞并迭代出适合你自己团队的规则。未来我们计划将更多的“调度”和“仲裁”工作也自动化。例如开发一个简单的“调度员”Agent它监听GitHub Issues根据Issue标签自动分配任务给合适的执行Agent并监控任务状态。我们也在探索将AGENTS.md的部分内容结构化如用YAML定义角色矩阵以便工具能更好地解析和利用。最后附上我们实验中用到的脚本和配置模板的仓库链接此处应为虚构链接实际请托管在您的Git平台。希望这份详尽的复盘能为你打开一扇通往未来人机协同开发模式的大门。记住工具是死的人是活的。这套框架不是金科玉律而是一个起点请务必根据你的实际场景进行裁剪和优化。
返回列表