dsh-mercury-diffusion:在 DSH 对话气泡里实时播放 Mercury 扩散去噪过程

前言

在 DeepSeek Harness(dsh)里接 Inception Mercury 这类扩散式语言模型时,默认体验仍是逐 token 的增量流式输出。Mercury API 在 diffusing: true 时会返回真实的去噪中间帧,从噪声逐渐收敛到成文;若不在 UI 层单独处理,这些帧要么看不到,要么只能事后想象「模型是怎么想出来的」。

dsh-mercury-diffusion 是社区维护的客户端插件,把 Mercury 返回的去噪帧按可读节奏在回答气泡里回放,同时保持 dsh 会话日志与模型上下文只记录最终收敛文本。下面介绍它做什么、如何安装,以及使用时需要注意的事项。

这是什么

dsh-mercury-diffusion(npm 包名同插件名,当前版本 0.2.1,MIT)由维护者 TonyWu2333 发布,归类为 客户端 插件。一句话定位:面向 DeepSeek Harness 的插件,对接 Inception Mercury,在 Web 对话界面的回答气泡内直播扩散去噪流,从噪声到成文。

插件不注册自己的模型提供商,也不提供独立设置页;在你已在 dsh「Models」页配置的 Inception 路由之下增加一层扩散渲染能力。

核心功能

以下能力均来自项目 README 与 package 声明,可与 GitHub 仓库 对照。

真实帧,而非装饰动画

每一帧都是 Mercury API 在 diffusing: true 时返回的去噪状态,在浏览器里以至少约 180 ms 一帧的节奏播放;收敛后再保留约 400 ms,再切换为常规 Markdown 渲染。

与现有路由共存

插件在你已有的 Custom model API 路由上工作。中间帧走旁路(/api/mercury-diffusion/frames 的 SSE),写入会话日志、进入模型上下文的仍是收敛后的 text-delta,不破坏 dsh「模型可见 ⟺ 已记录」的约定。

零成本能力探测

进入对话时,插件会用 messages: [] 且将 diffusing 设为无效类型发起探测;若服务端在校验阶段以 400 并在 loc: ["body","diffusing"] 报错,则判定该 provider::model 支持扩散。探测在生成 token 之前被拒绝,不消耗计费 token。结果在进程内按 provider::model 缓存;unknown 仅保留 60 秒。

失败时回退原适配器

附件、辅助调用、无人观看的会话、无凭证的路由,或网关拒绝 diffusing 字段时,请求走 dsh 原有 LLM 适配器,不中断对话。用户中止本轮时,不会在已中止的信号上重新发送。

按模型一键开关

对支持扩散的模型,界面右侧会出现浮动按钮;开关写入 dsh 用户设置,配置键为 diffusion.<provider>::<model>,重启后仍有效。仅在浏览器有人观看(按钮组件持有帧订阅)时才请求 diffusing;标题生成、压缩、无头或 ACP 运行仍使用普通增量流。

助手消息渲染

dsh 未提供仅包裹助手正文内容的扩展点,插件以更高优先级注册 conversation.chat.node[assistant-step],因此所有模型的助手消息都会经过该渲染器(正常路径移植自 dsh ui-chat 的 AssistantNodeView)。禁用或卸载插件后立即恢复原生渲染。

环境要求

项 要求
dsh >=0.2.1-rc.2 且 <0.3.0
Node ^22.19 或 >=24
包管理 pnpm 需在 PATH 中(dsh plugin 用它管理 profile 插件)
平台 Web 客户端(dsh.dsh.client.platform: web)

安装与启用

1、安装插件

在已安装 dsh 的机器上执行官方文档中的命令:

dsh plugin --profile web add dsh-mercury-diffusion
dsh web

上述命令将插件加入 web profile,并启动 Web 界面。插件以当前 dsh 进程权限运行,安装前建议查看 源码与许可证。

2、添加 Inception 路由

打开 Settings → Models → Add model provider → Custom model API,填写:

字段 值
Provider ID inception
Display name Inception
Base URL https://api.inceptionlabs.ai/v1(须包含 /v1)
API protocol OpenAI Chat Completions
API key 你的 Inception API key
Models Add model → mercury-3(或 mercury-2.5、mercury-2)

然后点击 Create provider。

注意:不要用内置 DeepSeek 卡片指向 Inception;该适配器协议不同,请求会返回 404。

若习惯改配置文件,可在 ~/.dsh/profiles/web/cordis.patch.yml 中按 README 示例追加 inception 提供商,API 密钥通过环境变量引用(例如 apiKeyEnv: INCEPTION_API_KEY),勿把明文密钥写进仓库。

3、打开扩散开关

在发送按钮旁的模型选择器里选中 Mercury 模型,新建对话。右侧出现浮动按钮后,将 diffusion 打开,再发送消息即可在气泡内看到去噪过程。

典型用法与数据流

经过上面的配置,一次普通问答的流程可以概括为:

  1. 选择已配置的 mercury-3(或同系列)模型,确认扩散开关为 on。
  2. 发送用户消息;若模型被判定支持且会话被观看,桥接层会在原请求上增加 diffusing: true,并去掉与 Inception 不兼容的 reasoningEffort、temperature;max_completion_tokens、stop、tools 会转发。
  3. 浏览器通过帧通道接收 SSE,气泡先出现空块,再按节奏播放中间帧,最后与会话中的最终助手文本对齐。

桥接仅对「忠实重发」的请求生效:带图/文件、多步回合里已被其他气泡占用的动画等场景会走原路径。

适用场景与注意

适合谁: 已在 dsh Web 中使用 Inception Mercury,并希望直观看到扩散去噪过程、而不是只看最终 Markdown 的开发者或体验者。

协议与网关: 直连 Inception 时使用裸模型 id(mercury-3);经聚合网关时通常使用带前缀形式(如 inception/mercury-3),以网关文档为准。

安全与信任: 插件会替换全局助手消息渲染节点,并拦截符合条件的 LLM 流以重放 Mercury 帧。安装前应阅读仓库代码与 THIRD_PARTY_NOTICES.md。社区插件目录 skillhub.cn 与 DeepSeek / 幻方无官方从属关系,DSH 生态奉行「一切皆插件」,选用与否由你自行评估。

推理预览差异: 相对原生 ui-chat,「完成后仍预览 reasoning」类设置对该插件不可见,推理预览仅在生成过程中显示。

结尾

dsh-mercury-diffusion 把 Inception Mercury 的真实去噪帧搬进 dsh 回答气泡,在不大改会话日志语义的前提下,补上了扩散模型特有的可视化环节。若你已在 web profile 里接好 Mercury,可按本文步骤安装并打开 per-model 开关试用。

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

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

小夜