1. 项目概述:为什么“OpenClaw + 飞书”不是又一个聊天机器人,而是你的数字副驾驶?

你有没有过这种体验:早上醒来,手机飞书弹出一条消息——不是同事的催命通知,而是一张自动生成的晨间简报图,里面清晰列着今日3个会议时间、昨夜未读的5封关键邮件摘要、以及行业动态Top3;通勤路上,你对着飞书语音说“把上周代码测试报告发给张工”,到公司时,报告已生成PDF并连同截图一并发送完毕;深夜加班,你随口提了句“下周要整理客户反馈文档”,三天后,一份结构清晰、带数据图表的初稿静静躺在你的飞书文档里,只等你润色。这不是科幻电影,这是 OpenClaw 在飞书里真实运行的日常。

OpenClaw 的核心,从来就不是“换个壳子聊大模型”。它是一个 本地优先的 AI 网关(AI Gateway) ,一个运行在你私有设备(Mac Mini、Linux VPS、甚至树莓派)上的“神经中枢”。它不托管你的对话历史,不上传你的本地文件,更不会把你的 Shell 命令发到千里之外的服务器。它只做一件事: 把你在飞书里输入的自然语言,翻译成可执行的指令,调用你设备上的能力,再把结果以你习惯的方式(文字、图片、卡片)送回飞书。 它是“代理”(Agent),不是“应答器”(Responder)。它能主动唤醒、能定时执行、能调用摄像头、能操作浏览器、能读写你硬盘里的任何文件——前提是,你授权它这么做。

这正是它与所有云端聊天机器人的本质分野。ChatGPT 再聪明,它也摸不到你电脑里的 project/ 文件夹;Claude 再强大,它也点不开你 Chrome 里那个没登录的内部系统。而 OpenClaw 可以。它把 AI 的“思考力”和你设备的“行动力”缝合在一起,让 AI 第一次真正拥有了“手脚”。飞书,则是它最顺手的“嘴”和“耳朵”,是你每天高频使用的入口,无需切换应用,无缝融入工作流。所以,这篇指南不叫“OpenClaw 飞书接入教程”,它叫“搭建属于你的 AI 助手”——因为最终交付的,不是一个功能,而是一个能替你干活、替你记事、替你跑腿的、活生生的数字伙伴。它不替代你,它放大你。接下来的所有步骤,都是为了把这个伙伴,稳稳地、安全地、高效地,安顿在你的飞书生态里。

2. 核心架构拆解:Gateway-Node 模式如何让 AI 真正“落地生根”

理解 OpenClaw 的飞书对接,绝不能跳过它的底层架构。很多新手卡在“配置成功但收不到消息”或“机器人回复了却无法执行命令”,根源往往在于对 Gateway 和 Node 的职责混淆。这不是一个简单的“API Key 填写”问题,而是一场关于通信协议、权限边界和进程管理的精密协作。

2.1 Gateway:永不掉线的“本地指挥中心”

Gateway 是 OpenClaw 的心脏,一个基于 Node.js v22+ 构建的、长期驻留内存的守护进程(Daemon)。它的物理存在,就是你整个 AI 助手系统的基石。我第一次部署时,就栽在这个认知误区上:以为 openclaw onboard 走完流程就万事大吉,结果第二天重启服务器,发现飞书机器人彻底失联。查日志才发现,Gateway 进程根本没设置为开机自启,它只是临时跑了一次。

Gateway 的核心设计哲学是 “环回优先”(Loopback-First) 。它默认只监听 127.0.0.1:18789 这个本地地址,这意味着:

  • 安全性 :它不向公网暴露任何端口,从源头杜绝了被外部扫描和暴力破解的风险。你的 AI 助手,永远只在你自己的网络边界内呼吸。
  • 连接性 :飞书的服务器无法直接访问你的 Gateway。所以,必须通过一种“反向握手”的方式建立连接——这就是飞书的 WebSocket 回调(Callback)机制。飞书不是“拨号”找你,而是你先在飞书后台注册一个“回调地址”,飞书再把消息“推送”到这个地址。这个地址,就是你 Gateway 对外暴露的、经过飞书平台认证的唯一入口。

提示: openclaw gateway status 命令输出的 Gateway: ✓ Running on localhost:18789 ,只说明进程在本地跑起来了。它离“能被飞书找到”还差最后一步: 确保这个 localhost:18789 地址,能被飞书的服务器通过互联网访问到。 这通常需要你将 Gateway 的端口映射到公网(如通过 Nginx 反向代理),或者使用 Tailscale 等 Mesh 网络工具创建一个安全的虚拟内网。对于绝大多数个人用户,后者是更安全、更省心的选择。

2.2 Node:你的手机/电脑,就是 AI 的“感官与肢体”

如果说 Gateway 是大脑,那么 Node 就是遍布你全身的神经末梢。Node 是一个轻量级客户端,可以安装在你的 iPhone、Android 手机或 macOS 电脑上。它通过 WebSocket 协议,与你家中的 Gateway 建立一条加密的、持久的隧道。

Node 的价值,在于它把物理世界的“能力”虚拟化了。当你在飞书里对 OpenClaw 说“拍张照片看看冰箱里有什么”,这个指令会这样流转:

  1. 飞书 → Gateway(收到文本指令)
  2. Gateway → Agent(AI 大脑开始规划:需要调用 camera.snap 工具)
  3. Agent → Gateway(发出调用指令)
  4. Gateway → Node(通过 WebSocket 隧道,将 camera.snap 指令精准下发到你手机上的 Node 应用)
  5. Node → 手机摄像头(调用系统 API,拍摄照片)
  6. Node → Gateway(将照片二进制数据加密上传)
  7. Gateway → Agent(AI 开始分析这张照片)
  8. Agent → Gateway → 飞书(生成“冰箱里有牛奶、鸡蛋和三明治”的文字回复)

这个过程,完美诠释了 OpenClaw 的“BYOD”(Bring Your Own Device)理念。AI 的“思考”发生在你的 Gateway 上,而“看、听、触、动”的能力,全部由你自己的设备提供。Node 不是另一个 AI,它只是一个高度可信的、受 Gateway 统一调度的“执行单元”。这也是为什么 OpenClaw 能做到真正的“情境感知”——它知道你此刻的位置(Node 获取 GPS)、你屏幕上的内容(Node 录屏)、你相册里的照片(Node 访问相册),因为它本就生长在你的设备之上。

2.3 飞书渠道:不是“接入”,而是“深度共生”

飞书在 OpenClaw 的架构中,远不止一个“消息通道”那么简单。它是一个被深度集成的“原生平台”。这体现在三个层面:

  1. 事件驱动(Event-Driven) :OpenClaw 不是轮询飞书 API 来“查收”新消息,而是飞书主动推送事件。你配置的 im.message.receive_v1 事件,意味着飞书会在每一条新消息(无论是私聊还是群聊@)产生时,立刻打包成一个 JSON 事件,推送到你的 Gateway。这种模式延迟极低,保证了响应的实时性。

  2. 权限即能力(Permission = Capability) :飞书开放平台的权限体系,直接决定了 OpenClaw 能为你做什么。你给它 im:message:send_as_bot 权限,它就能发消息;给了 docx:document:write_only ,它就能编辑飞书文档;给了 calendar:calendar.event:create ,它就能帮你新建日程。这些权限不是“可有可无的装饰”,而是 OpenClaw 技能(Skill)得以施展的“燃料”。没有 drive:file:upload ,它就无法把本地生成的报告上传到飞书云盘;没有 im:message.reactions:write_only ,它就无法在你的重要消息下添加一个 ✅ 表情来标记已处理。

  3. 卡片即界面(Card = UI) :OpenClaw 的 Canvas 功能,允许 Agent 动态生成 HTML/JS 代码,并将其渲染为飞书卡片(Card)。这让你的 AI 助手不再局限于冷冰冰的文字。当它分析完服务器负载,它能直接在飞书里画出一个交互式折线图;当你让它帮你筛选简历,它能生成一个带搜索框和筛选条件的表格卡片。飞书卡片,就是 OpenClaw 的“桌面”和“应用窗口”。

理解了这三层,你就明白,所谓的“对接”,本质上是在构建一个“飞书 ↔ Gateway ↔ Node”的三角信任链。飞书信任 Gateway 的身份(通过 App ID/Secret 验证),Gateway 信任 Node 的连接(通过 WebSocket 密钥),而你,作为这个链条的缔造者,必须亲手拧紧每一颗螺丝。

3. 实操全流程:从零开始,手把手搭建你的飞书 AI 助手

现在,我们进入最硬核的部分。以下所有步骤,均基于我在一台阿里云 ECS(Ubuntu 22.04, 2核4G)上的实操记录。我会把每一个命令、每一个配置项、每一个可能踩坑的地方,都掰开揉碎讲清楚。这不是一个理想化的“官方文档复述”,而是一份带着体温的“避坑笔记”。

3.1 环境准备:别让基础环境成为第一道墙

在敲下第一个 curl 命令前,请务必确认你的服务器满足最低要求。我见过太多人卡在这一步,反复重装,最后发现只是 Node.js 版本太低。

  • Node.js ≥ 22.x :这是硬性要求。Ubuntu 22.04 自带的 nodejs 包通常是 v18,必须升级。最稳妥的方式是使用 nvm (Node Version Manager):

    # 安装 nvm
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
    source ~/.bashrc
    # 安装并使用 Node.js v22
    nvm install 22
    nvm use 22
    node -v # 确认输出 v22.x.x
    
  • Git :用于后续安装社区技能(Skills)。Ubuntu 默认已安装,若无, sudo apt update && sudo apt install git -y

  • Python3 & pip :部分技能(如 RAG 相关)依赖 Python。 sudo apt install python3-pip -y

  • 防火墙配置(关键!) :如果你的服务器开启了 ufw firewalld ,请确保 18789 (Gateway)和 18793 (Canvas HTTP 服务)端口是开放的。对于飞书回调,你还需要开放你实际对外暴露的端口(比如 Nginx 的 80 443 )。我建议先临时关闭防火墙测试: sudo ufw disable ,待一切跑通后再精细化配置。

注意: curl -fsSL https://openclaw.ai/install.sh | bash 这个“一键安装”脚本,虽然方便,但它会强制安装一个它认为“合适”的 Node.js 版本,可能会与你系统已有的环境冲突。对于生产环境,我 强烈推荐 使用 npm install -g openclaw@latest 方式,它更可控,也更符合 Node.js 社区的最佳实践。

3.2 初始化与配置: onboard 向导的正确打开方式

启动终端,执行:

npm install -g openclaw@latest
# 如果提示权限错误,改用
sudo npm install -g openclaw@latest

安装完成后,运行初始化向导:

openclaw onboard

向导会引导你完成一系列交互式配置。这里,我要重点强调几个 极易出错的关键选项

  1. AI Model Configuration(AI 模型配置)

    • 当它问你选择哪个模型时, 不要选“None” 。即使你打算后续用本地模型,也先填一个 Claude 或 GPT 的 API Key(哪怕是个试用 Key)。因为向导需要验证你的 LLM 配置是否有效,才能继续下一步。填错 Key 会卡住。
    • Base URL :对于 Claude,填 https://api.anthropic.com/v1 ;对于 OpenAI,填 https://api.openai.com/v1 注意结尾的 /v1 ,漏掉会导致 404 错误。
    • Model Name :Claude 填 claude-3-opus-20240229 ,GPT 填 gpt-4-turbo 。名称必须完全匹配,大小写都不能错。
  2. Working Directory(工作目录)

    • 默认是 ~/openclaw 。我建议保持默认。这个目录将存放你所有的记忆(Memories)、技能(Skills)、配置文件(config.yaml)和日志。把它想象成 OpenClaw 的“家”。
  3. Channels(渠道启用)

    • 这里, 只勾选 Feishu/Lark 。向导会自动为你生成一个飞书应用的配置骨架。其他渠道(如 Telegram)可以等飞书跑通后再添加,避免干扰。
  4. Daemon Installation(守护进程安装)

    • 选择 Yes 。这会为你创建一个 systemd 服务,让 Gateway 在后台持续运行,并在系统重启后自动拉起。这是实现“24/7 在线”的关键。服务名通常是 openclaw-gateway.service

向导结束后,它会提示你运行 openclaw gateway start 。此时,不要急着执行。先检查一下配置文件:

cat ~/.openclaw/config.yaml | grep -A 10 "channels:"

你应该能看到类似这样的飞书配置段:

channels:
  feishu:
    appId: ""
    appSecret: ""
    enabled: false
    connectionMode: websocket
    dmPolicy: pairing
    groupPolicy: allowlist
    requireMention: true

看到 enabled: false 和空的 appId / appSecret ,说明向导只是搭好了架子,还没填砖瓦。这才是我们接下来要做的。

3.3 飞书开放平台:从零创建一个“企业自建应用”

打开 飞书开放平台 ,用你的飞书账号登录。

  1. 创建应用 :点击左上角“开发者后台” → “创建应用” → “企业自建应用”。填写一个应用名称(比如 MyOpenClawBot ),描述随意。创建成功后,你会进入应用的“凭证与基础信息”页面。

  2. 获取凭证 :在这里,你会看到三个至关重要的字符串:

    • App ID
    • App Secret
    • Verification Token (验证令牌)

    提示: Verification Token 是飞书用来验证回调请求是否来自其官方服务器的密钥,它和 App Secret 一样重要,但很多人会忽略它。请务必复制下来。

  3. 启用机器人 :左侧菜单栏,点击“添加应用能力” → “机器人”。开启“机器人能力”,然后在“机器人设置”里,将“机器人名称”改为一个你喜欢的名字(比如 龙虾助手 ),并上传一个图标。

  4. 配置权限(重中之重) :这是整个对接过程中 最耗时、也最容易出错 的环节。点击左侧“权限管理”,然后点击“批量导入”。将你在网络热词里看到的那个超长的 JSON 权限列表, 完整、一字不差地粘贴进去 。这个 JSON 列表包含了 tenant (租户级)和 user (用户级)两大类权限,覆盖了消息、文档、日历、云盘等几乎所有你能想到的功能。

    注意:飞书的权限导入有时会失败,显示“解析失败”。如果遇到这种情况,不要反复尝试。请手动检查 JSON 的格式,最常见的错误是:

    • 最后一个数组元素后面多了一个逗号 , (JSON 格式不允许)。
    • 使用了中文引号 “” 而不是英文引号 ""
    • 整个 JSON 没有被包裹在 {} 里。 我建议你用在线 JSON 格式化工具(如 jsonlint.com)先校验一遍。
  5. 设置事件订阅 :这是让飞书“认识”你 Gateway 的最后一步。左侧菜单栏,点击“事件订阅”。在“接收消息”部分,选择“使用长连接接收事件(WebSocket 模式)”。然后,在“事件类型”里,勾选 im.message.receive_v1 此时,飞书会要求你填写一个“接收 URL” 。这个 URL,就是你 Gateway 的公网地址,格式为 https://your-domain.com/webhook/feishu (如果你用 Nginx 代理)或 http://your-server-ip:18789/webhook/feishu (如果直接暴露端口,不推荐)。

    关键点:这个 URL 必须能被飞书的服务器访问到。如果你的服务器在内网,或者你用了 Cloudflare 等 CDN,这个 URL 很可能无法连通。此时,你必须使用 Tailscale。Tailscale 会给你一个全球唯一的 .ts.net 域名(如 my-openclaw.ts.net ),你只需将接收 URL 设为 https://my-openclaw.ts.net:18789/webhook/feishu 即可。Tailscale 的安装和配置,是 OpenClaw 部署的“必修课”,网上有大量详细教程,此处不赘述。

  6. 发布应用 :完成以上所有配置后,点击左侧“版本管理与发布”,创建一个新版本,提交审核。对于企业自建应用,审核通常是秒过的。发布成功后,你的应用就正式“上岗”了。

3.4 配置与启动:让 Gateway 和飞书“握手成功”

回到你的服务器终端。

  1. 填充配置 :用你在飞书后台拿到的凭证,填充 config.yaml

    openclaw config set channels.feishu.appId "cli_xxxxxxxx"
    openclaw config set channels.feishu.appSecret "xxxxxxxxxxxxxxxxxxxxxxxx"
    openclaw config set channels.feishu.token "xxxxxxxx" # 这里填 Verification Token
    openclaw config set channels.feishu.enabled true
    openclaw config set channels.feishu.connectionMode websocket
    openclaw config set channels.feishu.dmPolicy pairing
    openclaw config set channels.feishu.groupPolicy allowlist
    openclaw config set channels.feishu.requireMention true
    
  2. 启动 Gateway

    # 启动服务
    sudo systemctl start openclaw-gateway
    # 设置开机自启
    sudo systemctl enable openclaw-gateway
    # 查看状态
    sudo systemctl status openclaw-gateway
    

    如果状态显示 active (running) ,恭喜,Gateway 已经在后台欢快地跑起来了。

  3. 验证连接 :运行健康检查:

    openclaw health
    

    你期望看到的输出是:

    Gateway: ✓ Running on localhost:18789
    Channels: ✓ Feishu/Lark connected
    LLM: ✓ Model API configured
    Memory: ✓ 0 memories indexed
    

    注意 Channels: ✓ Feishu/Lark connected 这一行。 如果它显示的是 或者根本没有这一行,说明 Gateway 和飞书的连接尚未建立。此时,请检查:

    • config.yaml 中的 appId / appSecret / token 是否完全正确(区分大小写!)。
    • 飞书后台的“事件订阅”URL 是否填写正确,并且能被公网访问。
    • 你的服务器防火墙是否放行了相关端口。
  4. 配对授权(Pairing) :这是让飞书机器人“认主”的最后一步。在飞书中,找到你刚刚创建的机器人,给它发一条任意消息(比如“你好”)。机器人会回复一个形如 CLAW-XXXX-XXXX 的配对码。回到服务器,执行:

    openclaw pairing approve feishu CLAW-XXXX-XXXX
    

    执行成功后,你再给机器人发消息,它就应该能正常回复了。如果它还是不说话,请再次运行 openclaw logs --follow ,实时查看日志,错误信息会直接告诉你问题出在哪。

3.5 技能(Skills)安装:让你的 AI 助手从“能说”到“能干”

OpenClaw 的灵魂在于 Skills。没有 Skills,它只是一个会聊天的“哑巴”。下面,我分享几个我日常高频使用、且经过充分验证的实用技能。

技能名称 安装命令 核心功能 我的实测心得
Web Search openclaw configure --section web
openclaw config set web.searchProvider brave
openclaw config set web.braveApiKey "your-key"
为 OpenClaw 注入实时网络搜索能力。它不再是“闭门造车”,而是能随时上网查资料、看新闻、比价格。 Brave Search API 免费额度足够个人使用。如果注册不了,可以用国内的“火山云融合搜索API”,效果同样出色。配置后,你只需说“搜索一下今天的科技头条”,它就能给你一个带摘要的链接列表。
Self-Improving-Agent clawdhub install self-improving-agent 这是一个“元技能”。它会让 OpenClaw 记录自己每一次犯错的场景、错误的原因,以及最终是如何修正的。久而久之,它就形成了一个专属的“错误知识库”,避免重复踩坑。 这是我认为最体现 OpenClaw “智能”本质的技能。它让 AI 有了“反思”和“进化”的能力。安装后,它会自动在你的 ~/openclaw/memories/ 目录下创建 self_improvement.md 文件,你可以随时打开阅读它的“成长日记”。
Humanizer clawdhub install humanizer 去除 AI 生成文本的“机械感”。当你让 OpenClaw 写一封邮件、一份报告时,用这个技能润色一下,文字会立刻变得像真人写的那样自然、有温度、有节奏。 这个技能在职场沟通中简直是神器。它能瞬间把一段干巴巴的“根据您的需求,我们已完成XXX任务”,变成“Hi 张工,您好!您之前提到的 XXX 任务,我们已经顺利完成啦,附件是详细报告,有任何问题随时喊我!”

安装完技能后,记得重启 Gateway 以加载新功能:

sudo systemctl restart openclaw-gateway

4. 常见问题与排查技巧实录:那些让我熬过凌晨三点的“血泪教训”

在部署 OpenClaw 的过程中,我几乎遇到了网络上能搜到的所有报错。我把它们归类、复现、并找到了最直接有效的解决方案。这份清单,就是你未来排障的“速查宝典”。

4.1 飞书消息“石沉大海”:收不到,也发不出

这是最高频的问题。现象是:你在飞书里发消息,机器人毫无反应;或者你让它发消息,它却报错。

排查思路与解决方案:

  1. 第一步:看日志 。这是铁律。永远不要凭空猜测。

    openclaw logs --follow
    

    启动一个新终端,一直挂着这个命令。然后在飞书里发一条测试消息。观察日志里是否有新的输出。

  2. 第二步:查 Gateway 状态

    openclaw gateway status
    

    如果显示 Not running ,说明服务根本没起来。用 sudo systemctl status openclaw-gateway 查看 systemd 的详细状态。

  3. 第三步:查飞书回调是否生效 。这是最关键的。在飞书开放平台的“事件订阅”页面,找到你配置的 im.message.receive_v1 事件,点击右侧的“测试”。飞书会模拟发送一条消息到你的回调 URL。如果测试失败,说明你的 Gateway 地址根本不可达。此时,请检查:

    • 你的 Nginx 代理配置是否正确? location /webhook/feishu { proxy_pass http://127.0.0.1:18789; } 这样的配置是否遗漏了 proxy_set_header 等关键头?
    • 你的 Tailscale 连接是否稳定?在服务器上运行 tailscale status ,确认状态是 active
  4. 第四步:查权限 。如果日志里出现 403 Forbidden insufficient permissions ,100% 是飞书后台的权限没给够。回到“权限管理”,重新导入那个完整的 JSON 权限列表。特别注意 im:message:send_as_bot 这个权限,它是发送消息的“钥匙”。

4.2 openclaw: command not found 无法将“openclaw”项识别为 cmdlet...

这是 Windows 用户(尤其是用 PowerShell)和部分 macOS 用户的噩梦。根本原因只有一个: openclaw 的可执行文件路径没有加入系统的 PATH 环境变量。

解决方案:

  • Linux/macOS npm install -g 默认会把全局包的 bin 目录(如 /usr/local/bin )加入 PATH。如果没加,手动编辑 ~/.bashrc ~/.zshrc ,在末尾添加:

    export PATH="$HOME/.npm-global/bin:$PATH"
    

    然后 source ~/.bashrc

  • Windows (PowerShell) npm install -g 会把可执行文件放在 C:\Users\YourName\AppData\Roaming\npm 。你需要把这个路径加入系统环境变量 PATH 。右键“此电脑” → “属性” → “高级系统设置” → “环境变量”,在“系统变量”里找到 Path ,点击“编辑”,然后“新建”,把上面的路径粘贴进去。

4.3 API error: 400 thinking options type cannot be disabled when reasoning_effort

这个错误非常具体,它只出现在你使用 Claude 4 Opus 模型,并且在配置中禁用了 thinking 选项时。Claude 4 的新特性要求,如果你设置了 reasoning_effort (推理努力程度),就不能同时禁用 thinking

解决方案:

编辑你的 config.yaml ,找到 llm 配置段,删除或注释掉 thinking: false 这一行。或者,更推荐的做法是,完全移除 thinking reasoning_effort 这两个参数,让 Claude 自己决定最优的推理策略。OpenClaw 的默认配置已经为 Claude 做了很好的适配。

4.4 API error: the model has reached its context window limit.

这是大模型的“内存”满了。每个模型都有一个最大上下文长度(Context Window),比如 GPT-4 Turbo 是 128K,Claude 3.5 Sonnet 是 200K。当你的对话历史、系统提示、以及当前任务的输入内容总和超过这个长度,就会触发此错误。

解决方案:

  1. 精简系统提示(System Prompt) :OpenClaw 的 system.md 文件定义了 AI 的角色和行为准则。检查这个文件,删除所有冗余的、非核心的描述。保留最精炼的几句话即可。

  2. 启用记忆压缩(Memory Compression) :OpenClaw 支持自动压缩旧的记忆。在 config.yaml 中,添加:

    memory:
      compression:
        enabled: true
        threshold: 1000 # 当记忆条目超过1000条时触发压缩
    

    这会让 OpenClaw 定期将多条相似的记忆合并成一条摘要,大幅节省上下文空间。

  3. 为不同任务指定不同模型 :在 config.yaml 中,你可以为特定的 Skill 或 Channel 指定一个更“轻量”的模型。例如,让日常聊天用 claude-3-haiku (上下文小,速度快),而代码任务才用 claude-3-opus 。这需要你配置多个 LLM Provider。

4.5 机器人在群里不回复,只在私聊里回复

这通常是因为你的 groupPolicy 配置不正确。在 config.yaml 中,检查:

channels:
  feishu:
    groupPolicy: allowlist # 这是关键!

allowlist 模式意味着,只有你明确“白名单”里的群组,机器人才会响应。如果你希望它在所有群组里都工作,应该改为:

channels:
  feishu:
    groupPolicy: all

修改后,别忘了重启 Gateway。

实操心得:我最初也设成了 all ,结果发现它在几百人的大群里疯狂刷屏,严重影响了同事。后来我改成了 allowlist ,并在飞书后台的“机器人设置”里,只把我的几个核心项目群加进了白名单。这样既保证了效率,又维护了秩序。技术没有好坏,关键在于你怎么用。

5. 安全与治理:在赋予 AI“手脚”之前,先为它戴上“缰绳”

OpenClaw 的强大,源于它对本地系统的深度访问能力。但这份能力,也是一把双刃剑。一个拥有 sudo 权限的 AI,无异于在你的服务器上安装了一个全自动的后门。因此,“安全”不是部署完成后的附加题,而是贯穿始终的核心命题。

5.1 最小权限原则:从沙箱开始,而非从 root 开始

这是 OpenClaw 安全模型的基石。永远不要用 root 用户来运行 Gateway。我创建了一个专门的、权限受限的系统用户 openclaw

sudo adduser --disabled-password --gecos "" openclaw
sudo usermod -aG sudo openclaw # 如果需要有限的 sudo 权限
# 将 openclaw 的工作目录所有权转移给新用户
sudo chown -R openclaw:openclaw /home/openclaw

然后,修改 systemd 服务文件 /etc/systemd/system/openclaw-gateway.service ,将 User= Group= 两行改为:

User=openclaw
Group=openclaw

最后, sudo systemctl daemon-reload && sudo systemctl restart openclaw-gateway

提示: openclaw security audit 命令是你的安全卫士。它会扫描你的配置,检查是否存在高危设置(如 shell: true 且未限制命令白名单)。定期运行它,是保障系统安全的低成本高回报操作。

5.2 Shell 访问的“白名单”机制:让 AI 只能做你允许的事

OpenClaw 的 shell 技能,默认是开放的。这意味着它理论上可以执行 rm -rf / 这样的毁灭性命令。我们必须为它套上“白名单”。

~/.openclaw/config.yaml 中,添加或修改 shell 配置:

shell:
  enabled: true
  whitelist:
    - "ls *"
    - "cat *"
    - "grep *"
    - "date"
    - "uptime"
    - "df -h"
    - "ps aux | grep *"
    - "/path/to/my/safe/script.sh"

这个白名单规定了 AI 只能执行哪些命令,以及命令的参数模式( * 代表通配符)。 ls * 允许它列出任何目录下的文件,但 rm * 是被禁止的。 /path/to/my/safe/script.sh 是一个你预先写好、经过严格测试的安全脚本,AI 可以调用它来完成特定的、复杂的任务。

5.3 数据隔离:为你的“数字副驾驶”划清“生活区”与“工作区”

OpenClaw 的工作目录 ~/openclaw ,就是它的“大脑”和“记忆库”。这里面的 memories/ 目录,存储着它所有的对话历史、学习笔记和任务记录。这些数据极其敏感。

我的做法是:

  • Git 版本控制 :将整个 ~/openclaw 目录初始化为一个私有 Git 仓库。每次重大配置变更或技能安装后,都执行 git add . && git commit -m "feat: add humanizer skill" 。这不仅提供了完美的备份,更让你能清晰地看到 AI 的“成长轨迹”,甚至可以回滚到任何一个历史状态。
  • 定期快照 :使用 rsync borgbackup ,每周将 ~/openclaw 目录同步到一个离线的 NAS 或另一台服务器上。 borgbackup 的去重和加密功能,是保护这些记忆数据的绝佳选择。

5.4 主动防御:监控、告警与“熔断”机制

一个成熟的 AI 助手,必须具备自我监控和异常响应的能力。

  • 日志监控 :我用 logrotate 配置了 OpenClaw 日志的自动轮转和压缩,防止日志文件无限膨胀。同时,我编写了一个简单的 Bash 脚本,每小时扫描一次 openclaw.log ,如果发现连续 5 分钟内出现超过 10 次 ERROR ,就自动发送一封告警邮件给我。
  • 资源监控 :OpenClaw 本身会消耗 CPU 和内存。我用 htop glances 实时监控。一旦发现 CPU 占用率持续高于 90%,我会立即运行 openclaw doctor 进行诊断,很可能是某个 Skill 出现了死循环。
  • “熔断”开关 :在 config.yaml 中,我设置了一个全局的 enabled: false 开关。当发生严重安全事件时,我可以在 1 秒内,通过 openclaw config set enabled false 命令,瞬间让整个 AI 助手“休眠”,切断它与所有外部系统的联系,为后续调查争取宝贵时间。

安全,不是一劳永逸的终点,而是一场需要你持续投入、不断调整的旅程。每一次 openclaw security audit 的运行,每一次 git commit 的提交,每一次对 `config

更多推荐