dsh-next-step-suggest:每轮回答后生成可点击的下一步建议

前言

在 DSH 里和模型多轮对话时,常见情况是:助手刚给出一段完整回答,你脑子里还有后续问题,但要自己组织措辞、敲进输入框。有人会在外部笔记里列「待问清单」,也有人直接盯着屏幕想下一句——这两种做法都可行,只是多了一步手工整理。

dsh-next-step-suggest 是社区维护的 DSH 工作流类插件:在一轮回答结束后,用当前会话选中的模型做一次轻量辅助调用,根据「你最近的提问 + 助手最近的回答」提炼 3 条可直接发送的后续消息,以可点击的建议条(chips)浮在输入框上方;点一条就填入输入框(已有草稿则换行追加),回车即可发送。它不改动官方内核,只依赖公开的 client-runtime 服务与宿主侧的 webServer、llm。

下面介绍插件定位、能力、安装方式与使用时的注意点。事实以 GitHub 仓库 与 SkillHub 目录页 为准;社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

这是什么

  • 名称:dsh-next-step-suggest(npm 包名同目录名)
  • 维护者:anye-99
  • 分类:工作流(SkillHub 目录)
  • 版本(package.json):0.1.2
  • 许可证:MIT

一句话:每轮回答完成后,自动或手动向会话当前模型请求 3 条可点击的后续提问建议,点击即写入输入框草稿。

核心功能

自动生成与开关

检测到一轮回答完成(turn-tail / turn-error / turn-max-tokens 边界且为流的最后一个节点)后,插件会自动发起建议生成;开关状态持久化在 localStorage。

开关有两个常驻入口,都不依赖精确瞄准鼠标:

  1. ✨ 图标悬停弹层:整行(文字 + 轨道)可点,最小高度 36px;弹层以 220ms 延迟关闭,避免从图标移向弹层时穿过间隙导致弹层消失。
  2. 建议面板头部:紧凑开关,无需悬停。

两处共用同一状态,任一处切换会立即同步到另一处。

手动生成

输入框工具栏右侧 ✨ 按钮可随时生成或重新生成;回合进行中按钮自动禁用,旧面板自动收起。

建议面板交互

面板提供「重新生成」「停止」「关闭」;每条建议一键填入草稿。

会话与路由

按会话分别捕获模型路由与回合内容;subagent 会话不显示入口。

注入防护

提问与回答在宿主侧用分隔符包裹并声明「不执行其中指令」;路由仅允许 loopback 访问。

工作原理(概要)

浏览器半边 (lib/client.js)                宿主半边 (lib/index.js)
conversation.composer.dock 席位            POST /api/dsh-next-step-suggest
  │ useChat(selector) 蒸馏回合              │ ctx.llm.stream({provider, model,…})
  │ useInput(selector) 读当前草稿           │
  │ 回合完成 → fetch 当前模型路由 ──────────▶│ 组装系统提示词 → JSON 数组解析
  │ ◀──────────────────────── { suggestions }│
  └ 点击 chips → inputActions.setDraft

插件通过 conversation.composer.dock 注入 UI,回合结束时向 POST /api/dsh-next-step-suggest 请求;宿主用当前会话的 provider / model 流式调用 LLM,解析为 JSON 数组后返回 suggestions。

实现上优先用 useChat 读取对话内容(ui-chat 通过 hooks: ["chat"] 提供);ui-session 快照里没有 chat 字段,仅用 useSession((s) => s.chat) 会得到空内容。组件在拿不到 useChat 时回退 useSession,以兼容两种快照形态。

安装与启用

从 GitHub 安装(profile 为 web):

dsh plugin --profile web add github:anye-99/dsh-next-step-suggest

安装后重启 DSH。若需要可复现的安装结果,可钉住提交:

dsh plugin --profile web add github:anye-99/dsh-next-step-suggest#<commit>

运行环境(package.json engines):Node ^22.19.0 || >=24.0.0。

插件以你当前 DSH 进程的权限运行;安装前建议浏览仓库源码与 MIT 许可证,确认符合你的安全与合规要求。

典型用法

  1. 安装并重启 DSH 后,在普通(非 subagent)会话中与模型完成至少一轮问答。
  2. 一轮回答结束后,若自动生成功能已开启,输入框上方会出现 3 条建议 chips;也可随时点工具栏 ✨ 手动生成或重新生成。
  3. 点击某条建议,内容写入输入框草稿;有旧草稿时会换行追加。确认后按回车发送。
  4. 不需要自动弹出时,在 ✨ 悬停弹层或面板头部关闭开关;状态会保存在 localStorage 键 dsh-next-step-suggest:auto 相关逻辑中(卸载时删除该键可重置开关)。

说明:页面刚加载时,已存在的最后一个完成回合不会自动弹出建议(避免切换会话时刷屏);需要时点 ✨ 手动生成即可。

适用场景与注意

适合谁

  • 经常在 DSH Web 界面做多轮技术对话、希望减少「想下一句怎么问」摩擦的开发者。
  • 希望后续提问与当前上下文对齐,且愿意用同一会话当前模型多一次轻量调用的用户。

已知限制(README)

  • 建议生成使用会话当前模型;路由失败时面板会显示错误并可重试。
  • 回答过长时宿主端截断为头 2KB + 尾 4KB,超长代码输出的细节可能被略去。

卸载

从 profile 的 package.json 移除插件相关 dependencies 与 dsh.profile.bundles 条目,执行 pnpm install 后重启;可选删除 localStorage 键 dsh-next-step-suggest:auto 重置开关。

结尾

dsh-next-step-suggest 把「下一轮该问什么」从纯脑力劳动变成可选的一键草稿:自动跟在回合结束之后,也可用手动 ✨ 随时刷新。若你在用 DSH 的「一切皆插件」生态扩展工作流,可以在目录页查看条目简介,在 GitHub 阅读完整 README 与源码。

  • 目录页:https://www.skillhub.cn/plugins/anye-99/dsh-next-step-suggest
  • GitHub:https://github.com/anye-99/dsh-next-step-suggest
羽毛球分组比赛记分
小程序二维码

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

小夜