前言¶
在 DeepSeek Harness(DSH)裏跟模型討論代碼或文檔時,經常要把「某個文件」或「文件裏的一段」放進會話輸入框。手動打 @ 路徑、複製粘貼,再對齊相對工作區根目錄的寫法,步驟多也容易出錯。dsh-file-mention 是面向 DSH Web / Desktop 界面的客戶端插件:在右側文件樹和文件預覽裏提供菜單與浮動按鈕,把引用寫成與 @ 文件選擇器同一套語法的原子節點,點一下即可插入,而不是在輸入框裏堆一大段純文本。
這是什麼¶
維護者 Tinxyoo 在 GitHub 開源的 dsh-file-mention(tinxyoo/dsh-file-mention)屬於 DSH 客戶端(Client) 類插件。它不改動 CLI 會話,只在瀏覽器 / Desktop 殼層的右側目錄樹與預覽頁上擴展交互:引用整文件,或引用預覽裏選中的 Markdown / 代碼 / 純文本片段,結果都進入當前輸入框,並可像內置 @ 引用一樣整塊刪除、點擊預覽。
核心功能¶
下面兩件事是 README 裏明確寫明的能力,對應兩種常見操作路徑。
引用整個文件¶
- 打開右側文件樹(
files頁,或文件預覽旁的文件樹)。 - 對任意文件 右鍵 → 添加到輸入框。
- 輸入框會出現一個 文件 chip;點擊可打開預覽;光標在 chip 旁 退格一次 會整塊刪掉該引用。
插入的是輸入框的 原子節點,不是逐字路徑字符串。路徑相對工作區根目錄;含空格時語法與 @ 選擇器一致,例如 @"my file.md"。
引用文件中的選中內容¶
- 在右側文件預覽(Markdown、代碼或純文本)裏 選中一段內容。
- 選區上方出現浮動的 引用到輸入框,點擊。
- 輸入框插入一張 引用卡片,可緊接着寫問題。
引用卡片同樣是原子節點:從卡片末尾退格時,第一次可能先去掉自動補的分隔空格,第二次整張卡片消失。
暫未覆蓋的範圍¶
按官方說明,內容引用目前限於文本類預覽;PDF / Office 文本層尚未接入。純 CLI 會話看不到插件效果。
安裝與啓用¶
插件以 Client bundle 形式掛到可寫的 profile 上;前提是你運行的是 DSH 的 Web / Desktop 界面。Desktop 環境自帶 pnpm;安裝後 不要移動或刪除 源目錄——profile 裏是指向該目錄的 link: 引用,目錄被刪或改名會導致插件失效。
界面安裝(推薦)¶
- 將倉庫 克隆或下載 到本機固定位置(README 要求安裝後保持路徑不變)。
- 左側欄 → 插件(Plugins) → 添加插件。
- 填寫倉庫地址或本地絕對路徑,例如:
https://github.com/Tinxyoo/dsh-file-mention
或
/Users/you/Downloads/file-mention
- 點 安裝 → 完成後點 Enable now(若提示需要重啓,則重啓 DSH)。
通過 agent 安裝¶
目錄就位後,可對 agent 說明「安裝 <絕對路徑> 這個插件」;由 agent 調用 plugin_manager install_bundle。具體措辭以你當前 DSH 版本自帶的 agent 能力爲準。
安裝前建議自行查閱倉庫源碼與 MIT 許可證;Client 插件在 當前 DSH 進程權限 下運行,與任何第三方擴展一樣,只安裝你信任的來源。
典型用法¶
讓模型閱讀某個配置文件¶
打開工作區右側文件樹,在目標文件上右鍵 添加到輸入框,chip 出現後輸入「請解釋這份配置裏每項的含義」之類的問題併發送。模型側收到的引用語法與手動 @ 文件一致。
讓模型只關注預覽裏的一段代碼¶
在預覽 pane 中選中函數或段落,點 引用到輸入框,在引用卡片後寫「這段有沒有邊界情況」等問題。適合 Markdown 文檔、源碼和純文本預覽;不要在 PDF 預覽裏期待同樣的選區按鈕。
技術要點與版本¶
package.json 聲明引擎範圍爲 dsh >=0.2.2-rc.1 <0.3.0-0,README 亦寫明面向 0.2.2-rc.1 一代 Web 組合開發。實現上 無構建步驟:client.js 直接作爲瀏覽器端模塊加載,無第三方運行時依賴。
| 能力 | 實現概要(來自 README) |
|---|---|
| 文件右鍵菜單 | ctx.contextMenus.register({ target: 'file' }),動作向會話作用域派發 slash/input-insert-reference |
| 文件 chip | ReferenceChipNode(source: reference、appearance: file、clipboardText: @path) |
| 選區監聽 | 預覽工具欄槽位 sidebar.right.tab.document.actions,限定 [data-textpreview-content] |
| 浮動按鈕 | shell.overlay,點擊調用 inputActions.insertQuote() |
宿主升級後若上述接縫變化,可能需要小改 client.js。開發時改完 client.js:客戶端 HMR 開啓則可自動重載,否則刷新頁面或重啓 DSH。調試可配合 cordis_inspect_query,查看 Slots.listSubTree 下 sidebar.right.tab.document.actions / shell.overlay 是否註冊成功。
適用場景與注意¶
適合誰: 長期在 DSH Web / Desktop 裏用右側文件樹和預覽寫 prompt、希望少打字、少複製粘貼的開發者。
應注意:
- 插件分類爲客戶端,純 CLI 無 UI,無法使用本功能。
- 本地
link:安裝依賴目錄持久存在;換機或清目錄需重新安裝。 - 內容引用依賴預覽 DOM 標記
[data-textpreview-content],宿主大版本改版可能導致浮層失效,需關注倉庫 Issue 或自行改client.js。 - 社區目錄 SkillHub 插件頁 與 GitHub 爲獨立信息源,與 DeepSeek / 幻方無官方商店從屬關係;安裝與審閱源碼仍應以倉庫爲準。
卸載:在 插件 頁關閉該 bundle 或移除;對該 profile 下所有會話立即失效。
結尾¶
dsh-file-mention 把「文件樹右鍵」和「預覽選區」兩條路徑接到 DSH 輸入框的原子引用上,與現有 @ 語法對齊,改動面集中在 client.js,無額外構建。需要功能說明與示意圖時,可看維護者提供的 在線介紹頁;源碼、問題反饋與安裝文件見 GitHub:Tinxyoo/dsh-file-mention。