Repository navigation
Releases
Releases · sunx16963-design/dsh-web-search-thirdparty
v0.4.0 — 支持最新 DSH(>=0.1.2 设置 API)+ CI/文档/兼容修复
支持最新 DSH(0.1.5-rc.2)并修复一批长期问题。
Compatibility(重要)
- 支持 DSH ≥ 0.1.2 的设置 API 变更:上游在 0.1.2 之后删除了顶层
installSettingsSection/
settingsNamespace,改为ctx.settings.installSection(...)+ 字面量 namespace。插件现在运行时探测
两代 API(旧 helper → 新服务方法 → 结构性兜底),并在都没有时退化为“仅用组合配置”。
此前在新版 DSH 上apply()会因调用已删除的函数而抛错、插件加载失败。 src/shims.d.ts不再把已删除的符号声明为存在(这正是此前“typecheck 通过但运行期炸掉”的原因)。- 移除已停止发布的
@deepseek-ai/dsh-client-runtimepeer(上游 0.1.2 起被
dsh-client-ui-cordis/dsh-cordis-client-runner取代),并清理dsh.client.inject
中未使用的 connection / locale。 - peerDependencies 区间由
^0.1.0-rc.6(实测不匹配 0.1.1-rc.2 / 0.1.5-rc.2 等预发布版本)
放宽为>=0.1.0-rc.6;engines.node声明为>=22.19。
Fixed
- CI 修复:
npm run build在 Node 20 上必失败 —— tsdown 0.22 的配置加载器在缺少原生 TS 支持时
回退到可选 peerunrun(未安装)。CI 改为 Node 24(与 tsdown engines^22.18 || >=24.11对齐)。 truncated诚实上报:门面按maxResults截断过结果时不再恒返回false(seam 会原样透传该字段)。- Brave
publishedAt归一化:page_age不再未经校验直接透传,改为与其它引擎一致走
normalizePublishedAt()(解析不了的相对时间/异常值按契约丢弃)。 - 响应体非合法 JSON 不再参与重试(它不是瞬态故障,重试只会浪费配额),直接报可诊断错误。
- 缓存 key 并入
extraHeadersJson(自定义请求头会改变上游结果,此前会命中旧缓存)。
Changed
available()语义对齐 seam:新增同步确定性判断(字面量 → 启动环境)+ 异步探测缓存
(refreshAvailability(),配置变更后自动刷新)。凭据只存在于 credentials 服务时仍保持乐观,
不会把可用源误判为不可用。- 缓存加上限(300 条,TTL 之外按写入时间淘汰)并统计命中/未命中/合并数(
GET /api/web-search-thirdparty/stats
返回cache字段,设置页用量面板显示)。 ProviderRegistry.register()保护内置引擎 id:第三方源不得静默覆盖内置实现(新增 internal 标记)。- 插件卸载 / 热重载时清空缓存、熔断与统计(
resetRuntimeState()),避免旧一代状态残留。 - 新增配置
enableFetchProvider(默认 true):关掉可把web_fetch交回宿主的官方 provider
(上游默认fetch: false且不挂 fetch provider,本插件属主动偏离,补丁注释已写明)。 - SSRF 防护补强:新增 IPv6
2002::/16(6to4)、2001::/32(Teredo)、ff00::/8(组播)、
2001:db8::/32(文档段)、64:ff9b::/96(NAT64),以及 IPv4192.0.0.0/24、198.18.0.0/15、
192.88.99.0/24、240.0.0.0/4。README 明确记录 DNS 重解析(rebinding)窗口这一残留风险。 - 测试连接路由改用
min(3, maxResults)探测(此前恒为 1,无法覆盖引擎的条数参数路径)。 - 源码按职责拆分为
config/types/text/html/net/state/settings-compat,
src/index.ts从 1387 行降到约 800 行;对外导出面保持不变(测试与第三方引用不受影响)。 - 测试从 54 增至 69(新增两代 settings API、可用性探测、truncated、缓存 key/计数、
SSRF 特殊段、非 JSON 不重试等回归用例)。
安装:dshpm install dsh-web-search-thirdparty --profile web(或从 GitHub 安装 / 使用附件 tgz)。