← 返回

【最佳实践】Linux上部署openclaw并对接钉钉

复制为 Markdown

什么是 openclaw

OpenClaw 是一款开源、可本地部署的AI智能体,因其红色龙虾图标被网友称为“龙虾”。它能听懂自然语言指令,直接操控电脑执行任务——如整理文件、发邮件、做PPT、写代码等,实现“一句话交办,全流程自动完成”。支持本地运行、数据不上云,但需消耗Token调用大模型,且因权限高存在安全与误操作风险。目前多地政府正推动其与“一人公司”(OPC)模式结合,被视为AI从“动嘴”迈向“动手”的关键一步。

好了,不讲废话了。网上绝大多数教程都是告诉我们怎么将“龙虾”部署在 Windows/MacOS 上的。但是为了长期稳定地运行,部署在远程云服务器上明显是更好的选择。下面跟随我的最佳实践步骤,不到半小时,轻松部署 openclaw 到自己的云服务器并对接钉钉。

在 Linux 上部署 openclaw 的最佳实践

由于我个人平常用 钉钉 和阿里系的模型比较多,因此这里把最佳实践定义为 钉钉+阿里云 Coding Plan,纯从个人角度出发,读者勿怪。

下面的部署步骤由阿里云官方文档和百炼教程整理而来。

环境准备

硬件上面尽管很多教程宣称 2 核 2GB 的云服务器就可以部署 openclaw,但是我实测发现 2 核 2GB 经常会卡死, 2 核 4GB 会是更流畅的选择。

服务器上需要有 git,为了拉取钉钉插件和 openclaw 核心:

bash
# 安装 Git
sudo apt update
sudo apt install git -y

服务器的 node 版本得在 22 以上,否则 openclaw gateway 会运行失败:

bash
# 安装 NVM (使用 nvm 可以方便地管理不同版本的 node)
# 国内使用 gitee 的镜像源
curl -o- https://gitee.com/RubyMetric/nvm-cn/raw/main/install.sh | bash

# 重新加载环境变量
source ~/.bashrc

# 安装 Node.js 22
nvm install 22

# 查看 nodejs 版本
node -v # 输出 v22 即可,版本只要 22 就行

安装 openclaw

openclaw 官方地址(命令手册):https://docs.openclaw.ai/zh-CN

bash
 使用官方脚本安装
curl -fsSL https://openclaw.bot/install.sh | bash

【可选】下载成功之后,运行 openclaw 导航:

跟着命令行界面可以配置一些自定义的内容,但是为了快速开始,先不用这个启动。

bash
openclaw onboard

启动界面,我这里是已经配置完成了的

对接钉钉插件

命令和组件都来自官方,可放心下载使用

https://developer.aliyun.com/article/1709772

下载钉钉插件:

官方使用的开源仓库的地址更新了下载地址,所以上面阿里云的文档上的下载连接不可以用了。查看仓库可以获得最新的下载地址且支持多种下载方式:

bash
# 最新的 npm 下载地址
openclaw plugins install @soimy/dingtalk

接下来就需要在钉钉上创建一个内部应用,并添加“机器人”能力。

具体的图形界面操作可以参考上面的官方文档。这一步关键是获取到应用的 ClientID 和 ClientSecret。

在阿里云百炼 Coding Plan 购买套餐

阿里云百炼已停止售卖,推荐换成直接购买 apikey 的方式。

官网地址:https://bailian.console.aliyun.com/

首月仅需 7 块钱,可对接下面多种模型:

购买完成之后关键是拿到 Coding Plan 专属的 API key

配置 openclaw

只要上面第一步安装正常,这一步我们不参考任何导航和教程,直接修改 openclaw 的配置文件。复制下面的内容,替换自己的钉钉 AppID、AppSecret、以及百炼平台的 apikey,马上就能成功。

打开 openclaw 的配置文件:

bash
vi ~/.openclaw/openclaw.json

将下面的内容添加进去(注意):

注意:

  • 更改 AppID、AppSecre 和 apikey;
  • YOU_GATEWAY_TOKEN 位置是当前 openclaw 的 token 值,在配置文件中 gateway 类里面会显示的;
  • 类不能重复,如果之前通过 openclaw onboard 等命令配置复过了的,需要删除原先的再配置
json
"models": {
    "mode": "merge",
    "providers": {
      "bailian": {
        "baseUrl": "https://coding.dashscope.aliyuncs.com/v1",
        "apiKey": "YOUR_API_KEY",
        "api": "openai-completions",
        "models": [
          {
            "id": "qwen3.5-plus",
            "name": "qwen3.5-plus",
            "reasoning": false,
            "input": ["text", "image"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 1000000,
            "maxTokens": 65536
          },
          {
            "id": "qwen3-max-2026-01-23",
            "name": "qwen3-max-2026-01-23",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 262144,
            "maxTokens": 65536
          },
          {
            "id": "qwen3-coder-next",
            "name": "qwen3-coder-next",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 262144,
            "maxTokens": 65536
          },
          {
            "id": "qwen3-coder-plus",
            "name": "qwen3-coder-plus",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 1000000,
            "maxTokens": 65536
          },
          {
            "id": "MiniMax-M2.5",
            "name": "MiniMax-M2.5",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 196608,
            "maxTokens": 32768
          },
          {
            "id": "glm-5",
            "name": "glm-5",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 202752,
            "maxTokens": 16384
          },
          {
            "id": "glm-4.7",
            "name": "glm-4.7",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 202752,
            "maxTokens": 16384
          },
          {
            "id": "kimi-k2.5",
            "name": "kimi-k2.5",
            "reasoning": false,
            "input": ["text", "image"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 262144,
            "maxTokens": 32768
          }
        ]
      }
    }
  },
  "channels": {
    "dingtalk": {
      "clientId": "YOU_CLIENT_ID",
      "clientSecret": "YOU_CLIENT_SECRET",
      "gatewayToken": "YOU_GATEWAY_TOKEN"
    }
  },

配置完成之后,确保 json 文件没有报错。

然后重启 openclaw gateway:

bash
openclaw gateway restart

重启之后查看 openclaw 核心的状态

bash
openclaw status

想我上面展示的一样就差不多了。

配置成功

文章中提到的链接地址

最热文章