HTTP Request DSH Plugin:在 DSH 中使用原生 `http_request` 工具

前言

在 DSH 裏調用外部接口時,通常需要兩件事:一是把 HTTP(S) 請求封裝成可調用的工具;二是避免把 API key、token 等祕密直接寫進提示詞或配置文件。http-request-dsh-plugin 就是爲這個場景提供的原生 DSH 插件:它提供 http_request 工具、憑據白名單 Settings,以及對應的使用技能。

與通過 MCP Server 暴露工具不同,本插件是純 DSH Plugin,不使用 MCP,不啓動 MCP Server,也不通過 MCP stdio 通信。下面介紹它的定位、安裝方式、典型用法和注意事項。

這是什麼

http-request-dsh-plugin 是一個原生 DeepSeek Harness(DSH)插件,倉庫維護者爲 gao-gao-zai,許可證爲 MIT。

它解決的問題比較具體:在 DSH 內提供一個 http_request 工具,用於發起 HTTP(S) 請求;同時通過 DSH Settings 配置憑據引用白名單,並註冊 http-request-tool skill 來介紹工具和白名單配置方式。

工具直接使用 undici 發起請求,不依賴額外 MCP 進程。

核心功能

插件支持以下能力:

  • 支持 GETPOSTPUTPATCHDELETEHEADOPTIONS
  • 支持請求 headersquery、JSON 或文本 body
  • 支持直連、系統代理和手動 HTTP(S) 代理
  • 支持超時、響應截斷、響應頭展示和完整響應保存
  • 支持憑據引用:Windows 使用 Credential Manager,Linux 使用 pass
  • 支持通過 DSH Settings 配置 Credential Manager 白名單
  • 註冊 http-request-tool skill,自動介紹工具和白名單配置方式
  • 所有工具結果均返回純文本 JSON 字符串

工具名固定爲 http_request。其 canonical output 類型固定爲 string,並由 Native render 輸出一個 text block。成功、HTTP 非 2xx、超時和異常都會返回合法 JSON 文本。

安裝與啓用

方式一:DSH CLI 一鍵安裝

先執行下面的命令,讓 DSH 自動修改目標 Profile、安裝依賴並註冊 bundle:

dsh plugin --profile web add github:gao-gao-zai/http-request-dsh-plugin

這個命令不要求先克隆倉庫。其中 github:gao-gao-zai/http-request-dsh-plugin 是 pnpm 支持的 GitHub shorthand,DSH 會將它交給 pnpm 直接下載並安裝。

其中:

  • web 是目標 Profile 名稱;如果使用其他 Profile,請替換它
  • github:gao-gao-zai/http-request-dsh-plugin 是本倉庫的 GitHub 安裝標識
  • 不需要手動執行 git clone
  • 不需要手動編輯 Profile 配置文件

安裝完成後刷新 WebUI;如果 DSH 提示需要重啓,則重啓 DSH 使新 bundle 生效。

方式二:克隆倉庫後本地安裝

如果希望保留源碼、離線查看或自行修改,可以先克隆倉庫,再讓 DSH 從本地目錄安裝:

$PLUGIN_DIR = Join-Path (Get-Location) "http-request-dsh-plugin"
git clone https://github.com/gao-gao-zai/http-request-dsh-plugin.git $PLUGIN_DIR
pnpm --dir $PLUGIN_DIR install
pnpm --dir $PLUGIN_DIR run check
dsh plugin --profile web add $PLUGIN_DIR

$PLUGIN_DIR 可以是任意本地目錄。DSH 會把這個目錄作爲本地依賴安裝到 web Profile,並自動註冊 bundle,不需要手動編輯 Profile 配置文件。

如果之後修改了源碼,重新執行:

pnpm --dir $PLUGIN_DIR run check
dsh plugin --profile web add $PLUGIN_DIR

這個方式適合本地開發和調試;普通安裝可直接使用上面的 GitHub CLI 方式。

安裝後驗證

重啓或刷新 DSH 後依次檢查:

  1. 工具目錄中出現 http_request
  2. Settings > Plugins > http-request-mcp 中出現 credentialPrefixes
  3. Skill 目錄中出現 http-request-tool
  4. 調用工具後結果是純文本 JSON,而不是對象或 MCP 內容塊

本插件是純 DSH Plugin,不需要註冊 MCP Server,也不需要啓動 MCP 進程。

典型用法

請求參數

http_request 工具的基本參數如下:

{
  "method": "GET",
  "url": "https://api.example.com/status",
  "headers": {},
  "query": {},
  "body": null,
  "proxy": "none",
  "timeoutMs": 30000,
  "showHeaders": false,
  "maxChars": 10000,
  "outputFile": ""
}

此外支持:

  • headersFromCredential
  • queryFromCredential
  • bodyFromCredential
  • maxResponseBytes(兼容字段)

headersFromCredentialqueryFromCredentialbodyFromCredential 用於從憑據後端讀取祕密,並填充到請求的 headers、query 或 body 中。插件按平臺自動分發:Windows 讀取 Credential Manager,Linux 使用 pass

返回限制

單次請求可以通過 maxChars 設置返回預覽字符數:

{
  "url": "https://example.com",
  "maxChars": 10000
}

不傳 maxChars 時,插件使用 Settings 中的 defaultMaxChars

返回上限可以在 DSH Web GUI 中修改:

Settings > Plugins > http-request-mcp

可配置項示例:

{
  "defaultMaxChars": 2048,
  "maxCharsLimit": 200000
}

maxCharsLimit 是人工配置的上限,單次請求傳入的 maxChars 不能超過它。插件還保留 1000000 字符的內部絕對安全上限;設置超過該值時會自動按 1000000 處理。修改 Settings 後即時生效。

即使返回預覽被截斷,指定 outputFile 仍會保存完整響應體。

憑據白名單

插件默認允許的 target 前綴:

newapi/
openclaw/
upstreamops/

只有 target 以允許的前綴開頭時,插件纔會讀取憑據後端。未通過白名單的請求會返回 JSON 錯誤,不會讀取或發送祕密。

在 DSH Web GUI 中打開:

Settings > Plugins > http-request-mcp

修改 credentialPrefixes 字符串數組即可。設置修改後即時生效,並由 DSH Settings Provider 持久化到 Profile 配置文件。

也支持環境變量:

$env:HTTP_REQUEST_MCP_CREDENTIAL_PREFIXES = "newapi/,openclaw/,upstreamops/"

優先級爲:

DSH Settings > 環境變量 > 內置默認值

target 不允許包含 .. 路徑段。

Linux 憑據後端

Linux 平臺只支持 pass。插件會執行:

pass show <target>

並取輸出第一行作爲祕密。

使用前需要已安裝 pass,並初始化密碼存儲:

pass init <gpg-id>
pass insert newapi/mykey

其中 newapi/mykey 第一行即注入的祕密。兩個平臺共用同一套 credentialPrefixes 白名單校驗;target 不在密碼存儲中時,錯誤信息會帶出 pass show 的原始輸出。

適用場景與注意

這個插件適合以下使用方式:

  • 需要在 DSH 中調用 HTTP(S) 接口
  • 希望把祕密放在系統憑據後端,而不是直接寫在請求參數裏
  • 需要通過白名單限制哪些 target 前綴可以讀取祕密
  • 不想額外引入 MCP Server 或 MCP stdio 進程

安裝前請注意:

  • 插件以當前 dsh 進程權限運行
  • 安裝前應先檢查源碼與許可證
  • 憑據引用能力依賴本地憑據後端:Windows 爲 Credential Manager,Linux 爲 pass
  • 未通過白名單的 target 不應讀取或發送祕密
  • 大響應建議配合 outputFile 保存完整響應體

結尾

http-request-dsh-plugin 的價值在於把 http_request 做成 DSH 原生工具,同時提供憑據白名單和使用技能,避免額外 MCP 進程。源碼與許可證詳見 GitHub:

https://github.com/gao-gao-zai/http-request-dsh-plugin

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

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

小夜