dsh-prompt-suggestion:Composer 里的下一步提示预测

前言

在 DSH 里和智能体多轮对话时,下一句提示往往要对照上一轮结果再想一遍:补约束、改方向、或接着拆任务。Composer 本身是空白的,没有「根据上下文猜你接下来会说什么」这一层。Claude Code 一类产品会在输入框里用灰色 ghost text 给出预测,Tab 采纳即可继续改。dsh-prompt-suggestion 把同类能力接到 DSH Composer:每轮任务结束后,在输入框为空时显示模型预测的下一句用户提示,并附带历史前缀补全与独立设置页。下面按安装、操作和实现要点说明。

这是什么

dsh-prompt-suggestion 是社区维护的 DSH bundle,仓库为 GoldenLoaf24h/dsh-prompt-suggestion,在 SkillHub 目录中归类为「模型推理」。插件在每轮对话结束、输入框为空、没有命令 chip、且会话不在运行时,调用辅助模型生成「下一步用户提示」,以灰色 ghost text 显示在输入框内;另有基于本会话已发提示的历史前缀补全,与预测互不挡路。纯 JavaScript,无构建步骤,零第三方运行时依赖;package.json 版本为 0.1.0,许可证 MIT,要求 Node >=22.0.0。

核心功能

下一步预测与采纳

预测以灰字挂在 Composer 末段,可用下表中的快捷键操作(与 README 行为表一致):

操作 结果
Tab 把整条预测填入输入框(可继续编辑,不发送)
Alt + → 按词逐步填入预测,剩下的仍显示为灰字
Enter 把预测填入并立即发送(可在设置里关掉)
Esc 忽略本次预测,并标记该轮不再提示
直接打字 预测自动消失;擦回原样后又会出现
Alt + R 换一条预测(旧的那条作为「不要重复」传给模型)
↑ 空输入框时填入本会话上一条已发送的提示(清空后灰字会回来)

Tab 采纳只影响当前这一屏,刷新页面仍会看到同一条缓存预测;只有 Esc 会把该轮标记为「不再提示」并落盘。

历史前缀补全

输入几个字后,若本会话发过以它开头的提示,剩余部分会以灰字补出,同样可用 Tab 采纳。预测与补全互不干扰:预测不再匹配当前输入时会自动让位给补全。

出现条件与缓存

预测只在一轮任务结束、输入框为空、没有命令 chip、且会话不在运行时出现。同一轮重复请求命中磁盘缓存,不会重复调用模型;打开会话只读缓存、零模型调用,缓存缺失(会话早于插件安装,或条目过期)才补一次真实调用。若补调用失败,一分钟后再自动重试一次。失败(超时、模型空返回)只在内存里压一分钟、不写盘,重启即重试。

设置页

在「插件 → 提示预测」可改下列项,全部持久化到 ~/.dsh/plugin-data/dsh-prompt-suggestion/settings.json:

  • 启用下一步预测 — 总开关
  • 模型服务商 / 模型 — 留空则跟随当前会话实际使用的 route;选了服务商后模型为下拉,选项来自该 adapter 目录
  • 思考强度 — 自动(最省) 或显式 off / low / high / max
  • Alt + → 逐词采纳 / Enter 采纳并发送 / 历史前缀补全 / ↑ 回填上一条 — 四个独立开关
  • 生成参数 — 预测最长字数、超时、输出上限、携带最近消息条数、上下文字符上限
  • 上下文脱敏 — 发模型前抹掉密钥、令牌、密码等敏感串
  • 最近预测 — 最近若干条的原文、耗时、所用模型

bundle 级 cordis.patch.yml 还可配置:

- id: prompt-suggestion
  name: dsh-prompt-suggestion
  config:
    enabled: true   # 与设置页里的开关等价,设置页优先

安装与启用

本目录是标准 DSH bundle(dsh.bundle.patch 指向 cordis.patch.yml)。官方 README 给出三种方式:

  1. 桌面端插件面板(desktop profile,Electron 独占):插件 → 添加插件 → 填本目录绝对路径,或 github:GoldenLoaf24h/dsh-prompt-suggestion
  2. CLI(非 desktop profile):
dsh plugin --profile <profile> add github:GoldenLoaf24h/dsh-prompt-suggestion
  1. Agent 会话内:
plugin_manager({action:'install_bundle', target:'github:GoldenLoaf24h/dsh-prompt-suggestion'})

装完后 package.json 的 dsh.profile.bundles 会自动登记。改 lib/index.js 需在插件面板关掉再打开(host 半不热更新);改 lib/client.js 刷新页面即可。

典型用法

  1. 安装并启用插件,在设置页确认「启用下一步预测」为开(或与 bundle config.enabled 一致)。
  2. 在 DSH 里正常完成一轮对话,等任务结束且输入框为空;若条件满足,应看到灰色预测文案。
  3. 需要整句草稿时按 Tab 填入后再改;需要边想边填时按 Alt + → 逐词采纳。
  4. 预测不合适时按 Alt + R 换一条,或 Esc 忽略并禁止该轮再提示。
  5. 若你常重复类似开头,直接输入前缀,观察历史补全灰字,用 Tab 采纳。

适用场景与注意

适合在 DSH 里长时间多轮编码、排障或写提示的用户:减少「盯着空白框想下一句」的停顿,同时保留编辑后再发送的控制权。辅助调用会读取会话 transcript(经条数与字符双预算裁剪),并可在设置里开启上下文脱敏;仍应假设插件以当前 DSH 进程权限运行,安装前请自行审阅 仓库源码 与 MIT 许可证。自定义 HTTP 路由不经过宿主 cookie 鉴权,实现上带有 Origin / Sec-Fetch-Site 同源校验。

实现上 host 在 lib/index.js 提供 /suggest、/session、/dismiss、/catalog、/settings 等路由,通过 ctx.llm.prepareCall 与 call.stream 发辅助调用;client 在 lib/client.js 注册 conversation.input.overlay 与 plugins.bundle.config 槽位,灰字通过编辑器上的 CSS 自定义属性 --dsh-ps-ghost 传入,以适配 Lexical 重建段落时的 DOM 行为。

结尾

dsh-prompt-suggestion 把「下一轮用户提示」做成 Composer 内的 ghost text 与可配置快捷键,并区分磁盘缓存、内存失败重试与 Esc 落盘忽略。目录介绍见 SkillHub 插件页,源码与完整行为说明见 GitHub 仓库。

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

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

小夜