Amazon Bedrock AgentCore harness 已正式发布,n8n 也可以通过新的开源社区节点把它加入工作流。这样,Agent 不再只是一次性的模型调用,而可以拥有持久记忆、真实工具、代码执行能力以及 VPC 隔离环境,同时仍然通过 n8n 编辑器完成编排。
这类组合适合需要接入业务系统的自动化场景:例如读取工单、查询内部知识、调用订单 API、执行数据处理任务,再把结果写回 CRM 或通知渠道。n8n 负责工作流连接和触发,AgentCore harness 负责 Agent 运行时能力。
先理解两层职责
一个实用的 n8n 工作流通常可以拆成三层:
| 层次 | 主要职责 |
|---|---|
| n8n | Webhook、定时任务、条件分支、系统连接器和结果通知 |
| AgentCore harness | Agent 会话、记忆、工具调用、代码执行和运行环境隔离 |
| Amazon Bedrock | 提供底层模型能力 |
这种分工减少了自建 Agent 服务的工作量。团队不需要为每个 Agent 单独维护 HTTP 服务、会话存储和执行环境,但仍然需要明确权限、工具边界和错误处理策略。
“无基础设施”并不意味着“无需配置”。实际使用时,仍要在 AWS 和 n8n 中准备身份凭证、模型访问权限、社区节点以及 Agent 的工具和运行时设置。VPC 隔离也需要按照组织的网络和安全要求进行配置。
在 n8n 中设计 Agent 步骤
可以从一个窄职责 Agent 开始,而不是让 Agent 直接接管整条业务流程。一个典型流程如下:
- 使用 Webhook 或定时触发器接收任务。
- 用 Set 或 Code 节点整理输入,限制字段范围。
- 将结构化输入传给 AgentCore harness 节点。
- 让 Agent 根据允许的工具完成查询或处理。
- 检查 Agent 返回的状态和结构化结果。
- 由 n8n 负责写回业务系统、通知人工或进入重试分支。
Agent 的输入最好是明确的任务对象,而不是一整段未经筛选的原始文本。这样可以降低提示注入风险,也方便日志审计和重放。
下面是一个可直接放进 n8n Code 节点的输入整理示例。它只保留必要字段,并为后续 Agent 步骤生成稳定的任务格式:
// n8n Code node: Run Once for All Items
const item = $input.first().json;
const task = {
requestId: String(item.requestId ?? crypto.randomUUID()),
customerId: String(item.customerId ?? ""),
question: String(item.question ?? "").trim(),
allowedActions: ["lookup_order", "summarize"],
constraints: {
maxOutputTokens: 800,
requireSources: true,
doNotModifyRecords: true,
},
};
if (!task.customerId || !task.question) {
throw new Error("customerId and question are required");
}
return [{ json: task }];
将这个节点连接到 AgentCore harness 社区节点时,可以把 question 作为任务文本,把 requestId、customerId 和 constraints 作为结构化上下文。社区节点的具体字段名称可能随版本变化,因此应以 n8n 编辑器中该节点显示的输入项为准。
让 Agent 使用真实工具
Agent 的价值不只是生成答案,而是能在权限受控的范围内完成动作。可以把工具按风险分级:
- 只读工具:查询订单、检索知识库、读取库存。
- 可逆写操作:创建草稿、生成待审核任务、发送内部通知。
- 高风险操作:退款、删除数据、修改生产记录。
生产工作流中,高风险操作不应仅依赖提示词约束。可以在 n8n 中显式增加审批分支:Agent 只生成建议和参数,n8n 先检查条件,再等待人工确认,最后调用写操作节点。
例如,Agent 返回结果时可以约定这样的结构。下面是便于调试的示例数据,字段名需要与实际节点输出保持一致:
{
"requestId": "req-2025-001",
"status": "needs_approval",
"answer": "订单已找到,建议将问题转交物流团队。",
"toolCalls": [
{
"name": "lookup_order",
"arguments": {"orderId": "A10086"},
"mode": "read_only"
}
],
"sources": ["order-service", "shipping-policy"]
}
在 n8n 中,可以用 If 节点判断 status:completed 进入自动通知,needs_approval 进入人工审批,failed 进入告警和重试分支。不要把 Agent 的自然语言输出直接当作下游系统的命令;应优先消费结构化字段,并对工具名、参数和目标资源再次校验。
记忆、代码执行与 VPC 隔离
持久记忆适合保存跨会话上下文,例如客户偏好、工单历史摘要或 Agent 已经确认过的业务事实。但不应把所有对话原文无限期写入记忆。建议为记忆设置范围和生命周期:
- 按客户、项目或工作流划分命名空间。
- 只保存后续任务确实需要的摘要。
- 对个人信息和凭证执行脱敏。
- 设计删除和过期策略。
代码执行能力适合数据清洗、格式转换、统计计算和小型文件处理。它不应成为绕过权限系统的通道。输入文件大小、运行时长、网络访问、依赖包和输出目录都需要有明确限制。
VPC 隔离则适合 Agent 需要访问私有服务或内部数据的场景。部署前需要确认:
- Agent 运行环境是否能访问目标子网和安全组允许的服务。
- DNS、出站访问和必要的 AWS 服务端点是否可用。
- n8n 所在环境与 Agent 运行环境之间需要哪些网络路径。
- 凭证是否使用最小权限,而不是共享管理员身份。
这些能力的组合让 Agent 更接近可运营的服务,但也增加了配置面。网络连通性、IAM、工具权限和记忆数据治理应作为上线检查项,而不是等出现故障后再补充。
一套可落地的上线检查清单
可以按以下顺序把一个实验工作流推进到生产:
- 在 n8n 中安装并固定社区节点版本,记录节点配置和凭证归属。
- 为 Agent 设定单一任务边界,先只开放只读工具。
- 用 Code 或 Set 节点规范化输入,拒绝缺少关键字段的请求。
- 要求 Agent 返回状态、请求 ID、工具调用和来源等结构化结果。
- 为超时、限流、模型错误和工具错误增加重试或人工处理分支。
- 对记忆设置命名空间、保留时间和删除机制。
- 对代码执行设置资源和网络限制,并记录执行日志。
- 在 VPC 环境中验证 DNS、路由、安全组和 AWS 权限。
- 用脱敏数据测试提示注入、越权工具调用和重复执行。
- 监控每次运行的延迟、Token 使用量、工具失败率和人工审批率。
采用时最重要的取舍是:让 Agent 处理需要判断的部分,让 n8n 处理确定性的连接、分支和审批。这样既能利用 AgentCore harness 的记忆、工具、代码执行和隔离能力,也能保留传统工作流的可观测性与控制力。