Claude Managed Agents 调研
Claude Managed Agents 可以直接理解成 Anthropic 给开发者和企业用的托管 agent 基础设施。
它和 Claude.ai、Claude Code 放在同一个产品家族里,但位置更靠近底层运行时:你定义 agent、工具、权限、运行环境和 session,Anthropic 替你托管 agent runtime。
把它和现有几个 Claude 产品放在一起看,会更清楚:
产品 | 运行位置 | 主要能力 | 对用户的感觉 |
Claude.ai | Anthropic 的 web/app 服务 | 聊天、Projects、Artifacts、文件上传、connectors | “我和 Claude 对话,让它产出内容” |
Claude Cowork | Claude Desktop,本机 agent loop + 本机文件/VM;推理仍走 Claude,除非企业第三方部署 | 长任务、读写本地文件、做文档/表格/PPT、sub-agent、scheduled tasks | “我把一个工作任务交给 Claude,它在我电脑上做完” |
Claude Code | Terminal / IDE / Desktop / Web;可本地也可云端 | 读代码库、改文件、跑命令、测试、git、PR、CI、MCP、subagents | “我让 Claude 像开发 agent 一样改代码” |
Claude Managed Agents | Anthropic 托管 session/sandbox,或 self-hosted sandbox | API 化 agent runtime:agent config、sessions、events、tool execution、permissions、vault、webhook | “我用 Anthropic 的平台部署自己的 agent 产品/工作流” |
这张表真正要看的是 runtime 控制权:谁拥有 agent 的运行环境、工具执行、权限确认和 session 记录。
Managed Agents 的设计围绕 4 个核心抽象:
- Agent(智能体定义) = model + system prompt + tools + MCP servers + skills 相当于一份”配置清单”。创建一次,拿到 agent ID,后续所有 session 复用。
- Environment(运行环境) = 云端容器模板。预装 Python、Node.js、Go 等,配置网络规则和文件挂载。
- Session(会话实例) = Agent + Environment 的一次具体执行。有状态,可持久化,支持长时间运行。
- Events(事件流) = 你的应用和 Agent 之间的消息交换。通过 SSE(Server-Sent Events)实时流式传输。
用一个类比:Agent 是”设计图”,Environment 是”工厂”,Session 是”一次生产过程”,Events 是”生产日志”。

第一步:在 Console(Web 界面)里可视化创建和测试
打开 Claude Console → Managed Agents → Quickstart,你能看到一个完整的向导:
- 选模板或自定义 Agent 配置
- 配置 Environment(选择网络策略)
- 启动 Session,直接在右侧面板看到实时执行过程
右侧的 Debug 面板是杀手级功能——你能看到完整的执行链路:
- Thinking → Claude 的推理过程
- Tool → 调了什么工具、传了什么参数
- Result → 工具返回结果
- Model → token 用量(包括 cache read/write)
- Session idle → 完成
第二步:确认 Agent 行为正确后,一键拿到 SDK 代码
Console 会直接生成可运行的 Python/TypeScript/Go 代码,包含你的 agent ID 和 environment ID。复制 → 粘贴 → 本地运行,完事。
这意味着什么?
你不再需要在本地反复调试 Agent 的行为逻辑。在 Web 上看到 Agent 跑得对了,再拿到本地集成。调试成本直接砍掉 80%。
实操:从 0 跑通 Managed Agents
环境准备
pip install anthropic export ANTHROPIC_API_KEY="sk-ant-xxx"
Step 1:创建 Agent
from anthropic import Anthropic client = Anthropic() agent = client.beta.agents.create( name="Coding Assistant", model="claude-sonnet-4-6", system="You are a helpful coding assistant. Write clean, well-documented code.", tools=[ {"type": "agent_toolset_20260401"}, # 全量内置工具 ], ) print(f"Agent ID: {agent.id}")`
agent_toolset_20260401 是一个”全家桶”工具类型,一次性启用 bash、文件操作、web search 等所有内置工具。Step 2:创建 Environment
environment = client.beta.environments.create( name="quickstart-env", config={ "type": "cloud", "networking": {"type": "unrestricted"}, }, ) print(f"Environment ID: {environment.id}")
Step 3:启动 Session
session = client.beta.sessions.create( agent=agent.id, environment_id=environment.id, title="Quickstart session", ) print(f"Session ID: {session.id}")
Step 4:发送消息 + 流式接收
with client.beta.sessions.events.stream(session.id) as stream: client.beta.sessions.events.send( session.id, events=[{ "type": "user.message", "content": [{"type": "text", "text": "搜索最新的 Claude 新闻并总结"}], }], ) for event in stream: match event.type: case "agent.message": for block in event.content: print(block.text, end="") case "agent.tool_use": print(f"\n[🔧 Using tool: {event.name}]") case "session.status_idle": print("\n\n✅ Agent finished.") break
跑起来后你会看到类似这样的输出:
[🔧 Using tool: web_search] Here's a summary of the latest news about Claude and Anthropic: ...(Agent 自主搜索网页、整理信息、输出结果) ✅ Agent finished.
实操:自动审稿流水线
用主-从代理跑文章审稿流水线,主代理用 Haiku 接需求,子代理用 Opus 并行做"事实核查 / 风格润色 / 结构评估"三件事,Outcomes 卡质量门槛,Webhook 通知你的服务。
- Outcomes 解决"代理不知道好不好"的问题。你写一个 rubric,独立的 grader 模型在自己的 context 里打分,代理拿到"哪里没达标"再迭代。Anthropic 自己的内部基准里,Outcomes 把任务成功率提升最多 10 个百分点,docx 生成质量 +8.4%,pptx +10.1%。
- Multiagent Orchestration 解决"上下文塞不下、子任务又要并行"的问题。一个 lead agent 可以协调最多 20 种 subagent,最多 25 个并行线程,所有 subagent 共享同一份文件系统,事件持久化、可在 Claude Console 里逐步追踪。
- Webhooks 解决"我不想轮询、不想拿着 connection 等"的问题。代理跑完一个 Outcome 自动 POST 你的 endpoint。这是把"需要人盯着"的玩具,变成"能挂在生产 CI 里"的工具的关键。
三者上线统一在
managed-agents-2026-04-01 beta header 后面。作者把文章草稿提交到一个 API endpoint,系统应该并行做:
- 事实核查(找出文中可疑的数字 / 名字 / 引用,给出可信度评分)
- 风格润色(按品牌 voice 给出修订建议)
- 结构评估(按"标题 + TL;DR + 主体三段 + 参考资料"模板检查)
三项都通过后,发 webhook 到内部 Slack bot 通知作者,否则把"哪里没达标"返回给作者
这刚好是 Lead + 3 个 Subagent 的多智能体场景,搭配 Outcomes 卡门槛、Webhook 异步通知。之所以选这个例子,是因为它把当前 Managed Agents 的几个新能力都用到了:并行子任务(Multiagent)、可量化质量门槛(Outcomes)、异步完成回调(Webhook),同时业务逻辑足够简单,不会被工程复杂度淹没。换成"代码 PR 审查"、“账单异常排查”、“客服工单分诊”,整体骨架都一样,只是 rubric 和 subagent 不同。
在动手前,最好先在纸上画一遍数据流向:草稿从哪里来、subagent 各自要读什么、grader 看什么、最终结果给谁。把每一步的输入输出列清楚,能避免后面发现"原来 fact_checker 看不到 voice_guide"这种返工。
定义 outcomes(评审 rubric)
先把"什么叫合格"写清楚。Outcomes 的 rubric 是自然语言,Anthropic 推荐写得像"验收清单"。
{ "name": "article_quality_v1", "criteria": [ { "id": "facts", "description": "文章中所有数字、人名、引用都能在外部公开来源核实,否则该条须被标红并给出怀疑等级 (low/medium/high)。" }, { "id": "voice", "description": "全文风格与品牌 voice guide 一致:第二人称、避免 buzzword、段落 ≤ 4 句。违反的句子要列出。" }, { "id": "structure", "description": "包含 Title / TL;DR / 至少 3 个二级标题 / 参考资料章节,否则不合格。" } ], "pass_when": "facts.high_risk_count == 0 AND voice.violations <= 3 AND structure.missing_sections == 0" }
pass_when 是 grader 用来判定是否通过的逻辑表达式。不通过时 grader 会把哪一项不达标返回给 lead agent,lead 再决定是直接退回作者,还是触发某个 subagent 重跑。定义 subagents
Subagent 用 JSON 描述给 lead,每个 subagent 独立选模型、独立提示词、独立工具。
{ "subagents": [ { "name": "fact_checker", "model": "claude-opus-4-7", "system_prompt": "你是事实核查员。对输入文章中每个数字、人名、引用,给出 cite_url 与可信度 (low/medium/high)。", "tools": [ "web_search", "url_fetch" ] }, { "name": "voice_editor", "model": "claude-opus-4-7", "system_prompt": "你按附件 voice_guide.md 检查文章,列出所有违反第二人称 / buzzword / 段落过长的句子,给出建议改写。", "tools": [ "read_file" ] }, { "name": "structure_auditor", "model": "claude-haiku-4-5", "system_prompt": "你按模板检查 markdown 文档结构,缺失章节就报错。", "tools": [] } ] }
structure_auditor 走 Haiku 完全够用,可以省 80%+ 成本;前两者更依赖语义判断,用 Opus 更稳。Spiral 团队对外披露的就是类似策略:lead 跑 Haiku、写作 subagent 跑 Opus。把 lead agent 跑起来 + 接 webhook
import os from anthropic import Anthropic client = Anthropic( api_key=os.environ["ANTHROPIC_API_KEY"], default_headers={"anthropic-beta": "managed-agents-2026-04-01"}, ) job = client.managed_agents.sessions.create( lead_model="claude-haiku-4-5", lead_system_prompt=( "你是审稿流水线的主调度。收到草稿后并行调度 " "fact_checker / voice_editor / structure_auditor 三个子代理," "汇总结果,触发 Outcome 评估,最终把通过/不通过结果交回给我。" ), subagents=SUBAGENTS_JSON, # 第四节那段 JSON outcome=OUTCOME_JSON, # 第三节那段 JSON input={ "draft_markdown_url": "https://drafts.example.com/a83.md", "voice_guide_url": "https://internal.example.com/voice_guide.md", }, webhook={ "url": "https://hooks.example.com/article-review", "events": ["outcome.passed", "outcome.failed"], "signing_secret": os.environ["HOOK_SECRET"], }, ) print("session id:", job.id)
你的 webhook 接收方需要校验签名再处理,避免别人伪造回调
from flask import Flask, request, abort import hmac, hashlib, os app = Flask(__name__) SECRET = os.environ["HOOK_SECRET"].encode() def verify(sig: str, body: bytes) -> bool: expected = hmac.new(SECRET, body, hashlib.sha256).hexdigest() return hmac.compare_digest(sig, expected) @app.post("/article-review") def hook(): sig = request.headers.get("X-Claude-Signature", "") if not verify(sig, request.get_data()): abort(401) payload = request.get_json() if payload["event"] == "outcome.passed": notify_slack_pass(payload["session_id"]) else: notify_slack_fail(payload["session_id"], payload["grader_feedback"]) return "", 204
下面这些是从 Anthropic 官方文档和早期用户披露中提炼的几条注意事项
- 别让 lead 自己干活。 多智能体编排的本意是 lead 当调度。你给 lead 配 Opus、又让它自己写文本,子代理就变摆设,账单会爆。Spiral 那种"Haiku 当 lead、Opus 当 worker"的拆分是当前主流姿势。
- Outcomes 的 rubric 别写得太抽象。 “通顺易读"这种描述 grader 会给你打满分。要拆成"段落 ≤ 4 句”、"避免 buzzword 清单 X"这种可机判定的小条款。Wisedocs 团队对外说他们的审查代理在引入 Outcomes 后效率提升 50%,关键就是把内部审查指南拆成了 rubric。
- webhook 重试要做幂等。 Anthropic 文档明确,webhook 失败会重试。如果你直接发 Slack,重复通知会很烦,按
session_id做去重。
- 别忘了带 beta header。
anthropic-beta: managed-agents-2026-04-01,不带这个头 multiagent / outcomes / webhooks 全部 404。
- 用 Claude Console 看 trace。 当 subagent 行为不符合预期时,Console 里能逐条看到 lead 把任务怎么拆、subagent 收到什么 prompt、最后输出什么——比日志好用 10 倍。
可以再加什么
如果你想把这个流水线往生产推一步,下面三件事都比较顺手:
- 把 Outcomes 的 rubric 版本化,跟着 voice_guide 一起进 git,每次改 rubric 都生成新 outcome name,便于 A/B;给 lead 接 Memory + Dreaming(Dreaming 目前是研究预览,需要申请),让它把"过去哪些类型的稿件最常败在 voice 项"沉淀成自己的记忆;最后,把 webhook 触发的通知改成 PR:fact_checker 输出可信度 high 的疑点直接以 GitHub PR 注释形式落地,作者在原稿位置就能看见。
- 另一个值得做的演进是"成本可视化"。Multiagent 一旦并发起来,Opus 子代理的账单会比单代理高一个量级。建议在 webhook 回调里顺手把每个 session 的 token 用量、grader 重试次数、subagent 失败次数写到一张表,方便后面按 outcome 名做成本/质量回归——这件事 Anthropic 暂时没给你做。
- 最后,把 lead agent 自己也版本化。lead 的 system prompt 决定了它怎么拆任务、怎么决定何时重试、什么时候直接抛回用户。这是这个流水线最容易"看似没改、行为大变"的地方,必须有 prompt diff、有 A/B、有金丝雀流量,否则你某天会发现整条线突然只用了一个 subagent。
至此你应该能感受到,Managed Agents 这次更新的关键词不是"更强的模型",而是把代理从"PoC 玩具"升级为"可以挂上生产管道的零件"。模型这一年还会继续升级,但今天值得你花一晚上熟悉的,是这套调度 + 评估 + 异步通知的工程接口——它一旦写好就能跟着任何后续模型一起复用。
它到底帮你省了什么?
自己搭 Agent | 用 Managed Agents |
自己写 agent loop | Anthropic 内置 harness |
自己搭沙箱执行环境 | 云端容器,预装依赖 |
自己做 context 管理 | 内置 prompt caching + compaction |
自己做 tool 编排和错误恢复 | 内置 orchestration |
自己接 LangSmith 做 tracing | Console 内置 session tracing |
部署到服务器 | Anthropic 托管 |
自己做权限和安全 | 内置 scoped permissions |
参考资料
- https://zhuanlan.zhihu.com/p/2043266040713544676
- https://www.wisedocs.ai/blogs/building-managed-agents-for-document-verification