前言¶
在 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。因此插件只做三件能长期维护的事:
- 官方开放平台通道(淘宝 TOP / 京东 JOS):真发真收,需自行开通接口权限。
- 本地桥接(Local Bridge):自建采集端把消息推进来,插件负责决策与回复队列。
- 人工一键采纳:接口未配齐时,草稿进待处理队列。
四道闸门:避免瞎答¶
任何一道不过就不自动发(README 列举的要点):
- 检索:中文二元组分词(过滤常见问句词)+ 字段权重 + IDF,返回命中字段与 0–1 匹配度。
- 字段完备:问发货需有
shipping,问尺码需有规格表;缺证据则转人工(no_evidence);一句话问两件事时,有一件没依据则整体转人工。 - 模型输出复检:回复中每个 ≥2 位数字都必须在证据里出现;命中商家敏感词或平台红线则丢弃并回退模板。
- 模型表示不确定:输出「需要确认一下」类话术时不当作最终回复,连同内容转人工。
- 去重与转人工规则:同一句不对同一买家重复发;发图、改地址、订单备注、触发词、非接待时段、匹配度不足等进待处理队列。
知识库为本地 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。