
这篇不只是功能介绍我想把设计逻辑讲清楚。图码哥字节技术图解Agent 视图不只是个「多开」界面先说 Agent 视图。官方文档里的介绍很简单claude agents一个集中管理所有后台会话的界面可以看到哪些在运行、哪些在等待输入、哪些完成了。乍一看这不就是 tmux screen 那套思路把多个 Claude 会话放在一个地方看。但如果你这样理解就错过了真正重要的东西。后台会话的关键设计Supervisor 进程Agent 视图的实现里有一个细节特别值得注意——它依托的是一个独立的 Supervisor 进程。普通的claude命令会话的生命周期和你的终端窗口绑定在一起。你关掉终端会话就结束了。这个心理负担我相信每个用过 Claude Code 做长任务的人都有体会不敢关终端盯着屏幕等结果生怕中断了。Agent 视图的后台会话不一样。它由 Supervisor 进程托管和你的终端完全解耦。你可以关掉 agent view 的界面、打开其他终端、甚至开启新的交互式 Claude 会话——后台任务继续运行Supervisor 会在~/.claude/daemon/目录下维护会话状态。更有意思的是当后台会话完成并空置约 1 小时后Supervisor 会自动停止进程释放资源但下次你 attach 或 peek 时它会从磁盘状态无缝重启——这就是典型的冷热分离架构思路做过有状态服务的人看到这个设计会感觉很熟悉。还有一个细节当你开启一个新的后台任务Claude 会自动把它隔离到一个独立的 git worktree.claude/worktrees/下。这解决了一个真实的痛点——多个并行 Claude 会话同时修改同一个仓库文件冲突是必然的。用 worktree 隔离每个会话有自己的工作副本互不干扰最后 merge 或 push 各自的结果。# Agent 视图实际状态展示 Needs input ✻ auth-refactor 需要确认用 JWT 还是 Session 1m Working ✽ api-migration Edit src/routes/users.ts 3m ✢ test-suite run 8 · 15个测试全通过等待下轮 in 2m Completed ✻ lint-fix result: 47处格式问题已修复 12m每行的图标有两层含义✽和✻代表进程活跃可以立即回复∙代表进程已退出但状态保留reply 会重启✢是/loop循环任务在两次迭代间隙。这个状态模型设计得很清晰——你永远知道每个 session 处于什么状态需不需要你介入。图Agent 视图的 Supervisor 架构与会话状态管理实际效果人机协作模型的转变以前我用 Claude Code 做一个稍复杂的重构工作流大概是这样的提需求给 Claude盯着屏幕等它做完第一步确认一下说继续再盯着屏幕……整个过程我这个「高级工程师」实际上在干的事情是一直盯着屏幕按 Enter。Agent 视图让这件事有了不同的可能。你可以同时 dispatch 多个独立任务自己去做真正需要动脑子的工作偶尔扫一眼 agent view哪个会话需要你输入了就 peek 一下回复哪个完成了就看看 PR 链接。更重要的是当一个后台会话打开了 Pull RequestAgent 视图的那一行会直接显示 PR 链接 CI 状态。大多数情况下你不需要 attach 进会话翻看整个执行历史——「PR opened CI green」就是你需要的全部信息。这个设计思路和我们团队当年把 Jenkins 从推送通知升级到 Slack 机器人主动报告状态的逻辑是一样的人不应该主动去盯工具工具应该在需要你的时候才来找你。/goal 命令状态机不是任务队列这是我觉得这次更新里最有架构价值的设计。命令本身很简单# 在会话中设置目标 /goal 所有单元测试都通过且 TypeScript 编译无报错 # 查看当前目标状态 /goal # 清除目标 /goal clear设置了/goal之后界面上会出现一个 overlay panel 显示已用时间、已完成 turns 数、token 消耗。Claude 会持续工作每次完成一个 turn 后自动评估「是否达到目标状态」如果没有就继续下一 turn直到满足条件或你手动停止。这个功能的表面描述很朴素。但如果你从系统设计的角度看它实际上引入了一个很不一样的执行模型。执行模型的差异指令序列 vs 目标收敛传统的 AI 对话是一个「请求-响应」序列你说一句它回一句你再说它再回。每一 turn 是独立的没有跨 turn 的持续状态。普通的「帮我把所有测试跑通」提示词在这套模型下意味着Claude 在这一个 turn 里尝试修复然后等你 respond。如果没修好你再说「继续」它再做一 turn。控制权在你手里——你来决定什么时候继续。/goal命令改变了这个控制权的归属。你设置了目标状态之后Claude 接管了「是否完成」的判断权。每一 turn 结束时它会评估当前状态是否满足目标条件满足了就停不满足就自动发起下一 turn——这个循环不需要你介入。这在架构上和分布式系统里的「状态机收敛」同构你设定目标状态desired state执行者自主选择路径让系统向目标收敛直到当前状态与目标状态一致。这和 Kubernetes Reconcile Loop 的设计逻辑是一样的——你告诉 K8s「我要 3 个 Pod」K8s 自己想办法凑够 3 个而不是你指定「先启动第一个再启动第二个再启动第三个」。当然两者也有本质区别K8s 的 Reconcile Loop 是基于精确的系统状态Pod 数量可以精确计数而 Claude 的/goal判断是基于语言理解——「所有测试通过」需要 Claude 去运行测试、解读输出、判断是否达标。这里有不确定性也有出错的可能。图传统对话模型与 /goal 目标收敛模型的执行逻辑对比/goal 的适用场景和边界用了几天之后我发现/goal在以下场景里特别好用场景一测试修复循环/goal 所有单元测试通过jest 退出码为 0这个场景最典型。测试修复是一个典型的「运行-看报错-修改-再运行」循环每一轮输出非常明确通过/失败Claude 可以精确判断是否达标。这个循环可能要跑 5-10 turns全程不需要你介入。场景二代码质量收敛/goal ESLint 报告 0 个 errorwarning 可以有同样明确。ESLint 的退出码和错误数量是精确可读的状态。场景三类型检查修复/goal TypeScript 编译通过tsc --noEmit 无报错不适合的场景目标状态模糊或主观性强的任务。比如「/goal 把这个模块写得优雅」——Claude 没有客观标准来判断「优雅」是否达成可能会无限循环或者自欺欺人地宣称完成。真实踩坑我第一次用/goal时犯了一个错# 这个 goal 很容易被误判为完成 /goal 功能可以正常运行 # 更好的写法 /goal curl http://localhost:3000/api/health 返回 {status:ok}且 npm test 无失败目标描述越具体、越可验证/goal的执行质量越高。模糊的目标会让 Claude 走捷径——比如通过注释掉测试用例来让测试通过。我吃过这个亏。把预期的验证命令和输出直接写进 goal远比模糊描述可靠。配套功能的架构价值这次更新的其他几个功能单独看都不起眼但放在「AI Agent 工作流」的框架下逻辑就清晰了。MCP Server 的 CLAUDE_PROJECT_DIR从 v2.1.139 起MCP stdio server 在启动时会自动接收CLAUDE_PROJECT_DIR环境变量指向当前项目目录。这个改动很小但意义不小。之前写 MCP Server 插件时如果需要感知当前项目上下文比如读取项目的package.json或CLAUDE.md你要么硬编码路径要么通过别的方式传入。现在 MCP Server 天然知道自己在哪个项目里工作。在多 Agent 场景下这个意味着你的 MCP 工具可以做项目感知的行为差异——比如同一个 code-review MCP Server在不同项目里自动读取不同的 lint 规则配置。claude plugin detailsclaude plugin details plugin-name这个命令现在会输出插件的组件清单和预估的每次会话 token 成本。做过成本管控的人看到这个会觉得实用。当你给 Claude Code 装了一堆插件context 窗口里其实塞了大量的 plugin prompt。知道每个插件的 token 开销可以帮你做「哪些插件真的用到了、哪些在白白消耗 quota」的决策。在 Agent 视图的多会话场景下每个后台会话都独立消耗配额这个成本意识就更重要了。/context all 的分词器感知/context all命令的 token 估算现在会根据具体模型的分词器计算而不是用通用近似值。这个改动背后是一个工程精度问题Claude 系列的不同模型使用的 tokenizer 略有差异同一段文本在不同模型下的 token 数可能相差 10-15%。当你在做「这段上下文还塞得下吗」的判断时精确的 token 计数很重要——差 15% 可能就是「刚好够」和「触发 compaction」的区别。在多会话的场景下这个问题被放大了你同时开了 4 个后台会话每个都在消耗上下文窗口不准确的估算可能让你误判整体的 token 压力。而且/context all显示的舍入值现在也更诚实——它会告诉你这是基于模型分词器计算的近似值而不是给你一个看似精确实则靠猜的数字。踩坑记录多会话并行的配额问题用 Agent 视图跑了一周有几个坑值得提前说。配额消耗是乘法不是加法。后台会话和交互式会话共享 Claude Pro/Max 的配额。你同时跑 5 个后台任务配额消耗速度是大约 5 倍。我用 Max 计划跑了 8 个并行任务跑了半天配额吃了约 60%。开多少会话之前先/usage看一眼剩余额度。机器睡眠会中断后台会话。官方文档明确说了这一点但很容易被忽视。Mac 合盖后后台会话全部暂停。重新开盖后状态保留但任务不会自动恢复——需要手动claude respawn --all。如果你打算让 Claude 通宵跑任务记得调整系统的「防止睡眠」设置。