在 DSH(DeepSeek Harness)的開發或協作場景中,會話消息裏的文件鏈接通常由系統默認程序處理,或以獨立浮層形式打開。這種方式會打斷當前會話的上下文,且佈局不統一。dsh-md-reader 插件接管了這一行爲,在 DSH 詳情欄內以真三欄佈局直接渲染文檔,提供統一的閱讀環境。
插件介紹¶
這是由 wjx-ai 開發的客戶端插件。它利用 DSH 的雙半身架構(宿主半身提供只讀 HTTP 路由,瀏覽器半身提供渲染),攔截會話中的 Markdown / 圖片鏈接,在瀏覽器右側詳情欄展開閱讀面板。插件無需構建鏈,安裝後通過 cordis.patch.yml 自動合併配置。
核心功能¶
- 真三欄佈局:非遮罩浮層,而是驅動 DSH 佈局系統展開右側詳情柵格軌道。側邊欄固定寬,會話區自動收窄,文檔區自適應。
- 多格式支持:支持
.md,.markdown,.mdown,.mkd,.txt文本,以及常見圖片格式。 - 目錄與導航:正文自動掃描 h1–h6 生成目錄 TOC;點擊可平滑滾動定位;正文內的內聯鏈接若匹配同級文件或相對路徑,可繼續在面板內打開。
- 編輯器功能:支持
⧉複製原文、A-/A+字號縮放(70%–150%,持久化)、⏱自動跟隨磁盤變更(可見時每 3 秒探測 mtime)、⟳手動重載、↗系統打開。 - 主題與兼容:明暗主題跟隨;保留原生出口;關閉面板後右下角保留 📖 懸浮入口,可重開最近文檔。
安裝與啓用¶
前置要求:
1. 已安裝 DSH 且版本 >= 0.1.0-rc.6。
2. 已啓動過 DSH。
3. 系統環境變量 PATH 中包含 pnpm。
安裝命令:
dsh plugin --profile web add github:wjx-ai/dsh-md-reader
安裝後,包內的 cordis.patch.yml 會作爲 Profile Bundle patch 自動合併進 profile 層棧。安裝完成後刷新瀏覽器即可生效。
使用方法¶
- 打開文檔:點擊會話中任意
.md/.markdown/.mdown/.mkd/.txt或圖片文件鏈接,右側展開三欄閱讀面板。 - 快捷鍵操作:
☰:展開/收起目錄⧉:複製原文A-/A+:縮小 / 放大字號⏱:切換自動跟隨磁盤變更⟳:手動重載文檔↗:用系統默認程序打開Esc/×:關閉面板- 關閉後:面板關閉後,右下角保留 📖 懸浮入口,點擊可重開最近文檔。
宿主半身 API¶
插件宿主半身提供只讀 HTTP 路由,供瀏覽器半身調用:
GET /api/md-reader/file?path=<絕對或相對路徑>&base=<可選解析基目錄>[&meta=1]
GET /api/md-reader/list?dir=<目錄>
- 參數說明:
path:文件路徑,支持絕對路徑或相對於base的相對路徑。base:可選,解析相對路徑的基目錄。meta=1:僅返回元信息,用於自動跟隨輪詢。- 返回內容:
- 文本文件:
{ ok, kind:'text', path, dir, name, size, mtime, content } - 圖片:
{ ok, kind:'image', mime, data }(Base64 內聯) - 列表:返回目錄文件列表
- 安全限制:
- 擴展名白名單:
.md,.markdown,.mdown,.mkd,.txt及常見圖片。 - 大小限制:文本 2 MiB,圖片 8 MiB,列表 500 條。
- 路徑限制:
webServer綁定非迴環地址時,絕對路徑必須落在已註冊工作區根內。 - 認證:未認證請求返回 401。
注意事項¶
- 插件依賴 DSH >= 0.1.0-rc.6,且安裝命令需 PATH 中有
pnpm。 cordis.patch.yml會自動合併,無需手動編輯配置。- 插件全程只讀,無寫入端點,未認證請求會被攔截。
- 在空白會話頁下,面板可能會退化爲浮層樣式;正常點擊文件鏈接時,三欄佈局總是成立。
- 雙半身插件要求宿主半身提供只讀 HTTP 路由,瀏覽器半身攔截點擊並渲染。