dsh-md-table-formatter:回合结束后自动对齐助手回复里的 Markdown 表格

前言

如果你用 DeepSeek Harness 跑过稍长的对话,多半见过助手输出的 GFM 表格:列宽参差不齐,混排中文之后尤其难读,而模型下一轮读到的也是这份没对齐的原始文本。手工整理既费时,也不可复现。另一个常见需求是想清空模型可见的对话记录、从头继续,但又不想丢掉已经落盘的原始日志。

DSH 的理念是一切皆插件,这类对会话流的修补正适合做成插件。下面介绍的 dsh-md-table-formatter 就同时覆盖这两个问题。

这是什么

dsh-md-table-formatter 是 Hyna-hla 维护的 DeepSeek Harness 插件,当前版本 1.0.0,MIT 许可证。一句话定位:回合结束后自动对齐助手回复中的 Markdown 表格(surface-replace,可安全回放),并提供清空模型可见对话记录的 /clear-history 命令。

两个功能都建立在会话 surface-replace 机制上,与内置 compaction 是同一套,可以安全回放。移植思路来自 @franlol/opencode-md-table-formatter:把 OpenCode 的 experimental.text.complete 钩子思路,改为 DSH 的 turn/end + surface-replace 实现。

核心功能

自动对齐 Markdown 表格

每个回合结束后,插件把助手回复里未对齐的 GFM 表格在「模型可见表面」上替换为对齐版本,原始输出完整保留在仅追加的会话日志里。具体行为:

  • 支持 :---(左对齐)、---:(右对齐)、:---:(居中)三种对齐标记;
  • 宽度按 Unicode 码点计算,CJK / 全角字符按 2 列计算;
  • 代码围栏(``` 内)里的表格不动,连续两张表不会互相吞行。

/clear-history 命令

把模型可见的对话记录整体替换为一条占位消息。原始日志保留,对话可以继续;回合进行中调用会拒绝执行。

安装与启用

先在仓库根目录构建并跑测试:

pnpm install
pnpm build
pnpm test

测试通过后,执行安装脚本,把插件装进 profile(拷贝 node_modules 并注册 cordis.patch.yml):

.\scripts\install-to-profile.ps1 -Name dsh-md-table-formatter -SourceDir .

经过上面的步骤后,重启 DeepSeek Harness 使插件生效。

配置

插件通过 cordis.patch.yml 注册,配置项可覆写:

- insert:
    - id: dsh-md-table-formatter
      name: dsh-md-table-formatter
      config:
        autoFormat: true      # 是否回合后自动格式化
        minColumns: 2         # 少于该列数的表格不动
        clearMarker: '(对话记录已清除)'  # /clear-history 的占位文本

三项的含义:autoFormat 控制是否在每个回合结束后自动格式化表格;minColumns 设定处理表格的最小列数,少于该列数的表格不处理;clearMarker/clear-history 替换进去的占位文本。

实现要点

对想做同类插件的开发者,这个仓库的机制值得参考。

替换事件的格式与 dsh-compaction-tool-result-pruner 完全同款:

assistant/message + { surfaceOp: { op: 'replace', start: seq, end: seq }, sourceEventSeqs: [seq] }

替换副本保留原消息 id(freezeMessage),usage 只留在原始事件上,避免重复计数。

格式化 pass 由 session/event 观察者里的 turn/end 触发,用 queueMicrotask 逃出刚提交 append 的接纳边界之后,再写替换。

包结构上,package.json 声明 type: module,主入口为 lib/index.js,并导出 ./format 子路径。依赖只有 @deepseek-ai/schemastery ^3.18.1;peerDependencies 为 @deepseek-ai/cordisdsh-sessiondsh-llmdsh-agentdsh-commands,均标记为 optional。

适用场景与注意

适合两类使用者:

  1. 经常让模型输出含中文的 GFM 表格,希望下一轮模型读到的是对齐后的版本,而不是参差的原始文本;
  2. 想在长对话中清空模型可见历史、保留原始日志以便回溯。

使用前注意:

  • 插件以当前 dsh 进程的权限运行,安装第三方插件前应检查源码与许可证,本插件为 MIT;
  • minColumns 默认为 2,列数不足的表格不会被处理;
  • 安装到 profile 后需要重启 DeepSeek Harness 才能生效。

结尾

dsh-md-table-formatter 用与内置 compaction 同一套 surface-replace 机制,把「表格对齐」和「清空模型可见历史」两件小事做成了可回放、不破坏原始日志的自动化步骤。对经常处理表格输出的 DSH 用户来说,装上即可减少一类手工整理。

  • 社区插件目录页:https://www.skillhub.cn/plugins/Hyna-hla/dsh-md-table-formatter
  • GitHub 仓库:https://github.com/Hyna-hla/dsh-md-table-formatter
羽毛球分组比赛记分
小程序二维码

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

小夜