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
羽毛球分组比赛记分
小程序二维码

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

小夜