☰
OpenClaw接入钉钉:从配置到排错的群聊机器人实战指南
2026/10/9 3:17:41 网站建设 项目流程

1. 为什么要把 OpenClaw 接到钉钉上

先说结论:OpenClaw 是一个面向个人和团队的轻量级智能体运行时,它能把大模型的能力封装成一个个可调度的“技能”,再通过不同的消息渠道暴露给使用者。而钉钉是国内很多团队日常沟通和办公协作的主阵地,把它作为 OpenClaw 的交互入口,意味着你可以直接在群聊里完成信息查询、任务拆解、知识库检索、工作流触发这些操作,不需要再单独打开一套 Web 控制台。

我最早接触 OpenClaw 是在折腾本地自动化任务的时候。当时试过不少机器人框架,要么配置太重,要么对接钉钉需要写一堆胶水代码。OpenClaw 的设计思路很讨巧:核心只负责调度和管理会话,具体的功能全部拆成“技能(Skill)”,渠道层通过独立适配器对接。这样一来,钉钉机器人只是它的一个“入口”,你后续想加飞书、Slack 或者网页端,不用改动核心配置。

这篇教程适合谁?如果你熟悉 Linux 基本命令、了解一点点 Docker 概念,或者之前搭过 Chatwoot、Dify 这类开源项目,那么跟着下面的步骤走,大概半小时就能跑通。如果你完全没接触过服务器部署,建议先把基础命令补一补,否则遇到路径错误和权限问题会容易劝退。我会把整个配置过程拆成四块:环境与安装、钉钉应用创建、OpenClaw 配置对接、联调与排错。每个环节都会说清楚为什么这么做,而不是只丢给你一串命令。

2. 环境准备与 OpenClaw 部署

2.1 软硬件要求与实际选型

OpenClaw 本身不挑机器,普通 2 核 4G 的云服务器就能跑得很稳。因为钉钉机器人核心是收发消息和调用模型接口,真正消耗资源的是底层模型推理。如果你打算调用云端大模型 API,对机器要求更低;如果打算用 Ollama 跑本地模型,那 CPU 和内存就要酌情升级,推荐至少 4 核 8G,有条件的话上 16G 内存。

操作系统我建议 Ubuntu 22.04 或 24.04 LTS。Debian 系相比于 CentOS 的好处是软件源默认带了新版 Python 和 Node.js,后续安装依赖会省心很多。我自己用的是一台 Ubuntu 24.04 的云主机,配置过程没有遇到系统层面的坑。

依赖项主要有这些:

  • Docker(推荐 24.x 以上)或者直接裸机部署
  • Python 3.10+(OpenClaw 的调度核心依赖)
  • Node.js 18+(部分官方 Skill 的运行时)
  • Git,用于拉取仓库和后续更新

如果你和我一样喜欢用 Docker 部署,可以先执行下面这段命令安装 Docker 引擎。需要注意,不同云厂商的镜像源可能不一样,这里用的是 Docker 官方脚本,如果你的网络环境访问官方源不通,那就替换成你所在地区可用的镜像源,保证能正常拉取镜像就行。

curl -fsSL https://get.docker.com | bash systemctl enable --now docker

2.2 安装 OpenClaw 主程序

OpenClaw 的安装方式有三种:源码运行、Docker Compose、Windows Companion。后两种适合不爱折腾的人,但如果你想改核心代码,或者想深度定制 Skill,我强烈推荐源码运行。

源码安装的操作路径如下:

# 建立一个专用目录,避免和业务项目混在一起 mkdir -p /opt/openclaw && cd /opt/openclaw # 克隆主仓库 git clone https://github.com/openclaw/core.git . # 创建虚拟环境 python3 -m venv .venv source .venv/bin/activate # 安装 Python 依赖 pip install -r requirements.txt # 安装 Node 依赖(部分调试工具需要) npm install --prefix ./tools

这里有个细节:OpenClaw 主仓库更新很频繁,如果你在安装依赖时发现 requirements.txt 里某些包版本冲突,优先把 setuptools 和 wheel 升级到最新,再重试安装。很多新手卡在这一步,其实是工具链太老导致的。

安装完成后,先不急着配置钉钉。用下面这条命令验证核心服务能否启动:

python main.py --mode debug

如果控制台输出类似 “OpenClaw core started in debug mode” 的日志,说明主程序没问题。按 Ctrl+C 退出,然后进入下一步。

2.3 配置模型接入(API 或 Ollama)

OpenClaw 需要调用大模型来理解自然语言、抽取意图、生成回复。你可以在配置文件中指定模型提供方。

如果是使用 OpenAI 兼容接口的云端 API,配置文件config.json中可以这样写:

{ "llm": { "provider": "openai_compatible", "base_url": "https://api.example.com/v1", "api_key": "sk-xxxxxxxx", "model": "gpt-4o-mini" } }

如果你打算使用本地 Ollama,则把 provider 改成本地模式。Ollama 的安装方式很简单,这里我给出 Ubuntu 下的常见操作:

curl -fsSL https://ollama.com/install.sh | sh ollama pull qwen2.5:7b

拉取模型后,在 OpenClaw 的配置里把base_url指向http://localhost:11434/v1,model写成你想用的模型名。这样既能保证数据不出服务器,也避免了云端 API 的费用。

注意:用本地模型时,首次消息响应会比较慢,因为需要加载模型到内存。建议选择 7B 参数量级的量化版本,在 4 核 8G 的机器上可以流畅运行。

3. 钉钉侧的应用创建与配置

3.1 创建企业内部机器人应用

钉钉机器人不是简单地填一个 Webhook 地址就能用。你需要在钉钉开放平台创建一个企业内部应用,然后添加“机器人”能力。流程是这样的:

  1. 用管理员账号登录钉钉开发者后台,选择“应用开发”下的“企业内部应用”。
  2. 点击创建应用,填写应用名称和描述。名称建议直接叫 OpenClaw,方便后续识别。
  3. 创建完成后进入应用详情页,找到“添加应用能力”,选择“机器人”。
  4. 机器人创建成功后,你会得到一个 AppKey 和 AppSecret。这两个参数后面要填到 OpenClaw 的配置中。
  5. 在“权限管理”中,申请“读取消息”和“发送消息”的权限。不同应用的权限范围不同,如果你只是想在单个群内使用,申请工作台消息权限即可。

值得强调的是,钉钉的机器人有两种形态:一种是自定义机器人(群 Webhook),只能主动往群里推消息,不能接收群成员的消息;另一种是应用机器人(Stream 模式),能接收会话内容、支持回复交互。我们要对接 OpenClaw,一定要选应用机器人,因为需要双向通信。

3.2 使用 Stream 模式还是 Webhook 模式

钉钉官方推荐的新版机器人使用 Stream 模式,也就是通过长连接接收消息推送,不再需要为机器人单独配置公网回调域名。这个模式对我们这种自建服务特别友好,因为云服务器通常没有 80/443 端口的备案域名,如果走传统的 HTTP 回调,还要去搞域名解析和 SSL 证书,麻烦得要死。

Stream 模式的原理很简单:机器人 SDK 主动连上钉钉的长连接网关,钉钉网关把消息事件通过这个连接推给你。只要服务器能访问 outbound 的网络即可,不需要入站端口。这种模式天然适合 OpenClaw 这种常驻型服务。

所以在钉钉后台配置机器人时,无需设置“消息接收 URL”,直接保存启用即可。后续 OpenClaw 启动时会用 AppKey 和 AppSecret 去换取长连接 Ticket,自动建立会话通道。

3.3 加解密与安全参数说明

钉钉机器人发送和接收消息时会涉及加解密,主要是三个参数:

  • Token:用于生成签名,防止消息被篡改。
  • EncodingAESKey:用于消息内容加密和解密,43 位字符串。
  • AppSecret:用于获取 access_token 和长连接凭证。

OpenClaw 在对接钉钉渠道时,会在配置里同时用到这几个参数。尤其要注意EncodingAESKey不能填错,否则回调消息会解密失败,表现为“机器人收到消息但没有回复”。我建议你在钉钉后台点击“重置”时,把新的三个参数一次性复制到本地密码管理器里,避免因为复制遗漏导致反复调试。

4. OpenClaw 与钉钉的完整对接配置

4.1 修改主配置文件

OpenClaw 的主配置是config.json,或者你也可以用环境变量覆盖。为了让你看得更清楚,我给出一个最小可用的钉钉渠道配置片段:

{ "channels": { "dingtalk": { "enabled": true, "mode": "stream", "app_key": "dingxxxxxxxxxxxx", "app_secret": "SECxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "token": "your_custom_token", "encoding_aes_key": "your_43_chars_encoding_aes_key" } }, "session": { "timeout": 300, "history_size": 20 } }

需要说明的是,app_key对应钉钉的 AppKey,app_secret对应 AppSecret。token和encoding_aes_key在创建应用机器人时会要求填写,你也可以在机器人设置页生成。

如果你用的是 Stream 模式,OpenClaw 会通过钉钉提供的开放接口建立 WebSocket 长连接。官方 SDK 通常会自动处理连接失败重连,但为了保证可靠性,建议你只让 OpenClaw 同时连接一个钉钉应用,避免多个进程抢同一个长连接导致消息被分发到错误的地方。

4.2 配置开放技能(Skill)与权限

OpenClaw 的价值在于技能扩展。默认情况下,它自带基础对话能力,也就是把用户的输入直接转发给大模型,然后把回复发回钉钉群。但你肯定希望它能执行一些具体操作,比如查天气、查数据库、跑脚本、发审批等。

Skill 目录结构大致如下:

skills/ examples/ weather/ SKILL.md handler.py sql_query/ SKILL.md handler.py

每个技能由一个SKILL.md描述文件和一个处理脚本组成。以查询订单为例,你需要在钉钉群里说“帮我查一下今天的订单数量”,OpenClaw 识别到这个意图后,会调用sql_query的处理脚本,脚本执行查询,再把结果格式化后返回。

技能注册的方法是在config.json中加一段:

{ "skills": { "enabled": ["weather", "sql_query", "timer"] } }

初次配置时,建议只启用一个官方示例技能测试链路,别一上来就把所有技能挂上。技能过多会让意图识别变得不稳定,有时候你想让它聊天,它却偏偏触发了一个没用的技能。

4.3 启动服务并验证长连接

配置完成后的启动命令很简单:

cd /opt/openclaw source .venv/bin/activate python main.py --env prod

启动后观察日志。正常情况下会出现类似这样的一条:

[dingtalk] stream connected, channel ready, waiting for messages

看到这条日志,说明钉钉长连接已经建立成功。这时候去钉钉群里 @机器人 发一条消息,比如“你好”,机器人应该在几秒内回复。

如果没有任何回复,优先查看日志里是否有解密失败、验签失败、超时这三类关键词。后面我会专门讲常见问题。

4.4 用 systemd 托管常驻进程

开发调试时可以前台运行,但生产环境一定要做成系统服务,否则 SSH 一断开,机器人就下线了。我习惯用 systemd 来托管。

创建一个服务文件/etc/systemd/system/openclaw.service:

[Unit] Description=OpenClaw DingTalk Bot Service After=network-online.target docker.service Wants=network-online.target [Service] Type=simple WorkingDirectory=/opt/openclaw EnvironmentFile=/opt/openclaw/.env ExecStart=/opt/openclaw/.venv/bin/python main.py --env prod Restart=always RestartSec=10 [Install] WantedBy=multi-user.target

注意这里我用到了一个.env文件,你可以把敏感信息放到该文件里,避免直接写在配置文件中被 Git 追踪。启动服务:

systemctl daemon-reload systemctl enable --now openclaw journalctl -u openclaw -f

从现在起,机器人会随着服务器开机自启,崩溃后自动重启。这是我觉得 OpenClaw 部署中体验最好的地方:进程托管审查简单,配置清晰,不像某些框架那样需要单独跑一个 AGENT 管理系统。

5. 常见问题与排查技巧实录

5.1 机器人收不到钉钉消息

这是最常遇到的问题。我的排查步骤基本是固定的:

第一,先看 OpenClaw 日志里有没有stream connected。如果连这一行都没有,说明长连接建立失败,问题大概率出在 AppKey 或 AppSecret 上。打开钉钉应用的“凭证与基础信息”页面,确认复制时没有多余空格。

第二,如果连接正常但收不到消息,去钉钉开发者后台检查应用的“机器人配置”里是否开启了“消息接收”。有些应用在创建机器人后,默认不会自动开启消息接收权限,需要在“权限管理”中申请Contact.User.Read之类的权限。

第三,确认你在群里 @ 了机器人,并且机器人已经被添加到群里。钉钉应用机器人默认不会自动加入所有群,你需要在目标群中手动添加。

5.2 提示验签失败 / 解密失败

这个问题的根源通常是对齐参数时搞混了。token和encoding_aes_key是钉钉机器人自己的安全参数,不在 OpenClaw 侧生成。如果 OpenClaw 的钉钉适配器内部对消息验签,那么token必须和钉钉后台填写的那个一致。我在第一次配置时,不小心把 AppSecret 填到了token里,结果日志疯狂输出验签失败,排查了好一会儿才反应过来。

建议的做法:把四个参数分别命名为DING_APP_KEY、DING_APP_SECRET、DING_TOKEN、DING_AES_KEY,写入.env后,在config.json中通过占位符引用。这样即使写文章分享,也不会泄露真实密钥。

5.3 回复消息超时

钉钉在 Stream 模式下对消息处理的响应时间有一定容忍度,但如果你的模型推理时间超过 30 秒,用户端很有可能会提示“机器人无响应”。我的经验是用异步任务加“先应答后处理”的模式:OpenClaw 收到消息后,立刻回复“收到,正在处理”,同时把任务放到队列中,等模型出结果后再主动推送一条完整回答到群里。

5.4 机器人昵称带“机器人”标识的权限问题

钉钉对于机器人名称有一定审核规则,如果名字包含“机器人”三个字,可能会要求提供更多资质。建议应用名称直接叫“OpenClaw”,不要加后缀,反而顺口。

5.5 修改配置后不生效

OpenClaw 的配置加载有缓存,改完config.json后需要重启服务。如果你设置了Restart=always,记得手动执行:

systemctl restart openclaw

我踩过一次坑:改完技能配置没重启,群里测试时一直调用旧技能,日志里却没有任何异常。后来才发现是进程没重启,这种基础问题最容易让人绕弯路。

6. 进阶玩法与安全建议

看到这里,核心链路基本已经通了:钉钉群里 @ 机器人,OpenClaw 调用模型,模型返回内容,机器人回复。接下来你可以开始琢磨怎么给它增加更多实际价值。

一个常见的应用是把它变成团队的“知识库问答助手”。把团队规范、产品文档、FAQ 整理成 Markdown 文件,放到 OpenClaw 的knowledge目录下,再挂一个检索技能。群成员提问时,OpenClaw 先从知识库中找到相关片段,再让大模型生成精炼回答。这样比让每个人去翻共享文档高效得多。

另一个玩法是用它做定时任务通知。比如每天早上 9 点,OpenClaw 自动查询待办事项,推送到指定群。定时技能在config.json中声明后,还能配置触发时间表达式,类似 cron 但更直观。

安全方面有几点必须强调。第一,不要在群聊中发送敏感的管理员命令。OpenClaw 默认只开放 Skill 层的能力,不会让大模型直接执行任意系统命令,但如果你自己写了一个执行命令的技能,就要确保它只在白名单环境中运行。第二,定期更新 OpenClaw 核心和 Skill,这个项目迭代很快,很多安全隐患会在更新中修复。第三,为钉钉机器人配置消息过滤,只允许特定群或特定用户唤出敏感技能,这是 OpenClaw 渠道配置中支持的功能,建议设置一个allowed_rooms列表。

我在实际运行中还有一个经验:给机器人设置“人设”很重要。钉钉群里的交互偏商务化,如果你让大模型用过于口语化、二次元的方式回答,同事会觉得不专业。在config.json的系统提示词里写清楚“你是 OpenClaw 团队助理,回答简洁、准确,必要时给出条目式说明”,这样回复质量会明显提升。

最后分享一个我用的比较顺手的扩展方案:在 OpenClaw 里加一个“转发技能”,把群里收集到的信息写入指定数据库表,再配合一个简单的统计面板。这个技能不需要太复杂的代码,几十行 Python 就能实现。OpenClaw 的接口设计非常友好,你只要在 Skill 的 handler 中接收 JSON 格式的参数,返回字符串,它就会自动把返回内容发送到钉钉群。

如果你把 OpenClaw 接入钉钉只是为了尝鲜,那么到这里就已经完成了。想更进一步的话,我建议你去看官方 Skill 仓库里的示例代码,找一个和自己业务相近的改一改。毕竟机器人真正好用的地方,从来不是开箱即用的默认行为,而是它能不能融入你自己的协作习惯。把高频、重复、需要上下文的任务交给它,每天省下来的时间会很明显。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询