Skip to content

Anthropic官方Agent Harness平台:Claude Managed Agents完整指南

2026年4月22日

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 FetchWeb访问

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),但整套运行环境和调度逻辑都帮你搭好了。你只需要给任务,它自己跑完。

不要孤军奋战啦!

加入微信群一起学习交流 AI

与大神一起使用 OpenClaw、Hermes、Claude Code、Seedance 2.0、GPT-Image-2 等

微信公众号

扫码关注微信公众号
私信 "加群",将自动获取微信群二维码

探索 AI 世界,掌握智能未来