TinyMCE-for-Deepseek-Harness:在 DSH 側邊欄可視化編輯 HTML

前言

在 DSH 裏處理前端頁面時,開發者大概都遇到過這個場景:吐出一個 index.html,想微調一下文案或排版,卻被內置的純代碼編輯器擋着——沒有所見即所得,改幾行就要反覆預覽。這個插件解決的就是這件事:把 TinyMCE 6 的可視化編輯接進 DeepSeek Harness 的 Better Sidebar,讓 .html / .htm 文件直接在側邊欄裏打開成可編輯的畫布,編輯結果按原樣寫回磁盤。

下面介紹gustock 維護的 gustock/tinymce-for-deepseek-harness,分類是客戶端,當前星標 0,倉庫 README 自述 License 爲 MIT。

這是什麼

它不是獨立編輯器,而是註冊到 Better Sidebar 的一個文件 viewer。打開文件樹裏的 HTML(或智能體產出的文件鏈接),會走 TinyMCE 的 WYSIWYG 畫布,而不是默認的代碼面板。保存時通過 Better Sidebar 的寫接口落盤,帶衝突檢測;文檔的 doctype、<head>、scripts 與註釋按字節保留。

核心功能

下面這些能力都來自 README 原文。

  1. TinyMCE 6 WYSIWYG 編輯文檔 body,工具欄針對窄側邊欄做了裁剪:undo/redo、block/heading、行內格式、顏色、列表、對齊、鏈接、圖片、表格、媒體、源碼對話框。
  2. 提供來自 OSS 插件的 Preview(渲染後的頁面)與 Fullscreen 按鈕。
  3. Save 按鈕 + Ctrl/Cmd+S,帶 dirty 指示與保存狀態。
  4. 磁盤衝突檢測:若文件在打開後被外部改動,保存會被拒絕,轉而提示 Reload,而不是覆蓋。
  5. <head> 裏的 <style> 塊會在編輯畫布中重放,讓所見即所得接近真實頁面。
  6. 自帶英文與中文 UI 文案,可以在 Better Sidebar 的 Side card 設置頁禁用該 viewer。

安裝與啓用

README 給的安裝命令如下。先做 npm 安裝:

dsh plugin --profile web add dsh-tinymce-html-editor

從源碼安裝:

dsh plugin --profile web add github:gustock/TinyMCE-for-Deepseek-Harness

也可以從 DSH 界面(Settings → Plugins → Install bundle)或 plugin_manager 安裝:

// plugin_manager
{ action: 'install_bundle', target: 'dsh-tinymce-html-editor@1.0.0' }

安裝完會在 bundle 裏插入一行 Loader,名字爲 tinymce-html-editor。需要注意的是,Better Sidebar bundle 必須先裝好並啓用,viewer 纔會出現。若裝完在已打開的 GUI 裏沒立刻生效,刷新一次頁面即可——新加的客戶端模塊能被 live plugin graph 拾取,但安裝前已啓動的頁面可能仍在跑舊的模塊集。

卸載則用 plugin_manager 的 remove_bundle(參數 dsh-tinymce-html-editor),或走 Plugins 頁面。

典型用法

倉庫裏帶了一個安全的演示頁 sample.html。在 Better Sidebar 打開它,即可嘗試編輯、保存、重開,驗證整條鏈路:

  1. 從文件樹打開 sample.html,確認進入 TinyMCE 畫布而非代碼面板。
  2. 在畫布上改一段正文或圖片,觀察 dirty 指示與畫布渲染。
  3. 用 Save / Ctrl+ S 保存,驗證只替換 body 而前後文不動。
  4. 在外部改動文件後再次保存,確認出現 Reload 提示。

健康檢查可以單獨驗證插件是否就緒,clientReady 在頁面加載完客戶端並註冊 viewer 後翻爲 true:

{ "ok": true, "version": "1.0.0", "clientUrl": "plugins/??dsh-tinymce-html-editor/client.js&rev=…",
  "clientReady": true, "clientReadyAt": 1730000000000 }

工作原理

插件分兩半,Half 測試對應下面這張職責表。Host 端在 /tinymce-editor/vendor/tinymce 提供本地靜態資源,客戶端註冊 .html/.htm viewer 並掛載 TinyMCE。

Half File 職責
Host index.js 以 /tinymce-editor/vendor/tinymce 提供 vendor/tinymce/**(GET/HEAD、MIME、路徑穿越防護、ETag/304)。
Client client.js 註冊 .html/.htm viewer(priority 20、fsRead),掛載 TinyMCE,把編輯後的 body 拼回原文檔,通過 /sidebar/write 保存。

改動集中在 body 上。TinyMCE 6 移除了 fullpage 插件,因此這個 viewer 不會把整份文檔交給編輯器,而是在 <body> / </body> 處切分:

prefix (doctype + <html> + <head> + <body …>)   ← 不改動
body                                             ← 由 TinyMCE 編輯
suffix (</body> + </html>)                       ← 不改動

保存時,編輯器產出的 body HTML 被放回前後文之間,doctype、meta、head 裏的 script/style 與註釋都能原樣保留;body 內的 <script> / <style> 還會被 TinyMCE 的 protect 選項包一遍,保證往返不變。沒有 <body> 標籤的片段(fragments/partials)按整份編輯。

保存走的是側邊欄自己的 POST /sidebar/write,攜帶加載時的 mtime,因此工作區權限和衝突檢查都集中在一處;fs-conflict 響應會轉成 Reload 提示。

適用場景與注意

適合在 DSH 裏處理 HTML 產出物、並已在用 Better Sidebar 的團隊或個人。該插件以當前 dsh 進程的身份運行,安裝前應先檢查源碼與許可證(MIT),確認與環境兼容。

兼容性按 README 自述:DeepSeek Harness >= 0.2.1-rc.2,Better Sidebar >= 0.28.0(viewer 通過它的 ctx.betterSidebar 服務註冊),Node.js >= 20,平臺爲 macOS / Windows / Linux 的 DSH web 或桌面 UI,內嵌 TinyMCE 6.8.6(MIT)。README 標註已在 DSH 0.2.1-rc.2(desktop、macOS)搭配 Better Sidebar 0.28.0 驗證,包內單測與一個 headless 瀏覽器編輯/保存測試通過。

限制同樣來自 README,落地前要了解:

  1. 只編輯 body:<body> 之外的內容保留但不可改,改 head 請走代碼編輯器。
  2. 相對資源路徑:相對的圖片/鏈接 URL 保存時原樣保留,但畫布會以 Harness 頁面爲基準解析,編輯過程中相對圖片可能顯示爲壞圖;絕對 URL 與 data URL 正常。
  3. TinyMCE 會規範化標記:屬性引號、自閉合標籤、空白等,你碰過的區域會有變化,沒碰過的文檔原樣往返。
  4. 這一版強依賴 Better Sidebar:沒有它插件會安裝成功但不註冊 viewer;README 提到後續計劃提供無依賴的原生文檔預覽作爲兜底。
  5. TinyMCE 自身的 UI 是英文,插件提供的標籤纔會本地化。

結尾

這個插件的價值在於把 HTML 編輯收進 DSH 既有的 Better Sidebar,不引入新的源碼編輯器,也不改變工作區之外的權限面:運行時無網絡請求,TinyMCE 與皮膚、plugins 都 vendored 在包內,由插件自己的 Host 路由提供,沒有 CDN、沒有 API key、沒有 telemetry;只讀寫本地工作區的 .html/.htm,並提供路徑穿越防護。如果你本來就用 Better Sidebar,又需要在 DSH 裏直接改 HTML body,它是成本很低的一個選擇;要改 head 或做結構性的重寫,仍然需要回到代碼編輯器。

目錄頁:https://www.skillhub.cn/plugins/gustock/TinyMCE-for-Deepseek-Harness

GitHub:https://github.com/gustock/TinyMCE-for-Deepseek-Harness

羽毛球分组比赛记分
小程序二维码

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

小夜