前言¶
在 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 進程。
核心功能¶
插件支持以下能力:
- 支持
GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS - 支持請求
headers、query、JSON 或文本body - 支持直連、系統代理和手動 HTTP(S) 代理
- 支持超時、響應截斷、響應頭展示和完整響應保存
- 支持憑據引用:Windows 使用 Credential Manager,Linux 使用
pass - 支持通過 DSH Settings 配置 Credential Manager 白名單
- 註冊
http-request-toolskill,自動介紹工具和白名單配置方式 - 所有工具結果均返回純文本 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 後依次檢查:
- 工具目錄中出現
http_request Settings > Plugins > http-request-mcp中出現credentialPrefixes- Skill 目錄中出現
http-request-tool - 調用工具後結果是純文本 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": ""
}
此外支持:
headersFromCredentialqueryFromCredentialbodyFromCredentialmaxResponseBytes(兼容字段)
headersFromCredential、queryFromCredential、bodyFromCredential 用於從憑據後端讀取祕密,並填充到請求的 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: