DeepSeek Harness 插件

dsh-openapi

OpenAPI 3.x discovery and safe API calling tools for DeepSeek Harness.(英文原文)

跳到安装方式

来源信息

GitHub 仓库
Degurechaff57/dsh-openapi
最近更新
2026年8月13日
分类
工具与能力
GitHub stars
4
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/Degurechaff57/dsh-openapi
插件名:dsh-openapi
作者:Degurechaff57

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器4 个文件
README.zh-CN.md来源说明 · 只读预览
README 语言

dsh-openapi

让 DeepSeek Harness 通过安全、结构化的工具调用任意 OpenAPI 3.x API。

English · DeepSeek Harness

dsh-openapi 是 DeepSeek Harness 原生 bundle,会索引配置好的 OpenAPI 文档,并注册三个模型工具:

  • openapi_list:列出 API、搜索 operation。
  • openapi_describe:查看某个 operation 的参数、请求体、服务器和响应。
  • openapi_call:校验并调用 operation,限制返回大小。

项目直接使用 ESM JavaScript,因此从 GitHub 安装时不会执行构建或 prepare 脚本。

为什么需要它

Harness 已经有 Shell,但 API 更适合更窄、更可控的接口:无需把巨大的规范塞进模型上下文;只允许规范声明的参数;凭据来自环境变量;默认只读;校验 SSRF 风险;限制响应大小。本插件通过 Harness 官方扩展点实现这些能力,不修改 agent loop。

安装

dsh plugin --profile web add github:Degurechaff57/dsh-openapi

安装后的 API 目录为空。在 profile 的 cordis.patch.yml 中加入配置:

- id: openapi
  config:
    apis:
      - id: petstore
        source: https://petstore3.swagger.io/api/v3/openapi.json
        baseUrl: https://petstore3.swagger.io/api/v3
        allowedMethods: [GET, HEAD]

启动 Harness 后可以直接说:

> 用 openapi_list 找到列出宠物的接口,先描述参数,再调用它。

本地源码安装:

dsh plugin --profile web add /absolute/path/to/dsh-openapi

凭据配置

不要把密钥写入 YAML。将请求头映射到环境变量:

- id: openapi
  config:
    apis:
      - id: internal-api
        source: ./openapi/internal.yml
        baseUrl: https://api.example.com/v1
        headers:
          Accept: application/json
        credentials:
          - header: Authorization
            env: INTERNAL_API_TOKEN
            prefix: 'Bearer '
        allowedMethods: [GET, HEAD, POST]

凭据请求头最后写入,模型参数无法覆盖;环境变量缺失时会在发出网络请求前失败。

配置项

顶层配置:

字段默认值用途
apis[]API 文档列表
timeoutMs30000单次调用超时
maxSpecBytes2097152本地或远程规范大小上限
maxResponseBytes262144返回给模型的响应体上限
maxRedirects3重定向上限;每一跳都会重新校验
maxOperationsPerApi1000单个 API 的 operation 上限

每个 apis 条目支持:

字段默认值用途
id必填工具调用使用的稳定 id
source必填HTTP(S) URL、file: URL、绝对路径,或相对 Harness 进程的路径
baseUrl规范中的 server显式覆盖 API 服务器
headers{}静态非敏感请求头
credentials[]请求头与环境变量映射
allowedMethods[GET, HEAD]工具允许调用的方法
allowPrivateNetworkfalse显式允许回环/私网目标

安全默认值

  • 规范只能由管理员配置,模型不能在运行时任意加载 URL。
  • 默认只开放 GETHEAD
  • 只接受 operation 声明过的参数。
  • 默认阻止 URL 内凭据、localhost、私网 IP,以及 DNS 解析到私网的主机;每次重定向都会重新检查,跨域重定向会移除凭据。
  • 响应体有硬上限,set-cookie 等敏感响应头不会返回给模型。
  • 密钥来自环境变量,覆盖调用参数,永远不会出现在工具结果中。

本地开发服务需要设置 allowPrivateNetwork: true。这是明确的信任选择,不是网络沙箱。DNS 在校验和连接之间仍可能变化;高安全场景不要使用不可信的 OpenAPI 文档或恶意 DNS 环境。

当前范围

  • OpenAPI 3.0 / 3.1,JSON / YAML
  • 本地 #/... 引用
  • 常见 path、query、header、cookie 参数序列化
  • JSON 与文本响应

暂不跟随远程 $ref,也不猜测 deepObject 等特殊序列化;遇到不明确的输入会直接失败。

DeepSeek Harness 仍处于开发者预览期。本版本已测试当前源码 CLI(0.1.0-rc.5)和 npm 预发布版(0.1.0-rc.6),上游发生破坏性变更后会快速跟进。

开发与测试

npm install
npm run check

测试覆盖解析、引用、operation 索引、请求构造、凭据优先级、方法限制、私网阻止、重定向检查、输出截断和插件注册。

许可证

[MIT](LICENSE)