# AnySearch DSH 插件与 Skill、MCP、HTTP 接入方式对比 最后核对:2026-08-17 ## 先说结论 这四种方式调用的是同一个 AnySearch 产品能力,但解决的问题不同: - 使用 DeepSeek Harness,希望安装后直接接管内置 `web_search` 和 `web_fetch`:选择 `@anysearch/anysearch-dsh`。 - 使用支持 Skill 的 Agent,希望用一组跨平台命令获得 AnySearch 全部工具:选择 AnySearch Skill。 - 客户端原生支持 MCP,希望自动发现并调用完整工具集:直接连接 AnySearch MCP。 - 开发自己的应用或 Agent,需要完全控制请求字段、结构化响应和产品 UI:直接调用 AnySearch HTTP API。 `@anysearch/anysearch-dsh` 不是另一套搜索后端,也不会改变 AnySearch 的搜索数据源。对于相同 API Key、相同 `/v1/search` 参数和相同服务状态,搜索计算仍由 AnySearch 完成。差异主要来自客户端如何选择工具、开放哪些字段、如何处理返回结果,以及如何执行批量搜索和 Extract。 ## 总览 | 维度 | DSH 插件 | AnySearch Skill | AnySearch MCP | 直接 HTTP | |---|---|---|---|---| | 主要用户 | DeepSeek Harness 用户 | 支持 Skill 和本地命令的 Agent | 原生 MCP 客户端 | 应用、服务和自研 Agent 开发者 | | 接入位置 | Harness `ctx.web` 和专属工具 | Skill 指令与跨平台 CLI | MCP 工具协议 | REST API | | 当前通用搜索 | 支持 | 支持 | 支持 | 支持 | | 当前垂直搜索 | 支持 | 支持 | 支持 | 支持 | | 当前批量搜索 | 支持;客户端最多五路并发 | 支持 | 支持 | 客户端自行并发 | | 当前 Extract | 支持;通过原生 `web_fetch` | 支持 | 支持 | `POST /v1/extract` | | 能力发现 | `anysearch_capabilities` | `get_sub_domains` 命令 | `get_sub_domains` 工具 | `/v1/domains`、`/v1/sub-domains` | | 返回形式 | 原生来源或结构化工具结果 | CLI 文本 | MCP tool result | 结构化 JSON | | Harness 原生 UI | 最好 | 作为外部命令输出 | 取决于 MCP Host | 需要自行实现 | | 凭据管理 | DSH 凭据引用;配置不含 Key | 由 Skill 运行环境管理 | 由 MCP Host 管理 | 应用自行管理 | | Key 轮换 | 受管文件修改后,下次搜索生效 | 取决于 CLI 进程与环境 | 取决于 MCP Host | 由应用实现 | | 自定义请求控制 | 支持当前搜索字段 | 由 Skill CLI 参数决定 | 由 MCP schema 决定 | 最高 | | 安装复杂度 | DSH 内安装一次 | 安装 Skill 和运行时 | 配置远程 MCP | 编写客户端代码 | | 跨 Agent/客户端复用 | 限于 DSH | 较好 | 支持 MCP 的客户端 | 取决于自研封装 | | 协议层 | HTTP `/v1/search`、`/v1/extract` 和能力目录 | 当前 CLI 包装 `/mcp` JSON-RPC | Streamable HTTP MCP | 普通 HTTP JSON | 表中的 DSH 插件能力以包含 AnySearch Fetch Provider 的待发布源码和公开 HTTP Extract 契约为准。 ## 一、DSH 插件 ### 它做什么 `@anysearch/anysearch-dsh` 把 AnySearch 注册为 DeepSeek Harness 的 Web Search Provider 和 Web Fetch Provider。模型仍调用 Harness 内置: ```text web_search web_fetch ``` 普通搜索把请求转换为: ```http POST https://api.anysearch.com/v1/search ``` 并把 AnySearch 的标题、链接和摘要转换为 Harness 标准来源。 指定 URL 抓取转换为: ```http POST https://api.anysearch.com/v1/extract ``` AnySearch 返回的清洗正文映射为 Harness 通用 Fetch 文本,同时保留最终 URL、源站 HTTP 状态和截断标记。 专业检索先使用 `anysearch_capabilities` 获取实时标签,再使用 `anysearch_search` 发送完整字段。高级工具保留请求 ID、耗时和清洗正文。 ### 优点 - 与 Harness Provider 选择、工具 schema、引用输出和 UI 原生集成; - 搜索和抓取都复用 Harness 原生工具,不增加重复的 AnySearch 工具; - 用户不需要维护 MCP Server 配置或 Skill 运行命令; - 插件配置只保存 `ANYSEARCH_API_KEY` 引用,真实值由 DSH credentials Provider 解析; - 每次操作重新解析一次凭据,受管文件中的 Key 轮换在下一次调用生效; - 请求取消、错误和插件生命周期遵循 Harness 机制; - 已提供 AnySearch 专属结构化搜索工具,同时保留默认 `web_search` 和 `web_fetch`。 ### 当前限制 - 通用 `web_search` 仍只开放 `query` 和结果数量; - 清洗正文和完整元数据需要使用 `anysearch_search`; - 当前 DSH Web 设置页不会自动为第三方 Provider 生成 AnySearch Key 输入框,需要使用 DSH 受管凭据文件或环境变量; - 只适用于 DeepSeek Harness。 ### 适合谁 - 已使用 DeepSeek Harness; - 希望 AnySearch 成为默认搜索和抓取 Provider; - 更看重原生工具体验、展示和引用; - 可以接受高级能力分阶段发布。 使用方法见[DSH 插件使用指南](user-guide.zh-CN.md)。 ## 二、AnySearch Skill ### 它做什么 AnySearch Skill 为支持 Skill 的 Agent 提供说明文档和 Python、Node.js、PowerShell、Shell 等跨平台 CLI。Agent 根据 Skill 指令运行: ```text search get_sub_domains batch_search extract ``` 截至本次核对,Skill CLI 通过 JSON-RPC `tools/call` 请求 `https://api.anysearch.com/mcp`,相当于为没有原生 MCP 工具集成、但能够执行本地命令的 Agent 提供一层命令入口。 ### 优点 - 可用于多种支持 Skill 和 shell 的 Agent,不绑定 DSH; - 当前即可使用搜索、垂直目录、batch 和 Extract; - 提供多种运行时脚本,适合不同操作系统; - Agent 可以通过 Skill 文档理解垂直搜索流程。 ### 代价 - 每次调用通常需要启动本地 CLI 进程; - 当前多一层 CLI 和 JSON-RPC 包装; - 结果以命令文本为主,Host 很难获得 DSH 原生的结构化卡片和 Provider 体验; - MCP 工具以 HTTP 200 返回 `result.isError=true` 时,CLI 必须正确识别,不能只把首个文本块当成功; - Skill 指令较长时会占用 Agent 上下文。 ### 适合谁 - Agent 支持 Skill,但不方便配置远程 MCP; - 希望一个安装包跨多个 Agent 产品使用; - 当前就需要 Extract; - 可以接受命令行输出和进程调用。 安装入口: ## 三、AnySearch MCP ### 它做什么 支持 MCP 的客户端可以直接连接: ```text https://api.anysearch.com/mcp ``` 服务端提供: - `search` - `get_sub_domains` - `batch_search` - `extract` 客户端通过 MCP 完成工具发现、参数 schema 获取和调用,无需自己了解具体 REST 路由。 ### 优点 - 当前公开能力最完整; - 原生支持 MCP 的客户端无需安装 AnySearch 代码; - 工具 schema、调用和错误均由统一协议承载; - 垂直搜索、服务端 batch 和 Extract 已经可用; - `batch_search` 一次接收多个独立查询,并分别返回各项结果。 ### 代价 - 客户端必须支持远程 Streamable HTTP MCP,或通过 `mcp-remote`、`supergateway` 等桥接; - 展示、引用和权限体验取决于 MCP Host; - 返回结果以 MCP content block 为主,可能比直接 HTTP JSON 更偏文本; - MCP 业务失败可能通过 HTTP 200 加 `isError` 表达,不能只检查 HTTP status; - 对只需要一次普通搜索的自研应用,协议层比 REST 更重。 ### 适合谁 - Claude、Cursor、OpenCode 或其他原生支持 MCP 的客户端用户; - 希望不编写客户端代码就获得完整 AnySearch 工具; - 当前需要服务端 batch 和 Extract; - 接受由 MCP Host 决定 UI 和工具权限。 配置和工具说明: ## 四、直接调用 AnySearch HTTP API ### 它做什么 应用直接请求 AnySearch Gateway。目前适合外部开发者使用的主要 HTTP 接口为: ```text POST /v1/search POST /v1/extract GET /v1/domains GET /v1/sub-domains ``` `POST /v1/search` 当前请求字段包括: ```text query max_results tag params zone language format ``` `POST /v1/extract` 接收 `{ "url": "https://example.com" }`,返回清洗正文、最终 URL、源站状态、截断标记和 `content_trust`。 ### 优点 - 直接获得结构化 JSON; - 可以完整控制搜索字段、错误处理、超时、日志和产品 UI; - 少一层 MCP 或 CLI 包装; - 容易保留 `request_id`、搜索耗时、清洗正文等字段; - 适合服务端、SDK、批处理和自研 Agent 工具。 ### 需要自己完成 - API Key 和环境配置; - 凭据存储、访问控制和轮换; - 参数校验; - HTTP status 与业务 `code` 的联合错误处理; - 取消、超时和重定向策略; - 对 `/v1/search` 的最多五路受控并发; - 批量结果顺序和部分失败结构; - 模型工具 schema、提示、结果裁剪、引用和 UI; - 防止超时或 5xx 重试造成重复执行和额度消耗。 ### 适合谁 - 开发自己的 Web、服务端或 Agent 产品; - 需要精确控制请求和响应; - 需要结构化数据而不是工具文本; - 愿意承担客户端工程和后续 API 适配。 文档入口: ## 五、相同搜索为什么可能表现不同 四种接入最终都可以使用 AnySearch 搜索,但实际结果或体验仍可能不同,常见原因包括: ### 请求字段不同 DSH 的 `web_search` 只发送 `query` 和 `max_results`;`anysearch_search`、Skill、MCP 和直接 HTTP 可以发送垂直标签、结构化参数、区域和语言。同一个问题在垂直路由下可能得到不同来源和排序。 ### 工具选择提示不同 MCP 和 Skill 先调用 `get_sub_domains`。DSH 插件使用 `anysearch_capabilities` 完成相同的动态发现,再调用 `anysearch_search`。 ### 结果适配不同 直接 HTTP 可以读取完整 JSON;MCP 和 Skill 通常返回格式化文本。DSH 的 `web_search` 只保留通用来源,`anysearch_search` 保留完整结构化搜索结果,`web_fetch` 则把 Extract 清洗正文映射为 Harness 通用 Fetch 结果。 ### Batch 语义不同 MCP `batch_search` 在服务端统一处理多个子查询。DSH 的 `anysearch_batch_search` 发出最多五次独立请求,因此可能部分成功、部分限流或部分额度不足。 ### Extract 可用性不同 Extract 可通过 MCP、直接 HTTP `POST /v1/extract` 和 DSH 原生 `web_fetch` 使用。DSH 插件不额外注册 `anysearch_extract`,因此模型侧仍只有 Harness 的通用 URL 抓取接口。 ### 凭据生命周期不同 DSH 插件不把 Key 写进 Cordis 配置,只保存 `ANYSEARCH_API_KEY` 引用。每次操作开始时,DSH credentials Provider 按自身优先级解析真实值;受管文件中的轮换在下一次调用生效。Skill 通常依赖 CLI 环境,MCP 由 Host 管理认证,直接 HTTP 则由应用负责凭据生命周期。 ## 六、选择建议 ### 已经使用 DeepSeek Harness 优先安装 DSH 插件。它提供原生 `web_search`、`web_fetch`、垂直搜索和客户端 batch;只有需要 MCP 专属协议能力时才需要并行配置 AnySearch MCP。 ### 使用支持 MCP 的桌面或编码客户端 优先直接配置 AnySearch MCP。它当前提供最完整的工具集,也不需要维护本地 AnySearch 客户端代码。 ### 使用支持 Skill、但 MCP 支持较弱的 Agent 选择 AnySearch Skill。它用跨平台命令把完整能力带入 Agent,但要接受 CLI 进程和文本输出。 ### 开发正式产品或服务端 优先直接使用 HTTP API,并自行定义稳定的客户端接口、错误语义、重试和可观测性。不要通过调用 CLI 或解析 MCP 文本来构建业务服务。 ### 同时维护多个 Agent 生态入口 可以同时提供: - MCP 作为通用协议入口; - Skill 作为命令型 Agent 的兼容入口; - DSH 插件作为 DeepSeek Harness 原生入口; - HTTP 作为 SDK 和应用开发入口。 它们不是互相替代的重复项目,而是面向不同 Host 的适配层。关键是让请求字段、错误消息、额度解释和能力状态保持一致。 插件的当前可用方式和操作步骤见[DSH 插件使用指南](user-guide.zh-CN.md)。