argo-search 1.0.1 → 2.9.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. package/LICENSE +201 -21
  2. package/README.en.md +735 -0
  3. package/README.es.md +777 -0
  4. package/README.ja.md +777 -0
  5. package/README.ko.md +777 -0
  6. package/README.md +778 -320
  7. package/SKILL.md +135 -0
  8. package/assets/readme/hero.svg +121 -0
  9. package/assets/readme/made-with-beautify.svg +10 -0
  10. package/assets/readme/proof-routes.svg +73 -0
  11. package/assets/readme/why-better.svg +104 -0
  12. package/assets/readme/workflow.svg +83 -0
  13. package/backends/domain_profiles.json +2356 -96
  14. package/backends/engine_registry.yaml +3428 -503
  15. package/backends/query_synonyms_cn.json +35 -0
  16. package/backends/quota_profiles.json +2488 -160
  17. package/backends/source_types_cn.json +109 -0
  18. package/backends/text_lexicon.json +44 -0
  19. package/bin/argo +772 -0
  20. package/bin/argo.js +102 -39
  21. package/config.yaml +5139 -367
  22. package/cordis.patch.yml +21 -0
  23. package/data/countries.json +40 -0
  24. package/data/lang_matrix/lang_capability.json +842 -0
  25. package/data/lang_matrix/matrix_2026-09-10.json +11921 -0
  26. package/data/regions_cn.json +1 -0
  27. package/docs/ADDING_NEW_ENGINE.md +184 -0
  28. package/docs/ARGO_INTRO.md +124 -0
  29. package/docs/DATA_SOURCE_GAPS.md +81 -0
  30. package/docs/DESIGN_LOCAL_DATA_FUSION.md +90 -0
  31. package/docs/ENGINE_CATALOG.md +575 -0
  32. package/docs/MCP_SETUP.md +108 -0
  33. package/docs/PLATFORM_PATHS.md +111 -0
  34. package/docs/RELEASE_NOTES_v2.8.0.md +71 -0
  35. package/docs/RELEASE_NOTES_v2.8.2.md +63 -0
  36. package/docs/RELEASE_NOTES_v2.8.3.md +55 -0
  37. package/docs/RELEASE_NOTES_v2.8.4.md +79 -0
  38. package/docs/RELEASE_NOTES_v2.8.5.md +102 -0
  39. package/docs/RELEASE_NOTES_v2.8.6.md +66 -0
  40. package/docs/RELEASE_NOTES_v2.8.7.md +65 -0
  41. package/docs/RELEASE_NOTES_v2.8.8.md +67 -0
  42. package/docs/RELEASE_NOTES_v2.8.9.md +67 -0
  43. package/docs/RELEASE_NOTES_v2.9.0.md +64 -0
  44. package/docs/RELEASE_NOTES_v2.9.8.md +73 -0
  45. package/docs/SEARCH_ARCHIVE.md +115 -0
  46. package/docs/assets/architecture.svg +104 -0
  47. package/docs/assets/hero.svg +98 -0
  48. package/docs/engines/bangumi.md +27 -0
  49. package/docs/engines/biorxiv.md +27 -0
  50. package/docs/engines/clawhub.md +27 -0
  51. package/docs/engines/crt_sh.md +27 -0
  52. package/docs/engines/datacite.md +27 -0
  53. package/docs/engines/deps_dev.md +27 -0
  54. package/docs/engines/douban_movie.md +27 -0
  55. package/docs/engines/endoflife.md +27 -0
  56. package/docs/engines/flk_law.md +27 -0
  57. package/docs/engines/fxtwitter.md +27 -0
  58. package/docs/engines/google_news.md +27 -0
  59. package/docs/engines/gov_regulations.md +27 -0
  60. package/docs/engines/guqian.md +27 -0
  61. package/docs/engines/hackernews.md +27 -0
  62. package/docs/engines/iplant.md +27 -0
  63. package/docs/engines/keenable.md +27 -0
  64. package/docs/engines/met_museum.md +27 -0
  65. package/docs/engines/nasa_images.md +27 -0
  66. package/docs/engines/netease_music.md +27 -0
  67. package/docs/engines/npm.md +27 -0
  68. package/docs/engines/nvd.md +27 -0
  69. package/docs/engines/openreview.md +27 -0
  70. package/docs/engines/openstd.md +27 -0
  71. package/docs/engines/parallel_free.md +27 -0
  72. package/docs/engines/people_daily.md +27 -0
  73. package/docs/engines/realtime_index.md +27 -0
  74. package/docs/engines/sec_edgar.md +27 -0
  75. package/docs/engines/seltz.md +27 -0
  76. package/docs/engines/skillsmp.md +27 -0
  77. package/docs/engines/sspai.md +27 -0
  78. package/docs/engines/std_samr.md +27 -0
  79. package/docs/engines/train.md +27 -0
  80. package/docs/engines/un_comtrade.md +27 -0
  81. package/docs/engines/wikisource.md +27 -0
  82. package/docs/engines/zdic.md +27 -0
  83. package/docs/engines/zenodo.md +27 -0
  84. package/docs/engines/zhihu_hot_app.md +27 -0
  85. package/docs//344/270/272/344/273/200/344/271/210/351/200/211/346/213/251argo.md +176 -0
  86. package/engines/README.md +10 -0
  87. package/engines/_template_cli.yaml +39 -0
  88. package/engines/_template_http.yaml +37 -0
  89. package/engines/plugins/_template_plugin.py +50 -0
  90. package/engines/specs/_cisa_kev.yaml +54 -0
  91. package/engines/specs/_osv.yaml +63 -0
  92. package/engines/specs/aljazeera.yaml +43 -0
  93. package/engines/specs/antara.yaml +43 -0
  94. package/engines/specs/artic.yaml +20 -0
  95. package/engines/specs/aviation_weather.yaml +39 -0
  96. package/engines/specs/bangumi.yaml +21 -0
  97. package/engines/specs/biorxiv.yaml +24 -0
  98. package/engines/specs/carbon_intensity.yaml +32 -0
  99. package/engines/specs/cfets.yaml +41 -0
  100. package/engines/specs/cinii.yaml +44 -0
  101. package/engines/specs/clawhub.yaml +49 -0
  102. package/engines/specs/cleveland.yaml +19 -0
  103. package/engines/specs/cn_ai_news.yaml +43 -0
  104. package/engines/specs/core.yaml +35 -0
  105. package/engines/specs/crt_sh.yaml +38 -0
  106. package/engines/specs/ct24.yaml +43 -0
  107. package/engines/specs/datacite.yaml +27 -0
  108. package/engines/specs/datagov_uk.yaml +41 -0
  109. package/engines/specs/ddgs_images.yaml +45 -0
  110. package/engines/specs/deepseek_search.yaml +74 -0
  111. package/engines/specs/deezer.yaml +20 -0
  112. package/engines/specs/defillama.yaml +38 -0
  113. package/engines/specs/deps_dev.yaml +21 -0
  114. package/engines/specs/digup.yaml +36 -0
  115. package/engines/specs/doi.yaml +39 -0
  116. package/engines/specs/douban_movie.yaml +22 -0
  117. package/engines/specs/dw_news.yaml +47 -0
  118. package/engines/specs/egov_law.yaml +21 -0
  119. package/engines/specs/elpais.yaml +43 -0
  120. package/engines/specs/endoflife.yaml +21 -0
  121. package/engines/specs/energy_charts.yaml +21 -0
  122. package/engines/specs/factcheck_org.yaml +52 -0
  123. package/engines/specs/faz.yaml +43 -0
  124. package/engines/specs/federal_register.yaml +57 -0
  125. package/engines/specs/firecrawl.yaml +53 -0
  126. package/engines/specs/flk_law.yaml +24 -0
  127. package/engines/specs/folha.yaml +43 -0
  128. package/engines/specs/france24.yaml +44 -0
  129. package/engines/specs/full_fact.yaml +47 -0
  130. package/engines/specs/fxtwitter.yaml +36 -0
  131. package/engines/specs/gbfs_nyc.yaml +32 -0
  132. package/engines/specs/gdacs.yaml +21 -0
  133. package/engines/specs/gdelt.yaml +64 -0
  134. package/engines/specs/gleif.yaml +55 -0
  135. package/engines/specs/google_news.yaml +22 -0
  136. package/engines/specs/gov_regulations.yaml +38 -0
  137. package/engines/specs/guardian_rss.yaml +59 -0
  138. package/engines/specs/hkex.yaml +40 -0
  139. package/engines/specs/hurriyet.yaml +43 -0
  140. package/engines/specs/iplant.yaml +25 -0
  141. package/engines/specs/jikan.yaml +24 -0
  142. package/engines/specs/jolpica.yaml +20 -0
  143. package/engines/specs/k10plus.yaml +20 -0
  144. package/engines/specs/keenable.yaml +44 -0
  145. package/engines/specs/keenable_free.yaml +36 -0
  146. package/engines/specs/lefigaro.yaml +43 -0
  147. package/engines/specs/listenbrainz.yaml +19 -0
  148. package/engines/specs/matichon.yaml +43 -0
  149. package/engines/specs/met_museum.yaml +21 -0
  150. package/engines/specs/nasa_images.yaml +45 -0
  151. package/engines/specs/netease_music.yaml +38 -0
  152. package/engines/specs/nhk.yaml +43 -0
  153. package/engines/specs/nhtsa_vpic.yaml +20 -0
  154. package/engines/specs/noaa_swpc.yaml +20 -0
  155. package/engines/specs/nvd.yaml +38 -0
  156. package/engines/specs/obis.yaml +20 -0
  157. package/engines/specs/opencitations.yaml +52 -0
  158. package/engines/specs/openf1.yaml +21 -0
  159. package/engines/specs/openfoodfacts.yaml +45 -0
  160. package/engines/specs/openligadb.yaml +20 -0
  161. package/engines/specs/openreview.yaml +37 -0
  162. package/engines/specs/openstd.yaml +21 -0
  163. package/engines/specs/people_daily.yaml +22 -0
  164. package/engines/specs/realtime_index.yaml +34 -0
  165. package/engines/specs/ror.yaml +20 -0
  166. package/engines/specs/satnogs.yaml +20 -0
  167. package/engines/specs/sec_edgar.yaml +46 -0
  168. package/engines/specs/shfe.yaml +39 -0
  169. package/engines/specs/skillsmp.yaml +50 -0
  170. package/engines/specs/sogou_weixin_browser.yaml +30 -0
  171. package/engines/specs/soilgrids.yaml +25 -0
  172. package/engines/specs/sspai.yaml +36 -0
  173. package/engines/specs/stackexchange.yaml +46 -0
  174. package/engines/specs/std_samr.yaml +21 -0
  175. package/engines/specs/tass.yaml +43 -0
  176. package/engines/specs/tavily_free.yaml +56 -0
  177. package/engines/specs/tle_mirror.yaml +21 -0
  178. package/engines/specs/train.yaml +37 -0
  179. package/engines/specs/tvmaze.yaml +20 -0
  180. package/engines/specs/twitter_syndication.yaml +31 -0
  181. package/engines/specs/un_comtrade.yaml +23 -0
  182. package/engines/specs/unpaywall.yaml +54 -0
  183. package/engines/specs/vnpress.yaml +43 -0
  184. package/engines/specs/weather.yaml +32 -0
  185. package/engines/specs/who_don.yaml +21 -0
  186. package/engines/specs/who_gho.yaml +20 -0
  187. package/engines/specs/wikimedia_commons.yaml +34 -0
  188. package/engines/specs/wikisource.yaml +22 -0
  189. package/engines/specs/worms.yaml +19 -0
  190. package/engines/specs/x_trending.yaml +34 -0
  191. package/engines/specs/yna.yaml +43 -0
  192. package/engines/specs/ynet.yaml +43 -0
  193. package/engines/specs/yuanbao.yaml +93 -0
  194. package/engines/specs/zbmath.yaml +40 -0
  195. package/engines/specs/zdic.yaml +22 -0
  196. package/engines/specs/zenodo.yaml +27 -0
  197. package/engines/specs/zhihu_hot_app.yaml +35 -0
  198. package/mcp/clients.yaml +106 -0
  199. package/package.json +55 -12
  200. package/packages/dsh-plugin/README.md +152 -0
  201. package/packages/dsh-plugin/cordis.patch.yml +48 -0
  202. package/packages/dsh-plugin/dsh/client.js +1533 -0
  203. package/packages/dsh-plugin/dsh/diagnostics.js +54 -0
  204. package/packages/dsh-plugin/dsh/index.js +527 -0
  205. package/packages/dsh-plugin/dsh/native-tools.mjs +749 -0
  206. package/packages/dsh-plugin/dsh/runner.js +666 -0
  207. package/packages/dsh-plugin/dsh/wide-research.js +878 -0
  208. package/packages/dsh-plugin/package.json +38 -0
  209. package/packages/dsh-plugin/scripts/sync-local.sh +70 -0
  210. package/packages/dsh-plugin/test/client.test.js +406 -0
  211. package/packages/dsh-plugin/test/config.test.js +30 -0
  212. package/packages/dsh-plugin/test/diagnostics.test.js +28 -0
  213. package/packages/dsh-plugin/test/index.test.js +1382 -0
  214. package/references/query-templates.md +96 -0
  215. package/references/query-templates.yaml +118 -0
  216. package/scripts/ab_eval.py +219 -0
  217. package/scripts/ab_eval_p0p1.py +266 -0
  218. package/scripts/adaptive.py +294 -70
  219. package/scripts/answer.py +154 -0
  220. package/scripts/archive_run.py +591 -0
  221. package/scripts/argo_engine_registry.py +172 -0
  222. package/scripts/argo_paths.py +728 -0
  223. package/scripts/article.py +136 -0
  224. package/scripts/article_meta.py +131 -0
  225. package/scripts/arxiv_source.py +201 -0
  226. package/scripts/badcase_ledger.py +252 -0
  227. package/scripts/batch_probe.py +241 -0
  228. package/scripts/benchmark.py +19 -0
  229. package/scripts/bounded_run.py +144 -0
  230. package/scripts/browser_auth.py +323 -0
  231. package/scripts/budget.py +247 -0
  232. package/scripts/budget_cli.py +93 -0
  233. package/scripts/build_release_assets.sh +65 -0
  234. package/scripts/burstiness_detector.py +147 -0
  235. package/scripts/cache.py +1066 -67
  236. package/scripts/cache_guard.py +271 -0
  237. package/scripts/cache_key_vdom.py +56 -0
  238. package/scripts/cache_similarity.py +170 -0
  239. package/scripts/caliber_isolation.py +195 -0
  240. package/scripts/calibrate_lowquality.py +210 -0
  241. package/scripts/candidate_envelope.py +366 -0
  242. package/scripts/chrome_cdp.py +871 -0
  243. package/scripts/ci_drift_gate.py +90 -0
  244. package/scripts/circuit_breaker.py +389 -0
  245. package/scripts/citations.py +334 -0
  246. package/scripts/cite_cli.py +59 -0
  247. package/scripts/cjk_tokens.py +95 -0
  248. package/scripts/clarify.py +47 -24
  249. package/scripts/cli_io.py +240 -0
  250. package/scripts/config.py +683 -45
  251. package/scripts/config_cache.py +402 -0
  252. package/scripts/conn_pool.py +220 -0
  253. package/scripts/content_boundary.py +46 -0
  254. package/scripts/content_security.py +685 -0
  255. package/scripts/content_signals.py +751 -0
  256. package/scripts/crawl.py +74 -35
  257. package/scripts/cross_lingual_trace.py +293 -0
  258. package/scripts/daemon.py +866 -0
  259. package/scripts/digup_bridge.py +214 -0
  260. package/scripts/dispatch_result.py +98 -0
  261. package/scripts/engine_admission.py +366 -0
  262. package/scripts/engine_dispatch.py +982 -0
  263. package/scripts/engine_env.py +539 -0
  264. package/scripts/engine_failure.py +411 -0
  265. package/scripts/engine_families.py +738 -0
  266. package/scripts/engine_policy.py +218 -0
  267. package/scripts/engine_requires.py +190 -0
  268. package/scripts/engine_status.py +322 -0
  269. package/scripts/engine_validate.py +638 -0
  270. package/scripts/engines.py +799 -294
  271. package/scripts/engines_base.py +1521 -0
  272. package/scripts/engines_builders.py +310 -0
  273. package/scripts/engines_builders_batch10.py +204 -0
  274. package/scripts/engines_builders_batch11.py +174 -0
  275. package/scripts/engines_builders_batch12.py +103 -0
  276. package/scripts/engines_builders_batch13.py +340 -0
  277. package/scripts/engines_builders_batch14.py +656 -0
  278. package/scripts/engines_builders_batch15.py +249 -0
  279. package/scripts/engines_builders_batch9.py +1468 -0
  280. package/scripts/engines_builders_cn.py +2283 -0
  281. package/scripts/engines_builders_data.py +2923 -0
  282. package/scripts/engines_builders_data_macro.py +775 -0
  283. package/scripts/engines_builders_feeds.py +255 -0
  284. package/scripts/engines_builders_intl.py +1239 -0
  285. package/scripts/engines_builders_keyless.py +111 -0
  286. package/scripts/engines_builders_search.py +440 -0
  287. package/scripts/engines_builders_tech.py +1359 -0
  288. package/scripts/evidence.py +620 -166
  289. package/scripts/evidence_loop.py +624 -0
  290. package/scripts/evidence_tier.py +298 -0
  291. package/scripts/except_sets.py +25 -0
  292. package/scripts/extract.py +55 -16
  293. package/scripts/fact_align.py +207 -0
  294. package/scripts/fact_crosscheck.py +230 -0
  295. package/scripts/fetch.py +25 -12
  296. package/scripts/fetch_browser.py +87 -0
  297. package/scripts/fetch_jsrun.py +122 -0
  298. package/scripts/fetch_quality.py +225 -0
  299. package/scripts/fetch_render_tinyfish.py +117 -0
  300. package/scripts/fetch_v3.py +1804 -0
  301. package/scripts/focus_extract.py +350 -0
  302. package/scripts/fulltext_store.py +169 -0
  303. package/scripts/fxtwitter_api.py +325 -0
  304. package/scripts/gen_engine_catalog.py +364 -0
  305. package/scripts/gen_native_tools.py +91 -0
  306. package/scripts/gen_routing_snapshot.py +195 -0
  307. package/scripts/health_check.py +140 -402
  308. package/scripts/health_probe.py +23 -8
  309. package/scripts/hot_state.py +134 -0
  310. package/scripts/http_client.py +1053 -0
  311. package/scripts/image_ops.py +430 -0
  312. package/scripts/image_vision/vision_probe.swift +126 -0
  313. package/scripts/install.ps1 +166 -0
  314. package/scripts/install.sh +221 -0
  315. package/scripts/job.py +1186 -0
  316. package/scripts/jump_resolver.py +235 -0
  317. package/scripts/lang_capability.py +150 -0
  318. package/scripts/lang_detect.py +289 -0
  319. package/scripts/lang_matrix_probe.py +329 -0
  320. package/scripts/lang_pref.py +311 -0
  321. package/scripts/link_source.py +340 -0
  322. package/scripts/local_image.py +970 -0
  323. package/scripts/local_seek.py +402 -0
  324. package/scripts/macro_countries.py +97 -0
  325. package/scripts/matrix_search_eval.py +1187 -0
  326. package/scripts/mcp_compact.py +234 -0
  327. package/scripts/mcp_diag.py +8 -3
  328. package/scripts/mcp_handlers.py +492 -0
  329. package/scripts/mcp_handlers_surface.py +157 -0
  330. package/scripts/mcp_launch.sh +124 -0
  331. package/scripts/mcp_local.py +241 -0
  332. package/scripts/mcp_server.py +125 -419
  333. package/scripts/mcp_setup.py +431 -0
  334. package/scripts/mcp_tools.py +331 -0
  335. package/scripts/mcp_transport.py +191 -0
  336. package/scripts/mcp_warm.py +127 -0
  337. package/scripts/min_version_scan.py +335 -0
  338. package/scripts/net_proxy.py +258 -0
  339. package/scripts/network_aware.py +152 -0
  340. package/scripts/output_transparency.py +200 -0
  341. package/scripts/paid_policy.py +98 -0
  342. package/scripts/paper.py +274 -0
  343. package/scripts/pdf_extract.py +518 -0
  344. package/scripts/phrase_filter.py +66 -0
  345. package/scripts/plan.py +422 -0
  346. package/scripts/postprocess_signals.py +150 -0
  347. package/scripts/pre-commit +48 -0
  348. package/scripts/query_enhance.py +157 -0
  349. package/scripts/query_operators.py +196 -0
  350. package/scripts/query_rewriter.py +116 -7
  351. package/scripts/query_signals.py +300 -0
  352. package/scripts/query_templates.py +167 -0
  353. package/scripts/query_understanding.py +411 -0
  354. package/scripts/query_variants.py +298 -0
  355. package/scripts/quota.py +633 -76
  356. package/scripts/rank_signals.py +775 -0
  357. package/scripts/ranking_eval.py +319 -0
  358. package/scripts/readability_extract.py +433 -0
  359. package/scripts/recompute.py +415 -0
  360. package/scripts/recovery.py +616 -0
  361. package/scripts/recovery_l0.py +160 -0
  362. package/scripts/recovery_runner.py +150 -0
  363. package/scripts/redskill/redskill_engine.py +332 -0
  364. package/scripts/regression_p0p1.py +318 -0
  365. package/scripts/replay_eval.py +658 -0
  366. package/scripts/rerank_tfidf.py +225 -0
  367. package/scripts/research.py +607 -403
  368. package/scripts/research_cli.py +361 -0
  369. package/scripts/research_dossier.py +492 -0
  370. package/scripts/research_expand.py +169 -0
  371. package/scripts/research_gates.py +272 -0
  372. package/scripts/research_report.py +209 -0
  373. package/scripts/research_strategy.py +37 -0
  374. package/scripts/research_work_packages.py +195 -0
  375. package/scripts/result_lang.py +311 -0
  376. package/scripts/retry_policy.py +76 -0
  377. package/scripts/robots_guard.py +259 -0
  378. package/scripts/route.py +921 -254
  379. package/scripts/route_bangs.py +40 -0
  380. package/scripts/route_cache.py +243 -0
  381. package/scripts/route_combo.py +917 -0
  382. package/scripts/route_domains.py +341 -0
  383. package/scripts/route_lang.py +605 -0
  384. package/scripts/route_log.py +63 -0
  385. package/scripts/route_policy.py +250 -0
  386. package/scripts/rrf_classic.py +66 -0
  387. package/scripts/screenshot.py +73 -0
  388. package/scripts/search.py +886 -406
  389. package/scripts/search_attribution.py +185 -0
  390. package/scripts/search_benchmark.py +407 -0
  391. package/scripts/search_cli.py +640 -0
  392. package/scripts/search_entry.py +395 -0
  393. package/scripts/search_output.py +690 -0
  394. package/scripts/search_pipeline.py +926 -0
  395. package/scripts/search_rank.py +991 -0
  396. package/scripts/search_types.py +129 -16
  397. package/scripts/seek_locator.py +68 -0
  398. package/scripts/semantic_evidence.py +391 -0
  399. package/scripts/serp_guard.py +336 -0
  400. package/scripts/serp_kill_log.py +74 -0
  401. package/scripts/single_flight.py +120 -0
  402. package/scripts/social_engines/__init__.py +10 -0
  403. package/scripts/social_engines/bilibili_engine.py +131 -0
  404. package/scripts/social_engines/hackernews_engine.py +113 -0
  405. package/scripts/social_engines/reddit_engine.py +172 -0
  406. package/scripts/social_engines/twitter_engine.py +397 -0
  407. package/scripts/social_engines/v2ex_engine.py +101 -0
  408. package/scripts/social_engines/weibo_engine.py +128 -0
  409. package/scripts/social_engines/xiaohongshu_engine.py +137 -0
  410. package/scripts/social_engines/zhihu_engine.py +139 -0
  411. package/scripts/social_research.py +201 -0
  412. package/scripts/sogou_weixin_browser.py +318 -0
  413. package/scripts/source_ledger.py +249 -0
  414. package/scripts/stage_timing.py +58 -0
  415. package/scripts/stats_cli.py +107 -0
  416. package/scripts/straggler_policy.py +60 -0
  417. package/scripts/stylometry_detector.py +231 -0
  418. package/scripts/sync_backends.py +353 -0
  419. package/scripts/sync_installs.py +29 -0
  420. package/scripts/template_cli.py +127 -0
  421. package/scripts/text_lexicon.py +72 -0
  422. package/scripts/tfidf_router.py +109 -37
  423. package/scripts/time_utils.py +233 -0
  424. package/scripts/topic_research_profiles.py +643 -0
  425. package/scripts/train.py +737 -0
  426. package/scripts/tweet.py +596 -0
  427. package/scripts/url_canon.py +217 -0
  428. package/scripts/url_optimize.py +56 -0
  429. package/scripts/url_safety.py +236 -0
  430. package/scripts/usage_log.py +116 -0
  431. package/scripts/usage_log_clean.py +113 -0
  432. package/scripts/v2ex_nodes.py +311 -0
  433. package/scripts/variant_recall.py +188 -0
  434. package/scripts/watch.py +205 -0
  435. package/scripts/wechat_article.py +258 -0
  436. package/scripts/wide_research.py +447 -0
  437. package/scripts/wx.py +349 -0
  438. package/scripts/x_article_fetch.py +141 -0
  439. package/scripts/x_search.py +234 -0
  440. package/scripts/x_trending.py +189 -0
  441. package/scripts/yaml_load.py +67 -0
  442. package/scripts/zhihu_quota.py +139 -0
  443. package/sub-skills/ego-search/SKILL.md +253 -0
  444. package/sub-skills/ego-search/scripts/ego_search.py +800 -0
  445. package/sub-skills/ego-search/scripts/merge.py +226 -0
  446. package/sub-skills/ego-search/scripts/quality.py +64 -0
  447. package/sub-skills/ego-search/scripts/runtime.py +172 -0
  448. package/sub-skills/ego-search/scripts/safety.py +109 -0
  449. package/sub-skills/ego-search/scripts/serp_spec.py +109 -0
  450. package/sub-skills/ego-search/scripts/webbridge_adapter.py +374 -0
  451. package/sub-skills/js-run/SKILL.md +67 -0
  452. package/sub-skills/js-run/scripts/jsrun.py +112 -0
  453. package/sub-skills/js-run/scripts/shim.js +188 -0
  454. package/sub-skills/local-search/SKILL.md +50 -53
  455. package/sub-skills/local-search/bm25.py +186 -0
  456. package/sub-skills/local-search/cli_runner.py +331 -0
  457. package/sub-skills/local-search/config.yaml +152 -55
  458. package/sub-skills/local-search/engine_registry.py +91 -26
  459. package/sub-skills/local-search/{health_check.py → local_health_check.py} +140 -10
  460. package/sub-skills/local-search/local_search_adapter.py +13 -2
  461. package/sub-skills/local-search/parse_maps.yaml +40 -42
  462. package/sub-skills/local-search/parsers.py +328 -0
  463. package/sub-skills/local-search/search_v3.py +716 -242
  464. package/sub-skills/local-search/smart_router.py +47 -7
  465. package/sub-skills/local-seek/SKILL.md +110 -0
  466. package/sub-skills/local-seek/config/domains.yaml +20 -0
  467. package/sub-skills/local-seek/scripts/eval_rank.py +216 -0
  468. package/sub-skills/local-seek/scripts/eval_seek.py +224 -0
  469. package/sub-skills/local-seek/scripts/seek.py +1465 -0
  470. package/sub-skills/local-seek/scripts/seek_frecency.py +126 -0
  471. package/sub-skills/local-seek/scripts/seek_fts.py +430 -0
  472. package/sub-skills/local-seek/scripts/seek_rank.py +197 -0
package/README.ja.md ADDED
@@ -0,0 +1,777 @@
1
+ <p align="center">
2
+ <img src="assets/readme/hero.svg" width="100%" alt="Argo アルゴ:Agent のための検索と深掘り調査ツール、272 の検索ソース、ドメインと言語で経路を選び、吸収できる証拠を出力">
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.8-informational">
28
+ <img alt="engines" src="https://img.shields.io/badge/engines-272-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 に組み込んで使う検索・深掘り調査ツールで、関連するウェブページの情報も取得できます。背後には 272 の検索ソースがあり、97 の業務ドメインをカバーし、ローカルファイルの基本的な検索も備えています。オープンソースの検索プロジェクトの中では、非常に強力な検索能力を持っています。**
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.webp" width="100%" alt="Argo 設定ページ「ツール」:ネイティブ 18 ツールのチェック——高頻度パスは argo_search / argo_fetch が既定でオン、長尾 16 個は必要時に。下に単発タイムアウトと返却上限">
85
+ </p>
86
+
87
+ <p align="center">
88
+ <img src="assets/readme/settings-engines.webp" width="100%" alt="Argo 設定ページ「エンジン」:argo 本体の 28 個の挙動スイッチをパネルへ——キャッシュ / TF-IDF 再ランク / 数値クロスチェック / MinHash 重複排除 / SERP ガードと重複しきい値。未設定行は既定値、保存で即時有効">
89
+ </p>
90
+
91
+ <p align="center">
92
+ <img src="assets/readme/settings-keys.webp" width="100%" alt="Argo 設定ページ「キー」:DeepSeek 公式検索は「設定済み・資格情報ストア」で、ホスト web_search と同一キーを共用。Tencent Yuanbao / Tavily などのキー入力・更新・クリア、平文は非表示">
93
+ </p>
94
+
95
+ | 分区 | 管理内容 |
96
+ |------|----------|
97
+ | **接入** | `web_search` / `web_fetch` seam の切り替え。エンジン起動コマンドと引数(npx またはローカル `mcp_server.py`)。検索/取得のタイムアウト、本文上限、アイドル接続回収、並行接続数 |
98
+ | **ツール** | 18 個のネイティブ一等ツールのチェック(既定は `argo_search` / `argo_fetch` のみ)。単発呼び出しタイムアウトと返却テキスト上限 |
99
+ | **引擎** | argo 本体の挙動スイッチ(従来は環境変数、curated ホワイトリスト 28 個:キャッシュ / TF-IDF 再順位 / 数値交差検証 / MinHash 重複除去 / SERP ガード、Jina / モバイル UA / Parallel 取得層、意味的証拠層、ヘッジ幅と末尾幅、エンジン有効化リスト、プロキシ、ローカル検索ルートと読み取り許可リスト、ウォームアップ / 使用ログ / 接続プール / 各種 TTL)。スイッチ系は即時反映、数値・テキスト・リスト系はグループ保存。未設定行は argo の既定値を表示し「默认」と明記。認可系スイッチ(再計算実行、イントラネット URL)は意図的にパネルに入れていません |
100
+ | **密钥** | 常用エンジン key の入力・更新・クリア。「設定済み / 未設定 + 来源層(凭证库 / 起動環境 / .env)+ 読み取り専用状態」を表示し、平文は非表示。各行の「転送」チェックは参照名を `keyRefs` に追加するのと等価 |
101
+ | **研究** | worker / トラック / トラックごとのソース数 / トークン上限とレポート出力先ディレクトリ |
102
+ | **高级** | worker ツールの allow / deny リスト、凭证転送リスト |
103
+
104
+ 保存は即時有効です(すべて volatile 設定):ネイティブツール群はチェックに応じて登録・解除され、タイムアウト・並行数・研究上限は次の呼び出し時に読み込まれます。エンジンスイッチは `argoEnv`(1 行 1 つの `KEY=VALUE`)として argo サブプロセスの env に入り、次の新規接続から有効になります(プール内の旧接続は `searchIdleMs` で回収、既定 60 秒)。構造的フィールド(`toolName`、`provider`、`searchProviderId`、`fetchProviderId`)は設定ページにはなく、従来どおり profile patch 経由で、変更後は再起動が必要です。
105
+
106
+ **キーについての安全設計**:キーは DSH の凭证库(Models ページと同じ場所)に書き込まれ、プラグイン設定には書かれず、ログにも残らず、平文も表示しません。凭证の解決優先順位は**ストレージファイル層 > 起動環境 > プロジェクト .env > ホーム .env**で、パネル(または Models ページ)で保存すると起動環境の古い値を上書きし、argo サブプロセスは次の新規接続で新しい key を受け取ります。「クリア」は凭证库の値だけを削除するため、環境変数や `.env` が供給した key は再び現れます。設定ページは凭证ドメインの書き込み入口であり、読み取りはホストが毎回の呼び出しで行います。
107
+
108
+ **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 ソースは影響を受けません。
109
+
110
+ **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 サービス行で明示的に指定してください:
111
+
112
+ ```yaml
113
+ - id: web
114
+ config:
115
+ searchProvider: argo # 検索 seam が有効な場合(既定で有効)に必須
116
+ fetchProvider: argo # 取得 seam が有効な場合(既定で有効)に必須
117
+ ```
118
+
119
+ `searchProviderEnabled: false` / `fetchProviderEnabled: false` は対応する seam をまるごと無効にします(プロバイダは登録されたままだが選択不可、もう一方には影響しません)。エンジン側では、Firecrawl などの匿名利用可能なエンジンは **key 不要でそのまま使えます**(無料枠)。キーが設定されたエンジンは自動的に認証リクエストへ昇格し、キー不足はルーティングを止めません。
120
+
121
+ > 設定項目の全体、Compatibility バージョン対応表、アンインストール手順は [packages/dsh-plugin/README.md](packages/dsh-plugin/README.md) にあります。
122
+
123
+ ## 主な強み
124
+
125
+ **272 のソース、うち 235 はキー不要ですぐ使える。** API Key を一切設定しなくても動き、無料エンジンとローカルエンジンが自動でバックストップします。Key を設定したソースは品質が良いことが多く、未設定なら自動でスキップされます。一度インストールすれば、あらゆる場面で使えます。
126
+
127
+ **ローカル検索とネット検索が一体。** これは Argo ならではの能力です。ローカルファイル検索の土台は rg や mdfind といった開発者が日常的に使うツールで、コードシンボル、ファイル名、ドキュメント全文、ファイル構造を検索します。スイッチひとつで、ローカルのヒットが同じネット検索結果に混ざり、結果には出所がローカルファイルであることが表示されます。半年ほど前に書いた一節を思い出したが場所がわからない、というときに、フォルダを巡回するより速く見つかります。
128
+
129
+ **二層キャッシュで、ホットクエリは約 10ms。** 鮮度がそれほど重要でない内容(百科事典系、過去データなど)は、一度検索するとキャッシュに入り、同じクエリはそのままヒットして毎回 API を叩きません。コストも時間も節約できます。
130
+
131
+ **多言語 + 垂直シーン。** 実測で 18 言語に対応し、中国語・英語・日本語は現地の一次ソースにたどり着けます。論文は学術ライブラリ、映像は項目ライブラリ、コードは Q&A コミュニティ、相場は金融ソースへ。曖昧な質問だけが汎用検索に回ります。
132
+
133
+ ## インストールしてすぐ使う
134
+
135
+ 設定ゼロで動きます。インストール方法は三つ、好みに合わせて選んでください:
136
+
137
+ **AI アシスタント自身に検索させたいなら**、スキルパッケージをそのスキルディレクトリに入れます。以後「ちょっと調べて」「事実確認して」と言えば、自分で検索します。
138
+
139
+ **気軽に試したいなら**、npx コマンド一行でその場で使えて、インストール不要です。
140
+
141
+ **アシスタントに常駐させたいなら**、MCP を載せれば 19 の検索ツールがいつでも使えます。ワンコマンド注入も用意しており、Claude Code、Cursor、Windsurf に自動で設定でき、Codex、OpenCode、Cline も対象です。設定を書く前にバックアップを取るので、いつでも戻せます。
142
+
143
+ ```bash
144
+ # 方法 1:ワンコマンドスクリプト(本機で長期利用に推奨)
145
+ curl -fsSL https://raw.githubusercontent.com/taxueseek/argo/main/scripts/install.sh | bash
146
+
147
+ # 方法 2:npx で即時利用(Agent への素早いマウントに推奨)
148
+ npx -y github:taxueseek/argo
149
+
150
+ # 方法 3:git clone(開発 / ソース変更)
151
+ git clone https://github.com/taxueseek/argo.git
152
+ ```
153
+
154
+ インストール後に一つ試してみてください:
155
+
156
+ ```bash
157
+ argo search "python asyncio error handling"
158
+ ```
159
+
160
+ 返ってくるのは、StackOverflow の公式 API からコミュニティスコア順に並べ、採用済みかどうかを示した質問です。SEO ファームの山ではありません。
161
+
162
+ 自分のマシンで今いくつのソースが使えるか見たいときは、コマンド一つで一覧できます:
163
+
164
+ ```bash
165
+ argo search --list-engines
166
+ ```
167
+
168
+ ## 接続形態
169
+
170
+ Argo は四つの接続方式をサポートします。場面に合わせて選んでください:
171
+
172
+ | 形態 | 向き | 説明 |
173
+ |------|------|------|
174
+ | **MCP Server** | Agent への常駐マウント | 19 の検索ツールがいつでも使え、コマンド一つで Claude Code / Cursor / Windsurf / Codex / OpenCode / Cline に注入。設定を書く前に自動バックアップ |
175
+ | **DSH プラグイン** | DeepSeek Harness ユーザー | `dsh plugin add` 一行でインストールでき、検索と取得がネイティブの一等ツールになる。MCP 接続に依存せず、常駐コンテキストのオーバーヘッドもない。保存即有効の 6 分区設定ページ同梱 |
176
+ | **Skill ファイル** | Claude Code / Grok Build / Kimi など | スキルパッケージを Agent のスキルディレクトリに入れる。「ちょっと調べて」「事実確認して」と言えば自分で検索する |
177
+ | **npx 即時利用** | さっと試したい | `npx -y github:taxueseek/argo`。インストール不要で、任意のクライアントに一時的に MCP を載せるのに向く |
178
+
179
+ 四つの形態は土台が同じ Python コードで、CLI と MCP ツールは一対一に対応し、どれを入れても能力は欠けません。
180
+
181
+ ## モデル内蔵検索 / AI 検索 / 横断検索より強い点
182
+
183
+ > 要するに:前三者は **人** が情報を探すためのもの。Argo は **Agent** が検索と検証を一本でやるためのもの。差は UI ではなく成果物——人向けの要約ページやリンク一覧対、Agent が並べ替え・再検証でき、文脈を膨らませない証拠。
184
+
185
+ <p align="center">
186
+ <img src="assets/readme/why-better.svg" width="100%" alt="左:人向けの 3 種の既定検索。右:Agent が吸収できる Argo の証拠 JSON">
187
+ </p>
188
+
189
+ | 次元 | モデル内蔵検索 | AI 検索(要約型) | 横断検索 / 検索エンジン | **Argo** |
190
+ |------|----------------|-------------------|-------------------------|----------|
191
+ | 結果の形 | つなぎ合わせた長文 | 人向け要約ページ | SERP リンク一覧 | **コンパクト JSON:証拠候補 + 信頼度分解** |
192
+ | 垂直の問い(相場 / 化学式) | 汎用ウェブ | 汎用ウェブして要約 | 汎用ウェブ | **垂直ソース直結、答え型** |
193
+ | 証拠の信頼度 | スコアなし | 構造化スコアなし | スコアなし | **selection · absorption · freshness · 合意** |
194
+ | 同じクエリ | 毎回ネットワーク | 毎回ネットワーク | ページキャッシュ | **二層キャッシュ(メモリ + SQLite)、ホットクエリ約 10ms** |
195
+ | コスト制御 | 制御不能 | 1 回が高い | 無料だが手間 | **予算モード、無料優先、Key はすべて任意** |
196
+ | 多言語 | モデル任せ | モデル任せ | エンジン任せ | **言語検出 + エンジン言語パラメータ + 多言語ルーティング** |
197
+
198
+ > 仕組みとして Argo は検索を **証拠パイプライン** として扱う:言語検出 → ドメイン経路 → 多エンジン召回 → RRF 融合 → 証拠速評。Agent が並べ替え、`fetch` で核验し、文脈に収まる材料を返す。
199
+
200
+ ---
201
+
202
+ ## 2026 年、検索で何が変わったか
203
+
204
+ 1. **リンクから証拠へ。** エージェントには並べ替え可能・検証可能・コンテキストに収まる構造化データが必要 — Argo は信頼度内訳付き JSON を返す。
205
+ 2. **コンテキストが第一コスト。** エージェントプロファイルは 1 回約 3.7KB、フィールドとバイト予算はゲートで固定。
206
+ 3. **サイトは AI 向け資料を備え始めた。** llms.txt と `.md` 直出しが主要ドキュメントサイトに普及 — フェッチチェーンはレベル 0 で自動探知、r.jina.ai リーダーもfallback。
207
+ 4. **無料オープン生態系で足りる。** 政府・学術・標準・セキュリティの公開 API とキーレス エンジンで大部分をカバー(235 ソースが無設定)。
208
+ 5. **品質は測定可能。** ランキング金標・融合利得アブレーション・負のルーティング制御。
209
+
210
+ > 以上の 5 項目はすでに v2.9.x 系で全て実装済み:272 ソース / 97 ドメイン / 235 無設定。
211
+
212
+ ---
213
+
214
+ ## 聞き方に合わせたルーティング
215
+
216
+ <p align="center">
217
+ <img src="assets/readme/proof-routes.svg" width="100%" alt="4 つの実ルート:金融・映像・多言語・地理">
218
+ </p>
219
+
220
+ | こう聞くと | だいたいこう動く |
221
+ |------------|------------------|
222
+ | python asyncio error handling | プログラミング QA ドメイン → StackOverflow/StackExchange 公式 API、スコアと採答マーカー付き |
223
+ | AAPL / 米株プレマーケット | 米株ドメイン、A 株と分離 |
224
+ | 肖申克的救赎 主演 / Inception director | 映像ドメイン → IMDb など |
225
+ | 梅西 俱乐部 / 库里 球队 | スポーツ → TheSportsDB など |
226
+ | 埃菲尔铁塔在哪 / where is Eiffel Tower | 地理エンティティ → OpenStreetMap など |
227
+ | NASA founding year / 国务院职能 | 組織 → Wikidata など |
228
+ | 周杰伦 专辑 / Taylor Swift album | メディア → iTunes など |
229
+ | アニメ おすすめ / 한국 영화 추천 | 日/韓を検出 → 言語に合うソース、中国語専用サイトを避ける |
230
+ | 米国 CPI、日本 インフレ率 | マクロ;国別振り分け(自国の一次ソース優先) |
231
+ | log4j CVSS / nodejs 22 end of life | セキュリティ → NVD 公式;ライフサイクル → endoflife.date |
232
+ | attention is all you need | 学術 → arXiv/OpenAlex/CrossRef のメタデータと DOI リンク |
233
+ | 阿司匹林 分子式 | 化学 → PubChem 系 |
234
+ | 台積電バリュエーション議論(深掘り) | サブ問題分割 + 並列ソース、垂直を boost |
235
+
236
+ ---
237
+
238
+ ## 仕組み
239
+
240
+ <p align="center">
241
+ <img src="assets/readme/workflow.svg" width="100%" alt="クエリ → 言語とドメイン → 多エンジン → RRF → 証拠 → 統一 JSON">
242
+ </p>
243
+
244
+ ```
245
+ クエリ
246
+ ├─ 意図の曖昧さ解消(任意)
247
+ ├─ クエリ書き換え(任意;ルーティングは元の意図を見る)
248
+ ├─ 言語検出 + 言語嗜好
249
+ ├─ ルート(ドメイン規則 + TF-IDF + 予算 + 言語補完 + ホットパスキャッシュ)
250
+ ├─ 多エンジン召回(ブレーカ / 負キャッシュ / 並列)
251
+ ├─ 空結果の段階復旧(緩和 → 同族/汎用 → 言語横断;汚染防止)
252
+ ├─ RRF 融合 + 任意リランク
253
+ ├─ 証拠の速評(権威 · 密度 · 鮮度 · 合意)
254
+ └─ 統一 JSON(engine_outcomes / recovery 含む)
255
+ ```
256
+
257
+ ### 証拠スコア(簡易)
258
+
259
+ ```
260
+ selection ≈ ドメイン権威。SERP / リダイレクト殻は大きく減点
261
+ absorption ≈ 数字 / 定義 / 比較 / 開示などの証拠密度
262
+ freshness ≈ 公開時刻(「2015 年以来」のような歴史比較年は無視)
263
+ 総合 ≈ 0.40·selection + 0.35·absorption + 0.15·freshness + 0.10·エンジン分
264
+ ```
265
+
266
+ 結果には `selection`、`absorption`、`credibility_fast`、`evidence_flags` などが付き、エージェントが直接並べ替えできます。
267
+
268
+ ### エージェント利用の規律(推奨)
269
+
270
+ 1. **高影響の問い**(ポジション、安全、真偽):search → 速評を見る → top を `fetch` → 結論
271
+ 2. **数字**:计算方式(定義・範囲)を明示し、矛盾は並列表示、無理に合成しない
272
+ 3. **SERP / リダイレクト**:本文ソースにしない
273
+ 4. **SNS**:世論・物語として扱い、事実の真値にしない
274
+ 5. **ファクトチェック**:ソース / 比較 / 主体など層化したクエリを足す
275
+
276
+ ---
277
+
278
+ ## クイックスタート
279
+
280
+ どれか 1 つで十分です。**インストールの来源は GitHub のみ**(`npx github:taxueseek/argo` または `install.sh`)、現在推奨 **v2.9.8**。**`npm install argo-search` は使わないでください**——npm registry 上のそれは**非公式の古い v1.0.1**(本リポジトリ外、機能不足、更新されない)。本パッケージは `private: true` で npm 誤公開を防ぎます。
281
+
282
+ **ゼロ設定で動く**:API Key なしなら無料エンジン + ローカル `local_*`。Key があるソースは品質が上がりやすく、無いものは自動スキップ。
283
+
284
+ ### 方法一:インストールスクリプト(本機長期利用向け)
285
+
286
+ ```bash
287
+ curl -fsSL https://raw.githubusercontent.com/taxueseek/argo/main/scripts/install.sh | bash
288
+ ```
289
+
290
+ ホームと Skill リンク指定:
291
+
292
+ ```bash
293
+ curl -fsSL https://raw.githubusercontent.com/taxueseek/argo/main/scripts/install.sh \
294
+ | bash -s -- --home "$HOME/.local/share/argo" --link "$HOME/.claude/skills/argo"
295
+ ```
296
+
297
+ 確認:
298
+
299
+ ```bash
300
+ python3 ~/.local/share/argo/scripts/search.py "python asyncio error handling" --json
301
+ python3 ~/.local/share/argo/scripts/search.py --list-engines
302
+ ```
303
+
304
+ ### 方法二:GitHub から MCP(エージェントへ即接続)
305
+
306
+ **Node.js 18+** と **Python 3.9+** が必要。初回:
307
+
308
+ ```bash
309
+ pip3 install pyyaml
310
+ ```
311
+
312
+ ```bash
313
+ npx -y github:taxueseek/argo
314
+ ```
315
+
316
+ クライアント設定例(Claude Code / Cursor / Kimi など):
317
+
318
+ ```json
319
+ {
320
+ "mcpServers": {
321
+ "argo": {
322
+ "command": "npx",
323
+ "args": ["-y", "github:taxueseek/argo"]
324
+ }
325
+ }
326
+ }
327
+ ```
328
+
329
+ より安定・Node 不要:方法一で入れた後、ローカル Python を指す:
330
+
331
+ ```json
332
+ {
333
+ "mcpServers": {
334
+ "argo": {
335
+ "command": "python3",
336
+ "args": ["/path/to/argo/scripts/mcp_server.py"]
337
+ }
338
+ }
339
+ }
340
+ ```
341
+
342
+ Python が特殊なパスのとき:`export ARGO_PYTHON=/path/to/python3`(npx 入口のみ参照)。
343
+
344
+ ### DeepSeek Harness 一行プラグイン
345
+
346
+ DeepSeek Harness では 2 通り:
347
+
348
+ ```bash
349
+ # A:mcp__argo__* ツール 19 個(メインパッケージ bundle、MCP 全量と同じ)
350
+ dsh plugin --profile web add "github:taxueseek/argo"
351
+
352
+ # B:検索ツール + wide_research 並列研究オーケストレーション(サブパッケージ)
353
+ dsh plugin --profile web add "github:taxueseek/argo#main&path:packages/dsh-plugin"
354
+ ```
355
+
356
+ インストール後に `dsh web` を再起動。詳細は `packages/dsh-plugin/`。
357
+
358
+ ### 方法三:Release ソースパッケージ
359
+
360
+ [Releases](https://github.com/taxueseek/argo/releases) から最新の **`argo-x.y.z.tar.gz`** を入手(`x.y.z` は最新リリース番号に読み替え):
361
+
362
+ ```bash
363
+ tar -xzf argo-x.y.z.tar.gz
364
+ cd argo-x.y.z
365
+ pip3 install pyyaml
366
+ python3 scripts/search.py "Python asyncio" --json
367
+ python3 scripts/mcp_server.py
368
+ ```
369
+
370
+ ### 方法四:git clone(開発 / ソース改変)
371
+
372
+ ```bash
373
+ git clone https://github.com/taxueseek/argo.git
374
+ cd argo
375
+ pip3 install pyyaml
376
+ bash scripts/install.sh --link ~/.claude/skills/argo # 任意
377
+ python3 scripts/search.py --list-engines
378
+ ```
379
+
380
+ ### 方法五:Skill ディレクトリへ(シンボリックリンク、単一来源)
381
+
382
+ ```bash
383
+ python3 scripts/link_source.py --to ~/.claude/skills/argo
384
+ python3 scripts/link_source.py --to ~/.agents/skills/argo
385
+
386
+ cp installs.local.yaml.example installs.local.yaml
387
+ python3 scripts/link_source.py
388
+ python3 scripts/link_source.py --check
389
+ ```
390
+
391
+ ### 方法六:Python ライブラリとして
392
+
393
+ ```python
394
+ import sys
395
+ sys.path.insert(0, "/path/to/argo/scripts")
396
+ from search import super_search
397
+
398
+ result = super_search("Python asyncio", n=5, mode="fast")
399
+ for item in result["results"]:
400
+ print(item["title"], item.get("credibility_fast"), item["url"])
401
+ ```
402
+
403
+ ```bash
404
+ # bin/argo を PATH に入れた場合
405
+ argo search "Python asyncio"
406
+ argo research "2026 公募ファンド保有構造"
407
+ argo evidence "検証したい主張"
408
+ ```
409
+
410
+ ---
411
+
412
+ ## 対応プラットフォーム
413
+
414
+ | プラットフォーム | 接続 | 説明 |
415
+ |------------------|------|------|
416
+ | **Claude Code** | MCP / Skill | `npx` または `mcp_server.py`;`link_source.py` 可 |
417
+ | **Kimi / Grok Build** | MCP Server | 同上 |
418
+ | **Cursor / Cline / Continue** | MCP | MCP 対応 IDE プラグイン |
419
+ | **CLI** | `search.py` / `bin/argo` | スクリプト、cron、手動調査 |
420
+ | **Python プロジェクト** | `from search import super_search` | ライブラリ呼び出し |
421
+
422
+ ### インストール後チェック
423
+
424
+ ```bash
425
+ python3 --version # 3.9+ が必要
426
+ python3 -c "import yaml; print('PyYAML OK')"
427
+ python3 -m pytest tests/test_unit.py -q # 任意
428
+ python3 scripts/search.py --list-engines
429
+ ```
430
+
431
+ ---
432
+
433
+ ## できること
434
+
435
+ | 機能 | 説明 | 入口 |
436
+ |------|------|------|
437
+ | 統合検索 | ルート → 召回 → 融合 → 速評 | `search.py` / `argo_search` |
438
+ | ローカルファイル検索 | 本機のコード/ノート/記憶(非ネット) | `argo_local_search` |
439
+ | ローカルテキストプレビュー | ホワイトリスト内プレビュー(fail-closed) | `argo_local_read` |
440
+ | 再計算 | 制限付きサブプロセスで数値再計算(既定拒否) | `argo_recompute` |
441
+ | 深掘り調査 | サブ問題、多ソース、ギャップ提示 | `research.py` / `argo_research` |
442
+ | 信頼度評価 | 権威 / 密度 / 鮮度 / 交差検証 | `evidence.py` / `argo_evidence` |
443
+ | 意図の曖昧さ解消 | 多義語、ブランド衝突、戦略提案 | `clarify.py` / `argo_clarify` |
444
+ | ページ取得 | HTTP 優先、必要ならブラウザ | `argo_fetch`(`mode=extract` で構造化) |
445
+ | スクショ / PDF | 画面キャプチャ、PDF 構造抽出 | `argo_screenshot` / `argo_pdf` |
446
+ | サイトクロール | 一覧ページの一括取得 | `argo_crawl` |
447
+ | クエリ演算子 | `site:` / `-site:` / `-語` / `-"句"` / `"句"` / `lang:` / `after:` / `before:` をルーティングと検索の両側から剥離(詳細は references/usage.md) | クエリに直接記述 |
448
+ | 信頼シグナル | `authority_level` 離散等級(0-4、≥3 で極めて権威)+ `summary` Agent 档要約(検証後に逆填み) | 結果フィールド、`--fields agent` で表示 |
449
+ | SNS / 世論 | 微博 / 小红书 / B 站 / Reddit / X など | `argo_social_search` |
450
+ | DSH ネイティブツール | DSH プラグインとして入れると `argo_search` / `argo_fetch` などが宿主の一等ツールになり、CLI 単発で実行・常駐トークン開銷ゼロ | `dsh plugin add` 後に直接呼ぶ |
451
+ | DSH web seam | 宿主内蔵の `web_search` / `web_fetch` が argo のエンジンチェーンと取得チェーンへルーティング(HTTP 優先、Cloudflare / JS 描画では自動でブラウザへ昇格) | プラグインが既定で登録、profile で `searchProvider` / `fetchProvider` を pin |
452
+ | DSH 設定ページ | 接入 / ツール / 引擎 / 密钥 / 研究 / 高级 の 6 分区、保存即有効。キーは宿主の凭证库へ、平文は非表示 | 設定ポップアップ `Cmd+,` → 左メニュー「Argo」 |
453
+
454
+ ### 予算モード
455
+
456
+ | モード | 向き | 振る舞い |
457
+ |--------|------|----------|
458
+ | `fast` | 簡単な問い、速度優先 | 無料エンジン優先、有料リランク省略 |
459
+ | `auto` | 日常デフォルト | コストと品質の折衷 |
460
+ | `deep` | 調査・総説 | 品質優先、エンジン増可 |
461
+ | `budget` | 枠が厳しい | クォータ制御、使い切ると劣化 |
462
+
463
+ ### 現時点の能力概要(v2.9.8)
464
+
465
+ Argo のやることを一行で言うと、質問を領域と言語で適切なソースに振り分け、返ってきた結果を信頼度で並べ、エージェントには並べ替えられ検証できる素材を渡す。検索・取得・証拠確認・ローカルファイル検索は同じパイプラインを流れ、19 個の MCP ツールは CLI コマンドと一対一で対応するので、どの形态で入れても能力は欠けない。単独コマンドもいくつかある:argo tweet は X 投稿をまとめ、argo auth はログイン状态を管理し、argo job は採用情報を集約する。全ソースの費用・键・状态は docs/ENGINE_CATALOG.md に清单されている:272 ソース、235 無設定、97 ドメイン。
466
+
467
+ DSH プラグインとして入れると、これらの能力は宿主のネイティブツールになる。高頻度の検索と取得は既定でオン、長尾フォレンジックは設定ページで必要に応じてチェック、argo 本体の 28 個の挙動スイッチ(キャッシュ、再順位、重複除去、ガード、プロキシ、TTL など)は環境変数からパネルへ移った。キーは宿主の凭证库に入り、平文は表示されず、変更は保存即有効。
468
+
469
+ 最近数版が、それぞれ一类の問題を直した。
470
+
471
+ v2.9.8 はルーティング精度とフィードバック閉環の版です。issue #18 の三つ——「latest」がリアルタイムニュースに誤判定される、people_daily が一致しないときに既定 feed を返す、local_bing が「2026」だけに一致する——をすべて再現して修正しました。同じ観点で実クエリを再生し、さらに 16 クラスの誤発火を絞り込みました。ブランド名の「雪」、製品名の「火山引擎」、UI トラブルシュートの「アイコン」、工商・金融フィールドの「コード」、コード文脈の「為替レート」などです。SERP カバレッジゲートと CJK クロス検証も入れ、「結果が返った=関連がある」とは限らないようにしました。再現と特定に協力してくれた @wpp666 に感謝します。
472
+
473
+ v2.9.7 が直したのは三つの古い毛病。DSH 宿主内の AI が URL を読むとき、宿主自身の取集を使っていたため、短链ジャンプや JS チャレンジページは构造的に失败しがちで、argo の取得链は出番がなかった;この版で宿主の読込が argo を流れるようになり、そうしたページは失败から成功に変わり、普通のページは変わらない。路由候选池には 18 个の明示専用エンジンが混在し、自动选択されれば唯一の有料エンジンが密かに课金される风险があった;今は候选池になく、使うには明示が必要。エンジンが成功するたびに熔断器がファイル锁でディスクを书き换えていた;健全状态ではファイル开销がゼロになり、复数エンジンの记账も一件のトランザクションにまとまる。License は MIT から Apache-2.0 に変わり、商用での利用は安心感が増した。
474
+
475
+ その後 DSH プラグインにもう一層加わった。設定ページは五分区から六分区に増え、新しい「引擎」分区が argo 本体の挙動スイッチをパネルに収める(従来は環境変数のみ)。キー页では各キーが凭证库、起動環境、`.env` のどれ由来かが見えるようになり、ツールチェック・タイムアウト・並行数・研究上限はすべて保存即有効になった。キャンセルも接続確立段階まで到達し、AI が途中で止めると、起動中の argo サブプロセスはタイムアウトを待たずに即座に殺される。
476
+
477
+ v2.9.6 が担当したのはクエリ演算子と传输层。「site:github.com 某某」式のクエリは、演算子が普通の语として扱われたり、解析するだけで过滤されなかったりした;契约层ができて、路由とキャッシュは剥いたクエリだけを认识し、site: は真の后置フィルタとして実行されキャッシュキーにも入るので、二回の検索が混ざらない。传输层では、POST のたびに TLS ハンドシェイク(320〜561 ms)を再支払いしていた;接続プール化で、常驻の MCP プロセスは毎回の质问でそれを省ける。この版で公式 DeepSeek 検索も入り、従量课金で日常の combo には入らない。
478
+
479
+ v2.9.5 で加わったのは为替と重複排除の浄化。「人民币/美元 汇率」と寻ねると、宏观ドメインを回って百科词条に着地し、1.4 秒で答えなしだった;为替専用域ができて 675 msで即期レートと毎日のニュースを返す。重複排除に站后缀归一と fuzzy 复核が加わり、标题に区分式のある公式ドキュメントが后方に压されることがなくなった。
480
+
481
+ v2.9.4 が直したのは明示エンジン指定の経路。--engine X を指定するとキャッシュ TTL が一刀切だった;域判定が入って TTL は域に従い、予备エンジンがなければ同エンジンの空跑もしない。
482
+
483
+ 版ごとの详细は「最近更新」に、各版のリリースノートは docs/ にある。
484
+ ---
485
+
486
+ ## エンジンとルーティング
487
+
488
+ 設定上は **272** ソース(うち **235** はキー不要)、**97** ドメイン(`config.yaml` と `--list-engines` が基準)。
489
+
490
+ ### 直結・垂直(抜粋)
491
+
492
+ | エンジン | 用途 | コスト傾向 |
493
+ |----------|------|------------|
494
+ | anysearch / duckduckgo | 一般 / 技術 | 無料 |
495
+ | sina_quote / tencent_quote / eastmoney | A 株 / 資金 | 無料 |
496
+ | finviz / seeking_alpha | 米株・海外金融 | 設定次第 |
497
+ | imdb / itunes / thesportsdb | 映像 / 音楽 / スポーツ | 主に無料 |
498
+ | local_openstreetmap / wikidata / wikipedia | 地理 / 組織 / 百科 | 無料 |
499
+ | arxiv / semantic_scholar / openalex | 学術 | 主に無料 |
500
+ | pubchem / gbif / rfc_editor | 化学 / 種 / 標準 | 無料 |
501
+ | github / stackoverflow / pypi / npm | コードとパッケージ | 設定次第 |
502
+ | byted / bocha / metaso / octen / yuanbao | 中国語ウェブ / AI 検索 | API / 低コスト |
503
+ | hkex / shfe / cfets / defillama / gleif | 香港公告 / 上期所 / 人民元中間価格 / DeFi / 法人識別子 | 無料 |
504
+ | zhihu / wechat_sogou | 中国語意見 / 公式アカウント | API / 無料 |
505
+ | tavily / felo / exa | 国際 / 意味検索 | 有料または枠 |
506
+ | twitter / reddit / xiaohongshu / bilibili / weibo | SNS UGC | 無料(一部ログイン) |
507
+
508
+ ### ローカルゼロコスト層(`local_*`)
509
+
510
+ 独立した SearXNG は不要。主経路はプロセス内 HTML / RSS / JSON 解析(`local_bing`、`local_sogou`、`local_google`、`local_arxiv` など)。**多言語クエリ**ではエンジンの言語パラメータ(例:Bing `setlang`)を動的に書き換え、RRF 融合に参加します。
511
+
512
+ ---
513
+
514
+ ## 使用例
515
+
516
+ ### 金融
517
+
518
+ ```bash
519
+ python3 scripts/search.py "python asyncio error handling" --explain
520
+ # 典型:stock_query → 相場スナップショット
521
+ ```
522
+
523
+ ### 学術
524
+
525
+ ```bash
526
+ python3 scripts/search.py "transformer attention mechanism paper" --json
527
+ # domain は academic になりやすく、arxiv などを含む
528
+ ```
529
+
530
+ ### 研究と検証
531
+
532
+ ```bash
533
+ python3 scripts/research.py "2026 公募ファンド第2四半期 保有構造" --depth deep --json
534
+
535
+ python3 scripts/search.py "同一クエリ" --json | \
536
+ python3 scripts/evidence.py "同一クエリ" --stdin --json
537
+ ```
538
+
539
+ ### MCP ツール一覧(12)
540
+
541
+ | ツール | 用途 |
542
+ |--------|------|
543
+ | `argo_search` | 統合検索 |
544
+ | `argo_local_search` | ローカルファイル(非ネット) |
545
+ | `argo_local_read` | ホワイトリスト内テキストプレビュー(fail-closed) |
546
+ | `argo_recompute` | 制限付きサブプロセス再計算(既定拒否、要認可) |
547
+ | `argo_research` | 深掘り研究(social-sentiment モード含む) |
548
+ | `argo_evidence` | 信頼度評価 |
549
+ | `argo_clarify` | 意図の曖昧さ解消 |
550
+ | `argo_fetch` | スマート取得(`mode=extract` で構造化) |
551
+ | `argo_crawl` | サイトクロール |
552
+ | `argo_screenshot` | 画面キャプチャ |
553
+ | `argo_pdf` | PDF 抽出 |
554
+ | `argo_social_search` | 多プラットフォーム SNS(`mode=sentiment`) |
555
+
556
+ ---
557
+
558
+ ## インストールと設定
559
+
560
+ ### 環境要件
561
+
562
+ | 項目 | 要件 |
563
+ |------|------|
564
+ | Python | 3.9+(CLI と MCP コア) |
565
+ | 依存 | `pip install pyyaml`(唯一のハード依存) |
566
+ | Node.js | **`npx` 入口のみ** 18+ |
567
+ | SearXNG | 不要(内蔵ローカルエンジン) |
568
+
569
+ ### API Key(すべて任意)
570
+
571
+ 未設定なら該当エンジンをスキップし、無料がバックストップ。**環境変数を使い**、本物の Key をリポジトリや Issue に書かないでください。
572
+
573
+ ```bash
574
+ # 推奨(品質向上)
575
+ export TAVILY_API_KEY="your_key"
576
+ export BOCHA_API_KEY="your_key"
577
+ export METASO_API_KEY="your_key"
578
+ export ZHIHU_ACCESS_SECRET="your_key"
579
+
580
+ # 任意
581
+ export BRAVE_API_KEY="your_key"
582
+ export FELO_API_KEY="your_key"
583
+ export GITHUB_TOKEN="your_key"
584
+ export WEB_SEARCH_API_KEY="your_key"
585
+ export ANYSEARCH_API_KEY="your_key"
586
+ export OCTEN_API_KEY="your_key"
587
+ export ARGO_KEENABLE_API_KEY="your_key" # 任意;Keenable 無料体験
588
+ ```
589
+
590
+ `config.yaml` には `{ENV_NAME}` プレースホルダのみ。平文の秘密はコミットしません。
591
+
592
+ ### キャッシュ
593
+
594
+ 既定 SQLite は `config.yaml` の `cache.db_path`(通常 `~/.cache/unified-search/cache.db`)。
595
+
596
+ | 種別 | おおよその TTL |
597
+ |------|----------------|
598
+ | 金融 | 約 5 分 |
599
+ | ニュース / リアルタイム | 約 10–15 分 |
600
+ | 一般 | 約 1 時間 |
601
+ | 研究 / 常緑 | 約 2–24 時間 |
602
+ | 空結果 | ごく短い(失敗を固定しない) |
603
+
604
+ ### FAQ
605
+
606
+ **API Key なしで使える?**
607
+ 使えます。ローカル無料エンジンと無料 API が多く、未設定時は自動で無料経路。
608
+
609
+ **インストールスクリプトと npx の違いは?**
610
+ スクリプトは本機固定・設定変更・Skill 接続向き。npx は MCP を素早く載せる向き。コアは同じ Python。
611
+
612
+ **エンジン確認は?**
613
+ `python3 scripts/search.py --list-engines`、または `--explain`。
614
+
615
+ **コードが複数コピーされる?**
616
+ しません。`link_source.py` で単一来源 + シンボリックリンクを推奨。rsync 複製はしない。
617
+
618
+ ---
619
+
620
+ ## CLI よく使う引数
621
+
622
+ ```
623
+ python3 scripts/search.py [options] クエリ
624
+
625
+ --engine, -e エンジン、既定 auto
626
+ --max-results, -n 件数、既定 5
627
+ --depth, -d fast | balanced | deep
628
+ --mode fast | auto | deep | budget
629
+ --no-cache キャッシュを飛ばす
630
+ --explain ルーティング説明を表示
631
+ --json JSON 出力
632
+ --timeout, -t タイムアウト秒
633
+ --list-engines エンジン一覧
634
+ ```
635
+
636
+ ---
637
+
638
+ ## 設計の取捨
639
+
640
+ 1. **エージェントが吸収できることを先に、リンク数は後。**
641
+ 2. **無料とローカルを先に、有料は任意の上乗せ。**
642
+ 3. **失敗は観測可能に**:空結果 / タイムアウト / ブレーカを分け、黙って飲み込まない。
643
+ 4. **設定駆動でエンジン拡張**、`config.yaml` が単一来源。
644
+ 5. **単一来源インストール**:リンクし、rsync しない。
645
+ 6. **SNS を真理庫にしない**;拡張と世論向きで、単独の真値には不向き。
646
+
647
+ ---
648
+
649
+ ## 向いている用途
650
+
651
+ - Claude Code / Grok Build / Codex / Kimi など **エージェントの検索バックエンド**
652
+ - **多言語・多領域**の日常 Q&A:中英日韓 + 金融 / 映像 / スポーツ / 学術 / コード
653
+ - **再現可能・キャッシュ可能**なスクリプトとパイプライン
654
+ - ファクトチェック、公開金融情報、エンティティの **多ソース対照**
655
+
656
+ 単独で向きにくいもの:プラットフォーム内の高度なエンゲージメント順位付け、長期運用の最大召回アグリゲータ(外付け SearXNG 主経路は内蔵ローカルエンジンに置換済み)。
657
+
658
+ ---
659
+
660
+ ## ディレクトリ(簡易)
661
+
662
+ ```
663
+ argo/
664
+ ├── README.md # 中国語(既定)
665
+ ├── README.en.md # English
666
+ ├── README.ja.md # 日本語
667
+ ├── README.ko.md # 한국어
668
+ ├── README.es.md # Español
669
+ ├── SKILL.md
670
+ ├── package.json # npx 入口
671
+ ├── bin/argo.js # Node MCP 起動
672
+ ├── bin/argo # Python CLI
673
+ ├── config.yaml # エンジンとドメイン(来源)
674
+ ├── assets/readme/ # README ビジュアル
675
+ ├── backends/
676
+ ├── mcp/ # 多クライアント MCP 注入の来源(clients.yaml)
677
+ ├── scripts/ # search / research / mcp / install …
678
+ ├── sub-skills/local-search/
679
+ ├── sub-skills/ego-search/ # ログイン態の専門検索(既定オフ)
680
+ ├── tests/
681
+ └── docs/
682
+ ```
683
+
684
+ ---
685
+
686
+ ## 最近の更新
687
+
688
+ 直近 3 バージョンのみを載せています。完全な履歴は[更新履歴](#更新履歴)、各版の詳細は [Releases](https://github.com/taxueseek/argo/releases) を参照してください。
689
+
690
+ ### 次期バージョン:Tencent Yuanbao 検索 + キー不要ソース 3 件 + 構造化された失敗リスト
691
+
692
+ - **Yuanbao 検索を追加**:中国語の一次情報・公式系ソースで、bocha / byted の「ポータル+セルフメディア」を補完します。中国語汎用ドメインの 2 番目に置き、権威ソースのヘッジとします。キーは `ARGO_YUANBAO_API_KEY`
693
+ - **キー不要で使えるソースを 3 件追加**:`tavily_free`、`keenable_free`、`exa` の匿名フォールバック。キーを一切設定しなくても使えます
694
+ - **失敗の内容に応じて対処できる**:失敗はソースと種別ごとに「再試行 / ソース切替 / キー設定」と助言を示し、`meta.uncertainty` の信頼度も付きます
695
+ - **ローカル設定オーバーレイ `config.local.yaml`**:このマシン固有の調整が、各版に同梱される公開設定に書き込まれなくなります
696
+ - **DSH 設定ページに「エンジン」セクションを追加**:argo 本体の 28 個の挙動スイッチを環境変数からパネルへ移しました
697
+
698
+ ### v2.9.7:アーキテクチャの収束 + ホストのページ取得を argo へ + License を Apache-2.0 に
699
+
700
+ - **License 変更**:MIT → Apache License 2.0。特許許諾を明示したもので、使い勝手は変わりません
701
+ - **ホストが取得できなかったページが取れるように**:短縮リンクの転送、プロトコルの引き上げ、リダイレクト用の中間ページ、Cloudflare / JS チャレンジのページを argo の取得チェーンが担当します(HTTP 優先、拒まれたらブラウザへ自動で昇格)。既定で有効、`fetchProviderEnabled` で切れます
702
+ - **auto モードが有料エンジンを誤って呼ばなくなる**:明示指定専用の 18 エンジンをルーティング候補プールから外し、`--engine` で指名したときだけ使います
703
+ - **新しいキーなら次のホップで復帰**:クォータを使い切ったエンジンが復帰を待たなくなり、ルーティングキャッシュも再計算されます
704
+ - **crawl / research / MCP から JS を実行しても落ちない**
705
+
706
+ ### v2.9.6:DeepSeek Search 対応 + クエリ演算子 + 同じ POST の二重課金を解消
707
+
708
+ - **新しい `deepseek_search` エンジン**:445-510ms で、権威階層・rerank_score・公開時刻の 3 項目すべてをカバーするのは 3 エンジン中これだけ。`--since/--until` が本当に効きます。従量課金で `DEEPSEEK_API_KEY` が必須、キーがなければ自動でスキップします
709
+ - **クエリ演算子を 1 つの契約に集約**:`site:` / `-site:` / `-語` / `lang:` / `after:` / `before:` を統一的に解釈し、`site:` は実際の絞り込みとして動作します
710
+ - **同じ POST に二度払いしない**:接続プールの再利用で、同じ接続の 2 回目のリクエストが 320ms(anysearch)/ 561ms(octen)節約されます
711
+ - **リンク解決と並び順の 2 件を修正**:同一エンジンの結果が同点で出力が平坦になっていた問題と、Bing のリダイレクト用中間ページを復元できず直近 7 日で 40.2% のクエリが結果を得られなかった問題
712
+ - **ルーティング判断にスナップショットゲートを追加**:経路の反転が黙って起きず、diff 可能な golden になります
713
+
714
+ ---
715
+
716
+ ## 更新履歴
717
+
718
+ | 版 | 内容 |
719
+ |----|------|
720
+ | **v2.9.8** | **ルーティング精度監査 + issue #18/#19 修正 + テスト状態の隔離**:実クエリ再生で 16 クラスの誤発火(ブランド名・製品名・フィールド名・ASCII 部分文字列)を絞り込み、SERP カバレッジゲートと CJK クロス検証を追加。nightly の空ログ、people_daily の既定 feed、キャッシュ命中ガードを修正し、adaptive/breaker 状態をテストごとに隔離。再現と特定に協力してくれた @wpp666 に感謝。詳細は [リリースノート](docs/RELEASE_NOTES_v2.9.8.md)。 |
721
+ | **v2.9.7** | **アーキテクチャ収束 + DSH web_fetch 連携 + License を Apache-2.0 へ**:宿主の web_fetch を argo の取得チェーンに接続し、JS チャレンジページとクロスオリジンのリダイレクトが失敗から成功に;明示指定専用の 18 エンジンをルーティング候補プールから外し、auto モードの有料エンジン誤課金を遮断。 |
722
+ | **v2.9.6** | **DeepSeek Search 対応 + クエリ演算子契約 + 伝送層の二重課金解消**:新エンジン `deepseek_search` が既定で有効(445-510ms、権威階層・rerank_score・公開時刻を唯一すべてカバー);クエリ演算子を 1 つの契約層に集約し、`site:` が実際の絞り込みとして動作。 |
723
+ | **v2.9.5** | **為替専用ドメイン + 重複排除の二層化 + 順位判定の誤り修正**:新ドメイン `fx_query` がレートと仲値を直接返す(従来は百科事典の項目に流れていた);重複排除にサイト接尾辞の正規化とあいまい一致を追加。 |
724
+ | **v2.9.4** | **明示エンジンのドメイン帰属 + 回復チェーンの空振り停止 + ゲート同期**:`--engine X` にドメイン判定を補い、キャッシュ TTL の一般化を修正;代替のない単一エンジンでは回復チェーンを空振りさせない。 |
725
+ | **v2.9.3** | **X 投稿の完全パッケージ + ブラウザログイン態のレーン + ローカルチェーンの質と速度**:`argo tweet`(本文・スレッド・引用を一括梱包)と `argo auth`(Cookie は Chrome の暗号化ストレージのみ)を追加;ローカルチェーンがリダイレクト用中間ページをセッションなしで解決。 |
726
+ | **v2.9.2** | **DSH 0.2.1-alpha.1 適合検証 + ルーティング/ガードの修正一括 + js-run サブスキル**:DSH の三形態が最新版で動くことを実機検証し、`argo mcp inject` が 7 番目のホストまで対応;ブラウザなしでウェブ JS を走らせる js-run サブスキルを追加。 |
727
+ | **v2.9.1** | **コンテンツ品質の最適化 + コンテンツファーム対策 + 最新版への適合**:低品質な大量生成コンテンツの識別と除外を強化;ローカル検索に自身のインストールツリーのガードを追加し、結果が自身のソースで汚染されないように。 |
728
+ | **v2.9.0** | **ソース最適化 + プラグインと CLI の対等化 + 少数言語の拡充**:ソース 237→253(キー不要 198→219)で少数言語ニュース源 14 件と CORE 全文源を追加し、百度と捜狗を復活;インポートチェーン −79%、再ランキング 33ms→1.5ms;`argo stats` のローカル使用ログを追加。詳細は [リリースノート](docs/RELEASE_NOTES_v2.9.0.md) |
729
+ | **v2.8.9** | **出力のスリム化 + 検索の高速化と網羅性 + 海外メディアとファクトチェック源 5 件**:既定出力 15.5KB→5.2KB(−66%)で同じ結果を三度書かなくなり;リコール +35%、本文構造の再現 0/6→6/6;キー不要の新源 The Guardian / France 24 / DW / FactCheck / Full Fact を追加。詳細は [リリースノート](docs/RELEASE_NOTES_v2.8.9.md) |
730
+ | **v2.8.8** | **実ユーザー報告の修正(#12 キー別名の無言失敗、#13 プロキシ非対応の取得)+ 全面高速化 + ソース 218 → 235**:出口ディスパッチを統一して `ARGO_PROXY` / ドメイン別ルール / `NO_PROXY` を尊重;コマンド冷起動 2.1s→0.55s;`argo answer` の直答と `argo watch` の Web 観測、キー不要源 14 件を追加。詳細は [リリースノート](docs/RELEASE_NOTES_v2.8.8.md) |
731
+ | **v2.8.7** | **218 ソース / 89 ドメイン + 本文直出 3 チャネル + ルーティング発火の規律**:バッチ 7/8/9 で累計 50 の新ソースを追加;取得チェーン第 0 段に llms.txt と `.md` の直出プローブ;中国マクロ照会では国家統計局を前置。詳細は [リリースノート](docs/RELEASE_NOTES_v2.8.7.md) |
732
+ | **v2.8.6** | **hedged 競速 + 知乎の三源分担 + 宣言的な言語ディスパッチ + 学術検索プロトコル**:先頭エンジンに猶予窓を設けた競速で、速いエンジンは呼び出し 1 回で済み;知乎の全体検索を接続し、サブクエリの言語・学術ディスパッチを追加。詳細は [リリースノート](docs/RELEASE_NOTES_v2.8.6.md) |
733
+ | **v2.8.5** | **DSH プラグインツールのネイティブ化 + MCP 既定オフ + Windows 互換 + クォータ自己修復**:`argo_search` / `argo_fetch` がネイティブ一等ツールとして既定で使えるように;Windows 全対応(一時パス・GBK・`install.ps1`);クォータ枯渇を自動検出して代替源に切り替え、期間終了で自己修復。詳細は [リリースノート](docs/RELEASE_NOTES_v2.8.5.md) |
734
+ | **v2.8.4** | **ローカルデータ融合 + マルチクライアント MCP 注入 + 構造化検索の強化**:深い調査が手元の一次データを取り込めるように(`file_inputs` + `recompute`);`argo mcp inject` の 1 コマンドで 6 クライアントに注入;クエリ正規化と複雑さゲートを追加。詳細は [リリースノート](docs/RELEASE_NOTES_v2.8.4.md) |
735
+ | **v2.8.3** | **多言語ルーティング修正 + プロセス内 anysearch + weighted RRF**:ja/ko は対象言語を返し、独仏西伊は anysearch 経由;weakest-link で弱い源を降権。詳細は [リリースノート](docs/RELEASE_NOTES_v2.8.3.md) |
736
+ | **v2.8.2** | **Windows 全対応 + 証拠セマンティクスの統一**:npm の `os` 制限を撤去し、GBK クラッシュを UTF-8 で根本対処;メインパッケージに `dsh.bundle` を追加;`wide_research` に品質ゲート。詳細は [リリースノート](docs/RELEASE_NOTES_v2.8.2.md) |
737
+ | **v2.8.0** | **証拠の一貫した流れ + 求人検索 v3 + 天気の二源化**:`fetch_required` と `--verify` で検証済みリンクを記憶;`argo job` の求人検索 v3;wttr.in + Open-Meteo の二源。詳細は [リリースノート](docs/RELEASE_NOTES_v2.8.0.md) |
738
+ | **v2.7.3** | **今回の修正 + エンジン活性化**:エンジン層に HTTP クライアント(UA ローテーション / 再試行 / リダイレクト追従)を導入し、arxiv が 5s タイムアウトから 2s 以内に 10 件;TF-IDF の意味注入で 25 の垂直エンジンを活性化;70 ドメインの TTL を整備。詳細は [リリースノート](docs/RELEASE_NOTES_v2.7.3.md) |
739
+ | **v2.7.2** | **ログイン態の専門検索**:ego-search サブスキルを追加(既定オフ、有効化方法は上部の節を参照);日韓のクエリに中国語エンジンが混ざらないように。詳細は [リリースノート](docs/RELEASE_NOTES_v2.7.2.md) |
740
+ | **v2.7.1** | **セキュリティ強化 + ルーティング修正**:SSRF 対策(URL 許可リスト + IP 帯チェック);ルーティング健全性の意味のずれを根本修正。詳細は [リリースノート](docs/RELEASE_NOTES_v2.7.1.md) |
741
+ | **v2.7.0** | **垂直構造化モーダルカード**:内蔵の `bocha` / `bocha_ai` ネイティブエンジン、`modal_card` ドメインが列車チケット・ガソリン価格・貴金属・万年カレンダー・星座などのリアルタイムカードを統一認識。詳細は [リリースノート](docs/RELEASE_NOTES_v2.7.0.md) |
742
+ | **v2.6.2** | 独立した改良ラインを統合:ネットワーク環境認識 / 加重 RRF と意味キャッシュ / 適応型エンジン無効化 / コンテンツ安全とクエリ変体 / 三大垂直エンジン;v2.6.1 のルーティング修正を含む。詳細は [リリースノート](docs/RELEASE_NOTES_v2.6.2.md) |
743
+ | **v2.6.1** | v2.6.0 修正版:ルーティングの巻き込み修正(`capital of` が fact_check を奪わない);バージョン同期。詳細は [リリースノート](docs/RELEASE_NOTES_v2.6.1.md) |
744
+ | **v2.6.0** | **多言語検索**(検出 / エンジンパラメータ / 言語横断フォールバック);映像・スポーツ・地理・組織・メディアの垂直を補完;約 120+ 源。詳細は [リリースノート](docs/RELEASE_NOTES_v2.6.0.md) |
745
+ | **v2.5.1** | 金融/マクロ/化学の答え源を厚く;エンジン階層 + combo 予算;[v2.5.1](docs/RELEASE_NOTES_v2.5.1.md) |
746
+ | **v2.5.0** | インストールスクリプト + npx;書き換えとルーティング分離;ホットパスキャッシュ;MCP コンパクト |
747
+ | **v2.4.0** | 低分ルートのフォールバックと SNS 誤吸フィルタ;キャッシュ depth / ソフトヒット;ブレーカと負キャッシュ;`engine_outcomes` |
748
+ | **v2.2–v2.3** | 証拠二段階、中国語ソース表、content_signals、fetch スタック、エンジン拡充 |
749
+ | **v2.1** | SNS エンジン層(多プラットフォーム UGC) |
750
+ | **v1.x** | 名称を Argo に統一、多エンジンルーティングと二層キャッシュ |
751
+
752
+ ---
753
+
754
+ ## 貢献
755
+
756
+ Issue と Pull Request を歓迎します。ルーティングや証拠ロジックを変えるときはテストを足してください:
757
+
758
+ ```bash
759
+ python3 -m pytest tests/test_unit.py tests/test_multilingual.py -q
760
+ python3 scripts/regression_p0p1.py --offline
761
+ python3 scripts/matrix_search_eval.py --offline
762
+ python3 scripts/ab_eval_p0p1.py # 任意、オンライン含む
763
+ ```
764
+
765
+ コミット前:本物の API Key、本機絶対パス、cookie などを含めないこと。本機 Skill パスは `installs.local.yaml`(gitignore 済み)。
766
+
767
+ ## License
768
+
769
+ Apache License 2.0 © 2026 [taxueseek](https://github.com/taxueseek)
770
+
771
+ <p align="center">
772
+ <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>
773
+ </p>
774
+
775
+ ---
776
+
777
+ > 良い検索は、もっと多く見せることではない。自信を持って結論できること——そしてまだ結論してはいけないときを知ることだ。