dsh-web-search-pro 0.1.15 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/README.md +389 -50
  3. package/assets/skills/dsh-web-search-pro/SKILL.md +98 -0
  4. package/assets/skills/dsh-web-search-pro/references/judges.md +11 -0
  5. package/assets/skills/dsh-web-search-pro/references/sources.md +65 -0
  6. package/assets/skills/dsh-web-search-pro/references/troubleshooting.md +22 -0
  7. package/catalog/sources.v1.json +74 -0
  8. package/lib/actions/approval.js +69 -0
  9. package/lib/actions/approval.js.map +1 -0
  10. package/lib/actions/cache.js +74 -0
  11. package/lib/actions/cache.js.map +1 -0
  12. package/lib/actions/errors.js +76 -0
  13. package/lib/actions/errors.js.map +1 -0
  14. package/lib/actions/format.js +45 -0
  15. package/lib/actions/format.js.map +1 -0
  16. package/lib/actions/history.js +180 -0
  17. package/lib/actions/history.js.map +1 -0
  18. package/lib/actions/index-view.js +158 -0
  19. package/lib/actions/index-view.js.map +1 -0
  20. package/lib/actions/legacy.js +71 -0
  21. package/lib/actions/legacy.js.map +1 -0
  22. package/lib/actions/read.js +221 -0
  23. package/lib/actions/read.js.map +1 -0
  24. package/lib/actions/registry.js +66 -0
  25. package/lib/actions/registry.js.map +1 -0
  26. package/lib/actions/rules.js +126 -0
  27. package/lib/actions/rules.js.map +1 -0
  28. package/lib/actions/run.js +169 -0
  29. package/lib/actions/run.js.map +1 -0
  30. package/lib/actions/schema.js +186 -0
  31. package/lib/actions/schema.js.map +1 -0
  32. package/lib/actions/search.js +260 -0
  33. package/lib/actions/search.js.map +1 -0
  34. package/lib/actions/sources.js +239 -0
  35. package/lib/actions/sources.js.map +1 -0
  36. package/lib/actions/types.js +35 -0
  37. package/lib/actions/types.js.map +1 -0
  38. package/lib/backend-registry.js +72 -5
  39. package/lib/backend-registry.js.map +1 -1
  40. package/lib/browser-access.js +73 -0
  41. package/lib/browser-access.js.map +1 -0
  42. package/lib/cache-key.js.map +1 -1
  43. package/lib/catalog/load.js +31 -0
  44. package/lib/catalog/load.js.map +1 -0
  45. package/lib/catalog/recommend.js +187 -0
  46. package/lib/catalog/recommend.js.map +1 -0
  47. package/lib/catalog/schema.js +153 -0
  48. package/lib/catalog/schema.js.map +1 -0
  49. package/lib/client/RubricEditor.js +47 -0
  50. package/lib/client/RubricEditor.js.map +1 -0
  51. package/lib/client/SettingsCard.js +20 -3
  52. package/lib/client/SettingsCard.js.map +1 -1
  53. package/lib/client/fields.js +9 -3
  54. package/lib/client/fields.js.map +1 -1
  55. package/lib/client/form-specs.js +292 -0
  56. package/lib/client/form-specs.js.map +1 -0
  57. package/lib/client/form.js +249 -148
  58. package/lib/client/form.js.map +1 -1
  59. package/lib/client/index.js.map +1 -1
  60. package/lib/client/locales.js +150 -4
  61. package/lib/client/locales.js.map +1 -1
  62. package/lib/client/sources-table.js +30 -0
  63. package/lib/client/sources-table.js.map +1 -0
  64. package/lib/client/styles.js +13 -1
  65. package/lib/client/styles.js.map +1 -1
  66. package/lib/client/validators.js +171 -0
  67. package/lib/client/validators.js.map +1 -0
  68. package/lib/client.js +2373 -166
  69. package/lib/client.js.map +1 -1
  70. package/lib/config-enums.js +16 -0
  71. package/lib/config-enums.js.map +1 -0
  72. package/lib/config.js +175 -0
  73. package/lib/config.js.map +1 -1
  74. package/lib/deps.js +33 -4
  75. package/lib/deps.js.map +1 -1
  76. package/lib/engines.js +23 -45
  77. package/lib/engines.js.map +1 -1
  78. package/lib/extract.js +1 -1
  79. package/lib/fetch.js +209 -71
  80. package/lib/fetch.js.map +1 -1
  81. package/lib/history.js +60 -0
  82. package/lib/history.js.map +1 -1
  83. package/lib/index.js +67 -47
  84. package/lib/index.js.map +1 -1
  85. package/lib/pipeline/align.js +209 -0
  86. package/lib/pipeline/align.js.map +1 -0
  87. package/lib/pipeline/blocks.js +362 -0
  88. package/lib/pipeline/blocks.js.map +1 -0
  89. package/lib/pipeline/budget-spec.js +49 -0
  90. package/lib/pipeline/budget-spec.js.map +1 -0
  91. package/lib/pipeline/candidates.js +88 -0
  92. package/lib/pipeline/candidates.js.map +1 -0
  93. package/lib/pipeline/clean.js +74 -0
  94. package/lib/pipeline/clean.js.map +1 -0
  95. package/lib/pipeline/compile.js +323 -0
  96. package/lib/pipeline/compile.js.map +1 -0
  97. package/lib/pipeline/corpus.js +75 -0
  98. package/lib/pipeline/corpus.js.map +1 -0
  99. package/lib/pipeline/coverage.js +168 -0
  100. package/lib/pipeline/coverage.js.map +1 -0
  101. package/lib/pipeline/fusion.js +76 -0
  102. package/lib/pipeline/fusion.js.map +1 -0
  103. package/lib/pipeline/gate.js +257 -0
  104. package/lib/pipeline/gate.js.map +1 -0
  105. package/lib/pipeline/judge-status.js +102 -0
  106. package/lib/pipeline/judge-status.js.map +1 -0
  107. package/lib/pipeline/judges/calibration-spec.js +37 -0
  108. package/lib/pipeline/judges/calibration-spec.js.map +1 -0
  109. package/lib/pipeline/judges/calibration.js +32 -0
  110. package/lib/pipeline/judges/calibration.js.map +1 -0
  111. package/lib/pipeline/judges/coverage.js +159 -0
  112. package/lib/pipeline/judges/coverage.js.map +1 -0
  113. package/lib/pipeline/judges/errors.js +24 -0
  114. package/lib/pipeline/judges/errors.js.map +1 -0
  115. package/lib/pipeline/judges/http.js +98 -0
  116. package/lib/pipeline/judges/http.js.map +1 -0
  117. package/lib/pipeline/judges/model-scorer.js +102 -0
  118. package/lib/pipeline/judges/model-scorer.js.map +1 -0
  119. package/lib/pipeline/judges/protocols/llm.js +159 -0
  120. package/lib/pipeline/judges/protocols/llm.js.map +1 -0
  121. package/lib/pipeline/judges/protocols/rerank.js +127 -0
  122. package/lib/pipeline/judges/protocols/rerank.js.map +1 -0
  123. package/lib/pipeline/judges/protocols/systemone.js +243 -0
  124. package/lib/pipeline/judges/protocols/systemone.js.map +1 -0
  125. package/lib/pipeline/judges/providers-spec.js +174 -0
  126. package/lib/pipeline/judges/providers-spec.js.map +1 -0
  127. package/lib/pipeline/judges/providers.js +80 -0
  128. package/lib/pipeline/judges/providers.js.map +1 -0
  129. package/lib/pipeline/judges/tokens.js +31 -0
  130. package/lib/pipeline/judges/tokens.js.map +1 -0
  131. package/lib/pipeline/judges/types.js +12 -0
  132. package/lib/pipeline/judges/types.js.map +1 -0
  133. package/lib/pipeline/ledger.js +237 -0
  134. package/lib/pipeline/ledger.js.map +1 -0
  135. package/lib/pipeline/lexical.js +182 -0
  136. package/lib/pipeline/lexical.js.map +1 -0
  137. package/lib/pipeline/plan.js +297 -0
  138. package/lib/pipeline/plan.js.map +1 -0
  139. package/lib/pipeline/render.js +60 -0
  140. package/lib/pipeline/render.js.map +1 -0
  141. package/lib/pipeline/rubrics-spec.js +125 -0
  142. package/lib/pipeline/rubrics-spec.js.map +1 -0
  143. package/lib/pipeline/rubrics.js +99 -0
  144. package/lib/pipeline/rubrics.js.map +1 -0
  145. package/lib/pipeline/run.js +583 -0
  146. package/lib/pipeline/run.js.map +1 -0
  147. package/lib/pipeline/score.js +243 -0
  148. package/lib/pipeline/score.js.map +1 -0
  149. package/lib/pipeline/select.js +310 -0
  150. package/lib/pipeline/select.js.map +1 -0
  151. package/lib/pipeline/service.js +208 -0
  152. package/lib/pipeline/service.js.map +1 -0
  153. package/lib/pipeline/sources-spec.js +69 -0
  154. package/lib/pipeline/sources-spec.js.map +1 -0
  155. package/lib/pipeline/task.js +95 -0
  156. package/lib/pipeline/task.js.map +1 -0
  157. package/lib/pipeline/types.js +11 -0
  158. package/lib/pipeline/types.js.map +1 -0
  159. package/lib/pipeline/url.js +107 -0
  160. package/lib/pipeline/url.js.map +1 -0
  161. package/lib/prompt.js +12 -0
  162. package/lib/prompt.js.map +1 -0
  163. package/lib/provider.js +155 -0
  164. package/lib/provider.js.map +1 -0
  165. package/lib/providers/anysearch.js +118 -0
  166. package/lib/providers/anysearch.js.map +1 -0
  167. package/lib/providers/baidu-qianfan.js +123 -0
  168. package/lib/providers/baidu-qianfan.js.map +1 -0
  169. package/lib/providers/bocha.js +237 -0
  170. package/lib/providers/bocha.js.map +1 -0
  171. package/lib/providers/brave.js +125 -0
  172. package/lib/providers/brave.js.map +1 -0
  173. package/lib/providers/builtin.js +117 -0
  174. package/lib/providers/builtin.js.map +1 -0
  175. package/lib/providers/descriptor.js +24 -0
  176. package/lib/providers/descriptor.js.map +1 -0
  177. package/lib/providers/hackernews.js +96 -0
  178. package/lib/providers/hackernews.js.map +1 -0
  179. package/lib/providers/http.js +123 -0
  180. package/lib/providers/http.js.map +1 -0
  181. package/lib/providers/index.js +17 -0
  182. package/lib/providers/index.js.map +1 -0
  183. package/lib/providers/keyed-meta.js +18 -0
  184. package/lib/providers/keyed-meta.js.map +1 -0
  185. package/lib/providers/keyed.js +175 -0
  186. package/lib/providers/keyed.js.map +1 -0
  187. package/lib/providers/linkup.js +87 -0
  188. package/lib/providers/linkup.js.map +1 -0
  189. package/lib/providers/metaso.js +84 -0
  190. package/lib/providers/metaso.js.map +1 -0
  191. package/lib/providers/openalex.js +133 -0
  192. package/lib/providers/openalex.js.map +1 -0
  193. package/lib/providers/platforms.js +195 -0
  194. package/lib/providers/platforms.js.map +1 -0
  195. package/lib/providers/registry.js +143 -0
  196. package/lib/providers/registry.js.map +1 -0
  197. package/lib/providers/searxng.js +153 -0
  198. package/lib/providers/searxng.js.map +1 -0
  199. package/lib/providers/semanticscholar.js +104 -0
  200. package/lib/providers/semanticscholar.js.map +1 -0
  201. package/lib/providers/serper.js +97 -0
  202. package/lib/providers/serper.js.map +1 -0
  203. package/lib/providers/stackexchange.js +126 -0
  204. package/lib/providers/stackexchange.js.map +1 -0
  205. package/lib/providers/tavily.js +94 -0
  206. package/lib/providers/tavily.js.map +1 -0
  207. package/lib/providers/unavailable.js +21 -0
  208. package/lib/providers/unavailable.js.map +1 -0
  209. package/lib/providers/wikipedia.js +112 -0
  210. package/lib/providers/wikipedia.js.map +1 -0
  211. package/lib/providers/zhipu.js +139 -0
  212. package/lib/providers/zhipu.js.map +1 -0
  213. package/lib/router.js +617 -252
  214. package/lib/router.js.map +1 -1
  215. package/lib/safe-http.js +27 -9
  216. package/lib/safe-http.js.map +1 -1
  217. package/lib/singleflight.js +69 -0
  218. package/lib/singleflight.js.map +1 -0
  219. package/lib/skill.js +92 -0
  220. package/lib/skill.js.map +1 -0
  221. package/lib/store.js +381 -53
  222. package/lib/store.js.map +1 -1
  223. package/lib/tool-defs.js +26 -0
  224. package/lib/tool-defs.js.map +1 -0
  225. package/lib/tools.js +98 -666
  226. package/lib/tools.js.map +1 -1
  227. package/lib/types/actions/approval.d.ts +41 -0
  228. package/lib/types/actions/cache.d.ts +3 -0
  229. package/lib/types/actions/errors.d.ts +19 -0
  230. package/lib/types/actions/format.d.ts +14 -0
  231. package/lib/types/actions/history.d.ts +12 -0
  232. package/lib/types/actions/index-view.d.ts +32 -0
  233. package/lib/types/actions/legacy.d.ts +30 -0
  234. package/lib/types/actions/read.d.ts +6 -0
  235. package/lib/types/actions/registry.d.ts +19 -0
  236. package/lib/types/actions/rules.d.ts +7 -0
  237. package/lib/types/actions/run.d.ts +34 -0
  238. package/lib/types/actions/schema.d.ts +21 -0
  239. package/lib/types/actions/search.d.ts +6 -0
  240. package/lib/types/actions/sources.d.ts +19 -0
  241. package/lib/types/actions/types.d.ts +138 -0
  242. package/lib/types/backend-registry.d.ts +33 -10
  243. package/lib/types/browser-access.d.ts +44 -0
  244. package/lib/types/browser-service.d.ts +1 -1
  245. package/lib/types/cache-key.d.ts +5 -0
  246. package/lib/types/catalog/load.d.ts +14 -0
  247. package/lib/types/catalog/recommend.d.ts +75 -0
  248. package/lib/types/catalog/schema.d.ts +91 -0
  249. package/lib/types/client/RubricEditor.d.ts +6 -0
  250. package/lib/types/client/fields.d.ts +17 -0
  251. package/lib/types/client/form-specs.d.ts +118 -0
  252. package/lib/types/client/form.d.ts +66 -17
  253. package/lib/types/client/index.d.ts +4 -1
  254. package/lib/types/client/locales.d.ts +147 -2
  255. package/lib/types/client/sources-table.d.ts +17 -0
  256. package/lib/types/client/styles.d.ts +15 -0
  257. package/lib/types/client/validators.d.ts +50 -0
  258. package/lib/types/config-enums.d.ts +17 -0
  259. package/lib/types/config.d.ts +937 -6
  260. package/lib/types/deps.d.ts +15 -2
  261. package/lib/types/engines.d.ts +62 -8
  262. package/lib/types/extract.d.ts +1 -1
  263. package/lib/types/fetch.d.ts +53 -3
  264. package/lib/types/history.d.ts +24 -0
  265. package/lib/types/index.d.ts +780 -0
  266. package/lib/types/pipeline/align.d.ts +95 -0
  267. package/lib/types/pipeline/blocks.d.ts +67 -0
  268. package/lib/types/pipeline/budget-spec.d.ts +30 -0
  269. package/lib/types/pipeline/candidates.d.ts +35 -0
  270. package/lib/types/pipeline/clean.d.ts +21 -0
  271. package/lib/types/pipeline/compile.d.ts +143 -0
  272. package/lib/types/pipeline/corpus.d.ts +35 -0
  273. package/lib/types/pipeline/coverage.d.ts +90 -0
  274. package/lib/types/pipeline/fusion.d.ts +51 -0
  275. package/lib/types/pipeline/gate.d.ts +141 -0
  276. package/lib/types/pipeline/judge-status.d.ts +83 -0
  277. package/lib/types/pipeline/judges/calibration-spec.d.ts +6 -0
  278. package/lib/types/pipeline/judges/calibration.d.ts +12 -0
  279. package/lib/types/pipeline/judges/coverage.d.ts +67 -0
  280. package/lib/types/pipeline/judges/errors.d.ts +14 -0
  281. package/lib/types/pipeline/judges/http.d.ts +61 -0
  282. package/lib/types/pipeline/judges/model-scorer.d.ts +81 -0
  283. package/lib/types/pipeline/judges/protocols/llm.d.ts +52 -0
  284. package/lib/types/pipeline/judges/protocols/rerank.d.ts +39 -0
  285. package/lib/types/pipeline/judges/protocols/systemone.d.ts +97 -0
  286. package/lib/types/pipeline/judges/providers-spec.d.ts +38 -0
  287. package/lib/types/pipeline/judges/providers.d.ts +45 -0
  288. package/lib/types/pipeline/judges/tokens.d.ts +24 -0
  289. package/lib/types/pipeline/judges/types.d.ts +182 -0
  290. package/lib/types/pipeline/ledger.d.ts +138 -0
  291. package/lib/types/pipeline/lexical.d.ts +77 -0
  292. package/lib/types/pipeline/plan.d.ts +102 -0
  293. package/lib/types/pipeline/render.d.ts +35 -0
  294. package/lib/types/pipeline/rubrics-spec.d.ts +70 -0
  295. package/lib/types/pipeline/rubrics.d.ts +69 -0
  296. package/lib/types/pipeline/run.d.ts +223 -0
  297. package/lib/types/pipeline/score.d.ts +117 -0
  298. package/lib/types/pipeline/select.d.ts +100 -0
  299. package/lib/types/pipeline/service.d.ts +80 -0
  300. package/lib/types/pipeline/sources-spec.d.ts +28 -0
  301. package/lib/types/pipeline/task.d.ts +33 -0
  302. package/lib/types/pipeline/types.d.ts +245 -0
  303. package/lib/types/pipeline/url.d.ts +43 -0
  304. package/lib/types/prompt.d.ts +7 -0
  305. package/lib/types/provider.d.ts +78 -0
  306. package/lib/types/providers/anysearch.d.ts +50 -0
  307. package/lib/types/providers/baidu-qianfan.d.ts +69 -0
  308. package/lib/types/providers/bocha.d.ts +71 -0
  309. package/lib/types/providers/brave.d.ts +40 -0
  310. package/lib/types/providers/builtin.d.ts +10 -0
  311. package/lib/types/providers/descriptor.d.ts +7 -0
  312. package/lib/types/providers/hackernews.d.ts +31 -0
  313. package/lib/types/providers/http.d.ts +63 -0
  314. package/lib/types/providers/index.d.ts +17 -0
  315. package/lib/types/providers/keyed-meta.d.ts +8 -0
  316. package/lib/types/providers/keyed.d.ts +83 -0
  317. package/lib/types/providers/linkup.d.ts +47 -0
  318. package/lib/types/providers/metaso.d.ts +37 -0
  319. package/lib/types/providers/openalex.d.ts +48 -0
  320. package/lib/types/providers/platforms.d.ts +25 -0
  321. package/lib/types/providers/registry.d.ts +172 -0
  322. package/lib/types/providers/searxng.d.ts +31 -0
  323. package/lib/types/providers/semanticscholar.d.ts +31 -0
  324. package/lib/types/providers/serper.d.ts +32 -0
  325. package/lib/types/providers/stackexchange.d.ts +55 -0
  326. package/lib/types/providers/tavily.d.ts +49 -0
  327. package/lib/types/providers/unavailable.d.ts +15 -0
  328. package/lib/types/providers/wikipedia.d.ts +32 -0
  329. package/lib/types/providers/zhipu.d.ts +54 -0
  330. package/lib/types/router.d.ts +154 -7
  331. package/lib/types/singleflight.d.ts +19 -0
  332. package/lib/types/skill.d.ts +73 -0
  333. package/lib/types/store.d.ts +221 -3
  334. package/lib/types/tool-defs.d.ts +40 -0
  335. package/lib/types/tools.d.ts +26 -10
  336. package/lib/types/util.d.ts +28 -4
  337. package/lib/util.js +22 -5
  338. package/lib/util.js.map +1 -1
  339. package/package.json +49 -37
package/CHANGELOG.md ADDED
@@ -0,0 +1,55 @@
1
+ # 更新记录
2
+
3
+ ## 0.2.0(2026-10-05)
4
+
5
+ 正式发布 0.2.0 基线。继承下方 rc.1 的工具面、来源、证据管线与兼容范围;真实验证的宿主仍为 DSH 0.2.0-rc.2,可选 Browser 0.2.0。
6
+
7
+ - 修复同一原文块支持多个需求时只保留一处摘录的问题:按需求保留不同窗口,覆盖统计只承认实际被选入的需求;不同窗口使用不同证据 ID,`history.expand` 可分别展开。
8
+ - 底层选择器增加可选的渲染后 token 预算回调、按原文块计算每 URL 配额、每块窗口上限与按需求定位锚点;默认行为仍使用字符预算。这些选项尚未接入宿主设置,冻结样本不支持把它们整体切为默认策略。
9
+ - 增加仅检查交付摘录的支持度评测,区分整块金标命中与摘录实际保留的事实。
10
+ - 修复测试隔离:来源路由的模拟请求同时模拟 DNS,超时场景显式保留测试事件循环;发布工作流同时执行 bench 类型检查与测试。
11
+ - 本地完整验证:711 项插件测试、94 项 bench 测试、类型检查、peer 范围、构建与客户端 bundle 检查通过。真实 DeepSeek 对比采用 API 返回的 token 用量;节省幅度只适用于已记录样本。
12
+
13
+ 仍适用 rc.1 下方列出的已知限制。规则评分与覆盖为启发式,整块评分或自定义 judge 的高分不保证摘录包含所有条件;有精确条件、数字或否定的任务应展开原文核验。严格 token 上限尚不是用户配置的默认保证。
14
+
15
+ ## 0.2.0-rc.1(预发布)
16
+
17
+ 0.2.0 线的第一个版本。基线是 DSH 0.2.0-rc.2,与 `@anweat/dsh-browser 0.2.0` 一致。
18
+
19
+ ### 兼容性与基线
20
+
21
+ - 只支持 DSH `>=0.2.0-rc.2 <0.2.1-0`;可选配套浏览器插件为 `@anweat/dsh-browser ^0.2.0`。
22
+ - **不再支持 DSH 0.1.x 宿主线,也不再支持旧的 dsh-browser 0.1.x 线;仍在这两条线上的用户请停留在 dsh-web-search-pro 0.1.15。** 本插件去掉了为旧宿主保留的兼容分支。
23
+ - 检测到旧版 dsh-browser 0.1.x 服务时,本插件不会驱动它:`read.snapshot`、`read.fetch mode=playwright`、浏览器平台与 OpenCLI 平台返回 `CAPABILITY_UNAVAILABLE`(`dsh-browser 0.1.x is not supported by web-search-pro 0.2+; upgrade to @anweat/dsh-browser ^0.2.0`);`read.fetch mode=auto` 跳过浏览器;`sources.status` 显示 `browser: legacy (unsupported)`;其余功能照常。判定方式是服务形状(不带 `observe` / `listTargets` / `sessionState` 中任何一个即为旧线),因为服务没有版本字段。
24
+
25
+ ### 破坏性变更
26
+
27
+ - **工具名**:原 11 个 `web_*` 工具(`web_search_pro`、`web_fetch_pro` 等)不再注册,没有兼容包装;改为常驻的 `web_index`(目录)与 `web_call`(调用)两个工具,共 20 个动作(`search.run`、`read.fetch`、`sources.status` 等,`toolSurface: flat` 仅供调试)。模型在 `web_call` 里写旧工具名会得到新动作名和翻译后的参数。已存储的数据(历史、页面、规则、证据、账本)不受影响。
28
+ - **`read.fetch` 默认只返回 20k 字符**(原 `web_fetch_pro` 为 100k,配置项 `fetchDefaultChars`),长页用 `offset` 从已存快照续读;输出带 `truncated` / `nextOffset` / `totalChars`。`read.contents`、`read.snapshot`、历史回放与 `ctx.web` 抓取出口使用同一套预算。
29
+ - **自定义平台不能与内置平台(或其他 provider)重名**:同名的键不会覆盖内置来源,会被拒绝并在 `sources.status` 的 `notes` 里列出。
30
+ - **写操作的审批**:缓存 / 历史 / 规则变更与依赖安装按动作审批。没有 dsh-browser(或检测到旧版)时,`standard` 模式下一律询问;装有 0.2 浏览器插件时仍读取它的 `automationMode`。
31
+ - **所有引擎都返回合法空结果时**,`search.run` 返回空结果和说明,不再报错。
32
+ - 融合排序的量纲有调整(按来源归一化,加分每个 URL 只加一次),结果顺序可能与 0.1.x 不同。
33
+ - 博查默认地址改为 `https://api.bocha.cn`。
34
+
35
+ ### 新功能
36
+
37
+ - **证据管线与证据包**:`search.run` 传 `task` / `profile` / `needs` / `constraints` / `budget` 时输出 EvidencePack:按 profile 与语言选来源、候选合并与 URL 规范化、读取与分块、规则评分(含跨语言对齐)、预算内选择、覆盖与缺口说明、有界第二轮补搜;`history.expand` 按 ID 展开摘录原文。读取质量差的页面(空壳、JS 外壳、登录墙)在浏览器就绪时自动升级渲染。
38
+ - **来源注册表、目录与推荐**:每个引擎与平台都是“描述符 + 适配器”,探测、冷却、并发合并、历史走同一条路径;`search.recommend` 按任务推荐来源,并给出待配置来源的设置步骤;目录与描述符标注成本层级(`anonymous` / `free-quota` / `paid`)。
39
+ - **匿名来源**:Wikipedia、Hacker News、Stack Exchange、OpenAlex、Semantic Scholar、AnySearch、arXiv、PubMed、SearXNG、RSS 等,以及无 Key 的 Exa MCP 路线(经 mcporter)。
40
+ - **需 Key 来源的接口**:博查(已实测)、Tavily、Brave、Linkup、Serper、秘塔、智谱、百度千帆;未配置 Key 时只显示为待配置步骤,不会执行。密钥走 DSH Credentials。
41
+ - **来源策略与请求额度**:`sources.priority` / `sources.disabled`、`evidence.sourcePolicy: default | anonymous-only`;`sources.budget.<id>: {total, daily}` 可选请求额度(默认不设上限),用尽后跳过并退回其他来源。
42
+ - **评分模型与用量账本**:`evidence.judge.mode`(`off | shadow | control | hybrid`);provider 协议 `systemone` / `rerank` / `llm` 与内置预设,可自定义;提示词(rubric)可配置、带版本;每次模型调用先预留后结算,记入持久化账本,受 `evidence.budget` 单次 / 每日上限约束;`sources.status` 显示 provider 与当日用量。
43
+ - **覆盖判定**(默认关闭):`evidence.coverage` 的 `off | shadow | control`,只降级、不删证据;建议先在 `shadow` 下观察自己的分布。
44
+ - **`ctx.web` provider 路由**:`registerProvider: true` 并在 `web` 条目选中本插件后,宿主内置的 `web_search` / `web_fetch` 返回本插件的证据包与预算内正文;`sources.status` 显示选中状态。
45
+ - **设置面板**:覆盖上述全部新增配置(分组折叠,中英文),密钥只走 DSH Credentials,不回显。
46
+ - **随包 skill** `dsh-web-search-pro`(用法与排障参考);常驻系统提示只有一行。
47
+ - **并发与可靠性**:SQLite `busy_timeout` 与事务化组合写入、相同请求的 in-flight 合并、空结果与用户取消不再触发引擎冷却、关闭后在途请求不抛错、各出口统一的输出整形与 `truncated` 标记;dsh-browser 改为按调用解析的可选依赖(未安装、未启用、运行中移除都不影响其余功能)。
48
+
49
+ ### 已知限制
50
+
51
+ - 评测标注(`bench/` 的金标)全部是未经人工复核的 LLM 草稿;Jev / 覆盖判定的阈值与效果据此得出,换 provider、模型或 rubric 版本都要重新校准。
52
+ - 需 Key 来源中,只有博查做过真实调用验证;Tavily、Brave、Linkup、Serper、秘塔、智谱、百度千帆的接口依据官方文档与参考实现编写,标记为 `not verified live`,免费额度同样只读了官网页面,没有注册验证。Exa 无 Key 路线的限额未知。
53
+ - 需要登录的平台(小红书、知乎、微博、豆瓣、贴吧、抖音、快手、Twitter / X 等)需要真实登录态才能验证,尚未在真实账号下测过。
54
+ - 设置面板在桌面端的观感(折叠、暗色主题、窄屏)与保存后的热更新只做过组件渲染与内存 scope 测试,需在真实桌面界面确认。
55
+ - `toolSurface` 与 `registerProvider` 需重启 profile 才生效。