@demo/plugin:給 DeepSeek Harness 掛一個與宿主同風格的 Web 插件界面

前言

DSH 的理念是「一切皆插件」,但寫一個 DSH 插件不止是寫一份清單:界面要跑在宿主裏,能力要註冊到 Cordis運行時裏,兩邊還要共享同一套實現。很多插件要麼只做界面、能力另起爐竈,要麼只有 Host 側邏輯,UI 找不到入口。下面介紹 @demo/plugin(維護者 wodaimnd,倉庫 wodaimnd/plugin),一份可直接讀源碼的示例插件,演示 Web 半邊與 Host 半邊如何在同一份 bundle 裏配合。它不解決某個具體業務問題,而是給出「插件入口長什麼樣、bundle 行怎麼聲明」的最小可運行樣板。

這是什麼

@demo/plugin 是一個 DeepSeek Harness 插件,面向 DeepSeek Harness (DSH) Desktop / Web GUI。包名是 @demo/plugin,版本 1.0.1,許可證 MIT,作者署名 Kewei Chen wodaimnd@users.noreply.github.com。它在 DSH 的左側欄 / 設置中提供一個插件入口,同時通過 dsh.bundle 聲明 Cordis bundle,由插件管理器負責安裝 / 啓用 / 禁用。

核心功能

下面是 README 中明確列出的四項能力。

  1. Web 界面:安裝後在 DSH 左側欄 / 設置中出現插件入口,界面風格與 DSH 宿主一致。
  2. Host 能力:Host 半邊註冊服務、HTTP 接口或 Agent 工具,並與界面共享同一套實現。
  3. DSH 插件:通過 dsh.bundle 聲明 Cordis bundle,隨插件管理器安裝 / 啓用 / 禁用。
  4. 關鍵詞:deepseek、dsh、dsh-plugin(寫在 package.json 裏,用於檢索)。

源碼側的分半邊約定在目錄結構裏很直白:index.js 是 Host 半邊,client.js 是瀏覽器半邊。也就是說界面邏輯和後端能力都在這個目錄裏,不依賴外部服務。

安裝與啓用

README 給出兩條路徑,都需要先把目錄拿到本地,沒有 dsh plugin add github:owner/repo 這種一行命令的安裝方式。

先克隆倉庫:

git clone https://github.com/wodaimnd/plugin.git
cd plugin

方式一:把該目錄當作本地 bundle 安裝。可以讓 Agent 執行下面這條插件管理器命令:

plugin_manager action=install_bundle target=<絕對路徑>/plugin

方式二:手工在界面裏操作。打開 設置 → 插件 → 添加,選擇本地目錄,然後啓用 @demo/plugin。

兩條方式的差別只在誰來執行 install_bundle;target 要寫成目錄的絕對路徑,不能用相對路徑或倉庫 URL。

典型用法

安裝並啓用後,刷新 DSH Web 頁面,在左側欄找到對應入口即可打開插件頁面。這一步不需要額外配置。

Host 半邊隨 bundle 行激活;需要調整行爲時,改 cordis.patch.yml,或在插件管理器的配置頁面裏調整配置項。具體配置鍵名 README 沒有展開,改動前應先讀 cordis.patch.yml 和源碼確認。

目錄結構與開發

完整目錄如下:

plugin/
├── package.json          # DSH 插件清單(dsh.bundle / dsh.client)
├── index.js              # Host 半邊
├── client.js             # 瀏覽器半邊
├── cordis.patch.yml      # bundle 行聲明
└── README.md

package.json 中與本插件直接相關的字段:

{
  "name": "@demo/plugin",
  "version": "1.0.1",
  "type": "module",
  "main": "./index.js",
  "dsh": {
    "bundle": {
      "patch": "./cordis.patch.yml"
    },
    "client": {
      "platform": "web",
      "immediately": true
    }
  }
}

dsh.bundle.patch 指向 bundle 行聲明文件;dsh.client 聲明平臺爲 web 並 immediately 加載。這是一份無構建步驟的純 ESM 插件:修改源碼後刷新即可生效,不需要打包。

適用場景與注意

適合想研究 DSH 插件結構的人:改 client.js 調界面、改 index.js 加 Host 能力、改 cordis.patch.yml 調 bundle 行,改完刷新就能看到結果,出錯也能直接定位到文件。

需要注意三點:

  1. 插件以當前 dsh 進程的權限運行。安裝前先讀一遍 index.js 與 cordis.patch.yml,確認沒有超出預期的文件訪問、網絡請求或 Agent 工具註冊。
  2. 許可證是 MIT,見倉庫內 LICENSE 文件。保留版權聲明即可自由使用和修改。
  3. 兼容性上,dsh.client 聲明要求 DSH 的 Web 前端支持插件模塊加載。如果你的 Web 前端版本沒有這個能力,界面半邊不會加載;Host 半邊隨 bundle 行激活,不受此限制影響。

小結

@demo/plugin 的價值在於給出一個可直接改的樣板:Web 半邊與 Host 半邊在同一個目錄裏,接入方式是本地 bundle 而非遠程拉取。想理解 DSH 插件怎麼註冊界面、怎麼聲明 bundle 行、界面與能力怎麼共享實現,先跑通這份示例比讀文檔更快。

目錄頁:https://www.skillhub.cn/plugins/wodaimnd/plugin
GitHub:https://github.com/wodaimnd/plugin

需要說明:上述內容以 GitHub README 與 package.json 爲唯一依據,README 未提供 star 數、下載量或用戶反饋,本文不補充。

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

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

小夜