dsh-file-mention:在 DSH 裏一鍵把文件和選區引用進輸入框

前言

在 DeepSeek Harness(DSH)裏跟模型討論代碼或文檔時,經常要把「某個文件」或「文件裏的一段」放進會話輸入框。手動打 @ 路徑、複製粘貼,再對齊相對工作區根目錄的寫法,步驟多也容易出錯。dsh-file-mention 是面向 DSH Web / Desktop 界面的客戶端插件:在右側文件樹和文件預覽裏提供菜單與浮動按鈕,把引用寫成與 @ 文件選擇器同一套語法的原子節點,點一下即可插入,而不是在輸入框裏堆一大段純文本。

這是什麼

維護者 Tinxyoo 在 GitHub 開源的 dsh-file-mention(tinxyoo/dsh-file-mention)屬於 DSH 客戶端(Client) 類插件。它不改動 CLI 會話,只在瀏覽器 / Desktop 殼層的右側目錄樹與預覽頁上擴展交互:引用整文件,或引用預覽裏選中的 Markdown / 代碼 / 純文本片段,結果都進入當前輸入框,並可像內置 @ 引用一樣整塊刪除、點擊預覽。

核心功能

下面兩件事是 README 裏明確寫明的能力,對應兩種常見操作路徑。

引用整個文件

  1. 打開右側文件樹(files 頁,或文件預覽旁的文件樹)。
  2. 對任意文件 右鍵 → 添加到輸入框。
  3. 輸入框會出現一個 文件 chip;點擊可打開預覽;光標在 chip 旁 退格一次 會整塊刪掉該引用。

插入的是輸入框的 原子節點,不是逐字路徑字符串。路徑相對工作區根目錄;含空格時語法與 @ 選擇器一致,例如 @"my file.md"。

引用文件中的選中內容

  1. 在右側文件預覽(Markdown、代碼或純文本)裏 選中一段內容。
  2. 選區上方出現浮動的 引用到輸入框,點擊。
  3. 輸入框插入一張 引用卡片,可緊接着寫問題。

引用卡片同樣是原子節點:從卡片末尾退格時,第一次可能先去掉自動補的分隔空格,第二次整張卡片消失。

暫未覆蓋的範圍

按官方說明,內容引用目前限於文本類預覽;PDF / Office 文本層尚未接入。純 CLI 會話看不到插件效果。

安裝與啓用

插件以 Client bundle 形式掛到可寫的 profile 上;前提是你運行的是 DSH 的 Web / Desktop 界面。Desktop 環境自帶 pnpm;安裝後 不要移動或刪除 源目錄——profile 裏是指向該目錄的 link: 引用,目錄被刪或改名會導致插件失效。

界面安裝(推薦)

  1. 將倉庫 克隆或下載 到本機固定位置(README 要求安裝後保持路徑不變)。
  2. 左側欄 → 插件(Plugins) → 添加插件。
  3. 填寫倉庫地址或本地絕對路徑,例如:
https://github.com/Tinxyoo/dsh-file-mention

或

/Users/you/Downloads/file-mention
  1. 點 安裝 → 完成後點 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。

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

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

小夜