可易

在 n8n 中用 Amazon Bedrock AgentCore harness 运行生产级 AI 智能体

可易团队阅读约 11 分钟

本文按步骤说明如何在 n8n 中安装 AgentCore harness 节点,配置持久记忆、按用户隔离、代码沙箱、技能和 VPC 私有运行。

目录

#在 n8n 中用 Amazon Bedrock AgentCore harness 运行生产级 AI 智能体

如果你在 n8n 里搭建并自动化工作流,而且不怎么写代码,你大概用过它的 AI Agent 节点,把一次模型调用加进工作流。这是一个很好的起点。但生产级智能体(Agent)需要的不止一次模型调用:要有跨运行持续的记忆(memory),要有它真正能用的工具,例如浏览器或代码沙箱,还要有空间去处理更长的任务。自己搭建这层脚手架才是难的部分。

Amazon Bedrock AgentCore 是一个平台,用来大规模构建、连接和优化智能体,不限框架或模型。AgentCore harness 是 Amazon Bedrock AgentCore 的一项能力,现已正式发布,并为你提供这层脚手架。一个新的开源社区节点把它带进 n8n 的可视化编辑器。你可以获得带持久记忆、真实工具和自选模型提供方的生产级智能体,而不必编写基础设施或智能体代码。你也不被绑定在单一模型上。该节点可用于 Amazon Bedrock、OpenAI、Google Gemini 以及 LiteLLM 支持的提供方,并且可以在同一段对话的不同轮次之间切换提供方。

在本文中,你将安装节点 @aws/n8n-nodes-agentcore,并在 n8n 编辑器里逐步构建智能体。你将从一个能记住对话的智能体开始,把记忆限定到单个用户,加入代码解释器工具,赋予智能体技能(skill),最后在你自己的虚拟私有云(virtual private cloud,VPC)中私有运行智能体。该节点以 MIT 许可证开源,AgentCore harness 由 AWS 的开源智能体框架 Strands Agents 驱动。

这个节点做什么

智能体不只是一个模型。模型负责推理,但 harness 负责周围的工作:运行编排循环,调用工具,管理上下文窗口,跨轮次保持状态,从失败中恢复,并隔离每个会话。构建这一层是大多数团队花时间的地方。

AgentCore harness 把这一层作为托管能力提供给你。你在配置中定义智能体,包括它使用的模型、调用的工具、可以访问的技能,以及它遵循的指令,然后由 AgentCore 组装并运行循环。每个会话在自己的隔离环境中运行,带有文件系统和 shell、跨会话记忆,以及网页浏览。当配置不够用时,你可以把 harness 导出为 Strands 代码,并继续在同一系统上运行。

n8n 内置的 AI Agent 节点适合工作流中的单次模型调用。社区节点更进一步,把完整 harness 暴露在 n8n 编辑器中。它有一个操作,以及一个起决定作用的字段 Harness ARN:

  • 留空时,节点在第一次运行时为你创建智能体,在后续运行中复用它,并在配置变化时更新它。
  • 粘贴一个已有的 harness ARN,节点就直接调用该智能体,因此你可以使用在 n8n 之外创建的智能体。

该节点使用与现有 n8n AWS Lambda 和 Amazon Simple Storage Service(Amazon S3)节点 相同的 AWS 凭据模式,所以如果你已经在 n8n 中自动化 AWS 服务,会觉得熟悉。

前提条件

开始之前,请确认已具备以下条件:

  • 一个 n8n 实例。 你可以自托管安装 n8n,也可以使用 n8n Cloud。两者都适用于本节点。如果你是 n8n 新手,请参阅 n8n 部署文档 选择一种方式并搭建实例,然后完成初次登录,进入你将在本文中构建工作流的编辑器。
  • 已安装该节点。@aws/n8n-nodes-agentcore 是已验证的社区节点,因此你可以直接在 n8n 节点面板中找到它。在编辑器中添加节点,搜索 Amazon Bedrock AgentCore 并选择它,n8n 会为你安装。(你也可以从设置、社区节点、安装中输入 @aws/n8n-nodes-agentcore 来安装。)本文使用节点版本 0.3。
n8n 节点面板的搜索结果中出现 Amazon Bedrock AgentCore 社区节点

重要: 在可以的地方,使用来自 AWS IAM 身份中心(IAM Identity Center)或 AWS Security Token Service(AWS STS)的临时凭据,并在配置 IAM 权限时遵循最小权限原则。不要把凭据提交到源代码管理。

关于费用: AgentCore harness、它配置的托管记忆存储,以及(如果你使用的话)VPC 端点,都是计费的 AWS 资源。请按文末的清理一节移除你为本演练创建的内容,并参阅 AgentCore 文档了解定价。

设置凭据

你只需配置一次 AWS 凭据,方式与 n8n 中其他 AWS 节点相同。

  1. 在 n8n 中进入 Credentials(凭据),选择 New(新建)。
  2. 搜索并选择 Amazon Bedrock AgentCore API。
n8n 新建凭据对话框,凭据类型列表中选中了 Amazon Bedrock AgentCore API
  1. 输入 Access Key ID(访问密钥 ID) 和 Secret Access Key(秘密访问密钥);如果使用临时凭据,再输入 Session Token(会话令牌)。
  2. 选择 Region(区域),并输入 harness 在运行时代入的 Execution Role ARN(执行角色 ARN)。
  3. 选择 Test(测试) 确认连接,然后选择 Save(保存)。
n8n 中的 Amazon Bedrock AgentCore API 凭据表单,包含访问密钥、区域和执行角色 ARN,以及一次成功的测试

n8n 中的 Amazon Bedrock AgentCore API 凭据,显示访问密钥、区域和执行角色 ARN,以及一次成功的连接测试。

构建第一个智能体并赋予记忆

在本演练中,你构建一个能在对话各轮之间记住细节的智能体。记忆默认开启,因此节点会为你配置一个托管记忆存储,无需额外配置。

  1. 在新工作流中添加一个手动触发器,在它之后添加 Amazon Bedrock AgentCore 节点,并挂上你的凭据。
  2. 将 Harness ARN 留空,让节点创建并复用该智能体。
  3. 输入 Agent Name(智能体名称),例如 travel_concierge。
  4. 将 Model Provider(模型提供方) 设为 Amazon Bedrock,并输入 Model ID(模型 ID),例如一个 Claude 模型。
  5. 输入 System Prompt(系统提示),例如 _You are a warm, concise travel concierge_,以及 Session ID(会话 ID),例如 demo-travel-session。复用这个会话 ID,才会在后续运行中延续对话。
  6. 为第一轮输入 Prompt(提示),例如 “I love warm beaches and I’m vegetarian. Note that for me.”,然后运行该节点。

第一次运行大约需要 30–60 秒,因为 AWS 要配置该智能体。输出包括智能体的响应、令牌用量,以及节点所配置内容的摘要,其中包括它为你创建的记忆存储。

第 1 轮节点输出,包含智能体响应和 harness 摘要,确认托管记忆以及已配置的记忆 ARN

第 1 轮。节点输出显示智能体的响应,以及一份 harness 摘要,确认托管记忆和已配置的记忆 ARN。

现在只把 Prompt(提示) 改成 _Suggest one destination and one dish I’d enjoy, based on what you know about me_,保持相同的会话 ID,再次运行。

第 2 轮节点输出,智能体回忆起第 1 轮中温暖海滩和素食这两项偏好

第 2 轮。智能体回忆起第 1 轮的偏好,即温暖海滩和素食,因为对话通过同一个会话 ID 得以保持。

当你提供会话 ID 时,输出字段 sessionSource 的值为 provided;第 2 轮的输入令牌数会上升,因为节点在智能体推理之前加载了先前的对话。如果将会话 ID 留空,每次运行都会开始一段新对话。

用参与者 ID 按用户限定记忆

当一个智能体服务许多人时,你可以用 Actor ID(参与者 ID) 把每个人的记忆分开。记忆按参与者和会话限定范围,因此不同参与者从同一个智能体得到相互隔离的历史。

范围是一个层级:智能体保存共享配置,Actor ID 把一个用户的记忆与另一个用户隔开,Session ID 则在一个参与者内部隔离单次对话。一个参与者可以有多个会话。另一个参与者即使使用相同的会话 ID,仍然拥有自己独立的记忆。

  1. 使用一个带托管记忆的智能体,例如 team_assistant。
  2. 在 Additional Options(其他选项) 下,把 Actor ID 设为按用户区分的值,例如 user-alice,并为该用户设置 Session ID。
  3. 运行第一轮,例如 _Remember my project is codenamed Aurora._
  4. 把提示改为 _What’s my project codename?_,用相同的参与者和会话再次运行。
节点配置面板,为特定用户设置了 Actor ID 和 Session ID

为特定用户配置了参与者 ID 和会话 ID 的节点。

参与者 user-alice 的第 1 轮输出,存储了项目代号偏好

参与者 user-alice 的第 1 轮,其中存储了一项偏好。

第 2 轮输出,智能体返回为参与者 user-alice 存储的代号

同一参与者的第 2 轮。智能体返回它为该用户存储的值。不同的参与者 ID 保持各自独立的记忆。

添加工具:在沙箱中运行代码

当智能体能使用工具时,能力会强得多。在本演练中,你给智能体一个代码解释器,让它在沙箱环境中运行代码。

  1. 使用一个智能体,例如 data_analyst,并搭配一个 Claude 模型。
  2. 在 System Prompt(系统提示) 中,指示智能体编写并运行代码来回答,然后报告结果。
  3. 打开 Add Tools(添加工具),然后在 Tools(工具) 下选择 Add Tool(添加工具),把 Type(类型) 设为 AgentCore Code Interpreter,这是 Amazon Bedrock AgentCore 的一项能力。
  4. 输入一个需要计算的 Prompt(提示),例如 “Generate 500 random exam scores between 0 and 100, then report the mean, median, and standard deviation.”,然后运行该节点。

智能体在沙箱中编写并运行代码,返回均值、中位数和标准差的计算结果,而不是估算它们。harness 摘要显示已配置一个工具。

你可以用同样的方式添加其他工具,包括云浏览器、AgentCore Gateway(Amazon Bedrock AgentCore 的一项能力),以及远程模型上下文协议(Model Context Protocol,MCP)服务器。

赋予智能体技能

技能是指令和脚本的打包,按需给智能体提供领域知识。你可以从 AWS 精选目录、Git 仓库、Amazon S3 或文件系统路径加载它们,harness 只在任务需要时才加载。

  1. 使用一个智能体,例如 aws_architect,并搭配一个 Claude 模型。
  2. 打开 Add Skills(添加技能),然后在 Skills(技能) 下选择 Add Skill(添加技能) 并设置 Source(来源)。对于精选目录,选择 AWS Skills,并输入一个通配模式,例如 core-skills/*。你可以添加更多技能,例如一个指向公共仓库的 Git 来源。
  3. 输入一个能从该技能受益的 Prompt(提示),例如 “Outline a serverless image-upload pipeline on AWS”,然后运行该节点。

智能体应用已加载的技能来生成指导,harness 摘要显示已配置的技能数量。

在你的 VPC 中运行

对于需要私有网络访问的智能体,你可以在自己的 VPC 中运行 harness。你在凭据上设置网络配置,因此该凭据所配置的每个智能体都会私有运行。

  1. 编辑你的 Amazon Bedrock AgentCore API 凭据。
  2. 将 Network Mode(网络模式) 设为 VPC。
  3. 输入 VPC Subnet IDs(VPC 子网 ID) 和 VPC Security Group IDs(VPC 安全组 ID),然后保存。
Amazon Bedrock AgentCore API 凭据设为 VPC 网络模式,并填有子网和安全组 ID

为 VPC 模式配置了子网和安全组 ID 的凭据。

你的子网不需要互联网访问。harness 从同一区域的私有 Amazon ECR 仓库拉取其托管容器镜像,因此你需要 Amazon ECR 和 Amazon S3 的 VPC 端点,而不是 NAT 网关。所需端点和执行角色权限请参阅 AgentCore harness 网络配置文档。所需端点和执行角色权限请参阅 AgentCore harness 安全文档。

  1. 在工作流中,使用一个智能体,例如 private_vpc_agent,并使用已启用 VPC 的凭据。
  2. 输入 Prompt(提示) 并运行该节点。
VPC 智能体的节点输出,harness 摘要显示网络模式为 VPC

VPC 智能体的节点输出。harness 摘要显示网络模式为 VPC。

清理

你创建的每个智能体都是 AWS 账户中的一项 harness 资源,并且它可能配置一个托管记忆存储。为避免持续计费,删除不再需要的智能体。

  1. 使用 AWS 命令行界面(AWS Command Line Interface,AWS CLI)或 Amazon Bedrock AgentCore 控制台列出你的 harness。
aws bedrock-agentcore-control list-harnesses --region us-west-2
  1. 删除你为本博文创建的那些。定价细节请参阅 AgentCore 文档。
aws bedrock-agentcore-control delete-harness --harness-id <harness-id> --region us-west-2

如果启用了 VPC,你可能还想移除为本演练创建的任何接口 VPC 端点,因为接口端点在存在期间会产生费用。

接下来可以做什么

本文演练了记忆、按用户限定范围、代码解释器工具、技能和 VPC 联网。该节点已经支持 Amazon Bedrock AgentCore harness 功能集中的更多内容。下面是接下来可以尝试的事项,配置方式与上面配置各项功能的方式相同:

  • 自选模型提供方,可在会话中途切换。 在 Amazon Bedrock 之外使用 OpenAI、Google Gemini 或 LiteLLM 支持的提供方。在节点上设置提供方和模型,并在同一会话的不同轮次之间切换,而不丢失上下文。非 Bedrock 提供方使用存放在 AgentCore Identity(Amazon Bedrock AgentCore 的一项能力)中的 API 密钥。
  • 更多工具。 在代码解释器之外,添加云浏览器、带可选 OAuth 出站身份验证的 AgentCore Gateway,以及远程 MCP 服务器。
  • 内联函数。 让智能体回调你的 n8n 工作流以完成人工在环(human-in-the-loop)步骤,再把结果返回给智能体。
  • 自定义容器。 使用你自己的 Linux/arm64 容器镜像,使智能体带着你自己的依赖运行。
  • 文件系统挂载。 使用托管会话存储,或挂载 Amazon Elastic File System(Amazon EFS)或 Amazon S3,以保存比会话更久的数据。
  • OAuth 身份验证的调用。 用身份提供方发放的令牌,调用受入站 JSON Web Token(JWT)授权方保护的智能体,该令牌设置在 AgentCore 凭据上。
  • 版本和端点。 每次配置变更都成为一个不可变版本,命名端点让你把预发布和生产固定到特定版本。

GitHub 仓库中的示例文件夹包含其中许多可导入的工作流。对于端到端用例,examples/templates 文件夹有更完整的工作流,展示智能体与其他 n8n 节点一起工作的完整、可导入自动化。

结论

在本文中,你安装了面向 n8n 的开源 AgentCore harness 社区节点,并构建了这样的智能体:它们能记住对话、把按用户的记忆分开、在沙箱中运行代码、使用技能,并在 VPC 中私有运行。这一切都在 n8n 编辑器中完成,无需基础设施或智能体代码。因为该节点可用于 Amazon Bedrock、OpenAI、Gemini 和 LiteLLM 提供方,你可以为每项任务选择合适的模型。

要开始,从 n8n 节点面板添加 Amazon Bedrock AgentCore 节点(或从设置 > 社区节点安装 @aws/n8n-nodes-agentcore),导入一个示例工作流,并构建你的第一个智能体。该节点以 MIT 开源,并构建在开源 Strands Agents 框架之上,欢迎在 GitHub 仓库上贡献和反馈。要进一步了解底层能力,请参阅 AgentCore 文档。

PRIMARY_SOURCE: https://aws.amazon.com/blogs/machine-learning/run-production-ai-agents-in-n8n-with-amazon-bedrock-agentcore-harness

  • #n8n
  • #AgentCore
  • #持久记忆
  • #代码沙箱
  • #VPC