)
1. 为什么要在飞书里塞一个会搜索的 AI 助手OpenClaw 是一个基于 Node.js 的轻量级个人助手框架它能通过技能插件把飞书、Tavily 这类外部服务串起来让你在飞书聊天窗口里直接完成搜索、整理、写文档的动作。飞书是团队日常沟通的主阵地Tavily 是专为 AI 代理设计的搜索 API把这三者拼在一起你得到的就是一个在群里 一下就能查资料并自动归档的助手。这套方案适合谁适合想在飞书内做搜索增强型机器人的开发者、想给团队加一个自动化信息入口的技术负责人以及手上有 Node.js 基础、愿意折腾配置文件的同学。我自己在团队里跑这套组合已经有一段时间最大的感受是真正难的不是写代码而是把飞书事件订阅、Tavily 搜索工具、OpenClaw 网关这三块配置对齐。任何一处 token 或回调地址写错消息就石沉大海。所以这篇教程不会只给你一段代码就完事而是从环境准备、飞书应用创建、Tavily 接入、配置片段、启动验证到报错排查一步步把最小闭环跑通。你跟着做最后能在飞书里发一条消息机器人调用 Tavily 搜索后把结果回给你这条链路通了后面加什么技能都是复制粘贴的事。需要提前说明的是本文所有模型调用与 API 网关都走 TaoToken 提供的统一入口你只需要准备一个 API Key不用在多个平台之间来回切换。下面先从环境准备讲起。2. OpenClaw 环境准备与 TaoToken 接入前置2.1 系统环境要求在动手之前先确认你的开发环境满足下面的条件。OpenClaw 基于 Node.js版本太低会在启动网关时直接报错。组件最低版本推荐版本说明Node.jsv18.xv20.x LTS长期支持版本更稳npmv9.xv10.x随 Node.js 一起安装操作系统Win10 / macOS 12 / Ubuntu 20.04最新稳定版主流系统均可内存4GB8GB运行更流畅磁盘空间500MB2GB预留缓存空间Node.js 安装这里不展开Windows 去官网下 LTS 版一路默认macOS 用brew install node20Ubuntu 用 NodeSource 仓库。装完执行node --version和npm --version确认版本号能打印出来即可。2.2 安装 OpenClaw 并初始化工作空间全局安装 OpenClawnpm install -g openclaw openclaw --version初始化工作空间这一步会在你的用户目录下生成配置目录openclaw init openclaw config show配置目录位置Windows 在C:\Users\你的用户名\.openclaw\macOS 和 Linux 在~/.openclaw/。后面所有配置文件都放在这个目录里。2.3 为什么先接 TaoTokenOpenClaw 本身只是调度框架真正干活的是背后的大模型。如果你直接对接各家模型厂商需要分别申请 Key、分别处理计费和限流配置会变得很碎。TaoToken 提供统一的 API 入口一个 Key 就能调用多种模型Base URL 固定省去大量对接成本。你需要先拿到两样东西API Key 和 Base URL。API Key 在控制台的 API Keys 页面创建Base URL 统一为https://taotoken.net/api。拿到之后把它写进 OpenClaw 的配置里模型调用就会走这个入口。创建 Key 的入口在这里API Keys 管理页。如果你还没注册可以先从官网进入。2.4 启动网关并访问 Dashboard配置好模型入口后启动 OpenClaw 网关openclaw gateway start openclaw gateway status openclaw gateway logs --follow浏览器访问http://127.0.0.1:18789/能看到控制面板就说明基础环境没问题。面板里包含服务状态监控、已安装技能列表、日志查看器和配置管理界面。这一步是整个搭建的地基如果 Dashboard 打不开先别往下走回到 2.1 检查 Node 版本和端口占用。3. 飞书机器人事件订阅与 Tavily 搜索工具配置这一节是全文的核心配置片段比较多建议边看边改文件。3.1 创建飞书自建应用登录飞书开放平台用企业账号或测试账号都可以点击创建应用。填写应用名称比如 OpenClaw 智能助手、上传图标、写一句描述。创建完成后进入凭证与基础信息页面记录三个值App ID、App Secret、Verification Token。App Secret 和 Verification Token 属于敏感信息不要提交到公开代码仓库。接着在权限管理页面添加以下权限im:message发送消息、im:message.receive接收消息、doc:document文档读写、drive:file云盘文件操作、wiki:wiki知识库操作、calendar:calendar日历操作。添加后点击发布版本提交审核开发阶段可仅对应用可见范围生效。3.2 配置事件订阅进入事件订阅页面打开开关填写回调 URL。本地开发阶段可以先填一个占位地址等网关跑起来后再换成真实地址。订阅事件勾选im.message.receive_v1接收消息事件和app_ticket应用票据事件。保存后复制生成的 Verification Token。然后在机器人页面开启机器人功能设置名称和头像勾选支持单聊、群聊、机器人。把机器人添加到你创建的测试群里。3.3 安装飞书技能包npm install -g openclaw/feishu openclaw skills list3.4 写入 OpenClaw 配置可复制片段编辑~/.openclaw/openclaw.json把飞书、Tavily 和模型入口一起写进去。注意路径和字段名要和下面保持一致{ version: 2026.3.7, gateway: { port: 18789, host: 127.0.0.1 }, plugins: { entries: { feishu: { appId: cli_xxxxxxxxxxxxxxxx, appSecret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, verificationToken: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, encryptKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx }, tavily: { apiKey: tvly-xxxxxxxxxxxxxxxxxxxxxxxx } } }, skills: { feishu: { enabled: true, defaultChatId: oc_xxxxxxxxxxxxxxxx, autoReply: false, timeout: 30000 }, tavily: { enabled: true, defaultSearchDepth: advanced, maxResults: 10, timeout: 30000 } }, models: { provider: taotoken, baseUrl: https://taotoken.net/api, apiKey: 你的 TaoToken API Key, modelId: claude-sonnet-4-5 } }这里三个关键字段必须成对出现Base URL 填https://taotoken.net/apiAPI Key 填你在控制台创建的 KeyModel ID 填你要调用的模型标识。三者缺一模型调用就会失败。如果你更习惯用命令行配置也可以逐条设置openclaw config set feishu.appId cli_xxxxx openclaw config set feishu.appSecret xxxxx openclaw config set feishu.verificationToken xxxxx openclaw config set models.baseUrl https://taotoken.net/api openclaw config set models.apiKey 你的Key3.5 获取 Tavily API Key访问 Tavily 官网注册账号登录后在 Dashboard 的 API Keys 页面点击创建复制生成的 Key格式是tvly-开头。免费额度足够跑通本文所有示例。把 Key 填进上面配置文件的plugins.entries.tavily.apiKey字段。3.6 Tavily 搜索参数说明参数类型默认值说明querystring必填搜索关键词maxResultsnumber5返回结果数量1-20searchDepthstringbasic搜索深度basic/advancedincludeDomainsarray[]限定搜索域名excludeDomainsarray[]排除搜索域名includeAnswerbooleanfalse是否包含 AI 生成的答案摘要topicstringgeneral搜索主题general/news/science3.7 重启并验证技能状态openclaw gateway restart openclaw skills list --filter feishu openclaw skills list --filter tavily openclaw skills test feishu-chat openclaw skills test tavily两个测试都返回 Connected 就说明配置生效了。4. 本地启动与消息回环验证配置写完不代表链路通了必须做一次真实的消息回环测试。4.1 编写最小搜索脚本新建search-test.jsasync function basicSearch() { const results await skills.tavily.search({ query: OpenClaw 飞书集成, maxResults: 5, searchDepth: advanced, includeAnswer: true }); if (results.answer) { console.log(AI 摘要:, results.answer); } results.results.forEach((item, index) { console.log(${index 1}. ${item.title}); console.log( URL: ${item.url}); console.log( 摘要: ${item.content.substring(0, 100)}...); }); } basicSearch().catch(console.error);执行node search-test.js能看到搜索结果列表就说明 Tavily 通了。4.2 搜索并写入飞书文档async function searchAndSave() { const results await skills.tavily.search({ query: AI 大模型 最新进展 2026, maxResults: 10, searchDepth: advanced, includeAnswer: true }); let content # AI 最新进展搜索结果\n\n; content 搜索时间: ${new Date().toLocaleString()}\n\n---\n\n; if (results.answer) { content ## AI 摘要\n\n${results.answer}\n\n---\n\n; } results.results.forEach((item, index) { content ## ${index 1}. ${item.title}\n\n; content 来源: [${item.url}](${item.url})\n\n; content ${item.content}\n\n---\n\n; }); const doc await skills.feishu-doc.create({ title: AI 进展 - ${new Date().toLocaleDateString()}, content: content }); console.log(文档创建成功:, doc.url); return doc; } searchAndSave().catch(console.error);4.3 消息回环测试在飞书测试群里 机器人发一条消息比如搜索 OpenClaw 教程。观察网关日志openclaw gateway logs --follow日志里应该能看到收到消息事件、调用 Tavily、返回结果的完整链路。如果机器人没有回复先看日志有没有收到事件再看有没有报错。这一步跑通最小闭环就成立了。4.4 自动回复机器人示例const REPLY_RULES { 你好: 你好我是 OpenClaw 智能助手有什么可以帮你的, 帮助: 我可以帮你搜索最新信息、创建飞书文档、生成日报。, 搜索: 请告诉我你想搜索什么内容 }; async function startAutoReply() { await skills.feishu-chat.listen({ onMessage: async (message) { const text message.text.toLowerCase(); for (const [keyword, reply] of Object.entries(REPLY_RULES)) { if (text.includes(keyword)) { await skills.feishu-chat.send({ message: reply, chatId: message.chatId }); return; } } await skills.feishu-chat.send({ message: 我还在学习中试试说「帮助」看看我能做什么。, chatId: message.chatId }); } }); } startAutoReply().catch(console.error);5. 常见报错排查401、local proxy failed、reading choices这一节按真实报错来对照遇到问题直接查表。5.1 401 Unauthorized报错信息通常是401 Unauthorized或invalid api key。原因有三类TaoToken API Key 填错或过期、飞书 App Secret 不匹配、Tavily Key 无效。排查顺序是先确认配置文件里的 Key 没有多余空格再执行openclaw config show models openclaw config show feishu openclaw skills test tavily如果模型调用报 401重点检查models.baseUrl是否为https://taotoken.net/api以及models.apiKey是否和控制台里的一致。三件套Base URL Key Model ID任何一个写错都会 401。5.2 local proxy failed这个报错一般出现在网关启动阶段提示本地代理连接失败。常见原因是端口被占用或 host 配置错误。检查端口# Windows netstat -ano | findstr :18789 # Linux/macOS lsof -i :18789如果被占用换端口启动openclaw gateway stop openclaw gateway start --port 18790同时确认gateway.host是127.0.0.1不要写成0.0.0.0以外的奇怪地址。5.3 reading choices 报错这个报错通常来自模型返回结构解析失败提示reading choices或cannot read property of undefined。原因是模型接口返回的 JSON 结构和 OpenClaw 预期的不一致多半是 Base URL 或 Model ID 写错导致请求打到了错误的端点。确认models.baseUrl和models.modelId匹配Model ID 要填 TaoToken 支持的模型标识。改完重启网关再试。5.4 OAuth 相关报错如果日志里出现 OAuth 或 token 刷新失败说明飞书应用的凭证配置有问题。检查 App ID 和 App Secret 是否对应同一个应用Verification Token 是否和事件订阅页面的一致。重新生成 App Secret 后要同步更新配置文件并重启网关。5.5 飞书消息无响应按这个顺序排查日志有没有收到im.message.receive_v1事件机器人是否已加入目标群权限是否已发布生效回调 URL 是否可达。本地开发时回调 URL 需要能被飞书访问如果只是本地跑可以用内网穿透工具把本地端口映射出去但要注意不要暴露敏感配置。5.6 Tavily 搜索无结果先测 Key 是否有效openclaw skills exec tavily search --query test如果报配额用尽等额度刷新或升级套餐。如果关键词太冷门换成更通用的词再试。搜索深度设为 advanced 会消耗更多额度调试阶段可以用 basic。6. 把助手用起来从验证到日常链路跑通之后你可以把搜索和文档写入组合成日常自动化。比如每天早上定时搜索行业动态整理成日报写入飞书文档再推送到群里。定时任务用系统自带的计划任务即可Windows 用任务计划程序Linux/macOS 用 crontab0 9 * * * cd /path/to/project /usr/bin/node daily-news.js daily-news.log 21调试阶段建议把autoReply设为 false避免机器人误回复群消息。等规则稳定后再打开。所有配置集中在~/.openclaw/openclaw.json备份这个目录就等于备份了全部配置和技能数据。如果你想把模型调用换成更适合长期编码或 Agent 场景的方案可以了解 Coding Plan想直接在网页里验证模型效果用模型对话最快接入过程中遇到配置问题接入文档里有完整的参数说明。把 Base URL、Key、Model ID 这三件套对齐剩下的就是不断往技能列表里加东西了。