在 DeepSeek Harness (DSH) 的開發實踐中,插件需要向用戶展示自身的連接狀態或功能入口。如果每個插件都獨立在設置面板中開闢區域,會導致界面雜亂且難以維護。dsh-authorize-app 插件提供了一個標準化的解決方案,它將“連接應用”作爲一個統一的設置區塊,供其他 DSH 插件通過插槽註冊自身。
插件定位¶
dsh-authorize-app 是一個由 extension-hunter 維護的 DSH 插件。它的核心作用是在設置面板中新增“Connected Apps / 連接應用”區塊(順序爲 25),作爲其他 DSH 插件自我展示的中央平臺。
核心功能¶
- 統一設置區塊:在設置面板中增加第 5 個入口“連接應用”,位置緊隨 General、Models、Plugins 和 Agent Presets 之後。
- 插槽聲明:聲明子插槽
settings.connected-apps.item,任何 DSH 插件都可以註冊到該插槽。 - 雙語空狀態:默認渲染一個雙語空狀態提示,顯示“No connectable apps yet”和“暫無可連接的應用”。
- 佔位工具註冊:註冊了一個主機端的佔位工具
dsh_authorize_app。
安裝與啓用¶
使用官方命令安裝該插件:
dsh plugin --profile web add dsh-authorize-app
安裝完成後,重啓 profile (dsh web) 並刷新頁面。在設置頁面中即可找到“連接應用”選項。
典型用法¶
其他插件若希望在該列表中顯示,需要在客戶端通過注入插槽的方式註冊卡片。以下是註冊示例:
ctx.slots.inject('settings.connected-apps.item', () =>
ctx.slots.register({
name: 'settings.connected-apps.item',
id: 'your-app-id', // 唯一 ID
order: 0, // 排序順序(升序)
inject: () => ({
// 卡片所需數據:名稱、描述、連接狀態等
}),
}, YourAppCard), // React 組件
)
最小的卡片渲染示例如下:
function YourAppCard(props) {
return React.createElement('div', { style: { padding: '12px 0' } },
'My App', ' — ', props.t ? props.t('status') : 'connected')
}
適用場景與注意¶
該插件適合需要向用戶展示連接狀態或功能入口的其他 DSH 插件使用。
開發者在開發相關插件時,需注意以下幾點:
- 環境要求:Node.js 版本需爲
^22.19.0 || >=24.0.0。 - 依賴關係:
@deepseek-ai/cordis爲 peerDependency,僅導入類型定義即可,運行時由主機提供上下文。 - 客戶端發現:若插件包含客戶端代碼,
package.json的exports字段必須包含"./package.json": "./package.json"和"./client",否則客戶端模塊會被靜默跳過。 - 版本標籤:NPM 上的
latest標籤目前指向過時的0.0.1-rc.1,請使用next標籤(如0.1.0-rc.x)。
總結¶
dsh-authorize-app 通過插槽機制實現了 DSH 插件間輕量級的自我展示。開發者無需自行構建複雜的註冊表或網絡傳輸層,只需注入卡片組件,即可在統一的“連接應用”列表中展示自身。