前言¶
在 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: