Appearance
Claude Managed Agents发布:让Agentic AI工作流成为现实
你在逻辑上花的时间比产品还多——Agent循环、工具执行、上下文管理、沙箱隔离和会话处理,所有这些只能从头开始连接。Claude Managed Agents承诺解决这个问题:不再是需要包装的API,而是直接提供一个运行时。
两个产品
Claude Managed Agents
一个完全托管的Agent运行环境,运行在Anthropic的基础设施上。你定义Agent,发送任务,Anthropic的云处理其他一切:容器、工具、执行和会话。
Claude Agent SDK
一个Python和TypeScript库,将驱动Claude Code的相同Agent循环嵌入到你自己的应用中。你自己托管它,但所有困难的部分都是预构建的。
| 产品 | Agent运行位置 |
|---|---|
| SDK | 你自己的基础设施内 |
| Managed Agents | Anthropic的云上,完全托管 |
四个构建块
| 构建块 | 说明 |
|---|---|
| Agent | 配置:模型、系统提示、工具、MCP服务器和技能。定义一次,通过ID重用 |
| Environment | 云容器:预安装包(Python、Node.js、Go等)、网络访问规则、挂载文件 |
| Session | Agent在环境中的一个运行实例,执行特定任务 |
| Events | 应用和Agent之间流动的消息:用户轮次、工具结果、状态更新、流式响应 |
代码示例
创建Agent(做一次):
python
import anthropic
client = anthropic.Anthropic()
# 创建Agent — 做一次,通过ID重用
agent = client.beta.agents.create(
model="claude-sonnet-4-6",
system="你是一个软件工程师。修复bug,运行测试,并报告结果。",
tools=[{"type": "bash"}, {"type": "file_operations"}, {"type": "web_search"}],
name="bug-fixer"
)
print(agent.id) # 保存这个 — 你将在会话中引用它启动会话并发送任务:
python
# 创建一个包含Agent所需包的环境
environment = client.beta.environments.create(
packages=["pytest", "requests"]
)
# 启动一个使用你的Agent和环境的会话
session = client.beta.sessions.create(
agent_id=agent.id,
environment_id=environment.id
)
# 将你的任务作为事件发送
response = client.beta.sessions.events.create(
session_id=session.id,
content="找出并修复auth.py中失败的测试"
)Agent循环是如何工作的
Claude不会响应一次然后等待。它运行一个持续的循环:接收提示、评估任务、调用工具、处理结果、重复——直到任务完成。
实际任务示例
任务:「找出并修复auth.py中失败的测试」
| 轮次 | 动作 |
|---|---|
| 第1轮 | Claude通过Bash运行测试套件,返回三个失败 |
| 第2轮 | Claude读取测试文件以理解问题 |
| 第3轮 | Claude编辑文件并重新运行测试,三个全部通过 |
| 最后一轮 | Claude返回没有工具调用的文本响应,任务完成 |
流式代码示例
python
import anthropic
client = anthropic.Anthropic()
async for event in client.beta.sessions.stream(
session_id=session.id,
event={
"type": "user",
"content": "找出并修复auth.py中失败的测试"
}
):
# 看看每轮Claude在做什么
if event.type == "assistant_message":
print(event.content)
# 捕获最终结果
if event.type == "result":
print(f"完成: {event.result}")
print(f"使用的轮数: {event.num_turns}")
print(f"成本: ${event.total_cost_usd:.4f}")上下文管理:自动压缩
每轮都会添加到上下文窗口:提示、工具定义、文件读取、命令输出和对话历史。一旦达到限制,会话就会死亡。
Managed Agents自动处理:当上下文窗口接近限制时,系统通过总结较旧的历史来压缩对话以释放空间,同时保持最近的交换和关键决策完整。
三个控制
1. Effort Level
控制每轮Claude推理的深度。要深思熟虑地设置,因为它会影响Token使用和成本。
2. Max Turns and Budget
在循环失控之前设置上限:
python
session = client.beta.sessions.create(
agent_id=agent.id,
environment_id=environment.id,
max_turns=20, # 20轮后停止
max_budget_usd=0.50 # 或者当花费达到$0.50
)当任一限制达到时,会话返回一个明确的子类型结果,如果需要可以用会话ID恢复。
3. Permission Mode
控制Claude在不询问的情况下能做什么:
| 模式 | 说明 |
|---|---|
| default | 通过回调gates任何未预先批准的内容 |
| acceptEdits | 自动批准文件编辑,仍然gates shell命令 |
| bypassPermissions | 在隔离容器和CI中无提示地运行一切 |
中途引导会话
当会话运行时,可以发送额外的事件来重定向、添加上下文或停止:
python
# 发送会话中途的纠正
client.beta.sessions.events.create(
session_id=session.id,
content="实际上,只修复auth_token测试 — 不要管login测试"
)会话持久:捕获会话ID,可以在中断的地方继续:
python
# 恢复之前的会话
async for event in client.beta.sessions.stream(
session_id="sess_abc123", # 来自之前的运行
event={"type": "user", "content": "继续 — 现在也修复payment模块"}
):
if event.type == "result":
print(event.result)完整工具集
文件操作
| 工具 | 说明 |
|---|---|
| Read | 读取容器中的任何文件 |
| Write | 创建新文件 |
| Edit | 修改现有文件 |
搜索
| 工具 | 说明 |
|---|---|
| Glob | 按模式查找文件 |
| Grep | 用正则表达式搜索内容 |
执行
| 工具 | 说明 |
|---|---|
| Bash | 运行shell命令、脚本、git操作、安装包、运行测试 |
Web
| 工具 | 说明 |
|---|---|
| WebSearch | 搜索互联网 |
| WebFetch | 从任何URL获取和解析完整页面内容 |
编排
| 工具 | 说明 |
|---|---|
| Task | 生成用于隔离工作的子代理 |
| Skill | 调用可重用的工作流 |
| AskUserQuestion | 暂停并请求人工输入 |
| TodoWrite | 在会话中跟踪多步骤工作 |
除了内置工具,还可以通过MCP服务器连接外部服务并定义自定义工具。
入门
前置条件
- 来自platform.claude.com的Claude API密钥
- 所有请求上的
managed-agents-2026-04-01测试版header - Python或TypeScript SDK(SDK自动设置header)
安装SDK
bash
pip install anthropic设置API密钥
bash
export ANTHROPIC_API_KEY=your-api-key第一个工作Agent(不到20行)
python
import anthropic
import asyncio
client = anthropic.Anthropic()
async def main():
agent = client.beta.agents.create(
model="claude-sonnet-4-6",
system="你是一个有用的工程助手。",
tools=[{"type": "bash"}, {"type": "file_operations"}],
name="my-first-agent"
)
environment = client.beta.environments.create(
packages=["pytest"]
)
session = client.beta.sessions.create(
agent_id=agent.id,
environment_id=environment.id,
max_turns=10,
max_budget_usd=0.25
)
async for event in client.beta.sessions.stream(
session_id=session.id,
event={"type": "user", "content": "列出这个目录中的所有Python文件"}
):
if event.type == "result":
print(event.result)
print(f"成本: ${event.total_cost_usd:.4f}")
asyncio.run(main())总结
| 要点 | 说明 |
|---|---|
| 托管运行时 | 不再拼接脚本,直接发送任务 |
| 四大构建块 | Agent + Environment + Session + Events |
| 自动上下文管理 | 接近限制时自动压缩 |
| 三控制 | Effort + Budget + Permissions |
| 完整工具集 | 文件/搜索/执行/Web/编排 |
过去几周的基础设施工作现在变成了配置文件和API调用。这是快速构建生产级Agent的一大步。
关键词:Claude Managed Agents, Anthropic, Agent运行时, 托管Agent, Agent循环, 上下文管理
