dsh-suggested-replies:DSH Web 的下一步回复候选插件

前言

DSH 的智能体会话里,AI 每完成一轮回复后,用户常常还要手动想下一句:是继续执行、检查刚才的结果,还是从多个分支里选一个。这个环节并不复杂,但频繁出现时会打断节奏。

dsh-suggested-replies 是面向 DSH Web 的“预测回复”插件。它会在 AI 回复结束后,在聊天输入框上方生成几条用户下一步可能会发送的消息候选。点击候选只会把文本填入输入框或替换当前草稿,不会调用发送动作,也不会自动发送。

下面介绍它的位置、行为、安装方式、配置项,以及页面验收时要注意的点。

它是什么

dsh-suggested-replies 是一个 DSH Web 插件,npm 包名为 @anionex/dsh-suggested-replies,GitHub 仓库地址为:

https://github.com/Anionex/dsh-suggested-replies

它解决的问题是:在 AI 回复完成后,给当前用户一组可直接编辑的下一步消息候选。候选显示在输入框上方,点击后只进入草稿,由用户自行编辑或发送。

该插件以 Web 客户端插件形式工作,候选注册在 conversation.input.dock,位于 DSH 消息输入卡片上方,不使用 conversation.composer.dock

核心行为

插件触发后,大致流程是:

1、AI 完成本轮回复。

2、插件为候选生成运行一个短文本内部 Agent。

3、内部 Agent 根据近期对话生成候选。

4、插件把候选状态写入插件自有的 suggested_replies_state domain。

5、Web 页面在 conversation.input.dock 显示候选行。

6、用户点击候选后,文本进入输入框草稿。

7、用户自行编辑或点击发送。

行为上有几个固定点:

  • 候选行始终单行展示,宽度不足时横向滚动,不换到第二行。
  • 候选优先覆盖下一步执行、验证/追问、决策/选择。
  • 候选跟随最近对话语言,彼此去重,且可以直接作为草稿使用。
  • 点击候选只调用草稿填充,不会创建下一轮,不会自动发送消息。
  • 辅助模型没有返回规定 JSON 时,插件会按最近对话语言生成配置数量的保守候选,不把空数组当成成功结果隐藏整行。
  • 辅助提示词只截取直接用户消息和 AI 回复,不把 AGENTS、运行时快照和 Skill 目录等注入上下文挤占最近对话窗口。
  • 新用户输入、设置关闭、辅助调用超时或插件卸载,都会取消当前生成,避免旧结果在下一轮对话中回流。
  • 父 Session 不追加插件自定义事件,也不修改 KNOWN_SESSION_EVENT_TYPES
  • 候选状态保存在插件拥有的 suggested_replies_state domain。
  • sidecar 状态按 Session id 存储,并校验 header 的 { createdAt, cwd }
  • 页面刷新或 Host 重启后,仍可恢复当前候选。
  • 卸载插件后,父 Session 仍能由原版 DSH reader 恢复。

成本方面,每个可生成候选的完成轮次都会额外运行一个短文本内部 Agent。默认会复用 Session 最新 request/header 中实际使用的 provider/model,并回退到 Agent 默认路由。关闭 enabled 后,不再运行该 Agent。

安装与启用

先从 npm 安装:

dsh plugin --profile web add @anionex/dsh-suggested-replies

如果是本地开发目录,可以使用绝对路径安装:

dsh plugin --profile web add /absolute/path/to/dsh-suggested-replies

安装或更新后,先重启正在运行的 dsh web 服务,再在浏览器硬刷新页面。经过上面的步骤后,新建或重新打开一个会话再进行验证。

启用开关在 Web 设置页的“下一步建议”分区。enabled 是总开关,它会写入:

$DSH_HOME/settings.yaml

中的 suggested-replies 区域。修改后下一轮立即生效。

设置与配置

除设置页的 enabled 外,其余部署参数可以在 cordis.patch.yml 或 profile overlay 中配置。

字段 默认值 说明
enabled true 是否生成候选;关闭后不再运行辅助 Agent
suggestionCount 3 每轮候选数量,范围 2-4
contextMessageCount 4 传给辅助模型的最近可见消息数,范围 2-6
maxSuggestionChars 160 单条候选保留的最大字符数,范围 32-300
maxTokens 384 辅助调用的最大输出 token,范围 64-1024
timeoutMs 15000 辅助调用最长时长,单位毫秒,范围 1000-30000
suggestionProvider 未设置 可选,显式指定辅助调用 provider;省略时跟随当前会话模型
suggestionModel 未设置 可选,显式指定辅助调用 model;必须与 suggestionProvider 同时提供

一个 overlay 示例如下:

- patch:
    - id: suggested-replies
      config:
        suggestionCount: 4
        maxSuggestionChars: 120
        timeoutMs: 10000
        suggestionProvider: deepseek-official
        suggestionModel: deepseek-v4-flash

如果你只想限制候选数量和超时,不显式指定模型,也可以只配置:

- patch:
    - id: suggested-replies
      config:
        suggestionCount: 3
        maxSuggestionChars: 120
        timeoutMs: 10000

注意,suggestionModel 不能单独使用。要显式指定 model,就必须同时提供 suggestionProvider

典型用法与页面验收

先安装插件,然后重启 dsh web 并硬刷新浏览器。接着新建或重新打开一个会话,等待 AI 完成一轮回复。

页面验收时,可以按下面的点检查:

1、候选行位于 [data-composer-card] 上方。

2、点击候选后,textarea 草稿变为候选文本。

3、点击候选后不会创建下一轮,也不会自动发送消息。

4、候选行是单行展示,宽度不足时横向滚动。

5、关闭“下一步建议”的 enabled 后,下一轮不再触发生成。

6、页面刷新或 Host 重启后,当前候选状态仍可恢复。

如果你只想观察行为,不需要调整模型路由,保留默认 provider/model 复用即可。如果你需要控制候选长度和超时,再配置 maxSuggestionCharstimeoutMs

适用场景与注意

这个插件适合在 DSH Web 里希望减少“下一步手动输入”的场景。它尤其适合以下情况:

  • 对话经常进入“继续执行、检查、选择分支”的阶段。
  • 希望 AI 回复结束后,快速看到几个可编辑的下一步选项。
  • 希望候选只进入草稿,不自动发送,保留人工确认。
  • 希望在 Web 端以插件方式扩展,不修改父 Session 的插件自定义事件。

需要注意:

  • 插件会额外运行短文本内部 Agent,会产生模型调用成本。
  • enabled 关闭后不再运行该 Agent。
  • 辅助调用受 timeoutMsmaxTokens 等配置约束。
  • 点击候选不会自动发送,最终发送仍由用户操作。
  • 插件许可证为 MIT。
  • 插件以当前 dsh 进程权限运行。安装前建议检查源码与许可证,再决定是否启用。
  • 本项目为独立实现,致谢 dsh-external/dsh-auto-blame 的双端 Web 插件组合思路,但未包含该项目的源代码、图像或品牌资产。

相关链接

GitHub:

https://github.com/Anionex/dsh-suggested-replies

可参考的插件目录页:

https://www.skillhub.cn/plugins/Anionex/dsh-suggested-replies

该目录页可作为资料入口参考,不代表官方应用商店。

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

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

小夜