OpenClaw连接飞书机器人:Phi-3-mini-128k-instruct实现智能问答
OpenClaw连接飞书机器人Phi-3-mini-128k-instruct实现智能问答1. 为什么选择OpenClaw飞书Phi-3的组合去年我接手了一个技术文档整理项目每天需要从飞书群聊中提取关键讨论点并生成会议纪要。手动操作不仅耗时还经常遗漏重要信息。直到发现OpenClaw这个开源自动化框架配合飞书机器人和轻量级Phi-3模型终于构建出符合个人工作流的智能助手。这套组合的独特价值在于隐私性所有操作都在本地或私有服务器完成敏感讨论内容不会外流即时响应飞书群内触发5秒内返回结构化摘要低成本Phi-3-mini-128k-instruct在消费级显卡上即可流畅运行可扩展通过OpenClaw的Skill机制可以随时添加新能力实际使用三个月后我的会议纪要整理时间从日均1.5小时缩短到20分钟准确率反而提升了30%。下面分享具体实现过程。2. 环境准备与基础配置2.1 飞书侧准备工作首先需要在飞书开放平台创建自建应用。这里有个坑不要选择机器人应用类型而要选择企业自建应用。因为OpenClaw需要通过WebSocket协议建立长连接只有后者支持。具体步骤登录飞书开发者后台进入应用发布-创建企业自建应用记录下App ID和App Secret后续配置要用在权限管理中添加以下权限im:messageim:message.group_at_msgim:message.group_at_msg:readonly在事件订阅中启用接收群消息事件特别注意如果遇到权限申请失败可能是企业管理员限制了自建应用权限。作为临时解决方案可以先用测试环境App有效期仅2小时验证流程。2.2 OpenClaw飞书插件安装在终端执行以下命令安装飞书插件openclaw plugins install m1heng-clawd/feishu openclaw plugins list | grep feishu # 验证安装安装完成后需要修改配置文件~/.openclaw/openclaw.json。建议先备份原文件cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak然后添加飞书通道配置注意缩进格式{ channels: { feishu: { enabled: true, appId: 你的App ID, appSecret: 你的App Secret, connectionMode: websocket } } }保存后重启网关服务openclaw gateway restart3. Phi-3模型接入实战3.1 模型部署方案选择Phi-3-mini-128k-instruct有几种部署方式本地部署适合有NVIDIA显卡的开发机云主机部署推荐使用CSDN星图平台的预置镜像API调用如果已有现成服务端点我选择了本地部署方案使用vLLM推理引擎# 使用conda创建环境 conda create -n phi3 python3.10 -y conda activate phi3 # 安装vLLM pip install vllm0.3.3 # 启动推理服务 python -m vllm.entrypoints.api_server \ --model microsoft/Phi-3-mini-128k-instruct \ --trust-remote-code \ --port 80003.2 OpenClaw对接模型服务在~/.openclaw/openclaw.json的models部分新增配置{ models: { providers: { local-phi3: { baseUrl: http://localhost:8000/v1, api: openai-completions, models: [ { id: phi-3-mini, name: Local Phi-3 Mini, contextWindow: 128000 } ] } } } }验证模型是否可用openclaw models list应该能看到新添加的Local Phi-3 Mini模型。4. 智能问答场景实现4.1 基础问答测试我们先创建一个简单的问答技能。在OpenClaw工作目录下新建skills/qa_skill/action.pyfrom openclaw.skill import Skill class QASkill(Skill): def handle(self, task): query task.input_text response self.model.generate( f你是一个技术助手请用中文回答以下问题\n{query} ) return { response: response, sources: [] }注册技能到skills/qa_skill/skill.json{ name: qa-skill, description: 基础问答技能, actions: { answer: { description: 回答技术问题, handler: action.QASkill } } }4.2 飞书消息处理逻辑关键是要处理飞书的消息。修改之前的action.pyimport re from openclaw.skill import Skill class FeishuQASkill(Skill): def extract_question(self, text): # 移除机器人的标记 return re.sub(rat.*?, , text).strip() def handle(self, task): if task.channel ! feishu: return {error: 仅支持飞书渠道} question self.extract_question(task.input_text) if not question: return {error: 问题不能为空} prompt f你是一个技术文档助手请根据以下要求处理问题 1. 如果是概念性问题给出简明定义和示例 2. 如果是操作性问题分步骤说明 3. 如果是讨论性内容提取3-5个关键点 问题{question} response self.model.generate(prompt) return { response: response, format: markdown }4.3 飞书消息卡片优化为了让回复更美观可以添加飞书卡片支持。创建templates/feishu_card.json{ msg_type: interactive, card: { elements: [{ tag: markdown, content: {{response}} }], header: { title: { content: 知识助手回复, tag: plain_text } } } }然后在skill中引用def handle(self, task): # ...原有逻辑... return { template: feishu_card.json, data: { response: f**问题**{question}\n\n**回答**\n{response} } }5. 实际应用效果与调优5.1 典型使用场景在飞书群聊中机器人并提问技术助手 请总结OpenClaw的优缺点用表格形式展示约3秒后收到回复 知识助手回复优点缺点本地化与安全Token消耗大24/7工作安全风险高极致个性化执行依赖模型能力成本可控调试门槛高5.2 性能优化技巧通过实践发现几个关键优化点上下文窗口控制虽然Phi-3支持128k上下文但实际超过32k后响应速度明显下降。建议在prompt中明确限制response self.model.generate( prompt, max_tokens512, stop_sequences[\n\n] )消息缓存飞书群聊消息可以缓存到本地SQLite减少重复处理import sqlite3 conn sqlite3.connect(messages.db) conn.execute(CREATE TABLE IF NOT EXISTS messages (msg_id TEXT PRIMARY KEY, processed BOOLEAN))异步处理对于长文本摘要等耗时操作可以先返回接收确认后台处理完成后通过飞书消息API推送结果。6. 踩坑记录与解决方案问题1飞书WebSocket频繁断开现象连接几分钟后自动断开需要手动重启解决在配置中添加心跳参数feishu: { heartbeatInterval: 30 }问题2中文回答质量不稳定现象有时回答突然变成英文解决在prompt中明确语言要求并添加system messageprompt |system| 你是一个专业的中文技术助手必须用中文回答 |user| {question}问题3群聊不触发现象普通消息能收到消息无反应解决检查飞书应用权限确保勾选了接收消息权限并重新发布应用。这套系统运行半年后不仅用于会议纪要还扩展到了技术文档检索、错误日志分析等场景。最大的惊喜是Phi-3-mini在长文本处理上的表现——虽然模型体积小但对技术文档的理解和摘要能力完全不输大模型。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。