前言¶
如果你用 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/cordis、dsh-session、dsh-llm、dsh-agent、dsh-commands,均标记为 optional。
适用场景与注意¶
适合两类使用者:
- 经常让模型输出含中文的 GFM 表格,希望下一轮模型读到的是对齐后的版本,而不是参差的原始文本;
- 想在长对话中清空模型可见历史、保留原始日志以便回溯。
使用前注意:
- 插件以当前 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