钉钉集成方案:OpenClaw+千问3.5-9B打造部门小助手

1. 为什么选择OpenClaw+千问3.5-9B组合

去年我们小组遇到一个典型问题:每天要处理大量重复的钉钉消息——审批提醒需要手动转发、新人总在问相同问题、数据查询需要反复登录系统截图。作为技术负责人,我尝试过用传统RPA工具,但遇到三个致命问题:

  1. 流程变更时需要重新录制脚本
  2. 无法处理非结构化问题(如"上周客户投诉数据怎么样")
  3. 审批逻辑调整时整套规则需要重写

直到发现OpenClaw这个开源框架,配合千问3.5-9B模型的语义理解能力,才真正实现了"能对话、会思考"的自动化助手。这套方案最吸引我的特点是:

  • 本地化部署:所有数据都在内网流转,敏感审批信息不会外泄
  • 自然语言交互:组员用说话的方式就能获得服务,不需要记忆复杂指令
  • 动态适应能力:当审批流程变更时,只需用自然语言描述新规则即可

2. 环境准备与基础配置

2.1 硬件资源规划

我们用的是淘汰的测试服务器(16核/32GB内存),实际运行中发现千问3.5-9B模型在以下配置下表现稳定:

# 监控显示的典型资源占用
CPU: 4核心常驻(峰值8核)
内存: 18-22GB(含OpenClaw进程)
磁盘: 50GB SSD(主要存放日志和临时文件)

特别提醒:如果使用云主机,建议选择计算优化型实例。我们曾尝试用通用型实例,在并发处理多个请求时出现明显延迟。

2.2 钉钉应用创建

在钉钉开放平台创建应用时,这几个配置项最容易出错:

  1. IP白名单:先通过curl ifconfig.me获取服务器公网IP
  2. 权限范围:务必勾选"消息通知"和"审批流程"相关权限
  3. 回调域名:填写OpenClaw网关所在地址(如https://your-server:18789)

配置完成后,建议先用钉钉官方测试工具验证基础连通性:

# 测试命令示例
curl -X POST "https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"msgtype": "text","text": {"content": "测试消息"}}'

3. OpenClaw与钉钉的深度集成

3.1 消息通道配置

关键配置文件~/.openclaw/openclaw.json的钉钉部分需要特别注意这些参数:

{
  "channels": {
    "dingtalk": {
      "enabled": true,
      "appKey": "dingxxxxxx",
      "appSecret": "xxxxxxxx",
      "encryptKey": "xxxxxxxx",
      "token": "xxxxxxxx",
      "callbackUrl": "https://your-server:18789/dingtalk",
      "permissions": {
        "approval": true,
        "message": true,
        "contact": false 
      }
    }
  }
}

踩坑记录:最初我们漏配了encryptKey,导致所有回调请求都被钉钉服务器拒绝。建议配置完成后立即运行:

openclaw gateway restart
tail -f /var/log/openclaw/dingtalk.log  # 实时查看连接日志

3.2 审批流自动提醒实现

我们销售部门的请假审批场景最典型,原先需要人工:

  1. 查看审批详情
  2. 记录到Excel
  3. 群内@相关人员

现在通过OpenClaw的dingtalk-approval技能实现全自动化。安装方法:

clawhub install dingtalk-approval

然后在工作区创建approval_rules.json定义规则:

{
  "leave": {
    "approvers": ["张三","李四"],
    "notify": {
      "on_create": "【请假申请】${staffName}提交了${leaveType}申请",
      "on_approve": "【审批通过】${approverName}已批准${staffName}的申请"
    },
    "post_action": {
      "type": "excel",
      "path": "/data/leave_records.xlsx"
    }
  }
}

实际运行中发现个有趣现象:当审批人为多人时,千问3.5-9B能自动识别"最相关审批人"。比如标注"财务相关找李四"后,涉及报销的审批会自动路由。

4. 智能问答功能开发

4.1 知识库构建

我们把常见问题整理成Markdown文件存放在/data/faqs目录,结构如下:

- 考勤.md
- 报销.md
- 系统权限.md

然后创建qa_skill的配置文件:

{
  "search_depth": 3,
  "response_template": "根据《${source}》第${section}条:\n\n${answer}\n\n需要更详细解答可以@人事专员",
  "fallback_response": "这个问题我会记下来,稍后由专人回复您"
}

实际测试时,千问3.5-9B展现了出色的语义理解能力。例如当员工问"病假怎么请",即使知识库里只有"请假流程"文档,也能准确关联相关内容。

4.2 数据查询接口

对于需要实时数据的查询(如"本月销售达标率"),我们开发了简单的HTTP适配器:

# /opt/openclaw/adapters/sales.py
async def query_sales_data(params):
    date_range = parse_natural_time(params['time'])  # 调用千问的时序解析能力
    db_query = build_query(date_range)
    result = await database.query(db_query)
    return format_for_dingtalk(result)

在OpenClaw中注册为技能:

clawhub register-adapter --name sales-query --path /opt/openclaw/adapters/sales.py

现在组员只需要在钉钉输入"帮我查下上周北方区销售额",就能自动获得格式化表格回复。

5. 实际运行效果与调优

上线三个月后,这套系统每天处理约50条消息,最显著的变化是:

  • 审批提醒响应时间从平均15分钟缩短到即时推送
  • 常见问题回复准确率达到92%(抽样检查100条记录)
  • 数据查询类需求完全实现自助服务

遇到的主要挑战是长尾问题处理。我们的解决方案是:

  1. 设置/learn指令,允许用户补充正确答案
  2. 每周导出未解决问题人工处理
  3. 对千问3.5-9B进行LoRA微调(使用积累的QA对)

性能方面,在10人小组场景下,平均响应时间保持在1.8秒以内。唯一需要人工干预的情况是遇到模糊查询时,系统会智能回复:"您是想问A还是B?"


获取更多AI镜像

想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐