Anionex/dsh-suggested-replies ↗★ 2
@anionex/dsh-suggested-replies
DSH Web plugin that proposes concise next user messages above the composer and inserts a selected reply into the draft without sending it.
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Anionex/dsh-suggested-replies说明文档
阅读完整 README ↗dsh-suggested-replies
DSH Web 的“预测回复”插件:AI 回复结束后,生成几条用户下一步可能会发送的消息候选,并将它们显示在聊天输入框上方。点击候选只会将文本填入输入框,不会自动发送。
行为
AI 完成本轮回复
-> 插件创建一个只使用官方事件的内部 Agent Session
-> 内部 Agent 以零工具、完整 persona 根据近期对话生成候选
-> flush 并归档内部 Session,把 UI 状态写入插件自有 storage-domain sidecar
-> Web 在 conversation.input.dock(输入框上方)显示气泡
-> 点击候选:inputActions.setDraft(text)
-> 用户自行编辑或点击发送
- 正确位置:注册
conversation.input.dock,位于 DSH 的消息输入卡片上方;不会放到输入框下方的conversation.composer.dock。 - 单行展示:候选始终保持在一条横线上;宽度不足时横向滚动查看,不换到第二行。
- 只填入草稿:点击候选会替换当前草稿为该候选,不会调用发送动作。
- 候选内容:优先覆盖合理的下一步执行、验证/追问、或决策/选择;候选跟随最近对话语言,彼此去重且可直接发送。
- 失败兜底:辅助模型没有返回规定 JSON 时,插件仍按最近对话语言生成配置数量的保守候选,不再把空数组当成成功结果隐藏整行。
- 上下文范围:辅助提示词只截取直接用户消息和 AI 回复;AGENTS、运行时快照和 Skill 目录等注入上下文不会挤占最近对话窗口。
- 过期保护:新用户输入、设置关闭、辅助调用超时或插件卸载都会取消当前生成,避免旧结果在下一轮对话中回流。
- 模型调用与成本:每个可生成候选的完成轮次额外运行一个短文本内部 Agent。默认复用 Session 最新
request/header中实际使用的 provider/model,再回退到 Agent 默认路由;也可通过suggestionProvider+suggestionModel显式覆盖。关闭开关后不再运行该 Agent。 - Core 零修改:父 Session 不追加插件自定义事件,也不修改
KNOWN_SESSION_EVENT_TYPES。生成过程完整记录在内部官方 Agent Session;候选的 loading/ready/cleared 状态保存在插件拥有的suggested_replies_statedomain,因此卸载插件后父 Session 仍能由原版 DSH reader 恢复。 - 状态恢复:sidecar 行按 Session id 存储,并校验 header 的
{ createdAt, cwd };页面刷新或 Host 重启后仍可恢复当前候选,复用同一 id 的另一条 Session 不会读到旧状态。
安装
从 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 区域,下一轮立即生效。
其余部署参数在 cordis.patch.yml 或 profile overlay 中配置:
| 字段 |
|---|