dsh-open-in-codebuddy:在 DSH Session 頭部一鍵用 CodeBuddy 打開工作區

前言

用 DSH 跑智能體時,一個反覆出現的動作是「在另一個客戶端裏打開當前工作區文件夾」。DSH 原生自帶 “Open In…” 控件,但它把應用寫死在編譯期的目錄表裏,第三方沒法往裏面加 CodeBuddy。如果你的日常主力是 CodeBuddy,每次都得手動切到文件管理器或終端敲啓動命令,再指定目錄。

下面介紹的插件就是解決這個問題的:gokucai 維護的 dsh-open-in-codebuddy,它在 Session 頭部加一個 CodeBuddy 按鈕,點擊後用當前 Session 的工作區目錄啓動 CodeBuddy。分類爲客戶端,星標 0,許可證 MIT。注意,社區目錄是獨立站點,與 DeepSeek / 幻方沒有官方從屬關係,這個插件也不是官方出品。

這是什麼

一句話:這是 DSH 的一個客戶端插件,由 gokucai 維護,在 Session 頭部 DSH 原生 “Open In…” 控件旁邊插入一個 </> CodeBuddy 按鈕,點擊即在當前 Session 的工作區目錄啓動 CodeBuddy。

它不是把 CodeBuddy 加進原生下拉菜單,而是在旁邊的獨立槽位裏放一個並排的按鈕,不改動 DSH 自帶控件。當前 workspace 目錄由 DSH 在調用時傳給後端,插件不做目錄猜測。

核心功能

安裝後的變化:

  1. Session 頭部出現 </> CodeBuddy 按鈕,與 DSH 自帶的 [ ⧉ | ▾ ] 控件並排,幾何尺寸一致。
  2. 點擊後以當前 Session 的 workspace 文件夾爲目標啓動 CodeBuddy。
  3. 啓動過程中按鈕顯示忙態;失敗時按鈕旁出現錯誤提示,六秒後自動消失。
  4. 檢測不到 CodeBuddy 時,按鈕完全不渲染,不會出現一個點了沒反應的控件。

各平臺的行爲:

平臺 啓動方式
macOS 優先調用 CodeBuddy 自帶 CLI Contents/Resources/app/bin/code -n <dir>,把目錄作爲工作區在新窗口打開;該 CLI 不存在時回退到 open -a
Windows / Linux 在 PATH 中查找 codebuddy、cbc 或 codebuddy-code,以該目錄爲工作目錄運行

macOS 上還會校驗 bundle id 必須是 com.tencent.codebuddycn。這樣做的目的是:安裝被改名時仍能正常啓動,同時在某個同名路徑上放着無關應用時不會被誤啓動。

安裝與啓用

從 GitHub 源安裝:

dsh plugin --profile <your-profile> add github:gokucai/dsh-open-in-codebuddy

或者用 npm 預構建包,不需要走構建審批:

dsh plugin --profile <your-profile> add dsh-open-in-codebuddy

<your-profile> 要替換成你實際使用的 profile 名稱。這個包聲明瞭 dsh.bundle,所以 DSH 安裝時會把它作爲一個 profile bundle layer 接納,不需要手工改 cordis.patch.yml 或 package.json。

安裝前先確認一件事:插件以當前 DSH 進程的權限運行,會讀取應用安裝位置並啓動一個本地進程;README 聲明它不做網絡請求、不讀 workspace 文件、不接觸憑據。但安裝第三方插件前仍應自己過一遍源碼和許可證,MIT 只約束使用條款,不保證代碼內容符合你的預期。

典型用法

裝完重啓 DSH 即可,沒有額外的配置步驟。

  1. CodeBuddy 裝在本機標準位置(macOS 的 /Applications 或 ~/Applications 下的 CodeBuddy CN.app 或 CodeBuddy.app,Windows / Linux 在 PATH 裏)。重啓 DSH 後,Session 頭部會出現按鈕,點它即以當前 workspace 啓動 CodeBuddy。
  2. 如果 CodeBuddy 不在標準位置,export 環境變量並重啓 DSH:
export CODEBUDDY_APP_PATH="/path/to/CodeBuddy CN.app"
  1. 不用了就卸載:
dsh plugin --profile <your-profile> remove dsh-open-in-codebuddy

適用場景與注意

適合這樣的使用者:主力編輯器是 CodeBuddy,同時用 DSH 跑會話,希望貼着當前會話上下文直接進 IDE,而不是先退出再手動打開目錄。也適合想研究「一個客戶端插件如何在 DSH slot 系統裏安全佔位」的人——這個倉庫的 README 講清了它爲什麼用獨立的 cell id,而不是複用原生控件的 cell id。

限制和注意點:

  • 按鈕依賴後端探測到本機裝了 CodeBuddy 纔會渲染,沒裝就是沒按鈕,屬預期行爲。
  • macOS 非標準路徑要用 CODEBUDDY_APP_PATH 指過去,否則探測不到。
  • 插件請求體上限 64 KiB,必須是 application/json,且傳入的路徑必須是真實存在的絕對目錄;參數按 argv 傳遞、detached、不走 shell,也不帶 stdio 管道。
  • 宿主側的兩條路由 GET /open-in-codebuddy/status 和 POST /open-in-codebuddy/open 都排在 DSH 的連接信任圍欄之後,未認證和跨域調用會在探測和啓動之前被拒。
  • 該插件以當前 dsh 進程權限運行,安裝前檢查源碼與許可證。

結尾

這個插件的價值在於它沒有試圖改 DSH 原生的下拉菜單,而是在旁邊的槽位裏放了一個並排按鈕,裝完即用,卸載後乾淨回退,原生控件不受影響。如果你的日常流程是 DSH 會話與 CodeBuddy 編輯交替進行,值得試一下。

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

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

小夜