claude code 多agents实践
背景
上礼拜一个做技术的朋友问我:"你们搞的这个 Claude Code 多 agent,到底是个啥?我看网上又是 agent teams 又是 workflows 的,还有人说必须上 Claude Opus 才能跑,Kimi K3 行不行?"
我想了想,这事一句话说不清楚,干脆写篇文章统一回复。
先说结论:学会多 agent 的最好方式,是亲手做一个真项目。你看十篇教程,不如跟着我把一个真实项目搭一遍。这篇文章我拿一个已经跑通了的真实案例来讲——一套"四 agent + wiki 协作"的项目初始化体系,你跟着做一遍,agent teams、workflows、ultracode 这些概念自然就明白了。
1 三个概念,一句话说清
先把术语掰扯清楚,不然后面全是糊涂账。
1.1 Agent Teams:一群 AI 分工干活
一个人干项目,需求、设计、开发、测试、上线全包,累不说,还容易顾此失彼。Agent Teams 就是把这个"一个人"拆成"一队人":
我实际项目里的配置:
- pm agent:管需求,写需求文档,评审设计是否符合需求
- developer agent:管设计和写码,写设计文档,过评审后写生产代码
- tester agent:管测试,写用例,跑测试,打回不合格代码
- releaser agent:管上线,走安全审核清单,写上线记录
这四个 agent 不是随口说说,是真的在 .claude/agents/ 下各建一个 .md 文件,写清楚职责边界。比如 tester 的边界就是"不改生产代码,测试失败只能写证据打回,不能顺手修"。
1.2 Workflows:给 AI 排好 SOP
光有分工还不够,还得有流程。Workflows 就是规定"谁先干、谁后干、怎么交接"的 SOP。
我项目里的核心流程是一条状态机:
讨论中 → 待评审 → 已批准 → 设计中 → 设计评审中 → 开发中 → 测试中 → 待上线 → 已上线
每个状态对应"下一步谁干什么":
| 状态 | 下一步动作 |
|---|---|
| 讨论中 | 主会话跟用户对齐需求 |
| 已批准 | 主会话判轨道:全轨=并行派 dev+tester,简轨=直接派 dev |
| 设计评审中 | 自动并行派 pm+tester 评审 |
| 开发中 | 等 developer 交代码 |
| 测试中 | 派 tester 跑测试套件 |
| 待上线 | 用户确认后派 releaser |
这个流程写在 wiki/workflow.md 里,是主会话和 4 个 agent 的共同契约。
1.3 Ultracode:多模型混编作战
很多人以为跑 agent teams 必须全上 Claude Opus,其实不用。Ultracode 的思路是"谁的活儿给谁"——主会话(编排器)用 Claude,子 agent 按任务类型选模型。
我实际项目里 UI 测试就指定了 Kimi K3:
tester agent 定义里写死:主会话派 UI 测试单时指定
model: claude-sonnet-kimik3,因为 Kimi K3 是多模态模型,能直读截图复核视觉细节;纯后端测试就不限定模型。
这就是 ultracode 的核心逻辑:主模型负责编排和判断,子模型按能力混编。
2 什么时候该用,什么时候别瞎折腾
不是所有人都需要上多 agent,我见过有人把"写一个 Hello World"都拆成三个 agent,纯属脱裤子放屁。
2.1 三种该用的场景
1)任务可拆解,且质量要求高
比如开发一个新功能,需求、设计、编码、测试、上线每个环节都有明确产出物,且产出物质量直接影响下游。我项目里一个 REQ 从讨论到上线,要走完 8 个状态,每个状态都有产出物:需求文档、设计文档、测试用例、结果报告、上线记录。
2)需要多角色评审,防单一视角盲区
设计文档为什么要 pm+tester 双评审?因为 pm 只看"是否符合需求意图",tester 只看"可测性+边界覆盖"。一个人看容易漏,两个人交叉看才能兜住。
3)有标准流程,且需要留痕追溯
上线这事不能马虎。我项目里 releaser 必须走 deploy skill 的安全审核清单:密钥、日志泄密、注入、存储写路径、依赖、文档同步,六项逐项过,缺一项就打回。这个流程不标准化,早晚出事故。
2.2 三种不该用的误区
1)任务太简单
改个错别字、调个样式,直接干就完了,走全流程纯属浪费。所以我项目里有"简轨"机制:单模块小改、bug 修复、配置文档类改动,跳过设计文档和设计评审,直接进开发。简轨只豁免设计环节,测试和上线审核永不豁免。
2)上下文太短,信息密度低
一个 50 行脚本能解决的事,拆成 agent 反而增加沟通成本。agent 之间靠 wiki 文件交接,每个交接都有读写开销。
3)成本敏感且非关键路径
多 agent 意味着多轮 LLM 调用。我项目里一个全轨 REQ 走完,pm、dev、tester、releaser 加起来十几轮调用。如果是非核心功能,或者预算紧张,直接单 agent 干就完了。
3 实战项目:四 agent + wiki 协作体系
下面讲真东西。这是我一个真实项目里跑通的体系,你跟着做一遍就明白多 agent 怎么玩了。
3.1 项目背景与需求拆解
这个项目要解决什么问题?一句话:让 Claude Code 在任何新项目里,按手册一步步搭出"主会话编排 + 四 agent + wiki 驱动"的协作体系。
需求拆解成 8 步:
1)建目录骨架:wiki/、logs/、.claude/agents/、.claude/skills/
2)写 4 个 agent 定义:pm、developer、tester、releaser
3)写协作 SOP:wiki/workflow.md
4)写文档骨架 + 模板:readme、四份模板、看板、经验汇总
5)写 skills + 脚本 + settings 改造
6)写项目级 CLAUDE.md
7)按项目扩展(全新项目 vs 已有项目两条路径)
8)验收:跑脚本 + 模拟一个 REQ 走通全流程
前 6 步是机械搭建,第 7 步才需要动脑子——读新项目实际代码,把现状逆写进 wiki。
3.2 怎么设计 agent 分工
四个 agent 的定义文件,每份都有 frontmatter 和职责边界。以 developer 为例,关键设计:
---
name: developer
description: 开发 agent。根据已批准需求先写设计文档并接受评审,评审通过后写生产代码。不跳过设计评审直接写代码——除非派单注明「简轨」。
tools: Read, Write, Edit, Glob, Grep, Bash
---
注意两个设计点:
- description 里写明例外:"除非派单注明简轨"。这是给主会话看的,告诉它什么时候可以跳设计。
- tools 明确限制:developer 有 Bash 能跑测试,但没有 WebFetch,防止它跑偏去查外部资料。
职责按严格顺序写死:
1. 设计(全轨):读需求 → 写设计文档 → 看板翻「设计评审中」→ 停下来等评审
2. 修订:评审打回 → 按意见修订 → 等复审
3. 开发:评审通过 → 写生产代码 → 自测 → 看板翻「测试中」
4. 经验沉淀:上线后回填设计文档 §8 + experience.md
边界条款是防越权的第一道闸:
- 评审通过前不写生产代码(唯一例外是简轨)
- 不改 wiki/pm/ 的需求内容、不写 wiki/tests/、不写 wiki/release/
- 发现需求本身有问题 → 打回给主会话,不擅自扩大或缩小范围
3.3 workflow 怎么排
workflow 的核心是状态机,但有两个关键设计值得单独说。
第一,简轨与全轨的分叉。
不是所有需求都值得走全流程。主会话在「已批准」时先判轨道:
| 走简轨 | 走全轨 |
|---|---|
| 单模块小改、影响面清晰 | 跨模块/跨系统改动 |
| bug 级修复 | 新增外部接口/供应商接入 |
| 纯脚本、配置、依赖升级 | 存储结构/权限/安全边界变更 |
| 文档型/流程型改动 | 数据口径、统计逻辑变更 |
| —— | 任何「拿不准」的情况(拿不准 = 全轨) |
这个设计解决了"流程太重"的痛点。我项目里 60% 的 REQ 走简轨,省掉了设计文档和两轮评审,但测试和上线审核一个不少。
第二,讨论区与经验沉淀。
需求讨论期的草稿放 wiki/discuss/,结论一出即流向正式文档或删除,执行完不留痕。这是防止"草稿堆积"的机制。
经验沉淀分两级:
- 每个 REQ 上线后,developer 回填设计文档第 8 节「经验与教训」
- 可复用的一行经验追加到
wiki/dev/experience.md,供改代码前快速检索
这个设计让团队知识不随项目结束而流失。
说到经验沉淀,我想起 2018 年做摄像机项目时,团队里有个老工程师离职,带走了红外遥控协议的所有踩坑记录,新接手的兄弟又重新踩了一遍,光 38kHz 载波频率就调了三天。从那以后我就明白:经验不沉淀,等于团队在白干。这套 wiki + experience.md 的机制,就是给 AI 团队也装上"经验不落地"的保险。
3.4 跑出来的效果与踩过的坑
这套体系在我项目里跑了 20+ 个 REQ,效果:
- 需求平均交付周期从 3 天降到 1.5 天(简轨的功劳)
- 上线事故率降为 0(releaser 安全审核清单的功劳)
- 文档与代码漂移率大幅降低(my-check skill + freshness 脚本的功劳)
踩过的坑也不少:
1)agent 越权改文件
边界条款靠指令约束,无法强制封锁。有一次 developer 顺手改了 tester 的用例文件,被 code review 抓到。后来加了条款:发现越权行为应纠正并回报用户,严重时在 agent 定义里补针对性条款。
2)UI 测试截图存证难
脚本测试能验证接口契约,但页面渲染对不对,脚本说了不算。后来给 tester 加了 browser-test skill,用 headless Chrome 实测并截图。Chrome 二进制固定在 tests/third_party/chrome/,版本与 chromedriver 配套。
3)多模型混编的上下文一致性
Kimi K3 和 Claude 混编时,发现 Kimi 对某些 prompt 结构的理解有偏差。解决办法:主会话派单时,给 Kimi 的 prompt 更结构化,关键信息用列表而非段落。
4 模型选择:Kimi K3、GLM 5.3 能不能用?
这是最多人问的问题。我特意去查了最新官方文档(2026-09-06 时点),给你列个明白账。
4.1 当前可用模型状态
| 模型 | 上下文窗口 | 特点 | 适用场景 |
|---|---|---|---|
| Claude Opus 4.x | 200K | 编排能力强,判断准 | 主会话(编排器) |
| Kimi K3 | 1M | 多模态,视觉理解强 | UI 测试、长上下文任务 |
| Kimi K2.7 Code | 256K | 编程专用,高速变体可选 | 开发任务 |
| GLM 5.3 | 1M | 推理强,Code Bench 超 Opus 4.8 | 开发、测试 |
| GLM 5.2 | 1M | 基础模型稳定 | 备用 |
数据来源
Kimi 平台文档:platform.kimi.ai/docs(2026-09-06 时点)
Z.ai 文档:docs.z.ai/guides/llm/(2026-09-06 时点)
GLM 5.3 在 Z.ai Code Bench 达 34.5%,超过 Claude Opus 4.8,低于 Claude Fable 5
4.2 怎么混编:主 agent 用 Claude,子 agent 按能力选
我的配置原则:
1)主会话(编排器)用 Claude Opus
编排器要判断状态机流转、拆解任务、裁决评审分歧,这些都需要强推理能力。Claude 在这方面最稳。
2)子 agent 按任务类型选
- developer:编码任务可用 GLM 5.3 或 Kimi K2.7 Code,实测 GLM 5.3 在 Terminal-Bench 3.0 达 28.3,比 GLM 5.2 的 4.6 提升 6 倍
- tester:UI 测试指定 Kimi K3(多模态,能看截图);纯后端测试不限定
- pm/releaser:文档和审核任务,Claude Sonnet 即可
3)混编注意事项
- 不同模型对 prompt 结构的理解有差异,派单 prompt 要结构化
- 上下文窗口要匹配任务长度,1M 窗口的模型适合长文档分析
- 价格差异大,高频调用的子 agent 可用性价比更高的模型
4.3 一个实际配置示例
我项目里 .claude/settings.json 的权限白名单按技术栈配,Python 项目加 Bash(python3:*)、Bash(pytest:*),Node 项目加 Bash(npm:*)。这是减少权限询问打断的关键。
PostToolUse 钩子注册 remind-doc-sync.sh,代码文件被编辑后自动提醒同步 wiki。这是防文档漂移的兜底机制。
==多 agent 不挑模型,挑的是分工==
5 保姆级上手步骤
废话不多说,跟着做。
5.1 准备工作
1)安装 Claude Code(略)
2)准备一个 git 仓库(新项目 git init,已有项目直接进)
3)在项目根目录启动 Claude Code
5.2 初始化四 agent 体系
把整个初始化手册交给 Claude Code,说"按这份手册初始化项目协作体系"。手册里包含每一步要创建的文件的完整内容,全部去业务化。
这份手册我沉淀成了模板,放在项目 wiki 的 design 目录下,已去业务化。你拿去就能用,占位符用
<尖括号>标注,替换成你项目的真实信息即可。手册核心内容我在第 3 节已经拆解过了,跟着做就行。
如果你只要最小可用版本,手动建这几个文件:
mkdir -p wiki/{discuss,pm,dev,tests,release,templates} \
.claude/agents .claude/skills
然后逐个创建:
.claude/agents/pm.md.claude/agents/developer.md.claude/agents/tester.md.claude/agents/releaser.mdwiki/workflow.mdwiki/pm/to-do.md
每个文件的内容按我第 3 节讲的思路写,关键是职责边界和状态机。
5.3 跑通第一个 REQ
模拟一个需求走全流程:
1)在 wiki/discuss/ 建草稿,跟主会话讨论
2)派 pm 升格为正式需求文档
3)主会话判轨道(简单需求走简轨)
4)派 developer 开发
5)派 tester 测试
6)派 releaser 上线
7)developer 回填经验
跑通后删掉模拟文件,看板清零。
5.4 常见问题排查
| 问题 | 排查方向 |
|---|---|
| agent 不干活 | 看板状态对不对?状态字段驱动派单 |
| agent 越权改文件 | agent 定义里的边界条款是否明确? |
| 文档与代码漂移 | my-check skill 是否调用?freshness 脚本是否定期跑? |
| 模型调用失败 | API key 配置是否正确?模型名称是否最新? |
最后
回到开头那句话:学会多 agent 的最好方式,是亲手做一个真项目。
这篇文章给你的不是理论,是一套我跑通了的完整方案。你拿去初始化一个新项目,或者改造一个已有项目,跟着状态机走一遍,agent teams、workflows、ultracode 这些概念就全活了。
别光看,动手做。做完一个 REQ,你就明白我在说什么了。
如果你在做过程中卡住了,或者跑出了更好的经验,欢迎回来交流。这套体系不是终点,是起点——你完全可以根据项目特点加 agent、改状态机、换模型组合。工具是死的,用法是活的。
-
whisper.cpp安装
1. 背景 whisper是OpenAI官方发布的一款开源语音识别大模型,使用python实现。可以将语音信息转化为文本信息。其实也叫做ASR"自动语音识别”(Automatic Speech Rec...
2025/03/02
-
mem0-大模型的长期记忆
1. 背景 最近在使用虾哥开源的小智机器人软件中,看到了mem0的软件方案,好奇之下搜索了一下,发现大有来头。在OpenAI 投资了 370 万美金给一个叫 Dot 的应用,这个应用背后的核心技术是「...
2025/04/01
-
whisper.cpp测试与使用
whipser.cpp安装完毕后,加载了多个大模型,分别进行测试。 测试项目 下载模型命令: bash sh ./models/download-ggml-model.sh base 测试命令: 转化...
2025/04/21
-
whisper.cpp 关键词纠错
粗糙转写会在后续放大错误,Whisper.cpp支持自有词典场景关键词拼写纠偏。指令如下: 查看文档:https://www.openhab.org/addons/voice/whisperstt/ ...
2025/04/21
apostle9891
暂无评论