argo-search 1.0.1 → 2.9.7

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 (463) hide show
  1. package/LICENSE +201 -21
  2. package/README.en.md +822 -0
  3. package/README.es.md +864 -0
  4. package/README.ja.md +864 -0
  5. package/README.ko.md +864 -0
  6. package/README.md +867 -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/settings-keys.png +0 -0
  12. package/assets/readme/settings-tools.png +0 -0
  13. package/assets/readme/why-better.svg +104 -0
  14. package/assets/readme/workflow.svg +83 -0
  15. package/backends/domain_profiles.json +2308 -96
  16. package/backends/engine_registry.yaml +3314 -503
  17. package/backends/query_synonyms_cn.json +35 -0
  18. package/backends/quota_profiles.json +2409 -161
  19. package/backends/source_types_cn.json +83 -0
  20. package/backends/text_lexicon.json +44 -0
  21. package/bin/argo +703 -0
  22. package/bin/argo.js +71 -39
  23. package/config.yaml +4976 -363
  24. package/cordis.patch.yml +21 -0
  25. package/data/countries.json +40 -0
  26. package/data/lang_matrix/lang_capability.json +842 -0
  27. package/data/lang_matrix/matrix_2026-09-10.json +11921 -0
  28. package/data/regions_cn.json +1 -0
  29. package/docs/ADDING_NEW_ENGINE.md +184 -0
  30. package/docs/ARGO_INTRO.md +124 -0
  31. package/docs/DATA_SOURCE_GAPS.md +81 -0
  32. package/docs/DESIGN_LOCAL_DATA_FUSION.md +90 -0
  33. package/docs/ENGINE_CATALOG.md +564 -0
  34. package/docs/MCP_SETUP.md +106 -0
  35. package/docs/PLATFORM_PATHS.md +111 -0
  36. package/docs/RELEASE_NOTES_v2.8.0.md +71 -0
  37. package/docs/RELEASE_NOTES_v2.8.2.md +63 -0
  38. package/docs/RELEASE_NOTES_v2.8.3.md +55 -0
  39. package/docs/RELEASE_NOTES_v2.8.4.md +79 -0
  40. package/docs/RELEASE_NOTES_v2.8.5.md +102 -0
  41. package/docs/RELEASE_NOTES_v2.8.6.md +66 -0
  42. package/docs/RELEASE_NOTES_v2.8.7.md +65 -0
  43. package/docs/RELEASE_NOTES_v2.8.8.md +67 -0
  44. package/docs/RELEASE_NOTES_v2.8.9.md +67 -0
  45. package/docs/RELEASE_NOTES_v2.9.0.md +64 -0
  46. package/docs/SEARCH_ARCHIVE.md +115 -0
  47. package/docs/assets/architecture.svg +104 -0
  48. package/docs/assets/hero.svg +98 -0
  49. package/docs/engines/bangumi.md +27 -0
  50. package/docs/engines/biorxiv.md +27 -0
  51. package/docs/engines/clawhub.md +27 -0
  52. package/docs/engines/crt_sh.md +27 -0
  53. package/docs/engines/datacite.md +27 -0
  54. package/docs/engines/deps_dev.md +27 -0
  55. package/docs/engines/douban_movie.md +27 -0
  56. package/docs/engines/endoflife.md +27 -0
  57. package/docs/engines/flk_law.md +27 -0
  58. package/docs/engines/fxtwitter.md +27 -0
  59. package/docs/engines/google_news.md +27 -0
  60. package/docs/engines/gov_regulations.md +27 -0
  61. package/docs/engines/guqian.md +27 -0
  62. package/docs/engines/hackernews.md +27 -0
  63. package/docs/engines/iplant.md +27 -0
  64. package/docs/engines/keenable.md +27 -0
  65. package/docs/engines/met_museum.md +27 -0
  66. package/docs/engines/nasa_images.md +27 -0
  67. package/docs/engines/netease_music.md +27 -0
  68. package/docs/engines/npm.md +27 -0
  69. package/docs/engines/nvd.md +27 -0
  70. package/docs/engines/openreview.md +27 -0
  71. package/docs/engines/openstd.md +27 -0
  72. package/docs/engines/parallel_free.md +27 -0
  73. package/docs/engines/people_daily.md +27 -0
  74. package/docs/engines/realtime_index.md +27 -0
  75. package/docs/engines/sec_edgar.md +27 -0
  76. package/docs/engines/seltz.md +27 -0
  77. package/docs/engines/skillsmp.md +27 -0
  78. package/docs/engines/sspai.md +27 -0
  79. package/docs/engines/std_samr.md +27 -0
  80. package/docs/engines/train.md +27 -0
  81. package/docs/engines/un_comtrade.md +27 -0
  82. package/docs/engines/wikisource.md +27 -0
  83. package/docs/engines/zdic.md +27 -0
  84. package/docs/engines/zenodo.md +27 -0
  85. package/docs/engines/zhihu_hot_app.md +27 -0
  86. package/docs//344/270/272/344/273/200/344/271/210/351/200/211/346/213/251argo.md +176 -0
  87. package/engines/README.md +10 -0
  88. package/engines/_template_cli.yaml +39 -0
  89. package/engines/_template_http.yaml +37 -0
  90. package/engines/plugins/_template_plugin.py +50 -0
  91. package/engines/specs/_cisa_kev.yaml +54 -0
  92. package/engines/specs/_osv.yaml +63 -0
  93. package/engines/specs/aljazeera.yaml +43 -0
  94. package/engines/specs/antara.yaml +43 -0
  95. package/engines/specs/artic.yaml +20 -0
  96. package/engines/specs/aviation_weather.yaml +39 -0
  97. package/engines/specs/bangumi.yaml +21 -0
  98. package/engines/specs/biorxiv.yaml +24 -0
  99. package/engines/specs/carbon_intensity.yaml +32 -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/deps_dev.yaml +21 -0
  113. package/engines/specs/digup.yaml +36 -0
  114. package/engines/specs/doi.yaml +39 -0
  115. package/engines/specs/douban_movie.yaml +22 -0
  116. package/engines/specs/dw_news.yaml +47 -0
  117. package/engines/specs/egov_law.yaml +21 -0
  118. package/engines/specs/elpais.yaml +43 -0
  119. package/engines/specs/endoflife.yaml +21 -0
  120. package/engines/specs/energy_charts.yaml +21 -0
  121. package/engines/specs/factcheck_org.yaml +52 -0
  122. package/engines/specs/faz.yaml +43 -0
  123. package/engines/specs/federal_register.yaml +57 -0
  124. package/engines/specs/firecrawl.yaml +53 -0
  125. package/engines/specs/flk_law.yaml +24 -0
  126. package/engines/specs/folha.yaml +43 -0
  127. package/engines/specs/france24.yaml +44 -0
  128. package/engines/specs/full_fact.yaml +47 -0
  129. package/engines/specs/fxtwitter.yaml +31 -0
  130. package/engines/specs/gbfs_nyc.yaml +32 -0
  131. package/engines/specs/gdacs.yaml +21 -0
  132. package/engines/specs/gdelt.yaml +64 -0
  133. package/engines/specs/google_news.yaml +22 -0
  134. package/engines/specs/gov_regulations.yaml +38 -0
  135. package/engines/specs/guardian_rss.yaml +59 -0
  136. package/engines/specs/hurriyet.yaml +43 -0
  137. package/engines/specs/iplant.yaml +25 -0
  138. package/engines/specs/jikan.yaml +24 -0
  139. package/engines/specs/jolpica.yaml +20 -0
  140. package/engines/specs/k10plus.yaml +20 -0
  141. package/engines/specs/keenable.yaml +44 -0
  142. package/engines/specs/lefigaro.yaml +43 -0
  143. package/engines/specs/listenbrainz.yaml +19 -0
  144. package/engines/specs/matichon.yaml +43 -0
  145. package/engines/specs/met_museum.yaml +21 -0
  146. package/engines/specs/nasa_images.yaml +45 -0
  147. package/engines/specs/netease_music.yaml +38 -0
  148. package/engines/specs/nhk.yaml +43 -0
  149. package/engines/specs/nhtsa_vpic.yaml +20 -0
  150. package/engines/specs/noaa_swpc.yaml +20 -0
  151. package/engines/specs/nvd.yaml +38 -0
  152. package/engines/specs/obis.yaml +20 -0
  153. package/engines/specs/opencitations.yaml +52 -0
  154. package/engines/specs/openf1.yaml +21 -0
  155. package/engines/specs/openfoodfacts.yaml +45 -0
  156. package/engines/specs/openligadb.yaml +20 -0
  157. package/engines/specs/openreview.yaml +37 -0
  158. package/engines/specs/openstd.yaml +21 -0
  159. package/engines/specs/people_daily.yaml +22 -0
  160. package/engines/specs/realtime_index.yaml +34 -0
  161. package/engines/specs/ror.yaml +20 -0
  162. package/engines/specs/satnogs.yaml +20 -0
  163. package/engines/specs/sec_edgar.yaml +46 -0
  164. package/engines/specs/skillsmp.yaml +50 -0
  165. package/engines/specs/sogou_weixin_browser.yaml +30 -0
  166. package/engines/specs/soilgrids.yaml +25 -0
  167. package/engines/specs/sspai.yaml +36 -0
  168. package/engines/specs/stackexchange.yaml +46 -0
  169. package/engines/specs/std_samr.yaml +21 -0
  170. package/engines/specs/tass.yaml +43 -0
  171. package/engines/specs/tle_mirror.yaml +21 -0
  172. package/engines/specs/train.yaml +37 -0
  173. package/engines/specs/tvmaze.yaml +20 -0
  174. package/engines/specs/twitter_syndication.yaml +31 -0
  175. package/engines/specs/un_comtrade.yaml +23 -0
  176. package/engines/specs/unpaywall.yaml +54 -0
  177. package/engines/specs/vnpress.yaml +43 -0
  178. package/engines/specs/weather.yaml +32 -0
  179. package/engines/specs/who_don.yaml +21 -0
  180. package/engines/specs/who_gho.yaml +20 -0
  181. package/engines/specs/wikimedia_commons.yaml +34 -0
  182. package/engines/specs/wikisource.yaml +22 -0
  183. package/engines/specs/worms.yaml +19 -0
  184. package/engines/specs/x_trending.yaml +34 -0
  185. package/engines/specs/yna.yaml +43 -0
  186. package/engines/specs/ynet.yaml +43 -0
  187. package/engines/specs/zbmath.yaml +40 -0
  188. package/engines/specs/zdic.yaml +22 -0
  189. package/engines/specs/zenodo.yaml +27 -0
  190. package/engines/specs/zhihu_hot_app.yaml +35 -0
  191. package/mcp/clients.yaml +74 -0
  192. package/package.json +51 -12
  193. package/packages/dsh-plugin/README.md +134 -0
  194. package/packages/dsh-plugin/cordis.patch.yml +48 -0
  195. package/packages/dsh-plugin/dsh/client.js +1244 -0
  196. package/packages/dsh-plugin/dsh/index.js +2290 -0
  197. package/packages/dsh-plugin/dsh/native-tools.mjs +743 -0
  198. package/packages/dsh-plugin/package.json +38 -0
  199. package/packages/dsh-plugin/test/client.test.js +232 -0
  200. package/packages/dsh-plugin/test/config.test.js +30 -0
  201. package/packages/dsh-plugin/test/index.test.js +1338 -0
  202. package/references/query-templates.md +96 -0
  203. package/references/query-templates.yaml +118 -0
  204. package/scripts/ab_eval.py +219 -0
  205. package/scripts/ab_eval_p0p1.py +266 -0
  206. package/scripts/adaptive.py +271 -70
  207. package/scripts/answer.py +154 -0
  208. package/scripts/archive_run.py +591 -0
  209. package/scripts/argo_engine_registry.py +172 -0
  210. package/scripts/argo_paths.py +728 -0
  211. package/scripts/article.py +136 -0
  212. package/scripts/arxiv_source.py +201 -0
  213. package/scripts/badcase_ledger.py +252 -0
  214. package/scripts/batch_probe.py +241 -0
  215. package/scripts/benchmark.py +19 -0
  216. package/scripts/bounded_run.py +144 -0
  217. package/scripts/browser_auth.py +323 -0
  218. package/scripts/burstiness_detector.py +147 -0
  219. package/scripts/cache.py +1078 -67
  220. package/scripts/cache_guard.py +271 -0
  221. package/scripts/cache_key_vdom.py +56 -0
  222. package/scripts/cache_similarity.py +170 -0
  223. package/scripts/caliber_isolation.py +195 -0
  224. package/scripts/calibrate_lowquality.py +210 -0
  225. package/scripts/candidate_envelope.py +366 -0
  226. package/scripts/chrome_cdp.py +871 -0
  227. package/scripts/circuit_breaker.py +389 -0
  228. package/scripts/citations.py +334 -0
  229. package/scripts/cite_cli.py +59 -0
  230. package/scripts/cjk_tokens.py +95 -0
  231. package/scripts/clarify.py +47 -24
  232. package/scripts/cli_io.py +240 -0
  233. package/scripts/config.py +683 -45
  234. package/scripts/config_cache.py +402 -0
  235. package/scripts/conn_pool.py +220 -0
  236. package/scripts/content_security.py +685 -0
  237. package/scripts/content_signals.py +730 -0
  238. package/scripts/crawl.py +74 -35
  239. package/scripts/daemon.py +866 -0
  240. package/scripts/digup_bridge.py +214 -0
  241. package/scripts/engine_admission.py +366 -0
  242. package/scripts/engine_dispatch.py +1019 -0
  243. package/scripts/engine_env.py +534 -0
  244. package/scripts/engine_failure.py +411 -0
  245. package/scripts/engine_families.py +732 -0
  246. package/scripts/engine_policy.py +218 -0
  247. package/scripts/engine_requires.py +190 -0
  248. package/scripts/engine_status.py +322 -0
  249. package/scripts/engine_validate.py +638 -0
  250. package/scripts/engines.py +778 -294
  251. package/scripts/engines_base.py +1521 -0
  252. package/scripts/engines_builders.py +298 -0
  253. package/scripts/engines_builders_batch10.py +159 -0
  254. package/scripts/engines_builders_batch11.py +174 -0
  255. package/scripts/engines_builders_batch12.py +103 -0
  256. package/scripts/engines_builders_batch13.py +340 -0
  257. package/scripts/engines_builders_batch9.py +1468 -0
  258. package/scripts/engines_builders_cn.py +2283 -0
  259. package/scripts/engines_builders_data.py +2923 -0
  260. package/scripts/engines_builders_data_macro.py +775 -0
  261. package/scripts/engines_builders_feeds.py +255 -0
  262. package/scripts/engines_builders_intl.py +1239 -0
  263. package/scripts/engines_builders_search.py +440 -0
  264. package/scripts/engines_builders_tech.py +1360 -0
  265. package/scripts/evidence.py +588 -162
  266. package/scripts/evidence_loop.py +592 -0
  267. package/scripts/evidence_tier.py +298 -0
  268. package/scripts/except_sets.py +25 -0
  269. package/scripts/extract.py +55 -16
  270. package/scripts/fact_align.py +207 -0
  271. package/scripts/fact_crosscheck.py +230 -0
  272. package/scripts/fetch.py +25 -12
  273. package/scripts/fetch_browser.py +87 -0
  274. package/scripts/fetch_jsrun.py +122 -0
  275. package/scripts/fetch_quality.py +225 -0
  276. package/scripts/fetch_render_tinyfish.py +117 -0
  277. package/scripts/fetch_v3.py +1779 -0
  278. package/scripts/focus_extract.py +350 -0
  279. package/scripts/fulltext_store.py +169 -0
  280. package/scripts/fxtwitter_api.py +325 -0
  281. package/scripts/gen_engine_catalog.py +364 -0
  282. package/scripts/gen_native_tools.py +91 -0
  283. package/scripts/gen_routing_snapshot.py +184 -0
  284. package/scripts/health_check.py +140 -402
  285. package/scripts/health_probe.py +23 -8
  286. package/scripts/hot_state.py +134 -0
  287. package/scripts/http_client.py +1053 -0
  288. package/scripts/image_ops.py +430 -0
  289. package/scripts/image_vision/vision_probe +0 -0
  290. package/scripts/image_vision/vision_probe.swift +126 -0
  291. package/scripts/install.ps1 +148 -0
  292. package/scripts/install.sh +206 -0
  293. package/scripts/job.py +1186 -0
  294. package/scripts/jump_resolver.py +235 -0
  295. package/scripts/lang_capability.py +150 -0
  296. package/scripts/lang_detect.py +289 -0
  297. package/scripts/lang_matrix_probe.py +329 -0
  298. package/scripts/lang_pref.py +311 -0
  299. package/scripts/link_source.py +340 -0
  300. package/scripts/local_engines.py +321 -0
  301. package/scripts/local_image.py +970 -0
  302. package/scripts/local_seek.py +366 -0
  303. package/scripts/macro_countries.py +82 -0
  304. package/scripts/matrix_search_eval.py +1105 -0
  305. package/scripts/mcp_diag.py +8 -3
  306. package/scripts/mcp_handlers.py +1074 -0
  307. package/scripts/mcp_handlers_surface.py +157 -0
  308. package/scripts/mcp_launch.sh +122 -0
  309. package/scripts/mcp_server.py +118 -417
  310. package/scripts/mcp_setup.py +407 -0
  311. package/scripts/mcp_tools.py +330 -0
  312. package/scripts/mcp_transport.py +191 -0
  313. package/scripts/min_version_scan.py +335 -0
  314. package/scripts/net_proxy.py +258 -0
  315. package/scripts/network_aware.py +152 -0
  316. package/scripts/paper.py +274 -0
  317. package/scripts/pdf_extract.py +518 -0
  318. package/scripts/phrase_filter.py +66 -0
  319. package/scripts/plan.py +422 -0
  320. package/scripts/postprocess_signals.py +150 -0
  321. package/scripts/pre-commit +48 -0
  322. package/scripts/query_enhance.py +157 -0
  323. package/scripts/query_operators.py +196 -0
  324. package/scripts/query_rewriter.py +116 -7
  325. package/scripts/query_signals.py +300 -0
  326. package/scripts/query_templates.py +167 -0
  327. package/scripts/query_understanding.py +411 -0
  328. package/scripts/query_variants.py +298 -0
  329. package/scripts/quota.py +488 -76
  330. package/scripts/rank_signals.py +775 -0
  331. package/scripts/ranking_eval.py +319 -0
  332. package/scripts/readability_extract.py +433 -0
  333. package/scripts/recompute.py +415 -0
  334. package/scripts/recovery.py +616 -0
  335. package/scripts/recovery_l0.py +160 -0
  336. package/scripts/redskill/redskill_engine.py +332 -0
  337. package/scripts/regression_p0p1.py +318 -0
  338. package/scripts/replay_eval.py +640 -0
  339. package/scripts/rerank_tfidf.py +225 -0
  340. package/scripts/research.py +591 -403
  341. package/scripts/research_cli.py +361 -0
  342. package/scripts/research_dossier.py +492 -0
  343. package/scripts/research_expand.py +146 -0
  344. package/scripts/research_gates.py +272 -0
  345. package/scripts/research_report.py +209 -0
  346. package/scripts/research_strategy.py +37 -0
  347. package/scripts/research_work_packages.py +195 -0
  348. package/scripts/result_lang.py +311 -0
  349. package/scripts/robots_guard.py +259 -0
  350. package/scripts/route.py +921 -254
  351. package/scripts/route_bangs.py +40 -0
  352. package/scripts/route_cache.py +225 -0
  353. package/scripts/route_combo.py +910 -0
  354. package/scripts/route_domains.py +328 -0
  355. package/scripts/route_lang.py +605 -0
  356. package/scripts/route_log.py +63 -0
  357. package/scripts/route_policy.py +250 -0
  358. package/scripts/rrf_classic.py +66 -0
  359. package/scripts/screenshot.py +73 -0
  360. package/scripts/search.py +897 -405
  361. package/scripts/search_attribution.py +88 -0
  362. package/scripts/search_benchmark.py +407 -0
  363. package/scripts/search_cli.py +627 -0
  364. package/scripts/search_entry.py +389 -0
  365. package/scripts/search_output.py +606 -0
  366. package/scripts/search_pipeline.py +1077 -0
  367. package/scripts/search_rank.py +991 -0
  368. package/scripts/search_types.py +27 -12
  369. package/scripts/seek_locator.py +68 -0
  370. package/scripts/semantic_evidence.py +215 -0
  371. package/scripts/serp_guard.py +228 -0
  372. package/scripts/serp_kill_log.py +51 -0
  373. package/scripts/single_flight.py +120 -0
  374. package/scripts/social_engines/__init__.py +10 -0
  375. package/scripts/social_engines/bilibili_engine.py +131 -0
  376. package/scripts/social_engines/hackernews_engine.py +113 -0
  377. package/scripts/social_engines/reddit_engine.py +172 -0
  378. package/scripts/social_engines/twitter_engine.py +397 -0
  379. package/scripts/social_engines/v2ex_engine.py +101 -0
  380. package/scripts/social_engines/weibo_engine.py +128 -0
  381. package/scripts/social_engines/xiaohongshu_engine.py +137 -0
  382. package/scripts/social_engines/zhihu_engine.py +139 -0
  383. package/scripts/social_research.py +201 -0
  384. package/scripts/sogou_weixin_browser.py +318 -0
  385. package/scripts/source_ledger.py +249 -0
  386. package/scripts/stage_timing.py +58 -0
  387. package/scripts/stats_cli.py +95 -0
  388. package/scripts/straggler_policy.py +60 -0
  389. package/scripts/stylometry_detector.py +231 -0
  390. package/scripts/sync_backends.py +353 -0
  391. package/scripts/sync_installs.py +29 -0
  392. package/scripts/template_cli.py +127 -0
  393. package/scripts/text_lexicon.py +72 -0
  394. package/scripts/tfidf_router.py +109 -37
  395. package/scripts/time_utils.py +233 -0
  396. package/scripts/topic_research_profiles.py +643 -0
  397. package/scripts/train.py +737 -0
  398. package/scripts/tweet.py +596 -0
  399. package/scripts/url_canon.py +217 -0
  400. package/scripts/url_optimize.py +56 -0
  401. package/scripts/url_safety.py +236 -0
  402. package/scripts/usage_log.py +116 -0
  403. package/scripts/usage_log_clean.py +113 -0
  404. package/scripts/v2ex_nodes.py +311 -0
  405. package/scripts/variant_recall.py +188 -0
  406. package/scripts/watch.py +205 -0
  407. package/scripts/wechat_article.py +258 -0
  408. package/scripts/wide_research.py +402 -0
  409. package/scripts/wx.py +349 -0
  410. package/scripts/x_article_fetch.py +141 -0
  411. package/scripts/x_search.py +234 -0
  412. package/scripts/x_trending.py +189 -0
  413. package/scripts/yaml_load.py +67 -0
  414. package/sub-skills/ego-search/SKILL.md +253 -0
  415. package/sub-skills/ego-search/references/browser-runtime.md +43 -0
  416. package/sub-skills/ego-search/references/install.md +67 -0
  417. package/sub-skills/ego-search/references/original-ego-upgrade.md +51 -0
  418. package/sub-skills/ego-search/scripts/ego_search.py +800 -0
  419. package/sub-skills/ego-search/scripts/merge.py +226 -0
  420. package/sub-skills/ego-search/scripts/quality.py +64 -0
  421. package/sub-skills/ego-search/scripts/runtime.py +172 -0
  422. package/sub-skills/ego-search/scripts/safety.py +109 -0
  423. package/sub-skills/ego-search/scripts/serp_spec.py +109 -0
  424. package/sub-skills/ego-search/scripts/webbridge_adapter.py +374 -0
  425. package/sub-skills/ego-search/tests/test_query_normalize.py +68 -0
  426. package/sub-skills/js-run/SKILL.md +67 -0
  427. package/sub-skills/js-run/scripts/jsrun.py +112 -0
  428. package/sub-skills/js-run/scripts/shim.js +188 -0
  429. package/sub-skills/js-run/tests/fixtures/challenge_like.js +27 -0
  430. package/sub-skills/js-run/tests/test_jsrun.py +165 -0
  431. package/sub-skills/local-search/SKILL.md +50 -53
  432. package/sub-skills/local-search/bm25.py +162 -0
  433. package/sub-skills/local-search/config.yaml +152 -55
  434. package/sub-skills/local-search/engine_registry.py +91 -26
  435. package/sub-skills/local-search/{health_check.py → local_health_check.py} +140 -10
  436. package/sub-skills/local-search/local_search_adapter.py +13 -2
  437. package/sub-skills/local-search/parse_maps.yaml +40 -42
  438. package/sub-skills/local-search/search_v3.py +1182 -65
  439. package/sub-skills/local-search/smart_router.py +47 -7
  440. package/sub-skills/local-seek/SKILL.md +110 -0
  441. package/sub-skills/local-seek/config/domains.yaml +20 -0
  442. package/sub-skills/local-seek/references/auto-behaviors.md +24 -0
  443. package/sub-skills/local-seek/references/fd-mdfind-recipes.md +62 -0
  444. package/sub-skills/local-seek/references/git-integration.md +54 -0
  445. package/sub-skills/local-seek/references/remote-handoff.md +46 -0
  446. package/sub-skills/local-seek/references/rg-recipes.md +96 -0
  447. package/sub-skills/local-seek/references/strategies.md +52 -0
  448. package/sub-skills/local-seek/references/structural-search.md +59 -0
  449. package/sub-skills/local-seek/scripts/eval_rank.py +216 -0
  450. package/sub-skills/local-seek/scripts/eval_seek.py +224 -0
  451. package/sub-skills/local-seek/scripts/seek.py +1465 -0
  452. package/sub-skills/local-seek/scripts/seek_frecency.py +126 -0
  453. package/sub-skills/local-seek/scripts/seek_fts.py +430 -0
  454. package/sub-skills/local-seek/scripts/seek_rank.py +193 -0
  455. package/sub-skills/local-seek/tests/test_content_rank.py +222 -0
  456. package/sub-skills/local-seek/tests/test_determinism_20261006.py +145 -0
  457. package/sub-skills/local-seek/tests/test_noise_tier.py +101 -0
  458. package/sub-skills/local-seek/tests/test_pcre2_probe.py +136 -0
  459. package/sub-skills/local-seek/tests/test_rank_pinyin.py +77 -0
  460. package/sub-skills/local-seek/tests/test_regression_20261003.py +169 -0
  461. package/sub-skills/local-seek/tests/test_regression_20261006.py +146 -0
  462. package/sub-skills/local-seek/tests/test_seek_degradation.py +111 -0
  463. package/sub-skills/local-seek/tests/test_seek_fts.py +313 -0
@@ -0,0 +1,743 @@
1
+ // 本文件由 scripts/gen_native_tools.py 从 schema 唯一真源
2
+ // scripts/mcp_tools.py 生成 —— 勿手改;改 schema 后重新生成,
3
+ // tests/test_native_tools_sync.py 负责漂移门禁。
4
+ //
5
+ // 说明:
6
+ // - description / parameters 与 MCP 模型可见 schema 完全一致
7
+ // - allowed = parameters.properties 键序(原生侧 pickArgs 白名单)
8
+ // - 不含 argo_research:分钟级编排不适合 CLI 单发(默认超时会中断),
9
+ // 走 MCP 形态或 wide_research 入口
10
+ //
11
+ export const NATIVE_TOOLS = {
12
+ "argo_search": {
13
+ "description": "统一网络搜索:多引擎融合、支持时间过滤与域名过滤,返回带来源与摘要的结果。查资料、找答案、搜新闻/学术/代码/多语言内容等通用场景的首选工具。",
14
+ "parameters": {
15
+ "type": "object",
16
+ "properties": {
17
+ "query": {
18
+ "type": "string",
19
+ "description": "搜索查询词"
20
+ },
21
+ "engine": {
22
+ "type": "string",
23
+ "description": "指定搜索引擎(auto 自动选择;可选 octen/anysearch/exa/zhihu/eastmoney/arxiv/byted/bocha/tavily/deepseek_search/github/wikipedia/semantic_scholar/local_search 等;deepseek_search 为按次计费的官方 DeepSeek 搜索,结果带权威分级与发布时间,新闻时事类查询优先考虑)",
24
+ "default": "auto"
25
+ },
26
+ "max_results": {
27
+ "type": "integer",
28
+ "description": "返回结果条数",
29
+ "default": 5,
30
+ "minimum": 1,
31
+ "maximum": 20
32
+ },
33
+ "depth": {
34
+ "type": "string",
35
+ "enum": [
36
+ "fast",
37
+ "balanced",
38
+ "deep"
39
+ ],
40
+ "description": "搜索深度:fast 快、deep 全(慢)",
41
+ "default": "fast"
42
+ },
43
+ "mode": {
44
+ "type": "string",
45
+ "enum": [
46
+ "fast",
47
+ "auto",
48
+ "deep",
49
+ "budget"
50
+ ],
51
+ "description": "预算模式:fast=免费优先, auto=成本感知, deep=质量优先, budget=配额控制",
52
+ "default": "auto"
53
+ },
54
+ "since": {
55
+ "type": "string",
56
+ "description": "发布时间下限,如 7d / 2026-08-01"
57
+ },
58
+ "until": {
59
+ "type": "string",
60
+ "description": "发布时间上限,如 7d / 2026-08-01"
61
+ },
62
+ "sort": {
63
+ "type": "string",
64
+ "enum": [
65
+ "relevance",
66
+ "oldest",
67
+ "newest"
68
+ ],
69
+ "description": "排序:relevance=相关度, oldest=最早在前, newest=最新在前",
70
+ "default": "relevance"
71
+ },
72
+ "include_domains": {
73
+ "type": "array",
74
+ "items": {
75
+ "type": "string"
76
+ },
77
+ "description": "仅保留这些域名(含子域),如 [\"github.com\"]",
78
+ "default": []
79
+ },
80
+ "exclude_domains": {
81
+ "type": "array",
82
+ "items": {
83
+ "type": "string"
84
+ },
85
+ "description": "排除这些域名(含子域),如 [\"pinterest.com\"]",
86
+ "default": []
87
+ },
88
+ "include_local": {
89
+ "type": "boolean",
90
+ "description": "并入本机文件命中(seek 结果尾部,source=local_files,不参与融合评分;默认开)",
91
+ "default": true
92
+ },
93
+ "summary": {
94
+ "type": "boolean",
95
+ "description": "精简输出:截断摘要、去掉重字段,省 token",
96
+ "default": true
97
+ }
98
+ },
99
+ "required": [
100
+ "query"
101
+ ],
102
+ "additionalProperties": false
103
+ },
104
+ "allowed": [
105
+ "query",
106
+ "engine",
107
+ "max_results",
108
+ "depth",
109
+ "mode",
110
+ "since",
111
+ "until",
112
+ "sort",
113
+ "include_domains",
114
+ "exclude_domains",
115
+ "include_local",
116
+ "summary"
117
+ ]
118
+ },
119
+ "argo_local_search": {
120
+ "description": "本机文件/笔记/代码搜索(非联网):返回文件路径与行号。搜本地资料时用,与网络搜索互补。",
121
+ "parameters": {
122
+ "type": "object",
123
+ "properties": {
124
+ "query": {
125
+ "type": "string",
126
+ "description": "搜索查询词(中文自动扩展召回)"
127
+ },
128
+ "path": {
129
+ "type": "string",
130
+ "description": "搜索目录;缩小范围更快更准",
131
+ "default": "~"
132
+ },
133
+ "max_results": {
134
+ "type": "integer",
135
+ "description": "返回结果条数",
136
+ "default": 5,
137
+ "minimum": 1,
138
+ "maximum": 20
139
+ },
140
+ "exact": {
141
+ "type": "boolean",
142
+ "description": "精确匹配,关闭中文扩展",
143
+ "default": false
144
+ }
145
+ },
146
+ "required": [
147
+ "query"
148
+ ],
149
+ "additionalProperties": false
150
+ },
151
+ "allowed": [
152
+ "query",
153
+ "path",
154
+ "max_results",
155
+ "exact"
156
+ ]
157
+ },
158
+ "argo_local_read": {
159
+ "description": "读取白名单内的本地文本文件(预览,非全文):用于分析本地数据/笔记/研究成果。白名单目录由 ARGO_LOCAL_READ_DIRS 配置(逗号分隔),未配置或路径越权时拒绝(默认拒绝)。",
160
+ "parameters": {
161
+ "type": "object",
162
+ "properties": {
163
+ "path": {
164
+ "type": "string",
165
+ "description": "文件路径(必须位于白名单目录内)"
166
+ },
167
+ "max_chars": {
168
+ "type": "integer",
169
+ "description": "预览字符数上限",
170
+ "default": 4000,
171
+ "minimum": 200,
172
+ "maximum": 20000
173
+ },
174
+ "line_start": {
175
+ "type": "integer",
176
+ "description": "起始行号(1 基,可选)",
177
+ "minimum": 1
178
+ },
179
+ "line_end": {
180
+ "type": "integer",
181
+ "description": "结束行号(可选)"
182
+ }
183
+ },
184
+ "required": [
185
+ "path"
186
+ ],
187
+ "additionalProperties": false
188
+ },
189
+ "allowed": [
190
+ "path",
191
+ "max_chars",
192
+ "line_start",
193
+ "line_end"
194
+ ]
195
+ },
196
+ "argo_recompute": {
197
+ "description": "可复算执行器(默认拒绝):在受限子进程中运行计算脚本(只读白名单输入、断网、超时硬杀、内存软限),验证本地数据重算出的数值。用于结论承重要重算数字时;默认拒绝,需显式授权。",
198
+ "parameters": {
199
+ "type": "object",
200
+ "properties": {
201
+ "script": {
202
+ "type": "string",
203
+ "description": "要运行的计算代码(Python)"
204
+ },
205
+ "file_inputs": {
206
+ "type": "string",
207
+ "description": "白名单输入文件 JSON 数组:[{\"path\":\"...\",\"role\":\"原始数据\"}]"
208
+ },
209
+ "timeout_s": {
210
+ "type": "integer",
211
+ "description": "超时秒数",
212
+ "default": 30,
213
+ "minimum": 1,
214
+ "maximum": 120
215
+ },
216
+ "max_mem_mb": {
217
+ "type": "integer",
218
+ "description": "内存上限 MB(尽力而为)",
219
+ "default": 512
220
+ },
221
+ "allow_exec": {
222
+ "type": "boolean",
223
+ "description": "是否授权运行(不授权就不执行;未授权时返回 skipped_reason)",
224
+ "default": false
225
+ }
226
+ },
227
+ "required": [
228
+ "script"
229
+ ],
230
+ "additionalProperties": false
231
+ },
232
+ "allowed": [
233
+ "script",
234
+ "file_inputs",
235
+ "timeout_s",
236
+ "max_mem_mb",
237
+ "allow_exec"
238
+ ]
239
+ },
240
+ "argo_evidence": {
241
+ "description": "来源可信度评估:对搜索结果做权威性+时效性+交叉验证评分,输出逐条可信度分解。用于事实核查、高后果决策、学术引用。",
242
+ "parameters": {
243
+ "type": "object",
244
+ "properties": {
245
+ "query": {
246
+ "type": "string",
247
+ "description": "搜索查询词(用于交叉验证)"
248
+ },
249
+ "results_json": {
250
+ "type": "string",
251
+ "description": "待评估的搜索结果 JSON(为空时自动搜索)。格式:{\"results\": [{\"title\":\"...\",\"url\":\"...\",\"snippet\":\"...\",\"source\":\"...\",\"score\":0.8}]}"
252
+ },
253
+ "max_results": {
254
+ "type": "integer",
255
+ "description": "自动搜索时的结果条数",
256
+ "default": 10
257
+ }
258
+ },
259
+ "required": [
260
+ "query"
261
+ ],
262
+ "additionalProperties": false
263
+ },
264
+ "allowed": [
265
+ "query",
266
+ "results_json",
267
+ "max_results"
268
+ ]
269
+ },
270
+ "argo_clarify": {
271
+ "description": "意图消歧:识别查询中的歧义词与多义实体,给出意图分类与推荐搜索策略。查询含歧义词(苹果=公司/水果)或意图不明时用。",
272
+ "parameters": {
273
+ "type": "object",
274
+ "properties": {
275
+ "query": {
276
+ "type": "string",
277
+ "description": "需要消歧的查询"
278
+ }
279
+ },
280
+ "required": [
281
+ "query"
282
+ ],
283
+ "additionalProperties": false
284
+ },
285
+ "allowed": [
286
+ "query"
287
+ ]
288
+ },
289
+ "argo_crawl": {
290
+ "description": "站点级爬取:按 sitemap 或 BFS 批量抓取整站页面,返回 URL、正文片段与深度。适合整站内容审计、站内多页对比。",
291
+ "parameters": {
292
+ "type": "object",
293
+ "properties": {
294
+ "url": {
295
+ "type": "string",
296
+ "description": "站点根 URL"
297
+ },
298
+ "strategy": {
299
+ "type": "string",
300
+ "enum": [
301
+ "sitemap",
302
+ "bfs"
303
+ ],
304
+ "description": "爬取策略",
305
+ "default": "bfs"
306
+ },
307
+ "max_pages": {
308
+ "type": "integer",
309
+ "description": "最大抓取页数",
310
+ "default": 10,
311
+ "minimum": 1,
312
+ "maximum": 50
313
+ },
314
+ "max_depth": {
315
+ "type": "integer",
316
+ "description": "BFS 最大深度",
317
+ "default": 2,
318
+ "minimum": 1,
319
+ "maximum": 5
320
+ }
321
+ },
322
+ "required": [
323
+ "url"
324
+ ],
325
+ "additionalProperties": false
326
+ },
327
+ "allowed": [
328
+ "url",
329
+ "strategy",
330
+ "max_pages",
331
+ "max_depth"
332
+ ]
333
+ },
334
+ "argo_fetch": {
335
+ "description": "智能页面抓取:HTTP 优先,遇 Cloudflare/JS 渲染自动升级反检测浏览器。支持 BM25 聚焦提取(focus 省 80%+ token)与结构化提取(mode=extract 抽表格/元数据/JSON-LD)。",
336
+ "parameters": {
337
+ "type": "object",
338
+ "properties": {
339
+ "url": {
340
+ "type": "string",
341
+ "description": "目标 URL"
342
+ },
343
+ "mode": {
344
+ "type": "string",
345
+ "enum": [
346
+ "text",
347
+ "extract"
348
+ ],
349
+ "description": "text=正文/聚焦文本, extract=结构化提取",
350
+ "default": "text"
351
+ },
352
+ "extract_mode": {
353
+ "type": "string",
354
+ "enum": [
355
+ "tables",
356
+ "metadata",
357
+ "jsonld",
358
+ "all"
359
+ ],
360
+ "description": "mode=extract 时的提取子模式",
361
+ "default": "all"
362
+ },
363
+ "focus": {
364
+ "type": "string",
365
+ "description": "BM25 聚焦查询词:只返回相关段落,省 token(仅 mode=text)"
366
+ },
367
+ "max_chars": {
368
+ "type": "integer",
369
+ "description": "返回正文最大字符数",
370
+ "default": 8000,
371
+ "minimum": 500,
372
+ "maximum": 50000
373
+ },
374
+ "use_browser": {
375
+ "type": "boolean",
376
+ "description": "强制用反检测浏览器(HTTP 失败时已自动升级)",
377
+ "default": false
378
+ }
379
+ },
380
+ "required": [
381
+ "url"
382
+ ],
383
+ "additionalProperties": false
384
+ },
385
+ "allowed": [
386
+ "url",
387
+ "mode",
388
+ "extract_mode",
389
+ "focus",
390
+ "max_chars",
391
+ "use_browser"
392
+ ]
393
+ },
394
+ "argo_screenshot": {
395
+ "description": "网页截图(PNG):分析页面布局、验证渲染结果、存档快照。支持全页与视口截图。",
396
+ "parameters": {
397
+ "type": "object",
398
+ "properties": {
399
+ "url": {
400
+ "type": "string",
401
+ "description": "目标 URL"
402
+ },
403
+ "full_page": {
404
+ "type": "boolean",
405
+ "description": "全页截图(默认仅当前视口)",
406
+ "default": false
407
+ },
408
+ "output_path": {
409
+ "type": "string",
410
+ "description": "输出路径(默认写入系统临时目录:<temp>/argo_screenshot_<timestamp>.png)"
411
+ }
412
+ },
413
+ "required": [
414
+ "url"
415
+ ],
416
+ "additionalProperties": false
417
+ },
418
+ "allowed": [
419
+ "url",
420
+ "full_page",
421
+ "output_path"
422
+ ]
423
+ },
424
+ "argo_pdf": {
425
+ "description": "PDF 结构化提取:转为 Markdown(含表格、目录、元数据),支持 URL 下载与本地文件。",
426
+ "parameters": {
427
+ "type": "object",
428
+ "properties": {
429
+ "url": {
430
+ "type": "string",
431
+ "description": "PDF URL 或本地文件路径"
432
+ },
433
+ "pages": {
434
+ "type": "string",
435
+ "description": "页码范围,如 \"1-5\" 或 \"1,3,5\"(默认全部)"
436
+ },
437
+ "password": {
438
+ "type": "string",
439
+ "description": "加密 PDF 密码"
440
+ }
441
+ },
442
+ "required": [
443
+ "url"
444
+ ],
445
+ "additionalProperties": false
446
+ },
447
+ "allowed": [
448
+ "url",
449
+ "pages",
450
+ "password"
451
+ ]
452
+ },
453
+ "argo_social_search": {
454
+ "description": "社交平台搜索:知乎、Hacker News、B站、V2EX、Twitter/X、Reddit、小红书、微博等 UGC 内容。mode=sentiment 输出舆情聚合。注意:hackernews/v2ex/zhihu/bilibili 零密钥可用;twitter/reddit/weibo/xiaohongshu 依赖登录态或第三方 API,可能返回空。",
455
+ "parameters": {
456
+ "type": "object",
457
+ "properties": {
458
+ "query": {
459
+ "type": "string",
460
+ "description": "搜索查询词"
461
+ },
462
+ "mode": {
463
+ "type": "string",
464
+ "enum": [
465
+ "text",
466
+ "sentiment"
467
+ ],
468
+ "description": "text=帖子列表, sentiment=舆情聚合分析",
469
+ "default": "text"
470
+ },
471
+ "platforms": {
472
+ "type": "string",
473
+ "description": "平台列表,逗号分隔;可选 hackernews,v2ex,zhihu,bilibili,twitter,reddit,xiaohongshu,weibo",
474
+ "default": "hackernews,zhihu,bilibili"
475
+ },
476
+ "max_results": {
477
+ "type": "integer",
478
+ "description": "每个平台的结果条数",
479
+ "default": 5,
480
+ "minimum": 1,
481
+ "maximum": 20
482
+ }
483
+ },
484
+ "required": [
485
+ "query"
486
+ ],
487
+ "additionalProperties": false
488
+ },
489
+ "allowed": [
490
+ "query",
491
+ "mode",
492
+ "platforms",
493
+ "max_results"
494
+ ]
495
+ },
496
+ "argo_article": {
497
+ "description": "微信公众号文章全文抓取:标题/作者/发布时间/正文纯文本/图片列表。仅支持 mp.weixin.qq.com 链接;要读公众号文章全文时用(普通网页走 argo_fetch)。",
498
+ "parameters": {
499
+ "type": "object",
500
+ "properties": {
501
+ "url": {
502
+ "type": "string",
503
+ "description": "mp.weixin.qq.com 文章链接"
504
+ },
505
+ "max_chars": {
506
+ "type": "integer",
507
+ "description": "返回正文最大字符数",
508
+ "default": 20000,
509
+ "minimum": 500,
510
+ "maximum": 50000
511
+ }
512
+ },
513
+ "required": [
514
+ "url"
515
+ ],
516
+ "additionalProperties": false
517
+ },
518
+ "allowed": [
519
+ "url",
520
+ "max_chars"
521
+ ]
522
+ },
523
+ "argo_job": {
524
+ "description": "招聘岗位多平台聚合:BOSS直聘/猎聘/智联/前程无忧/597/今日招聘,职位+地区并发搜索,三级地区命中判定+结构化字段(薪资/学历/经验)+跨平台去重。招聘市场调研时用。",
525
+ "parameters": {
526
+ "type": "object",
527
+ "properties": {
528
+ "query": {
529
+ "type": "string",
530
+ "description": "职位关键词,如:工艺工程师、会计、电工"
531
+ },
532
+ "city": {
533
+ "type": "string",
534
+ "description": "地区:省/市/县或海外城市(成都、昆山、新加坡…),空=不过滤地区"
535
+ },
536
+ "num": {
537
+ "type": "integer",
538
+ "description": "每后端条数",
539
+ "default": 5,
540
+ "minimum": 1,
541
+ "maximum": 20
542
+ },
543
+ "platforms": {
544
+ "type": "string",
545
+ "description": "逗号分隔平台: zhipin,liepin,zhaopin,51job,597,jrzp;空=全部",
546
+ "default": ""
547
+ },
548
+ "loose": {
549
+ "type": "boolean",
550
+ "description": "宽松:异地岗位也保留;默认严格地区过滤",
551
+ "default": false
552
+ },
553
+ "fetch_detail": {
554
+ "type": "integer",
555
+ "description": "对前 N 条高命中结果抓详情页补全结构化字段(0=仅 snippet 提取)",
556
+ "default": 0,
557
+ "minimum": 0,
558
+ "maximum": 10
559
+ }
560
+ },
561
+ "required": [
562
+ "query"
563
+ ],
564
+ "additionalProperties": false
565
+ },
566
+ "allowed": [
567
+ "query",
568
+ "city",
569
+ "num",
570
+ "platforms",
571
+ "loose",
572
+ "fetch_detail"
573
+ ]
574
+ },
575
+ "argo_extract": {
576
+ "description": "网页结构化提取:表格、Meta 元数据(og:/description)、JSON-LD 结构化数据。要拿页面的表格数据或结构化字段时用;正文通读走 argo_fetch。",
577
+ "parameters": {
578
+ "type": "object",
579
+ "properties": {
580
+ "url": {
581
+ "type": "string",
582
+ "description": "目标网页链接"
583
+ },
584
+ "mode": {
585
+ "type": "string",
586
+ "enum": [
587
+ "tables",
588
+ "metadata",
589
+ "jsonld",
590
+ "all"
591
+ ],
592
+ "description": "提取内容:tables=HTML表格, metadata=Meta元数据, jsonld=JSON-LD, all=全部",
593
+ "default": "all"
594
+ },
595
+ "max_chars": {
596
+ "type": "integer",
597
+ "description": "抓取页面最大字符数",
598
+ "default": 50000,
599
+ "minimum": 1000,
600
+ "maximum": 200000
601
+ }
602
+ },
603
+ "required": [
604
+ "url"
605
+ ],
606
+ "additionalProperties": false
607
+ },
608
+ "allowed": [
609
+ "url",
610
+ "mode",
611
+ "max_chars"
612
+ ]
613
+ },
614
+ "argo_preflight": {
615
+ "description": "批量 URL 预检:把候选链接分类为可用/登录墙/已失效/需联网确认,probe 开启时实测存活。引用或抓取一批来源前先过一遍,避免把死链和登录墙当信源。",
616
+ "parameters": {
617
+ "type": "object",
618
+ "properties": {
619
+ "urls": {
620
+ "type": "array",
621
+ "items": {
622
+ "type": "string"
623
+ },
624
+ "description": "待预检的 URL 列表",
625
+ "minItems": 1
626
+ },
627
+ "probe": {
628
+ "type": "boolean",
629
+ "description": "联网探测存活(404/410 判死;默认纯本地规则)",
630
+ "default": false
631
+ }
632
+ },
633
+ "required": [
634
+ "urls"
635
+ ],
636
+ "additionalProperties": false
637
+ },
638
+ "allowed": [
639
+ "urls",
640
+ "probe"
641
+ ]
642
+ },
643
+ "argo_answer": {
644
+ "description": "直答:对事实型问题返回带引用的合成答案与置信口径。要一句话答案而非链接列表时用;开放式调研走 argo_research。",
645
+ "parameters": {
646
+ "type": "object",
647
+ "properties": {
648
+ "query": {
649
+ "type": "string",
650
+ "description": "要回答的问题"
651
+ },
652
+ "scope": {
653
+ "type": "string",
654
+ "description": "答案域(如 news);空=默认"
655
+ },
656
+ "model": {
657
+ "type": "string",
658
+ "description": "答案模型;空=默认"
659
+ }
660
+ },
661
+ "required": [
662
+ "query"
663
+ ],
664
+ "additionalProperties": false
665
+ },
666
+ "allowed": [
667
+ "query",
668
+ "scope",
669
+ "model"
670
+ ]
671
+ },
672
+ "argo_watch": {
673
+ "description": "网页变化监控:对关注页面做快照并在复查时报告变化。add 登记关注、check 复查变化、list 看清单、remove 取消;适合盯价格/公告/版本发布页。",
674
+ "parameters": {
675
+ "type": "object",
676
+ "properties": {
677
+ "action": {
678
+ "type": "string",
679
+ "enum": [
680
+ "add",
681
+ "check",
682
+ "list",
683
+ "remove"
684
+ ],
685
+ "description": "add=登记快照, check=复查变化(可指定单个 url), list=看清单, remove=取消关注"
686
+ },
687
+ "url": {
688
+ "type": "string",
689
+ "description": "目标页面(add/remove 必填;check 可选=只查这一条)"
690
+ },
691
+ "note": {
692
+ "type": "string",
693
+ "description": "备注(add 可选)",
694
+ "default": ""
695
+ }
696
+ },
697
+ "required": [
698
+ "action"
699
+ ],
700
+ "additionalProperties": false
701
+ },
702
+ "allowed": [
703
+ "action",
704
+ "url",
705
+ "note"
706
+ ]
707
+ },
708
+ "argo_cite": {
709
+ "description": "DOI → 引用条目:GB/T 7714 / 顺序编码 / APA / BibTeX 四格式,Crossref+OpenAlex 免 key。论文引用、参考文献列表生成时用。",
710
+ "parameters": {
711
+ "type": "object",
712
+ "properties": {
713
+ "dois": {
714
+ "type": "array",
715
+ "items": {
716
+ "type": "string"
717
+ },
718
+ "description": "DOI 列表,如 [\"10.1038/s41586-024-0001-x\"]",
719
+ "minItems": 1
720
+ },
721
+ "style": {
722
+ "type": "string",
723
+ "enum": [
724
+ "gbt7714",
725
+ "numeric",
726
+ "apa",
727
+ "bibtex"
728
+ ],
729
+ "description": "引用格式",
730
+ "default": "gbt7714"
731
+ }
732
+ },
733
+ "required": [
734
+ "dois"
735
+ ],
736
+ "additionalProperties": false
737
+ },
738
+ "allowed": [
739
+ "dois",
740
+ "style"
741
+ ]
742
+ }
743
+ };