面向 DeepSeek Harness 的离线确定性公共 API 目录检索,支持中英文查询,以及认证、HTTPS、CORS、状态、来源层级与分类的精确筛选。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-universe-api
# Release 预构建包
dsh plugin --profile web add "https://github.com/Ruixinhua/dsh-universe-api/releases/download/v0.1.2/dsh-universe-api-0.1.2.tgz"
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:Ruixinhua/dsh-universe-api
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
dsh-universe-api 是一个面向 DeepSeek Harness(DSH)和 DSH Desktop 的离线 API 发现插件。它只注册一个只读工具 universe_api_search,用于对 public-apis 的固定快照进行确定性的中英文检索。
这是 API 发现工具,不是 API 客户端。它不会调用候选 API,不接收 API key,运行时也不会发起网络请求。重要选型前,请到供应商官方文档再次核对价格、可用性、认证方式和使用条款。
0.1.2 是当前已发布稳定版。npm latest、SLSA provenance 与公开 GitHub Release 均绑定同一份已验收 tarball 字节。
能力
- 对 1,693 条规范化公共 API 记录进行离线、确定性检索。
- 支持中英文查询扩展、Unicode 规范化和 CJK 感知匹配。
- category、auth、HTTPS、CORS、status、source tier 均为硬过滤。
- 稳定排序,并返回匹配理由和目录新鲜度信息。
- 可选加载私有 canonical v1 目录,完整覆盖内置公共快照。
- 仅依赖通用 DSH contract,可复用于 CLI、普通 Web profile 和 DSH Desktop。
零结果时,插件不会悄悄放宽过滤条件。尤其是 unknown 与 no 严格区分;内置目录只含公共数据,因此 sourceTier: "apilayer" 会正常返回零条。
环境要求
- DSH 或 DSH Desktop,并能打开 DSH Terminal。
- 从源码开发需要 Node.js
^22.19.0 || >=24.0.0。普通 Desktop 用户通常直接使用 Desktop 自带运行时。
兼容性基线如下。每个 Release 资产(包括稳定版 0.1.2 Draft)都必须按人工清单单独验收,表中的自动化覆盖不能替代 Desktop 人工测试。
| 组件 | 版本 | 覆盖方式 |
|---|---|---|
dsh-universe-api |
0.1.2 |
已发布稳定版,精确资产验收已完成 |
| DSH Desktop | 2.0.3 |
RC.3 验收基线,加上每个新资产必须执行的 Desktop 验收 |
| DSH runtime packages | 0.1.1-rc.2 |
原生工具注册、执行管线与 Loader 测试 |
| Cordis | 4.0.1 |
自动化测试 |
| Node.js | 22.19.0、24.x |
CI;Desktop 用户使用其内置运行时 |
| 操作系统 | Ubuntu、Windows、macOS | Ubuntu 完整门禁;Windows/macOS 运行时、Loader 与打包 smoke |
以下安装命令应在 DSH Desktop 中打开的 DSH Terminal 执行,不要在无关的系统终端中执行。如果使用非默认 profile,请分别在 plugin 和 dsh 命令后添加 --profile <名称>。
安装
选择一种来源;能固定版本时请固定版本。
本地 checkout
dsh plugin add /absolute/path/to/dsh-universe-api
GitHub tag
仅在对应 GitHub Release 已公开后使用稳定 tag。维护者验收 Draft 时必须安装已校验的 Draft tarball。
dsh plugin add github:Ruixinhua/dsh-universe-api#v0.1.2
本包是无需构建的纯 ESM,并且没有 build 或 prepare 安装钩子,所以从 GitHub 安装不需要配置 pnpm allowBuilds。
Release tarball
从 GitHub Release 下载 .tgz 和对应的 .sha256,放在同一目录后校验:
sha256sum --check dsh-universe-api-0.1.2.tgz.sha256
dsh plugin add /absolute/path/to/dsh-universe-api-0.1.2.tgz
macOS 没有 sha256sum 时,可执行 shasum -a 256 -c dsh-universe-api-0.1.2.tgz.sha256。
Windows 用户应先切换到两个下载文件所在目录,或把下面的 $archive 和 $checksum 替换为绝对路径。以下 PowerShell 会先验证归档,再安装刚刚验证的同一文件:
$ErrorActionPreference = 'Stop'
$archive = '.\dsh-universe-api-0.1.2.tgz'
$checksum = '.\dsh-universe-api-0.1.2.tgz.sha256'
$archivePath = (Resolve-Path -LiteralPath $archive).Path
$expected = ((Get-Content -LiteralPath $checksum -Raw).Trim() -split '\s+')[0]
$actual = (Get-FileHash -LiteralPath $archivePath -Algorithm SHA256).Hash
if ($expected -notmatch '^[0-9a-fA-F]{64}$') { throw "Invalid SHA-256 file: $checksum" }
if ($actual -ine $expected) { throw "SHA-256 mismatch for $archivePath" }
dsh plugin add $archivePath
确认启用
dsh --dump-config
确认输出包含 dsh-universe-api layer 和插件行。安装或修改配置后必须从托盘选择 Quit/退出,再重新启动 DSH Desktop;关闭窗口或只打开一个新对话都不够。
升级固定版本
本项目推荐固定 GitHub tag 或 Release tarball。选择一种固定来源,在已经安装插件的同一 profile 中升级:
- **Release tarball:**下载新版本的
.tgz与.sha256,按上面的平台说明完成校验,然后安装刚刚校验的同一 tarball。Windows 应把新文件名代入 PowerShell 代码后重新执行;该代码以dsh plugin add $archivePath结束。Linux 或 macOS 执行:
dsh plugin add /absolute/path/to/dsh-universe-api-NEW_VERSION.tgz
**GitHub tag:**直接安装准确的新 tag。这是另一种来源;Release tarball 的 SHA-256 不能认证 pnpm 随后获取的 Git checkout。
# 将 NEW_VERSION 替换为完整版本号,包括预发布后缀。 dsh plugin add github:Ruixinhua/dsh-universe-api#vNEW_VERSION
dsh plugin add 会更新 profile 中已安装的直接依赖规范,无需先删除插件。随后执行 dsh --dump-config,确认配置中仍只有一个 dsh-universe-api bundle layer,并保留预期的 catalogPath 配置(如有),再从托盘选择 Quit/退出 并重新启动。dsh plugin update 适合按可变 registry 范围安装的依赖;它不会替你选择另一个固定 tag 或 tarball,因此不作为本项目固定 Release 的升级步骤。
使用
测试时可明确要求 DSH 使用该工具:
请使用 universe_api_search,找 3 个无需 API key、HTTPS=yes、CORS=yes 的天气 API,并说明匹配理由。
英文示例:
Use universe_api_search to find 3 weather APIs that require no API key and have HTTPS=yes and CORS=yes. Explain why each result matched.
工具输入如下:
| 输入 | 类型与行为 |
|---|---|
query |
最长 2,048 字符的可选自然语言字符串。不传时可只用过滤器浏览。 |
categories |
最多 20 项、每项最长 128 字符的可选字符串数组;多个分类按 OR 处理。 |
sourceTier |
all(默认)、public 或 apilayer。 |
auth |
none、api_key、oauth2、basic、bearer、signed、user_agent、other 或 unknown。 |
https、cors |
yes、no 或 unknown;严格精确匹配。 |
status |
active、coming_soon、stale、candidate 或 unknown。 |
limit |
1–20 的整数;默认 5。 |
输出包括目录身份和新鲜度、规范化查询信息、实际过滤条件、总匹配数、是否截断,以及带匹配理由的排序结果。聊天模式会渲染紧凑 Markdown;Code Mode 可读取完整结构化值。
使用私有目录
在当前 profile 的 cordis.patch.yml 中添加一个后置配置行(通常位于 $DSH_HOME/profiles/<名称>/),并设置 catalogPath:
- id: dsh-universe-api
config:
catalogPath: '/absolute/path/to/private/catalog.json'
该文件必须:
- 使用 canonical catalog v1 schema;
- 是绝对路径指向的普通 JSON 文件;
- 不超过 16 MiB;
- 包含完整目录,而不是增量覆盖。
使用相同 profile 选择执行 dsh --dump-config,确认这一行是 dsh-universe-api 的最终配置。外部目录会完整替换内置公共快照,二者不会合并。路径相对、文件不存在、超限、不可读或校验失败时,插件会加载失败,绝不静默回退。工具结果只标记来源为 external,不会泄露本机路径。修改文件或路径后需要重启 DSH Desktop。
测试错误目录前,先完成一次健康启动并记下时间。若错误目录导致 Desktop 进入 Recovery,打开 回滚/Rollback,选择时间戳与该次健康启动对应的准确 checkpoint 槽位,预览并确认后重启。若没有可用槽位,从 诊断/Diagnostics → 打开 Profile Patch/Open profile patch 手动恢复已知健康的插件行。若仍能进入托盘,也可从设置旁的重启菜单选择 重启到恢复模式/Restart in Recovery Mode。确认健康启动后,再测试下一个错误用例。完整步骤见人工测试清单。
格式和校验规则见私有目录格式。
卸载
dsh plugin remove dsh-universe-api
从托盘选择 Quit/退出,重新启动 DSH Desktop,然后用 dsh --dump-config 确认该 layer 已消失。
测试 Release 资产
维护者门禁命令为:
npm ci
npm run typecheck
npm test
npm run verify:loader
npm run check
npm pack --dry-run
真实验收时必须安装 Release tarball,不要只测试生成它的本地 checkout。请按人工测试清单验证离线行为、精确过滤、私有目录覆盖、Web profile 和卸载。
Market 可用性
目录提供方(例如 dshfind)已经可以发现本仓库,且 npm latest 已是精确稳定版 0.1.2。一键安装仍取决于所选目录源同步出唯一、无歧义的 npm 包身份;在提供方状态实测前不能声称 Installable。
维护者应遵循Market 分发与版本提升指南。它分别说明 GitHub prerelease、以 npm next 发起的 RC 建包(包括 npm 首次发布时的 latest 行为)、受保护的 OIDC 稳定版提升、dshfind 验证和精选目录投稿。
数据、隐私与限制
- 内置快照来自
public-apis/public-apis的固定提交988c57be4616cc9507fd3e8c34adedba5387f079,按其 MIT 许可证分发。详见第三方声明。 - 不会重新分发此前混合私有目录中的任何 APILayer 记录。保留
sourceTier: "apilayer",只是为了让兼容的私有目录能够公开该层。 - 快照生成后,目录条目可能逐渐过时。工具不会探测端点,也不会验证供应商当前条款。
- 插件不提供浏览器 UI、语义 embedding、远程数据库、MCP 包装或 API 执行。
- 私有目录路径和 API 文档 URL 只用于发现。插件不接收、不保存、也不传输凭据。
- 未声明的工具参数会被拒绝。不要把凭据放进工具调用;即使插件拒绝,DSH 仍可能把尝试调用的参数保留在会话历史中。
维护者文档
许可证
插件代码使用 MIT License。内置第三方数据保留上游声明,详见 THIRD_PARTY_NOTICES.md。
链接
同类插件
Tencent/WeKnora#dsh-weknora★ 33572
把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
superdesigndev/treg★ 5130
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1136
把腾讯云 CloudBase 后端接入 DeepSeek Harness——在对话里搭好并部署全栈应用,查询结果渲染为表格卡片(分页、排序、导出 CSV),部署后可预览真实域名,并提供 CloudBase MCP 工具集(`mcp__cloudbase__*`),登录走 device-code 流程。
gitroomhq/postiz-agent#dsh-postiz★ 514
通过 MCP 将 DeepSeek Harness 连接到 Postiz:列出已连接的社交媒体渠道、获取各平台发帖规则,并向 X、LinkedIn、Instagram、Facebook、Threads、TikTok、YouTube、Reddit、Bluesky、Mastodon、Discord、Slack、Telegram 等平台排期、存草稿或发布帖子;附带 postiz 工作流技能。
EthanYoQ/Invoice-Downloader#dsh-invoice-downloader★ 508
面向 DeepSeek Harness 的本地 IMAP 发票下载、OCR 识别、归档与 Excel 报销汇总。
anysearch-team/anysearch-dsh★ 459
基于 AnySearch 的实时网页与垂直搜索插件,为 DeepSeek Harness 提供搜索工具。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。