前言¶
在 DeepSeek Harness Desktop(DSH)裏,助手側消息走 Markdown 渲染,用戶自己發出的內容則走 UserText:純文本、white-space: pre-wrap。你在對話裏粘貼一段帶圍欄的代碼時,反引號往往原樣顯示,沒有邊框、沒有語言標籤、也沒有高亮。若你經常在用戶消息裏貼配置片段、命令或腳本,這種體驗會和助手回覆裏的代碼塊形成明顯反差。下面介紹社區插件 dsh-user-code-block(維護者 VictorKozachek,GitHub VictorKozachek/dsh-user-code-block),它只針對用戶消息中的圍欄塊做例外處理,其餘鏈接、@ 提及等仍按內置 UserText 行爲工作。
這是什麼¶
dsh-user-code-block 是掛載在 DSH 客戶端(ui-chat)上的插件:識別用戶消息裏的 fenced code block,爲其加上邊框、語言橫幅、語法高亮和複製按鈕;消息其餘部分保持純文本。運行時無第三方依賴,無需構建步驟。npm 包當前版本爲 0.4.0(MIT 許可證)。在 README 中,已在 DeepSeek Harness Desktop 0.2.1-rc.3 上驗證;0.1.x 同樣暴露文檔中的擴展點。任何掛載 ui-chat 的 DSH profile(desktop 或 web)均可使用。
核心功能¶
圍欄識別規則¶
插件同步匹配用戶文本,規則包括:
- 三個及以上反引號或波浪線構成的圍欄;
- 行首最多三個空格縮進(四個空格不再視爲圍欄);
- info string 的第一個詞作爲語言標識,例如
```python title=x識別爲python; - 四反引號圍欄可正確包裹內含三反引號的內容;
- 未閉合的圍欄不當作代碼塊,避免漏寫結束符時誤把後續文字染成代碼。
單行反引號 `inline code` 不處理。
語法高亮¶
顏色來自 DSH 主題已發佈的 --shiki-token-* CSS 變量(@deepseek-ai/dsh-client-ui-theme 中的 shiki.css)。亮/暗主題通過 body[data-ds-dark-theme] 切換,插件無需自行探測主題。
高亮由內置小型 lexer 完成,不引入 shiki,也不 import DSH 禁止插件使用的 client primitives。README 列出的語言包括 Python、JavaScript/TypeScript、JSON、Bash、Go、Rust、Java、HTML/XML、SQL、CSS/SCSS 等;各語言着色的 token 類型(關鍵字、字符串、註釋、數字等)以倉庫表格爲準。
單色模式:圍欄語言爲 text、txt、plain、output、log、console、terminal、diff、md 時保留邊框與語言條,但不着色,適合終端輸出與日誌。其他未內置 lexer 的語言同樣以等寬無高亮文本展示,避免錯誤配色。
複製按鈕¶
代碼塊標題欄右側提供 Copy:寫入剪貼板的是原始源碼,不含高亮 markup。點擊後標籤約 1.5 秒恢復。若瀏覽器未授予 navigator.clipboard,按鈕不渲染。
擴展點¶
插件通過 ui-chat 文檔「Sent user text」所述機制接入:
ctx.uiConversation.userText.register({ id, order, match(text, from) })同步匹配;conversation.user.text.node槽位渲染,key與 matcher 的id一致。
宿主側 lib/index.js 導出空的 apply(),僅用於在 profile 的 cordis 樹中顯示插件條目。
安裝與啓用¶
推薦從 npm 安裝到指定 profile(以 desktop 爲例):
dsh plugin --profile desktop add dsh-user-code-block
插件管理器會安裝包、寫入 profile 的 package.json 與 dsh.profile.bundles,下次啓動 DSH 後加載;僅刷新頁面不會重建客戶端模塊圖。
本地 checkout 也可用 CLI 指向路徑:
dsh plugin --profile desktop add /path/to/dsh-user-code-block
README 還說明從源碼運行 ./install.sh、手動編輯 package.json 與 node_modules 符號鏈接等方式;web profile 可通過 DSH_PROFILE_DIR="$HOME/.dsh/profiles/web" ./install.sh 切換目錄。卸載可用倉庫中的 ./uninstall.sh,或從 dsh.profile.bundles 移除包名並刪除對應 symlink。
典型用法¶
安裝並重啓 DSH 後,在用戶消息中發送帶圍欄的塊,例如:
```python
print("hi")
```
預期效果:該段以帶框、帶 python 語言條的高亮塊顯示,同一條消息裏的普通文字仍爲純文本。對 ```log 或 ```output 類圍欄,應看到邊框與標籤但無語法色。
驗證步驟與 README「Verification」一致:發一條含 fenced block 的消息,檢查框線、語言橫幅及非代碼部分是否仍爲 plaintext。
適用場景與注意¶
適合:經常在用戶消息裏粘貼多行代碼、配置或命令、又希望視覺與助手 Markdown 代碼塊一致的 DSH 桌面或 web 使用者。
注意:
- 插件在 客戶端 運行,分類爲社區目錄中的「客戶端」插件;DSH 生態強調「一切皆插件」,SkillHub 目錄頁 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。
- 安裝前建議瀏覽 GitHub 源碼與 MIT 許可證;插件隨當前 DSH 進程與用戶 profile 加載,安裝來源應可審計。
- peer 依賴
@deepseek-ai/cordis^4.0.2;開發與測試需 Node.js 20+。
結尾¶
dsh-user-code-block 用單一例外補齊用戶消息裏圍欄代碼塊的展示缺口:高亮、複製、日誌類單色模式,且無運行時依賴。若你需要上述能力,可用官方推薦的 dsh plugin --profile desktop add dsh-user-code-block 安裝後重啓驗證。