前言¶
在 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。
开关有两个常驻入口,都不依赖精确瞄准鼠标:
- ✨ 图标悬停弹层:整行(文字 + 轨道)可点,最小高度 36px;弹层以 220ms 延迟关闭,避免从图标移向弹层时穿过间隙导致弹层消失。
- 建议面板头部:紧凑开关,无需悬停。
两处共用同一状态,任一处切换会立即同步到另一处。
手动生成¶
输入框工具栏右侧 ✨ 按钮可随时生成或重新生成;回合进行中按钮自动禁用,旧面板自动收起。
建议面板交互¶
面板提供「重新生成」「停止」「关闭」;每条建议一键填入草稿。
会话与路由¶
按会话分别捕获模型路由与回合内容;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 许可证,确认符合你的安全与合规要求。
典型用法¶
- 安装并重启 DSH 后,在普通(非 subagent)会话中与模型完成至少一轮问答。
- 一轮回答结束后,若自动生成功能已开启,输入框上方会出现 3 条建议 chips;也可随时点工具栏 ✨ 手动生成或重新生成。
- 点击某条建议,内容写入输入框草稿;有旧草稿时会换行追加。确认后按回车发送。
- 不需要自动弹出时,在 ✨ 悬停弹层或面板头部关闭开关;状态会保存在
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