octop 本身不直接桥接钉钉,需通过 openclaw gateway 作为消息接入层对接钉钉,再经 http 转发或 mcp 协议将请求转至 octop 执行;配置需对齐 token、端口与协议版本,并手动启用钉钉 stream 模式及卡片权限。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Octop 的 harness-gateway 并不直接桥接钉钉。它本身是 Octop 平台内部用于统一调度、记忆管理与 Agent 执行的运行时网关,专注在多用户、多 Agent、可迁移记忆等核心能力上,不内置钉钉通道(channel)支持。
真正负责对接钉钉的是 OpenClaw 的 gateway —— 这也是当前(2026年)主流且成熟的做法:用 OpenClaw 作为消息通道网关,把钉钉机器人接入进来,再通过 openclaw → octop 的方式将请求转发给 Octop 的后端服务(如 octop serve 或其 MCP 兼容接口)。
所以“桥接钉钉”这件事,实际分两层完成:
1. 钉钉 → OpenClaw gateway(消息接入层)
这是标准流程,必须走:
- 在钉钉开发者平台创建应用,启用「机器人」能力,选择 Stream 模式(关键,否则无法流式响应和卡片交互)
- 获取 Client ID 和 Client Secret,填入 OpenClaw 配置
- 执行命令配置钉钉通道(注意字段名是
dingtalk-connector,不是dingtalk):
openclaw config set channels.dingtalk-connector '{ "gatewayToken": "your-secret-token", "clientId": "xxx", "clientSecret": "yyy", "enabled": true }'- 确保已安装钉钉插件:
openclaw plugins install -l https://github.com/soimy/openclaw-channel-dingtalk.git - 重启 gateway:
openclaw gateway restart
2. OpenClaw → Octop(AI 执行层)
OpenClaw 收到钉钉消息后,需把请求转给 Octop 处理。目前有两类可行路径:
-
HTTP 转发模式:配置 OpenClaw 的
chatCompletionsendpoint 指向 Octop 的 MCP 兼容接口(如http://localhost:8000/mcp),需 Octop 已启动并暴露该服务 -
本地代理模式:让 Octop 启动时监听 OpenClaw 默认的 gateway 端口(如
18789),并实现 OpenClaw 的协议适配器(需自定义 connector 或使用社区 bridge 工具) - 推荐使用 MCP 协议桥接:Octop 原生支持 MCP(Model Control Protocol),OpenClaw v2026.2+ 也已兼容;只需在 Octop 中启用 MCP server,并在 OpenClaw 的模型配置中指向该地址即可
3. 权限与卡片能力补充
钉钉 Stream 模式下,若需发送卡片、按钮、富文本等高级消息,还需在钉钉应用后台手动添加以下权限:
- Card.Streaming.Write(必选,用于流式卡片更新)
- Card.Instance.Write(必选,用于创建独立卡片实例)
- Chat.ChatRead(如需读取群聊上下文)
这些权限需在「开发配置 → 权限管理」中提交并发布新版本,否则机器人会静默失败。
4. 验证是否连通
完成配置后,按顺序检查:
- 钉钉中 @ 机器人发消息,看 OpenClaw 日志是否有
received dingtalk event - 查看 OpenClaw gateway 日志是否出现
forwarding to mcp://...或调用 Octop 接口的 HTTP 200 - Octop 侧日志应显示收到 MCP request,并开始执行 Agent loop
- 最终钉钉收到流式响应或结构化卡片,即表示全链路打通
不复杂但容易忽略:Octop 和 OpenClaw 是两个独立进程,它们之间没有自动发现机制,所有通信地址、token、协议版本都需手动对齐。尤其注意 OpenClaw 的 channels.dingtalk-connector 和 gateway.http.endpoints.chatCompletions 是两套配置,缺一不可。











