OpenClaw飞书机器人实战:千问3.5-9B自动回复消息配置

张开发
2026/4/6 4:03:18 15 分钟阅读

分享文章

OpenClaw飞书机器人实战:千问3.5-9B自动回复消息配置
OpenClaw飞书机器人实战千问3.5-9B自动回复消息配置1. 为什么选择OpenClaw飞书千问3.5-9B组合去年底我们团队开始尝试用AI助手处理日常沟通试过直接调用大模型API但发现三个痛点一是对话历史难以持久化二是无法与企业IM深度集成三是敏感信息外传有风险。直到发现OpenClaw这个开源框架配合飞书机器人和本地部署的千问3.5-9B模型才算找到完美解决方案。这套组合的独特价值在于数据闭环所有对话数据都在企业飞书环境内流转OpenClaw只作为执行中介成本可控千问3.5-9B在消费级显卡上即可运行无需支付高昂API费用场景灵活既能自动回复消息也能通过自然语言触发自动化任务2. 环境准备与核心组件部署2.1 基础环境搭建我的测试环境是MacBook Pro M116GB内存系统版本macOS Ventura 13.5。先通过Homebrew安装Node.js环境brew install node20 npm install -g openclawlatest验证安装时遇到个小坑新版本要求Node.js 18但brew默认安装的是16.x版。解决方法是指定版本brew unlink node brew install node20 brew link --overwrite node202.2 千问3.5-9B模型部署在星图平台找到千问3.5-9B镜像选择带API服务的部署模式。关键配置参数容器规格8核CPU/16GB内存最低要求端口映射将容器内5000端口映射到宿主机5001端口启动命令python app.py --port 5000 --model qwen-9b部署完成后用curl测试接口curl -X POST http://localhost:5001/v1/completions \ -H Content-Type: application/json \ -d {prompt:你好,max_tokens:50}3. 飞书机器人配置全流程3.1 创建企业自建应用在飞书开放平台https://open.feishu.cn/操作时这几个配置项最容易出错应用图标必须上传512x512像素PNG否则无法保存权限配置至少需要获取用户发给机器人的单聊消息和以应用身份发消息权限IP白名单需要添加运行OpenClaw的服务器的公网IP通过curl ifconfig.me获取3.2 OpenClaw飞书插件安装官方插件库有两个相关插件m1heng-clawd/feishu基础通信m1heng-clawd/feishu-advanced支持卡片消息建议先安装基础版openclaw plugins install m1heng-clawd/feishu安装后需要修改配置文件~/.openclaw/openclaw.json增加飞书凭证{ channels: { feishu: { enabled: true, appId: cli_xxxxxx, appSecret: xxxxxx, verificationToken: xxxxxx, encryptKey: xxxxxx, connectionMode: websocket } } }这里有个关键细节connectionMode必须设为websocket才能实现实时消息推送用HTTP模式会有3秒延迟。4. 模型接入与消息处理逻辑4.1 对接千问3.5-9B模型在OpenClaw配置文件中添加模型提供商{ models: { providers: { qwen-local: { baseUrl: http://localhost:5001/v1, api: openai-completions, models: [ { id: qwen-9b, name: 千问3.5-9B本地版, contextWindow: 8192 } ] } } } }重启网关服务使配置生效openclaw gateway restart4.2 自定义回复规则在~/.openclaw/skills/feishu_reply.js中编写处理逻辑module.exports { match: /^(帮助|help)$/i, execute: async (ctx) { const { message } ctx; const reply await ctx.models.complete({ model: qwen-9b, prompt: 用户问${message}\n请用专业但友好的语气回答, max_tokens: 200 }); return { type: text, content: reply.choices[0].text }; } }这个简单规则实现了当用户发送帮助或help时触发将用户问题作为prompt传给千问3.5-9B返回模型生成的自然语言回复5. 实战效果与优化技巧5.1 基础问答测试在飞书群里机器人提问时发现两个典型问题长回复截断默认max_tokens设的200不够用解决方法在模型配置中增加maxTokens: 512多轮对话丢失上下文解决方法在skill代码中维护对话历史数组优化后的处理逻辑const dialogHistory new Map(); module.exports { match: /.*/, execute: async (ctx) { const { sender, message } ctx; if (!dialogHistory.has(sender)) { dialogHistory.set(sender, []); } const history dialogHistory.get(sender); history.push({ role: user, content: message }); const prompt history.map(item ${item.role}: ${item.content} ).join(\n); const reply await ctx.models.complete({ model: qwen-9b, prompt: 对话历史\n${prompt}\nAI助手, max_tokens: 512 }); history.push({ role: assistant, content: reply }); return { type: text, content: reply }; } }5.2 任务触发扩展除了问答我们还实现了通过自然语言触发自动化任务。例如当有人说整理昨天的会议纪要时通过飞书API获取指定群的聊天记录用千问3.5-9B提取关键决策和待办项自动生成Markdown格式纪要并上传飞书文档关键代码片段match: /整理(.*?)会议纪要/i, execute: async (ctx) { const logs await feishu.getGroupMessages(ctx.groupId); const summary await ctx.models.complete({ model: qwen-9b, prompt: 从以下聊天记录提取会议纪要\n${logs}\n输出格式## 关键决策\n1. xxx\n## 待办事项\n1. xxx }); const doc await feishu.createDoc(会议纪要-${new Date().toLocaleString()}, summary); return { type: text, content: 纪要已生成${doc.url} }; }6. 踩坑记录与解决方案问题1WebSocket连接频繁断开现象每10分钟左右需要重新登录原因飞书WebSocket有心跳检测机制解决在插件配置中增加heartbeatInterval: 30000问题2中文回复出现乱码现象部分中文回复变成问号原因未设置Content-Type字符集解决在网关配置中增加{ gateway: { headers: { Content-Type: application/json; charsetutf-8 } } }问题3长消息发送失败现象超过500字符的消息无法发送原因飞书单条消息长度限制解决实现自动分片发送function splitMessage(text, maxLen 500) { const chunks []; while (text.length) { chunks.push(text.slice(0, maxLen)); text text.slice(maxLen); } return chunks; }这套系统已经在我们15人的产品团队运行了3个月平均每天处理200条消息请求。最大的感受是——好的技术组合应该像空气一样存在但不突兀。OpenClaw飞书千问3.5-9B正好达到了这种平衡既保持了企业IM的原有使用习惯又悄悄注入了AI能力。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章