dsh-authorize-app:DeepSeek Harness 插件中的“連接應用”中心

在 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 插件使用。

開發者在開發相關插件時,需注意以下幾點:

  1. 環境要求:Node.js 版本需爲 ^22.19.0 || >=24.0.0。
  2. 依賴關係:@deepseek-ai/cordis 爲 peerDependency,僅導入類型定義即可,運行時由主機提供上下文。
  3. 客戶端發現:若插件包含客戶端代碼,package.json 的 exports 字段必須包含 "./package.json": "./package.json" 和 "./client",否則客戶端模塊會被靜默跳過。
  4. 版本標籤:NPM 上的 latest 標籤目前指向過時的 0.0.1-rc.1,請使用 next 標籤(如 0.1.0-rc.x)。

總結

dsh-authorize-app 通過插槽機制實現了 DSH 插件間輕量級的自我展示。開發者無需自行構建複雜的註冊表或網絡傳輸層,只需注入卡片組件,即可在統一的“連接應用”列表中展示自身。

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

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

小夜