dsh-open-in-app-base:開放「Open In...」按鈕組底座

前言

在 DeepSeek Harness(DSH)裏處理會話時,經常需要把當前工作區目錄交給本機編輯器或 IDE 打開。DSH 原生會話頭工具欄帶有 Open In… 按鈕,但內置軟件清單在編譯期固定,客戶端還有白名單過濾,第三方軟件無法接入,官方也未開放應用級擴展點。若你希望在 Cursor、VS Code 等工具裏一鍵打開當前會話目錄,只能依賴社區方案。

下面介紹維護者 lovezi0 發佈的 dsh-open-in-app-base:它不修改宿主配置,在同位置提供一套可擴展的按鈕組,並把「用哪個軟件打開」做成註冊契約,供同類下游插件補充目標軟件。

這是什麼

dsh-open-in-app-base 是 DSH 第三方插件,分類爲工作流。它在會話(Session)頭部工具欄提供一個 Open In… 按鈕組底座:底座負責按鈕外觀與菜單渲染;具體軟件的探測、路由與啓動由下游插件實現。倉庫:GitHub,目錄頁:SkillHub。當前 npm 包版本爲 0.2.0,許可證 MIT;README 標註兼容 DeepSeek Harness 0.2.0-rc.1,並支持 Desktop。

核心功能

以下能力均來自項目 README 與 package 說明。

開放插槽

貢獻方通過註冊 id、label、route(可選 icon、order)即可加入菜單,無需改底座源碼。

外觀與原生對齊

按鈕規格(24px 高、11px 字號、0.5px 描邊、圓角與 hover)對齊原生 split 按鈕;貢獻方只提供圖標路徑數據,尺寸與結構由底座統一渲染。

零宿主面與安全邊界

底座自身不註冊本機路由、不啓動進程;目標軟件的探測與啓動留在各貢獻方插件內。

狀態託管

宿主半邊提供跨 profile 共享的設置存儲(服務名 openInAppState),下游可讀寫自定義安裝路徑等配置,無需自建落盤。

隱身與可用性

沒有任何已註冊目標、全部不可用、或當前會話尚無工作區時,按鈕整體不渲染。掛載後併發探測各目標;未安裝或探測失敗的不出現在菜單裏。

雙端一致

web profile 與 Desktop(Electron)加載同一份瀏覽器產物。

安裝與啓用

本插件是「Open In…」下游插件的共同依賴:只裝下游插件時菜單不會出現,需與具體目標軟件插件一併安裝。下游插件的安裝說明裏也應寫明依賴關係(詳見倉庫 DEVELOPMENT.md)。

web profile(命令行):

dsh plugin --profile web add dsh-open-in-app-base

Desktop: 在應用內 Plugins 頁安裝,包名 dsh-open-in-app-base。

安裝前請自行查看倉庫源碼與 MIT 許可證;插件以當前 DSH 進程權限運行,涉及本機路徑與外部程序啓動時應注意環境安全。

典型用法

按鈕出現在會話頭部工具欄,位於原生 Open In… 的右側。

  1. 點擊按鈕圖標或右側下拉箭頭,展開菜單;選中某個軟件後,纔會向該目標的路由發起請求,由下游插件打開當前會話的工作區目錄。
  2. 下游裝一個或多個目標時,交互一致。
  3. 本次會話內選過的軟件會被記住,並在菜單中打勾。
  4. 目標未安裝或探測失敗時不顯示;全部不可用時整個按鈕不渲染。

擴展開發

若要編寫指向某軟件的 Open In 下游插件,註冊契約、客戶端與宿主最小實現、硬要求及安裝說明模板見倉庫 DEVELOPMENT.md。

工作原理簡述:插件分宿主半邊與瀏覽器半邊。瀏覽器半邊在會話頭槽位註冊按鈕組,以 cordis 服務 openInAppTargets 暴露註冊表;點擊後請求各目標自有路由。宿主半邊提供 openInAppState 託管共享設置。

適用場景與注意

適合: 已在用 DSH 做智能體或會話開發、需要可擴展的「用外部 IDE/編輯器打開工作區」工作流,並願意同時安裝底座與具體目標插件(例如社區裏的 Cursor、VS Code 等 Open In 插件)的開發者。

注意:

  • 不能替代原生 Open In 白名單內的行爲;底座是並行提供的擴展位,依賴下游註冊。
  • 社區插件目錄(如 SkillHub)爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;安裝與信任邊界需自行判斷。
  • Node 構建要求 >=20(見 package.json),與普通用戶安裝 npm 包無直接關係,擴展開發時需留意。

結尾

dsh-open-in-app-base 解決的是 DSH 原生 Open In 無法由第三方擴展的問題:用統一按鈕組與註冊契約,讓下游插件只關心「自己的軟件怎麼探測和打開」。若你的工作流裏需要多目標、可配置的「在外部應用中打開會話目錄」,先裝底座,再按 DEVELOPMENT.md 或各下游插件說明補齊目標即可。

  • 目錄頁:https://www.skillhub.cn/plugins/lovezi0/dsh-open-in-app-base
  • GitHub:https://github.com/lovezi0/dsh-open-in-app-base
  • npm:https://www.npmjs.com/package/dsh-open-in-app-base
羽毛球分组比赛记分
小程序二维码

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

小夜