Skip to content

OpenClaw + n8n 工作流编排

让您的 AI agent 直接管理 API 密钥并调用外部服务是安全事件的配方。每个新集成意味着在 .env.local 中又增加了一个凭证,又增加了一个 agent 可能意外泄露或误用的表面。

此用例描述了一种模式,其中 OpenClaw 通过 webhooks 将所有外部 API 交互委托给 n8n 工作流——agent 从不接触凭证,每个集成都可以可视化检查和锁定。

痛点

当 OpenClaw 直接处理一切时,会遇到三个累积问题:

  • 无可见性:当 agent 的工作隐藏在 JavaScript 技能文件或 shell 脚本中时,很难检查它实际构建了什么
  • 凭证泛滥:每个 API 密钥都存在于 agent 的环境中,一次糟糕的提交就可能导致泄露
  • Token 浪费:确定性子任务(发送邮件、更新电子表格)在可以作为简单工作流运行时,会燃烧 LLM 推理 token

功能

  • 代理模式:OpenClaw 编写带有传入 webhook 的 n8n 工作流,然后为所有未来 API 交互调用这些 webhook
  • 凭证隔离:API 密钥存储在 n8n 的凭证存储中——agent 只知道 webhook URL
  • 可视化调试:每个工作流都可以在 n8n 的拖放 UI 中检查
  • 可锁定工作流:一旦工作流构建并测试完成,您就锁定它,这样 agent 就无法修改它与 API 交互的方式
  • 保护步骤:在执行任何外部调用之前,您可以在 n8n 中添加验证、速率限制和审批门

工作原理

  1. Agent 设计工作流:告诉 OpenClaw 您需要什么(例如,"创建一个当新 GitHub issue 被标记为 urgent 时发送 Slack 消息的工作流")
  2. Agent 在 n8n 中构建:OpenClaw 通过 n8n 的 API 创建工作流,包括传入 webhook 触发器
  3. 您添加凭证:打开 n8n 的 UI,手动添加您的 Slack token / GitHub token
  4. 您锁定工作流:阻止 agent 进一步修改
  5. Agent 调用 webhook:从现在起,OpenClaw 使用 JSON 负载调用 http://n8n:5678/webhook/my-workflow——它永远看不到 API 密钥
text
┌──────────────┐     webhook 调用      ┌─────────────────┐     API 调用     ┌──────────────┐
│   OpenClaw   │ ──────────────────→  │   n8n 工作流     │ ──────────────→  │   外部       │
│   (agent)    │   (无凭证)          │  (已锁定,带    │  (凭证        │   服务       │
│              │                       │   API 密钥)     │   保留在此)    │  (Slack 等)  │
└──────────────┘                       └─────────────────┘                  └──────────────┘

所需技能

  • n8n API 访问(用于创建/触发工作流)
  • fetchcurl 用于 webhook 调用
  • Docker(如果使用预配置的堆栈)
  • n8n 凭证管理(手动,每个集成一次性设置)

设置方法

选项 1:预配置 Docker 堆栈

社区维护的 Docker Compose 设置(openclaw-n8n-stack)在共享 Docker 网络上预先连接一切:

bash
git clone https://github.com/caprihan/openclaw-n8n-stack.git
cd openclaw-n8n-stack
cp .env.template .env
# 将您的 Anthropic API 密钥添加到 .env
docker-compose up -d

这为您提供:

  • 端口 3456 上的 OpenClaw
  • 端口 5678 上的 n8n
  • 共享 Docker 网络,这样 OpenClaw 可以直接调用 http://n8n:5678/webhook/...
  • 预建工作流模板(多 LLM 事实核查、邮件分类、社交监控)

选项 2:手动设置

  1. 安装 n8n(npm install n8n -g 或通过 Docker 运行)
  2. 配置 OpenClaw 了解 n8n 基础 URL
  3. 将此添加到您的 AGENTS.md:
text
## n8n 集成模式

当我需要与外部 API 交互时:

1. 切勿将 API 密钥存储在我的环境或技能文件中
2. 检查此集成是否已存在 n8n 工作流
3. 如果没有,通过 n8n API 创建一个带有 webhook 触发器的工作流
4. 通知用户添加凭证并锁定工作流
5. 对于所有未来调用,使用带有 JSON 负载的 webhook URL

工作流命名:openclaw-{服务}-{操作}
示例:openclaw-slack-send-message

Webhook 调用格式:
curl -X POST http://n8n:5678/webhook/{工作流名称} \
  -H "Content-Type: application/json" \
  -d '{"channel": "#general", "message": "Hello from OpenClaw"}'

关键见解

  • 一箭三雕:可观察性(可视化 UI)、安全性(凭证隔离)和性能(确定性工作流不消耗 token)
  • 测试后锁定:"构建 → 测试 → 锁定"循环至关重要——没有锁定,agent 可以静默修改工作流
  • n8n 有 400+ 集成:您想要连接的大多数外部服务已经有 n8n 节点,节省了 agent 编写自定义 API 调用的工作
  • 免费审计追踪:n8n 记录每次工作流执行,带有输入/输出数据

灵感来源

此模式由 Simon Høiberg 描述,他概述了这种方法优于让 OpenClaw 直接处理 API 交互的三个原因:通过 n8n 的可视化 UI 实现可观察性、通过凭证隔离实现安全性,以及通过将确定性子任务作为工作流而不是 LLM 调用运行来实现性能。openclaw-n8n-stack 仓库提供了一个现成的 Docker Compose 设置来实现此模式。

相关链接

MIT 许可证发布