前言¶
在 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
模型側調用思路¶
- 用
apikey_platforms查看已配置的平臺與賬戶。 - 用
apikey_call對目標platform發相對路徑請求(例如 GitHubGET類操作用對應 path)。 - 僅在確需明文時使用
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 目錄頁。