🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

Brave 搜索加固 nedzen/dsh-web-search-brave

DeepSeek Harness
nedzen28 天前有提交已提供中文文档扫描:未发现敏感能力

修复搜索卡死与限流,让多查询稳定返回结果

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/4 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add nedzen/dsh-web-search-brave
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · search
装得上吗
实装验证未通过(dependency_conflict),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 28 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(dependency_conflict · 2026/10/5) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

发起外部网络请求
查看扫描证据(共 1 处,展示前 1 条)
  • 发起网络请求
    lib/index.js:237
    response = await fetch(url.toString(), {
扫描于 2026/11/2(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/dsh-agent@deepseek-ai/dsh-credentials@deepseek-ai/dsh-credentials-local@deepseek-ai/dsh-launch-environment@deepseek-ai/dsh-web@deepseek-ai/dsh-invariants@deepseek-ai/dsh-settings@deepseek-ai/dsh-session@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 修复搜索卡死
  • 补充请求超时
  • 避免并发限流

README

由 DeepSeek 最新模型翻译生成
dsh-web-search-brave DeepSeek Harness(dsh)的 Brave Search 服务商插件 —— 经过加固,web_search 再也不会卡死你的会话,多查询搜索也不会再被 HTTP 429 限流淹没。 这是 DeepSeek Harness ctx.web 搜索服务商接缝的独立实现。它面向官方服务商接口,结构参照官方 @deepseek-ai/dsh-web-search-deepseek 服务商,这也是编写接缝服务商的官方文档做法。它不是另行开发的 dsh-web-search-brave 包的分支 —— 见兼容性。 与 DeepSeek 无关联,也未获其背书。 @deepseek-ai/... 包名沿用 DeepSeek 对接缝服务商的第一方命名惯例;它不是 DeepSeek 官方包,也从未发布到 npm。服务商接口与模块脚手架源自官方 @deepseek-ai/dsh-web-search-deepseek(MIT,© 2026 DeepSeek);Brave 集成部分为本包原创。
展开完整文档(README 剩余 1 节)
dsh-web-search-brave

DeepSeek Harness(dsh)的 Brave Search 服务商插件 —— 经过加固,web_search 再也不会卡死你的会话,多查询搜索也不会再被 HTTP 429 限流淹没。

这是 DeepSeek Harness ctx.web 搜索服务商接缝的独立实现。它面向官方服务商接口,结构参照官方 @deepseek-ai/dsh-web-search-deepseek 服务商,这也是编写接缝服务商的官方文档做法。它不是另行开发的 dsh-web-search-brave 包的分支 —— 见兼容性。

与 DeepSeek 无关联,也未获其背书。 @deepseek-ai/... 包名沿用 DeepSeek 对接缝服务商的第一方命名惯例;它不是 DeepSeek 官方包,也从未发布到 npm。服务商接口与模块脚手架源自官方 @deepseek-ai/dsh-web-search-deepseek(MIT,© 2026 DeepSeek);Brave 集成部分为本包原创。

- 关键词: DeepSeek Harness、dsh、dsh 插件、Brave Search API、web search 服务商、 web_search 工具、HTTP 429 限流、请求超时、智能体工具调用卡死

修复的 bug

如果你的 dsh 会话曾在调用 web_search 工具时卡死 —— 转圈不停、对话记录里什么都没有、有时还得整个重启 —— 原因就在这里。

0.1.1 里的 BraveSearchProvider.search() 没有设置自己的计时器,只把调用方的 AbortSignal 交给 fetch。DeepSeek Harness 通过 @deepseek-ai/dsh-tool-call-timeout-policy 执行工具超时,而它是明确的协作式:它等待工具 promise,不与它竞速。所以请求一旦不返回,就永远不会有工具结果被记录,这一轮会无限等待,界面看起来就像卡死了。

实测复现,配置了 60 秒工具预算却从未生效:

| 调用 | 结果 |
| web_search,1 个查询 | 1.1 秒返回 |
| web_search,4 个查询 | 从未返回 —— 8 分 29.7 秒,直到用户手动中断 |

第二个问题让它雪上加霜。一次多查询 web_search 调用会扇出成 N 个并行请求 (扇出逻辑在 dsh-tool-web 里),而 Brave 按秒限流。在免费套餐下,这会把整个预算都花在 429 上:

| 4 个并发查询,无间隔 | 结果 |
| 上游 0.1.1 | 4 个全部失败(WEB_PROVIDER_ERROR,HTTP 429),耗时 731 毫秒 |

这个版本改了什么

三个可配置开关,全部受同一个硬性截止时间约束,所以什么都不会卡住:

| 设置 | 默认值 | 作用 |
| searchTimeoutMs | 15000 | 服务商层面的硬性截止时间。把你的 AbortSignal 和 AbortSignal.timeout() 融合在一起。这就是修复卡死的那个改动。 它在入队之前创建,所以排队等待也计入预算。 |
| minRequestIntervalMs | 1500 | 通过每进程队列把并发扇出串行化,一次一个请求,中间留间隔。1100 实测 3/4 成功;1500 实测 4/4。 |
| maxRetries | 2 | 针对 HTTP 429 的有界重试,遵守 Retry-After(上限 3 s)。受 searchTimeoutMs 约束,所以重试不会重新引入卡死。 |

截止时间到期会报为明确的 WEB_PROVIDER_ERROR 超时;调用方取消仍然报为 WEB_ABORTED。服务商契约的其他部分没有变化。

修复之后,在同一个线上 API 上:

| | 修复前 | 修复后 |
| 服务器停滞,调用方无信号 | 永不返回 | 4.0 s 内拒绝 |
| 4 个并发查询 | 0/4 | 4/4,用时 5.5 s |
| 1 个查询 | 903 ms | 843 ms |

安装

dsh plugin --profile web add github:nedzen/dsh-web-search-brave

或者从本地检出安装:

dsh plugin --profile web add file:$HOME/Sites/dsh-web-search-brave

然后在你的配置档 cordis.patch.yml 里把接缝固定到它。补丁会替换整个配置,所以要重述 web 这一行拥有的每一个键 —— 漏掉 fetchProvider 会悄悄把它丢掉,弄坏 web_fetch:

- id: web
config:
searchProvider: brave-search
fetchProvider: http # do not omit

- id: web-search-brave
name: "@deepseek-ai/dsh-web-search-brave"
config:
apiKeyEnv: BRAVE_SEARCH_API_KEY
baseURL: https://api.search.brave.com/res/v1
maxResults: 10
searchType: web
searchTimeoutMs: 15000 # optional overrides
minRequestIntervalMs: 1500
maxRetries: 2

API key 先从凭据服务解析,再从启动环境解析(.env 文件会自动分层加载)。把它存为 BRAVE_SEARCH_API_KEY,或者把 apiKeyEnv 指向你导出的任意名字。

验证是否生效

test/freeze-regression.mjs 用一个接受 TCP 连接、然后永不响应的服务器复现卡死。用例 A(服务器停滞,调用方无信号)和 C(扇出间隔)在 0.1.1 上是 RED,在这里是 GREEN。

cd ~/.dsh/profiles/web
set -a; . ~/.dsh/.env; set +a
node ~/Sites/dsh-web-search-brave/test/freeze-regression.mjs \
./node_modules/@deepseek-ai/dsh-web-search-brave/lib/index.js "0.1.3"

用 Node 而不是 Bun 是刻意的:dsh 在 Node 的 fetch 下运行这个服务商,而所断言的 abort/timeout 语义是 undici 的。

在实时会话里自检 —— 计时能告诉你加载的是哪个构建:

| 4 查询 web_search | 构建 |
| 1 s 内返回,通常是 HTTP 429 | 旧的 0.1.1 |
| 耗时 4.5 s 或更多,通常成功 | 这个构建 |

调优

- 大量并行查询会超时。 searchTimeoutMs 也覆盖排队等待。如果模型一次触发多个 web_search 调用(比如 maxParallelToolCalls 大于 3,每个调用带 4 条查询),尾部耗时可能超过 15 s,于是快速失败而不是挂住。把 searchTimeoutMs 调到 30000。
- Brave 付费套餐。 设置 minRequestIntervalMs: 0 和 maxRetries: 0,用健壮性换速度。
- 仍然被限流。 调大 minRequestIntervalMs,或者改用多服务商回退链,而不是只挂一个后端。

故障排查

我改了源码,却没有任何变化。 pnpm 会把 file: 依赖复制进配置档,pnpm install 报告「Already up to date」,同时保留那份过期的副本。删掉它再重装:

rm -rf ~/.dsh/profiles/web/node_modules/@deepseek-ai/dsh-web-search-brave
dsh plugin --profile web install

我重装了,但运行中的会话没变。 只有配置会热重载。插件 JavaScript 走 ESM 缓存,而 dsh-hmr 不带任何监听根目录(root: []),所以要重启 dsh 才能加载新的服务商代码。

WEB_DUPLICATE_PROVIDER。 已经有别的服务商注册了 brave-search 这个 id —— 检查是不是有两行都声明了这个 bundle。

兼容性

面向 0.1.x DeepSeek Harness 系列:@deepseek-ai/dsh-*@^0.1.1-rc.2 对等依赖。超时、间隔、重试这些设置是增量添加的,所以 dsh 0.2.x 应该也能用 —— 请拿你自己的构建验证,别想当然。

同名,不同插件。 dsh-web-search-brave 也是另外一些独立开发的包的名字,例如 cnChenKai/dsh-web-search-brave(npm dsh-web-search-brave,0.2.4)。它们是不同的实现,配置互不兼容:那个注册的服务商 id 是 brave,配置项是 count/safesearch/textDecorations;这个注册的是 brave-search,配置项是 maxResults/searchType。选一个用,别把两个都接进同一个配置档,也别指望配置能互相移植。

相关

- deepseek-ai/deepseek-harness —— 这个 harness,也是本插件遵循的官方服务商模板
- 0xsline/awesome-deepseek-harness —— 生态索引
- GitHub 话题 dsh-plugin —— 更多 dsh 插件
- 其他 web_search 后端:multi-provider、Exa、SearXNG
- 独立开发、同名:cnChenKai/dsh-web-search-brave

许可证

MIT。实现 © 2026 nedzen。服务商接口与模块脚手架源自官方 @deepseek-ai/dsh-web-search-deepseek(MIT,© 2026 DeepSeek)。见 LICENSE。
预览分享卡片长什么样 ↓nedzen/dsh-web-search-brave
分享 · DeepSeek Harness Hub
nedzen/dsh-web-search-brave

修复搜索卡死与限流,让多查询稳定返回结果

回到顶部