DeepSeek Harness 插件:Shell 风格的消息回溯

前言

在 DeepSeek Harness(DSH)的 composer 中输入消息后,如果需要修改或调整之前的表述,目前只能手动删除重写。对于多轮对话场景,这种重复操作会降低开发效率。下面介绍一个插件,可以在输入框中按方向键回溯已发送的消息,并回填为草稿。

这是什么

dsh-plugin-composer-history 是一个客户端插件,由 Dogtiti 维护。它为 DSH composer 提供类似 Shell 命令行的历史记录功能:按下 ↑ 向前回溯已发送的消息,按下 ↓ 返回到当前草稿。

插件通过拦截输入框的按键事件,结合会话日志中的消息记录,实现消息的回填与恢复。历史消息来自会话日志中 role: user 且 source.kind === 'user' 的文本,运行时上下文、技能目录等非用户输入会被过滤。

核心功能

按下 ↑ / ↓ 方向键,可以逐条回溯本会话已发送的消息:

  • 输入框为空时,按 ↑ 从最近一条开始向前回溯
  • 回溯时右下角显示当前位置(如 3/19,表示当前第 3 条,共 19 条)
  • 按下 ↓ 向前返回,越过最新一条后恢复回溯前的草稿
  • 手动编辑输入框内容后,会自动退出回溯状态

安装与启用

市场索引

https://raw.githubusercontent.com/Dogtiti/dsh-plugin-composer-predict/main/market-index.json

设置 → 插件 → 启用实验性市场 bundle → Discover → 添加上面的地址 → 安装 dsh-plugin-composer-history。

npm

npm i dsh-plugin-composer-history

在 Plugins 页用「添加」填写包名。

本地目录

git clone https://github.com/Dogtiti/dsh-plugin-composer-history

Plugins → 添加 → 选择该目录。

典型用法

  1. 在输入框中发送一条消息,例如「写一个 Python 脚本」。
  2. 发送第二条消息,例如「再加一个日志功能」。
  3. 输入框清空后,按 ↑ 回溯到第二条消息「再加一个日志功能」。
  4. 继续按 ↑ 回溯到第一条消息「写一个 Python 脚本」。
  5. 按 ↓ 返回到第二条消息,继续编辑或删除部分内容。
  6. 手动输入新内容后,退出回溯状态。

配置

插件支持以下配置项(YAML 格式):

- insert:
    - id: composer-history
      name: 'dsh-plugin-composer-history'
      config:
        limit: 50
键 默认值 说明
enabled true 总开关;关闭后路由返回 503,客户端不接管按键
limit 200 保留的历史条数(取最近)
maxChars 2000 单条消息最大字符数(保留头尾)
cacheTtlMs 30000 相同会话事件序号下的缓存时间

行为说明

按键 行为
↑ 输入框为空时开始回溯,从最近一条向前;到达最旧一条后停止
↓ 向前返回;越过最新一条时恢复原草稿

不接管的情况:

条件 行为
输入框已有内容或附件 ↑ 保留给编辑器的光标与选区移动
焦点不在该输入框 不处理
带 Alt / Ctrl / Cmd / Shift 不处理
/ 或 @ 菜单已认领输入 方向键归菜单

实现原理

浏览器端通过 conversation.composer.dock 拦截阶段捕获 ↑ / ↓ 按键,维护一个索引状态机(index = -1 表示未回溯),调用 inputActions.setDraft(items[index]) 回填消息。Host 侧通过 POST /api/composer.history 接口,从会话日志中提取用户输入消息,按来源过滤后缓存 30 秒。

历史消息过滤规则:
- 计入历史:{ "kind": "user" }
- 排除:runtime-context、skill-catalog、time-context、user-approval

相邻重复消息会合并为一条。

兼容性

  • DSH ^0.2.1-0(engines.dsh)。
  • 依赖公开的 inputActions.setDraft()。

相关插件

插件 说明
dsh-plugin-composer-predict 预测下一条指令并显示为占位文字,Tab 采纳
dsh-plugin-composer-history 输入框中按 ↑ / ↓ 回填历史消息
dsh-plugin-subagent-bridge 让 Codex 通过本机 MCP 把 DSH 当 subagent 用
dsh-plugin-usage-panel 在模型选择器旁显示供应商套餐额度余量

适用场景与注意

该插件适合需要频繁调整多轮对话输入的开发者。使用前请确认 DSH 版本不低于 ^0.2.1-0,并检查插件源码与许可证。插件以当前 dsh 进程权限运行,请从可信来源安装。

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

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

Xiaoye