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
package/README.ja.md ADDED
@@ -0,0 +1,864 @@
1
+ <p align="center">
2
+ <img src="assets/readme/hero.svg" width="100%" alt="Argo アルゴ:Agent のための検索と深掘り調査ツール、264 の検索ソース、ドメインと言語で経路を選び、吸収できる証拠を出力">
3
+ </p>
4
+
5
+ <p align="center">
6
+ <a href="README.md">中文</a> ·
7
+ <a href="README.en.md">English</a> ·
8
+ <strong>日本語</strong> ·
9
+ <a href="README.ko.md">한국어</a> ·
10
+ <a href="README.es.md">Español</a>
11
+ </p>
12
+
13
+ <p align="center">
14
+ <a href="#これは何か">紹介</a> ·
15
+ <a href="#モデル内蔵検索--ai-検索--横断検索より強い点">比較</a> ·
16
+ <a href="#聞き方に合わせたルーティング">証明</a> ·
17
+ <a href="#仕組み">仕組み</a> ·
18
+ <a href="#クイックスタート">導入</a> ·
19
+ <a href="#できること">機能</a> ·
20
+ <a href="#インストールと設定">設定</a> ·
21
+ <a href="#最近の更新">更新</a>
22
+ </p>
23
+
24
+ <p align="center">
25
+ <img alt="license" src="https://img.shields.io/badge/license-Apache_2.0-blue">
26
+ <img alt="python" src="https://img.shields.io/badge/python-3.9+-green">
27
+ <img alt="version" src="https://img.shields.io/badge/version-2.9.7-informational">
28
+ <img alt="engines" src="https://img.shields.io/badge/engines-264-orange">
29
+ <img alt="mcp" src="https://img.shields.io/badge/MCP-19%20tools-purple">
30
+ </p>
31
+
32
+ > **これは taxueseek の DeepSeek Harness プラグイン群のひとつ**([dsh-files](https://github.com/taxueseek/dsh-files) 39★)。同作者のスキルシリーズ:[session-digger](https://github.com/taxueseek/session-digger) 29★ · [taxue-invest](https://github.com/taxueseek/taxue-invest) 21★ · [taxueskills](https://github.com/taxueseek/taxueskills) 23★ · [taxue-creative-style](https://github.com/taxueseek/taxue-creative-style) 12★
33
+
34
+ # Argo アルゴ:Agent のための検索と深掘り調査ツール
35
+
36
+ ## これは何か
37
+
38
+ **Argo は Agent に組み込んで使う検索・深掘り調査ツールで、関連するウェブページの情報も取得できます。背後には 264 の検索ソースがあり、95 の業務ドメインをカバーし、ローカルファイルの基本的な検索も備えています。オープンソースの検索プロジェクトの中では、非常に強力な検索能力を持っています。**
39
+
40
+ API Key を設定すれば検索品質を上げられます(Key を設定したソースは品質が良いことが多く、未設定なら自動でスキップ)。無料エンジンとローカルエンジンによる自動バックストップにも対応しています。中英日韓など 18 言語をカバーし、金融・学術・映像・スポーツ・コード・マクロなどの垂直シーンに対応します。
41
+
42
+ ## サブスキル
43
+
44
+ Argo の能力は四つのサブスキル(sub-skills)で構成され、各サブスキルは独立して使えるパイプラインです:
45
+
46
+ | サブスキル | 能力 |
47
+ |--------|------|
48
+ | **local-search** | ローカルファイル検索 + ローカルゼロコスト集約エンジン(32 のローカルエンジン)。コードシンボル、ファイル名、ドキュメント全文、ファイル構造を検索できます。ネット検索結果に統合でき、スイッチひとつでローカルのヒットを同じ検索に混ぜられます |
49
+ | **local-seek** | ローカル意味検索(BM25 + ベクトルのハイブリッド)で、ノート・記憶・資料庫を検索。三層の段階:まずファイルを特定し、次に文脈を見て、最後に段落を精読します |
50
+ | **ego-search** | ログイン状態での専門検索。知乎、小红书、公众号などログインしないと見られない内容を、実ブラウザとログイン状態で検索します。既定はオフで、必要なときに有効化します |
51
+ | **js-run** | ブラウザなしでウェブ JS を実行。ブラウザを開かずに「環境探査 + 純計算」型のウェブスクリプトを走らせ、1 回あたりのコンテキストは P50 約 1ms |
52
+
53
+ 四つのサブスキルは「ローカルを検索する」から「ウェブ全体を検索する」、さらに「ログインウォールの向こうを検索する」までをカバーします。ほとんどの場面は local-search + ネット検索で足り、特殊な場面で ego-search と js-run を有効にします。
54
+
55
+ ## DSH プラグイン
56
+
57
+ Argo は DeepSeek Harness のプラグインでもあり、一行のコマンドでインストールできます:
58
+
59
+ ```bash
60
+ dsh plugin --profile web add "github:taxueseek/argo"
61
+ ```
62
+
63
+ インストール後に `dsh web` を再起動すれば有効になります。検索と取得がネイティブの一等ツールになり、MCP 接続に依存せず、常駐コンテキストのオーバーヘッドもありません。ほかに `wide_research` の並列リサーチが 1 つ、MCP ツールが 19 あり、必要に応じて有効化できます。接続形態の全体像は後述します。
64
+
65
+ ### 3 つの呼び出し経路、1 つの能力セット
66
+
67
+ 同じ argo 検索コア(同じエンジン、同じ圧縮、同じガード)が DSH 内で 3 つの経路を開き、ホストの能力に応じて自動的に降格し、互いに冗長性を担保します:
68
+
69
+ | 経路 | 既定 | 内容 |
70
+ |------|------|------|
71
+ | **ネイティブ一等ツール** | オン | `argo_search` / `argo_fetch` などを `ctx.tools.register` で登録し、CLI 単発(`--call`)として実行。MCP と同じエンジンとガードのスタックを再利用するため、**MCP 接続不要・常駐トークン開銷ゼロ** |
72
+ | **ネイティブ web seam** | オン | `argo` を検索プロバイダと取得プロバイダの両方として登録し、ホスト内蔵の `web_search` を argo のエンジンチェーンへ、`web_fetch` を argo の取得チェーンへルーティング(HTTP 優先、Cloudflare / JS 描画では自動でアンチ検出ブラウザへ昇格) |
73
+ | **MCP 形態** | 必要時 | 19 個の `mcp__argo__*` 完全ツール面。ツール定義は毎ラウンドコンテキストに注入され圧縮でも消えません(19 ツールで実測 ≈3.7K トークン/ラウンド)。一方で高頻度パスはネイティブツールと web seam が既にカバーしているため、既定ではマウントしません。長尾のフォレンジックツールが必要なときは profile patch の `mcp-argo` 行コメントを外します |
74
+
75
+ ほかに `wide_research` が 1 つあります:補完的なトラックを計画(`depends_on` で段階化、既定は並列)→ 有界並行のサブエージェントで証拠収集 → ソース台帳(http(s) URL のみ記録)→ 統合レポート。出力には `quality_gate_results`(`conclusion_cap`: low/medium/high)が付き、`passed=false` のときは表現を弱め、結論を出す前に台帳のソースを検証します。worker の証拠ツール許可リストは MCP 名とネイティブ名の両方を書き(allow セマンティクス)、MCP マウントの有無どちらでも動作します。MCP があれば完全なツール面を使い、なければ `argo_search` / `argo_fetch` とホストの `web_search` / `web_fetch` に落ちます。
76
+
77
+ 日常的な質問には `argo_search`、単一エージェントのフォレンジックには `argo_research`、引用台帳付きの多角的比較には `wide_research` を使い分けます。worker は既定では argo の証拠ツールしか呼べず、`argo_research` を再度呼ぶことはできません(ハードガード——ユーザー層での放行も無効)。
78
+
79
+ ### 内蔵設定ページ:6 分区、保存即有効
80
+
81
+ プラグインにはブラウザ側の設定ページが同梱され、入口は 2 つあります:設定ポップアップ(`Cmd+,`)の左メニュー項目「Argo」、または 設定 > プラグイン > Argo(同じパネルの概要カード、クリックで開きます)。
82
+
83
+ <p align="center">
84
+ <img src="assets/readme/settings-tools.png" width="100%" alt="Argo 設定ページ「ツール」分区:高頻度パスは argo_search / argo_fetch が既定でオン、長尾フォレンジック 16 個は必要に応じてチェック、下に単発呼び出しタイムアウトと返却テキスト上限">
85
+ </p>
86
+
87
+ <p align="center">
88
+ <img src="assets/readme/settings-keys.png" width="100%" alt="Argo 設定ページ「キー」分区:常用エンジンの key の入力・更新・クリア、設定済み/未設定と来源層を表示、平文は非表示、各行に「転送」チェックボックス">
89
+ </p>
90
+
91
+ | 分区 | 管理内容 |
92
+ |------|----------|
93
+ | **接入** | `web_search` / `web_fetch` seam の切り替え。エンジン起動コマンドと引数(npx またはローカル `mcp_server.py`)。検索/取得のタイムアウト、本文上限、アイドル接続回収、並行接続数 |
94
+ | **ツール** | 18 個のネイティブ一等ツールのチェック(既定は `argo_search` / `argo_fetch` のみ)。単発呼び出しタイムアウトと返却テキスト上限 |
95
+ | **引擎** | argo 本体の挙動スイッチ(従来は環境変数、curated ホワイトリスト 28 個:キャッシュ / TF-IDF 再順位 / 数値交差検証 / MinHash 重複除去 / SERP ガード、Jina / モバイル UA / Parallel 取得層、意味的証拠層、ヘッジ幅と末尾幅、エンジン有効化リスト、プロキシ、ローカル検索ルートと読み取り許可リスト、ウォームアップ / 使用ログ / 接続プール / 各種 TTL)。スイッチ系は即時反映、数値・テキスト・リスト系はグループ保存。未設定行は argo の既定値を表示し「默认」と明記。認可系スイッチ(再計算実行、イントラネット URL)は意図的にパネルに入れていません |
96
+ | **密钥** | 常用エンジン key の入力・更新・クリア。「設定済み / 未設定 + 来源層(凭证库 / 起動環境 / .env)+ 読み取り専用状態」を表示し、平文は非表示。各行の「転送」チェックは参照名を `keyRefs` に追加するのと等価 |
97
+ | **研究** | worker / トラック / トラックごとのソース数 / トークン上限とレポート出力先ディレクトリ |
98
+ | **高级** | worker ツールの allow / deny リスト、凭证転送リスト |
99
+
100
+ 保存は即時有効です(すべて volatile 設定):ネイティブツール群はチェックに応じて登録・解除され、タイムアウト・並行数・研究上限は次の呼び出し時に読み込まれます。エンジンスイッチは `argoEnv`(1 行 1 つの `KEY=VALUE`)として argo サブプロセスの env に入り、次の新規接続から有効になります(プール内の旧接続は `searchIdleMs` で回収、既定 60 秒)。構造的フィールド(`toolName`、`provider`、`searchProviderId`、`fetchProviderId`)は設定ページにはなく、従来どおり profile patch 経由で、変更後は再起動が必要です。
101
+
102
+ **キーについての安全設計**:キーは DSH の凭证库(Models ページと同じ場所)に書き込まれ、プラグイン設定には書かれず、ログにも残らず、平文も表示しません。凭证の解決優先順位は**ストレージファイル層 > 起動環境 > プロジェクト .env > ホーム .env**で、パネル(または Models ページ)で保存すると起動環境の古い値を上書きし、argo サブプロセスは次の新規接続で新しい key を受け取ります。「クリア」は凭证库の値だけを削除するため、環境変数や `.env` が供給した key は再び現れます。設定ページは凭证ドメインの書き込み入口であり、読み取りはホストが毎回の呼び出しで行います。
103
+
104
+ **DeepSeek 公式 key はネイティブに供給**:argo の `deepseek_search` エンジン(公式 `api.deepseek.com/v1/tools/search`、結果に authority 権威分級 / rerank_score / 公開時刻が付く)は DSH 公式検索バックエンドと**同じ key を共有**します。プラグインは DSH のネイティブ凭证 seam 経由で取得するため、手動設定は不要です。解決は `ctx.get('credentials').resolve('DEEPSEEK_API_KEY')` で、呼び出しごとに解決されます。web Models ページで key をローテーションすれば、次の新規接続で反映され、プラグインの再起動も不要です。プラグインは key ファイルを読まず、ディスクに書かず、ログにも残しません。key の値はメモリ経由でのみ argo サブプロセスの env に入り、出力やエラーメッセージに一切含まれません。credentials サービスを持たない旧ホストでは静かにスキップし、そのエンジンは key 不足で無効化されますが、他の 263 ソースは影響を受けません。
105
+
106
+ **web seam の pin は必読です**(設定漏れは `web_fetch` を壊します):ホスト `dsh-web` のプロバイダ選択ルールは「設定 id が優先。未設定で利用可能がちょうど 1 つならそれを選ぶ。**複数ある場合は `WEB_PROVIDER_AMBIGUOUS` で失敗**」。web profile は既定で公式 http fetch プロバイダ(key 不要・常に利用可能)を保持し、このバンドルがもう 1 つ登録するため、pin が無いと利用可能が 2 つになり、**`web_fetch` がまるごと壊れます**(profile に別の検索プロバイダがある場合、`web_search` も同様)。したがって web seam を有効にする profile は、必ず web サービス行で明示的に指定してください:
107
+
108
+ ```yaml
109
+ - id: web
110
+ config:
111
+ searchProvider: argo # 検索 seam が有効な場合(既定で有効)に必須
112
+ fetchProvider: argo # 取得 seam が有効な場合(既定で有効)に必須
113
+ ```
114
+
115
+ `searchProviderEnabled: false` / `fetchProviderEnabled: false` は対応する seam をまるごと無効にします(プロバイダは登録されたままだが選択不可、もう一方には影響しません)。エンジン側では、Firecrawl などの匿名利用可能なエンジンは **key 不要でそのまま使えます**(無料枠)。キーが設定されたエンジンは自動的に認証リクエストへ昇格し、キー不足はルーティングを止めません。
116
+
117
+ > 設定項目の全体、Compatibility バージョン対応表、アンインストール手順は [packages/dsh-plugin/README.md](packages/dsh-plugin/README.md) にあります。
118
+
119
+ ## 主な強み
120
+
121
+ **264 のソース、うち 227 はキー不要ですぐ使える。** API Key を一切設定しなくても動き、無料エンジンとローカルエンジンが自動でバックストップします。Key を設定したソースは品質が良いことが多く、未設定なら自動でスキップされます。一度インストールすれば、あらゆる場面で使えます。
122
+
123
+ **ローカル検索とネット検索が一体。** これは Argo ならではの能力です。ローカルファイル検索の土台は rg や mdfind といった開発者が日常的に使うツールで、コードシンボル、ファイル名、ドキュメント全文、ファイル構造を検索します。スイッチひとつで、ローカルのヒットが同じネット検索結果に混ざり、結果には出所がローカルファイルであることが表示されます。半年ほど前に書いた一節を思い出したが場所がわからない、というときに、フォルダを巡回するより速く見つかります。
124
+
125
+ **二層キャッシュで、ホットクエリは約 10ms。** 鮮度がそれほど重要でない内容(百科事典系、過去データなど)は、一度検索するとキャッシュに入り、同じクエリはそのままヒットして毎回 API を叩きません。コストも時間も節約できます。
126
+
127
+ **多言語 + 垂直シーン。** 実測で 18 言語に対応し、中国語・英語・日本語は現地の一次ソースにたどり着けます。論文は学術ライブラリ、映像は項目ライブラリ、コードは Q&A コミュニティ、相場は金融ソースへ。曖昧な質問だけが汎用検索に回ります。
128
+
129
+ ## インストールしてすぐ使う
130
+
131
+ 設定ゼロで動きます。インストール方法は三つ、好みに合わせて選んでください:
132
+
133
+ **AI アシスタント自身に検索させたいなら**、スキルパッケージをそのスキルディレクトリに入れます。以後「ちょっと調べて」「事実確認して」と言えば、自分で検索します。
134
+
135
+ **気軽に試したいなら**、npx コマンド一行でその場で使えて、インストール不要です。
136
+
137
+ **アシスタントに常駐させたいなら**、MCP を載せれば 19 の検索ツールがいつでも使えます。ワンコマンド注入も用意しており、Claude Code、Cursor、Windsurf に自動で設定でき、Codex、OpenCode、Cline も対象です。設定を書く前にバックアップを取るので、いつでも戻せます。
138
+
139
+ ```bash
140
+ # 方法 1:ワンコマンドスクリプト(本機で長期利用に推奨)
141
+ curl -fsSL https://raw.githubusercontent.com/taxueseek/argo/main/scripts/install.sh | bash
142
+
143
+ # 方法 2:npx で即時利用(Agent への素早いマウントに推奨)
144
+ npx -y github:taxueseek/argo
145
+
146
+ # 方法 3:git clone(開発 / ソース変更)
147
+ git clone https://github.com/taxueseek/argo.git
148
+ ```
149
+
150
+ インストール後に一つ試してみてください:
151
+
152
+ ```bash
153
+ argo search "python asyncio error handling"
154
+ ```
155
+
156
+ 返ってくるのは、StackOverflow の公式 API からコミュニティスコア順に並べ、採用済みかどうかを示した質問です。SEO ファームの山ではありません。
157
+
158
+ 自分のマシンで今いくつのソースが使えるか見たいときは、コマンド一つで一覧できます:
159
+
160
+ ```bash
161
+ argo search --list-engines
162
+ ```
163
+
164
+ ## 接続形態
165
+
166
+ Argo は四つの接続方式をサポートします。場面に合わせて選んでください:
167
+
168
+ | 形態 | 向き | 説明 |
169
+ |------|------|------|
170
+ | **MCP Server** | Agent への常駐マウント | 19 の検索ツールがいつでも使え、コマンド一つで Claude Code / Cursor / Windsurf / Codex / OpenCode / Cline に注入。設定を書く前に自動バックアップ |
171
+ | **DSH プラグイン** | DeepSeek Harness ユーザー | `dsh plugin add` 一行でインストールでき、検索と取得がネイティブの一等ツールになる。MCP 接続に依存せず、常駐コンテキストのオーバーヘッドもない。保存即有効の 6 分区設定ページ同梱 |
172
+ | **Skill ファイル** | Claude Code / Grok Build / Kimi など | スキルパッケージを Agent のスキルディレクトリに入れる。「ちょっと調べて」「事実確認して」と言えば自分で検索する |
173
+ | **npx 即時利用** | さっと試したい | `npx -y github:taxueseek/argo`。インストール不要で、任意のクライアントに一時的に MCP を載せるのに向く |
174
+
175
+ 四つの形態は土台が同じ Python コードで、CLI と MCP ツールは一対一に対応し、どれを入れても能力は欠けません。
176
+
177
+ ## モデル内蔵検索 / AI 検索 / 横断検索より強い点
178
+
179
+ > 要するに:前三者は **人** が情報を探すためのもの。Argo は **Agent** が検索と検証を一本でやるためのもの。差は UI ではなく成果物——人向けの要約ページやリンク一覧対、Agent が並べ替え・再検証でき、文脈を膨らませない証拠。
180
+
181
+ <p align="center">
182
+ <img src="assets/readme/why-better.svg" width="100%" alt="左:人向けの 3 種の既定検索。右:Agent が吸収できる Argo の証拠 JSON">
183
+ </p>
184
+
185
+ | 次元 | モデル内蔵検索 | AI 検索(要約型) | 横断検索 / 検索エンジン | **Argo** |
186
+ |------|----------------|-------------------|-------------------------|----------|
187
+ | 結果の形 | つなぎ合わせた長文 | 人向け要約ページ | SERP リンク一覧 | **コンパクト JSON:証拠候補 + 信頼度分解** |
188
+ | 垂直の問い(相場 / 化学式) | 汎用ウェブ | 汎用ウェブして要約 | 汎用ウェブ | **垂直ソース直結、答え型** |
189
+ | 証拠の信頼度 | スコアなし | 構造化スコアなし | スコアなし | **selection · absorption · freshness · 合意** |
190
+ | 同じクエリ | 毎回ネットワーク | 毎回ネットワーク | ページキャッシュ | **二層キャッシュ(メモリ + SQLite)、ホットクエリ約 10ms** |
191
+ | コスト制御 | 制御不能 | 1 回が高い | 無料だが手間 | **予算モード、無料優先、Key はすべて任意** |
192
+ | 多言語 | モデル任せ | モデル任せ | エンジン任せ | **言語検出 + エンジン言語パラメータ + 多言語ルーティング** |
193
+
194
+ > 仕組みとして Argo は検索を **証拠パイプライン** として扱う:言語検出 → ドメイン経路 → 多エンジン召回 → RRF 融合 → 証拠速評。Agent が並べ替え、`fetch` で核验し、文脈に収まる材料を返す。
195
+
196
+ ---
197
+
198
+ ## 2026 年、検索で何が変わったか
199
+
200
+ 1. **リンクから証拠へ。** エージェントには並べ替え可能・検証可能・コンテキストに収まる構造化データが必要 — Argo は信頼度内訳付き JSON を返す。
201
+ 2. **コンテキストが第一コスト。** エージェントプロファイルは 1 回約 3.7KB、フィールドとバイト予算はゲートで固定。
202
+ 3. **サイトは AI 向け資料を備え始めた。** llms.txt と `.md` 直出しが主要ドキュメントサイトに普及 — フェッチチェーンはレベル 0 で自動探知、r.jina.ai リーダーもfallback。
203
+ 4. **無料オープン生態系で足りる。** 政府・学術・標準・セキュリティの公開 API とキーレス エンジンで大部分をカバー(227 ソースが無設定)。
204
+ 5. **品質は測定可能。** ランキング金標・融合利得アブレーション・負のルーティング制御。
205
+
206
+ > v2.9.3 はこの全てを実装:264 ソース / 95 ドメイン / 227 無設定。
207
+
208
+ ---
209
+
210
+ ## 聞き方に合わせたルーティング
211
+
212
+ <p align="center">
213
+ <img src="assets/readme/proof-routes.svg" width="100%" alt="4 つの実ルート:金融・映像・多言語・地理">
214
+ </p>
215
+
216
+ | こう聞くと | だいたいこう動く |
217
+ |------------|------------------|
218
+ | python asyncio error handling | プログラミング QA ドメイン → StackOverflow/StackExchange 公式 API、スコアと採答マーカー付き |
219
+ | AAPL / 米株プレマーケット | 米株ドメイン、A 株と分離 |
220
+ | 肖申克的救赎 主演 / Inception director | 映像ドメイン → IMDb など |
221
+ | 梅西 俱乐部 / 库里 球队 | スポーツ → TheSportsDB など |
222
+ | 埃菲尔铁塔在哪 / where is Eiffel Tower | 地理エンティティ → OpenStreetMap など |
223
+ | NASA founding year / 国务院职能 | 組織 → Wikidata など |
224
+ | 周杰伦 专辑 / Taylor Swift album | メディア → iTunes など |
225
+ | アニメ おすすめ / 한국 영화 추천 | 日/韓を検出 → 言語に合うソース、中国語専用サイトを避ける |
226
+ | 米国 CPI、日本 インフレ率 | マクロ;国別振り分け(自国の一次ソース優先) |
227
+ | log4j CVSS / nodejs 22 end of life | セキュリティ → NVD 公式;ライフサイクル → endoflife.date |
228
+ | attention is all you need | 学術 → arXiv/OpenAlex/CrossRef のメタデータと DOI リンク |
229
+ | 阿司匹林 分子式 | 化学 → PubChem 系 |
230
+ | 台積電バリュエーション議論(深掘り) | サブ問題分割 + 並列ソース、垂直を boost |
231
+
232
+ ---
233
+
234
+ ## 仕組み
235
+
236
+ <p align="center">
237
+ <img src="assets/readme/workflow.svg" width="100%" alt="クエリ → 言語とドメイン → 多エンジン → RRF → 証拠 → 統一 JSON">
238
+ </p>
239
+
240
+ ```
241
+ クエリ
242
+ ├─ 意図の曖昧さ解消(任意)
243
+ ├─ クエリ書き換え(任意;ルーティングは元の意図を見る)
244
+ ├─ 言語検出 + 言語嗜好
245
+ ├─ ルート(ドメイン規則 + TF-IDF + 予算 + 言語補完 + ホットパスキャッシュ)
246
+ ├─ 多エンジン召回(ブレーカ / 負キャッシュ / 並列)
247
+ ├─ 空結果の段階復旧(緩和 → 同族/汎用 → 言語横断;汚染防止)
248
+ ├─ RRF 融合 + 任意リランク
249
+ ├─ 証拠の速評(権威 · 密度 · 鮮度 · 合意)
250
+ └─ 統一 JSON(engine_outcomes / recovery 含む)
251
+ ```
252
+
253
+ ### 証拠スコア(簡易)
254
+
255
+ ```
256
+ selection ≈ ドメイン権威。SERP / リダイレクト殻は大きく減点
257
+ absorption ≈ 数字 / 定義 / 比較 / 開示などの証拠密度
258
+ freshness ≈ 公開時刻(「2015 年以来」のような歴史比較年は無視)
259
+ 総合 ≈ 0.40·selection + 0.35·absorption + 0.15·freshness + 0.10·エンジン分
260
+ ```
261
+
262
+ 結果には `selection`、`absorption`、`credibility_fast`、`evidence_flags` などが付き、エージェントが直接並べ替えできます。
263
+
264
+ ### エージェント利用の規律(推奨)
265
+
266
+ 1. **高影響の問い**(ポジション、安全、真偽):search → 速評を見る → top を `fetch` → 結論
267
+ 2. **数字**:计算方式(定義・範囲)を明示し、矛盾は並列表示、無理に合成しない
268
+ 3. **SERP / リダイレクト**:本文ソースにしない
269
+ 4. **SNS**:世論・物語として扱い、事実の真値にしない
270
+ 5. **ファクトチェック**:ソース / 比較 / 主体など層化したクエリを足す
271
+
272
+ ---
273
+
274
+ ## クイックスタート
275
+
276
+ どれか 1 つで十分です。**インストールの来源は GitHub のみ**(`npx github:taxueseek/argo` または `install.sh`)、現在推奨 **v2.9.7**。**`npm install argo-search` は使わないでください**——npm registry 上のそれは**非公式の古い v1.0.1**(本リポジトリ外、機能不足、更新されない)。本パッケージは `private: true` で npm 誤公開を防ぎます。
277
+
278
+ **ゼロ設定で動く**:API Key なしなら無料エンジン + ローカル `local_*`。Key があるソースは品質が上がりやすく、無いものは自動スキップ。
279
+
280
+ ### 方法一:インストールスクリプト(本機長期利用向け)
281
+
282
+ ```bash
283
+ curl -fsSL https://raw.githubusercontent.com/taxueseek/argo/main/scripts/install.sh | bash
284
+ ```
285
+
286
+ ホームと Skill リンク指定:
287
+
288
+ ```bash
289
+ curl -fsSL https://raw.githubusercontent.com/taxueseek/argo/main/scripts/install.sh \
290
+ | bash -s -- --home "$HOME/.local/share/argo" --link "$HOME/.claude/skills/argo"
291
+ ```
292
+
293
+ 確認:
294
+
295
+ ```bash
296
+ python3 ~/.local/share/argo/scripts/search.py "python asyncio error handling" --json
297
+ python3 ~/.local/share/argo/scripts/search.py --list-engines
298
+ ```
299
+
300
+ ### 方法二:GitHub から MCP(エージェントへ即接続)
301
+
302
+ **Node.js 18+** と **Python 3.9+** が必要。初回:
303
+
304
+ ```bash
305
+ pip3 install pyyaml
306
+ ```
307
+
308
+ ```bash
309
+ npx -y github:taxueseek/argo
310
+ ```
311
+
312
+ クライアント設定例(Claude Code / Cursor / Kimi など):
313
+
314
+ ```json
315
+ {
316
+ "mcpServers": {
317
+ "argo": {
318
+ "command": "npx",
319
+ "args": ["-y", "github:taxueseek/argo"]
320
+ }
321
+ }
322
+ }
323
+ ```
324
+
325
+ より安定・Node 不要:方法一で入れた後、ローカル Python を指す:
326
+
327
+ ```json
328
+ {
329
+ "mcpServers": {
330
+ "argo": {
331
+ "command": "python3",
332
+ "args": ["/path/to/argo/scripts/mcp_server.py"]
333
+ }
334
+ }
335
+ }
336
+ ```
337
+
338
+ Python が特殊なパスのとき:`export ARGO_PYTHON=/path/to/python3`(npx 入口のみ参照)。
339
+
340
+ ### DeepSeek Harness 一行プラグイン
341
+
342
+ DeepSeek Harness では 2 通り:
343
+
344
+ ```bash
345
+ # A:mcp__argo__* ツール 19 個(メインパッケージ bundle、MCP 全量と同じ)
346
+ dsh plugin --profile web add "github:taxueseek/argo"
347
+
348
+ # B:検索ツール + wide_research 並列研究オーケストレーション(サブパッケージ)
349
+ dsh plugin --profile web add "github:taxueseek/argo#main&path:packages/dsh-plugin"
350
+ ```
351
+
352
+ インストール後に `dsh web` を再起動。詳細は `packages/dsh-plugin/`。
353
+
354
+ ### 方法三:Release ソースパッケージ
355
+
356
+ [Releases](https://github.com/taxueseek/argo/releases) から最新の **`argo-x.y.z.tar.gz`** を入手(`x.y.z` は最新リリース番号に読み替え):
357
+
358
+ ```bash
359
+ tar -xzf argo-x.y.z.tar.gz
360
+ cd argo-x.y.z
361
+ pip3 install pyyaml
362
+ python3 scripts/search.py "Python asyncio" --json
363
+ python3 scripts/mcp_server.py
364
+ ```
365
+
366
+ ### 方法四:git clone(開発 / ソース改変)
367
+
368
+ ```bash
369
+ git clone https://github.com/taxueseek/argo.git
370
+ cd argo
371
+ pip3 install pyyaml
372
+ bash scripts/install.sh --link ~/.claude/skills/argo # 任意
373
+ python3 scripts/search.py --list-engines
374
+ ```
375
+
376
+ ### 方法五:Skill ディレクトリへ(シンボリックリンク、単一来源)
377
+
378
+ ```bash
379
+ python3 scripts/link_source.py --to ~/.claude/skills/argo
380
+ python3 scripts/link_source.py --to ~/.agents/skills/argo
381
+
382
+ cp installs.local.yaml.example installs.local.yaml
383
+ python3 scripts/link_source.py
384
+ python3 scripts/link_source.py --check
385
+ ```
386
+
387
+ ### 方法六:Python ライブラリとして
388
+
389
+ ```python
390
+ import sys
391
+ sys.path.insert(0, "/path/to/argo/scripts")
392
+ from search import super_search
393
+
394
+ result = super_search("Python asyncio", n=5, mode="fast")
395
+ for item in result["results"]:
396
+ print(item["title"], item.get("credibility_fast"), item["url"])
397
+ ```
398
+
399
+ ```bash
400
+ # bin/argo を PATH に入れた場合
401
+ argo search "Python asyncio"
402
+ argo research "2026 公募ファンド保有構造"
403
+ argo evidence "検証したい主張"
404
+ ```
405
+
406
+ ---
407
+
408
+ ## 対応プラットフォーム
409
+
410
+ | プラットフォーム | 接続 | 説明 |
411
+ |------------------|------|------|
412
+ | **Claude Code** | MCP / Skill | `npx` または `mcp_server.py`;`link_source.py` 可 |
413
+ | **Kimi / Grok Build** | MCP Server | 同上 |
414
+ | **Cursor / Cline / Continue** | MCP | MCP 対応 IDE プラグイン |
415
+ | **CLI** | `search.py` / `bin/argo` | スクリプト、cron、手動調査 |
416
+ | **Python プロジェクト** | `from search import super_search` | ライブラリ呼び出し |
417
+
418
+ ### インストール後チェック
419
+
420
+ ```bash
421
+ python3 --version # 3.9+ が必要
422
+ python3 -c "import yaml; print('PyYAML OK')"
423
+ python3 -m pytest tests/test_unit.py -q # 任意
424
+ python3 scripts/search.py --list-engines
425
+ ```
426
+
427
+ ---
428
+
429
+ ## できること
430
+
431
+ | 機能 | 説明 | 入口 |
432
+ |------|------|------|
433
+ | 統合検索 | ルート → 召回 → 融合 → 速評 | `search.py` / `argo_search` |
434
+ | ローカルファイル検索 | 本機のコード/ノート/記憶(非ネット) | `argo_local_search` |
435
+ | ローカルテキストプレビュー | ホワイトリスト内プレビュー(fail-closed) | `argo_local_read` |
436
+ | 再計算 | 制限付きサブプロセスで数値再計算(既定拒否) | `argo_recompute` |
437
+ | 深掘り調査 | サブ問題、多ソース、ギャップ提示 | `research.py` / `argo_research` |
438
+ | 信頼度評価 | 権威 / 密度 / 鮮度 / 交差検証 | `evidence.py` / `argo_evidence` |
439
+ | 意図の曖昧さ解消 | 多義語、ブランド衝突、戦略提案 | `clarify.py` / `argo_clarify` |
440
+ | ページ取得 | HTTP 優先、必要ならブラウザ | `argo_fetch`(`mode=extract` で構造化) |
441
+ | スクショ / PDF | 画面キャプチャ、PDF 構造抽出 | `argo_screenshot` / `argo_pdf` |
442
+ | サイトクロール | 一覧ページの一括取得 | `argo_crawl` |
443
+ | クエリ演算子 | `site:` / `-site:` / `-語` / `-"句"` / `"句"` / `lang:` / `after:` / `before:` をルーティングと検索の両側から剥離(詳細は references/usage.md) | クエリに直接記述 |
444
+ | 信頼シグナル | `authority_level` 離散等級(0-4、≥3 で極めて権威)+ `summary` Agent 档要約(検証後に逆填み) | 結果フィールド、`--fields agent` で表示 |
445
+ | SNS / 世論 | 微博 / 小红书 / B 站 / Reddit / X など | `argo_social_search` |
446
+ | DSH ネイティブツール | DSH プラグインとして入れると `argo_search` / `argo_fetch` などが宿主の一等ツールになり、CLI 単発で実行・常駐トークン開銷ゼロ | `dsh plugin add` 後に直接呼ぶ |
447
+ | DSH web seam | 宿主内蔵の `web_search` / `web_fetch` が argo のエンジンチェーンと取得チェーンへルーティング(HTTP 優先、Cloudflare / JS 描画では自動でブラウザへ昇格) | プラグインが既定で登録、profile で `searchProvider` / `fetchProvider` を pin |
448
+ | DSH 設定ページ | 接入 / ツール / 引擎 / 密钥 / 研究 / 高级 の 6 分区、保存即有効。キーは宿主の凭证库へ、平文は非表示 | 設定ポップアップ `Cmd+,` → 左メニュー「Argo」 |
449
+
450
+ ### 予算モード
451
+
452
+ | モード | 向き | 振る舞い |
453
+ |--------|------|----------|
454
+ | `fast` | 簡単な問い、速度優先 | 無料エンジン優先、有料リランク省略 |
455
+ | `auto` | 日常デフォルト | コストと品質の折衷 |
456
+ | `deep` | 調査・総説 | 品質優先、エンジン増可 |
457
+ | `budget` | 枠が厳しい | クォータ制御、使い切ると劣化 |
458
+
459
+ ### 現時点の能力概要(v2.9.7)
460
+
461
+ Argo のやることを一行で言うと、質問を領域と言語で適切なソースに振り分け、返ってきた結果を信頼度で並べ、エージェントには並べ替えられ検証できる素材を渡す。検索・取得・証拠確認・ローカルファイル検索は同じパイプラインを流れ、19 個の MCP ツールは CLI コマンドと一対一で対応するので、どの形态で入れても能力は欠けない。単独コマンドもいくつかある:argo tweet は X 投稿をまとめ、argo auth はログイン状态を管理し、argo job は採用情報を集約する。全ソースの費用・键・状态は docs/ENGINE_CATALOG.md に清单されている:264 ソース、227 無設定、95 ドメイン。
462
+
463
+ DSH プラグインとして入れると、これらの能力は宿主のネイティブツールになる。高頻度の検索と取得は既定でオン、長尾フォレンジックは設定ページで必要に応じてチェック、argo 本体の 28 個の挙動スイッチ(キャッシュ、再順位、重複除去、ガード、プロキシ、TTL など)は環境変数からパネルへ移った。キーは宿主の凭证库に入り、平文は表示されず、変更は保存即有効。
464
+
465
+ 最近数版が、それぞれ一类の問題を直した。
466
+
467
+ v2.9.7 が直したのは三つの古い毛病。DSH 宿主内の AI が URL を読むとき、宿主自身の取集を使っていたため、短链ジャンプや JS チャレンジページは构造的に失败しがちで、argo の取得链は出番がなかった;この版で宿主の読込が argo を流れるようになり、そうしたページは失败から成功に変わり、普通のページは変わらない。路由候选池には 18 个の明示専用エンジンが混在し、自动选択されれば唯一の有料エンジンが密かに课金される风险があった;今は候选池になく、使うには明示が必要。エンジンが成功するたびに熔断器がファイル锁でディスクを书き换えていた;健全状态ではファイル开销がゼロになり、复数エンジンの记账も一件のトランザクションにまとまる。License は MIT から Apache-2.0 に変わり、商用での利用は安心感が増した。
468
+
469
+ その後 DSH プラグインにもう一層加わった。設定ページは五分区から六分区に増え、新しい「引擎」分区が argo 本体の挙動スイッチをパネルに収める(従来は環境変数のみ)。キー页では各キーが凭证库、起動環境、`.env` のどれ由来かが見えるようになり、ツールチェック・タイムアウト・並行数・研究上限はすべて保存即有効になった。キャンセルも接続確立段階まで到達し、AI が途中で止めると、起動中の argo サブプロセスはタイムアウトを待たずに即座に殺される。
470
+
471
+ v2.9.6 が担当したのはクエリ演算子と传输层。「site:github.com 某某」式のクエリは、演算子が普通の语として扱われたり、解析するだけで过滤されなかったりした;契约层ができて、路由とキャッシュは剥いたクエリだけを认识し、site: は真の后置フィルタとして実行されキャッシュキーにも入るので、二回の検索が混ざらない。传输层では、POST のたびに TLS ハンドシェイク(320〜561 ms)を再支払いしていた;接続プール化で、常驻の MCP プロセスは毎回の质问でそれを省ける。この版で公式 DeepSeek 検索も入り、従量课金で日常の combo には入らない。
472
+
473
+ v2.9.5 で加わったのは为替と重複排除の浄化。「人民币/美元 汇率」と寻ねると、宏观ドメインを回って百科词条に着地し、1.4 秒で答えなしだった;为替専用域ができて 675 msで即期レートと毎日のニュースを返す。重複排除に站后缀归一と fuzzy 复核が加わり、标题に区分式のある公式ドキュメントが后方に压されることがなくなった。
474
+
475
+ v2.9.4 が直したのは明示エンジン指定の経路。--engine X を指定するとキャッシュ TTL が一刀切だった;域判定が入って TTL は域に従い、予备エンジンがなければ同エンジンの空跑もしない。
476
+
477
+ 版ごとの详细は「最近更新」に、各版のリリースノートは docs/ にある。
478
+ ---
479
+
480
+ ## エンジンとルーティング
481
+
482
+ 設定上は **264** ソース(うち **227** はキー不要)、**95** ドメイン(`config.yaml` と `--list-engines` が基準)。
483
+
484
+ ### 直結・垂直(抜粋)
485
+
486
+ | エンジン | 用途 | コスト傾向 |
487
+ |----------|------|------------|
488
+ | anysearch / duckduckgo | 一般 / 技術 | 無料 |
489
+ | sina_quote / tencent_quote / eastmoney | A 株 / 資金 | 無料 |
490
+ | finviz / seeking_alpha | 米株・海外金融 | 設定次第 |
491
+ | imdb / itunes / thesportsdb | 映像 / 音楽 / スポーツ | 主に無料 |
492
+ | local_openstreetmap / wikidata / wikipedia | 地理 / 組織 / 百科 | 無料 |
493
+ | arxiv / semantic_scholar / openalex | 学術 | 主に無料 |
494
+ | pubchem / gbif / rfc_editor | 化学 / 種 / 標準 | 無料 |
495
+ | github / stackoverflow / pypi / npm | コードとパッケージ | 設定次第 |
496
+ | byted / bocha / metaso / octen | 中国語ウェブ / AI 検索 | API / 低コスト |
497
+ | zhihu / wechat_sogou | 中国語意見 / 公式アカウント | API / 無料 |
498
+ | tavily / felo / exa | 国際 / 意味検索 | 有料または枠 |
499
+ | twitter / reddit / xiaohongshu / bilibili / weibo | SNS UGC | 無料(一部ログイン) |
500
+
501
+ ### ローカルゼロコスト層(`local_*`)
502
+
503
+ 独立した SearXNG は不要。主経路はプロセス内 HTML / RSS / JSON 解析(`local_bing`、`local_sogou`、`local_google`、`local_arxiv` など)。**多言語クエリ**ではエンジンの言語パラメータ(例:Bing `setlang`)を動的に書き換え、RRF 融合に参加します。
504
+
505
+ ---
506
+
507
+ ## 使用例
508
+
509
+ ### 金融
510
+
511
+ ```bash
512
+ python3 scripts/search.py "python asyncio error handling" --explain
513
+ # 典型:stock_query → 相場スナップショット
514
+ ```
515
+
516
+ ### 学術
517
+
518
+ ```bash
519
+ python3 scripts/search.py "transformer attention mechanism paper" --json
520
+ # domain は academic になりやすく、arxiv などを含む
521
+ ```
522
+
523
+ ### 研究と検証
524
+
525
+ ```bash
526
+ python3 scripts/research.py "2026 公募ファンド第2四半期 保有構造" --depth deep --json
527
+
528
+ python3 scripts/search.py "同一クエリ" --json | \
529
+ python3 scripts/evidence.py "同一クエリ" --stdin --json
530
+ ```
531
+
532
+ ### MCP ツール一覧(12)
533
+
534
+ | ツール | 用途 |
535
+ |--------|------|
536
+ | `argo_search` | 統合検索 |
537
+ | `argo_local_search` | ローカルファイル(非ネット) |
538
+ | `argo_local_read` | ホワイトリスト内テキストプレビュー(fail-closed) |
539
+ | `argo_recompute` | 制限付きサブプロセス再計算(既定拒否、要認可) |
540
+ | `argo_research` | 深掘り研究(social-sentiment モード含む) |
541
+ | `argo_evidence` | 信頼度評価 |
542
+ | `argo_clarify` | 意図の曖昧さ解消 |
543
+ | `argo_fetch` | スマート取得(`mode=extract` で構造化) |
544
+ | `argo_crawl` | サイトクロール |
545
+ | `argo_screenshot` | 画面キャプチャ |
546
+ | `argo_pdf` | PDF 抽出 |
547
+ | `argo_social_search` | 多プラットフォーム SNS(`mode=sentiment`) |
548
+
549
+ ---
550
+
551
+ ## インストールと設定
552
+
553
+ ### 環境要件
554
+
555
+ | 項目 | 要件 |
556
+ |------|------|
557
+ | Python | 3.9+(CLI と MCP コア) |
558
+ | 依存 | `pip install pyyaml`(唯一のハード依存) |
559
+ | Node.js | **`npx` 入口のみ** 18+ |
560
+ | SearXNG | 不要(内蔵ローカルエンジン) |
561
+
562
+ ### API Key(すべて任意)
563
+
564
+ 未設定なら該当エンジンをスキップし、無料がバックストップ。**環境変数を使い**、本物の Key をリポジトリや Issue に書かないでください。
565
+
566
+ ```bash
567
+ # 推奨(品質向上)
568
+ export TAVILY_API_KEY="your_key"
569
+ export BOCHA_API_KEY="your_key"
570
+ export METASO_API_KEY="your_key"
571
+ export ZHIHU_ACCESS_SECRET="your_key"
572
+
573
+ # 任意
574
+ export BRAVE_API_KEY="your_key"
575
+ export FELO_API_KEY="your_key"
576
+ export GITHUB_TOKEN="your_key"
577
+ export WEB_SEARCH_API_KEY="your_key"
578
+ export ANYSEARCH_API_KEY="your_key"
579
+ export OCTEN_API_KEY="your_key"
580
+ export ARGO_KEENABLE_API_KEY="your_key" # 任意;Keenable 無料体験
581
+ ```
582
+
583
+ `config.yaml` には `{ENV_NAME}` プレースホルダのみ。平文の秘密はコミットしません。
584
+
585
+ ### キャッシュ
586
+
587
+ 既定 SQLite は `config.yaml` の `cache.db_path`(通常 `~/.cache/unified-search/cache.db`)。
588
+
589
+ | 種別 | おおよその TTL |
590
+ |------|----------------|
591
+ | 金融 | 約 5 分 |
592
+ | ニュース / リアルタイム | 約 10–15 分 |
593
+ | 一般 | 約 1 時間 |
594
+ | 研究 / 常緑 | 約 2–24 時間 |
595
+ | 空結果 | ごく短い(失敗を固定しない) |
596
+
597
+ ### FAQ
598
+
599
+ **API Key なしで使える?**
600
+ 使えます。ローカル無料エンジンと無料 API が多く、未設定時は自動で無料経路。
601
+
602
+ **インストールスクリプトと npx の違いは?**
603
+ スクリプトは本機固定・設定変更・Skill 接続向き。npx は MCP を素早く載せる向き。コアは同じ Python。
604
+
605
+ **エンジン確認は?**
606
+ `python3 scripts/search.py --list-engines`、または `--explain`。
607
+
608
+ **コードが複数コピーされる?**
609
+ しません。`link_source.py` で単一来源 + シンボリックリンクを推奨。rsync 複製はしない。
610
+
611
+ ---
612
+
613
+ ## CLI よく使う引数
614
+
615
+ ```
616
+ python3 scripts/search.py [options] クエリ
617
+
618
+ --engine, -e エンジン、既定 auto
619
+ --max-results, -n 件数、既定 5
620
+ --depth, -d fast | balanced | deep
621
+ --mode fast | auto | deep | budget
622
+ --no-cache キャッシュを飛ばす
623
+ --explain ルーティング説明を表示
624
+ --json JSON 出力
625
+ --timeout, -t タイムアウト秒
626
+ --list-engines エンジン一覧
627
+ ```
628
+
629
+ ---
630
+
631
+ ## 設計の取捨
632
+
633
+ 1. **エージェントが吸収できることを先に、リンク数は後。**
634
+ 2. **無料とローカルを先に、有料は任意の上乗せ。**
635
+ 3. **失敗は観測可能に**:空結果 / タイムアウト / ブレーカを分け、黙って飲み込まない。
636
+ 4. **設定駆動でエンジン拡張**、`config.yaml` が単一来源。
637
+ 5. **単一来源インストール**:リンクし、rsync しない。
638
+ 6. **SNS を真理庫にしない**;拡張と世論向きで、単独の真値には不向き。
639
+
640
+ ---
641
+
642
+ ## 向いている用途
643
+
644
+ - Claude Code / Grok Build / Codex / Kimi など **エージェントの検索バックエンド**
645
+ - **多言語・多領域**の日常 Q&A:中英日韓 + 金融 / 映像 / スポーツ / 学術 / コード
646
+ - **再現可能・キャッシュ可能**なスクリプトとパイプライン
647
+ - ファクトチェック、公開金融情報、エンティティの **多ソース対照**
648
+
649
+ 単独で向きにくいもの:プラットフォーム内の高度なエンゲージメント順位付け、長期運用の最大召回アグリゲータ(外付け SearXNG 主経路は内蔵ローカルエンジンに置換済み)。
650
+
651
+ ---
652
+
653
+ ## ディレクトリ(簡易)
654
+
655
+ ```
656
+ argo/
657
+ ├── README.md # 中国語(既定)
658
+ ├── README.en.md # English
659
+ ├── README.ja.md # 日本語
660
+ ├── README.ko.md # 한국어
661
+ ├── README.es.md # Español
662
+ ├── SKILL.md
663
+ ├── package.json # npx 入口
664
+ ├── bin/argo.js # Node MCP 起動
665
+ ├── bin/argo # Python CLI
666
+ ├── config.yaml # エンジンとドメイン(来源)
667
+ ├── assets/readme/ # README ビジュアル
668
+ ├── backends/
669
+ ├── mcp/ # 多クライアント MCP 注入の来源(clients.yaml)
670
+ ├── scripts/ # search / research / mcp / install …
671
+ ├── sub-skills/local-search/
672
+ ├── sub-skills/ego-search/ # ログイン態の専門検索(既定オフ)
673
+ ├── tests/
674
+ └── docs/
675
+ ```
676
+
677
+ ---
678
+
679
+ ## 最近の更新
680
+
681
+ ### 未リリース(DSH プラグイン):設定ページに「引擎」分区 + キャンセルが接続確立まで到達
682
+
683
+ - **6 つ目の設定分区「引擎」**:argo 本体の 28 個の挙動スイッチを環境変数からパネルへ移す(キャッシュ / TF-IDF 再順位 / 数値交差検証 / MinHash 重複除去 / SERP ガード、Jina / モバイル UA / Parallel 取得層、意味的証拠層、ヘッジ幅と末尾幅、エンジン有効化リスト、プロキシ、ローカル検索ルートと読み取り許可リスト、ウォームアップ / 使用ログ / 接続プール / 各種 TTL)。新しい volatile 設定 `argoEnv`(1 行 1 つの `KEY=VALUE`)で argo サブプロセスの env へ反映。名前は `ARGO_ENV_SPECS` ホワイトリストを通り、白名单外は apply 時に loud fail するため、拼写ミスが静かに無効になることを防ぐ。スイッチ系は即時反映、数値・テキスト・リスト系はグループ保存。未設定行は argo の既定値を表示し「默认」と明記。認可系スイッチ(再計算実行、イントラネット URL)は意図的にパネルに入れていない
684
+ - **キーの来源層が見えるように**:「設定済み / 未設定 + 来源層(凭证库 / 起動環境 / プロジェクト .env / ホーム .env)+ 読み取り専用状態」を表示し、file 層以外は保存で上書きされる旨を提示。`DEEPSEEK_API_KEY` は宿主の `web_search` と共用であることを明記。`fetchMaxChars` は保存時に argo ツール schema 上限 50000 へ切り詰め、「表示値と実効値の不一致」を解消
685
+ - **キャンセルが接続確立まで到達**:`acquireMcp` が接続確立中にキャンセルを認めるようになった。abort するとサブプロセスを殺し `WEB_ABORTED` で収摊するだけで、タイムアウトまで待たない。キャンセルは単発フォールバックにも貫通
686
+ - **修正**:証拠の重複除去が大文字小文字を飲み込まなくなった。`effect` を持たない旧ホストで激活が炸裂しなくなった。`saveKey` / `setForward` / `toggleTool` がリアルタイムのスナップショットを読むようになり、連続操作の競合による更新欠落を修正。`describe` の応答は乱序を防護し、最新のリクエストの応答だけを認める
687
+
688
+ ### v2.9.7: アーキテクチャ收口——DSH web_fetch シーム + explicit_only 契約 + 状態契約統一(License を Apache-2.0 へ)
689
+
690
+ - **License 変更**:MIT → Apache License 2.0(特許許諾が明示され、商用でより安全;他は不変)
691
+ - **DSH プラグイン web_fetch シーム**:宿主の web_fetch は「この URL を読む」既定経路として完全に argo を迂回していたが、fetch provider を登録し argo_fetch 链を流れるように(HTTP 优先、Cloudflare / JS レンダリング時は反检测ブラウザへ自動升级);search provider と同构の双路実行——常駐 MCP プール优先、传输层故障时のみ CLI 単发にフォールバック、ツールレベルエラーとTimeoutは再送しない(呼び出しは既に完了しており、再送は引擎呼び出しと配额を倍にするだけ);失败は五类(Timeout / ブロック / 空结果 / 一般 / キャンセル)に分类し行动可能な文案を付与;新设定 `fetchProviderEnabled` / `fetchProviderId` / `fetchTimeoutMs`(既定 25000)/ `fetchMaxChars`(既定 50000)は既定全开・逃げ口付き;实测:クロスオリジンジャンプ(短链、协议アップグレード、リダイレクト殻)と JS チャレンジ页が宿主の构造的失败から argo 成功へ、普通の静止页は品质不変
692
+ - **explicit_only 契约の收口**:`config._routable_filter` は環境白黒リスト / 键 / 拉黑だけを滤し explicit_only を滤していなかったため、18 个の明示专用引擎(唯一の有料 `deepseek_search` を含む)が enabled 候选池に寝たまま、TF-IDF 注入・catch-all・backfill・兜底など六つの経路全てが选択できた——语料に词条がなかっただけで、一条追加すれば auto 档で有料引擎を并行呼び出して课金される;候选池の唯一生产者一处で滤し、`tests/test_explicit_only_gate.py` が三契约(注入不带入 / 候选池排除 / 明示 `--engine` は通常単发)をロック
693
+ - **状態契约の统一**:熔断器は健全 closed 态で计数 0 のときメモリ短路(ファイル锁ゼロ・ディスク书き换えゼロ)、`(st_mtime_ns, st_size)` でクロスプロセス变更を感知;adaptive 记账は `MAX(created_at)` を単条集约 SQL に统合し、`batch()` コンテキストマネージャで多引擎记账を単一トランザクションに;配额耗尽は生效凭证の指纹を记録し新 key 交换时に自动アンロック;route キャッシュは combo 引擎耗尽・旧耗尽引擎の恢复時に自动无效再计算;`is_engine_routable` 单一准入谓词が backfill / tfidf / breaker_filter の五层滤过を收口
694
+ - **调度と传输**:auto / deep 档も配额ハード耗尽引擎を除外(fail-open 兜底);ヘッジ待机窗を狭め、早停判定を缓和(Wave-1 のクロス引擎累计达标で停止、Wave-2 を起动しない);POST 接続プール开通(anysearch 约 320ms / octen 约 561ms を毎回节约)+ MCP 事前接続;気象ドメインに `early_stop_min_results: 1` を追加
695
+ - **子スキル热路径减法**:js-run は SIGALRM を MiniRacer ネイティブ timeout に替换し、crawl / research / mcp の作业スレッドから呼ぶと必ず `ValueError: signal only works in main thread` で落ちるクラッシュを根治;local-seek の再顺は毎回 O(N) 读盘と JSON 解析を解消;local-search は registry を复用し双重 YAML 解析を解消;ego-search は auto 下で探査を必要时短路
696
+ - **検証**:プラグイン単测 71 passed;argo 全量回归 4264 passed / 28 skipped;pre-commit 七门 123 passed;fetch 链の対撮で普通页は非退行、クロスオリジンジャンプと JS チャレンジは失败→成功
697
+
698
+ ### v2.9.6: DeepSeek Search エンジン + クエリ演算子契約 + 传输層の接続プール + ルーティングスナップショット門
699
+
700
+ - 新エンジン `deepseek_search`(公式 `api.deepseek.com/v1/tools/search`)がデフォルト有効:`DEEPSEEK_API_KEY` がない場合のみ自動スキップ、他の 265 ソースには影響なし;実測 445-510ms(anysearch 1.7-4.5s / exa 3.7s)、authority 権威階層 / rerank_score / 公開時刻の三者中唯一の全項目カバー、ja/ko/es 多言語は anysearch と同等;従量課金、ドメイン combo には入らず、明示 `--engine deepseek_search` が主経路;DSH ホストはネイティブ認証情報 seam で公式バックエンドと同じ key を共用(web Models ページでのキー交替は次のホップから効く、保存もログもされない)
701
+ - 修正:`--since/--until` が deepseek_search に効いていなかった(TIME_CAPABLE_ENGINES に追加)
702
+ - 新規 `query_operators.py` クエリ演算子契約層:`site:` / `-site:` / `-語` / `-"句"` / `lang:` / `after:` / `before:` が五つの散在形態から構造化演算子に収束;路由・キャッシュ・クエリ理解は命令を剥いだ clean_query のみを認識;`site:` / `-site:` が真の後置フィルタを実行(サブドメイン一致、複数サイト OR、フィルタ数は `site_filtered` に)、演算子は結果キャッシュキーに投入され串線を防止
703
+ - `evidence.py`:Agent 档二層概要 `summary` フィールドを新設(DeepSeek Search の概要 semantics を参考)
704
+ - 传输層の二重払い排除:POST がプール接続を再利用(実測 同一接続の 2 回目で anysearch 320ms / octen 561ms 節約)、貸出失敗時の再試行と読み切り后才還却つき;MCP 事前接続;クォータ耗尽と死んだ負キャッシュの收口
705
+ - 路由:octen が一般フォールバック鎖の 2 番目と TF-IDF ヘッジ枠に入る(anysearch じらし窓 p90 3273→1614ms、max 6266→1928ms、エラー 9→0;健全窓では中央値差なし、尾部保険と定位)、逃げスイッチ `ARGO_GENERAL_FALLBACK_LEGACY=1`
706
+ - RRF 口径隔離の名次減衰を修正:同一エンジンの全結果が同点(実測 anysearch 5 件とも 0.017213)、出力が「エンジン权重でのブロック連結」に退化;「同一エンジン内で厳密単調減少」を鎖る新テスト
707
+ - Bing ck/a リダイレクト殻が還元されず聚合層が結果を丸ごと濾過していた問題を修正(直近 7 日 40.2% 空結果):オフライン base64url 復号で真リンクを還元、ゼロネットワーク
708
+ - TF-IDF リーダー combo が `['anysearch','anysearch']` を二重実行していた問題を修正(クォータ二倍で wasted_ms は 0 記録):200 件の実クエリ再演、重複 combo 1→0
709
+ - 検索改善:失敗負キャッシュ、Nitter フェイルオーバ、口径隔離、X Article 抽出、クエリエコー防衛(早停拒収 + 回復鎖のエンジン切替)
710
+ - 工学化:`scripts/pre-commit` 快门禁を新設(static_lint / module_size_gate / usage_doc / consistency / routing_snapshot / context_budget + engine_catalog、実測 ~12s);ルーティング決定スナップショット門が路由の反転を diff 可能な golden に変える(三つの注釈集合の和、115 クエリ、domain と kind のみ比較で環境ノイズによる誤赤なし);口径レジストリ同期テストが「表のエンジン名は実登録必須」をロック
711
+ - DSH プラグインは DSH 0.2.1-rc.2 対応:実行時入口のデュアルスタック(`startActivation({provider, label, request, signal, delivery})` 新 / `start(provider, request)` 旧)、rc.2 で `toolFilter` 削除後はプラグイン内 tool guard が worker の `wide_research` 入れ子呼び出しを阻止;rc.2 上で `wide_research`(planner → 2 worker → synthesis、passed=true / 14 sources)とネイティブ `argo_search`(count=3)の端到端実測通過;0.2.1-alpha.1 互換分枝は単測カバー;プラグイン単測 46→50
712
+ - DSH 環境バージョン:**DSH 0.2.1-rc.2(現行・稼働中、端到端実測済み)+ DSH 0.2.1-alpha.1(互換、旧 start 分枝は単測カバー)**;対応表は `packages/dsh-plugin/README.md` の Compatibility 節
713
+
714
+ ### v2.9.5: 為替専用ドメイン + 二層重複排除 + 順位誤殺修正 + チェックアウト別 daemon 隔離
715
+
716
+ - `config.yaml`: 新ドメイン `fx_query` —「人民元/米ドル レート、中心相場、オフショア」系のクエリはマクロ域の空回りを経て百科事典項目に落ちることはなく、生レート + 毎日の中心相場ニュースを返す(実測 675ms、修正前は 1411ms かつ的外れ)
717
+ - `search_rank.py`: 重複排除を二層に — タイトルのサイト suffix 正規化(ゼロ依存)+ rapidfuzz ファジー近重复チェック(近似命中帯内のみ起動;`ARGO_DEDUP_FUZZY=0` で切断、未インストールなら純 minhash に自動フォールバック)
718
+ - 修正: 劣化リランク時のタイトル区切り誤殺 — `|` / `_` / `——` を含むタイトルは一律 ×0.6 で公式ドキュメントが 40% 圧下されていた;Bocha キーなしの auto/deep クエリ全部が影響(判定は rank_signals の単一実装に収束)
719
+ - `query_understanding.py`: 否定理解に「不是X」を追加(疑問形「是不是」は否定と誤判定しない)
720
+ - `daemon.py`: socket/pid/ポインタ等のオンディスク名をチェックアウト別に隔離 — マルチ worktree/clone による daemon の奪い合い・誤殺・「変更が効かない」の三故障を根絶
721
+ - 新規オプション依存 rapidfuzz(`pip install rapidfuzz`;install.sh が自動導入、未インストールでもコア機能に影響なし)
722
+
723
+ ### v2.9.4: 明示的エンジンドメイン帰属 + 回復チェーン遮断 + ゲート同期
724
+
725
+ - `route.py`: `--engine X` で `match_domains` を補完しキャッシュ TTL 一般化を修正
726
+ - `recovery.py`: 単一エンジンでフォールバックなしの場合 L1 空実行をスキップ
727
+ - `config.yaml`: `org_entity` に株主盡職調査語を追加;`fund_query` に政策法規語を追加
728
+ - `mcp_launch.sh`: `set -a` を `. "$ENV_FILE"` 一行に收窄
729
+ - `sub-skills/local-search/`: エンジンレジストリ層の閉鎖と search_v3 品質向上
730
+ - ゲート同期: module_size_gate / ENGINE_CATALOG 整合
731
+
732
+ ### v2.9.3:X 投稿の完全パッケージ + ブラウザログイン状態車道 + ローカルチェーンの質・速度修正
733
+
734
+ - **新規**:`argo tweet` — 1 コマンドで指定 X 投稿の全文・スレッド/引用/リポスト・インタラクションデータをパッケージ;デフォルトはテキストのみ、`--out` で 4 ファイル一式(post.md/raw.json/manifest.json/CHECKLIST.md)、`--media` で画像/動画を必要時にダウンロード;失敗理由は成果物に可視
735
+ - **新規**:`argo auth` ブラウザログイン状態車道 — `login/status/logout` でサイト別永続ブラウザプロファイルを管理;QR を一度スキャンすればログイン必須ページも取得可能;Cookie は Chrome 自身の暗号化ストレージにのみ保存され argo は読み出さず、ログイン状態の結果は `login_state_used` を付けて共有キャッシュから除外(`ARGO_AUTH_FETCH` で有効化)
736
+ - **精度**:中国語ローカルチェーンが Sogou/Baidu のリダイレクト殻をセッションなしで実 URL に解決(保持結果 1→5 件);インテントゲート誤ロック修正(「チュートリアル」系クエリが単一エンジンに固定されなくなる);鉄道のテーブル行識別 URL により候補ファンネル圧縮(10→1)を実態どおり 10→10 に修復
737
+ - **速度**:コンセンサス猶予の適応化(最初に十分届けたエンジンで放行;英語ディスパッチ ~3.0s→2.2-2.5s);ローカルロングテールの早期打ち切り;ローカル画像フィンガープリントを mmap 行列積に(77k 枚 158ms→3.9ms、既定無効 `ARGO_LOCAL_IMAGE=1`);エージェント消費の自動スリム化 + markdown 内容ネゴシエーション、MCP 呼び出しごとの固定オーバーヘッド −32%
738
+ - **ソース**:ドメイン参照のない 43 エンジンを各ドメインに配線;route_lang 言語ルーティング;キー不要の金融ソース 3 件追加;`--academic-deep` ワンフラグ学術マルチソース;鉄道乗り継ぎ・経停クエリ
739
+ - **安定性**:js-run を fetch チェーンの第一車道に接線(Chrome フィンガープリント再試行);jsrun セッション漏洩とバックオフ予算を修復;タイムアウト引き締め(redskill 60→15s)と宣言ポリシー三分割
740
+
741
+ ### v2.9.2:DSH 0.2.1-alpha.1 の適合検証 + ルーティング/ガード修正 + js-run サブスキル
742
+
743
+ - **互換性**:DSH プラグインを最新の DSH 0.2.1-alpha.1 で実検証 — ネイティブ第一級ツール / web_search seam / wide_research の三形態がすべて動作;`argo mcp inject` に WorkBuddy を追加し、7 番目のホストまで対応
744
+ - **精度**:TF-IDF 弱証拠の補助源降格、死源フロア + サーキットブレーカー枠の再充填、 quota 枯渇エンジンの分離、serp_guard の誤検知修正
745
+ - **速度と安定性**:engines/evidence の遅延インポート(import 量 −50%)、アドミッション存在集合ショートカート(open 261 → 99)、MCP 入口/数値引数ガード;新サブスキル `sub-skills/js-run`(ブラウザなしでウェブ JS を実行、P50 ≈ 1ms)
746
+
747
+ ### v2.9.1:コンテンツ品質の最適化 + コンテンツファーム対策 + 最新環境への適合
748
+
749
+ - **クリーン**:コンテンツ品質評価を最適化し、コンテンツファーム対策を強化 — 検索結果の低品質・大量生成コンテンツをより効果的に識別・フィルタリング
750
+ - **互換性**:最新バージョンに適合し、現在の環境とシームレスに連携
751
+ - **安定性**:ローカル検索に自身のインストールツリーのガードを追加 — 検索結果が argo 自身のソースコードで汚染されないように
752
+
753
+ ### v2.9.0:ソース最適化 + プラグインと CLI の対等化 + 少数言語
754
+
755
+ - **充実**:ソース 237 → 253(無設定 198 → 219)。14 の少数言語ローカルニュース源、CORE オープンアクセス全文源、TinEye 逆画像検索、Bing RSS の安定出口などを追加;百度と捜狗(Sogou)の二つの常緑源を復活
756
+ - **整列**:CLI 18 コマンドと MCP 19 ツールが一対一対応 — プラグインと CLI の検索能力が初めて完全に対等に
757
+ - **多言語**:14 の少数言語源(タイ/アラビア/ヘブライ/ギリシャ/ヒンディー/ベトナム/トルコ/インドネシアなど)を追加し、クエリ言語に応じて自動配源
758
+ - **高速**:インポートチェーン −79%、n=200 再ランキング 33ms → 1.5ms、キャッシュ命中率は約六割からほぼミスなしに
759
+ - **信頼性**:クォータ書き込みパスのプロセス間安全性を修正、早期停止の結果がタイムアウトと誤記されなくなり、`argo stats` で検索品質が自身の帳簿を持つ
760
+
761
+ ### v2.8.9:出力スリム化 + 検索の高速・充実化 + 海外メディアとファクトチェック源 5 個
762
+
763
+ - **軽量化**:デフォルト出力 −66%(同じ結果を三度書かない);同一クエリ −30%(ルーティング決定キャッシュ);低速回線の待ち時間 −36%(主源が 0.8 秒超えたら自動でバックアップ源を追加起射)
764
+ - **充実**:リコール +35%、取得レイテンシ −30%;本文構造の保真 0/6 → 6/6(見出し・リスト・表が潰れなくなった);中国語コンテンツが系統的に低品質判定されなくなる
765
+ - **追加**:ソース 232 → 237(キー不要 194 → 198、全て無料 — The Guardian、France 24、DW、ファクトチェック FactCheck.org / Full Fact の米英両口);死源 gdelt を廃止
766
+ - **信頼性**:数字が相互に矛盾する六つの記帳欠陥を修正;六段ファネルで「0 件」がどの層で潰れたか特定可能;オフライン再生ツールで変更効果を当日検証。詳細は [リリースノート](docs/RELEASE_NOTES_v2.8.9.md)
767
+
768
+ ### v2.8.8:実ユーザー報告の修正 + 全面高速化 + ソース 232 個
769
+
770
+ - **修正**:推奨名でキーを設定してもエンジンが黙って 0 件になる問題(#12)、取得チェーンがプロキシを通らず GitHub 等が必ず失敗する問題(#13)——`ARGO_PROXY`・config のドメイン別ルール・標準プロキシ変数がすべて有効になり、`NO_PROXY` を尊重
771
+ - **高速化**:コマンド冷起動 2.1s → 0.55s;設定のプロセス間キャッシュ 50–82ms → 16–18ms;毎回の検索に各段の所要時間と予算消費を出力し、どこが遅いか推測不要(`--no-timing` で無効化)
772
+ - **新規**:ソース 218 → 232(設定不要で使えるのは 184 → 194、すべてキー不要:中国系トレンド・セキュリティ脆弱性・オープンアクセス学術・スキルディレクトリ・Agent 検索)、直答 `argo answer`、Web 観測 `argo watch`、CLI/MCP ツール面の整列
773
+ - **安定性**:三 OS の慣例パス(`argo paths` 自己点検を追加)、Python 3.9 対応、沈黙していた劣化を正直に記帳。詳細は [リリースノート](docs/RELEASE_NOTES_v2.8.8.md)
774
+
775
+ ### v2.8.7:ソースを 218 に拡充 + 修正一括
776
+
777
+ - **ソース拡充**:168 → 218 ソース、72 → 89 ドメイン(StackExchange Q&A、DOI メタデータ、脆弱性情報、製品ライフサイクルなど公式ソースを追加)、本文取得の直出チャネルを 3 本追加
778
+ - **修正一括**:マルチエンジンルーティング、ゼロ結果時のフォールバック、中国語リダイレクト、ローカル検索の劣化など。詳細は [リリースノート](docs/RELEASE_NOTES_v2.8.7.md)
779
+
780
+ ### v2.8.6:検索の高速化 + 多ソース分担
781
+
782
+ - エンジンレーシング、知乎三ソース分担、言語/学術ディスパッチ拡大、死源ゲート
783
+
784
+ ### v2.8.5:DSH プラグインツールのネイティブ化 + MCP 既定オフ + Windows 対応
785
+
786
+ - **プラグインツールのネイティブ化**:`argo_search` / `argo_fetch` がネイティブの一等ツールとして登録され、MCP 接続なしで既定使用可能;スキーマは唯一の来源 `mcp_tools.py` から自動生成され、両側で零ドリフト;`argo_research` 以外の 18 ツールは `nativeTools` で随時有効化可能
787
+ - **MCP 既定オフ**:3 形態の接続(随時マウントの MCP / 既定入口のネイティブツール / web_search seam);普段は常駐トークン消費ゼロ、14 ツール全量が必要なときは profile patch 1 枚で開く
788
+ - **Windows 互換**(コミュニティ PR #11):一時パスはシステム temp、GBK エンコード修正、`python3`/`python` の実行時解決、symlink は権限なしで junction にフォールバック、PowerShell 一括インストール `install.ps1` を追加
789
+ - **クォータ自己修復**:HTTP 200 に隠れたリモートクォータ枯渇を検出し、ルーティングがそのエンジンを除外してバックアップ源へ切替、次クォータ期間で自動復帰
790
+ - **フェッチ全体 deadline**:`ARGO_FETCH_DEADLINE_S`(既定 60s)でフォールバック連鎖の総時間を上限化;429/503 の停止シグナルを尊重;tinyfish レンダリング + `.md` 変体プローブ
791
+
792
+ ### v2.8.4:ローカルデータ融合 + ワンコマンド MCP 接続
793
+
794
+ - **深掘り研究が手元データを食べられる**:作業パッケージに `file_inputs`(手元の CSV / XLSX / 文献。ハッシュだけ登記、中身は入れない)+ `recompute`(サンドボックス再計算。食い違いはフラグ)
795
+ - **MCP 接続は手で設定をいじらない**:`argo mcp inject` が Claude Code / Cursor / Windsurf / Codex / OpenCode / Cline に書く(アトミック書き込み + バックアップ + 復元)
796
+ - **簡単なクエリは安いまま**:正規化 + 複雑さゲート + SNS/プラットフォーム構文優先 + 中国語エンジンを捨てても候補を見続ける
797
+ - **Keenable** を無料体験のウェブ検索源として追加
798
+ - **セキュリティ**:recompute は外部プロセスの出網を遮断;ホストパスはインストール感知
799
+
800
+ > 詳細は下表と各版の[リリースノート](docs/)。
801
+
802
+ ---
803
+
804
+ ## 更新履歴
805
+
806
+ | 版 | 内容 |
807
+ |----|------|
808
+ | **v2.9.7** | **アーキテクチャ收口 + DSH web_fetch シーム + License を Apache-2.0 へ**:MIT → Apache License 2.0;宿主 web_fetch が argo_fetch 链を流れる(HTTP 优先、JS チャレンジでブラウザ升级、双路実行、ツールエラーは再送せず、失败五分类);18 个の explicit_only 引擎を路由候选池から除外(auto 档での误课金口を闭塞);熔断健全短路、adaptive 単一トランザクション记账、配额 key 交换時の自动アンロック、route キャッシュ耗尽无效;auto/deep のハード耗尽除外 + 早停缓和 + POST 接続プール;js-run が非メインスレッドクラッシュを修正。 |
809
+ | **v2.9.6** | **DeepSeek Search エンジン + クエリ演算子契約 + 传输層の接続プール + ルーティングスナップショット門**: 新エンジン `deepseek_search` デフォルト有効(key なしで自動スキップ;445-510ms、authority/rerank_score/公開時刻の唯一の全カバー、時間窓が真に効く;DSH はネイティブ認証 seam で key 共用);`site:`/`-site:`/`-語`/`lang:`/`after:`/`before:` が演算子契約層に収束し真の後置フィルタ + キャッシュキー投入;POST 接続プール(1 回あたり 320-561ms 節約)+ MCP 事前接続;octen がフォールバックとヘッジ枠に(p90 3273→1614ms、逃げスイッチ `ARGO_GENERAL_FALLBACK_LEGACY=1`);RRF 名次減衰と Bing リダイレクト殻(40.2% 空結果)を修正;pre-commit 快门禁とルーティングスナップショット門を新設;DSH プラグインは 0.2.1-rc.2 デュアルスタック + alpha.1 単測カバー。 |
810
+ | **v2.9.5** | **為替専用ドメイン + 二層重複排除 + 順位誤殺修正 + チェックアウト別 daemon 隔離**: 新ドメイン `fx_query`(レート/中心相場を 675ms で生レート+日次ニュース、修正前は百科事典);重複排除にサイト suffix 正規化(ゼロ依存)+ rapidfuzz ファジーチェック(オプション、`ARGO_DEDUP_FUZZY`、フォールバック付き)を追加;区切り ×0.6 誤殺を修正(公式ドキュメントが前列に);否定に「不是X」を追加;daemon 名をチェックアウト別に隔離。 |
811
+ | **v2.9.4** | **明示的エンジンドメイン帰属 + 回復チェーン遮断 + ゲート同期**: `--engine X` で `match_domains` を補完しキャッシュ TTL 一般化を修正;単一エンジンでフォールバックなしの場合 L1 空実行をスキップ;`config.yaml` ドメインルール強化;`mcp_launch.sh` 環境変数エクスポートを收窄;ローカル検索エンジンレジストリ層の閉鎖と品質向上;ゲート同期。 |
812
+ | **v2.9.3** | **X 投稿の完全パッケージ + ブラウザログイン状態車道 + ローカルチェーンの質・速度修正**:新規 `argo tweet`(全文/スレッド/引用/リポスト/メディアを必要時にパッケージ、`--out` で 4 ファイル一式);新規 `argo auth` ブラウザログイン状態車道(サイト別永続プロファイル、Cookie は Chrome の暗号化ストレージのみ、ログイン状態の結果は共有キャッシュ除外);中国語ローカルチェーンが Sogou/Baidu リダイレクト殻をセッションなしで解決(保持 1→5)+ コンセンサス猶予適応化(英語ディスパッチ ~3.0s→2.2-2.5s);js-run を fetch チェーン第一車道に接線(Chrome フィンガープリント再試行);鉄道乗り継ぎ・経停クエリ(ファンネル 10→1 を実態どおり 10→10 に修復);`--academic-deep` ワンフラグ学術深掘り;43 エンジンのドメイン配線 + キー不要金融ソース 3 件 + インテントゲート誤ロック修正;ローカル画像フィンガープリント 158ms→3.9ms;エージェント消費スリム化(MCP 固定オーバーヘッド −32%)。 |
813
+ | **v2.9.2** | **DSH 0.2.1-alpha.1 の適合検証 + ルーティング/ガード修正一括 + js-run サブスキル**:DSH プラグインの三形態を最新 DSH 0.2.1-alpha.1 で実検証;`argo mcp inject` に WorkBuddy を追加し 7 番目のホストまで対応;TF-IDF 弱証拠の補助源降格、死源フロア + サーキットブレーカー枠の再充填、クォータ枯渇エンジンのルーティング分離、serp_guard の巻き込み誤検知修正;engines/evidence 遅延インポート(import −50%)とアドミッション存在集合ショートカート(open 261→99);MCP 入口と数値引数ガードの収口;js-run サブスキル新規追加(ブラウザなしでウェブ JS、P50 ≈1ms)。 |
814
+ | **v2.9.1** | **コンテンツ品質の最適化 + コンテンツファーム対策 + 最新バージョン適合**:コンテンツ品質評価を最適化し、低品質な大量生成コンテンツの識別・フィルタリング能力を向上;最新バージョンに適合しシームレスに連携;ローカル検索に自身のインストールツリーガードを追加し、結果が自身のソースで汚染されるのを防止。 |
815
+ | **v2.9.0** | **ソース最適化 + プラグインと CLI の対等化 + 多言語少数言語**:ソース 237→253(無設定 198→219)。14 の少数言語ニュース源、CORE 全文源、TinEye 逆画像検索、Bing RSS など追加;百度と捜狗を復活;CLI 18 コマンドと MCP 19 ツールが一対一対応;インポートチェーン −79%、再ランキング 33ms→1.5ms、キャッシュ命中率大幅向上;クォータ書き込みパスのプロセス間安全修正;`argo stats` ローカル使用ログを新規追加。詳細は [リリースノート](docs/RELEASE_NOTES_v2.9.0.md) |
816
+ | **v2.8.9** | **出力スリム化 + 検索の高速・充実化 + 海外メディアとファクトチェック源 5 個**:デフォルト出力 15.5KB→5.2KB(−66%、`--envelope` で完全封筒を復元);ルーティング決定キャッシュで同一クエリ −30%;低速回線のディスパッチ −36%(直列ドメインは 0.8 秒超過で自動ヘッジ);取得チェーン五輪の刷新(リコール +35%、レイテンシ −30%、ロングテール P90 −8%)+ 本文構造の復元(見出し/リスト/表の保真 0/6→6/6)+ CJK 品質スコア修正;キー不要新源 The Guardian RSS / France 24 / DW / FactCheck.org / Full Fact(232→237、キー不要 194→198、ドメイン 90→92)、死源 gdelt 廃止;自己整合性欠陥六箇所を修正 + 六段ファネル帰属 + オフライン再生ツール(`scripts/replay_eval.py`)+ ポリシー後デプロイ門禁とシナリオ閾値契約。詳細は [リリースノート](docs/RELEASE_NOTES_v2.8.9.md) |
817
+ | **v2.8.8** | **実ユーザー報告の修正(#12 キー別名の無言失敗、#13 プロキシ非対応の取得)+ 全面高速化 + ソース 218 → 232**:出口ディスパッチを統一(`ARGO_PROXY` / ドメイン別ルール / 標準プロキシ変数、`NO_PROXY` を尊重);キー読み取り 16 箇所を別名チェーンに統一;コマンド冷起動 2.1s→0.55s、設定キャッシュ 50–82ms→16–18ms、QPP 平坦度ゲート早停、`--list-engines --detail` を 152KB→51KB に圧縮;直答 `argo answer` と Web 観測 `argo watch` を追加、キー不要ソース 14 個(中国系トレンド・ライフスタイル/セキュリティ脆弱性/オープンアクセス学術/スキルディレクトリ/Agent 検索)、69 エンジンの分類を補正(`web_general` フォールバック比率 41%→20%、security ドメイン新設);三 OS 慣例パス(`argo paths`)+ Python 3.9 + 有界並列でタイムアウトを実効化;search.py をモジュール分割 3351→2526 行、22 エンジンの関連性ゴールデン、静的欠陥・出力契約門禁。詳細は [リリースノート](docs/RELEASE_NOTES_v2.8.8.md) |
818
+ | **v2.8.7** | **218 ソース / 89 ドメイン + 本文直出 3 チャネル + ルーティング発火規律 + macro ゼロ結果修正**:バッチ 7/8/9 で累計 50 の新ソース(法令/規格/セキュリティ情報/学術/ニュース/エンタメ/エネルギー交通/法務行政)、stackexchange と doi エンジン;取得チェーン第 0 段に llms.txt と `.md` 直出プローブ、r.jina.ai リーダー段を追加;`--engine` カンマ複数指定の修正、tfidf 计算方式と route_reason、負方向ルーティング制御マトリクス、ランキング金標と融合利得アブレーション門禁;中国マクロ照会は国家統計局を前置、全域ゼロ結果リカバリが L3 を解放、救援エンジンを正直に記帳。詳細は [リリースノート](docs/RELEASE_NOTES_v2.8.7.md) |
819
+ | **v2.8.6** | **hedged 競速 + 知乎三源分担 + 宣言的言語ディスパッチ + 到達性ゲート + 学術検索プロトコル**:先頭エンジンに猶予窓を設けた競速(速いエンジンは呼び出し 1 回で済む)、zhihu の全网検索/個人データ接続と餓死防止、サブクエリの言語・学術ディスパッチ(英語源と 17 の学術源を研究収集に接続)、エンジン言語メタデータと到達性ゲート(死に源の可視化)、geo 尾部 −56%、学術検索クエリ構築プロトコル。詳細は [リリースノート](docs/RELEASE_NOTES_v2.8.6.md) |
820
+ | **v2.8.5** | **DSH プラグインツールのネイティブ化 + MCP 既定オフ + Windows 互換 + クォータ自己修復 + フェッチ deadline**:`argo_search`/`argo_fetch` がネイティブ一等ツールで既定可用(CLI 単発は MCP と同エンジン同ガード、スキーマ単一来源 + ドリフト門禁);3 形態接続、MCP は随時マウント既定オフ;Windows 互換(temp パス / GBK / インタプリタ解決 / junction / `install.ps1`、PR #11);クォータ自己修復ループ(200 業務エラー封筒検出 + ルート除外 + 周期自己修復);フェッチ全体 deadline(`ARGO_FETCH_DEADLINE_S`)+ tinyfish レンダリング + `.md` 変体プローブ;ホットリロード env と状態ディレクトリ単一来源。[リリースノート](docs/RELEASE_NOTES_v2.8.5.md) |
821
+ | **v2.8.4** | **ローカルデータ融合 + 多クライアント MCP 注入 + 構造化検索 + Keenable**:研究 L1 の手元一次データ(`file_inputs` + `recompute` + `local_sources`);`argo mcp inject`(宣言的 `mcp/clients.yaml`);クエリ正規化 / 変体 / 複雑さゲート / SNS 構文優先 / TF-IDF 修正 / `--include-local`;Keenable(無料体験);セキュリティ強化。[リリースノート](docs/RELEASE_NOTES_v2.8.4.md) |
822
+ | **v2.8.3** | **多言語ルーティング修正 + プロセス内 anysearch + weighted RRF**:ja/ko が対象言語を返す;独仏西伊は anysearch;weakest-link 降権(論文 2508.01405)。[リリースノート](docs/RELEASE_NOTES_v2.8.3.md) |
823
+ | **v2.8.2** | **Windows + 証拠セマンティクス統一**:npm `os` 制限撤去;GBK クラッシュ対策の UTF-8;メインパッケージ `dsh.bundle`;`wide_research` 品質門禁。[リリースノート](docs/RELEASE_NOTES_v2.8.2.md) |
824
+ | **v2.8.0** | **証拠クローズドループ + 求人 v3 + 天気双源**:`fetch_required` / `--verify`;`argo job`;wttr.in + Open-Meteo;Parallel / You.com。[リリースノート](docs/RELEASE_NOTES_v2.8.0.md) |
825
+ | **v2.7.3** | エンジン層 HttpClient;TF-IDF で 25 垂直を活性化;70 ドメイン TTL;垂直の中英。[リリースノート](docs/RELEASE_NOTES_v2.7.3.md) |
826
+ | **v2.7.2** | ログイン態の専門検索(ego-search、既定オフ);日韓クエリが中国語エンジンに混ざらない。[リリースノート](docs/RELEASE_NOTES_v2.7.2.md) |
827
+ | **v2.7.1** | SSRF 強化 + ルーティング健全性の意味修復。[リリースノート](docs/RELEASE_NOTES_v2.7.1.md) |
828
+ | **v2.7.0** | **垂直構造化モーダルカード**:内蔵 `bocha` / `bocha_ai` ネイティブエンジン、`modal_card` ドメインで列車チケット / ガソリン価格 / 貴金属 / 万年カレンダー / 星座 / 電話番号 / 車両 / 病院予約などのリアルタイムカードを統一認識;`bocha` web 解析の欠陥を修正。詳細は [リリースノート](docs/RELEASE_NOTES_v2.7.0.md) |
829
+ | **v2.6.2** | 独立した改良ラインを統合:ネットワーク環境認識 / 加重 RRF + セマンティックキャッシュ / 適応型エンジン無効化 / コンテンツセーフティ + クエリバリアント / 三大垂直エンジン / 日韓ドメインルーティング補完;v2.6.1 のルーティング修正を含む。詳細は [リリースノート](docs/RELEASE_NOTES_v2.6.2.md) |
830
+ | **v2.6.1** | v2.6.0 修正版:ルーティングの巻き込み修正(`capital of` が fact_check を奪わない);バージョン同期。詳細は [リリースノート](docs/RELEASE_NOTES_v2.6.1.md) |
831
+ | **v2.6.0** | **多言語検索**(検出 / エンジンパラメータ / 言語横断フォールバック);映像・スポーツ・地理・組織・メディア垂直;recovery 汚染防止;能力族と行列回帰;約 120+ 源。[リリースノート](docs/RELEASE_NOTES_v2.6.0.md) |
832
+ | **v2.5.1** | 金融/マクロ/化学の答え源を厚く;エンジン階層 + combo 予算;[v2.5.1](docs/RELEASE_NOTES_v2.5.1.md) |
833
+ | **v2.5.0** | インストールスクリプト + npx;書き換えとルーティング分離;ホットパスキャッシュ;MCP コンパクト |
834
+ | **v2.4.0** | 低分ルートのフォールバックと SNS 誤吸フィルタ;キャッシュ depth / ソフトヒット;ブレーカと負キャッシュ;`engine_outcomes` |
835
+ | **v2.2–v2.3** | 証拠二段階、中国語ソース表、content_signals、fetch スタック、エンジン拡充 |
836
+ | **v2.1** | SNS エンジン層(多プラットフォーム UGC) |
837
+ | **v1.x** | 名称を Argo に統一、多エンジンルーティングと二層キャッシュ |
838
+
839
+ ---
840
+
841
+ ## 貢献
842
+
843
+ Issue と Pull Request を歓迎します。ルーティングや証拠ロジックを変えるときはテストを足してください:
844
+
845
+ ```bash
846
+ python3 -m pytest tests/test_unit.py tests/test_multilingual.py -q
847
+ python3 scripts/regression_p0p1.py --offline
848
+ python3 scripts/matrix_search_eval.py --offline
849
+ python3 scripts/ab_eval_p0p1.py # 任意、オンライン含む
850
+ ```
851
+
852
+ コミット前:本物の API Key、本機絶対パス、cookie などを含めないこと。本機 Skill パスは `installs.local.yaml`(gitignore 済み)。
853
+
854
+ ## License
855
+
856
+ Apache License 2.0 © 2026 [taxueseek](https://github.com/taxueseek)
857
+
858
+ <p align="center">
859
+ <a href="https://github.com/oil-oil/beautify-github-readme"><img src="assets/readme/made-with-beautify.svg" width="300" alt="README made with beautify-github-readme"></a>
860
+ </p>
861
+
862
+ ---
863
+
864
+ > 良い検索は、もっと多く見せることではない。自信を持って結論できること——そしてまだ結論してはいけないときを知ることだ。