Appearance
Anthropic官方Agent Harness平台:Claude Managed Agents完整指南
最近Anthropic推出了Claude Managed Agents,这是一套用来构建和部署云端Agent的API。核心是叫Harness的编排引擎:把工具调用、上下文管理、错误恢复这些事都帮你处理了,而且会随着模型能力一起升级。
填补产品线断层
之前Anthropic的产品线有一个明显的断层:
| 产品线 | 面向 |
|---|---|
| claude.ai、Claude Code | 消费者 |
| Messages API | 开发者 |
但如果一家企业想基于Claude做一个长时间运行的、能自主调用工具的Agent,需要自己搭沙箱、做状态管理、处理权限、写错误恢复逻辑——这些基础设施工作可能比Agent本身的业务逻辑还重。
**Managed Agents就是来填这个空的。**你只需要告诉它要做什么,然后接收结果就行了。
四大核心概念
1. Agent(智能体)
Agent可以理解为一份可复用的配置:用哪个模型、系统提示词是什么、能用哪些工具、要不要接MCP服务,都在这里定义。创建之后会拿到一个Agent ID,后面可以在不同会话里反复使用。
python
from anthropic import Anthropic
client = Anthropic()
agent = client.beta.agents.create(
name="Code Reviewer",
model="claude-sonnet-4-6",
system="You are a senior code reviewer...",
tools=[{"type": "agent_toolset_20260401"}],
)
print(agent.id) # ag_01ABC...agent_toolset_20260401:开箱即用的工具组合:
| 工具类型 | 说明 |
|---|---|
| Bash | 执行shell命令 |
| Read/Write/Edit | 文件读写 |
| Glob/Grep | 代码搜索 |
| Web Search/Web Fetch | Web访问 |
Agent带版本:每次更新都会生成一个新版本,可以查看历史记录,或把某个会话固定在指定版本上。
2. Environment(环境)
Environment是智能体的运行模板,用来定义它"在什么环境里干活"。可以配置依赖包、网络规则,以及需要挂载的文件。
python
environment = client.beta.environments.create(
name="python-dev",
config={
"type": "cloud",
"packages": {
"pip": ["pytest", "requests", "pandas"],
"apt": ["git", "curl"],
},
"networking": {"type": "unrestricted"},
},
)包管理器支持:pip、npm、apt、cargo、gem、go
网络配置:
| 类型 | 说明 |
|---|---|
| unrestricted | 默认,无限制 |
| limited + 域名白名单 | 限制访问范围 |
挂载GitHub仓库:
python
environment = client.beta.environments.create(
name="my-repo-env",
config={
"type": "cloud",
"github": {
"repository": "myorg/myrepo",
"branch": "main",
},
...
},
)会话启动时会自动clone下来,用起来就像本地项目一样。
3. Session(会话)
Session是智能体真正"干活"的地方,是运行在环境里的一个实例。每个会话都有独立的容器,包含自己的文件系统、进程和网络,不会互相影响。
python
session = client.beta.sessions.create(
agent=agent.id,
environment_id=environment.id,
)
print(session.id) # ses_01XYZ...
print(session.status) # "running"会话会一直存在,直到手动关闭或超时结束。在这期间,智能体可以在多轮对话之间保留状态。
4. Events(事件)
Events是你和正在运行的会话之间的"通信通道"。通过SSE(服务器发送事件)把消息发给智能体,同时实时接收响应、工具调用和状态更新。
python
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": "Review the code..."}],
}])
# 流式传输响应
for event in stream:
if event.type == "agent.message":
for block in event.content:
print(block.text, end="")
elif event.type == "agent.tool_use":
print(f"\n[Using tool: {event.name}]")
elif event.type == "session.status_idle":
print("\n[Agent finished]")
break流式的优势:可以看到它在做什么——什么时候读文件、什么时候跑命令、什么时候去查Web,整个过程都是可见的。必要时可以中途打断。
完整实战示例
python
from anthropic import Anthropic
client = Anthropic()
# 1. 创建智能体
agent = client.beta.agents.create(
name="Python Developer",
model="claude-sonnet-4-6",
system="""You are an expert Python developer.
1. Plan your approach first
2. Write clean, well-tested code
3. Run the tests to verify
4. Fix any issues before reporting completion""",
tools=[{"type": "agent_toolset_20260401"}],
)
# 2. 创建环境
environment = client.beta.environments.create(
name="python-env",
config={
"type": "cloud",
"packages": {
"pip": ["pytest", "requests", "fastapi", "uvicorn"],
},
"networking": {"type": "unrestricted"},
},
)
# 3. 启动会话
session = client.beta.sessions.create(
agent=agent.id,
environment_id=environment.id,
)
# 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": """
Build a FastAPI app with:
- A /health endpoint
- A /fibonacci/{n} endpoint
- Input validation
- Unit tests
Run the tests and make sure they all pass.
"""}],
}])
for event in stream:
if event.type == "agent.message":
for block in event.content:
if hasattr(block, 'text'):
print(block.text, end="")
elif event.type == "session.status_idle":
break
# 5. 后续任务继续在同一会话
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": "Add a /prime/{n} endpoint"}],
}])
...智能体自己走完整个流程:先想怎么做,再写代码、建文件、装依赖、跑测试,最后返回结果。
总结
| 概念 | 作用 |
|---|---|
| Agent | 可复用的配置(模型+提示词+工具) |
| Environment | 运行模板(依赖包+网络+仓库) |
| Session | 独立容器实例 |
| Events | 通信通道(SSE流式传输) |
本质:和Claude Code一样的ReAct循环(Reason→Act→Observe),但整套运行环境和调度逻辑都帮你搭好了。你只需要给任务,它自己跑完。
