Amazon Bedrock AgentCore harness 正式可用:数分钟内从创意到生产级智能体
Amazon Bedrock AgentCore harness 正式可用:数分钟内从创意到生产级智能体
一年前,Simon Willison 写下了关于智能体(Agent)最简洁的定义之一,至今仍被广泛引用:
一个 LLM 智能体在一个循环中运行工具以实现目标。
这个定义之所以广为流传,是因为它准确描述了每个生产级智能体的实际运作方式。Kiro、Amazon Q Developer、Quick Agents、Codex、Claude Code:在底层,它们都运行着相同的模式。智能体循环(agent loop)是它们的共同基础。
但循环从来不是难点。真正的难点在于围绕它的一切。
选择一个框架。连接工具。提供沙箱化计算环境。配置存储、密钥、网络。决定记忆(memory)存放位置。接入可观测性。将正确的依赖放入正确的容器中。此外,本地原型设计往往是简单的部分:一个开发者可以在一个下午在自己的笔记本电脑上搭建一个智能体。而将其投入生产环境,工作量会急剧增加;一旦它需要服务多个用户,全新的工作层就会出现:并发、隔离、身份、状态、扩展。
更糟糕的是,这种开销会随着每个新用例而倍增。想要尝试不同模型、更换工具、将智能体指向新领域的团队,会发现自己在重复相同的底层工作。瓶颈不在于智能程度,而在于编排(orchestration)和基础设施。
当我们在四月以预览版形式发布 AgentCore harness 时,我们做出了一个大胆的假设:AgentCore 原语(Runtime、Memory、Gateway、Browser、Identity、Observability)已经为团队提供了在生产环境中运行智能体所需的一切;他们不应该每次都手动连接它们。Harness 将这些连接作为托管抽象来处理,因此它变成了你配置的东西,而不是你构建的东西。
今天,Amazon Bedrock AgentCore harness 正式可用。通过两个 API 调用(CreateHarness 定义智能体,InvokeHarness 运行它),在 AgentCore CLI 中快速操作(如下方动图所示),或在控制台点击几下,你就能在几分钟内拥有一个正在运行的智能体。它在自己的隔离环境中运行,带有文件系统和 shell,因此可以安全地读取文件、运行命令和编写代码。它能够在会话间记住用户和对话上下文,获取你指向的技能(包括 AWS 策划的目录),浏览网页,通过 Gateway 或 MCP 调用你的工具,并且在会话中途切换模型提供商时不会丢失上下文。每一步都会实时流式返回给你,并自动追踪到 CloudWatch。除非你愿意,否则无需编写编排代码或构建容器。
Harness 能为你提供什么
Harness 是智能体在生产环境中运行所需的一切,封装在两个 API 调用后面。你指向所需的模型、工具、技能和指令。AgentCore 处理沙箱环境、记忆、存储、身份以及将它们结合在一起的可观测性。下图中标记为 * 的是 GA 版本新增的功能。

任意模型:为任务选择合适的模型,需要时切换
不同的任务需要不同的模型。客户告诉我们,他们希望用一个模型进行规划,用另一个模型执行;为了性价比测试而切换提供商;或者在某个模型出现回归问题时切换,所有这一切都不丢失对话。在 CreateHarness 上选择一个默认模型,然后在任何单个 InvokeHarness 调用中覆盖它(当需要时)。默认设置会保留在所有其他调用中。为所需提供商的 model 字段设置匹配的值:
bedrock:适用于 Amazon Bedrock 上提供的任何模型,包括 Anthropic Claude、Amazon Nova、Meta Llama、DeepSeek、Qwen、Kimi、MiniMax、Cohere、Mistral,以及最近新增的 Bedrock 上的 OpenAI GPT-5.5 和 GPT-5.4openai:直接访问 OpenAI 的 API(api.openai.com)gemini:Google GeminiliteLlm:任何由 LiteLLM 支持的第三方提供商,包括 Anthropic direct、Cohere、Mistral、Vertex、Azure OpenAI 等
客户告诉我们,最重要的部分是:在任意时刻切换提供商,甚至在会话中途切换,并保持上下文。例如,你可以使用 Claude Opus 进行规划,切换到 GPT-5.5 编写代码,再切换到 Gemini 进行总结。对话继续进行。Harness 无缝处理这种转换。
如果你使用 API 密钥访问任何底层模型提供商,这些密钥会安全地存储在 AgentCore Identity 的令牌保管库(token vault)中。智能体永远看不到原始凭证。
工具即配置:无需编写胶水代码即可将智能体连接到世界
工具是智能体影响其自身推理之外任何事物的方式,而连接它们正是大多数团队暗自讨厌的部分。客户告诉我们,他们不想编写每个 API 的适配器代码,不想管理 MCP 服务器生命周期,也不想构建自己的浏览器沙箱。他们希望声明智能体可以使用哪些工具,然后让 harness 处理连接、认证和执行。
CreateHarness 上的 tools 是一个列表。每个条目都有一个 type 和一个 config 块,harness 会将它们连接起来:
agentcore_gateway:你可以通过 ARN 引用一个 AgentCore Gateway。Gateway 暴露的每个目标(OpenAPI、Smithy、Lambda、MCP)都会作为一个工具出现,并为你处理 IAM/JWT 认证、每个工具的授权以及出站凭据代理。remote_mcp:你可以通过 URL 直接连接到任何 MCP 服务器。当服务器已经安全且不需要 Gateway 的治理层时,这很适用。agentcore_browser:一个完整的浏览器沙箱,只需一行引用。点击、输入、导航、截图。agentcore_code_interpreter:沙箱化的 Python 和 Node 执行,同样是一行模式。inline_function:一个工具模式,harness 会将其作为工具使用事件(tool-use event)在流中发出,并等待你响应。用于人工审批流程(human-in-the-loop)或必须在你自己这边运行的工具。
每个会话还会获得内置的 shell(在 microVM 内运行命令)和 file_operations(在智能体的文件系统上读写),无需你列出它们。它们使得有状态的文件系统和 shell 对于模型可用。
在 InvokeHarness 上,你有相同的选项用于每次调用的编辑:你可以传递新工具来更改单次调用的工具,或者通过 allowed_tools 参数将列表缩减为本次调用所需的一组专注工具。默认设置在创建时设定,但在调用时可以轻松覆盖。
内置记忆:你的 Harness 会记住用户和对话
客户希望他们的智能体能够识别返回的用户,从上次对话中断的地方继续,并记住偏好设置,而无需任何人重新播放消息历史。在预览版中,你必须单独配置一个 AgentCore Memory 资源并传递其 ARN,这虽然可行,但需要第二次 API 调用,并且在投产过程中很容易忘记。
在 GA 版本中,如果在 CreateHarness 上省略 memory,则会自动配置一个托管记忆,带有合理的默认值:SEMANTIC + SUMMARIZATION 策略,30 天事件过期,AWS 拥有的加密,以及通过以 actorId 为键的命名空间模板默认实现的多租户隔离。这是一个真实的、由客户拥有的 Memory 资源,为你自动配置。记忆不是强制性的。如果你的智能体是无状态的,设置 memory: { disabled: {} },harness 将完全跳过记忆。如果你更愿意附加你已经拥有的 AgentCore Memory 资源,请传递带有其 ARN 的 agentCoreMemoryConfiguration。这三种路径如下所示:
// 自动托管记忆(默认)
{
"memory": {}
}
// 禁用记忆
{
"memory": {
"disabled": {}
}
}
// 使用现有的 AgentCore Memory
{
"agentCoreMemoryConfiguration": {
"memoryArn": "arn:aws:bedrock-agentcore:us-east-1:123456789012:memory/example-memory"
}
}
切换到自己的记忆只需一次 UpdateHarness 调用。传递 agentCoreMemoryConfigur(原文截断,但根据上下文,应指 agentCoreMemoryConfiguration 的配置)。