前言¶
在 DeepSeek Harness(DSH)里写 Composer 时,常见节奏是:助手刚改完代码或跑完测试,下一句往往是「跑一下看看」「先修失败用例」——这类短指令重复度高,但输入框默认仍是通用提示。Codex 一类产品里有过「下一条指令预测、Tab 采纳」的交互;DSH 社区插件 dsh-predict(维护者 Dogtiti)把同类能力接到 Harness:根据当前会话上下文,用占位文字给出一条建议,按 Tab 变成可编辑草稿,不会自动发送。
这是什么¶
dsh-predict 是 DSH 标准 bundle(Host + Client),分类为模型推理。它向当前会话正在使用的模型发起一次小请求,预测用户可能输入的下一条指令,并渲染在 Composer 输入框的占位区域;简介原文为:Codex-style next-instruction prediction for the DeepSeek Harness composer: a Tab-to-accept suggestion rendered as the input placeholder. 源码与说明见 GitHub 仓库,社区目录页:skillhub.cn/plugins/Dogtiti/dsh-predict(独立社区索引,与 DeepSeek / 幻方无官方从属关系)。
核心功能¶
占位符里的建议¶
会话空闲且输入框为空时,原生占位提示可被替换为模型生成的短句,例如:
- 发消息或创建任务, / 调用指令, @ 文件或对话
+ 跑一下测试
按 Tab 或点击可将建议填入输入框(光标在末尾),不会自动发送。README 中的对照示例包括:刚完成代码修改时可能出现「跑一下看看效果」;测试报告有 3 个失败用例时可能出现「先修掉这三个失败用例」。
何时会请求、何时不显示¶
建议仅在以下条件全部满足时请求并显示:
- 该会话已完成至少一轮对话
- 会话不在运行中
- 输入框为空、无待发送附件、无已认领的斜杠命令
- 非一次性子会话(只读输入框)
不接管的情况包括:输入框非空(不请求、不显示);会话运行中(不显示);/ 或 @ 菜单弹出(不显示)。
提示词与「没有就不显示」¶
较新的行为是:提示词不再要求模型输出 NONE 之类占位词——有具体任务就给一条,没有就什么都不输出。插件会把少数模型把沉默写成文字的情况(如 NONE、无、什么都不输出、空回复)统一视为无建议,输入框保持原样。
数据与开销¶
读取本会话日志尾部(用户与助手文本、工具名、工作目录等),发送至会话自身配置的模型服务与凭据;每轮一次独立小请求,默认输出上限 200 tokens。结果不落盘,不写入会话日志。enabled: false 可关闭路由,客户端不再请求。
安装与启用¶
插件以当前 DSH 进程权限运行;安装前建议自行查看源码与 MIT 许可证。兼容 DSH ^0.2.1-0(npm 包当前版本见仓库 package.json,资料中为 1.2.5)。
方式一:实验性市场 bundle
在 DSH 中:设置 → 插件 → 启用实验性市场 bundle → Discover → 添加市场索引地址 → 安装 dsh-predict。
市场索引地址:
https://raw.githubusercontent.com/Dogtiti/dsh-predict/main/market-index.json
方式二:npm
npm i dsh-predict
在 Plugins 页用「添加」填写包名 dsh-predict。
配置¶
在 bundle 的 insert 段可挂载 composer-predict,示例:
- insert:
- id: composer-predict
name: 'dsh-predict'
config:
model: deepseek-chat
maxSuggestionChars: 24
常用配置项(默认值以 README 为准):
| 键 | 默认 | 说明 |
|---|---|---|
enabled |
true |
总开关;关闭后路由返回 503 |
provider / model |
'' |
指定模型;留空跟随当前会话 |
maxContextMessages |
8 |
送入模型的消息条数(取尾部) |
maxMessageChars |
600 |
单条消息最大字符数(保留头尾) |
maxSuggestionChars |
32 |
建议的目标长度 |
maxTokens |
200 |
输出上限 |
timeoutMs |
20000 |
单次请求超时 |
cacheTtlMs |
60000 |
相同会话事件序号下的缓存时间 |
diagnostics |
false |
将客户端判定写入 .diagnostics.jsonl,用于排障 |
排障时可设 diagnostics: true,在包目录下查看 .diagnostics.jsonl(如 found:false 表示会话未挂载,suggestion:null 且模型 raw 为 NONE 等表示无法预测)。
典型用法¶
- 按上文任一方式安装并启用插件,保证会话至少有一轮完整对话且当前不在运行中。
- 清空 Composer 输入框,等待占位区域出现预测短句(若上下文不足以预测,则保持宿主默认占位)。
- 按
Tab将建议变为草稿,按需编辑后发送。
Client 在回合结束(running: true → false)时请求 Host 的 POST /api/composer.predict;宿主通过 [data-composer-placeholder] 重绘占位内容,若自检失败(内容不含建议或字号过小)会回退并在控制台输出 [composer-predict] 警告。
适用场景与注意¶
适合在 Harness 里高频做「改代码 → 验证 → 修失败用例」等短指令链路的开发者。插件依赖宿主占位元素 [data-composer-placeholder];缺失时走回退路径,不影响输入框本身。
注意:每次预测都会用当前会话的模型与凭据再调一次模型,有 token 与延迟开销;敏感项目请评估是否开启 diagnostics 及上下文截取范围。同维护者的相关插件包括 dsh-input-history(历史消息 ↑/↓)、dsh-subagent-bridge 等,可与本插件并列使用,互不替代。
结尾¶
dsh-predict 把「下一条用户指令」做成 Composer 占位建议,Tab 采纳为草稿,贴合 DSH「一切皆插件」的扩展方式。进一步了解请访问 社区目录页 与 GitHub:Dogtiti/dsh-predict。