argo-search 1.0.1 → 2.9.8

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 (472) hide show
  1. package/LICENSE +201 -21
  2. package/README.en.md +735 -0
  3. package/README.es.md +777 -0
  4. package/README.ja.md +777 -0
  5. package/README.ko.md +777 -0
  6. package/README.md +778 -320
  7. package/SKILL.md +135 -0
  8. package/assets/readme/hero.svg +121 -0
  9. package/assets/readme/made-with-beautify.svg +10 -0
  10. package/assets/readme/proof-routes.svg +73 -0
  11. package/assets/readme/why-better.svg +104 -0
  12. package/assets/readme/workflow.svg +83 -0
  13. package/backends/domain_profiles.json +2356 -96
  14. package/backends/engine_registry.yaml +3428 -503
  15. package/backends/query_synonyms_cn.json +35 -0
  16. package/backends/quota_profiles.json +2488 -160
  17. package/backends/source_types_cn.json +109 -0
  18. package/backends/text_lexicon.json +44 -0
  19. package/bin/argo +772 -0
  20. package/bin/argo.js +102 -39
  21. package/config.yaml +5139 -367
  22. package/cordis.patch.yml +21 -0
  23. package/data/countries.json +40 -0
  24. package/data/lang_matrix/lang_capability.json +842 -0
  25. package/data/lang_matrix/matrix_2026-09-10.json +11921 -0
  26. package/data/regions_cn.json +1 -0
  27. package/docs/ADDING_NEW_ENGINE.md +184 -0
  28. package/docs/ARGO_INTRO.md +124 -0
  29. package/docs/DATA_SOURCE_GAPS.md +81 -0
  30. package/docs/DESIGN_LOCAL_DATA_FUSION.md +90 -0
  31. package/docs/ENGINE_CATALOG.md +575 -0
  32. package/docs/MCP_SETUP.md +108 -0
  33. package/docs/PLATFORM_PATHS.md +111 -0
  34. package/docs/RELEASE_NOTES_v2.8.0.md +71 -0
  35. package/docs/RELEASE_NOTES_v2.8.2.md +63 -0
  36. package/docs/RELEASE_NOTES_v2.8.3.md +55 -0
  37. package/docs/RELEASE_NOTES_v2.8.4.md +79 -0
  38. package/docs/RELEASE_NOTES_v2.8.5.md +102 -0
  39. package/docs/RELEASE_NOTES_v2.8.6.md +66 -0
  40. package/docs/RELEASE_NOTES_v2.8.7.md +65 -0
  41. package/docs/RELEASE_NOTES_v2.8.8.md +67 -0
  42. package/docs/RELEASE_NOTES_v2.8.9.md +67 -0
  43. package/docs/RELEASE_NOTES_v2.9.0.md +64 -0
  44. package/docs/RELEASE_NOTES_v2.9.8.md +73 -0
  45. package/docs/SEARCH_ARCHIVE.md +115 -0
  46. package/docs/assets/architecture.svg +104 -0
  47. package/docs/assets/hero.svg +98 -0
  48. package/docs/engines/bangumi.md +27 -0
  49. package/docs/engines/biorxiv.md +27 -0
  50. package/docs/engines/clawhub.md +27 -0
  51. package/docs/engines/crt_sh.md +27 -0
  52. package/docs/engines/datacite.md +27 -0
  53. package/docs/engines/deps_dev.md +27 -0
  54. package/docs/engines/douban_movie.md +27 -0
  55. package/docs/engines/endoflife.md +27 -0
  56. package/docs/engines/flk_law.md +27 -0
  57. package/docs/engines/fxtwitter.md +27 -0
  58. package/docs/engines/google_news.md +27 -0
  59. package/docs/engines/gov_regulations.md +27 -0
  60. package/docs/engines/guqian.md +27 -0
  61. package/docs/engines/hackernews.md +27 -0
  62. package/docs/engines/iplant.md +27 -0
  63. package/docs/engines/keenable.md +27 -0
  64. package/docs/engines/met_museum.md +27 -0
  65. package/docs/engines/nasa_images.md +27 -0
  66. package/docs/engines/netease_music.md +27 -0
  67. package/docs/engines/npm.md +27 -0
  68. package/docs/engines/nvd.md +27 -0
  69. package/docs/engines/openreview.md +27 -0
  70. package/docs/engines/openstd.md +27 -0
  71. package/docs/engines/parallel_free.md +27 -0
  72. package/docs/engines/people_daily.md +27 -0
  73. package/docs/engines/realtime_index.md +27 -0
  74. package/docs/engines/sec_edgar.md +27 -0
  75. package/docs/engines/seltz.md +27 -0
  76. package/docs/engines/skillsmp.md +27 -0
  77. package/docs/engines/sspai.md +27 -0
  78. package/docs/engines/std_samr.md +27 -0
  79. package/docs/engines/train.md +27 -0
  80. package/docs/engines/un_comtrade.md +27 -0
  81. package/docs/engines/wikisource.md +27 -0
  82. package/docs/engines/zdic.md +27 -0
  83. package/docs/engines/zenodo.md +27 -0
  84. package/docs/engines/zhihu_hot_app.md +27 -0
  85. package/docs//344/270/272/344/273/200/344/271/210/351/200/211/346/213/251argo.md +176 -0
  86. package/engines/README.md +10 -0
  87. package/engines/_template_cli.yaml +39 -0
  88. package/engines/_template_http.yaml +37 -0
  89. package/engines/plugins/_template_plugin.py +50 -0
  90. package/engines/specs/_cisa_kev.yaml +54 -0
  91. package/engines/specs/_osv.yaml +63 -0
  92. package/engines/specs/aljazeera.yaml +43 -0
  93. package/engines/specs/antara.yaml +43 -0
  94. package/engines/specs/artic.yaml +20 -0
  95. package/engines/specs/aviation_weather.yaml +39 -0
  96. package/engines/specs/bangumi.yaml +21 -0
  97. package/engines/specs/biorxiv.yaml +24 -0
  98. package/engines/specs/carbon_intensity.yaml +32 -0
  99. package/engines/specs/cfets.yaml +41 -0
  100. package/engines/specs/cinii.yaml +44 -0
  101. package/engines/specs/clawhub.yaml +49 -0
  102. package/engines/specs/cleveland.yaml +19 -0
  103. package/engines/specs/cn_ai_news.yaml +43 -0
  104. package/engines/specs/core.yaml +35 -0
  105. package/engines/specs/crt_sh.yaml +38 -0
  106. package/engines/specs/ct24.yaml +43 -0
  107. package/engines/specs/datacite.yaml +27 -0
  108. package/engines/specs/datagov_uk.yaml +41 -0
  109. package/engines/specs/ddgs_images.yaml +45 -0
  110. package/engines/specs/deepseek_search.yaml +74 -0
  111. package/engines/specs/deezer.yaml +20 -0
  112. package/engines/specs/defillama.yaml +38 -0
  113. package/engines/specs/deps_dev.yaml +21 -0
  114. package/engines/specs/digup.yaml +36 -0
  115. package/engines/specs/doi.yaml +39 -0
  116. package/engines/specs/douban_movie.yaml +22 -0
  117. package/engines/specs/dw_news.yaml +47 -0
  118. package/engines/specs/egov_law.yaml +21 -0
  119. package/engines/specs/elpais.yaml +43 -0
  120. package/engines/specs/endoflife.yaml +21 -0
  121. package/engines/specs/energy_charts.yaml +21 -0
  122. package/engines/specs/factcheck_org.yaml +52 -0
  123. package/engines/specs/faz.yaml +43 -0
  124. package/engines/specs/federal_register.yaml +57 -0
  125. package/engines/specs/firecrawl.yaml +53 -0
  126. package/engines/specs/flk_law.yaml +24 -0
  127. package/engines/specs/folha.yaml +43 -0
  128. package/engines/specs/france24.yaml +44 -0
  129. package/engines/specs/full_fact.yaml +47 -0
  130. package/engines/specs/fxtwitter.yaml +36 -0
  131. package/engines/specs/gbfs_nyc.yaml +32 -0
  132. package/engines/specs/gdacs.yaml +21 -0
  133. package/engines/specs/gdelt.yaml +64 -0
  134. package/engines/specs/gleif.yaml +55 -0
  135. package/engines/specs/google_news.yaml +22 -0
  136. package/engines/specs/gov_regulations.yaml +38 -0
  137. package/engines/specs/guardian_rss.yaml +59 -0
  138. package/engines/specs/hkex.yaml +40 -0
  139. package/engines/specs/hurriyet.yaml +43 -0
  140. package/engines/specs/iplant.yaml +25 -0
  141. package/engines/specs/jikan.yaml +24 -0
  142. package/engines/specs/jolpica.yaml +20 -0
  143. package/engines/specs/k10plus.yaml +20 -0
  144. package/engines/specs/keenable.yaml +44 -0
  145. package/engines/specs/keenable_free.yaml +36 -0
  146. package/engines/specs/lefigaro.yaml +43 -0
  147. package/engines/specs/listenbrainz.yaml +19 -0
  148. package/engines/specs/matichon.yaml +43 -0
  149. package/engines/specs/met_museum.yaml +21 -0
  150. package/engines/specs/nasa_images.yaml +45 -0
  151. package/engines/specs/netease_music.yaml +38 -0
  152. package/engines/specs/nhk.yaml +43 -0
  153. package/engines/specs/nhtsa_vpic.yaml +20 -0
  154. package/engines/specs/noaa_swpc.yaml +20 -0
  155. package/engines/specs/nvd.yaml +38 -0
  156. package/engines/specs/obis.yaml +20 -0
  157. package/engines/specs/opencitations.yaml +52 -0
  158. package/engines/specs/openf1.yaml +21 -0
  159. package/engines/specs/openfoodfacts.yaml +45 -0
  160. package/engines/specs/openligadb.yaml +20 -0
  161. package/engines/specs/openreview.yaml +37 -0
  162. package/engines/specs/openstd.yaml +21 -0
  163. package/engines/specs/people_daily.yaml +22 -0
  164. package/engines/specs/realtime_index.yaml +34 -0
  165. package/engines/specs/ror.yaml +20 -0
  166. package/engines/specs/satnogs.yaml +20 -0
  167. package/engines/specs/sec_edgar.yaml +46 -0
  168. package/engines/specs/shfe.yaml +39 -0
  169. package/engines/specs/skillsmp.yaml +50 -0
  170. package/engines/specs/sogou_weixin_browser.yaml +30 -0
  171. package/engines/specs/soilgrids.yaml +25 -0
  172. package/engines/specs/sspai.yaml +36 -0
  173. package/engines/specs/stackexchange.yaml +46 -0
  174. package/engines/specs/std_samr.yaml +21 -0
  175. package/engines/specs/tass.yaml +43 -0
  176. package/engines/specs/tavily_free.yaml +56 -0
  177. package/engines/specs/tle_mirror.yaml +21 -0
  178. package/engines/specs/train.yaml +37 -0
  179. package/engines/specs/tvmaze.yaml +20 -0
  180. package/engines/specs/twitter_syndication.yaml +31 -0
  181. package/engines/specs/un_comtrade.yaml +23 -0
  182. package/engines/specs/unpaywall.yaml +54 -0
  183. package/engines/specs/vnpress.yaml +43 -0
  184. package/engines/specs/weather.yaml +32 -0
  185. package/engines/specs/who_don.yaml +21 -0
  186. package/engines/specs/who_gho.yaml +20 -0
  187. package/engines/specs/wikimedia_commons.yaml +34 -0
  188. package/engines/specs/wikisource.yaml +22 -0
  189. package/engines/specs/worms.yaml +19 -0
  190. package/engines/specs/x_trending.yaml +34 -0
  191. package/engines/specs/yna.yaml +43 -0
  192. package/engines/specs/ynet.yaml +43 -0
  193. package/engines/specs/yuanbao.yaml +93 -0
  194. package/engines/specs/zbmath.yaml +40 -0
  195. package/engines/specs/zdic.yaml +22 -0
  196. package/engines/specs/zenodo.yaml +27 -0
  197. package/engines/specs/zhihu_hot_app.yaml +35 -0
  198. package/mcp/clients.yaml +106 -0
  199. package/package.json +55 -12
  200. package/packages/dsh-plugin/README.md +152 -0
  201. package/packages/dsh-plugin/cordis.patch.yml +48 -0
  202. package/packages/dsh-plugin/dsh/client.js +1533 -0
  203. package/packages/dsh-plugin/dsh/diagnostics.js +54 -0
  204. package/packages/dsh-plugin/dsh/index.js +527 -0
  205. package/packages/dsh-plugin/dsh/native-tools.mjs +749 -0
  206. package/packages/dsh-plugin/dsh/runner.js +666 -0
  207. package/packages/dsh-plugin/dsh/wide-research.js +878 -0
  208. package/packages/dsh-plugin/package.json +38 -0
  209. package/packages/dsh-plugin/scripts/sync-local.sh +70 -0
  210. package/packages/dsh-plugin/test/client.test.js +406 -0
  211. package/packages/dsh-plugin/test/config.test.js +30 -0
  212. package/packages/dsh-plugin/test/diagnostics.test.js +28 -0
  213. package/packages/dsh-plugin/test/index.test.js +1382 -0
  214. package/references/query-templates.md +96 -0
  215. package/references/query-templates.yaml +118 -0
  216. package/scripts/ab_eval.py +219 -0
  217. package/scripts/ab_eval_p0p1.py +266 -0
  218. package/scripts/adaptive.py +294 -70
  219. package/scripts/answer.py +154 -0
  220. package/scripts/archive_run.py +591 -0
  221. package/scripts/argo_engine_registry.py +172 -0
  222. package/scripts/argo_paths.py +728 -0
  223. package/scripts/article.py +136 -0
  224. package/scripts/article_meta.py +131 -0
  225. package/scripts/arxiv_source.py +201 -0
  226. package/scripts/badcase_ledger.py +252 -0
  227. package/scripts/batch_probe.py +241 -0
  228. package/scripts/benchmark.py +19 -0
  229. package/scripts/bounded_run.py +144 -0
  230. package/scripts/browser_auth.py +323 -0
  231. package/scripts/budget.py +247 -0
  232. package/scripts/budget_cli.py +93 -0
  233. package/scripts/build_release_assets.sh +65 -0
  234. package/scripts/burstiness_detector.py +147 -0
  235. package/scripts/cache.py +1066 -67
  236. package/scripts/cache_guard.py +271 -0
  237. package/scripts/cache_key_vdom.py +56 -0
  238. package/scripts/cache_similarity.py +170 -0
  239. package/scripts/caliber_isolation.py +195 -0
  240. package/scripts/calibrate_lowquality.py +210 -0
  241. package/scripts/candidate_envelope.py +366 -0
  242. package/scripts/chrome_cdp.py +871 -0
  243. package/scripts/ci_drift_gate.py +90 -0
  244. package/scripts/circuit_breaker.py +389 -0
  245. package/scripts/citations.py +334 -0
  246. package/scripts/cite_cli.py +59 -0
  247. package/scripts/cjk_tokens.py +95 -0
  248. package/scripts/clarify.py +47 -24
  249. package/scripts/cli_io.py +240 -0
  250. package/scripts/config.py +683 -45
  251. package/scripts/config_cache.py +402 -0
  252. package/scripts/conn_pool.py +220 -0
  253. package/scripts/content_boundary.py +46 -0
  254. package/scripts/content_security.py +685 -0
  255. package/scripts/content_signals.py +751 -0
  256. package/scripts/crawl.py +74 -35
  257. package/scripts/cross_lingual_trace.py +293 -0
  258. package/scripts/daemon.py +866 -0
  259. package/scripts/digup_bridge.py +214 -0
  260. package/scripts/dispatch_result.py +98 -0
  261. package/scripts/engine_admission.py +366 -0
  262. package/scripts/engine_dispatch.py +982 -0
  263. package/scripts/engine_env.py +539 -0
  264. package/scripts/engine_failure.py +411 -0
  265. package/scripts/engine_families.py +738 -0
  266. package/scripts/engine_policy.py +218 -0
  267. package/scripts/engine_requires.py +190 -0
  268. package/scripts/engine_status.py +322 -0
  269. package/scripts/engine_validate.py +638 -0
  270. package/scripts/engines.py +799 -294
  271. package/scripts/engines_base.py +1521 -0
  272. package/scripts/engines_builders.py +310 -0
  273. package/scripts/engines_builders_batch10.py +204 -0
  274. package/scripts/engines_builders_batch11.py +174 -0
  275. package/scripts/engines_builders_batch12.py +103 -0
  276. package/scripts/engines_builders_batch13.py +340 -0
  277. package/scripts/engines_builders_batch14.py +656 -0
  278. package/scripts/engines_builders_batch15.py +249 -0
  279. package/scripts/engines_builders_batch9.py +1468 -0
  280. package/scripts/engines_builders_cn.py +2283 -0
  281. package/scripts/engines_builders_data.py +2923 -0
  282. package/scripts/engines_builders_data_macro.py +775 -0
  283. package/scripts/engines_builders_feeds.py +255 -0
  284. package/scripts/engines_builders_intl.py +1239 -0
  285. package/scripts/engines_builders_keyless.py +111 -0
  286. package/scripts/engines_builders_search.py +440 -0
  287. package/scripts/engines_builders_tech.py +1359 -0
  288. package/scripts/evidence.py +620 -166
  289. package/scripts/evidence_loop.py +624 -0
  290. package/scripts/evidence_tier.py +298 -0
  291. package/scripts/except_sets.py +25 -0
  292. package/scripts/extract.py +55 -16
  293. package/scripts/fact_align.py +207 -0
  294. package/scripts/fact_crosscheck.py +230 -0
  295. package/scripts/fetch.py +25 -12
  296. package/scripts/fetch_browser.py +87 -0
  297. package/scripts/fetch_jsrun.py +122 -0
  298. package/scripts/fetch_quality.py +225 -0
  299. package/scripts/fetch_render_tinyfish.py +117 -0
  300. package/scripts/fetch_v3.py +1804 -0
  301. package/scripts/focus_extract.py +350 -0
  302. package/scripts/fulltext_store.py +169 -0
  303. package/scripts/fxtwitter_api.py +325 -0
  304. package/scripts/gen_engine_catalog.py +364 -0
  305. package/scripts/gen_native_tools.py +91 -0
  306. package/scripts/gen_routing_snapshot.py +195 -0
  307. package/scripts/health_check.py +140 -402
  308. package/scripts/health_probe.py +23 -8
  309. package/scripts/hot_state.py +134 -0
  310. package/scripts/http_client.py +1053 -0
  311. package/scripts/image_ops.py +430 -0
  312. package/scripts/image_vision/vision_probe.swift +126 -0
  313. package/scripts/install.ps1 +166 -0
  314. package/scripts/install.sh +221 -0
  315. package/scripts/job.py +1186 -0
  316. package/scripts/jump_resolver.py +235 -0
  317. package/scripts/lang_capability.py +150 -0
  318. package/scripts/lang_detect.py +289 -0
  319. package/scripts/lang_matrix_probe.py +329 -0
  320. package/scripts/lang_pref.py +311 -0
  321. package/scripts/link_source.py +340 -0
  322. package/scripts/local_image.py +970 -0
  323. package/scripts/local_seek.py +402 -0
  324. package/scripts/macro_countries.py +97 -0
  325. package/scripts/matrix_search_eval.py +1187 -0
  326. package/scripts/mcp_compact.py +234 -0
  327. package/scripts/mcp_diag.py +8 -3
  328. package/scripts/mcp_handlers.py +492 -0
  329. package/scripts/mcp_handlers_surface.py +157 -0
  330. package/scripts/mcp_launch.sh +124 -0
  331. package/scripts/mcp_local.py +241 -0
  332. package/scripts/mcp_server.py +125 -419
  333. package/scripts/mcp_setup.py +431 -0
  334. package/scripts/mcp_tools.py +331 -0
  335. package/scripts/mcp_transport.py +191 -0
  336. package/scripts/mcp_warm.py +127 -0
  337. package/scripts/min_version_scan.py +335 -0
  338. package/scripts/net_proxy.py +258 -0
  339. package/scripts/network_aware.py +152 -0
  340. package/scripts/output_transparency.py +200 -0
  341. package/scripts/paid_policy.py +98 -0
  342. package/scripts/paper.py +274 -0
  343. package/scripts/pdf_extract.py +518 -0
  344. package/scripts/phrase_filter.py +66 -0
  345. package/scripts/plan.py +422 -0
  346. package/scripts/postprocess_signals.py +150 -0
  347. package/scripts/pre-commit +48 -0
  348. package/scripts/query_enhance.py +157 -0
  349. package/scripts/query_operators.py +196 -0
  350. package/scripts/query_rewriter.py +116 -7
  351. package/scripts/query_signals.py +300 -0
  352. package/scripts/query_templates.py +167 -0
  353. package/scripts/query_understanding.py +411 -0
  354. package/scripts/query_variants.py +298 -0
  355. package/scripts/quota.py +633 -76
  356. package/scripts/rank_signals.py +775 -0
  357. package/scripts/ranking_eval.py +319 -0
  358. package/scripts/readability_extract.py +433 -0
  359. package/scripts/recompute.py +415 -0
  360. package/scripts/recovery.py +616 -0
  361. package/scripts/recovery_l0.py +160 -0
  362. package/scripts/recovery_runner.py +150 -0
  363. package/scripts/redskill/redskill_engine.py +332 -0
  364. package/scripts/regression_p0p1.py +318 -0
  365. package/scripts/replay_eval.py +658 -0
  366. package/scripts/rerank_tfidf.py +225 -0
  367. package/scripts/research.py +607 -403
  368. package/scripts/research_cli.py +361 -0
  369. package/scripts/research_dossier.py +492 -0
  370. package/scripts/research_expand.py +169 -0
  371. package/scripts/research_gates.py +272 -0
  372. package/scripts/research_report.py +209 -0
  373. package/scripts/research_strategy.py +37 -0
  374. package/scripts/research_work_packages.py +195 -0
  375. package/scripts/result_lang.py +311 -0
  376. package/scripts/retry_policy.py +76 -0
  377. package/scripts/robots_guard.py +259 -0
  378. package/scripts/route.py +921 -254
  379. package/scripts/route_bangs.py +40 -0
  380. package/scripts/route_cache.py +243 -0
  381. package/scripts/route_combo.py +917 -0
  382. package/scripts/route_domains.py +341 -0
  383. package/scripts/route_lang.py +605 -0
  384. package/scripts/route_log.py +63 -0
  385. package/scripts/route_policy.py +250 -0
  386. package/scripts/rrf_classic.py +66 -0
  387. package/scripts/screenshot.py +73 -0
  388. package/scripts/search.py +886 -406
  389. package/scripts/search_attribution.py +185 -0
  390. package/scripts/search_benchmark.py +407 -0
  391. package/scripts/search_cli.py +640 -0
  392. package/scripts/search_entry.py +395 -0
  393. package/scripts/search_output.py +690 -0
  394. package/scripts/search_pipeline.py +926 -0
  395. package/scripts/search_rank.py +991 -0
  396. package/scripts/search_types.py +129 -16
  397. package/scripts/seek_locator.py +68 -0
  398. package/scripts/semantic_evidence.py +391 -0
  399. package/scripts/serp_guard.py +336 -0
  400. package/scripts/serp_kill_log.py +74 -0
  401. package/scripts/single_flight.py +120 -0
  402. package/scripts/social_engines/__init__.py +10 -0
  403. package/scripts/social_engines/bilibili_engine.py +131 -0
  404. package/scripts/social_engines/hackernews_engine.py +113 -0
  405. package/scripts/social_engines/reddit_engine.py +172 -0
  406. package/scripts/social_engines/twitter_engine.py +397 -0
  407. package/scripts/social_engines/v2ex_engine.py +101 -0
  408. package/scripts/social_engines/weibo_engine.py +128 -0
  409. package/scripts/social_engines/xiaohongshu_engine.py +137 -0
  410. package/scripts/social_engines/zhihu_engine.py +139 -0
  411. package/scripts/social_research.py +201 -0
  412. package/scripts/sogou_weixin_browser.py +318 -0
  413. package/scripts/source_ledger.py +249 -0
  414. package/scripts/stage_timing.py +58 -0
  415. package/scripts/stats_cli.py +107 -0
  416. package/scripts/straggler_policy.py +60 -0
  417. package/scripts/stylometry_detector.py +231 -0
  418. package/scripts/sync_backends.py +353 -0
  419. package/scripts/sync_installs.py +29 -0
  420. package/scripts/template_cli.py +127 -0
  421. package/scripts/text_lexicon.py +72 -0
  422. package/scripts/tfidf_router.py +109 -37
  423. package/scripts/time_utils.py +233 -0
  424. package/scripts/topic_research_profiles.py +643 -0
  425. package/scripts/train.py +737 -0
  426. package/scripts/tweet.py +596 -0
  427. package/scripts/url_canon.py +217 -0
  428. package/scripts/url_optimize.py +56 -0
  429. package/scripts/url_safety.py +236 -0
  430. package/scripts/usage_log.py +116 -0
  431. package/scripts/usage_log_clean.py +113 -0
  432. package/scripts/v2ex_nodes.py +311 -0
  433. package/scripts/variant_recall.py +188 -0
  434. package/scripts/watch.py +205 -0
  435. package/scripts/wechat_article.py +258 -0
  436. package/scripts/wide_research.py +447 -0
  437. package/scripts/wx.py +349 -0
  438. package/scripts/x_article_fetch.py +141 -0
  439. package/scripts/x_search.py +234 -0
  440. package/scripts/x_trending.py +189 -0
  441. package/scripts/yaml_load.py +67 -0
  442. package/scripts/zhihu_quota.py +139 -0
  443. package/sub-skills/ego-search/SKILL.md +253 -0
  444. package/sub-skills/ego-search/scripts/ego_search.py +800 -0
  445. package/sub-skills/ego-search/scripts/merge.py +226 -0
  446. package/sub-skills/ego-search/scripts/quality.py +64 -0
  447. package/sub-skills/ego-search/scripts/runtime.py +172 -0
  448. package/sub-skills/ego-search/scripts/safety.py +109 -0
  449. package/sub-skills/ego-search/scripts/serp_spec.py +109 -0
  450. package/sub-skills/ego-search/scripts/webbridge_adapter.py +374 -0
  451. package/sub-skills/js-run/SKILL.md +67 -0
  452. package/sub-skills/js-run/scripts/jsrun.py +112 -0
  453. package/sub-skills/js-run/scripts/shim.js +188 -0
  454. package/sub-skills/local-search/SKILL.md +50 -53
  455. package/sub-skills/local-search/bm25.py +186 -0
  456. package/sub-skills/local-search/cli_runner.py +331 -0
  457. package/sub-skills/local-search/config.yaml +152 -55
  458. package/sub-skills/local-search/engine_registry.py +91 -26
  459. package/sub-skills/local-search/{health_check.py → local_health_check.py} +140 -10
  460. package/sub-skills/local-search/local_search_adapter.py +13 -2
  461. package/sub-skills/local-search/parse_maps.yaml +40 -42
  462. package/sub-skills/local-search/parsers.py +328 -0
  463. package/sub-skills/local-search/search_v3.py +716 -242
  464. package/sub-skills/local-search/smart_router.py +47 -7
  465. package/sub-skills/local-seek/SKILL.md +110 -0
  466. package/sub-skills/local-seek/config/domains.yaml +20 -0
  467. package/sub-skills/local-seek/scripts/eval_rank.py +216 -0
  468. package/sub-skills/local-seek/scripts/eval_seek.py +224 -0
  469. package/sub-skills/local-seek/scripts/seek.py +1465 -0
  470. package/sub-skills/local-seek/scripts/seek_frecency.py +126 -0
  471. package/sub-skills/local-seek/scripts/seek_fts.py +430 -0
  472. package/sub-skills/local-seek/scripts/seek_rank.py +197 -0
@@ -0,0 +1,32 @@
1
+ # UK Carbon Intensity — 英国电网碳强度(国家电网 ESO 官方,免认证)
2
+ # 补 environment 域的「电网碳强度」维度。无查询参数:返回当前全国碳强度快照;
3
+ # 同域兄弟端点 /regional 给区域碳强度 + 发电燃料占比(generationmix)。
4
+ # 验证:
5
+ # python3 scripts/engine_validate.py --engine carbon_intensity --stage all --admit --write-doc
6
+
7
+ engine_id: carbon_intensity
8
+ type: http
9
+ enabled: true
10
+ cost_tier: free
11
+ method: GET
12
+ url: https://api.carbonintensity.org.uk/regional
13
+ timeout: 12
14
+ query_param: ""
15
+ canary_query: "carbon intensity"
16
+ desc: "英国电网碳强度与发电结构(国家电网官方,免认证)"
17
+ coverage: [environment, energy, realtime, official]
18
+ recommended: false
19
+ latency_ms: 1200
20
+
21
+ headers:
22
+ User-Agent: argo-search/1.0 (+carbon_intensity)
23
+ Accept: application/json
24
+
25
+ output_map:
26
+ items: data.0.regions
27
+ item_title: shortname
28
+ item_summary: intensity.index
29
+ url_template: "https://carbonintensity.org.uk/"
30
+
31
+ quality_queries:
32
+ - query: "carbon intensity"
@@ -0,0 +1,41 @@
1
+ # 中国外汇交易中心(CFETS)人民币中间价(免 key)
2
+ #
3
+ # 补的盲区:**在岸人民币官方价**。现有汇率源都是离岸/聚合口径:
4
+ # frankfurter 是 ECB 参考价、fx_rate 是 open.er-api 聚合价,都不是
5
+ # 人民银行授权的中间价。CFETS 是每个交易日 9:15 公布的官方中间价,
6
+ # 也是跨境结算与合同计价的口径来源。
7
+ #
8
+ # 端点语义(2026-10-21 实测):按货币对 + 日期区间查历史,不支持自由文本。
9
+ # GET /ags/ms/cm-u-bk-ccpr/CcprHisNew?currency=USD/CNY&startDate=…&endDate=…
10
+ # → records[].date + values[](values[0] 即该货币对中间价)
11
+ # 币种覆盖 25 个(USD/EUR/100JPY/HKD/GBP/AUD/NZD/SGD/CHF/CAD/CNY-MOP…
12
+ # CNY-MYR/RUB/ZAR/KRW/AED/SAR/HUF/PLN/DKK/SEK/NOK/TRY/MXN/THB)。
13
+ # builder 负责把「美元」「日元」「USD/CNY」这类查询词解析成货币对;
14
+ # 只说「人民币中间价」时按美元对(市场最常用口径)。
15
+ #
16
+ # 验证:
17
+ # python3 scripts/engine_validate.py --engine cfets --stage health --admit
18
+ # argo search "美元 人民币 中间价" --engine cfets --json
19
+
20
+ engine_id: cfets
21
+ type: cfets
22
+ enabled: true
23
+ cost_tier: free
24
+ label: 人民币中间价
25
+ family: finance_macro
26
+ priority: 51
27
+ qps: 2
28
+ period: second
29
+ cost_per_call: 0.0
30
+ cost_unit: free
31
+ recommended: false
32
+
33
+ timeout: 15
34
+ canary_query: 美元 人民币 中间价
35
+ desc: "中国外汇交易中心人民币中间价(25 个币种,官方授权口径,免 key)"
36
+ coverage: [finance, macro, china, official, realtime]
37
+
38
+ quality_queries:
39
+ - query: 美元 人民币 中间价
40
+ - query: 日元 人民币 中间价
41
+ - query: CNY HKD mid rate
@@ -0,0 +1,44 @@
1
+ # CiNii Research — 日本学术总库(免 key,NII 官方)
2
+ #
3
+ # 补的盲区:**亚洲学术**。argo 的 academic 域此前全是欧美源
4
+ # (arxiv/openalex/crossref/semantic_scholar/dblp/europepmc/biorxiv/
5
+ # openreview/core),日文论文与日本学会刊没有任何直采通道。
6
+ #
7
+ # 实测(2026-09-21):OpenSearch JSON,免 appid 可用;「AI」158741 条命中,
8
+ # 返回 9230B / 2 条。条目含 dc:creator / dc:publisher / prism:publicationDate
9
+ # / description,字段密度与 crossref 同档。
10
+ #
11
+ # 形态:检索式(query 参与检索),与 ndl(日本国会图书馆书目)互补——
12
+ # ndl 查「有什么书」,cinii 查「有什么论文/研究项目」。
13
+ #
14
+ # 验证:
15
+ # python3 scripts/engine_validate.py --engine cinii --stage all --admit
16
+
17
+ engine_id: cinii
18
+ type: http
19
+ enabled: true
20
+ cost_tier: free
21
+ method: GET
22
+ url: https://cir.nii.ac.jp/opensearch/all
23
+ timeout: 15
24
+ query_param: q
25
+ canary_query: "人工知能"
26
+ family: academic
27
+ langs:
28
+ - ja
29
+ coverage: [academic, paper, japan]
30
+ desc: "CiNii Research 日本学术总库(论文/博士论文/科研项目,免 key)"
31
+ recommended: false
32
+ extra_params:
33
+ format: json
34
+ count: "{n}"
35
+ output_map:
36
+ items: items
37
+ item_title: title
38
+ item_url: link.@id
39
+ item_summary: description
40
+ item_published_at: prism:publicationDate
41
+
42
+ quality_queries:
43
+ - query: "人工知能"
44
+ - query: "機械学習"
@@ -0,0 +1,49 @@
1
+ # ClawHub — OpenClaw 技能生态聚合搜索(skill 域,GET JSON,keyless)
2
+ # 聚合器:索引含 OpenClaw 原生技能 + skills.sh(Vercel 生态)条目,
3
+ # 与 redskill(小红书生态)/ skillsmp(独立索引)互补不重复(不同上游)。
4
+ # downloads 是其生态下载量口径,与 skills.sh 安装遥测、SkillsMP 仓库星数互不可比。
5
+ # canonicalUrl 为站内相对路径,经 url_template 拼接为完整 URL。
6
+ # 验证:
7
+ # python3 scripts/engine_validate.py --engine clawhub --stage all --admit --write-doc
8
+
9
+ engine_id: clawhub
10
+ type: http
11
+ enabled: true
12
+ cost_tier: free
13
+ label: ClawHub 技能目录
14
+ family: misc_vertical
15
+ priority: 50
16
+ qps: 2
17
+ period: second
18
+ limit: null
19
+ cost_per_call: 0.0
20
+ cost_unit: free
21
+ method: GET
22
+ url: https://clawhub.ai/api/search
23
+ timeout: 15
24
+ canary_query: "git commit"
25
+ coverage:
26
+ - skill
27
+ - developer
28
+ - tech
29
+ desc: "ClawHub 技能生态聚合搜索(OpenClaw 原生 + skills.sh 条目,免认证,下载量口径)"
30
+ format: json
31
+ query_param: q
32
+ extra_params:
33
+ limit: "{n}"
34
+ output_map:
35
+ items: results
36
+ item_title: displayName
37
+ item_url: canonicalUrl
38
+ item_summary: summary
39
+ # 可验证出处:install.reference 是 `owner/slug` 形式的安装引用,比
40
+ # canonicalUrl 市场页更接近「装什么」(sourceUrl 多为 null 故不取)。
41
+ item_upstream: install.reference
42
+ # updatedAt 是 epoch **毫秒**(SkillsMP 同名字段是秒,差 1000 倍,由
43
+ # engines_base._normalize_epoch 按量级归一成日期)。
44
+ item_published_at: updatedAt
45
+ url_template: "https://clawhub.ai{canonicalUrl}"
46
+ quality_queries:
47
+ - query: "git commit"
48
+ - query: "code review"
49
+ - query: "pdf"
@@ -0,0 +1,19 @@
1
+ # 克利夫兰艺术博物馆(CC0 开放图像,免认证)
2
+ # 与 artic/met_museum 互补:CC0 授权可直接取图,含 tombstone 完整著录。
3
+ # 验证:
4
+ # python3 scripts/engine_validate.py --engine cleveland --stage all --admit --write-doc
5
+
6
+ engine_id: cleveland
7
+ type: cleveland
8
+ enabled: true
9
+ cost_tier: free
10
+ timeout: 20
11
+ canary_query: "monet"
12
+ desc: "克利夫兰艺术博物馆(CC0 开放图像,免认证)"
13
+ coverage: [art, museum, culture, image]
14
+ recommended: false
15
+ latency_ms: 2500
16
+
17
+ quality_queries:
18
+ - query: "monet"
19
+ - query: "armor"
@@ -0,0 +1,43 @@
1
+ # 中文 AI 垂直资讯检索(免 Key)
2
+ # 数据源: https://aihot.virxact.com 公开 REST API(浏览器 UA 必需,否则 403)
3
+ # 能力: 精选中文 AI 资讯(模型/产品/行业/论文),带发布时间 publishedAt 与上游来源
4
+ # 端点: GET /api/public/items?mode=selected&q=<关键词>&take=<n>
5
+ # 模式: selected=精选 / all=全量;since 需 ISO 且服务端上限 7 天(spec 不透传)
6
+ # 验证:
7
+ # python3 scripts/engine_validate.py --engine cn_ai_news --stage all --admit
8
+ # python3 scripts/search.py "大模型" --engine cn_ai_news --json
9
+
10
+ engine_id: cn_ai_news
11
+ type: http
12
+ enabled: true
13
+ cost_tier: free
14
+ method: GET
15
+ url: https://aihot.virxact.com/api/public/items
16
+ timeout: 10
17
+ query_param: q
18
+ canary_query: "人工智能"
19
+ desc: "中文 AI 垂直资讯检索(模型/产品/行业/论文,含发布时间与上游来源)"
20
+ coverage: [chinese, news, ml]
21
+ recommended: false
22
+
23
+ family: news_flash
24
+
25
+ headers:
26
+ User-Agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
27
+ Accept: application/json
28
+
29
+ extra_params:
30
+ mode: selected
31
+ take: "{n}"
32
+
33
+ # 上游来源(如「字节 Seed:Research Feed(网页内嵌数据)」)是真实发布方标注,
34
+ # 保留而非改写为引擎名
35
+ preserve_source: true
36
+
37
+ output_map:
38
+ items: items
39
+ item_title: title
40
+ item_url: url
41
+ item_summary: summary
42
+ item_source: source
43
+ item_published_at: publishedAt
@@ -0,0 +1,35 @@
1
+ # CORE — 开放获取论文全文聚合(api.core.ac.uk v3,免 key)
2
+ #
3
+ # 覆盖定位:聚合全球机构仓储的**开放获取全文**(实测 totalHits≈8 万/常见词)。
4
+ # 与既有源的区别——openalex/crossref 给元数据,CORE 直接给可下载 PDF
5
+ # (downloadUrl);且覆盖机构仓储里未进 arXiv/PubMed 的学位论文与灰色文献。
6
+ #
7
+ # 两处实现要点(详见 engines_builders_batch9._build_core_engine 文档串):
8
+ # ① 限流响应是 **HTTP 200 + 错误封套**({"message":"Azure search failed
9
+ # with status code: 503..."}),通用 _envelope_error 要求 Code 与
10
+ # message 同时在场,识别不出 → 会静默变成「无结果」。本引擎显式识别。
11
+ # ② 端点**必须带尾斜杠**:/v3/search/works?q= 会 301 到 /works/?q=,
12
+ # 多一次往返。故此处 type 走自定义 builder,URL 在 builder 内拼装。
13
+ #
14
+ # 验证:
15
+ # python3 scripts/engine_validate.py --engine core --stage all --admit --write-doc
16
+
17
+ engine_id: core
18
+ type: core
19
+ enabled: true
20
+ cost_tier: free
21
+ qps: 2
22
+ priority: 31
23
+ period: second
24
+ cost_per_call: 0.0
25
+ cost_unit: free
26
+ timeout: 20
27
+ desc: "CORE 开放获取全文(含 PDF 直链,覆盖机构仓储灰色文献)"
28
+ coverage: [academic, science]
29
+ recommended: false
30
+ latency_ms: 4000
31
+
32
+ quality_queries:
33
+ - query: "CRISPR gene editing"
34
+ - query: "open access repository"
35
+ - query: "machine learning"
@@ -0,0 +1,38 @@
1
+ # crt.sh — 证书透明度日志搜索(免认证,comodo/Sectigo 维护)
2
+ # 补 security_search 域的子域名/证书情报维度(资产测绘、钓鱼域发现),
3
+ # NVD 只覆盖漏洞不覆盖暴露面。响应偏慢(常见 10-40s),超时放宽、延迟声明从宽。
4
+ # 配额契约:无官方限额,声明 qps 从紧。
5
+ # 验证:
6
+ # python3 scripts/engine_validate.py --engine crt_sh --stage all --admit --write-doc
7
+
8
+ engine_id: crt_sh
9
+ type: http
10
+ enabled: true
11
+ cost_tier: free
12
+ method: GET
13
+ url: https://crt.sh/
14
+ timeout: 45
15
+ query_param: q
16
+ canary_query: "example.com"
17
+ desc: "crt.sh 证书透明度日志(子域名/证书情报,免认证,响应较慢)"
18
+ coverage: [security, tech]
19
+ recommended: false
20
+ latency_ms: 15000
21
+
22
+ headers:
23
+ User-Agent: argo-search/1.0 (+crt_sh)
24
+ Accept: application/json
25
+
26
+ extra_params:
27
+ output: json
28
+
29
+ output_map:
30
+ items: "."
31
+ item_title: common_name
32
+ item_summary: issuer_name
33
+ item_published_at: not_before
34
+ url_template: "https://crt.sh/?id={id}"
35
+
36
+ quality_queries:
37
+ - query: "example.com"
38
+ - query: "github.com"
@@ -0,0 +1,43 @@
1
+ # 捷克电视台24 RSS — ČT24,捷克公共电视新闻
2
+ #
3
+ # 补的盲区:**cs 本地一手新闻**。接入前 argo 的新闻链路只有中英源
4
+ # (google_news/guardian_rss/dw_news/france24 都是英语视角),cs 查询
5
+ # 拿不到本地一手报道。
6
+ #
7
+ # 实测(2026-09-21):**30 条**,摘要中位 433 字、最长 828 字。
8
+ #
9
+ # 形态:feed_mode=hot(实时流语义,同 guardian_rss)。归 world_news 族——
10
+ # 与 hot_trending(热榜)分族,避免同族 max_per_family=2 把本地源互相挤掉。
11
+ # 语言由 langs 声明,路由按查询语言选源(见 route._lang_aware_combo_order)。
12
+ #
13
+ # 验证:
14
+ # python3 scripts/engine_validate.py --engine ct24 --stage all --admit
15
+ # python3 scripts/search.py "dnešní zprávy" --engine ct24 --json
16
+
17
+ engine_id: ct24
18
+ type: rss_feed
19
+ enabled: true
20
+ cost_tier: free
21
+ label: 捷克电视台24 RSS
22
+ family: world_news
23
+ feed_mode: hot
24
+ relevance_check: false
25
+ priority: 53
26
+ qps: 1
27
+ period: second
28
+ cost_per_call: 0.0
29
+ cost_unit: free
30
+ timeout: 12
31
+ feed_url: https://ct24.ceskatelevize.cz/rss/hlavni-zpravy
32
+ langs:
33
+ - cs
34
+ canary_query: "dnešní zprávy"
35
+ coverage:
36
+ - news
37
+ - czech
38
+ desc: "捷克电视台24(ČT24,捷克公共电视新闻,免 key)"
39
+ recommended: false
40
+
41
+ quality_queries:
42
+ - query: "dnešní zprávy"
43
+ - query: "ekonomika Česko"
@@ -0,0 +1,27 @@
1
+ # DataCite 科研数据集搜索(免 Key)
2
+ # 文档: https://support.datacite.org/docs/api-getting-started
3
+ # 验证:
4
+ # python3 scripts/engine_validate.py --engine datacite --stage all --admit
5
+ # python3 scripts/search.py "genome" --engine datacite --json
6
+
7
+ engine_id: datacite
8
+ type: http
9
+ enabled: true
10
+ cost_tier: free
11
+ method: GET
12
+ url: https://api.datacite.org/dois
13
+ timeout: 15
14
+ query_param: query
15
+ canary_query: "genome"
16
+ desc: "DataCite 科研数据集搜索(Dryad/Figshare/Dataverse/OSF 等仓储,免认证)"
17
+ coverage: [dataset, academic, opendata]
18
+ recommended: false
19
+
20
+ extra_params:
21
+ page[size]: "{n}"
22
+
23
+ output_map:
24
+ items: data
25
+ item_title: attributes.titles.0.title
26
+ item_url: attributes.url
27
+ item_summary: attributes.descriptions.0.description
@@ -0,0 +1,41 @@
1
+ # data.gov.uk — 英国政府开放数据目录(免 key,CKAN API)
2
+ #
3
+ # 补的盲区:**英国政府开放数据集**。argo 已有 eu_opendata(欧盟)与
4
+ # fr_opendata(法国),英国这一档缺位;且英国是开放数据运动的发源地,
5
+ # 数据集密度高于多数欧盟国家。
6
+ #
7
+ # 实测(2026-09-21):CKAN package_search 免 key,JSON 直出;
8
+ # 「climate」返回结构化数据集条目(title / notes / name / organization)。
9
+ #
10
+ # 形态:检索式。url 由 url_template 从数据集 slug 拼出。
11
+ #
12
+ # 验证:
13
+ # python3 scripts/engine_validate.py --engine datagov_uk --stage all --admit
14
+
15
+ engine_id: datagov_uk
16
+ type: http
17
+ enabled: true
18
+ cost_tier: free
19
+ method: GET
20
+ url: https://data.gov.uk/api/3/action/package_search
21
+ timeout: 20
22
+ query_param: q
23
+ canary_query: "climate"
24
+ family: misc_vertical
25
+ langs:
26
+ - en
27
+ coverage: [opendata, government, dataset, uk]
28
+ desc: "data.gov.uk 英国政府开放数据目录(CKAN,免 key)"
29
+ recommended: false
30
+ explicit_only: true
31
+ extra_params:
32
+ rows: "{n}"
33
+ output_map:
34
+ items: result.results
35
+ item_title: title
36
+ item_summary: notes
37
+ url_template: "https://data.gov.uk/dataset/{name}"
38
+
39
+ quality_queries:
40
+ - query: "climate"
41
+ - query: "transport"
@@ -0,0 +1,45 @@
1
+ # 通用图片搜索(免 Key,走 ddgs/Bing 图片通道)
2
+ #
3
+ # 为什么要有这个源:image_search 域此前只有 openverse 一个通用图库,而它是
4
+ # **开放版权素材库**——查「雪山」给的是 Flickr 上 CC 授权的照片,覆盖窄,且
5
+ # 对「这个产品长什么样」「这个梗图」这类检索无能为力。本引擎补的是**全网
6
+ # 图片**维度:底层 ddgs 走 Bing 图片索引,覆盖商业图库、新闻配图、社交平台
7
+ # (实测中文查询能出花瓣、千叶网等站点),是通用图库之外的覆盖面。
8
+ #
9
+ # 与 openverse 的分工(两者都要,不是替代):
10
+ # - openverse:要「能合法发布」的素材 → 带 license/宽高/商用判据
11
+ # - ddgs_images:要「能找到这张图」 → 覆盖面优先,**多数结果无许可信息**
12
+ # 因此本源结果不带 image_commercial_ok(上游不给许可字段,判定为「未判定」
13
+ # 而非「不可商用」),用在要发布的稿子里之前须自行核对。
14
+ #
15
+ # 实现复用 sub-skills/local-search 的 local_ddgs_images 子引擎(那边已写好
16
+ # ddgs 调用与字段解析),不在主仓重复实现一遍 CLI 调用逻辑。
17
+ # 验证:
18
+ # python3 scripts/engine_validate.py --engine ddgs_images --stage all --admit
19
+
20
+ engine_id: ddgs_images
21
+ type: cli
22
+ enabled: true
23
+ cost_tier: free
24
+ label: 通用图片
25
+ desc: "通用图片搜索(免 Key,覆盖全网图片;无版权标注,发布前须自行核对)"
26
+ coverage: [image, media, web]
27
+ family: misc_vertical
28
+ priority: 34
29
+ timeout: 20
30
+ canary_query: "snow mountain"
31
+ cmd:
32
+ - python3
33
+ - sub-skills/local-search/search_v3.py
34
+ search_args:
35
+ - '{query}'
36
+ - --n
37
+ - '{n}'
38
+ - --engine
39
+ - local_ddgs_images
40
+ - --json
41
+ output_format: json
42
+ quality_queries:
43
+ - query: "snow mountain"
44
+ - query: "雪山"
45
+ - query: "vintage poster"
@@ -0,0 +1,74 @@
1
+ # DeepSeek Search 引擎(官方 API)——默认开启(需 DEEPSEEK_API_KEY,无 key 时自动停用)
2
+ #
3
+ # 它是什么:DeepSeek 官方网页搜索(POST api.deepseek.com/v1/tools/search),
4
+ # 按次计费 5 元/千次**成功**请求,账号级 QPS 5。返回结果自带四样 Argo 既有
5
+ # 中文 API 引擎(bocha/byted/metaso/octen)都没有的结构化字段:
6
+ # - authority:0-4 权威分级(-1 未知,≥3 极权威)
7
+ # - rerank_score:0-3 排序分(≥1.5 优质,综合相关性/权威性/时效)
8
+ # - date:发布时间,RFC 3339 UTC
9
+ # - site_name / site_icon:站点名与图标
10
+ # 前两样经 output_map 的 item_upstream_* 透传进结果(upstream_authority/
11
+ # upstream_score),输出层的 authority_level(0-4 离散等级,DeepSeek 语义)
12
+ # 优先采信上游原生 authority,没有再回退 Argo 自己的连续 authority 映射。
13
+ #
14
+ # 计费口径与 Argo 自适应学习天然对齐:DeepSeek 只对 HTTP 200 且 results
15
+ # 非空的请求收费;Argo 的 classify_engine_outcome 对 no-results/timeout/
16
+ # error 一律不计成功——两边同口径,不存在「失败也扣分」的错位。
17
+ #
18
+ # 搜索语法(DeepSeek 原样透传给上游,本引擎可吃用户查询里的 site:/-词/
19
+ # -"短语"/"短语"/lang:zh,en/after:/before: 操作符)——查询级操作符契约层
20
+ # 见 scripts/query_operators.py(2026-10-17 同期落地)。
21
+ #
22
+ # 启用前提:
23
+ # 1. export DEEPSEEK_API_KEY=<key>(DeepSeek 开放平台申请;只进 env,
24
+ # 与 {ENV} 占位纪律一致,不写进任何仓库文件)——无 key 时引擎不可用,
25
+ # 路由自动跳过,不影响其他源
26
+ # 2. 健康门:python3 scripts/engine_validate.py --engine deepseek_search --stage all --admit
27
+ # 3. 显式调用:argo search "查询" --engine deepseek_search
28
+ # 路由形态:不进任何域 combo;auto/deep 档位下仅可能经 TF-IDF 强匹配注入
29
+ # (罕见,如查询本身就是 deepseek 主题),显式 --engine deepseek_search
30
+ # 是主路径;fast/budget 模式按成本纪律自动排除付费源。计费口径见文件头
31
+ # (5 元/千次成功请求,失败/空结果不计费)。
32
+ #
33
+ # 配套 Fetch 接口(api.deepseek.com/v1/tools/fetch,返回 Markdown 正文)
34
+ # 留作抓取链备选,本 spec 只接 search。
35
+ engine_id: deepseek_search
36
+ type: http
37
+ enabled: true # 默认开;无 DEEPSEEK_API_KEY 时不可用,路由自动跳过
38
+ explicit_only: true # 不进任何域 combo 与通用兜底,只经 --engine 显式调用
39
+ cost_tier: paid
40
+ method: POST
41
+ url: https://api.deepseek.com/v1/tools/search
42
+ timeout: 12
43
+ canary_query: "DeepSeek"
44
+ label: DeepSeek Search
45
+ family: web_general
46
+ priority: 60
47
+ qps: 5
48
+ period: second
49
+ cost_per_call: 0.005
50
+ cost_unit: cny
51
+ required_env:
52
+ - DEEPSEEK_API_KEY
53
+
54
+ headers:
55
+ Authorization: Bearer {DEEPSEEK_API_KEY}
56
+ Content-Type: application/json
57
+
58
+ # POST body:{query} 查询词,{n} 结果数(DeepSeek count 1-50,渲染时自动 int 化)
59
+ body:
60
+ query: "{query}"
61
+ count: "{n}"
62
+
63
+ # DeepSeek 返回 {results:[{rerank_score,title,url,snippet,summary,content,
64
+ # site_name,site_icon,date,authority}]}。snippet 100-200 字走 snippet 档;
65
+ # summary/content 不接(正文按需走 fetch/verify 链,不在 search 层拉全量)。
66
+ output_map:
67
+ items: results
68
+ item_title: title
69
+ item_url: url
70
+ item_summary: snippet
71
+ item_source: deepseek_search
72
+ item_published_at: date
73
+ item_upstream_authority: authority
74
+ item_upstream_score: rerank_score
@@ -0,0 +1,20 @@
1
+ # Deezer 音乐艺人/专辑(免认证)
2
+ # 补 media_search 域:现有 qq_music(华语)、itunes(Apple 生态)、musicbrainz(元数据),
3
+ # Deezer 补欧洲/西语圈曲库与粉丝量维度。
4
+ # 验证:
5
+ # python3 scripts/engine_validate.py --engine deezer --stage all --admit --write-doc
6
+
7
+ engine_id: deezer
8
+ type: deezer
9
+ enabled: true
10
+ cost_tier: free
11
+ timeout: 15
12
+ canary_query: "radiohead"
13
+ desc: "音乐艺人/专辑(Deezer,免认证)"
14
+ coverage: [media, music, entertainment]
15
+ recommended: false
16
+ latency_ms: 2000
17
+
18
+ quality_queries:
19
+ - query: "radiohead"
20
+ - query: "coldplay"
@@ -0,0 +1,38 @@
1
+ # DeFiLlama 协议 TVL(免 key)
2
+ #
3
+ # 补的盲区:**链上资金规模**。现有 crypto 源只有 CoinGecko(币价/市值),
4
+ # 没有「协议里锁了多少钱」这个口径。DeFiLlama 是 DeFi TVL 的事实标准,
5
+ # 免 key、免注册,覆盖 8700+ 协议与 300+ 链。
6
+ #
7
+ # 端点语义(2026-10-21 实测):单次返回全量协议列表(约 9 MB / 2.4s),
8
+ # 不支持关键词查询,builder 本地过滤(名称/代号/类别/链)并按 TVL 排序。
9
+ # 全量结果进程内缓存 5 分钟,连续查询不重复下载。
10
+ # GET /protocols → [{name, symbol, category, chain, chains, tvl,
11
+ # change_1d, change_7d, slug, url, description}]
12
+ #
13
+ # 验证:
14
+ # python3 scripts/engine_validate.py --engine defillama --stage health --admit
15
+ # argo search "aave tvl" --engine defillama --json
16
+
17
+ engine_id: defillama
18
+ type: defillama
19
+ enabled: true
20
+ cost_tier: free
21
+ label: DeFiLlama
22
+ family: finance_market
23
+ priority: 45
24
+ qps: 1
25
+ period: second
26
+ cost_per_call: 0.0
27
+ cost_unit: free
28
+ recommended: false
29
+
30
+ timeout: 30
31
+ canary_query: aave
32
+ desc: "DeFiLlama 协议 TVL(8700+ 协议资金规模/24h 与 7d 变化,免 key)"
33
+ coverage: [crypto, finance, blockchain, defi]
34
+
35
+ quality_queries:
36
+ - query: aave tvl
37
+ - query: uniswap 锁仓
38
+ - query: Lido 质押 规模
@@ -0,0 +1,21 @@
1
+ # deps.dev — 包依赖与版本状态(Google 维护,npm/pypi/go/maven/cargo 五生态,免认证)
2
+ # 边界:只答包存在性/最新版本/弃用状态/发布时间;包级漏洞聚合端点不存在,
3
+ # 漏洞情报由 nvd 引擎按关键词补位。查询形态:「<生态> <包名>」或裸包名(默认 npm)。
4
+ # 验证:
5
+ # python3 scripts/engine_validate.py --engine deps_dev --stage all --admit --write-doc
6
+
7
+ engine_id: deps_dev
8
+ type: deps_dev
9
+ enabled: true
10
+ cost_tier: free
11
+ timeout: 10
12
+ canary_query: "npm express"
13
+ desc: "deps.dev 包依赖(npm/pypi/go/maven/cargo;版本/弃用/发布时间)"
14
+ coverage: [code, package]
15
+ recommended: false
16
+ latency_ms: 2000
17
+
18
+ quality_queries:
19
+ - query: "npm express"
20
+ - query: "python requests"
21
+ - query: "rust serde"
@@ -0,0 +1,36 @@
1
+ # DigUp 本地文件语义搜索(CLI 桥接)——默认关闭,按需启用
2
+ #
3
+ # 它搜什么:本机文件按「内容」而不是文件名——照片/截图按画面与图内文字、
4
+ # PDF 按页、文档按块、音频/视频按 30s 窗口与抽帧(命中精确到页/秒/行)。
5
+ # 模型 EmbeddingGemma 2 在设备端跑(llama.cpp/Metal),索引与检索全程离线。
6
+ #
7
+ # 前提(一次性):
8
+ # 1. digup CLI 就位(桥按此序自动定位,也可 $DIGUP_BIN / --bin 指定):
9
+ # PATH 里的 digup > /Applications/DigUp.app/Contents/Helpers/digup
10
+ # (brew install --cask arahim3/tap/digup 或 DMG 装的 App 自带)
11
+ # 2. 建索引:digup index <文件夹>…(或开 DigUp.app 选文件夹;索引默认
12
+ # ~/Library/Application Support/DigUp/index.noindex,$DIGUP_INDEX 可覆盖)
13
+ # 3. 启用:本文件 enabled 改 true,然后跑一次健康门
14
+ # python3 scripts/engine_validate.py --engine digup --stage health --admit
15
+ # (canary 需命中你索引里真实存在的内容,可用 --query 覆盖探针词)
16
+ #
17
+ # 调用:argo search "<用大白话描述文件内容>" --engine digup
18
+ # 口径:强项是语义/多模态/跨语言召回;中文关键词精确查找仍以主链为准,
19
+ # 两路结果在融合层按名次合并,本引擎不做额外降权。
20
+ engine_id: digup
21
+ type: cli
22
+ enabled: false # ← 默认关;开启步骤见文件头
23
+ disabled_reason: 按需启用的本地引擎——需先装 digup CLI 并建索引(文件头三步),装好把 enabled 改 true 后跑 engine_validate 健康门;本机不装不影响任何主链功能
24
+ cost_tier: free
25
+ label: 本地文件语义搜索
26
+ desc: DigUp(EmbeddingGemma 2 本地多模态嵌入,全程离线)——照片/截图/PDF/文档/音视频按内容检索
27
+ canary_query: "test"
28
+ relevance_check: false # 本地索引内容因机而异,词面交集不是有效健康判据(schema+非空已够)
29
+ cmd:
30
+ - python3
31
+ - scripts/digup_bridge.py
32
+ search_args:
33
+ - '{query}'
34
+ - -n
35
+ - '{n}'
36
+ timeout: 30 # digup 首查冷启要加载 ~250MB text 模型(实测 0.4–0.8s),留足