dsh-plugin-composer-predict:DeepSeek Harness 输入框指令预测

前言

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。

安装与启用

市场索引

  1. 在 DSH 中进入 设置 → 插件。
  2. 启用实验性市场 bundle。
  3. 点击 Discover,添加市场索引地址:
https://raw.githubusercontent.com/Dogtiti/dsh-plugin-composer-predict/main/market-index.json
  1. 在插件列表中搜索并安装 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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye