dsh-predict:在 Composer 占位符里预测下一条指令

前言

在 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 等表示无法预测)。

典型用法

  1. 按上文任一方式安装并启用插件,保证会话至少有一轮完整对话且当前不在运行中。
  2. 清空 Composer 输入框,等待占位区域出现预测短句(若上下文不足以预测,则保持宿主默认占位)。
  3. 按 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。

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

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

小夜