前言¶
在 DeepSeek Harness 里和智能体多轮对话时,输入框往往要等你想好下一句再打字;半写一句又卡住时,也常要自己在上下文中找线索。市面上一些浏览器或 IDE 的「幽灵文本」补全并不了解当前 Session 的对话结构,也容易在你不想触发时抢焦点。
dsh-composer-suggest 是面向 Harness Web UI 的客户端插件,在 Agent 回复后的空输入框里给出「下一条消息」幽灵建议,或在已有草稿末尾按 Tab 触发「续写」——且明确区分两种模式、用设置开关控制,并尽量不打断 Tab 在其它场景下的默认行为。下面按安装、用法和配置说明如何接入。
插件定位¶
- 名称:
dsh-composer-suggest(npm 包名同插件 id:composer-suggest) - 维护者:WuweiRE
- 分类:客户端(
dsh.client,Web 平台,immediately: true) - 仓库:https://github.com/WuweiRE/dsh-composer-suggest
- 目录页:https://www.skillhub.cn/plugins/WuweiRE/dsh-composer-suggest
- 许可证:MIT(
0.1.0)
插件在编辑区提供两类 Composer 建议,回答来自当前 Session 所用模型(或你在设置里指定的模型),每次建议对应一次模型调用,会消耗 token;不会写入 Session 日志,也不会出现在 token 计量器上。
核心功能¶
下一条消息(Next message)¶
Agent 回复结束后,若输入框为空,插件会显示你最可能发送的下一条消息的幽灵文本。
- Tab:把建议接受为可编辑草稿(不会直接发送)
- Alt+Down / Alt+Up:在最多三个候选之间切换
- Esc:撤回当前建议
- 一旦开始输入,建议会被丢弃
草稿续写(Draft continuation)¶
输入框里已有文字且光标在末尾时,按 Tab 开始续写;界面会显示 “Continuing…” 和加载状态,模型会结合上方对话与你的草稿生成续写。再按 Tab 接受结果,或 Esc 取消。
在未按 Tab 之前不会发起请求。空输入框、光标在草稿中间、输入 / 命令或 @ 引用时,Tab 仍保持 Harness 原有行为,不会误触续写。
粘贴图片与续写¶
输入框附带的图片算作草稿内容:即使没打字,也可以在图片场景下用 Tab 续写「你可能会发的说明」。最多附带三张图,取自输入框缩略图,发送前会缩小到 1024px。若模型不支持视觉,状态行会提示图片未被识别,续写会退化为纯文本;若既无文字又无可用视觉能力,界面会明确说明,而不是瞎猜。
幽灵文本布局¶
过长建议会在当前列换行显示,并临时给带 data-input-scroll 的滚动区域增加底部边距,把下方工具栏挤开。若 Harness 更新改了该选择器,建议仍可能显示,但有可能暂时盖住工具栏,需在 client.js 里更新选择器。
设置与状态¶
Settings → General 中为两种模式各有一个开关;另有状态行显示最近一次应答的路由、耗时或失败原因。
安装与启用¶
插件尚未发布到 npm(npm view dsh-composer-suggest 为 404)。README 给出的安装方式是从仓库检出后按路径加入 profile:
git clone https://github.com/WuweiRE/dsh-composer-suggest.git
dsh plugin --profile <name> add ./dsh-composer-suggest
首次发布到 registry 后,预期一行安装为(README 预留说明):
dsh plugin --profile <name> add dsh-composer-suggest
安装后重启 Harness,并刷新 Web 页面。开发与测试针对 DeepSeek Harness 0.2.2-rc.1。宿主需提供 conversation.input.overlay、settings.general.item、connection.admit()、ctx.llm、session.deriveMessages();图片续写 additionally 依赖 attachments 服务(saveImages)及输入框内 Host 渲染的 blob: 缩略图。缺少图片能力时,纯文本续写仍可用。
模型与配置¶
默认:建议使用 当前 Session 已选模型,并以该模型 advertised 的最低 reasoning effort 回答,不设 temperature。
在 Settings → General → Model for suggestions 填入模型 id(例如 claude-sonnet-5-5)后按 Enter,可改为专用模型;留空则继续跟随 Session。该值保存在当前浏览器;其下方的状态行会汇报最近路由或失败原因。
若要为所有浏览器统一默认,可在 profile 的 cordis.patch.yml 中覆盖插件配置。设置页里手填的模型优先于文件默认值:
- id: composer-suggest
name: dsh-composer-suggest
config:
model: claude-sonnet-5-5
未写 provider 时,会在 profile 已挂载的 provider 中查找模型,并优先尝试 Session 的 provider;没有任何 provider 提供该模型时会失败并报 model-unavailable,不会静默换模型。要固定路由需同时设置 provider 与 model,完整选项见仓库内 cordis.patch.yml。
典型用法¶
- 安装并重启、刷新页面后,在 Settings → General 打开你需要的模式开关(下一条消息 / 续写)。
- 下一条消息:等 Agent 回复完,看空输入框是否出现灰色建议;满意则 Tab 收成可编辑草稿,不满意用 Alt+Down / Alt+Up 换候选或 Esc 关掉。
- 续写:在输入框写好半句并把光标放在末尾,按 Tab 等待 “Continuing…”;确认后再 Tab 接受,或 Esc 取消。
- 带图续写:在输入框挂上图片(可零文字),光标在末尾时按 Tab;注意状态行对「模型是否看见图」的提示。
适用场景与注意¶
适合:长期在 DSH Web UI 里做多轮 Agent 对话、希望减少「下一句写什么」和「半句写不下去」的停顿,且能接受每次建议单独耗 token 的开发者。
源码与权限:客户端插件随你当前的 Harness profile 与进程权限加载;安装前建议阅读仓库源码、LICENSE 与 THIRD_PARTY_NOTICES.md(本插件整合了 Stijnus 的 dsh-composer-predictions 与 Amir Bazylkhanov 的 dsh-composer-prediction 部分思路与代码,均为 MIT)。插件与 DeepSeek 及上述原作者无隶属关系。
生态:DSH 主张「一切皆插件」;SkillHub 目录 为社区站点,并非 DeepSeek / 幻方官方应用商店。
本地跑插件自带测试:
node --test
结尾¶
dsh-composer-suggest 把「回复后的下一条消息」和「Tab 触发的草稿续写」做成两种可开关的 Composer 能力,并保留明确的接受、轮换与取消交互。需要细节与更新时,以 GitHub README 与 SkillHub 目录页 为准。