OpenClaw中飞书机器人配置指南:如何让群消息免 @ 也能自动回复

用 OpenClaw 做飞书机器人时,默认配置下,群里的消息必须 @ 机器人 才能触发回复。这在很多场景下很不方便——如果希望机器人在群里"隐身"工作,不用 @ 就能自动监听和回复,需要额外配置。

本文记录我解决这个问题的完整过程,供同样踩坑的同学参考。


问题描述

现象:

  • 飞书群里 @ 机器人 → 正常回复 ✅
  • 飞书群里不 @ 机器人 → 没有任何反应 ❌

环境:

  • OpenClaw 框架
  • 飞书自建应用(机器人)
  • WebSocket 长连接模式

解决过程

第一步:修改 OpenClaw 配置

openclaw.json 中找到飞书渠道配置:

"channels":{"feishu":{"requireMention":false,...}}

requireMention 设为 false,让 OpenClaw 不再强制要求 @ 机器人。

但这还不够 ❌

第二步:申请飞书平台权限

修改 OpenClaw 配置后测试,发现消息依然收不到。

查日志发现:消息根本没有到达 OpenClaw——问题出在飞书平台层面

飞书默认只推送 @ 机器人 的消息到应用。如果要接收群里所有消息(不限于 @),需要在飞书开放平台申请一个敏感权限:

权限名称:im:message.group_msg(获取群组中所有消息)

第三步:在飞书开放平台申请权限

  1. 打开 飞书开放平台,进入你的应用
  2. 事件与回调事件配置接收消息 → 获取群组中所有信息(敏感权限) im:message.group_msg → 申请开通

第四步:验证效果

权限生效后,在群里发消息不用 @ 机器人,OpenClaw 就能正常收到并自动回复了 ✅


完整配置参考

OpenClaw 飞书渠道配置(完整示例)

"channels":{"feishu":{"enabled":true,"appId":"cli_xxxx","appSecret":"xxxx","domain":"feishu","connectionMode":"websocket","requireMention":false,"dmPolicy":"allowlist","allowFrom":["ou_你的用户ID"],"groupAllowFrom":["ou_你的用户ID"],"groupPolicy":"allowlist","groups":{"*":{"enabled":true}}}}

需要申请的飞书权限清单

权限标识名称类型说明
im:message发送消息基础权限机器人发消息
im:message.group_at_msg:readonly接收群@消息事件基础权限接收群内@机器人消息
im:message.group_msg获取群组中所有消息敏感权限接收群内所有消息(不限于@)
im:message.p2p_msg:readonly接收单聊消息基础权限接收私信

注意事项

  1. im:message.group_msg 是敏感权限
    • 需要企业管理员审批
    • 审批通过后才能使用
    • 建议同时申请 im:message.group_at_msg:readonly(基础权限)
  2. 权限申请后需要重新发布应用
    • 权限审批通过后,必须重新发布版本才能生效
  3. requireMention: false 的作用
    • 设为 false 后,OpenClaw 不会强制要求消息必须 @ 机器人
    • 但如果飞书平台没有相应权限,消息根本不会推送到 OpenClaw
  4. WebSocket vs Webhook
    • 推荐使用 WebSocket 模式,更简单
    • 如果用 Webhook 模式,还需要额外配置 verificationTokenencryptKey

相关文档


总结

飞书群消息免 @ 触发机器人的关键就两步:

  1. OpenClaw 侧requireMention: false
  2. 飞书平台侧:申请 im:message.group_msg 敏感权限并重新发布应用

两个缺一不可。按照这个流程配置,应该就能实现群里自由对话了。


首发于我的博客:https://blog.ZEEKLOG.net/QIU176161650
欢迎交流讨论!

Read more

Java Web 公交线路查询系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

Java Web 公交线路查询系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 随着城市化进程的加速,公共交通系统的复杂性和规模不断扩大,传统的公交线路查询方式已难以满足用户高效、精准的出行需求。公交线路查询系统的开发旨在解决这一问题,通过信息化手段提升公交出行的便捷性和智能化水平。该系统整合了公交线路、站点、换乘等关键信息,为用户提供实时查询、最优路径推荐等功能,同时优化公交资源管理效率。关键词:公交线路查询、智能化出行、信息化管理、SpringBoot、Vue3。 本系统采用前后端分离架构,后端基于SpringBoot2框架,结合MyBatis-Plus实现高效数据持久化操作,MySQL8.0作为数据库存储公交线路、站点及用户信息。前端使用Vue3构建响应式用户界面,提供线路查询、换乘推荐、站点导航等功能。系统支持多条件筛选和动态路径规划,确保用户能够快速获取最优出行方案。关键词:SpringBoot2、Vue3、MyBatis-Plus、MySQL8.0、路径规划。 数据表 公交线路数据表 公交线路数据表用于存储公交线路的基本信息,包括线路名称、运营方向、首末班时间等属性。线路编号是该表的主键,用于唯一标识每条线路。结构表如表3-1所示。

轻松搭建个人WebDAV文件服务器:小白也能快速上手

轻松搭建个人WebDAV文件服务器:小白也能快速上手 【免费下载链接】webdavSimple Go WebDAV server. 项目地址: https://gitcode.com/gh_mirrors/we/webdav 还在为多设备间文件同步而烦恼吗?想要拥有一个安全可靠的文件共享平台吗?这个基于Go语言开发的WebDAV服务器正是你需要的解决方案。它简单易用、功能强大,让你轻松搭建专属的文件管理服务。 🎯 快速上手:三种部署方式任你选 方式一:一键安装(推荐新手) # 使用Homebrew安装 brew install webdav # 使用Go工具链安装 go install github.com/hacdias/webdav/v5@latest 方式二:Docker容器化部署 docker run -p 6060:6060 -v $(pwd)/data:/data

微信 H5 缓存控制:后端重定向 & 前端强制刷新

在 Web 开发中,缓存是一把双刃剑。对于静态资源,它能极大提升加载速度;但对于业务逻辑频繁变动的 H5 页面(如支付、订单页),缓存往往会导致用户看到过期的数据或界面。最近在维护一个 uni-app 项目时,遇到了一段关于 H5 缓存控制的逻辑,引发了我对于“后端重定向加时间戳”和“前端 JS 加时间戳”这两种方案的思考。虽然两者的最终目的一致,但在 Hash 模式下,它们的实现原理和效果有着本质的区别。 一、 问题背景 在应用启动的生命周期中,通常会有这样一段逻辑:当用户访问特定的关键页面(如支付、订单页)时,如果当前 URL 中缺少时间戳参数,前端会自动解析 URL,追加当前时间戳,并强制页面刷新。 这就引出了一个问题:为什么不直接在后端重定向时加时间戳?这两种方式有什么区别? 二、 核心区别:

AI 时代,前端逆向的门槛已经低到离谱 — 以 Upwork 为例

我用 AI 逆向 Upwork 消息系统,2小时搞定数据层开发 前言 作为 Upwork 自由职业者,我一直觉得它的消息管理界面信息量太大,不够直观。我想做一个 Chrome 插件来简化消息管理,核心需求很简单:一眼看出哪些对话需要我回复,哪些在等对方。 传统做法是下载混淆后的 JS 文件慢慢分析,但这次我决定换个思路——全程和 AI 配合,看看能多快搞定。 结果远超预期。从零开始到完全摸清 API、认证方式、数据结构,总共不到 2 小时。 第一步:摸清技术栈(5分钟) 打开 Upwork 消息页面,F12 看 Sources 面板,从加载的 JS 文件名就能判断出技术栈: ThunderNuxt/rooms.fdb6ff58.