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

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

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

小夜