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。

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

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

小夜