Claude Code 从单窗口对话切到多线程协作,中间隔着的不是一条命令,而是一整套心智模型的切换。我最初用它写代码时,习惯性地把它当成一个"更聪明的补全工具"——开一个终端,问一句,等它答一句,然后手动把结果搬到编辑器里。直到有一次要同时处理三个模块的重构,我一边改 A 模块的接口,一边等 B 模块的测试结果,还要盯着 C 模块的文档生成,来回切窗口切到手指发酸,才意识到:这玩意儿其实支持多线程玩法,只是我一直没用对。
Agent View 和 Agent Teams 是 Claude Code 里两个容易被混淆的概念。前者解决的是"我怎么同时看多个任务的状态",后者解决的是"我怎么让多个 Agent 分工协作"。很多人第一次听到这两个词,会以为它们是同一个功能的不同叫法,或者以为 Agent Teams 就是"多开几个窗口"。实际用下来,两者的定位、操作方式和适用场景差别很大。这篇内容就围绕这两个机制展开,把它们的边界、配置方式、协作逻辑和实战中的坑讲清楚,最后用一个 Polter 的实战案例串起来,让你看完能直接上手。
1. 先把多线程这件事的边界划清楚
1.1 Claude Code 的"多线程"到底指什么
在传统编程语境里,多线程指的是同一个进程内并发执行多个任务流,共享内存空间,需要处理锁和竞态。Claude Code 的多线程不是这个层面的概念。它更像是一个任务调度层:你可以在同一个工作目录下启动多个 Agent 实例,每个实例有独立的上下文窗口、独立的工具调用权限、独立的任务队列,它们之间通过文件系统或显式的消息传递来协作。
这个区别很关键。如果你带着"多线程编程"的预期去用,会不自觉地想找"锁"和"同步原语",但 Claude Code 的并发模型更接近"多进程 + 消息队列"。每个 Agent 是一个独立的执行单元,它们不共享内存,所以不存在传统意义上的竞态问题,但会存在文件写入冲突、任务重复执行、上下文不一致这些分布式系统里常见的问题。
我刚开始用的时候踩过一个坑:同时让两个 Agent 去改同一个配置文件,结果一个 Agent 写入了新字段,另一个 Agent 基于旧版本覆盖了回去,新字段直接丢了。这不是 bug,是我没理解它的并发模型——它不会帮你做文件锁,你得自己规划好任务边界。
1.2 Agent View 和 Agent Teams 的定位差异
Agent View 的核心是"可见性"。它让你在一个统一的界面里看到当前所有活跃 Agent 的状态:谁在跑、跑到哪一步、用了多少 token、有没有报错。它不改变 Agent 的执行逻辑,只是把原本分散在各个终端窗口里的信息聚合起来。你可以把它理解成一个"任务监控面板"。
Agent Teams 的核心是"协作性"。它定义了一组 Agent 之间的角色分工和通信规则。比如你可以定义一个"架构师 Agent"负责拆解任务,一个"实现 Agent"负责写代码,一个"审查 Agent"负责检查质量,它们之间通过共享的任务列表和消息通道来协调。Agent Teams 改变的是 Agent 的组织方式,而不只是展示方式。
两者的关系可以这样理解:Agent Teams 是"怎么组队干活",Agent View 是"怎么看到队伍干得怎么样"。你可以只用 Agent View 不开 Teams,那就是单打独斗但能看到全局;也可以只用 Teams 不开 View,那就是组队干活但状态分散;两个一起用,才是完整的多人协作体验。
1.3 什么场景下值得开多线程
不是所有任务都适合多线程。我总结下来,满足以下条件之一时,多线程的收益才明显:
- 任务之间耦合度低:比如同时改三个互不依赖的模块,或者一边写代码一边生成文档。
- 任务有明显的流水线特征:比如"分析需求 → 设计方案 → 实现 → 测试"这种串行流程,可以用不同 Agent 接力。
- 需要并行探索多个方案:比如让两个 Agent 分别用不同思路解决同一个问题,然后对比结果。
- 单个任务耗时很长且中间有等待:比如跑一个大型测试套件,等待期间可以让另一个 Agent 处理别的事。
反过来,如果任务本身很小、耦合度很高、或者需要频繁共享中间状态,开多线程反而会增加协调成本。我见过有人为了"显得专业"硬开三个 Agent 去改一个函数,结果三个 Agent 互相覆盖,最后还得手动合并,纯属给自己找麻烦。
2. Agent View 的实操:从单窗口到全局监控
2.1 启动 Agent View 的正确姿势
Agent View 的入口不在主对话界面里,而是在启动参数或配置文件里。我常用的方式是在项目根目录下创建一个.claude/settings.json,在里面配置 Agent View 相关的选项。一个典型的配置长这样:
{ "agentView": { "enabled": true, "refreshInterval": 2000, "maxAgents": 8, "showTokenUsage": true, "showToolCalls": true } }refreshInterval控制面板刷新频率,单位是毫秒。我试过设成 500,结果面板刷新太频繁,终端输出一直在跳,反而看不清;设成 5000 又太慢,Agent 报错了要等好几秒才显示。2000 到 3000 之间是比较舒服的区间。
maxAgents是同时显示的 Agent 数量上限。这个值不要设太大,因为每个 Agent 都会占用一个上下文窗口,token 消耗是线性增长的。我一般设 4 到 6,超过这个数,协调成本就超过并行收益了。
注意:Agent View 的配置项在不同版本里可能有差异,建议先用
claude config list看一下当前版本支持哪些字段,不要直接照搬网上的配置。
2.2 面板里每个字段的含义
Agent View 打开后,你会看到一个类似任务管理器的界面。每一行代表一个 Agent,列包含:
| 字段 | 含义 | 关注点 |
|---|---|---|
| Agent ID | 实例标识 | 用于在命令里指定目标 Agent |
| Status | 运行状态 | running / idle / error / done |
| Task | 当前任务描述 | 看是否偏离预期 |
| Tokens | 已消耗 token | 异常增长说明可能陷入循环 |
| Tool Calls | 工具调用次数 | 频繁调用同一工具可能是卡住了 |
| Last Output | 最近一次输出摘要 | 快速判断进展 |
我特别关注Tokens和Tool Calls这两列。正常情况下,一个 Agent 处理一个中等复杂度的任务,token 消耗应该是平稳上升的。如果某个 Agent 的 token 数在短时间内暴涨,大概率是它在反复读同一个文件或者陷入了无效循环。这时候我会直接把它停掉,检查它的任务描述是不是太模糊。
Tool Calls也有类似的诊断价值。如果一个 Agent 在 30 秒内调用了 20 次文件读取工具,说明它在盲目搜索,没有明确的目标。这时候需要人工介入,给它更具体的指令。
2.3 用 Agent View 做任务编排的实战技巧
Agent View 不只是用来看的,还可以用来做轻量级的任务编排。我常用的一个模式是"主控 + 观察":开一个主 Agent 负责拆解任务和分配,其他 Agent 执行具体工作,我通过 Agent View 监控全局,发现某个 Agent 卡住就手动干预。
具体操作上,我会先让主 Agent 输出一个任务列表,格式是每行一个任务,包含任务描述和目标文件。然后我用脚本把这个列表拆成多个子任务,分别发给不同的 Agent。这个过程不需要写复杂的代码,用 shell 脚本配合claude命令就能搞定:
#!/bin/bash # 读取任务列表,每个任务启动一个 Agent while IFS= read -r task; do claude --agent-id "worker-$(date +%s%N)" \ --task "$task" \ --background & done < tasks.txt--background参数让 Agent 在后台运行,不阻塞当前终端。这样我可以一次性启动多个 Agent,然后用 Agent View 观察它们的进展。
这里有个细节:--agent-id最好用时间戳或 UUID,不要用简单的数字编号。因为如果你重启了某个 Agent,数字编号会冲突,导致 Agent View 里显示混乱。我一开始用 1、2、3 编号,后来发现重启后旧 Agent 的残留状态会和新 Agent 混在一起,排查了半天才发现是 ID 冲突。
2.4 Agent View 的局限:它不解决冲突
必须说清楚一点:Agent View 只是"看",不解决"管"。它不会帮你检测文件写入冲突,不会帮你合并不同 Agent 的输出,也不会在 Agent 之间做负载均衡。这些都需要你自己在任务设计层面解决。
我踩过的最大的坑就是以为 Agent View 能帮我协调。当时我让两个 Agent 同时处理一个模块的前端和后端,结果前端 Agent 改了 API 接口定义,后端 Agent 不知道,还在按旧接口写实现。Agent View 里两个都显示 running,看起来一切正常,直到最后合并代码才发现对不上。
后来我的做法是:在启动 Agent 之前,先明确划分文件所有权。每个 Agent 只能改自己负责的文件,跨文件的接口变更必须通过一个"接口定义文件"来同步。这个文件由主 Agent 维护,其他 Agent 只读。这样就避免了大部分冲突。
3. Agent Teams 的协作机制拆解
3.1 Teams 的角色定义与任务分配
Agent Teams 的核心是角色。你需要先定义一组角色,每个角色有明确的职责边界和工具权限。一个典型的 Teams 配置如下:
{ "agentTeams": { "name": "refactor-team", "roles": [ { "name": "architect", "description": "分析代码结构,制定重构方案", "tools": ["read", "search", "analyze"], "maxTokens": 8000 }, { "name": "implementer", "description": "按照方案修改代码", "tools": ["read", "write", "edit"], "maxTokens": 16000 }, { "name": "reviewer", "description": "检查修改是否符合规范", "tools": ["read", "search"], "maxTokens": 8000 } ], "coordination": { "mode": "sequential", "handoffFile": ".claude/handoff.md" } } }这里的关键是tools字段。architect 只有读权限,没有写权限,这样它就不会误改代码。implementer 有写权限,但它的输入必须来自 architect 的输出。reviewer 又只有读权限,负责检查 implementer 的成果。这种权限隔离是 Teams 协作的基础。
coordination.mode我一般用sequential,也就是串行接力。虽然叫"多线程",但很多任务本质上是有依赖的,强行并行反而会乱。串行模式下,每个角色完成自己的阶段后,把结果写入handoffFile,下一个角色读取这个文件继续工作。
3.2 角色之间的通信:handoff 文件的设计
handoff 文件是 Teams 协作的枢纽。它的格式设计直接影响协作效率。我试过几种格式,最后稳定下来的结构是这样的:
# Handoff Document ## Current Stage implementer ## Completed Work - 重构了 UserService 的认证逻辑 - 提取了 AuthValidator 独立类 - 更新了相关单元测试 ## Pending Issues - Token 刷新逻辑还没处理 - 错误码需要统一 ## Next Stage Input 请 reviewer 重点检查 AuthValidator 的边界条件处理这个结构的好处是:每个角色进来先看Current Stage知道该谁干活,看Completed Work了解已完成的部分,看Pending Issues知道有哪些遗留问题,看Next Stage Input知道下一步的重点。
我踩过的坑是 handoff 文件写得太简略。一开始我只写"完成了用户模块重构",结果下一个角色进来完全不知道改了什么、为什么这么改,只能重新读一遍代码,浪费大量 token。后来我强制要求每个角色在 handoff 里写清楚"改了什么、为什么改、有什么风险",协作效率明显提升。
3.3 串行接力 vs 并行分工:什么时候用哪种
Teams 支持两种协作模式:串行接力(sequential)和并行分工(parallel)。串行接力适合有依赖关系的任务,比如"设计 → 实现 → 测试"。并行分工适合独立的任务,比如"同时改三个不相关的模块"。
我实际用下来,串行接力的成功率远高于并行分工。原因是并行分工对任务拆分的要求极高,一旦拆分不当,就会出现重复劳动或遗漏。而串行接力虽然总耗时更长,但每一步都有明确的输入和输出,出错概率低。
一个折中方案是"混合模式":主流程串行,但在某个阶段内部并行。比如"实现"阶段可以拆成多个子任务并行执行,但"设计"和"测试"阶段保持串行。这种模式需要更复杂的协调逻辑,我一般只在大型重构时用。
3.4 Teams 的 token 成本与性能权衡
开 Teams 之后,token 消耗会明显上升。原因很简单:每个角色都要读一遍上下文,而上下文里包含了之前所有角色的输出。如果 handoff 文件写得太详细,token 消耗会指数级增长。
我做过一个粗略的测算:单 Agent 处理一个中等任务,消耗约 20k token;用三个角色的 Teams 处理同样的任务,总消耗约 60k 到 80k token。也就是说,Teams 的 token 成本大约是单 Agent 的 3 到 4 倍。
这个成本是否值得,取决于任务的价值。如果是生产环境的关键重构,多花点 token 保证质量是值得的。如果只是改个注释、调个格式,开 Teams 就是浪费。
我的经验是:任务复杂度超过"需要读三个以上文件才能理解"时,才考虑开 Teams。低于这个复杂度,单 Agent 加 Agent View 就够了。
4. Polter 实战:把多线程玩法串起来
4.1 Polter 是什么,为什么用它做案例
Polter 是一个轻量级的任务编排工具,它的定位介于"手动开多个终端"和"写复杂的 CI 脚本"之间。你可以用声明式的方式定义一组任务和它们的依赖关系,Polter 负责按顺序或并行执行,并把每个任务的输出汇总到一个统一的日志里。
我选它做案例,是因为它和 Claude Code 的多线程玩法天然契合。Claude Code 负责"智能",Polter 负责"调度",两者结合可以做出很实用的自动化流程。而且 Polter 的配置简单,不需要写代码,适合作为入门案例。
4.2 用 Polter 编排 Claude Code 任务的配置
假设我要做一个"代码审查 + 自动修复 + 回归测试"的流程。用 Polter 的配置大概长这样:
name: code-review-pipeline tasks: - id: review command: claude --task "审查 src/ 目录下的代码,输出问题列表到 review.md" output: review.md - id: fix command: claude --task "根据 review.md 修复问题,修改后输出 fix-log.md" depends_on: review output: fix-log.md - id: test command: claude --task "运行测试套件,如果失败则分析原因并输出 test-report.md" depends_on: fix output: test-report.md - id: summary command: claude --task "汇总 review.md、fix-log.md、test-report.md,生成最终报告" depends_on: [review, fix, test] output: final-report.md这个配置里,depends_on定义了任务依赖。Polter 会自动按拓扑顺序执行,review 完成后才跑 fix,fix 完成后才跑 test,最后 summary 汇总所有结果。
实际跑的时候,我会同时开 Agent View 观察每个任务的进展。Polter 负责调度,Agent View 负责监控,两者配合起来,整个流程的透明度很高。
4.3 实战中遇到的三个坑及解决过程
第一个坑:任务输出文件被覆盖。review 任务输出review.md,fix 任务也输出review.md(因为它要更新审查结果),结果两个任务并行跑的时候互相覆盖。排查过程:我先看 Agent View,发现两个任务都显示 done,但review.md的内容只有一半。后来检查 Polter 日志,发现两个任务的输出路径配成了同一个。解决方法是给每个任务的输出加前缀,比如review-output.md、fix-output.md。
第二个坑:依赖关系配错导致死锁。有一次我把 summary 的depends_on配成了[review, fix, test],但 fix 又依赖 test,test 又依赖 fix,形成了循环依赖。Polter 直接卡住不动,Agent View 里所有任务都是 idle。排查过程:我盯着 Agent View 看了五分钟,发现没有任何任务在跑,才意识到是依赖配置问题。解决方法是画一张依赖图,确保没有环。
第三个坑:token 超限导致任务中断。有一个任务需要读大量文件,跑到一半 token 用完了,Agent 直接退出。Agent View 里显示 error,但错误信息很模糊。排查过程:我看了 Agent 的日志,发现是maxTokens设得太小。解决方法是在 Polter 配置里给每个任务单独设maxTokens,复杂任务给 32000,简单任务给 8000。
4.4 跑通之后的优化:从能用 to 好用
流程跑通只是第一步。要让它在日常工作中真正好用,还需要做一些优化:
- 加缓存:如果某个任务的输入没变,跳过执行。Polter 支持
cache_key配置,我一般用输入文件的哈希值作为 key。 - 加超时:给每个任务设
timeout,防止某个任务卡死拖垮整个流程。我一般设 10 分钟。 - 加通知:任务完成后发个通知,不用一直盯着 Agent View。Polter 支持 webhook,可以接到常用的协作工具里。
- 加回滚:如果 fix 任务改坏了代码,能自动回滚。这个需要在任务开始前做一次 git commit,失败时
git reset。
这些优化不是必须的,但加上之后,整个流程从"需要人盯着"变成"可以放心跑",体验完全不一样。
5. 多线程玩法的心智模型与常见误区
5.1 把 Agent 当成"同事"而不是"工具"
用 Claude Code 多线程最大的认知转变,是从"我在用一个工具"变成"我在管理一个团队"。工具是你操作它,它被动响应;同事是你给它目标,它主动执行,但你需要协调、沟通、验收。
这个转变带来的直接后果是:你不能只给一个模糊的指令就期待完美结果。你需要像给同事派活一样,说清楚背景、目标、约束、验收标准。我一开始总是写"帮我优化这段代码",结果 Agent 改出来的东西完全不是我想要的。后来我改成"这段代码的性能瓶颈在数据库查询,请在不改变接口的前提下,把 N+1 查询改成批量查询,改完后跑一遍单元测试确保通过",效果就好很多。
5.2 上下文隔离带来的信息断层
每个 Agent 有独立的上下文窗口,这意味着它们之间天然存在信息断层。A Agent 知道的事情,B Agent 不知道,除非你显式地传递。
这个特性有利有弊。好处是每个 Agent 的上下文很干净,不会被无关信息干扰。坏处是如果你不主动同步信息,Agent 之间就会产生误解。
我的做法是维护一个"共享知识库"文件,所有 Agent 都能读。这个文件里放项目的核心约定、接口定义、命名规范这些跨任务的信息。每个 Agent 启动时先读这个文件,确保大家在同一套规则下工作。
5.3 什么时候该停掉多线程
多线程不是越多越好。出现以下信号时,应该果断停掉,回到单线程:
- Agent 之间频繁冲突:如果两个 Agent 经常改同一个文件,说明任务划分有问题。
- 协调成本超过执行成本:如果你花在写 handoff、检查冲突上的时间比 Agent 实际干活的时间还多,就不划算了。
- token 消耗失控:如果总 token 消耗远超预期,说明任务拆分太细或上下文传递太多。
- 结果质量下降:如果多 Agent 产出的代码质量还不如单 Agent,说明协作机制没设计好。
我自己的经验是:多线程适合"大任务拆成几个中等任务",不适合"小任务拆成几个微任务"。任务粒度太细,协调成本会吃掉所有收益。
6. 配置与调试中的细节经验
6.1 settings.json 里容易配错的字段
settings.json是 Claude Code 的核心配置文件,多线程相关的字段容易配错的有几个:
| 字段 | 常见错误 | 正确做法 |
|---|---|---|
| maxAgents | 设得太大导致 token 爆炸 | 从 3 开始,逐步增加 |
| refreshInterval | 设得太小导致终端卡顿 | 2000-3000ms 比较合适 |
| handoffFile | 路径写相对路径导致找不到 | 用绝对路径或项目根目录相对路径 |
| tools | 给所有角色都开写权限 | 按角色最小权限原则分配 |
我特别想强调tools的配置。很多人图省事,给所有角色都开全部权限,结果 architect 角色误改了代码,reviewer 角色直接提交了修改。权限隔离不是限制,是保护。
6.2 日志排查:Agent 卡住时看什么
Agent 卡住时,Agent View 只能告诉你"它卡住了",不能告诉你"为什么卡住"。这时候需要看日志。Claude Code 的日志默认在~/.claude/logs/目录下,每个 Agent 一个日志文件。
我排查卡住问题的顺序是:
- 看日志最后 20 行,确认它最后在做什么。
- 搜索
error和timeout关键词,看有没有报错。 - 看 token 消耗曲线,判断是不是 token 用完了。
- 看工具调用记录,判断是不是在无效循环。
大部分卡住问题都能通过这四步定位。我遇到最多的是 token 用完和工具调用循环,前者需要调大maxTokens,后者需要优化任务描述。
6.3 版本差异带来的配置不兼容
Claude Code 更新比较频繁,不同版本的配置字段可能有差异。我遇到过升级后agentView字段改名的情况,导致配置不生效。
我的做法是:每次升级后,先用claude config list看当前支持的字段,再对照官方文档调整配置。不要直接沿用旧配置,也不要照搬网上的配置,因为网上的配置可能是旧版本的。
另外,建议把settings.json纳入版本控制,每次修改都提交一次。这样出问题时可以快速回滚到上一个可用版本。
7. 从单线程到多线程的渐进式迁移路径
7.1 第一阶段:单 Agent + Agent View
不要一上来就开 Teams。先用单 Agent 加 Agent View,熟悉监控面板的使用。这个阶段的目标是:学会看 Agent 的状态,判断它是否正常工作,知道什么时候该干预。
我建议在这个阶段跑一些中等复杂度的任务,比如"重构一个模块"或"修复一组 bug"。通过 Agent View 观察它的工作模式,积累对 token 消耗、工具调用频率的直觉。
7.2 第二阶段:双 Agent 串行接力
熟悉单 Agent 后,尝试两个 Agent 串行接力。最简单的模式是"实现 + 审查":一个 Agent 写代码,另一个 Agent 检查。这个阶段的目标是学会设计 handoff 文件,理解角色之间的信息传递。
这个阶段最容易犯的错误是 handoff 写得太简略。我的建议是:宁可写详细一点,也不要让下一个 Agent 猜。详细的 handoff 虽然多花 token,但能避免返工,总体是划算的。
7.3 第三阶段:多 Agent 并行 + Polter 编排
当串行接力跑顺了,再尝试并行和 Polter 编排。这个阶段的目标是学会任务拆分和依赖管理。关键是要有清晰的依赖图,避免循环依赖和资源冲突。
我建议从三个 Agent 开始,不要一上来就开五六个。三个 Agent 的协调复杂度已经足够让你体会到多线程的挑战,再多了容易失控。
7.4 每个阶段该关注的核心指标
| 阶段 | 核心指标 | 达标标准 |
|---|---|---|
| 单 Agent | token 消耗稳定性 | 波动不超过 30% |
| 双 Agent | handoff 信息完整度 | 下一个 Agent 无需追问 |
| 多 Agent | 任务冲突率 | 低于 10% |
这些指标不是绝对的,但可以作为参考。如果某个阶段指标不达标,不要急着进入下一阶段,先把当前阶段的问题解决掉。
8. 一些不那么显然的实战心得
8.1 给 Agent 起名字比想象中重要
Agent ID 用 UUID 是为了避免冲突,但给 Agent 起一个有意义的名字,对调试帮助很大。比如把负责认证模块的 Agent 叫auth-worker,负责数据库的叫db-worker。这样在 Agent View 里一眼就能看出谁在干什么,排查问题时不用去翻日志确认 ID 对应哪个任务。
我现在的做法是:Agent ID 用角色名-时间戳的格式,比如reviewer-1712345678。既保证了唯一性,又有可读性。
8.2 任务描述里的"验收标准"不能省
给 Agent 派任务时,一定要写清楚验收标准。比如"修改 UserService 的登录逻辑"是模糊的,"修改 UserService 的登录逻辑,要求:1. 支持邮箱登录;2. 密码错误返回 401;3. 单元测试覆盖率不低于 80%"是清晰的。
验收标准的作用不只是让 Agent 知道做到什么程度,更重要的是让你自己知道该检查什么。没有验收标准,你验收时只能凭感觉,很容易漏掉问题。
8.3 定期清理僵尸 Agent
Agent 跑完后如果不清理,会一直占用资源。我遇到过跑了一天的流程,积累了十几个僵尸 Agent,导致新 Agent 启动不了。
我的做法是:在 Polter 流程的最后加一个清理任务,把所有已完成的 Agent 停掉。或者用定时脚本,每小时清理一次状态为 done 或 error 的 Agent。
8.4 不要把敏感信息放进 handoff 文件
handoff 文件是明文存储的,所有 Agent 都能读。不要把 API key、密码、token 这些敏感信息写进去。如果任务需要用到这些信息,通过环境变量传递,不要写进文件。
这个坑我踩过一次:把数据库连接串写进了 handoff 文件,结果这个文件被提交到了 git 仓库。虽然及时发现删掉了,但还是很惊险。从那以后,我养成了习惯:handoff 文件里只写任务相关的信息,敏感配置一律走环境变量。
8.5 多线程不是银弹,该单线程就单线程
最后想说一点:多线程是一种手段,不是目的。如果单线程能解决的问题,不要为了用多线程而用多线程。我见过太多人为了"显得高级",把简单的任务拆成复杂的多 Agent 流程,结果维护成本远超收益。
判断标准很简单:如果多线程带来的收益(时间节省、质量提升)超过它的成本(token 消耗、协调复杂度),就用;否则就不用。这个判断需要基于实际数据,不能凭感觉。我一般会记录每次多线程任务的实际耗时和 token 消耗,和单线程做对比,用数据说话。
用了大半年 Claude Code 的多线程玩法,我最大的体会是:它更像是在管理一个小团队,而不是在操作一个工具。你需要学会派活、协调、验收,这些软技能比配置参数更重要。Agent View 和 Agent Teams 只是提供了基础设施,真正决定效果的是你怎么设计任务、怎么划分边界、怎么传递信息。希望这篇内容能帮你少走一些我走过的弯路,把多线程真正用起来。