cqai-dsh-plugin-xiaobao
Verifiedcqai-dsh-plugin-xiaobao · v0.1.1 · MIT · Web UI
e销宝:面向小团队、服务 C 端客户的实时销售话术 Copilot。
Install
dsh plugin add cqai-dsh-plugin-xiaobao Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
e销宝
面向小团队、服务 C 端客户的实时销售话术 Copilot,作为独立插件安装在「易宝工坊」(DeepSeek Harness)上。
销售人员在通话中打开右侧边栏的「e销宝」面板:客户说完一句,面板给出一条主建议、一条备用说法、一个建议追问、风险提示和来源。销售保留最终判断和表达控制权——e销宝不替销售发言。
客户语音(约 4 秒分段)
→ 平台内置本地 SenseVoice 识别
→ 代码:意图打分 + 混合检索(只读已审核且在生效期内的内容)
→ 代码:转人工规则 + 重复建议抑制
→ DeepSeek:在已检索证据范围内组织结构化建议
→ 代码:结构校验 + 来源白名单 + 禁止承诺拦截
→ 面板展示给销售
→ 销售采纳 / 修改 / 跳过 → 反馈进入复盘
它是什么,不是什么
是:给真人销售用的实时辅助工具。文字输入和语音两条路径都能产生建议;知识库有审核、版本、生效期与回滚;全链路可审计。
不是:不自动替销售与客户通话;不发送短信、邮件、微信或私信;不自动外呼;不自动改价、打折、退款或改合同;不把模型推断写成客户事实。插件没有注册任何发送、外呼、改价或退款类工具,这是代码层的边界,不是提示词里的约定。
核心设计:哪些交给代码,哪些交给模型
这个划分是整个插件的地基:
| 由代码确定性地做 | 由模型做 |
|---|---|
| 检索哪些话术卡(关键词 + 字符 n-gram + 元数据,RRF 融合) | 把已检索到的证据组织成一句销售能直接说出口的话 |
内容门禁(只有 approved 且在生效期内可检索) |
— |
| 八条人工接管判定 | — |
| 禁止承诺与未授权数字的拦截 | — |
| 来源白名单校验(模型引用未提供的依据即整条丢弃) | — |
| 重复建议抑制、事件幂等、审计 | — |
理由很直接:模型输出不可复现、不可解释,也不该被信任去决定「能引用什么」。凡能确定性计算的都不给模型。
模型输出要穿过三道闸门才算数:
- 输入受限——只给当前稳定句、最近数轮、意图候选、已审核事实、Top-3 话术卡、禁止承诺与转人工规则。
- 结构校验 + 来源白名单——
source_cards只能引用本次候选,policy_refs只能引用本次已审核事实。越界即判为模型编造依据,整条丢弃。 - 展示前拦截——禁止承诺词与未经事实库授权的数字(价格、折扣、百分比)被拦下。
任何一步失败都降级为模板建议(直接用排序第一张已审核卡片的话术)并在界面上标注「已降级」。降级不是错误路径:模型慢或坏,销售仍然拿得到有依据的话术。
功能
右侧边栏 · 实时陪练 会话头与服务状态(音频 / ASR / 推荐三者独立报告)→ 实时转写(临时与稳定区分、客户/销售标签)→ 当前识别(意图、置信度、「需确认」)→ 推荐回应(复制 / 已采用 / 不适用 / 效果不佳)→ 备用说法 → 建议追问 → 风险提示 → 来源 → 暂停 / 结束 / 请求人工协助。
插件配置页 · 知识管理 七个分区:话术库、审核队列、产品与政策、版本与健康、试运行、连接与隐私。发布需权限检查并写审计;试运行是只读沙盘,不写会话也不写审计。
左侧工作台:同一套知识管理的全宽视图,用于批量审核。
五个 Agent 工具
search_phrase_cards、get_product_policy、get_customer_context、save_coaching_feedback、request_human_handoff。
七个运行时技能
b2c-sales-context、b2c-need-discovery、product-recommendation、realtime-sales-coach、objection-handling、human-handoff、conversation-debrief。
安装
见 docs/install.zh.md。简版:把本目录绝对路径填入「插件管理 → 添加插件」,重启应用,右侧边栏即出现「e销宝」。
数据位置
$DSH_HOME/xiaobao/knowledge/(默认 ~/.dsh/xiaobao/knowledge/):
| 文件 | 内容 |
|---|---|
phrase-cards.json |
话术卡库 |
facts.json |
产品事实与政策库(价格与产品能力的唯一权威来源) |
audit.jsonl |
追加式审计:内容变更与推荐反馈 |
首次启动会把随包的种子知识(30 张话术卡 / 12 条事实)注入空库。种子内容只是让插件开箱可用,不是可信的业务事实——请按自己的产品在配置页替换后再审核发布。
开发
node scripts/build-seed.mjs # 重新生成种子知识
node scripts/build-fixtures.mjs # 重新生成评测夹具
node scripts/eval.mjs # 离线评测 → docs/eval-report.md
node --test-isolation=none --test "test/*.test.mjs" # 单元测试
node scripts/selfcheck.mjs # 交付前自检(含全部测试与评测)
测试必须带
--test-isolation=none:默认隔离模式会为每个测试文件派生子进程,而 DSH 的 Windows 沙箱禁止该操作(EPERM)。同进程运行绕过了限制,也符合这些测试无副作用的设计。
零运行时依赖:dependencies 为空,只用 Node 内建模块与平台注入的服务。因此本插件不需要 npm install 即可加载。
lib/client.js 是手写的模块工厂(不是构建产物)。改它的时候注意两件事:工厂形状必须是 window.__ModuleLoader__.load({id, factory})(形状不对时平台不会报错,插件只是永远不出现),以及它只能同步 require 平台种子表里的模块(react、react/jsx-runtime)。两者都有测试守着。
已知限制
诚实列出当前的不足,避免误判能力边界:
- 语音是分段准实时,不是流式。 平台的语音服务接受的是一次完整的 16 kHz 单声道 WAV,返回整段文本,没有流式回调。插件按约 4 秒切段,因此每段有 1–2 秒的识别延迟,达不到开发计划里「稳定句到意图结果 ≤1.5s」的流式指标。
- 说话人是人工标签。 平台不提供说话人分离,客户/销售由销售手动切换,可能标错。
- 检索是进程内 JSON + 字符 n-gram,不是 pgvector 或 BM25 服务。知识库规模到数千张卡片前都够用,更大规模需要换实现。
- 复盘不写回知识库。 复盘产出的候选只进审核队列,需要人工审核后才可能成为话术卡。
- 评测存在过拟合。 评测样本与种子话术卡来自同一份夹具,口语化变体在开发中被补进卡片示例,因此指标是 100%。这说明链路和门禁有效,不说明真实通话上的泛化能力。用留出集复测的方法见
docs/eval-report.md。
许可
MIT。见 LICENSE。