1. 从零到一:为什么我们需要一个“聊天软件里的AI助手”?
最近几个月,我身边不少朋友和同事都在讨论一个事儿:怎么才能让AI更自然地融入日常工作流?大家用ChatGPT、Claude或者国内的各类大模型,基本还是“复制-粘贴-等待-复制”的循环,效率有提升,但总觉得差点意思。尤其是当你在飞书、钉钉或者微信群里讨论方案、整理会议纪要、查询数据时,如果能让AI直接在这些聊天窗口里“待命”,随叫随到,那体验就完全不一样了。
这就是我今天想跟你详细聊聊的OpenClaw。简单来说,它是一个开源的AI Agent框架,核心能力是让你能轻松地把大模型(比如GPT-4、Claude、或者本地部署的Ollama模型)接入到飞书、钉钉、微信等聊天软件里,把它变成一个24小时在线的智能助手。你可以直接@它提问,让它帮你总结文档、写代码片段、查询知识库,甚至基于你提供的工具(比如调用API查询天气、操作数据库)去完成更复杂的任务。
听起来很酷,对吧?但我在第一次尝试部署OpenClaw时,可没少踩坑。从Node.js环境报错、npm脚本权限问题,到飞书机器人配置里各种“invalid redirect uri”、“app secret复制不上去”的诡异错误,每一步都可能有“惊喜”。网上的教程要么过于简略,要么版本过时,照着做根本跑不通。所以,我决定结合自己从零搭建、反复调试成功的经验,写一份真正能“抄作业”的保姆级教程。无论你是前端、后端还是对运维了解不多的产品经理,只要跟着步骤走,都能在自己的飞书里拥有一个专属的AI伙伴。
2. 部署前夜:理解OpenClaw的架构与核心组件
在动手安装之前,我们得先搞清楚OpenClaw到底是个什么东西,它由哪些部分组成,这样后面遇到问题你才知道该从哪里入手排查。盲目跟着命令敲,一旦报错就会完全懵掉。
OpenClaw本质上是一个基于Node.js的后端服务。它的核心职责是作为一个“中间人”或“调度中心”,负责三件事:
- 对接聊天平台:通过各平台(如飞书)官方提供的机器人/开放平台API,接收用户发送的消息。
- 调度AI大脑:将用户的消息,结合上下文和历史对话,发送给配置好的大语言模型(LLM),并获取模型的回复。
- 扩展工具能力:允许模型在思考后,调用开发者预先定义好的“工具”(Tools),比如执行一段代码、查询数据库、调用外部API等,然后用工具执行的结果继续生成最终回复。
为了实现这些,一个典型的OpenClaw部署包含以下核心组件:
- OpenClaw主服务 (OpenClaw Server):这是核心的Node.js应用。它包含了处理消息流、管理对话状态、调用工具和模型的核心逻辑。我们通过Git克隆代码、安装依赖、运行的就是这个服务。
- 大语言模型 (LLM) 后端:OpenClaw本身不包含模型,它需要连接一个模型服务。这可以是:
- 云服务API:如OpenAI的GPT系列、Anthropic的Claude系列,你需要提供相应的API Key。
- 本地模型服务:如通过Ollama在本地电脑或服务器上运行的Llama 3、Qwen等开源模型。这也是很多开发者为了数据隐私和免费使用而选择的方案。
- 平台适配器 (Platform Adapter):为了让OpenClaw能理解飞书、钉钉等不同平台的消息格式,需要对应的适配器。OpenClaw社区通常提供了这些适配器的插件或配置模块。对于飞书,我们需要配置飞书机器人的凭证信息。
- 工具定义 (Tools):这是让AI“干活”的关键。你可以用代码定义一些函数,比如“获取当前时间”、“查询数据库用户列表”、“调用某内部系统API创建工单”。OpenClaw会将这些函数的描述“告诉”AI模型,模型在认为需要时,就会请求调用这个工具。
它们之间的关系,你可以想象成一个餐厅:
- 你(用户)在飞书(点餐台)下单(发送消息)。
- 飞书机器人适配器(服务员)把订单传给OpenClaw主服务(后厨调度)。
- OpenClaw主服务(厨师长)看了看订单,决定需要用到工具(厨具和食材),比如需要查一下库存(调用查询工具),然后开始用LLM后端(主厨)烹饪(生成思考过程)。
- 主厨可能会让助手用特定的工具(锅具)处理食材(执行工具函数),最后将做好的菜(回复)通过服务员端给你。
理解了这套流程,后面配置config.json或环境变量时,你就能明白每一行配置是管哪一部分的,而不是机械地填空。
3. 夯实地基:Node.js环境与项目依赖的避坑指南
几乎所有OpenClaw的部署教程第一步都是“安装Node.js”,但恰恰是这一步,让很多新手(包括当初的我)出师未捷。下面我以Windows系统为例(macOS/Linux原理相通,命令稍异),带你绕开所有坑。
3.1 Node.js安装与那个经典的“npm.ps1”错误
首先,去Node.js官网下载LTS(长期支持)版本,比如20.x.x。这比追求最新版要稳定得多。安装过程无脑下一步即可,但建议安装路径不要有中文和空格。
安装完成后,打开命令行(CMD或PowerShell),输入node -v和npm -v检查版本。如果看到版本号,恭喜,第一步成功了50%。为什么是50%?因为紧接着你可能就会遇到这个高频错误:
npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。这个错误是因为PowerShell的执行策略(Execution Policy)默认禁止运行脚本,包括npm脚本。解决方法不是去动那个npm.ps1文件,而是以管理员身份打开PowerShell,执行以下命令:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser执行后输入Y确认。这个命令将当前用户的执行策略设置为“RemoteSigned”,允许运行本地创建的脚本和来自可信发布者的远程签名脚本。完成后再试npm -v,应该就能正常显示了。
注意:有些教程会让人去修改系统环境变量或者用CMD而不用PowerShell,这能临时绕过,但治标不治本。修改执行策略是更规范的做法。如果你在公司电脑上操作,且策略被组策略锁定,可以尝试使用系统自带的“命令提示符(CMD)”来执行后续的npm命令,因为CMD不受PowerShell执行策略影响。
3.2 获取OpenClaw项目代码并安装依赖
环境搞定后,我们拉取代码。找一个你喜欢的目录,在终端里执行:
# 克隆项目仓库,使用 --depth 1 只克隆最新提交,速度更快 git clone https://github.com/openclaw-ai/openclaw.git --depth 1 cd openclaw接下来是关键步骤:安装依赖。在项目根目录下,你会看到package.json文件。直接运行:
npm install这个过程可能会因为网络问题比较慢,或者出现某些原生模块编译失败。这里有几个经验点:
网络问题:如果
npm install卡住或报错,可以尝试切换npm源到国内镜像:npm config set registry https://registry.npmmirror.com然后再执行
npm install。Python与构建工具:如果报错提示需要Python或
node-gyp,说明项目中有依赖需要编译。你需要确保系统已安装:- Python(建议3.8+,并添加到系统PATH)。
- Windows Build Tools(针对Windows用户)。可以运行:
或者更推荐的是,安装Visual Studio Build Tools,在安装时勾选“C++桌面开发” workload。npm install --global windows-build-tools
版本锁定:如果依赖安装后项目运行仍有问题,可以尝试删除
node_modules文件夹和package-lock.json文件,然后用npm ci命令代替npm install。npm ci会严格按照package-lock.json安装,一致性更好,但如果lock文件不存在或与package.json冲突,它会报错。所以这通常是第二次尝试时的选择。
依赖安装成功后,你的“地基”就算打牢了。可以运行npm run start或查看package.json中的scripts字段,看看默认的启动命令是什么,不过先别急,在启动之前我们必须先配置好飞书机器人。
4. 关键一步:在飞书开放平台创建与配置机器人
这是连接OpenClaw和飞书的核心环节,也是最容易出错的地方。请严格按照以下步骤操作,并理解每一个参数的意义。
4.1 创建企业自建应用
- 访问 飞书开放平台 ,用你的飞书账号登录(通常需要一个企业账号,个人账号部分功能受限)。
- 点击顶部导航栏的“创建企业自建应用”。
- 填写应用名称(如“我的AI助手”)、描述,并选择应用图标。这些以后都可以改。
- 创建成功后,进入应用详情页。在这里,你需要记录两个最重要的凭证:
- App ID:应用的唯一标识。
- App Secret:相当于应用的密码。点击“重置”或“生成”来获取它,并立即妥善保存(比如保存在本地的加密笔记里)。这个密钥只显示一次,关闭页面后就看不到了,丢失只能重置。
4.2 配置权限与事件订阅
光有凭证还不够,我们需要告诉飞书,这个应用具备哪些能力。
添加权限:在左侧菜单找到“权限管理”。你需要为机器人添加以下关键权限:
im:message(获取用户发给机器人的单聊消息)im:message.group_msg(获取群聊中@机器人的消息)im:message.p2p_msg(获取单聊消息)- 根据你想让机器人做的事情,可能还需要
contact:user.id:readonly(读取用户信息)等。建议初期先按最小权限配置,需要时再加。
配置事件订阅:这是最关键的步骤,也是“invalid redirect uri”错误的根源。
- 在左侧菜单找到“事件订阅”。
- 请求地址 URL:这里要填写你即将部署的OpenClaw服务的公网访问地址,并加上飞书事件回调的路径。例如,如果你打算在本地调试,并使用内网穿透工具(如ngrok、localtunnel)将本地的
3000端口暴露到一个公网地址,那么你的地址可能是:https://your-ngrok-subdomain.ngrok.io/feishu/event/callback注意,OpenClaw的飞书适配器通常约定回调路径是/feishu/event/callback,你需要在项目配置或代码中确认这一点。 - 重点:这个URL必须是公网可访问的HTTPS地址。飞书的服务器无法直接回调你的
localhost:3000。这就是为什么本地开发必须使用内网穿透。 - 验证请求:填写URL后,飞书会向该地址发送一个带
challenge参数的GET请求。你的OpenClaw服务必须能正确接收并原样返回这个challenge值,才能通过验证。通常OpenClaw的飞书适配器中间件已经处理了这部分逻辑,只要你配置正确且服务在线,点“保存”或“重试”即可通过。
添加事件:在事件订阅页面,点击“添加事件”。你需要订阅:
- 接收消息 v2.0(
im.message.receive_v1):这是机器人接收消息的核心事件。
- 接收消息 v2.0(
4.3 发布应用与获取访问凭证
- 版本管理与发布:在左侧菜单“应用发布”中,创建一个版本并申请发布。通常需要企业管理员审核。对于测试,你可以先将机器人添加为“可用人员”仅自己或小范围使用。
- 启用机器人:在应用详情的“功能”选项卡中,确保“机器人”功能是开启状态。
- 获取访问凭证(Access Token):OpenClaw服务在运行时,需要代表应用去调用飞书API(比如发送消息)。这需要动态的
tenant_access_token。飞书开放平台提供了获取这个Token的API。不过,OpenClaw服务通常会内置这个获取逻辑,你只需要在配置文件中填入上一步拿到的App ID和App Secret,它就会自动处理Token的获取与刷新。你不需要手动去调用API获取并填写Token。
至此,飞书侧的配置暂告一段落。请务必保存好App ID、App Secret和你配置的事件订阅请求地址。接下来,我们要在OpenClaw中填入这些信息。
5. 核心配置:让OpenClaw连接飞书与AI大脑
现在,我们回到本地的OpenClaw项目。项目根目录下通常会有一个配置文件,例如config.json,config.yaml, 或者.env文件。我们需要根据飞书和AI模型的配置来修改它。
5.1 配置飞书适配器
假设项目使用config.json,我们需要找到或添加飞书配置部分。一个典型的配置结构如下:
{ "port": 3000, "logLevel": "info", "platforms": { "feishu": { "type": "feishu", "appId": "你的飞书App ID", "appSecret": "你的飞书App Secret", "encryptKey": "", // 如果你在飞书后台配置了“Encrypt Key”则填写,否则留空 "verificationToken": "", // 同上,如果配置了则填写 "eventEndpoint": "/feishu/event/callback" // 与飞书后台配置的事件订阅URL路径部分一致 } }, "llm": { // AI模型配置,见下一小节 } }关键点解析:
appId&appSecret:就是你在飞书开放平台拿到的那两个字符串。直接复制粘贴进去。encryptKey和verificationToken:在飞书后台“事件订阅”页面,如果你开启了“Encrypt Key”和“Verification Token”以提高安全性,就需要在这里填写。初期调试建议先关闭它们,避免增加复杂度。eventEndpoint:这个路径必须和你在飞书后台填写的“请求地址URL”中的路径部分完全一致。如果你填的URL是https://xxx.com/feishu/event/callback,那么这里就是/feishu/event/callback。
5.2 配置AI模型后端
这是OpenClaw的“大脑”部分。这里我给出两种最常用方案的配置:OpenAI API和本地Ollama。
方案一:使用OpenAI API(如GPT-4)
"llm": { "type": "openai", "apiKey": "你的OpenAI API Key", "model": "gpt-4-turbo-preview", // 或 gpt-3.5-turbo "baseURL": "https://api.openai.com/v1" // 默认即可,如果你用代理或反代可能需要改 }这种方式最简单,网络通畅的话直接可用。
方案二:使用本地Ollama服务(如Llama 3)这是我更推荐的、免费且隐私安全的方式。
- 首先,安装并启动Ollama:前往Ollama官网下载安装,然后在命令行拉取并运行一个模型:
ollama pull llama3:8b # 拉取Llama 3 8B模型 ollama run llama3:8b # 运行模型,会启动一个本地API服务(默认端口11434) - 然后在OpenClaw配置中指向它:
这种配置利用了Ollama提供的OpenAI API兼容接口,让OpenClaw以为自己在调用OpenAI,实际上请求发到了本地的Ollama。"llm": { "type": "openai", // 注意:很多框架兼容OpenAI API格式,所以type可能还是openai "apiKey": "ollama", // 本地Ollama不需要真key,但有些框架要求非空,可填任意值如`ollama` "model": "llama3:8b", // 你拉取的模型名称 "baseURL": "http://localhost:11434/v1" // 指向本地Ollama服务的API地址 }
5.3 处理“App Secret复制不上去”和“Invalid Redirect URI”问题
这两个是高频错误,根源在于细节。
“App Secret复制不上去”:这通常不是技术问题,而是飞书开放平台UI的缓存或显示问题。尝试以下步骤:
- 彻底刷新浏览器页面(Ctrl+F5)。
- 点击“重置App Secret”,生成一个新的,然后立即复制。
- 如果是在某些密码管理器中填写,尝试先复制到纯文本编辑器(如记事本),再从编辑器复制到配置文件中,避免隐藏字符。
“Invalid Redirect URI in H5 Case” / “请求不合法”:这个错误几乎100%出现在事件订阅URL配置环节。
- 确保是HTTPS:飞书要求回调地址必须是
https://开头。本地开发必须用ngrok等工具生成HTTPS地址。 - 确保路径完全匹配:检查飞书后台填写的URL和OpenClaw配置中的
eventEndpoint路径是否严格一致。包括开头有无斜杠/。 - 确保服务已启动且可达:在保存配置前,先用
npm start启动你的OpenClaw服务,并确保你的内网穿透工具(如ngrok)正在运行,且生成的公网地址是有效的。你可以直接在浏览器访问https://你的ngrok地址/feishu/event/callback,如果返回一些错误信息(比如缺少参数),至少证明网络是通的。如果连接超时,说明服务没起来或穿透失败。 - 检查端口和防火墙:确保OpenClaw服务的端口(如3000)没有被其他程序占用,并且防火墙允许该端口的入站连接。
- 确保是HTTPS:飞书要求回调地址必须是
6. 启动、测试与调试:验证你的AI助手
配置完成后,我们终于可以启动服务了。
启动OpenClaw服务:在项目根目录下,运行启动命令。通常定义在
package.json的scripts里,可能是:npm start # 或 node index.js # 或 npm run dev观察控制台输出,应该能看到服务成功监听在某个端口(如
3000),并且可能打印出“Feishu adapter initialized”之类的日志。启动内网穿透:打开另一个终端窗口,运行你的内网穿透工具。以ngrok为例(需要先注册并获取authtoken):
ngrok http 3000运行后,ngrok会生成一个
https://xxxx.ngrok.io的地址。复制这个地址。更新飞书事件订阅URL:回到飞书开放平台,将事件订阅的“请求地址”更新为
https://xxxx.ngrok.io/feishu/event/callback(记得加上你的特定路径)。点击保存。如果配置正确,飞书通常会显示“验证成功”或类似提示。添加机器人为好友:在飞书开放平台应用详情的“权限管理”或“版本发布”区域,将应用添加给测试企业或自己。然后在飞书客户端,搜索你的应用名称,将其添加为好友或拉入群聊。
发送测试消息:在飞书里,给你的机器人发送一条消息,比如“你好”。观察OpenClaw服务的控制台日志。你应该能看到类似这样的日志流:
[INFO] Received Feishu event: im.message.receive_v1 [INFO] Processing message from user: xxxxx [DEBUG] Calling LLM with prompt: ... [INFO] Sending reply to Feishu...如果一切顺利,几秒后你就能在飞书里收到机器人的回复了!
常见启动问题排查:
- 端口占用:如果启动失败提示端口被占用,可以修改
config.json里的port为其他值(如3001),同时记得更新内网穿透命令和飞书回调URL。 - 依赖缺失:如果启动时报错找不到模块,可能是
npm install不完整。尝试删除node_modules和package-lock.json,重新npm install。 - 配置错误:仔细检查
config.json的格式(特别是JSON的逗号、引号),确保没有拼写错误。飞书的App ID和App Secret是否填对。 - Ollama连接失败:如果使用Ollama,确保
ollama run命令在运行,并且baseURL中的端口(默认11434)正确。可以在浏览器访问http://localhost:11434/api/tags测试Ollama API是否正常。
- 端口占用:如果启动失败提示端口被占用,可以修改
7. 进阶玩法:为你的AI助手添加“工具”能力
一个只会聊天的AI助手还不够强大。OpenClaw最精彩的部分在于“工具调用”(Tool Calling),这让AI可以真正操作外部系统。比如,你可以让它“查一下今天北京的天气”,或者“从数据库里找出上个月销售额最高的产品”。
7.1 理解工具(Tools)的工作原理
工具本质上是一个JavaScript/TypeScript函数,附带一段给AI看的“描述”。当AI模型认为用户的问题需要调用某个工具时,它会输出一个结构化的请求,OpenClaw收到后执行对应的函数,并将执行结果返回给AI,AI再结合结果生成最终回复给用户。
例如,一个“获取天气”的工具描述可能是:“这是一个获取指定城市当前天气的工具。输入参数:city(字符串,城市名)”。AI在理解用户问“北京天气怎么样?”之后,就会请求调用这个工具,并传入city: “北京”。
7.2 创建你的第一个工具:获取当前时间
我们在OpenClaw项目里创建一个简单的工具。通常工具文件放在src/tools/或tools/目录下。创建一个新文件currentTime.js:
// tools/currentTime.js export const currentTimeTool = { // 给AI看的描述 definition: { name: "get_current_time", description: "获取当前的日期和时间。", parameters: { type: "object", properties: { // 这个工具不需要输入参数 }, required: [] } }, // 实际执行的函数 execute: async (args) => { const now = new Date(); // 返回一个格式化的时间字符串给AI return { success: true, output: `当前时间是:${now.toLocaleString('zh-CN', { timeZone: 'Asia/Shanghai' })}` }; } };7.3 注册工具并测试
接下来,我们需要在OpenClaw的配置或主程序里注册这个工具,这样服务启动时才能加载它。具体注册方式取决于OpenClaw项目的架构,通常是在主入口文件(如index.js或app.js)中,或者在一个专门的工具注册文件里。
假设项目支持动态加载,你可能需要修改配置:
// config.json { ... // 其他配置 "tools": ["./tools/currentTime.js"] // 告诉框架去哪里加载工具 }或者,在代码中显式注册:
// 在主服务启动文件中 import { currentTimeTool } from './tools/currentTime.js'; // ... 获取OpenClaw框架实例 ... claw.registerTool(currentTimeTool);重启OpenClaw服务。现在,你可以在飞书里问你的机器人:“现在几点了?”。AI模型会分析你的问题,识别出需要调用get_current_time工具,然后工具函数被执行,返回当前时间,AI再组织语言回复你:“当前时间是:2024年5月15日 下午3:30:45”。
7.4 开发更实用的工具:连接外部API
掌握了基础,我们就可以开发更强大的工具。比如,连接一个天气API。这里以和风天气为例(需要注册获取API Key):
// tools/weather.js import axios from 'axios'; // 需要先安装axios: npm install axios const HE_FENG_API_KEY = '你的和风天气API Key'; const HE_FENG_API_URL = 'https://devapi.qweather.com/v7/weather/now'; export const weatherTool = { definition: { name: "get_weather", description: "获取指定城市的实时天气情况。", parameters: { type: "object", properties: { city: { type: "string", description: "城市名称,例如:北京、上海" } }, required: ["city"] } }, execute: async ({ city }) => { try { // 这里需要先将城市名转换为位置ID,简化起见,假设我们直接使用城市名查询 // 实际应调用和风天气的城市搜索API获取locationId const response = await axios.get(HE_FENG_API_URL, { params: { location: city, key: HE_FENG_API_KEY } }); const data = response.data; if (data.code === '200') { const now = data.now; return { success: true, output: `${city}的当前天气:${now.text},温度${now.temp}摄氏度,湿度${now.humidity}%,风向${now.windDir},风力${now.windScale}级。` }; } else { return { success: false, output: `获取天气失败:${data.message || '未知错误'}` }; } } catch (error) { console.error('Weather API error:', error); return { success: false, output: `调用天气服务时发生错误:${error.message}` }; } } };将这个工具也注册到系统中。现在,你的AI助手就能回答“上海天气怎么样?”这样的问题了。通过这种方式,你可以无限扩展助手的能力:查股票、订日历、发邮件、操作数据库等等。
8. 生产环境部署:从本地调试到稳定服务
本地调试成功,意味着核心流程已经跑通。但如果想让机器人7x24小时稳定服务,你需要将其部署到服务器上。这里介绍两种主流且相对简单的方式:PM2进程管理和Docker容器化。
8.1 使用PM2进行进程管理(推荐用于VPS)
如果你有一台云服务器(如Ubuntu),PM2是一个非常好的Node.js应用进程管理工具,能保证应用崩溃后自动重启,并方便地查看日志。
在服务器上安装Node.js、Git和PM2:
# Ubuntu/Debian 示例 sudo apt update sudo apt install -y nodejs npm git sudo npm install -g pm2克隆项目并安装依赖:
git clone https://github.com/openclaw-ai/openclaw.git cd openclaw npm install --production # 只安装生产依赖配置生产环境变量:不要在代码中硬敏感信息。创建
.env文件或在服务器环境变量中设置APP_ID、APP_SECRET、OPENAI_API_KEY等。使用PM2启动应用:
pm2 start npm --name "openclaw-bot" -- start # 或者如果入口文件是 index.js # pm2 start index.js --name "openclaw-bot"设置开机自启:
pm2 startup # 执行上面命令后,会输出一条类似 `sudo env PATH=...` 的命令,复制并执行它 pm2 save配置Nginx反向代理与HTTPS:为了让服务通过域名和HTTPS访问(飞书事件回调必须HTTPS),你需要配置Nginx。
- 安装Nginx并配置一个server块,将
your-domain.com的请求代理到本地的http://localhost:3000。 - 使用Certbot申请免费的Let‘s Encrypt SSL证书。
- 将飞书后台的事件订阅URL更新为
https://your-domain.com/feishu/event/callback。
- 安装Nginx并配置一个server块,将
8.2 使用Docker容器化部署
Docker能提供一致的环境,更方便迁移和扩展。你需要编写一个Dockerfile和一个docker-compose.yml文件。
Dockerfile:
FROM node:20-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --only=production COPY . . EXPOSE 3000 USER node CMD ["node", "index.js"]docker-compose.yml:
version: '3.8' services: openclaw: build: . container_name: openclaw-bot restart: unless-stopped ports: - "3000:3000" environment: - NODE_ENV=production - APP_ID=${APP_ID} - APP_SECRET=${APP_SECRET} - OPENAI_API_KEY=${OPENAI_API_KEY} # 其他环境变量... volumes: - ./logs:/app/logs # 可选,挂载日志目录然后在服务器上,安装Docker和Docker Compose,将项目文件上传,在同目录下创建.env文件填写敏感信息,最后运行docker-compose up -d即可。
8.3 监控与日志
无论用哪种方式,监控都必不可少。
- PM2:
pm2 logs openclaw-bot查看实时日志,pm2 monit查看资源占用。 - Docker:
docker logs -f openclaw-bot查看容器日志。 - 应用内日志:确保OpenClaw配置了合理的
logLevel(如info),并定期检查日志文件,以便及时发现和排查错误,例如飞书Token刷新失败、模型调用超时等。
部署上线后,你的飞书AI助手就正式成为一个随时待命的生产力工具了。你可以根据团队的需要,不断为它添加新的工具,让它成为处理日常琐事、快速查询信息、甚至触发自动化流程的智能中枢。这个从零搭建的过程虽然有些繁琐,但一旦跑通,你会发现它为工作和协作带来的效率提升是实实在在的。