dsh-better-markdown:在 DSH 輸入區與會話裏補齊 Markdown 體驗

前言

DeepSeek Harness(DSH)默認會把助手的回覆按 Markdown 渲染,但輸入框仍是純文本編輯器,你已發送的用戶消息在會話時間線裏也往往以純文本顯示。如果你在 composer 裏習慣寫標題、列表、代碼塊或表格,就會出現「寫的時候全是符號、發出去還是原文、只有對面排版好看」的不對稱。

下面介紹的 dsh-better-markdown(維護者 ceasarXuu,GitHub:ceasarXuu/dsh-better-markdown)是運行在瀏覽器側的客戶端插件:在輸入區上方做實時渲染預覽,在編輯區對 Markdown 標記做原位高亮,並把已發送的用戶消息在時間線裏按 Markdown 展示——同時保證複製、會話日誌以及模型實際讀到的文本與原始字節一致。README 標明其爲第三方插件,並非 DeepSeek / DSH 官方組件。

這是什麼

  • 定位:面向 DSH 會話界面的 Markdown 增強(composer 預覽 + 原位語法高亮 + 用戶消息 Markdown 渲染)。
  • 分發:僅通過 GitHub 分發,未發佈到 npm;當前資料中的包版本爲 0.1.0,許可證 MIT。
  • 運行面:Web 與 Desktop 界面均可;邏輯主要在瀏覽器端,宿主側只暴露配置開關。

核心功能

輸入區上方的實時預覽

在 composer 中輸入 Markdown 時,渲染結果會即時出現在輸入區上方,走 DSH 自身的 Markdown 管線,資料中列舉的支持範圍包括:標題、粗體/斜體、行內代碼、列表與任務列表、引用、表格、帶語法高亮的圍欄代碼、鏈接、腳註與數學公式。

編輯區原位語法高亮

composer 本體不會把草稿改成 WYSIWYG;插件通過 CSS Custom Highlight API 對 #、**、反引號、列表標記等做降透明度或着色,便於邊寫邊看結構。草稿文本內容不被修改。

用戶消息在時間線中按 Markdown 顯示

每條由你編寫併發送的、含 Markdown 語法的消息,可在會話 transcript 中按 Markdown 渲染;複製操作、會話記錄以及傳給模型的文本仍與發送時字節一致。@ 提及等芯片仍使用宿主自帶渲染。

工具欄開關與快捷鍵

composer 工具欄提供 M↓ 按鈕,用於切換預覽;⌘⇧M / Ctrl+Shift+M 同樣有效。該選擇在瀏覽器內記住(localStorage 鍵 better-markdown.prefs.v1)。時間線是否渲染 Markdown 由插件配置項 transcript 等決定,而非僅由該按鈕控制。

環境要求

安裝前請覈對 README 與 package.json 中的約束:

  • DSH:>=0.2.1-rc.5 且 <0.3.0
  • Node:>=22
  • 界面:Web 或 Desktop

安裝與啓用

通過 GitHub 倉庫安裝

將 <profile> 替換爲你的 DSH profile 名:

dsh plugin --profile <profile> add github:ceasarXuu/dsh-better-markdown

DSH 應用內 Plugins → Add 可使用同一 spec。若需固定版本,可使用標籤,例如:

dsh plugin --profile <profile> add github:ceasarXuu/dsh-better-markdown#v0.1.0

在網絡更適合作物安裝時,可使用 Release 壓縮包(示例對應 v0.1.0):

dsh plugin --profile <profile> add https://github.com/ceasarXuu/dsh-better-markdown/releases/download/v0.1.0/ceasarxuu-dsh-better-markdown-0.1.0.tgz

配置項(cordis.patch.yml)

包安裝進 profile 後,可在 profiles/<profile>/cordis.patch.yml 中插入或調整插件行。資料中的示例:

# profiles/<profile>/cordis.patch.yml
- insert:
    - id: better-markdown
      name: '@ceasarxuu/dsh-better-markdown'
      config:
        enabled: true
        transcript: true
        composer: true
        syntax: true
        preview: true

頁面加載時,瀏覽器通過同源請求 GET /plugin/better-markdown/config 讀取上述布爾開關。

開關 默認值 作用
enabled true 總開關;關閉後恢復宿主默認行爲,插件仍保持已安裝
transcript true 會話中已發送用戶消息是否按 Markdown 渲染
composer true 是否啓用 composer 預覽及工具欄開關
syntax true 是否在 composer 內繪製 Markdown 語法高亮
preview true 草稿含 Markdown 時是否默認顯示預覽

將 enabled 設爲 false 可立即回到純文本體驗。

典型用法

  1. 按上一節命令把插件加入 profile,確認 enabled 與各子開關符合需求。
  2. 啓動或刷新 DSH Web/Desktop,在 composer 中輸入例如 ## 小節、列表或圍欄代碼塊,觀察輸入區上方預覽與編輯區高亮。
  3. 發送消息後,在時間線中查看用戶氣泡是否按 Markdown 顯示;用複製功能覈對文本是否與發送內容一致。
  4. 若僅需在本機瀏覽器臨時關閉預覽,點 M↓ 或使用 Ctrl+Shift+M(macOS 爲 ⌘⇧M);清除站點數據會恢復由 preview 等配置決定的默認行爲。

消息中的 Markdown 檢測與純文本書寫:若無 Markdown 語法,氣泡行爲與宿主默認一致;含語法時才進入渲染路徑。資料說明:代碼塊、表格與縮進塊外的單換行會按 CommonMark 硬換行處理,多行消息不會擠成一段。會話標題、側欄行等宿主生成的純文本區域 intentionally 不改動。

實現要點(便於排錯)

  • Transcript:在較低優先級註冊 conversation.user.text.node 的 text 鍵,用平臺 MarkdownText 渲染 run;複製/引用仍讀原文。
  • Preview:通過 conversation.input.dock 讀取 live draft 並渲染。
  • 高亮:conversation.input.right 提供開關,控制器刷新 CSS.highlights,只改繪製、不改佈局與 IME。
  • 渲染依賴平臺模塊表中的 @deepseek-ai/dsh-client-ui-primitives;模塊不可用時降級爲純文本,避免整頁失敗。

適用場景與注意

適合誰:經常在 DSH 裏用 Markdown 寫提示詞、任務清單或帶代碼塊的說明,又希望輸入與歷史消息視覺上與助手回覆一致的開發者。

限制(來自 README):

  • composer 爲宿主擁有的 Lexical 編輯器,插件只能裝飾,不能變成完整 WYSIWYG;中文輸入法、撤銷與光標行爲仍屬宿主。
  • 原位高亮依賴 CSS Custom Highlight API(Chromium 105+);不支持的瀏覽器會跳過該層,預覽與 transcript 仍可用。
  • 插槽契約針對 DSH 0.2.x;未來 conversation.user.text.node 或 conversation.input.dock 變更可能需要插件更新。

安全與信任:插件以當前 DSH 進程權限運行;安裝前請自行審閱 倉庫源碼 與 MIT 許可證。社區目錄 SkillHub 插件頁 爲獨立收錄站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態奉行「一切皆插件」,第三方包需自行評估後再裝入 profile。

結尾

dsh-better-markdown 用一條 GitHub 安裝 spec 把 composer 預覽、原位高亮與會話內用戶消息 Markdown 渲染接到一起,並與助手側 GFM 管線對齊。若你正在使用 DSH 0.2.x 且 Node ≥ 22,可按本文安裝命令啓用後,用工具欄 M↓ 與配置項 transcript / preview 微調行爲。

  • 目錄頁:https://www.skillhub.cn/plugins/ceasarXuu/dsh-better-markdown
  • GitHub:https://github.com/ceasarXuu/dsh-better-markdown
羽毛球分组比赛记分
小程序二维码

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

小夜