前言¶
DeepSeek Harness(DSH)的 Composer 是智能體對話裏寫提示詞、插引用、發指令的主入口。默認界面裏 GenUI 小按鈕、添加文件 與 添加文件夾 分兩條路、輸入框只有 Lexical 視圖、用戶消息按純文本顯示;側欄會話行的置頂與開窗、子智能體會話樹等,也與不少人日常習慣不完全一致。
@jason25417/dsh-composer-tweaks 把上述能力收進一個客戶端 bundle:從 0.2.0 起合併了原 dsh-markdown-composer 的全部功能,在不動宿主核心組件的前提下,用槽位與命令擴展輸入框和側欄。下面介紹它做什麼、怎麼裝、怎麼用,以及 macOS 混選文件/文件夾爲何必須依賴 Host 半。
這是什麼¶
- 名稱:
@jason25417/dsh-composer-tweaks(GitHub:Jason25417/dsh-composer-tweaks) - 維護者:Jason25417(package.json 作者爲 Jason Tu)
- 分類:客戶端(
dsh.client.platform: web) - 許可:MIT
- 當前版本(資料中明確):0.2.3;要求
dsh版本>=0.2.1-rc.0 <0.3.0,Node>=20 - 一句話:Composer 與側欄行的小調整——混選文件/文件夾、GenUI 提示詞開關、Markdown 源碼/視圖與用戶消息渲染、側欄開窗與子會話樹等。
若你本機仍單獨安裝着 dsh-markdown-composer,應與 README 遷移說明一致:不要兩個 bundle 並存,否則會重複註冊同一批槽位。
核心功能¶
輸入框與加號菜單¶
- 隱藏 GenUI 輸入框小按鈕(選擇器
button[aria-label="GenUI prompt"])。 - GenUI 提示詞開關進左下角加號菜單:command
genui-prompt,菜單項實時顯示開/關。 - 「添加文件」與「添加文件夾」合併爲「文件或文件夾」:command
files-and-folders;在 macOS 上由 Host 調原生 NSOpenPanel,可同時多選文件和目錄,插入語義與桌面端拖拽一致(@引用 chip,文件夾appearance=folder)。 - 輸入框下方「源碼 / 視圖」開關(
conversation.composer.dock,order 2):
- 源碼模式:輸入框上方等寬 textarea 寫 Markdown,實時寫回宿主草稿;⌘/Ctrl+Enter 發送。
- 模式記在 localStorage,key 仍爲dsh-markdown-composer.mode(老用戶設置不丟)。 - 聊天記錄裏用戶消息按 Markdown 渲染(
conversation.user.text.node的text鍵,priority 0);助手消息仍由宿主渲染。
視圖模式是宿主原生 Lexical 輸入框(所見即所輸);源碼模式是等寬麪板。宿主 composer 沒有瀏覽器側 Markdown 富文本層,因此沒有輸入框內的所見即所得——編譯後的 Markdown 體現在發送後的用戶消息展示上。
側欄會話行(0.2.1 起及後續)¶
- 「在新窗口打開」:替換行內原「置頂」按鈕;調用
@local/dsh-popout-window的POST /popout/open;置頂仍在右鍵菜單。 - Agent 創建標記(0.2.2):非手開會話左側顯示小機器人圖標;數據來自
~/.dsh/session-origin.ndjson,Host 提供GET /api/dsh-session-origin/list。 - 子會話樹(0.2.3):有子智能體的父會話左側顯示 ▸,浮層按
subagentCatalog展開,點節點在對話區打開子會話(不替換官方側欄組件)。
合併後的菜單與兼容¶
- 加號 →「指令」區保留:GenUI 提示詞(開/關)、文件或文件夾。
- 本插件將 composer 的
filePicker判爲不可用以隱藏宿主內置「文件」行;若宿主改實現導致隱藏失敗,最壞情況是新舊兩個入口並存,能力不丟。 - 0.2.0 合併說明:
inject爲['slots', 'locale', 'commandUi'];locale 爲扁平點號鍵;解析器唯一源在markdown.js。
安裝與啓用¶
市場或 SkillHub 目錄頁 安裝後,須完全退出並重開一次 DSH Desktop(Host 半僅在啓動時掛載;Client 半可熱加載)。未重開就點「文件或文件夾」會提示宿主半未加載。
CLI 安裝(README 原文):
dsh plugin --profile <profile> add @jason25417/dsh-composer-tweaks
也可通過 npm、release tarball 或源碼 link 安裝。卸載示例見 README:
# plugin_manager remove_bundle target=@local/dsh-composer-tweaks
典型用法¶
一次選多個文件和文件夾(macOS)¶
- 在 Composer 左下角加號菜單選 文件或文件夾(或觸發 command
files-and-folders)。 - 宿主彈出 NSOpenPanel,多選文件與文件夾後確認。
- 每一項按拖拽同款規則插入輸入框:
@相對路徑或帶尾斜槓的文件夾 chip;路徑含空白時用@"…"包裹。 - 插件在
shell.overlay顯示幀級 Toast:已插入 N 項 / 已取消選擇 / 失敗原因;取消時不插入。
非 macOS 上 Host 路由返回 501,error.code 爲 unsupported-platform,不假裝成功。
Markdown 源碼模式¶
- 在輸入框下方 dock 切換到 源碼。
- 從宿主草稿灌入 textarea;編輯時
inputActions.setDraft(value)實時同步。 - 用宿主發送鍵或 ⌘/Ctrl+Enter(
inputActions.submit())發送。 - 切回 視圖 時,宿主
setDraft經resolveDraftInput把@路徑、/命令解析回 chip,引用一般不丟。
側欄¶
- 點 在新窗口打開 將當前會話 popout。
- 帶機器人圖標的行表示由
dsh-external-bridge/dsh-session-bridge創建;有 ▸ 的父會話可展開子智能體樹。
Host 半接口(混選實現)¶
瀏覽器無法一次混選文件與目錄,故 macOS 上由 Host 執行與 DSH 自帶目錄選擇器同路的 osascript + NSOpenPanel:
- 路由:
POST /api/dsh-composer/pick(connection.fetch,同源 GUI) - 成功:
{ ok: true, paths: [{ path, isDirectory }] };取消:paths: []
適用場景與注意¶
適合誰:長期在 DSH Desktop(尤其 macOS)裏寫帶 @ 引用的提示詞、希望輸入框更乾淨、需要 Markdown 源碼編輯與用戶消息可讀渲染,並依賴側欄開窗與子會話導航的開發者。
運行與信任:插件在當前 DSH 進程權限下執行;安裝前應查看 GitHub 源碼 與 MIT 許可證。SkillHub 等社區目錄爲獨立生態站點,與 DeepSeek / 幻方無官方從屬關係。
已知邊界(README):
- 混選僅 macOS;Windows/Linux 明確 501。
- 用戶消息 Markdown 爲子集(標題、圍欄代碼、引用、單層列表等);表格、嵌套列表按原文顯示;HTML 按文本防 XSS。
- GenUI 隱藏依賴固定
aria-label="GenUI prompt";源碼模式隱藏原生輸入區依賴[data-input-scroll]與html[data-dsh-markdown-source],宿主改 DOM 時可能雙輸入區同顯,但不壞草稿數據。 - 插入的是路徑引用,不是把文件內容上傳到消息體(與普通文件拖拽一致;圖片上傳預覽不在此混選器範圍)。
維護者自測:node --test tests/*.test.mjs,README 記載 36 項通過。
結尾¶
dsh-composer-tweaks 把 Composer 微調、Markdown 輸入/展示和側欄會話行增強收成單一 bundle,減少多插件槽位衝突;macOS 上「文件或文件夾」一條入口覆蓋原先分立的文件與目錄選擇。安裝後記得完全重啓 Desktop,Host 路由纔會生效。
- 目錄頁:https://www.skillhub.cn/plugins/Jason25417/dsh-composer-tweaks
- 源碼與說明:https://github.com/Jason25417/dsh-composer-tweaks