前言¶
如果你用 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