dsh-web-search-guide
DiscoveredDeepSeek Harness (DSH) Web Search Solution: AnySearch Search + Local Web Scraping, No Dependence on Chat Model Channels (ClinePass / Relay / Official API All Work)
DSH 联网搜索方案:AnySearch 搜索 + 本地网页抓取
给 DeepSeek Harness(DSH) 配一套不依赖对话模型渠道的联网搜索:
web_search走 AnySearch(官方插件@anysearch/anysearch-dsh),不需要 API key 就能用;web_fetch走 DSH 自带的本地http抓取;- 不管你用 DeepSeek 官方 API、ClinePass、还是中转站的 GPT / Claude / Gemini,搜索都一样能用,且不消耗模型 token。
测试环境:DSH 桌面端 0.2.0-rc.2 · Windows 11 ·
@anysearch/anysearch-dsh0.1.8 · 2026-10-10。 搜索与抓取接口已用插件自带客户端实测;DSH 内重启后的端到端实测待补,欢迎在 Issue 里反馈你的结果。
解决什么问题
DSH 内置的搜索供应商 deepseek-official 只能走 DeepSeek 官方 API。一旦对话模型换成别的渠道,web_search 常见这些报错:
configured web provider "xxx" is registered but unavailableWEB_PROVIDER_CREDENTIAL_MISSING(没配DEEPSEEK_API_KEY)- 搜索“成功”了,但模型其实没搜,答案来自训练数据
社区里有一类插件让对话模型自己去搜(借用网关的服务端搜索工具,比如 Vercel 网关的 perplexity_search、OpenAI Responses 的 web_search)。这类方案的问题是搜索能力绑在了对话渠道上:
| 你的对话渠道 | “让模型自己搜”能不能用 |
|---|---|
| ClinePass(Vercel 网关) | 部分模型能。实测 18 个模型里 8 个真搜了,glm-5.3-flash、mimo-v2.5-pro 不搜直接凭训练数据作答,mimo 系列带工具直接 500 |
| DeepSeek 官方 API | 只能用内置 deepseek-official |
| 中转站(one-api / new-api 等) | 看中转站是否实现/透传服务端搜索工具,大多不行 |
换一个模型、换一个渠道,搜索就可能坏掉。
方案:搜索和对话模型解耦
你提问
↓
① 你在 UI 里选的模型:要不要搜?搜什么关键词? ← 模型(任意渠道)
↓ web_search("关键词")
② AnySearch 插件 → api.anysearch.com → 标题/链接/摘要 ← 不经过任何模型
↓
③ 模型读结果:够不够?要不要 web_fetch 打开某个链接? ← 模型
↓ web_fetch(url)
④ DSH 本地 http 抓取网页正文 ← 你本机直接访问
↓
⑤ 模型综合作答,附来源 ← 模型
- 判断、筛选、作答全部由你当前选的模型完成,换模型不影响搜索;
- 搜索只是一次搜索 API 调用,不是一整轮模型回答;
- 唯一要求:模型会调用工具(主流模型都可以)。
为什么网页抓取不用 AnySearch
AnySearch 插件默认把 web_fetch 也交给它的 /v1/extract。实测对一部分网站抓不出正文:
| 网页 | AnySearch extract | 本机直接访问 |
|---|---|---|
| example.com、GitHub、DeepSeek 文档、nodejs.org | ✅ | ✅ |
| docs.cline.bot(JS 渲染的文档站) | ⚠️ 只有 183 字符 | ✅ 332 KB |
| CSDN 博客 | ❌ HTTP 422 Unable to extract content from the URL. | ✅ |
| arXiv PDF | ❌ HTTP 422 | ✅ |
| 知乎 | ❌ HTTP 422 | ❌ 403(需登录,两种方式都不行) |
所以网页抓取改回 DSH 本地 http。顺带的好处:你要读的网址不会发给第三方。
安装
先确认你的 profile 名字:DSH 桌面端一般是 desktop,dsh web 命令行一般是 web。目录在 ~/.dsh/profiles/<profile>/(Windows 是 C:\Users\<你>\.dsh\profiles\<profile>\)。下面用 <profile> 代替。
动手前先备份 ~/.dsh/profiles/<profile>/ 下的 package.json、cordis.patch.yml、pnpm-lock.yaml、pnpm-workspace.yaml。
第 1 步:卸掉别的搜索供应商插件(如果装过)
DSH 同一时间只用一个搜索供应商(web 行的 searchProvider),多个插件都去改它时谁生效不确定。如果你装过 dsh-web-search-clinepass、dsh-web-search-free 之类,先移除:
dsh plugin --profile <profile> remove <之前的搜索插件包名>
如果你在 cordis.patch.yml 里为旧插件手写过配置(id: web-search-xxx 的条目),一并删掉。
第 2 步:安装 AnySearch 插件
dsh plugin --profile <profile> add @anysearch/anysearch-dsh
没有 dsh 命令(只装了桌面端)时的手动安装
桌面端自带 node 和 pnpm,在 ~/.dsh/dsh-runtimes/dsh-primary-runtime/dependencies/ 下。在 profile 目录里执行(Windows 用 Git Bash 示例):
R=~/.dsh/dsh-runtimes/dsh-primary-runtime/dependencies
cd ~/.dsh/profiles/<profile>
"$R/node/bin/node.exe" "$R/pnpm/bin/pnpm.cjs" add @anysearch/anysearch-dsh
# 如需移除旧插件:
# "$R/node/bin/node.exe" "$R/pnpm/bin/pnpm.cjs" remove <旧插件包名>
然后编辑同目录的 package.json,把 "@anysearch/anysearch-dsh" 加进 dsh.profile.bundles 数组(旧搜索插件从数组里删掉),例如:
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"@anysearch/anysearch-dsh"
]
}
}
pnpm 可能会在 pnpm-workspace.yaml 里自动加一条 minimumReleaseAgeExclude,属正常现象。
第 3 步:网页抓取改回本地
把 config/cordis.patch.snippet.yml 的内容追加到 ~/.dsh/profiles/<profile>/cordis.patch.yml 末尾:
- id: web
config:
searchProvider: anysearch
fetchProvider: http
profile 自己的 cordis.patch.yml 在所有插件之后生效,所以插件升级不会覆盖它。patch 会整段替换 web 行的 config,searchProvider 必须一起写上。
第 4 步:重启 DSH
插件和 patch 都是启动时组装的,改完必须完整重启。
可选:配置 AnySearch API key
匿名额度即可试用。注册 anysearch.com 后免费额度为每天 1000 次(以官网为准)。写进 ~/.dsh/.credentials.yaml:
refs:
ANYSEARCH_API_KEY: "as_sk_..."
.credentials.yaml的具体结构以你本机文件为准(新版本把密钥放在refs:下)。插件每次请求都会重新读取凭据,改完不用重启;启动环境里的ANYSEARCH_API_KEY环境变量优先级更高。
验证
scripts/check.mjs 用你 profile 里已安装的插件客户端测试搜索和抓取,并对比本机直接访问:
node scripts/check.mjs # 默认 profile: desktop
node scripts/check.mjs --profile web
需要 Node.js 22.19+ 或 24+(DSH 自带的 ~/.dsh/dsh-runtimes/dsh-primary-runtime/dependencies/node/bin/node.exe 也可以)。不会打印任何密钥。设置了 HTTPS_PROXY / HTTP_PROXY 时脚本会自动让 Node 走代理(NODE_USE_ENV_PROXY=1,Node 24+)。
在 DSH 里也可以直接问一句需要联网的问题,例如“DeepSeek V4.1 Flash 是什么时候发布的?附上来源”,然后打开一个结果链接让它读全文。
回滚
- 用备份的四个文件覆盖回
~/.dsh/profiles/<profile>/; - 在该目录运行一次
pnpm install(或上面的手动 pnpm 命令); - 重启 DSH。
只想把网页抓取交还 AnySearch:删掉第 3 步追加的那段即可。
FAQ
搜索内容会发给谁?
搜索关键词发给 AnySearch(api.anysearch.com)。网页抓取在本机完成,不经过第三方。
为什么知乎抓不到? 知乎对未登录访问返回 403,任何抓取方式都一样,只能用搜索结果里的摘要。
用代理上网时 web_fetch 打不开 GitHub 等国外网站?
本地抓取是 DSH 进程自己发请求。Node 内置的 fetch 默认不读 HTTP(S)_PROXY 环境变量(实测:同一台机器上 curl 走代理能通,Node 不设置就超时)。DSH 是否使用系统代理取决于版本和启动方式,这里没有验证。如果遇到超时,可以试着在启动 DSH 的环境里设置 HTTPS_PROXY、HTTP_PROXY 和 NODE_USE_ENV_PROXY=1(Node 24+)。AnySearch 搜索本身在国内直连可用。
用 glm-5.3-flash 这类“不搜索”的模型可以吗?
可以。搜索由插件完成,模型只要会调用 web_search 工具即可,不再依赖模型自己有没有搜索能力。
想换别的搜索引擎?
社区还有很多 ctx.web 搜索供应商插件,例如多引擎自动切换的 dsh-web-search-free(Tavily / Exa / Brave / 百度千帆 / 豆包 / SearXNG…,需各自的 key)、免 key 的 dsh-web-search-tavily。思路相同:装一个、卸掉其他、第 3 步的 searchProvider 改成对应的 provider id。
致谢
License
MIT
Comments
Loading…
Similar plugins
by VinciBeans
AnySearch-backed WebSearchProvider for DeepSeek Harness (dsh): switch web_search between the official DeepSeek search endpoint and AnySearch from a Plugins settings card.
★ 0
MIT
TypeScript
Sep 30, 2026
dsh plugin --profile web add @wenqi_bian/dsh-web-search-anysearchby aaronlei
DSH web search provider with three selectable protocols: any OpenAI-compatible Responses API gateway exposing the native web_search tool, Zhipu's Web Search API (basic retrieval), and Zhipu's Web Search in Chat (answer augmentation). Registers a ctx.web search provider and overrides the shared searchProvider to it; UI copy follows the app language (zh / en).
★ 4
↓ 247/wk
MIT
JavaScript
Oct 8, 2026
dsh plugin --profile web add dsh-web-search-diyby Rainpomelo
DeepSeek Harness 网页搜索插件:AnySearch → Tavily 自动容灾降级(DSH web search provider)
★ 0
MIT
JavaScript
Oct 1, 2026
dsh plugin --profile web add dsh-web-search-anysearchby mcxianyujun
Native AnySearch /v1/search WebSearchProvider for DeepSeek Harness with Web UI, credentials integration, and Web/Headless support.
★ 4
↓ 131/wk
MIT
TypeScript
Sep 9, 2026
dsh plugin --profile web add dsh-web-search-anysearchby MYCF711
免 API Key 的 dsh 联网搜索 / 网页抓取插件:引擎=逻辑源、入口=直连/镜像/加速路由自动回退,不消耗任何模型 token
★ 4
GPL-3.0
JavaScript
Sep 29, 2026
dsh plugin --profile web add dsh-websearch-directby abcdream-Lary
DeepSeek Harness (DSH) 的多提供商网页搜索和页面获取插件:AnySearch、Bing、DuckDuckGo、Tavily、Exa
★ 2
↓ 35/wk
MIT
JavaScript
Aug 22, 2026
dsh plugin --profile web add dshsearch-multi