用 anysearch-dsh 给 DeepSeek Harness 的 web_search 接上 AnySearch

前言

给智能体做联网搜索,常见做法是再挂一个 MCP、再配一套 Skill,或者让模型去调一个全新的搜索工具。结果是:普通问答要先选工具,引用卡片和内置 web_search 对不上,密钥又散落在几处配置里。

DeepSeek Harness(以下简称 DSH)把能力拆成可装卸的插件。官方仓库把核心理念写成「一切皆插件」:模型、工具、会话、UI 都可以在配置层替换,不必改 Harness 源码。社区里有一份适配层,专门把 AnySearch 接到 Harness 已有的 web_search 上,同时补上能力发现、垂直搜索和有界批量搜索。这个插件叫 anysearch-dsh,收录在独立的社区插件目录 deepseek-harness-plugin.com 中。该目录与 DeepSeek / 幻方没有官方从属关系,不是官方应用商店。

本文按插件目录页、GitHub 仓库 README、package.json、中文使用指南和 DeepSeek Harness 官方仓库交叉核对后整理:它是什么、装哪条命令、四个工具怎么用,以及安装前要看清的权限与能力边界。

这是什么

anysearch-dsh 是 AnySearch 面向 DeepSeek Harness 的搜索插件。npm 包名是 @anysearch/anysearch-dsh,当前文档适用版本为 0.1.1,由 GitHub 组织 anysearch-team 维护,仓库地址为 anysearch-team/anysearch-dsh,许可证为 MIT。主要语言是 TypeScript。社区目录把它分在「界面增强」,收录日期为 2026-08-15。截至 2026-08-17,GitHub 仓库星标为 74。

它解决的问题可以概括成一句话:Agent 仍然调用 Harness 原生的 web_search,插件负责把请求发到 AnySearch,并把结果转成 Harness 能展示和引用的来源。按仓库说明,你不需要让模型学习一个新的普通搜索工具,也不需要单独配置 MCP Server。

随包提供的 profile 层会把 AnySearch 设为现有 ctx.web Provider,并挂载高级工具。默认配置里插件条目的 idweb-search-anysearchweb 配置里的 searchProvideranysearch

核心功能

当前 0.1.1 向模型暴露四个搜索入口:

使用场景 Harness 工具
普通网页搜索 web_search
查看可用领域和标签 anysearch_capabilities
垂直或参数化搜索 anysearch_search
一次执行一至五个搜索 anysearch_batch_search

按 README 和使用指南,已核实的能力包括:

  • 通过内置 web_search 走 AnySearch,返回带标题、摘要和 URL 的实时来源,便于引用。
  • anysearch_capabilities 读取实时目录,拿到可搜索领域、垂直分类和支持的参数;两级能力目录结果会向模型保留请求 ID。
  • anysearch_search 可使用 tagparamszonelanguage 做垂直或参数化搜索。
  • anysearch_batch_search 并发执行一至五个完整搜索项,按输入顺序返回;单项失败时保留其他成功结果。每项单独鉴权、限流和计费。
  • 高级搜索结果可保留请求 ID、耗时,以及有字符上限的清洗正文。
  • 未配置 API Key 时使用 AnySearch 匿名额度;配置后走账号级额度。
  • 凭据通过 DSH 凭据系统解析 ANYSEARCH_API_KEY。受管凭据文件里轮换 Key 后,下一次搜索自动使用新值,不必重启 DSH。启动环境变量优先级更高,改环境变量需要重启进程。
  • Agent 取消操作时会中止正在进行的搜索。HTTP 请求有 55 秒 deadline,三个高级工具声明 60 秒预算。
  • 拒绝把查询或凭据转发到 HTTP 重定向目标。

web_search 只向通用 Web Search 接口提交可移植字段:titleurlsnippet。完整 content 不会进入 web_search 结果。要拿清洗正文,需要走 anysearch_search 或批量工具,并传入 includeContent: true。单次搜索所有结果的 content 累计最多 200,000 字符;向模型展示时再截到配置项 maxRenderedContentChars(默认 12000)。批量搜索里,200,000 字符上限按每个独立搜索计算,maxRenderedContentChars 由整批共享。

当前版本明确不提供 anysearch_extract,也就是没有网页正文提取工具。AnySearch MCP 另有 extract;DSH 插件这条路径目前没有接上。

安装与启用

目录页给出的安装命令如下,在 DeepSeek Harness 终端中运行即可:

dsh plugin add github:anysearch-team/anysearch-dsh

如需可复现安装,目录页建议固定 commit 哈希:

dsh plugin add github:anysearch-team/anysearch-dsh#commit

commit 换成仓库里实际的提交哈希。插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前应检查源代码仓库和许可证。

仓库 README 和中文使用指南推荐把 npm 包装进 web profile。环境要求是 Node.js 22.19 或 Node.js 24+、pnpm 11.7,以及可以通过 npx 运行的 DeepSeek Harness。DSH 插件命令用 pnpm 管理 profile 依赖,因此 pnpm 必须能在 PATH 里直接运行。Windows、Linux 和 macOS 使用同一条安装命令:

npx -y @deepseek-ai/dsh plugin --profile web add @anysearch/anysearch-dsh

然后启动:

npx -y @deepseek-ai/dsh web

快速体验不需要 API Key,未配置时请求使用 AnySearch 匿名额度。匿名额度受共享免费额度和更低限流约束,耗尽或触发限流后需要稍后重试,或改配账号 Key。

安装后可用下面这条命令检查最终组合配置,输出里不应出现真实密钥:

npx -y @deepseek-ai/dsh --profile web --dump-config

配置中应能看到:

- id: web
  config:
    searchProvider: anysearch

以及插件行:

- id: web-search-anysearch
  name: '@anysearch/anysearch-dsh'

更新和移除(仓库 README):

npx -y @deepseek-ai/dsh plugin --profile web update @anysearch/anysearch-dsh
npx -y @deepseek-ai/dsh plugin --profile web remove @anysearch/anysearch-dsh

配置 API Key

API Key 是可选的。持续使用或需要账号级额度时,仓库建议到 anysearch.com 注册并登录,再到 API Keys 获取。推荐写入 DSH 管理的凭据文件,默认位置是 ~/.dsh/.credentials.yaml;如果设置了 DSH_HOME,则是 $DSH_HOME/.credentials.yaml

ANYSEARCH_API_KEY: "as_sk_your_key"

as_sk_your_key 是占位符,必须换成有效 Key。原样保存时,插件会在发送 HTTP 请求前拒绝它;若要继续匿名访问,删除整条配置即可。Windows 默认路径对应 C:\Users\<用户名>\.dsh\.credentials.yaml

插件配置只保存引用名 ANYSEARCH_API_KEY,不保存真实 Key。DSH 的标准本地凭据 Provider 按以下顺序解析同名引用:启动环境、$DSH_HOME/.credentials.yaml、当前调用目录的 .env$DSH_HOME/.env。请不要把真实 API Key 写入 Git 仓库、截图、日志或问题报告。

当前 DSH Web 设置页不会为第三方 Provider 自动生成 AnySearch Key 输入框,因此只能用受管凭据文件或环境变量。官方 base profile 已包含插件所需的标准 credentials 服务。

默认 API 地址是 https://api.anysearch.com。若要改测试环境或自托管兼容服务,在目标 profile 的用户配置层覆盖同一条 id: web-search-anysearch,保持 id 不变,完整替换 config,不要用不同 ID 再加第二个 AnySearch Provider:

- id: web-search-anysearch
  config:
    apiKeyEnv: ANYSEARCH_API_KEY
    baseURL: https://api.anysearch.com
    maxRenderedContentChars: 12000

apiKeyEnv 是凭据引用名,不是 Key 字面量。baseURL 必须是 HTTP 或 HTTPS 地址。

典型用法

安装完成后,像平时一样向 DeepSeek Harness 提问。普通联网查询继续走 web_search。使用指南给出的提示词示例包括:

搜索 DeepSeek Harness 最近的发布变化,并附上来源链接。
查找今天关于开源 Agent Harness 的重要新闻,比较三个来源。
核实某个 GitHub 项目当前的安装方式,并引用官方文档。

需要专业数据时,应先调用 anysearch_capabilities 读取实时目录,再把返回的标签和参数交给 anysearch_search,不要自行猜测 tag 或参数名。需要同时执行多个独立查询时,使用 anysearch_batch_search,一次最多五项。使用指南里的提示词示例:

查询 AAPL 最新行情。先获取 finance 领域能力,再使用准确的标签和参数搜索。
检索最近的 CVE,并保留 AnySearch 的请求 ID 和搜索耗时。
分别搜索三个开源 Agent Harness 的最新版本,并保留每项请求 ID。使用批量搜索。

普通查询让 Harness 自动选 web_search 即可。只有垂直标签、结构化参数或完整元数据有价值时,才使用 anysearch_search

如果 Provider 未注册,Harness 会报告配置的搜索 Provider 缺失;如果 AnySearch 返回错误,工具会显示安全错误消息或 HTTP 状态说明。出现 WEB_PROVIDER_ERROR 时,使用指南建议依次检查:baseURL 是否正确、网络能否访问 api.anysearch.com、API Key 是否有效或过期、匿名/账号额度是否用尽、服务端是否返回 429 或 5xx。报告问题时提供错误消息和发生时间,不要提供真实 API Key。上游业务错误文本最多保留 2,000 字符,并以 JSON 字符串转义,前面会标明这是不可信的上游数据而不是指令。

适用场景与注意事项

适合已经在用 DeepSeek Harness、希望 AnySearch 成为默认搜索 Provider、并且更看重原生 web_search 展示和引用的人。仓库把 DSH 插件、AnySearch Skill、AnySearch MCP、直接 HTTP 四种接入写成同一套搜索后端上的不同适配层:只在 DSH 里用、想替换内置搜索,选这个插件;当前就需要 Extract,应另配 AnySearch MCP,而不是指望本插件补上提取工具。

使用前需要接受这些边界:

  • DeepSeek Harness 仍处于开发预览阶段,可能发布不兼容变更,插件可能需要同步升级。
  • 本插件当前不提供 anysearch_extract
  • 通用 web_search 仍只开放查询词和结果数量;清洗正文和完整元数据走专属工具。
  • anysearch_batch_search 发出多次独立 HTTP 请求,可能部分成功、部分限流或额度不足,语义不同于 MCP 服务端统一处理的 batch。
  • 插件以当前 dsh 进程权限运行。安装前检查源码与许可证;需要可复现安装时固定 commit 哈希。
  • 社区插件目录是独立站点,收录信息(例如星标)可能滞后于 GitHub。以仓库和 package.json 为准核对版本与命令。

小结

anysearch-dsh 做的是一层很薄、但贴着 Harness 走的适配:普通搜索继续叫 web_search,垂直和批量能力用三个专属工具补上,密钥只以引用名进入配置。当前版本是 0.1.1,MIT 许可,维护者是 anysearch-team。

目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/anysearch-dsh/

GitHub:https://github.com/anysearch-team/anysearch-dsh

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

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

小夜