anysearch-dsh

162Star6Fork0Issue1Watching

把 AnySearch 接入 DeepSeek Harness,提供实时网页搜索、垂直领域搜索和并发批量搜索能力。

语言
TypeScript
License
MIT
分支
main
agent-toolsanysearchdeepseek-harnessdshdsh-plugintypescriptweb-search

安装

$ dsh plugin --profile web add github:anysearch-team/anysearch-dsh

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

一句话定位

AnySearch 的搜索能力作为插件接入 DeepSeek Harness,让 Harness 自带的网页搜索改走 AnySearch 的实时数据源,同时新增垂直领域搜索和并发批量搜索工具。

核心能力

  • 把 Harness 内置的 web_search 改用 AnySearch 作为数据源,返回带标题、摘要、URL 的结果,便于引用
  • 提供 anysearch_capabilities 工具,让模型实时发现可搜索领域、垂直分类和支持的参数
  • 提供 anysearch_search 工具,支持按标签、地区、语言和动态参数执行垂直搜索,可按需返回清洗后正文
  • 提供 anysearch_batch_search 工具,一次并发执行 1 至 5 个独立搜索,单项失败不影响其他结果
  • 通过 DSH 受管凭据解析 API Key,轮换凭据后下一次请求自动生效,无需重启 DSH
  • 在没有 API Key 时回退到 AnySearch 匿名额度,便于先体验再注册

技术实现

  • 语言: TypeScript(ESM,type: modulesideEffects: false
  • 关键依赖: @deepseek-ai/cordis(Cordis 插件运行时)、@deepseek-ai/dsh-tools(工具注册)、@deepseek-ai/dsh-credentials(凭据解析)、@deepseek-ai/schemastery(配置 Schema)
  • 架构模式: Cordis 插件;cordis.patch.ymlsearchProvider 设为 anysearch 并注册 web-search-anysearch 条目;插件 apply() 通过 ctx.web.registerSearchProvider 替换默认搜索 Provider,并往 ctx.tools 注册三个高级工具
  • 入口文件: src/index.ts(导出 applyConfigname = 'web-search-anysearch'inject = ['web', 'credentials', 'tools']

适用场景

Harness 用户希望在不让模型脱离 Harness 的前提下,获得更实时、更专业的搜索结果——例如需要跨金融、学术、法律、代码等垂直数据源的查询,或者同一回合里同时跑多个独立搜索任务。该插件把 AnySearch 的搜索基础设施挂在 Harness 的工具体系里,普通提示词继续走 web_search,需要专业搜索时由模型自动调用高级工具。

前置依赖与兼容性

依赖最低版本说明
DSH(cordis/credentials/tools/web)0.1.0-rc.6+(cordis ≥4.0.1-rc.1 <5)来自 peerDependencies
Node.js^22.19.0 或 >=24.0.0来自 engines.node
pnpm11.7.0+DSH plugin 命令依赖 pnpm 管理 profile
平台macOS / Windows / LinuxREADME 声明三平台共用同一条安装命令
原生模块纯 HTTP 客户端,无 node-ptynode:sqlite 等原生依赖

安装方式

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

配置项

配置类型说明默认值
apiKeyEnv字符串(凭据引用名)DSH 凭据引用,解析失败时走 AnySearch 匿名额度ANYSEARCH_API_KEY
baseURL字符串(绝对 URL)AnySearch API 基础地址,必须是 http 或 https,不能带用户信息https://api.anysearch.com
maxRenderedContentChars整数(≥1)单次高级工具调用向模型展示的清洗正文字符上限12000

常见问题

Q: 这个插件是做什么的?

A: 它把 AnySearch 接到 DeepSeek Harness,让 Harness 自带的 web_search 与三个新增工具都走 AnySearch 的实时数据源,普通网页搜索与垂直搜索、批量搜索共用同一份凭据。

Q: 必须配置 API Key 才能用吗?

A: 不需要。快速体验无需 API Key,请求走 AnySearch 匿名额度。注册 AnySearch 账号并写入 ~/.dsh/.credentials.yaml(键名 ANYSEARCH_API_KEY: "as_sk_xxx")或同名环境变量后,每天可获 1000 次免费调用额度。

Q: 它和 Harness 自带的 web_search 是什么关系?

A: 安装后 cordis.patch.ymlweb.searchProvider 设为 anysearch,普通查询仍由 Harness 调用 web_search,只是底层数据源换成 AnySearch;专业搜索则交给新工具 anysearch_searchanysearch_batch_searchanysearch_capabilities

Q: 如何卸载?

A: 运行 dsh plugin --profile web remove @anysearch/anysearch-dsh,Harness 会移除 AnySearch Provider 并回退到内置搜索 Provider;更新则用 dsh plugin --profile web update @anysearch/anysearch-dsh

Q: 不支持 Windows / Linux / macOS 吗?

A: 三平台均支持,安装命令相同,但要求 Node.js、npxpnpm 都已加入 PATH

Q: 报错怎么办?

A: 插件的所有错误都归到 AnySearchClientError,并带上 request_idhttpStatusretry-after 等诊断字段;可用 dsh --profile web --dump-config 检查组合配置(凭据值不会输出)。若怀疑是上游问题,可参考返回的 request_id 联系 AnySearch 排查。

上手难度

入门 — 安装命令一键完成,默认配置即可工作,无需手动修改 YAML;只有需要自定义 API 地址或限额时才需要编辑配置。

已知问题与限制

  • DeepSeek Harness 仍处于开发预览阶段,可能发布不兼容变更(见 README "Compatibility and limitations")
  • 当前不提供 anysearch_extract 工具,抽取完整网页需要改用 AnySearch MCP
  • DSH 设置页当前没有第三方 Provider 凭据输入项,API Key 只能通过受管凭据文件或环境变量配置
  • 单次批量搜索最多 5 个独立请求(src/tools/batch.ts:16),单次工具超时 60 秒(src/limits.ts:2
anysearch-dsh — DeepSeek Harness 插件 | deepseek-plugin.org