前言¶
用 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 在調用時傳給後端,插件不做目錄猜測。
核心功能¶
安裝後的變化:
- Session 頭部出現
</> CodeBuddy按鈕,與 DSH 自帶的[ ⧉ | ▾ ]控件並排,幾何尺寸一致。 - 點擊後以當前 Session 的 workspace 文件夾爲目標啓動 CodeBuddy。
- 啓動過程中按鈕顯示忙態;失敗時按鈕旁出現錯誤提示,六秒後自動消失。
- 檢測不到 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 即可,沒有額外的配置步驟。
- CodeBuddy 裝在本機標準位置(macOS 的
/Applications或~/Applications下的CodeBuddy CN.app或CodeBuddy.app,Windows / Linux 在PATH裏)。重啓 DSH 後,Session 頭部會出現按鈕,點它即以當前 workspace 啓動 CodeBuddy。 - 如果 CodeBuddy 不在標準位置,export 環境變量並重啓 DSH:
export CODEBUDDY_APP_PATH="/path/to/CodeBuddy CN.app"
- 不用了就卸載:
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