dsh-apikeys:爲 DeepSeek Harness 統一保管多平臺 API Key

前言

在 DeepSeek Harness(DSH)裏讓模型替你調用 GitHub、Cloudflare 等平臺 API,常見問題不是模型不知道接口怎麼寫,而是憑證放在哪、怎樣調用又不把 Key 寫進對話或配置文件。把 Token 直接貼進 cordis.patch.yml 或會話裏,既難輪換,也容易在日誌裏留下痕跡。

下面介紹社區插件 dsh-apikeys-plugin(倉庫 XRC111/dsh-apikeys,目錄頁 SkillHub)。維護者爲 XRC111,分類爲 admin-security。它在 DSH 憑證存儲裏集中保存多平臺 Key,並通過 apikey_call、apikey_platforms、apikey_key 讓模型代爲發請求,而不默認把原始 Key 暴露給模型。

這是什麼

dsh-apikeys-plugin(npm 包名 dsh-apikeys-plugin,當前資料中版本 1.0.3,許可證 MIT)是面向 DeepSeek Harness 的憑證與代理調用插件。

一句話定位:Key 存一次,模型通過工具調用各平臺 API;Host 在請求側附帶憑證,模型平時拿到的是工具能力而不是明文 Key(除非你配置允許 apikey_key get Reveal)。

憑證記錄形如 dsh-apikeys/<platform>-<account>,不進入 cordis.patch.yml、普通設置文件或會話日誌的正文。

核心功能

憑證與隔離

  • Key 保存在 DSH 的 credential store,而不是配置文件或對話裏。
  • 模型通過 apikey_call 發請求時由 Host 附加憑證;讀取原始值需單獨走 apikey_key,且受 exposeKeys 控制。
  • apikey_call 只接受相對 path,Host 來自平臺定義,避免把 GitHub Token 發到任意 URL。
  • 同一平臺可配置多個命名賬戶(如工作與個人),不會靜默混用他人的 Key。

內置平臺

資料中列出的內置平臺及校驗方式、環境變量回退如下:

id 校驗 環境變量回退
github GET /user → login GITHUB_TOKEN
cloudflare GET /user/tokens/verify CLOUDFLARE_API_TOKEN
vercel GET /v2/user → username VERCEL_TOKEN
npm GET /-/whoami NPM_TOKEN
dockerhub GET /user DOCKERHUB_TOKEN
huggingface GET /whoami-v2 → name HF_TOKEN

設置頁的 Verify 會發起真實請求,彙報平臺返回的身份,用於確認 Key 有效且賬戶符合預期。

自定義平臺

任意 HTTP API 可在配置裏用 customPlatforms 聲明 baseUrl、認證方式(bearer、header、x-api-key、basic、query 等)及可選的 verify 塊。缺少可用 baseUrl 或必要頭的自定義項會被跳過,不致拖垮整頁。

暴露給模型的工具

工具 作用
apikey_call 對指定 platform 發 API 請求;path 相對 base;可帶 query/body;返回狀態、解析後的 body(有長度上限)、限速與分頁信息。
apikey_platforms 列出平臺與賬戶:是否已配置 Key、來源;不返回 Key 值。
apikey_key get / set / clear 單條憑證。

請求失敗或傳輸失敗(狀態 0 並帶 hint)以正常工具結果返回,便於模型讀取並調整策略,而不是直接打斷一輪對話。

安裝與啓用

資料中的安裝方式如下。

命令行(將 <your-profile> 換成你的 profile 名):

dsh plugin --profile <your-profile> add dsh-apikeys-plugin

或在 DSH Web UI:Plugins → Add → dsh-apikeys-plugin。若 profile 未開 HMR,安裝後需重啓 DSH。

隨後在 Settings → API Keys 選擇平臺、粘貼 Key 並 Verify。

運行環境要求(來自 package.json):Node.js >= 20。

典型用法與配置

在界面中管理 Key

安裝並打開 Settings → API Keys 後,爲各平臺或自定義平臺錄入 Key 並驗證。也可在啓用 envFallback(默認 true)時,讓各平臺 default 賬戶回退到上表中的環境變量。

通過 cordis.patch.yml 調整行爲

配置項均可選;在 profile 的 cordis.patch.yml 中修改插件 apikeys 段,例如限制平臺、禁止模型讀取明文 Key:

- id: apikeys
  config:
    exposeKeys: false
    enabledPlatforms: [github, cloudflare]

常用字段(摘自 README,默認值以倉庫 cordis.patch.yml 爲準):

字段 默認 含義
defaultPlatform github 未指定平臺時的默認平臺
defaultAccount default 未指定賬戶時的默認賬戶
enabledPlatforms 全部內置 暴露哪些內置平臺
exposeKeys true 是否允許 apikey_key get 返回 Key
envFallback true default 賬戶是否回退環境變量
maxResponseChars 20000 單次響應 body 上限
requestTimeoutMs 30000 單次請求超時(毫秒)
migrateGitHub true 是否採納舊版僅 GitHub 插件留在 dsh-github/<account> 的 Key

自定義平臺示例結構(節選):

customPlatforms:
  - id: acme
    label: Acme API
    baseUrl: https://api.acme.example/v1
    envName: ACME_API_KEY
    verify:
      path: /me
      identity: data.login
    auth:
      kind: bearer
      scheme: Bearer

模型側調用思路

  1. 用 apikey_platforms 查看已配置的平臺與賬戶。
  2. 用 apikey_call 對目標 platform 發相對路徑請求(例如 GitHub GET 類操作用對應 path)。
  3. 僅在確需明文時使用 apikey_key;生產環境可將 exposeKeys 設爲 false,把 Key 留在 Host 內。

適用場景與注意

適合誰: 經常在 DSH 裏讓模型操作 GitHub、Cloudflare、Vercel、npm、Docker Hub、Hugging Face 等已內置平臺,或自有 HTTP API,且希望憑證與配置、對話分離的開發者。

安全邊界(插件自述): Key 不會默認寫入配置或在工具結果裏泄露;apikey_call 不能將憑證發到平臺定義之外的主機。但 DSH 本地憑證文件對該 OS 用戶可讀,工具進程也以同一用戶運行——這不是沙箱。exposeKeys: false 主要防誤泄露;若 Key 可能已外泄,應在平臺側撤銷,僅從插件刪除不能「撤回」泄露。

安裝前: 插件以當前 DSH 進程權限運行。SkillHub 爲社區目錄,與 DeepSeek / 幻方無官方從屬關係;安裝前建議閱讀 倉庫源碼 與 MIT 許可證,自行判斷風險。

若你曾使用僅 GitHub 的舊插件,開啓 migrateGitHub 時可一次性採納 dsh-github/<account> 下的舊記錄,且不會覆蓋已有新記錄。

結尾

dsh-apikeys-plugin 把多平臺 API Key 收進 DSH 憑證存儲,用 apikey_call 等工具把「模型懂 API、缺的是你的身份」這一缺口補上,同時儘量把明文 Key 擋在 Host 一側。需要安裝與配置說明時,以 GitHub README 爲準;瀏覽社區條目可打開 SkillHub 目錄頁。

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

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

小夜