前言¶
DeepSeek Harness(DSH)的 Composer 是对话式智能体的核心交互组件,开发者常需要在轮次之间快速给出下一句指令。手动输入容易遗漏上下文、重复命令或拼写错误。一个自然的补全方向是让当前会话的模型根据历史对话生成“下一条用户指令”,并直接在输入框占位中呈现,按 Tab 采纳。
dsh-plugin-composer-predict 插供了 Codex 风格的 next-instruction 预测:当会话空闲且输入框为空时,插件将原生提示文字替换为一条由当前模型生成的建议,按 Tab 或点击即可填入输入框成为可编辑草稿,不会自动发送。
是什么¶
dsh-plugin-composer-predict 是一个基于 DSH bundle 的插件,负责在 Composer 中预测下一条用户指令并渲染为占位文字。它读取当前会话尾部消息(用户与助手文本、工具名、工作目录),发送给当前会话配置的模型服务,将返回的建议直接写入宿主占位元素 [data-composer-placeholder],并通过 CSS 重绘实现可见效果。
插件由 Dogtiti 维护,分类为模型推理,开源协议为 MIT。
核心功能¶
- 上下文感知建议:基于当前会话历史生成建议,示例包括“跑一下测试”“跑一下看看效果”“先修掉这三个失败用例”。
- Tab 采纳:建议填入输入框后光标位于末尾,需手动发送,不自动触发对话。
- 门禁条件:仅在以下条件全部满足时请求并显示建议:
- 会话已完成至少一轮对话;
- 会话不在运行中;
- 输入框为空、无待发送附件、无已认领的斜杠命令;
- 非一次性子会话(只读输入框)。
- 不接管场景:输入框非空、会话运行中、
/或@菜单弹出时,不请求也不显示建议。 - 配置开关与超时:
enabled: true为总开关,关闭后路由返回 503;单次请求超时为timeoutMs: 20000。
安装与启用¶
市场索引¶
- 在 DSH 中进入 设置 → 插件。
- 启用实验性市场 bundle。
- 点击 Discover,添加市场索引地址:
https://raw.githubusercontent.com/Dogtiti/dsh-plugin-composer-predict/main/market-index.json
- 在插件列表中搜索并安装
dsh-plugin-composer-predict。
npm¶
npm i dsh-plugin-composer-predict
在 DSH 的 Plugins 页点击“添加”,填写包名 dsh-plugin-composer-predict。
本地目录¶
git clone https://github.com/Dogtiti/dsh-plugin-composer-predict
Plugins → 添加 → 选择该目录。
典型用法¶
安装后,插件会自动在 Composer 中生效。当会话完成一轮对话且输入框为空时,原生提示会被建议替换:
发消息或创建任务, / 调用指令, @ 文件或对话
变为:
跑一下测试
此时按 Tab 或点击建议区域,建议文字会填入输入框,光标位于末尾,可继续编辑或直接发送。
配置项¶
插件通过配置文件插入,示例:
- insert:
- id: composer-predict
name: 'dsh-plugin-composer-predict'
config:
model: deepseek-chat
maxSuggestionChars: 24
主要配置项:
| 键 | 默认 | 说明 |
|---|---|---|
enabled |
true |
总开关;关闭后路由返回 503,客户端不再请求 |
provider / model |
'' |
指定模型;留空跟随当前会话 |
maxContextMessages |
8 |
送入模型的消息条数(取尾部) |
maxMessageChars |
600 |
单条消息最大字符数(保留头尾) |
maxSuggestionChars |
32 |
建议的目标长度 |
maxTokens |
200 |
输出上限 |
timeoutMs |
20000 |
单次请求超时 |
cacheTtlMs |
60000 |
相同会话事件序号下的缓存时间 |
diagnostics |
false |
将客户端判定写入 .diagnostics.jsonl,用于排障 |
实现方式¶
插件为标准的 DSH bundle,包含 Host 与 Client 两部分:
- Host:监听
POST /api/composer.predict,通过sessions.get(id)获取会话信息,调用session.deriveMessages()提取尾部消息,使用当前会话的 provider/model 发送请求,按 seq 缓存 60 秒。 - Client:在对话回合结束时(
running: true→false)请求建议,重绘[data-composer-placeholder],通过 CSS 将内容设为透明,再用::after渲染建议,字号使用font: inherit避免变量解析失败导致的字号退化为 0。
挂载后,Client 会自检:若建议内容缺失或字号小于 8px,则回退为输入框下方一行,并在控制台输出 [composer-predict] 警告。
数据与开销¶
- 读取本会话日志尾部(用户与助手文本、工具名、工作目录),发送至会话自身配置的模型服务与凭据。
- 每轮一次独立小请求,默认上限 200 tokens;
enabled: false可关闭。 - 结果不落盘,不写入会话日志。
开发与测试¶
项目包含 14 项测试,覆盖提示词拼装、模型路由回退、输出清洗、缓存失效、开关、CSS 转义、门禁条件、兜底渲染等场景。运行测试:
node --test "test/*.test.mjs"
test/render-proof/ 目录提供无头 Chrome 渲染与截图,用于核对 CSS 重绘结果,包括字号变量非法的边界环境。
兼容性¶
- DSH 版本要求
^0.2.1-0(engines.dsh)。 - 依赖宿主占位元素的
[data-composer-placeholder]标记;缺失时走回退路径,不影响输入框本身。
生态背景¶
DSH 的理念是“一切皆插件”,社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。本插件遵循这一生态规范,由社区开发者维护。
适用场景与注意¶
- 适合需要在对话轮次间快速给出指令的智能体开发者。
- 插件以当前 DSH 进程权限运行,安装前应检查源码与许可证。
- 若会话处于运行中或输入框已有内容,建议不会出现,避免干扰正常输入。
总结¶
dsh-plugin-composer-predict 通过 Codex 风格的 next-instruction 预测,将建议直接呈现在 Composer 输入框占位中,按 Tab 采纳为可编辑草稿,减少手动输入的遗漏与重复。安装与配置简单,依赖 DSH ^0.2.1-0,适合需要在对话流中增强指令补全能力的开发者。
链接¶
- 插件目录页:https://www.skillhub.cn/plugins/Dogtiti/dsh-plugin-composer-predict
- GitHub 仓库:https://github.com/Dogtiti/dsh-plugin-composer-predict