dsh-plugin-kefu:有商品依据的电商客服台 DSH 插件

前言

在 DeepSeek Harness(DSH)里做电商相关智能体时,常见做法是接一个大模型,让它「像客服一样」回买家。问题在于:模型会补全它不知道的价格、库存和售后承诺,说错一句的代价往往比少回一句更高。社区插件 dsh-plugin-kefu(维护者 Tulipe1735,GitHub Tulipe1735/dsh-plugin-kefu)把定位写得很直白:先把店里的商品学一遍,再按商品资料回答;答不准就交给人,不编造。下面介绍它是什么、怎么装、典型怎么用,以及和千牛/京麦官方能力边界的关系。

这是什么

dsh-plugin-kefu 是开源的电商客服台 DSH 插件(MIT,当前 package 版本 0.2.0,要求 DSH >=0.2.0)。它在 SkillHub 社区目录中归类为工作流(目录页:skillhub.cn/plugins/Tulipe1735/dsh-plugin-kefu)。

核心分工可以概括成两句话:

  • AI 只负责措辞,事实来自你的商品资料;回复由 DSH 的模型生成时,模型只能复述插件给出的证据;证据里没有的数字、或碰到平台红线,整条回复丢弃并回退模板。
  • 官方开放平台 + 本地桥接 + 人工一键采纳:不依赖接管千牛/京麦桌面客户端,也不包含 DLL 注入、模拟点击等不可公开分发的实现。

消息怎么走

买家消息进入插件后,大致流程如下(与 README 一致):

买家消息 ──▶ 检索商品(有依据吗?)──▶ 够:交给 DSH 模型写 ──▶ 敏感词/红线/数字校验 ──▶ 发出
                    │
                    └── 不够 / 命中转人工规则 ──▶ 待处理队列(附证据,人工一键采纳)

官方通道没配齐时,插件不假装发送,把草稿交给客服在客户端里发。

为什么不做「接管客户端」

README 用表格说明了千牛/淘宝、京麦/京东的开放平台事实:例如旺旺聊天消息服务为邀约制、人工消息内容脱敏;京麦 JSSDK 主要是唤起能力;千牛应用审核规范不允许非官方 API。因此插件只做三件能长期维护的事:

  1. 官方开放平台通道(淘宝 TOP / 京东 JOS):真发真收,需自行开通接口权限。
  2. 本地桥接(Local Bridge):自建采集端把消息推进来,插件负责决策与回复队列。
  3. 人工一键采纳:接口未配齐时,草稿进待处理队列。

四道闸门:避免瞎答

任何一道不过就不自动发(README 列举的要点):

  1. 检索:中文二元组分词(过滤常见问句词)+ 字段权重 + IDF,返回命中字段与 0–1 匹配度。
  2. 字段完备:问发货需有 shipping,问尺码需有规格表;缺证据则转人工(no_evidence);一句话问两件事时,有一件没依据则整体转人工。
  3. 模型输出复检:回复中每个 ≥2 位数字都必须在证据里出现;命中商家敏感词或平台红线则丢弃并回退模板。
  4. 模型表示不确定:输出「需要确认一下」类话术时不当作最终回复,连同内容转人工。
  5. 去重与转人工规则:同一句不对同一买家重复发;发图、改地址、订单备注、触发词、非接待时段、匹配度不足等进待处理队列。

知识库为本地 JSON,无向量检索;商品量级在几千条以内体验最好(README 已知限制)。

四个通道

通道 类型 说明
qianniu 官方 淘宝开放平台网关。推送 /plugins/dsh-plugin-kefu/channels/qianniu/push,回复走你开通的 sendMethod
jingmai 官方 京东 JOS。推送 .../channels/jingmai/push,回复走 sendMethod
bridge 桥接 POST .../channels/bridge/push 推入,GET .../channels/bridge/pull?after=<cursor> 拉回复,POST .../channels/bridge/ack 确认
webhook 通用 外部推入;回复 POST 到 outboundUrl(x-kefu-signature HMAC-SHA256)

所有推送需 x-kefu-token(或 ?token=);官方通道额外支持 sign 验签。

Local Bridge 最小示例(默认端口以本机 DSH 为准,README 示例为 127.0.0.1:54205):

await fetch('http://127.0.0.1:54205/plugins/dsh-plugin-kefu/channels/bridge/push', {
  method: 'POST',
  headers: { 'content-type': 'application/json', 'x-kefu-token': TOKEN },
  body: JSON.stringify({ buyerId: 'u123', buyerName: '小王', text: '这个多少钱', images: [] }),
})

对话工具与侧边栏

装好后侧边栏出现 客服 面板,对话里增加 5 个工具:

工具 作用
kefu_import_products 从 CSV / TSV / JSON / Markdown 表格导入商品;重复导入按商品更新
kefu_search_products 检索商品,返回命中字段、证据、匹配度
kefu_draft_reply 跑决策但不发:action / 转人工原因 / 依据 / 草稿
kefu_send_reply 发送(敏感词与红线;官方通道未配齐则待采纳)
kefu_queue 查看待处理队列

典型对话示例(README):

把 products.csv 导进客服知识库,然后看看「纯棉短袖还有 M 码吗」会怎么回。

商品表格式

支持 .csv / .tsv / .json / Markdown 表格,表头中英文均可:

标题,价格,规格,参数,发货,售后,关键词
重磅纯棉短袖 T 恤,¥129,S/129/12;M/129/8,材质:100% 纯棉;克重:230g,48 小时内发出,7 天无理由退换,夏季
  • 规格:多规格用 ; 分隔,每项 名称/价格/库存 用 / 分隔。
  • 参数:用 : 或 =,多组用 ; 分隔。
  • 无 id 时按标题生成;重复导入即更新。

用 DSH 模型写回复

在设置中开启 用 DSH 的模型写回复 后,调用 ctx.llm(prepareCall + 文本流);provider/model 选「自动」时使用当前 profile 第一个可用路由。

  • 模型仅能看到证据;系统提示禁止补充证据外的承诺与数字。
  • 无 LLM 服务(headless profile)或模型报错时仍可用,只走模板。
  • 每条需模型回复的消息约多一次 ~400 token 调用;模型超时默认 20s,可在设置中修改。

7×24 守护进程(bot 模式)

daemon/ 提供不依赖 DSH 面板的常驻 HTTP 服务,直连 DeepSeek API,复用同一套检索/决策/复检逻辑:

$env:KEFU_TOKEN = "随机串"; $env:DEEPSEEK_API_KEY = "sk-..."; $env:KEFU_MODE = "auto"
node daemon/server.js

采集端只需实现 /push、/pull、/ack。注意:同一份数据目录不要让面板与守护进程同时写(JSON 整份落盘会互相覆盖);常驻时以守护进程为准。

安装与启用

在 DSH 中任选 README 写明的一种方式:

# 插件市场(发布后)
插件市场 → 搜索 dsh-plugin-kefu → 安装

# 本地开发(link 方式,改代码即时生效)
插件管理 → 安装 → link:C:\path\to\dsh-plugin-kefu

社区插件市场(dshmarket)不抓 npm;出现在精选列表需向 awesome-dsh-plugin 数据源仓库提 PR(README 发布说明)。DSH 生态是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

数据与备份

数据目录:~/.dsh/kefu/(存在 DSH_HOME 时用其下的 kefu/),含 config.json(0600)、kb/products.json、conversations.json、outbox.json。备份即复制该目录。

设置页 数据 卡片可清空会话队列或含商品的全部数据;也可 POST /plugins/dsh-plugin-kefu/api/reset,body {"catalog": true} 才会连商品一起清。

适用场景与注意

适合:已有结构化商品资料、希望在 DSH 里做「有依据自动回 + 不确定转人工」的电商客服工作流;能开通 TOP/JOS 或愿意自建桥接采集端的团队。

务必注意:

  • 插件在当前 DSH 进程权限下运行,安装前应阅读源码与 MIT 许可证,自行评估平台条款;用第三方 UI 自动化采集时须自行评估许可(如 AGPL)与平台规则。
  • 千牛:普通商家往往拿不到对话原文;千牛通道面向已获批消息服务与自建推送。
  • 京麦:商家侧通常无公开咚咚会话消息 API,多配合人工采纳或桥接。
  • README 说明与「闪回 / shanhui.org」无关联,未使用其代码或素材。

维护者本地测试:node --test tests/*.test.mjs(README 称 55 个测试覆盖检索、决策、导入、模型复检、网关签名、HTTP 桥等)。

结尾

dsh-plugin-kefu 把电商客服的重点从「会不会说话」拉到「能不能用店里的资料负责地说话」:证据链、复检、转人工队列和官方/桥接通道一起构成可维护的形态。进一步了解可看社区目录页 Tulipe1735/dsh-plugin-kefu 与仓库 github.com/Tulipe1735/dsh-plugin-kefu。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜