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.
- package/LICENSE +201 -21
- package/README.en.md +735 -0
- package/README.es.md +777 -0
- package/README.ja.md +777 -0
- package/README.ko.md +777 -0
- package/README.md +778 -320
- package/SKILL.md +135 -0
- package/assets/readme/hero.svg +121 -0
- package/assets/readme/made-with-beautify.svg +10 -0
- package/assets/readme/proof-routes.svg +73 -0
- package/assets/readme/why-better.svg +104 -0
- package/assets/readme/workflow.svg +83 -0
- package/backends/domain_profiles.json +2356 -96
- package/backends/engine_registry.yaml +3428 -503
- package/backends/query_synonyms_cn.json +35 -0
- package/backends/quota_profiles.json +2488 -160
- package/backends/source_types_cn.json +109 -0
- package/backends/text_lexicon.json +44 -0
- package/bin/argo +772 -0
- package/bin/argo.js +102 -39
- package/config.yaml +5139 -367
- package/cordis.patch.yml +21 -0
- package/data/countries.json +40 -0
- package/data/lang_matrix/lang_capability.json +842 -0
- package/data/lang_matrix/matrix_2026-09-10.json +11921 -0
- package/data/regions_cn.json +1 -0
- package/docs/ADDING_NEW_ENGINE.md +184 -0
- package/docs/ARGO_INTRO.md +124 -0
- package/docs/DATA_SOURCE_GAPS.md +81 -0
- package/docs/DESIGN_LOCAL_DATA_FUSION.md +90 -0
- package/docs/ENGINE_CATALOG.md +575 -0
- package/docs/MCP_SETUP.md +108 -0
- package/docs/PLATFORM_PATHS.md +111 -0
- package/docs/RELEASE_NOTES_v2.8.0.md +71 -0
- package/docs/RELEASE_NOTES_v2.8.2.md +63 -0
- package/docs/RELEASE_NOTES_v2.8.3.md +55 -0
- package/docs/RELEASE_NOTES_v2.8.4.md +79 -0
- package/docs/RELEASE_NOTES_v2.8.5.md +102 -0
- package/docs/RELEASE_NOTES_v2.8.6.md +66 -0
- package/docs/RELEASE_NOTES_v2.8.7.md +65 -0
- package/docs/RELEASE_NOTES_v2.8.8.md +67 -0
- package/docs/RELEASE_NOTES_v2.8.9.md +67 -0
- package/docs/RELEASE_NOTES_v2.9.0.md +64 -0
- package/docs/RELEASE_NOTES_v2.9.8.md +73 -0
- package/docs/SEARCH_ARCHIVE.md +115 -0
- package/docs/assets/architecture.svg +104 -0
- package/docs/assets/hero.svg +98 -0
- package/docs/engines/bangumi.md +27 -0
- package/docs/engines/biorxiv.md +27 -0
- package/docs/engines/clawhub.md +27 -0
- package/docs/engines/crt_sh.md +27 -0
- package/docs/engines/datacite.md +27 -0
- package/docs/engines/deps_dev.md +27 -0
- package/docs/engines/douban_movie.md +27 -0
- package/docs/engines/endoflife.md +27 -0
- package/docs/engines/flk_law.md +27 -0
- package/docs/engines/fxtwitter.md +27 -0
- package/docs/engines/google_news.md +27 -0
- package/docs/engines/gov_regulations.md +27 -0
- package/docs/engines/guqian.md +27 -0
- package/docs/engines/hackernews.md +27 -0
- package/docs/engines/iplant.md +27 -0
- package/docs/engines/keenable.md +27 -0
- package/docs/engines/met_museum.md +27 -0
- package/docs/engines/nasa_images.md +27 -0
- package/docs/engines/netease_music.md +27 -0
- package/docs/engines/npm.md +27 -0
- package/docs/engines/nvd.md +27 -0
- package/docs/engines/openreview.md +27 -0
- package/docs/engines/openstd.md +27 -0
- package/docs/engines/parallel_free.md +27 -0
- package/docs/engines/people_daily.md +27 -0
- package/docs/engines/realtime_index.md +27 -0
- package/docs/engines/sec_edgar.md +27 -0
- package/docs/engines/seltz.md +27 -0
- package/docs/engines/skillsmp.md +27 -0
- package/docs/engines/sspai.md +27 -0
- package/docs/engines/std_samr.md +27 -0
- package/docs/engines/train.md +27 -0
- package/docs/engines/un_comtrade.md +27 -0
- package/docs/engines/wikisource.md +27 -0
- package/docs/engines/zdic.md +27 -0
- package/docs/engines/zenodo.md +27 -0
- package/docs/engines/zhihu_hot_app.md +27 -0
- package/docs//344/270/272/344/273/200/344/271/210/351/200/211/346/213/251argo.md +176 -0
- package/engines/README.md +10 -0
- package/engines/_template_cli.yaml +39 -0
- package/engines/_template_http.yaml +37 -0
- package/engines/plugins/_template_plugin.py +50 -0
- package/engines/specs/_cisa_kev.yaml +54 -0
- package/engines/specs/_osv.yaml +63 -0
- package/engines/specs/aljazeera.yaml +43 -0
- package/engines/specs/antara.yaml +43 -0
- package/engines/specs/artic.yaml +20 -0
- package/engines/specs/aviation_weather.yaml +39 -0
- package/engines/specs/bangumi.yaml +21 -0
- package/engines/specs/biorxiv.yaml +24 -0
- package/engines/specs/carbon_intensity.yaml +32 -0
- package/engines/specs/cfets.yaml +41 -0
- package/engines/specs/cinii.yaml +44 -0
- package/engines/specs/clawhub.yaml +49 -0
- package/engines/specs/cleveland.yaml +19 -0
- package/engines/specs/cn_ai_news.yaml +43 -0
- package/engines/specs/core.yaml +35 -0
- package/engines/specs/crt_sh.yaml +38 -0
- package/engines/specs/ct24.yaml +43 -0
- package/engines/specs/datacite.yaml +27 -0
- package/engines/specs/datagov_uk.yaml +41 -0
- package/engines/specs/ddgs_images.yaml +45 -0
- package/engines/specs/deepseek_search.yaml +74 -0
- package/engines/specs/deezer.yaml +20 -0
- package/engines/specs/defillama.yaml +38 -0
- package/engines/specs/deps_dev.yaml +21 -0
- package/engines/specs/digup.yaml +36 -0
- package/engines/specs/doi.yaml +39 -0
- package/engines/specs/douban_movie.yaml +22 -0
- package/engines/specs/dw_news.yaml +47 -0
- package/engines/specs/egov_law.yaml +21 -0
- package/engines/specs/elpais.yaml +43 -0
- package/engines/specs/endoflife.yaml +21 -0
- package/engines/specs/energy_charts.yaml +21 -0
- package/engines/specs/factcheck_org.yaml +52 -0
- package/engines/specs/faz.yaml +43 -0
- package/engines/specs/federal_register.yaml +57 -0
- package/engines/specs/firecrawl.yaml +53 -0
- package/engines/specs/flk_law.yaml +24 -0
- package/engines/specs/folha.yaml +43 -0
- package/engines/specs/france24.yaml +44 -0
- package/engines/specs/full_fact.yaml +47 -0
- package/engines/specs/fxtwitter.yaml +36 -0
- package/engines/specs/gbfs_nyc.yaml +32 -0
- package/engines/specs/gdacs.yaml +21 -0
- package/engines/specs/gdelt.yaml +64 -0
- package/engines/specs/gleif.yaml +55 -0
- package/engines/specs/google_news.yaml +22 -0
- package/engines/specs/gov_regulations.yaml +38 -0
- package/engines/specs/guardian_rss.yaml +59 -0
- package/engines/specs/hkex.yaml +40 -0
- package/engines/specs/hurriyet.yaml +43 -0
- package/engines/specs/iplant.yaml +25 -0
- package/engines/specs/jikan.yaml +24 -0
- package/engines/specs/jolpica.yaml +20 -0
- package/engines/specs/k10plus.yaml +20 -0
- package/engines/specs/keenable.yaml +44 -0
- package/engines/specs/keenable_free.yaml +36 -0
- package/engines/specs/lefigaro.yaml +43 -0
- package/engines/specs/listenbrainz.yaml +19 -0
- package/engines/specs/matichon.yaml +43 -0
- package/engines/specs/met_museum.yaml +21 -0
- package/engines/specs/nasa_images.yaml +45 -0
- package/engines/specs/netease_music.yaml +38 -0
- package/engines/specs/nhk.yaml +43 -0
- package/engines/specs/nhtsa_vpic.yaml +20 -0
- package/engines/specs/noaa_swpc.yaml +20 -0
- package/engines/specs/nvd.yaml +38 -0
- package/engines/specs/obis.yaml +20 -0
- package/engines/specs/opencitations.yaml +52 -0
- package/engines/specs/openf1.yaml +21 -0
- package/engines/specs/openfoodfacts.yaml +45 -0
- package/engines/specs/openligadb.yaml +20 -0
- package/engines/specs/openreview.yaml +37 -0
- package/engines/specs/openstd.yaml +21 -0
- package/engines/specs/people_daily.yaml +22 -0
- package/engines/specs/realtime_index.yaml +34 -0
- package/engines/specs/ror.yaml +20 -0
- package/engines/specs/satnogs.yaml +20 -0
- package/engines/specs/sec_edgar.yaml +46 -0
- package/engines/specs/shfe.yaml +39 -0
- package/engines/specs/skillsmp.yaml +50 -0
- package/engines/specs/sogou_weixin_browser.yaml +30 -0
- package/engines/specs/soilgrids.yaml +25 -0
- package/engines/specs/sspai.yaml +36 -0
- package/engines/specs/stackexchange.yaml +46 -0
- package/engines/specs/std_samr.yaml +21 -0
- package/engines/specs/tass.yaml +43 -0
- package/engines/specs/tavily_free.yaml +56 -0
- package/engines/specs/tle_mirror.yaml +21 -0
- package/engines/specs/train.yaml +37 -0
- package/engines/specs/tvmaze.yaml +20 -0
- package/engines/specs/twitter_syndication.yaml +31 -0
- package/engines/specs/un_comtrade.yaml +23 -0
- package/engines/specs/unpaywall.yaml +54 -0
- package/engines/specs/vnpress.yaml +43 -0
- package/engines/specs/weather.yaml +32 -0
- package/engines/specs/who_don.yaml +21 -0
- package/engines/specs/who_gho.yaml +20 -0
- package/engines/specs/wikimedia_commons.yaml +34 -0
- package/engines/specs/wikisource.yaml +22 -0
- package/engines/specs/worms.yaml +19 -0
- package/engines/specs/x_trending.yaml +34 -0
- package/engines/specs/yna.yaml +43 -0
- package/engines/specs/ynet.yaml +43 -0
- package/engines/specs/yuanbao.yaml +93 -0
- package/engines/specs/zbmath.yaml +40 -0
- package/engines/specs/zdic.yaml +22 -0
- package/engines/specs/zenodo.yaml +27 -0
- package/engines/specs/zhihu_hot_app.yaml +35 -0
- package/mcp/clients.yaml +106 -0
- package/package.json +55 -12
- package/packages/dsh-plugin/README.md +152 -0
- package/packages/dsh-plugin/cordis.patch.yml +48 -0
- package/packages/dsh-plugin/dsh/client.js +1533 -0
- package/packages/dsh-plugin/dsh/diagnostics.js +54 -0
- package/packages/dsh-plugin/dsh/index.js +527 -0
- package/packages/dsh-plugin/dsh/native-tools.mjs +749 -0
- package/packages/dsh-plugin/dsh/runner.js +666 -0
- package/packages/dsh-plugin/dsh/wide-research.js +878 -0
- package/packages/dsh-plugin/package.json +38 -0
- package/packages/dsh-plugin/scripts/sync-local.sh +70 -0
- package/packages/dsh-plugin/test/client.test.js +406 -0
- package/packages/dsh-plugin/test/config.test.js +30 -0
- package/packages/dsh-plugin/test/diagnostics.test.js +28 -0
- package/packages/dsh-plugin/test/index.test.js +1382 -0
- package/references/query-templates.md +96 -0
- package/references/query-templates.yaml +118 -0
- package/scripts/ab_eval.py +219 -0
- package/scripts/ab_eval_p0p1.py +266 -0
- package/scripts/adaptive.py +294 -70
- package/scripts/answer.py +154 -0
- package/scripts/archive_run.py +591 -0
- package/scripts/argo_engine_registry.py +172 -0
- package/scripts/argo_paths.py +728 -0
- package/scripts/article.py +136 -0
- package/scripts/article_meta.py +131 -0
- package/scripts/arxiv_source.py +201 -0
- package/scripts/badcase_ledger.py +252 -0
- package/scripts/batch_probe.py +241 -0
- package/scripts/benchmark.py +19 -0
- package/scripts/bounded_run.py +144 -0
- package/scripts/browser_auth.py +323 -0
- package/scripts/budget.py +247 -0
- package/scripts/budget_cli.py +93 -0
- package/scripts/build_release_assets.sh +65 -0
- package/scripts/burstiness_detector.py +147 -0
- package/scripts/cache.py +1066 -67
- package/scripts/cache_guard.py +271 -0
- package/scripts/cache_key_vdom.py +56 -0
- package/scripts/cache_similarity.py +170 -0
- package/scripts/caliber_isolation.py +195 -0
- package/scripts/calibrate_lowquality.py +210 -0
- package/scripts/candidate_envelope.py +366 -0
- package/scripts/chrome_cdp.py +871 -0
- package/scripts/ci_drift_gate.py +90 -0
- package/scripts/circuit_breaker.py +389 -0
- package/scripts/citations.py +334 -0
- package/scripts/cite_cli.py +59 -0
- package/scripts/cjk_tokens.py +95 -0
- package/scripts/clarify.py +47 -24
- package/scripts/cli_io.py +240 -0
- package/scripts/config.py +683 -45
- package/scripts/config_cache.py +402 -0
- package/scripts/conn_pool.py +220 -0
- package/scripts/content_boundary.py +46 -0
- package/scripts/content_security.py +685 -0
- package/scripts/content_signals.py +751 -0
- package/scripts/crawl.py +74 -35
- package/scripts/cross_lingual_trace.py +293 -0
- package/scripts/daemon.py +866 -0
- package/scripts/digup_bridge.py +214 -0
- package/scripts/dispatch_result.py +98 -0
- package/scripts/engine_admission.py +366 -0
- package/scripts/engine_dispatch.py +982 -0
- package/scripts/engine_env.py +539 -0
- package/scripts/engine_failure.py +411 -0
- package/scripts/engine_families.py +738 -0
- package/scripts/engine_policy.py +218 -0
- package/scripts/engine_requires.py +190 -0
- package/scripts/engine_status.py +322 -0
- package/scripts/engine_validate.py +638 -0
- package/scripts/engines.py +799 -294
- package/scripts/engines_base.py +1521 -0
- package/scripts/engines_builders.py +310 -0
- package/scripts/engines_builders_batch10.py +204 -0
- package/scripts/engines_builders_batch11.py +174 -0
- package/scripts/engines_builders_batch12.py +103 -0
- package/scripts/engines_builders_batch13.py +340 -0
- package/scripts/engines_builders_batch14.py +656 -0
- package/scripts/engines_builders_batch15.py +249 -0
- package/scripts/engines_builders_batch9.py +1468 -0
- package/scripts/engines_builders_cn.py +2283 -0
- package/scripts/engines_builders_data.py +2923 -0
- package/scripts/engines_builders_data_macro.py +775 -0
- package/scripts/engines_builders_feeds.py +255 -0
- package/scripts/engines_builders_intl.py +1239 -0
- package/scripts/engines_builders_keyless.py +111 -0
- package/scripts/engines_builders_search.py +440 -0
- package/scripts/engines_builders_tech.py +1359 -0
- package/scripts/evidence.py +620 -166
- package/scripts/evidence_loop.py +624 -0
- package/scripts/evidence_tier.py +298 -0
- package/scripts/except_sets.py +25 -0
- package/scripts/extract.py +55 -16
- package/scripts/fact_align.py +207 -0
- package/scripts/fact_crosscheck.py +230 -0
- package/scripts/fetch.py +25 -12
- package/scripts/fetch_browser.py +87 -0
- package/scripts/fetch_jsrun.py +122 -0
- package/scripts/fetch_quality.py +225 -0
- package/scripts/fetch_render_tinyfish.py +117 -0
- package/scripts/fetch_v3.py +1804 -0
- package/scripts/focus_extract.py +350 -0
- package/scripts/fulltext_store.py +169 -0
- package/scripts/fxtwitter_api.py +325 -0
- package/scripts/gen_engine_catalog.py +364 -0
- package/scripts/gen_native_tools.py +91 -0
- package/scripts/gen_routing_snapshot.py +195 -0
- package/scripts/health_check.py +140 -402
- package/scripts/health_probe.py +23 -8
- package/scripts/hot_state.py +134 -0
- package/scripts/http_client.py +1053 -0
- package/scripts/image_ops.py +430 -0
- package/scripts/image_vision/vision_probe.swift +126 -0
- package/scripts/install.ps1 +166 -0
- package/scripts/install.sh +221 -0
- package/scripts/job.py +1186 -0
- package/scripts/jump_resolver.py +235 -0
- package/scripts/lang_capability.py +150 -0
- package/scripts/lang_detect.py +289 -0
- package/scripts/lang_matrix_probe.py +329 -0
- package/scripts/lang_pref.py +311 -0
- package/scripts/link_source.py +340 -0
- package/scripts/local_image.py +970 -0
- package/scripts/local_seek.py +402 -0
- package/scripts/macro_countries.py +97 -0
- package/scripts/matrix_search_eval.py +1187 -0
- package/scripts/mcp_compact.py +234 -0
- package/scripts/mcp_diag.py +8 -3
- package/scripts/mcp_handlers.py +492 -0
- package/scripts/mcp_handlers_surface.py +157 -0
- package/scripts/mcp_launch.sh +124 -0
- package/scripts/mcp_local.py +241 -0
- package/scripts/mcp_server.py +125 -419
- package/scripts/mcp_setup.py +431 -0
- package/scripts/mcp_tools.py +331 -0
- package/scripts/mcp_transport.py +191 -0
- package/scripts/mcp_warm.py +127 -0
- package/scripts/min_version_scan.py +335 -0
- package/scripts/net_proxy.py +258 -0
- package/scripts/network_aware.py +152 -0
- package/scripts/output_transparency.py +200 -0
- package/scripts/paid_policy.py +98 -0
- package/scripts/paper.py +274 -0
- package/scripts/pdf_extract.py +518 -0
- package/scripts/phrase_filter.py +66 -0
- package/scripts/plan.py +422 -0
- package/scripts/postprocess_signals.py +150 -0
- package/scripts/pre-commit +48 -0
- package/scripts/query_enhance.py +157 -0
- package/scripts/query_operators.py +196 -0
- package/scripts/query_rewriter.py +116 -7
- package/scripts/query_signals.py +300 -0
- package/scripts/query_templates.py +167 -0
- package/scripts/query_understanding.py +411 -0
- package/scripts/query_variants.py +298 -0
- package/scripts/quota.py +633 -76
- package/scripts/rank_signals.py +775 -0
- package/scripts/ranking_eval.py +319 -0
- package/scripts/readability_extract.py +433 -0
- package/scripts/recompute.py +415 -0
- package/scripts/recovery.py +616 -0
- package/scripts/recovery_l0.py +160 -0
- package/scripts/recovery_runner.py +150 -0
- package/scripts/redskill/redskill_engine.py +332 -0
- package/scripts/regression_p0p1.py +318 -0
- package/scripts/replay_eval.py +658 -0
- package/scripts/rerank_tfidf.py +225 -0
- package/scripts/research.py +607 -403
- package/scripts/research_cli.py +361 -0
- package/scripts/research_dossier.py +492 -0
- package/scripts/research_expand.py +169 -0
- package/scripts/research_gates.py +272 -0
- package/scripts/research_report.py +209 -0
- package/scripts/research_strategy.py +37 -0
- package/scripts/research_work_packages.py +195 -0
- package/scripts/result_lang.py +311 -0
- package/scripts/retry_policy.py +76 -0
- package/scripts/robots_guard.py +259 -0
- package/scripts/route.py +921 -254
- package/scripts/route_bangs.py +40 -0
- package/scripts/route_cache.py +243 -0
- package/scripts/route_combo.py +917 -0
- package/scripts/route_domains.py +341 -0
- package/scripts/route_lang.py +605 -0
- package/scripts/route_log.py +63 -0
- package/scripts/route_policy.py +250 -0
- package/scripts/rrf_classic.py +66 -0
- package/scripts/screenshot.py +73 -0
- package/scripts/search.py +886 -406
- package/scripts/search_attribution.py +185 -0
- package/scripts/search_benchmark.py +407 -0
- package/scripts/search_cli.py +640 -0
- package/scripts/search_entry.py +395 -0
- package/scripts/search_output.py +690 -0
- package/scripts/search_pipeline.py +926 -0
- package/scripts/search_rank.py +991 -0
- package/scripts/search_types.py +129 -16
- package/scripts/seek_locator.py +68 -0
- package/scripts/semantic_evidence.py +391 -0
- package/scripts/serp_guard.py +336 -0
- package/scripts/serp_kill_log.py +74 -0
- package/scripts/single_flight.py +120 -0
- package/scripts/social_engines/__init__.py +10 -0
- package/scripts/social_engines/bilibili_engine.py +131 -0
- package/scripts/social_engines/hackernews_engine.py +113 -0
- package/scripts/social_engines/reddit_engine.py +172 -0
- package/scripts/social_engines/twitter_engine.py +397 -0
- package/scripts/social_engines/v2ex_engine.py +101 -0
- package/scripts/social_engines/weibo_engine.py +128 -0
- package/scripts/social_engines/xiaohongshu_engine.py +137 -0
- package/scripts/social_engines/zhihu_engine.py +139 -0
- package/scripts/social_research.py +201 -0
- package/scripts/sogou_weixin_browser.py +318 -0
- package/scripts/source_ledger.py +249 -0
- package/scripts/stage_timing.py +58 -0
- package/scripts/stats_cli.py +107 -0
- package/scripts/straggler_policy.py +60 -0
- package/scripts/stylometry_detector.py +231 -0
- package/scripts/sync_backends.py +353 -0
- package/scripts/sync_installs.py +29 -0
- package/scripts/template_cli.py +127 -0
- package/scripts/text_lexicon.py +72 -0
- package/scripts/tfidf_router.py +109 -37
- package/scripts/time_utils.py +233 -0
- package/scripts/topic_research_profiles.py +643 -0
- package/scripts/train.py +737 -0
- package/scripts/tweet.py +596 -0
- package/scripts/url_canon.py +217 -0
- package/scripts/url_optimize.py +56 -0
- package/scripts/url_safety.py +236 -0
- package/scripts/usage_log.py +116 -0
- package/scripts/usage_log_clean.py +113 -0
- package/scripts/v2ex_nodes.py +311 -0
- package/scripts/variant_recall.py +188 -0
- package/scripts/watch.py +205 -0
- package/scripts/wechat_article.py +258 -0
- package/scripts/wide_research.py +447 -0
- package/scripts/wx.py +349 -0
- package/scripts/x_article_fetch.py +141 -0
- package/scripts/x_search.py +234 -0
- package/scripts/x_trending.py +189 -0
- package/scripts/yaml_load.py +67 -0
- package/scripts/zhihu_quota.py +139 -0
- package/sub-skills/ego-search/SKILL.md +253 -0
- package/sub-skills/ego-search/scripts/ego_search.py +800 -0
- package/sub-skills/ego-search/scripts/merge.py +226 -0
- package/sub-skills/ego-search/scripts/quality.py +64 -0
- package/sub-skills/ego-search/scripts/runtime.py +172 -0
- package/sub-skills/ego-search/scripts/safety.py +109 -0
- package/sub-skills/ego-search/scripts/serp_spec.py +109 -0
- package/sub-skills/ego-search/scripts/webbridge_adapter.py +374 -0
- package/sub-skills/js-run/SKILL.md +67 -0
- package/sub-skills/js-run/scripts/jsrun.py +112 -0
- package/sub-skills/js-run/scripts/shim.js +188 -0
- package/sub-skills/local-search/SKILL.md +50 -53
- package/sub-skills/local-search/bm25.py +186 -0
- package/sub-skills/local-search/cli_runner.py +331 -0
- package/sub-skills/local-search/config.yaml +152 -55
- package/sub-skills/local-search/engine_registry.py +91 -26
- package/sub-skills/local-search/{health_check.py → local_health_check.py} +140 -10
- package/sub-skills/local-search/local_search_adapter.py +13 -2
- package/sub-skills/local-search/parse_maps.yaml +40 -42
- package/sub-skills/local-search/parsers.py +328 -0
- package/sub-skills/local-search/search_v3.py +716 -242
- package/sub-skills/local-search/smart_router.py +47 -7
- package/sub-skills/local-seek/SKILL.md +110 -0
- package/sub-skills/local-seek/config/domains.yaml +20 -0
- package/sub-skills/local-seek/scripts/eval_rank.py +216 -0
- package/sub-skills/local-seek/scripts/eval_seek.py +224 -0
- package/sub-skills/local-seek/scripts/seek.py +1465 -0
- package/sub-skills/local-seek/scripts/seek_frecency.py +126 -0
- package/sub-skills/local-seek/scripts/seek_fts.py +430 -0
- package/sub-skills/local-seek/scripts/seek_rank.py +197 -0
package/README.md
CHANGED
|
@@ -1,410 +1,868 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="
|
|
2
|
+
<img src="assets/readme/hero.svg" width="100%" alt="Argo 阿尔戈:给 Agent 用的搜索与深度研究工具,272 个搜索源,按域按语言选路,输出可吸收的证据">
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
|
-
<h3 align="center">统一搜索引擎</h3>
|
|
6
|
-
|
|
7
5
|
<p align="center">
|
|
8
|
-
|
|
6
|
+
<strong>中文</strong> ·
|
|
7
|
+
<a href="README.en.md">English</a> ·
|
|
8
|
+
<a href="README.ja.md">日本語</a> ·
|
|
9
|
+
<a href="README.ko.md">한국어</a> ·
|
|
10
|
+
<a href="README.es.md">Español</a>
|
|
9
11
|
</p>
|
|
10
12
|
|
|
11
13
|
<p align="center">
|
|
14
|
+
<a href="#这是什么">介绍</a> ·
|
|
15
|
+
<a href="#它和模型自带搜索--ai-搜索--聚合搜索比强在哪">对比</a> ·
|
|
16
|
+
<a href="#问啥像啥">证明</a> ·
|
|
17
|
+
<a href="#它怎么工作">机制</a> ·
|
|
12
18
|
<a href="#快速开始">快速开始</a> ·
|
|
13
|
-
<a href="
|
|
14
|
-
<a href="
|
|
15
|
-
<a href="
|
|
16
|
-
<a href="#安装配置">配置</a> ·
|
|
17
|
-
<a href="#版本历史">更新</a>
|
|
19
|
+
<a href="#能做什么">能力</a> ·
|
|
20
|
+
<a href="#安装与配置">配置</a> ·
|
|
21
|
+
<a href="#最近更新">更新</a>
|
|
18
22
|
</p>
|
|
19
23
|
|
|
20
|
-
|
|
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
|
+
> **这是踏雪寻仙 DeepSeek Harness 插件系列的一员**([dsh-files](https://github.com/taxueseek/dsh-files) 39★ · [dsh-models](https://github.com/taxueseek/dsh-models) 模型选择 + 子代理路由 + 推理层级)。同作者完整技能系列:[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 用的搜索与深度研究工具
|
|
21
35
|
|
|
22
36
|
## 这是什么
|
|
23
37
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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。不开浏览器跑「环境探测 + 纯计算」型网页脚本,单次上下文 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 连接,不占常驻上下文开销。另有 1 个 `wide_research` 并行研究和 19 个 MCP 工具按需开启。完整接入形态见下文。
|
|
64
|
+
|
|
65
|
+
### 三种调用通道,一套能力
|
|
66
|
+
|
|
67
|
+
同一个 argo 检索内核(同引擎、同压缩、同守卫)在 DSH 里开三条通道,按宿主能力自动降级、互为冗余:
|
|
68
|
+
|
|
69
|
+
| 通道 | 默认 | 说明 |
|
|
70
|
+
|------|------|------|
|
|
71
|
+
| **原生一等工具** | 开 | `argo_search` / `argo_fetch` 等经 `ctx.tools.register` 注册,走 CLI 单发(`--call`)复用 MCP 同一套引擎与守卫,**不依赖 MCP 连接、零常驻 token 开销** |
|
|
72
|
+
| **原生 web seam** | 开 | 注册 `argo` 搜索与抓取两个 provider,宿主内置 `web_search` 路由到 argo 引擎链、`web_fetch` 走 argo 抓取链(HTTP 优先,遇 Cloudflare / JS 渲染自动升级反检测浏览器) |
|
|
73
|
+
| **MCP 形态** | 按需 | 19 个 `mcp__argo__*` 完整工具面。工具定义每轮注入上下文且压缩清不掉(实测 19 工具 ≈3.7K token/轮),而高频路径已由原生工具与 web seam 覆盖,故默认不挂载;需要长尾取证能力时在 profile patch 中取消 `mcp-argo` 行注释 |
|
|
74
|
+
|
|
75
|
+
另有 1 个 `wide_research`:规划互补轨道(`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
|
+
### 自带设置页:六个分区,改完即生效
|
|
80
|
+
|
|
81
|
+
插件自带浏览器端设置页,两个入口:设置弹窗(`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 共用同一把 key;腾讯元宝 / Tavily 等常用引擎 key 可填写、更新、清除,明文不回显">
|
|
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 / 轨道 / 每轨信源 / token 上限与报告落盘目录 |
|
|
102
|
+
| **高级** | worker 工具 allow / deny 名单、凭证转发名单 |
|
|
103
|
+
|
|
104
|
+
保存即生效(全部为 volatile 配置):原生工具集合按勾选增删注册,超时、并发、研究上限在下一次调用时读取;引擎开关写成 `argoEnv`(一行一个 `KEY=VALUE`)随 argo 子进程 env 进入,对下一次新建连接生效(池内旧连接按 `searchIdleMs` 回收,默认 60s)。结构性字段(`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 服务时静默跳过:argo 侧该引擎按缺 key 停用,其余 271 个源不受影响。
|
|
109
|
+
|
|
110
|
+
**web seam 的 pin 必读**(漏配会打挂 `web_fetch`):宿主 `dsh-web` 的 provider 选择规则是「配置 id 优先;都没有且恰好一个可用则选它;**多个可用直接报 `WEB_PROVIDER_AMBIGUOUS`**」。web profile 默认挂着官方 http fetch provider(免 key、永远可用),本 bundle 再注册一个就是两个可用——**不 pin 的话 `web_fetch` 整个挂掉**(`web_search` 同理,若 profile 里另有搜索 provider)。故启用 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(provider 仍注册但不可选,不影响另一个)。搜索引擎侧,Firecrawl 等匿名可用引擎 **keyless 免配置即用**(免费层额度),配置了密钥的引擎自动升级为认证请求;缺密钥不阻断路由。
|
|
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 种语言,中文、英文和日文能查到当地一手来源。问论文走学术库,问影视走条目库,问代码走问答社区,问行情走金融源。泛泛的问题才走通用搜索。
|
|
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
|
+
# 方式一:一键脚本(推荐本机长期用)
|
|
145
|
+
curl -fsSL https://raw.githubusercontent.com/taxueseek/argo/main/scripts/install.sh | bash
|
|
146
|
+
|
|
147
|
+
# 方式二:npx 即用即走(推荐 Agent 快速挂载)
|
|
148
|
+
npx -y github:taxueseek/argo
|
|
149
|
+
|
|
150
|
+
# 方式三: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 连接,不占常驻上下文开销;自带六分区设置页,改完即生效 |
|
|
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 及搜索核查于一身,具备一条龙的搜索服务**」。差别不在界面,在交付物,给人看的叫总结页或链接清单,给 Agent 的应是能排序、能复核、不撑爆上下文的优质内容,更可靠的搜索信息。
|
|
184
|
+
|
|
185
|
+
<p align="center">
|
|
186
|
+
<img src="assets/readme/why-better.svg" width="100%" alt="左侧三种默认搜索给人看的结果,右侧 Argo 给 Agent 的可吸收证据 JSON">
|
|
187
|
+
</p>
|
|
188
|
+
|
|
189
|
+
| 维度 | 模型自带搜索 | AI 搜索(总结型) | 聚合搜索 / 搜索引擎 | **Argo** |
|
|
190
|
+
|------|------------|-------------------|---------------------|----------|
|
|
191
|
+
| 结果形态 | 拼好的长文本 | 给人看的总结页 | SERP 链接清单 | **精简 JSON:证据候选 + 可信度分解** |
|
|
192
|
+
| 垂直问题(行情 / 化学式) | 泛搜网页 | 泛搜再总结 | 泛搜网页 | **直连垂直源,直接给答案** |
|
|
193
|
+
| 证据可信度 | 无评分 | 无结构化评分 | 无评分 | **selection · absorption · freshness · 共识** |
|
|
194
|
+
| 重复查询 | 每次都打网 | 每次都打网 | 靠页面缓存 | **双层缓存(内存 + SQLite),热查询约 10ms** |
|
|
195
|
+
| 成本控制 | 不可控 | 单次贵 | 免费但费事 | **预算模式,免费优先,Key 全可选** |
|
|
196
|
+
| 多语言 | 随模型走 | 随模型走 | 随引擎走 | **语言检测 + 引擎语言参数 + 多国语言支持** |
|
|
197
|
+
|
|
198
|
+
> 机制上,Argo 把搜索当成一条**证据管线**:语言检测 → 领域路由 → 多引擎召回 → RRF 融合 → 证据快评,交付的是 Agent 可直接排序、可 `fetch` 复核、不撑爆上下文的材料。工具链不用换,需要换的是「搜索结果应该长什么样」——再往下一层,还有和「再包一层搜索 API 的差别」,那是实现细节的对比。
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## 2026,检索正在发生什么变化
|
|
203
|
+
|
|
204
|
+
Agent 干活的量级变了,检索的玩法跟着变了五件事,每一件 Argo 都已经落在代码里:
|
|
205
|
+
|
|
206
|
+
1. **检索从「给链接」变成「给证据」。** Agent 不看网页排版,它要能排序、能复核、不撑爆上下文的结构化材料——所以 Argo 交付的是带可信度分解的 JSON,而不是 SERP 清单。
|
|
207
|
+
2. **上下文成为第一成本。** 一次网页抓取动辄上万 token,Agent 的窗口烧不起。Argo 的 Agent 档单次约 3.7KB,字段集合与字节预算都有检查卡着,升级不会悄悄变胖。
|
|
208
|
+
3. **网站开始为 AI 备料。** llms.txt 标准与 `.md` 直出在头部文档站快速铺开——Argo 抓取链第零级自动探测这些 AI 友好变体,命中即跳过整条反爬链;HTTP/TLS 都失败还有 r.jina.ai 阅读器级保底。
|
|
209
|
+
4. **免费开放生态够用了。** 政府、学术、标准、安全机构的开放 API + 免 key 引擎,已经能覆盖大多数领域(235 个免配置源);稀缺免费额度(firecrawl 1000 credits/月、stackexchange 300 次/天)做了「日常补位、关键顶上」的分层,订阅墙不是唯一解。
|
|
210
|
+
5. **检索质量从「感觉」到「度量」。** 排序有金标(MRR/nDCG 地板)、融合有增益消融检查、路由有负向控制矩阵——「这版比上版好吗」从此是数字问题,不是玄学。
|
|
211
|
+
|
|
212
|
+
> 以上五项已经在 v2.9.x 系列里全部落地:272 个源、97 个领域、235 个免配置开箱。逐项细节见 [docs/为什么选择argo.md](docs/为什么选择argo.md) 与 [发布说明](docs/RELEASE_NOTES_v2.9.0.md)。
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## 问啥像啥
|
|
217
|
+
|
|
218
|
+
<p align="center">
|
|
219
|
+
<img src="assets/readme/proof-routes.svg" width="100%" alt="四类真实路由:金融、影视、多语言、地理">
|
|
220
|
+
</p>
|
|
221
|
+
|
|
222
|
+
| 你这样问 | 大致会怎样 |
|
|
223
|
+
|----------|------------|
|
|
224
|
+
| python asyncio error handling | 编程问答域 → StackOverflow/StackExchange 官方 API,带得分与采纳标记 |
|
|
225
|
+
| AAPL / 美股盘前 | 美股域,与 A 股分流 |
|
|
226
|
+
| 肖申克的救赎 主演 / Inception director | 影视域 → IMDb 等 |
|
|
227
|
+
| 梅西 俱乐部 / 库里 球队 | 体育域 → TheSportsDB 等 |
|
|
228
|
+
| 埃菲尔铁塔在哪 / where is Eiffel Tower | 地理实体 → OpenStreetMap 等 |
|
|
229
|
+
| NASA founding year / 国务院职能 | 组织实体 → Wikidata 等 |
|
|
230
|
+
| 周杰伦 专辑 / Taylor Swift album | 媒体域 → iTunes 等 |
|
|
231
|
+
| アニメ おすすめ / 한국 영화 추천 | 识别日/韩语 → 语言友好源,少塞中文专用站 |
|
|
232
|
+
| 美国 CPI、日本 通胀率 | 宏观数据域;国别分流(本国权威源优先) |
|
|
233
|
+
| log4j 漏洞 CVSS / nodejs 22 end of life | 安全域 → NVD 官方;生命周期域 → endoflife.date |
|
|
234
|
+
| attention is all you need | 学术域 → arXiv/OpenAlex/CrossRef,元数据与 DOI 直连 |
|
|
235
|
+
| 阿司匹林 分子式 | 化学域 → PubChem 类答案 |
|
|
236
|
+
| 台积电估值分歧(深度研究) | 拆子问题 + 多源并行,垂直源被 boost |
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## 它怎么工作
|
|
241
|
+
|
|
242
|
+
<p align="center">
|
|
243
|
+
<img src="assets/readme/workflow.svg" width="100%" alt="查询 → 语言与域 → 多引擎召回 → RRF → 证据快评 → 统一 JSON">
|
|
244
|
+
</p>
|
|
245
|
+
|
|
246
|
+
```
|
|
247
|
+
查询
|
|
248
|
+
├─ 意图消歧(可选)
|
|
249
|
+
├─ 查询改写(可选;路由仍看原始意图)
|
|
250
|
+
├─ 语言检测 + 语言偏好
|
|
251
|
+
├─ 路由(域规则 + TF-IDF + 预算 + 语言补充源 + 热路径缓存)
|
|
252
|
+
├─ 多引擎召回(熔断 / 负缓存 / 并行)
|
|
253
|
+
├─ 空结果分阶恢复(放宽 → 换同族/通用 → 跨语言;防污染)
|
|
254
|
+
├─ RRF 融合 + 可选精排
|
|
255
|
+
├─ 证据快评(权威 · 证据密度 · 时效 · 共识)
|
|
256
|
+
└─ 统一 JSON(含 engine_outcomes / recovery / route_reason)
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### 证据评分(简版)
|
|
260
|
+
|
|
261
|
+
```
|
|
262
|
+
selection ≈ 域名权威,SERP/跳转链压到很低
|
|
263
|
+
absorption ≈ 数字 / 定义 / 对比 / 披露等证据密度
|
|
264
|
+
freshness ≈ 发布时间(会忽略「2015 年以来」这类历史对比年)
|
|
265
|
+
综合 ≈ 0.40·selection + 0.35·absorption + 0.15·freshness + 0.10·引擎分
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
结果字段含 `selection`、`absorption`、`credibility_fast`、`evidence_flags` 等,方便 Agent 直接排序。
|
|
269
|
+
|
|
270
|
+
### Agent 使用纪律(建议)
|
|
271
|
+
|
|
272
|
+
1. **高后果问题**(持仓、安全、是否属实):search → 看快评分 → 对 top 结果 `fetch` → 再下结论
|
|
273
|
+
2. **数字**:写清计算方式,冲突时并列,不要硬合并
|
|
274
|
+
3. **搜索结果页 / 跳转链**:不要当正文信源
|
|
275
|
+
4. **社交帖**:当舆情与叙事,不当事实真值
|
|
276
|
+
5. **事实核查**:宁可多一两条分层查询(来源 / 对比 / 主体)
|
|
277
|
+
|
|
278
|
+
---
|
|
73
279
|
|
|
74
280
|
## 快速开始
|
|
75
281
|
|
|
282
|
+
任选一种即可。**以 GitHub 为唯一安装来源**(`npx github:taxueseek/argo` 或 `install.sh` / `install.ps1`),当前推荐 **v2.9.8**。**请勿用 `npm install argo-search`**——npm registry 上那份是**非官方陈旧版 v1.0.1**(非本仓库维护,功能残缺、不随本项目更新)。本包 `package.json` 已设 `private: true` 防止误发布到 npm registry。
|
|
283
|
+
|
|
284
|
+
**零配置就能跑**:不配 API Key 时走免费引擎 + 本地 `local_*` 引擎;配了 Key 的源质量通常更好,没配则自动跳过。
|
|
285
|
+
|
|
286
|
+
### 方式一:一键脚本(推荐本机长期用)
|
|
287
|
+
|
|
288
|
+
macOS / Linux:
|
|
289
|
+
|
|
76
290
|
```bash
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
cd unified-search
|
|
80
|
-
|
|
81
|
-
# 安装依赖(仅 PyYAML)
|
|
82
|
-
pip install pyyaml
|
|
83
|
-
|
|
84
|
-
# 搜索
|
|
85
|
-
python3 scripts/search.py "Python asyncio"
|
|
86
|
-
|
|
87
|
-
# JSON 输出
|
|
88
|
-
python3 scripts/search.py "贵州茅台股价" --json
|
|
89
|
-
|
|
90
|
-
# 显示路由决策
|
|
91
|
-
python3 scripts/search.py "transformer attention paper" --explain
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
## 引擎全景
|
|
95
|
-
|
|
96
|
-
### T1 — 直连 API(首选层)
|
|
97
|
-
|
|
98
|
-
| 引擎 | 覆盖 | 延迟 | 成本 | 状态 | 说明 |
|
|
99
|
-
|------|------|------|------|------|------|
|
|
100
|
-
| **anysearch** | 通用/技术 | 2s | 免费 | ✅ | 通用搜索主力,本地 CLI |
|
|
101
|
-
| **zhihu** | 中文/评测 | 1.5s | API | ✅ | 知乎搜索,中文观点/评测 |
|
|
102
|
-
| **eastmoney** | 金融/股票/基金 | 1.2s | 免费 | ✅ | 东方财富,金融数据首选 |
|
|
103
|
-
| **byted** | 通用/新闻/中文 | 1.5s | API | ✅ | 字节搜索 API |
|
|
104
|
-
| **tavily** | 通用 | 3s | API | ✅ | Tavily AI 搜索 |
|
|
105
|
-
| **github** | 代码 | 2s | API | ✅ | GitHub 代码搜索 |
|
|
106
|
-
| **arxiv** | 学术 | 3.5s | 免费 | ✅ | arXiv 论文搜索 |
|
|
107
|
-
| semantic_scholar | 学术 | 3s | 免费 | ⏸️ | Semantic Scholar |
|
|
108
|
-
| openalex | 学术 | 4s | 免费 | ⏸️ | OpenAlex 开放学术 |
|
|
109
|
-
| crossref | 学术 | 3s | 免费 | ⏸️ | Crossref DOI |
|
|
110
|
-
| bocha | 中文/通用 | 1.5s | API | ⏸️ | 博查搜索 |
|
|
111
|
-
| brave | 通用 | 1.5s | API | ⏸️ | Brave Search |
|
|
112
|
-
| metaso | 中文/通用 | 3s | API | ⏸️ | 秘塔搜索 |
|
|
113
|
-
| felo | 通用/技术 | 4s | API | ⏸️ | Felo AI 搜索 |
|
|
114
|
-
| uapi | 通用 | 2s | API | ⏸️ | UAPI 聚合搜索 |
|
|
115
|
-
| duckduckgo | 通用 | 1.5s | 免费 | ⏸️ | DuckDuckGo |
|
|
116
|
-
| wolframalpha | 事实/数学 | 2s | API | ⏸️ | WolframAlpha |
|
|
117
|
-
| wikipedia | 百科 | 1s | 免费 | ⏸️ | Wikipedia |
|
|
118
|
-
|
|
119
|
-
### T2 — 本地引擎(零成本层)
|
|
120
|
-
|
|
121
|
-
| 引擎 | 覆盖 | 延迟 | 说明 |
|
|
122
|
-
|------|------|------|------|
|
|
123
|
-
| **bing** | 通用 | 610ms | Bing 网页搜索 — 最佳通用 |
|
|
124
|
-
| **sogou** | 中文 | 910ms | 搜狗搜索 — 最佳中文(替代百度) |
|
|
125
|
-
| duckduckgo | 通用 | 1013ms | DuckDuckGo 搜索 |
|
|
126
|
-
| mojeek | 通用 | 2121ms | Mojeek 独立搜索 |
|
|
127
|
-
| yandex | 通用 | 3071ms | Yandex 搜索 |
|
|
128
|
-
| startpage | 通用 | 3515ms | Startpage 隐私搜索 |
|
|
129
|
-
| wikipedia | 百科 | 747ms | Wikipedia 百科 |
|
|
130
|
-
| arxiv | 学术 | 3403ms | arXiv 论文 |
|
|
131
|
-
| pubmed | 医学 | 1516ms | PubMed 生物医学 |
|
|
132
|
-
| crossref | 学术 | 2094ms | Crossref DOI |
|
|
133
|
-
| bing_news | 新闻 | 782ms | Bing 新闻 |
|
|
134
|
-
| google_news | 新闻 | 4006ms | Google News |
|
|
135
|
-
| github | 代码 | 1414ms | GitHub 仓库 |
|
|
136
|
-
| stackoverflow | 代码 | 1981ms | Stack Overflow |
|
|
137
|
-
| gitlab | 代码 | 1947ms | GitLab 项目 |
|
|
138
|
-
| npm | 代码 | 2389ms | npm 包搜索 |
|
|
139
|
-
| imdb | 影视 | 2637ms | IMDb 电影 |
|
|
140
|
-
| goodreads | 图书 | 489ms | Goodreads 图书 |
|
|
141
|
-
|
|
142
|
-
## 路由决策
|
|
143
|
-
|
|
144
|
-
查询进来后,系统做三层判断:
|
|
145
|
-
|
|
146
|
-
```
|
|
147
|
-
查询 → 特征提取 → 三路并行判断
|
|
148
|
-
│
|
|
149
|
-
┌───────────┼───────────┐
|
|
150
|
-
▼ ▼ ▼
|
|
151
|
-
正则硬规则 TF-IDF 语义 主题分类
|
|
152
|
-
(13 个域) (余弦相似度) (5 个主题)
|
|
153
|
-
│ │ │
|
|
154
|
-
└─────┬─────┘ │
|
|
155
|
-
▼ │
|
|
156
|
-
融合决策 ←─────────────┘
|
|
157
|
-
│
|
|
158
|
-
▼
|
|
159
|
-
引擎组合 + 搜索深度
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
### 13 个领域路由
|
|
163
|
-
|
|
164
|
-
| 域 | 触发词 | 首选引擎 | 典型场景 |
|
|
165
|
-
|----|--------|---------|---------|
|
|
166
|
-
| `stock_query` | 股价/涨跌/K线/大盘 | eastmoney | 贵州茅台股价 |
|
|
167
|
-
| `fund_query` | 基金/ETF/基金经理 | eastmoney | 基金净值排行 |
|
|
168
|
-
| `financial_news` | 研报/财报/宏观 | byted | 美联储加息 |
|
|
169
|
-
| `zhihu_content` | 知乎/怎么看待/推荐 | zhihu | 笔记本推荐 |
|
|
170
|
-
| `academic` | 论文/paper/arXiv | arxiv | transformer attention |
|
|
171
|
-
| `tech_deep` | research/综述/深度 | semantic_scholar | 深度学习综述 |
|
|
172
|
-
| `code_search` | github/代码/函数 | github | Python asyncio |
|
|
173
|
-
| `fact_check` | what is/是什么/天气 | duckduckgo | 北京天气 |
|
|
174
|
-
| `news_realtime` | 最新/今天/突发 | byted | 诺贝尔奖 |
|
|
175
|
-
| `shopping` | 评测/推荐/值得买 | zhihu | 笔记本电脑推荐 |
|
|
176
|
-
| `chinese_general` | 中文通用 | bocha | 中文通用搜索 |
|
|
177
|
-
| `general_search` | 兜底 | byted | 其他查询 |
|
|
178
|
-
|
|
179
|
-
### 搜索深度自动选择
|
|
180
|
-
|
|
181
|
-
| 深度 | 触发条件 | 说明 |
|
|
182
|
-
|------|---------|------|
|
|
183
|
-
| `ultra_fast` | what/who/when/多少 | 事实/数字查询 |
|
|
184
|
-
| `fast` | tutorial/how to/教程 | 教程/指南 |
|
|
185
|
-
| `balanced` | vs/对比/评测 | 对比/评测 |
|
|
186
|
-
| `deep` | research/综述/深度分析 | 深度研究 |
|
|
291
|
+
curl -fsSL https://raw.githubusercontent.com/taxueseek/argo/main/scripts/install.sh | bash
|
|
292
|
+
```
|
|
187
293
|
|
|
188
|
-
|
|
294
|
+
Windows(PowerShell):
|
|
295
|
+
|
|
296
|
+
```powershell
|
|
297
|
+
powershell -ExecutionPolicy Bypass -Command "irm https://raw.githubusercontent.com/taxueseek/argo/main/scripts/install.ps1 | iex"
|
|
298
|
+
# 或下载后执行:
|
|
299
|
+
# powershell -ExecutionPolicy Bypass -File scripts/install.ps1
|
|
300
|
+
```
|
|
189
301
|
|
|
190
|
-
|
|
302
|
+
装到指定目录、并挂 Skill 入口:
|
|
191
303
|
|
|
192
304
|
```bash
|
|
193
|
-
|
|
305
|
+
curl -fsSL https://raw.githubusercontent.com/taxueseek/argo/main/scripts/install.sh \
|
|
306
|
+
| bash -s -- --home "$HOME/.local/share/argo" --link "$HOME/.claude/skills/argo"
|
|
307
|
+
```
|
|
194
308
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
...
|
|
309
|
+
验证:
|
|
310
|
+
|
|
311
|
+
```bash
|
|
312
|
+
python3 ~/.local/share/argo/scripts/search.py "python asyncio error handling" --json
|
|
313
|
+
python3 ~/.local/share/argo/scripts/search.py --list-engines
|
|
201
314
|
```
|
|
202
315
|
|
|
203
|
-
###
|
|
316
|
+
### 方式二:MCP 不装包,直接用 GitHub(推荐 Agent 快速挂载)
|
|
317
|
+
|
|
318
|
+
需要 **Node.js 18+** 和 **Python 3.9+**,首次执行一次:
|
|
319
|
+
|
|
320
|
+
```bash
|
|
321
|
+
pip3 install pyyaml
|
|
322
|
+
```
|
|
204
323
|
|
|
205
324
|
```bash
|
|
206
|
-
|
|
325
|
+
npx -y github:taxueseek/argo
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
客户端配置示例(Claude Code / Cursor / Kimi 等):
|
|
207
329
|
|
|
330
|
+
```json
|
|
208
331
|
{
|
|
209
|
-
"
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
"elapsed_ms": 3400,
|
|
214
|
-
"results": [
|
|
215
|
-
{
|
|
216
|
-
"title": "Attention Is All You Need",
|
|
217
|
-
"url": "https://arxiv.org/abs/1706.03762",
|
|
218
|
-
"snippet": "We propose a new simple network architecture, the Transformer...",
|
|
219
|
-
"score": 0.95,
|
|
220
|
-
"source": "arxiv"
|
|
332
|
+
"mcpServers": {
|
|
333
|
+
"argo": {
|
|
334
|
+
"command": "npx",
|
|
335
|
+
"args": ["-y", "github:taxueseek/argo"]
|
|
221
336
|
}
|
|
222
|
-
|
|
337
|
+
}
|
|
223
338
|
}
|
|
224
339
|
```
|
|
225
340
|
|
|
226
|
-
###
|
|
341
|
+
### DeepSeek Harness 一键插件(.dsh-plugin bundle)
|
|
342
|
+
|
|
343
|
+
在 DeepSeek Harness 里一行安装(两种装法):
|
|
227
344
|
|
|
228
345
|
```bash
|
|
229
|
-
|
|
346
|
+
# 装法 A:19 个 mcp__argo__* 工具(主包自带 bundle,与 MCP 全量相同)
|
|
347
|
+
dsh plugin --profile web add "github:taxueseek/argo"
|
|
348
|
+
|
|
349
|
+
# 装法 B:搜索工具 + wide_research 并行研究调度(子包)
|
|
350
|
+
dsh plugin --profile web add "github:taxueseek/argo#main&path:packages/dsh-plugin"
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
重启 `dsh web` 后生效。包结构见 `packages/dsh-plugin/`;同 id `mcp-argo` / `wide-research` 可在用户层 `cordis.patch.yml` 覆盖。装法 B 的 `wide_research` 模块只存在于子包依赖树,主包 patch 不引用它,避免只装主包时 Cordis 解析失败。DSH 0.2.1-alpha.1 与 0.2.1-rc.2 均已实测:rc.2 上 `wide_research`(2 worker,passed=true / 14 sources)与原生 `argo_search`(count=3)真跑通,`dsh web` 启动无 argo 报错;web seam 随启动注册通过(headless 无 web 服务,未做实际调用)。
|
|
230
354
|
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
355
|
+
### 依赖清单(通俗版)
|
|
356
|
+
|
|
357
|
+
| 依赖 | 必需? | 干什么用 | 不装会怎样 |
|
|
358
|
+
|------|:------:|---------|-----------|
|
|
359
|
+
| **PyYAML** | ✅ 必需 | 读配置文件 | 完全跑不起来,安装脚本会自动装 |
|
|
360
|
+
| **curl_cffi** | ❌ 可选(v2.7.3 新增) | 模拟浏览器 TLS 指纹,过反爬站(Cloudflare 等) | 反爬站抓取成功率低一些,日常搜索无影响 |
|
|
361
|
+
| **rapidfuzz** | ❌ 可选(v2.9.5 新增) | 去重的模糊近重复复核:同文换站后缀/镜像站在 minhash 近似命中带内二次判定 | 跨站同文少合几条,去重召回略降;站后缀归一仍生效 |
|
|
362
|
+
| **ddgs CLI** | ❌ 可选 | 本地免 key 搜索的 10 个后端引擎 | 少一批零成本本地搜索源,其余不受影响 |
|
|
363
|
+
| **realtime-index CLI** | ❌ 可选 | 实时索引引擎(搜刚发布的内容) | 该引擎自动禁用,显式指定会回退通用引擎 |
|
|
364
|
+
| **Chrome** | ❌ 可选 | 页面截图、JS 渲染页、登录态抓取 | 截图工具不可用,其余正常 |
|
|
365
|
+
| **pdfplumber / PyMuPDF** | ❌ 可选 | PDF 提取 | argo_pdf 不可用,其余正常 |
|
|
366
|
+
| **Playwright** | ❌ 可选 | 截图增强 | 截图工具回退 Chrome CDP,其余正常 |
|
|
367
|
+
|
|
368
|
+
安装脚本(install.sh)只自动装前两个;其余可选依赖按需 `pip install` 或 `brew install` 即可。
|
|
369
|
+
更稳、完全不依赖 Node 的写法:先装脚本(方式一),再指向本机 Python:
|
|
370
|
+
|
|
371
|
+
```json
|
|
372
|
+
{
|
|
373
|
+
"mcpServers": {
|
|
374
|
+
"argo": {
|
|
375
|
+
"command": "python3",
|
|
376
|
+
"args": ["/path/to/argo/scripts/mcp_server.py"]
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
237
380
|
```
|
|
238
381
|
|
|
239
|
-
|
|
382
|
+
Python 路径特殊时:`export ARGO_PYTHON=/path/to/python3`(仅 npx 入口会读)。
|
|
240
383
|
|
|
241
|
-
|
|
242
|
-
from scripts.search import super_search
|
|
384
|
+
### 方式三:git clone(开发 / 改源码)
|
|
243
385
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
386
|
+
```bash
|
|
387
|
+
git clone https://github.com/taxueseek/argo.git
|
|
388
|
+
cd argo
|
|
389
|
+
pip3 install pyyaml
|
|
390
|
+
bash scripts/install.sh --link ~/.claude/skills/argo # 可选
|
|
391
|
+
python3 scripts/search.py --list-engines
|
|
392
|
+
```
|
|
247
393
|
|
|
248
|
-
|
|
249
|
-
result = super_search("黄金价格", engine="eastmoney", n=3)
|
|
394
|
+
---
|
|
250
395
|
|
|
251
|
-
|
|
252
|
-
|
|
396
|
+
## 适用平台
|
|
397
|
+
|
|
398
|
+
| 平台 | 接入方式 | 说明 |
|
|
399
|
+
|------|---------|------|
|
|
400
|
+
| **Claude Code** | MCP / Skill 链接 | `npx` 或 `mcp_server.py`;也可用 `link_source.py` |
|
|
401
|
+
| **Kimi / Grok Build** | MCP Server | 同上 |
|
|
402
|
+
| **Cursor / Cline / Continue** | MCP | 支持 MCP 的 IDE 插件均可 |
|
|
403
|
+
| **命令行** | `search.py` / `bin/argo` | 脚本、定时任务、人工排查 |
|
|
404
|
+
| **Python 项目** | `from search import super_search` | 库调用 |
|
|
253
405
|
|
|
254
|
-
|
|
255
|
-
def on_progress(stage, data):
|
|
256
|
-
print(f"[{stage.value}] {data}")
|
|
406
|
+
### 安装后自检
|
|
257
407
|
|
|
258
|
-
|
|
408
|
+
```bash
|
|
409
|
+
python3 --version # 需要 3.9+(Windows 可用 py -3)
|
|
410
|
+
python3 -c "import yaml; print('PyYAML OK')"
|
|
411
|
+
python3 scripts/search.py --list-engines # 引擎面与状态总览
|
|
412
|
+
python3 scripts/search.py --list-engines --detail # 逐源状态:配了 key 却没结果,
|
|
413
|
+
# 先看 missing_env 给出的确切变量名
|
|
414
|
+
python3 scripts/health_check.py --all # 真联网探针:验证 key 对端真认(可选)
|
|
415
|
+
python3 bin/argo paths --check # 本机路径自检(可选)
|
|
416
|
+
python3 bin/argo mcp status # MCP 注入/连通诊断(可选)
|
|
417
|
+
python3 -m pytest tests/test_unit.py -q # 单测(可选)
|
|
259
418
|
```
|
|
260
419
|
|
|
261
|
-
|
|
420
|
+
> MCP 起不来时:`python3 scripts/mcp_diag.py` 会把 stdin 往来记录到
|
|
421
|
+
> `~/.kimi/argo_diag.log`。`health_check.py` 是给人用的联网探针,
|
|
422
|
+
> `health_probe.py` 写健康库供路由消费——名字相近,职责不同。
|
|
423
|
+
> CLI 退出码恒 0(含断网):成败判断走 JSON 的 `status` / `errors` 字段。
|
|
262
424
|
|
|
263
|
-
|
|
425
|
+
---
|
|
426
|
+
|
|
427
|
+
## 能做什么
|
|
428
|
+
|
|
429
|
+
### 七种能力,通俗说
|
|
264
430
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
431
|
+
**1. 通用搜索 + 垂直搜索,双管齐下**
|
|
432
|
+
|
|
433
|
+
日常问题走通用网页搜索;一问到行情、影视、体育、宏观这类「有标准答案」的问题,自动切到垂直源直接给答案,而不是扔给你一堆链接。目前 272 个源(235 个免密钥开箱可用)、97 个业务域,金融 / 宏观 / 影视 / 体育 / 地理 / 组织 / 媒体 / 化学 / 学术 / 代码等都有专门的路。
|
|
434
|
+
|
|
435
|
+
**2. 缓存:不重复花冤枉钱**
|
|
436
|
+
|
|
437
|
+
时效性没那么强的内容(百科类、历史数据这类),第一次查完会进缓存,之后同样的查询直接命中,不再每次都走一遍 API。双层缓存(内存 + SQLite),热查询约 10ms 级返回,既省钱也省时间。
|
|
438
|
+
|
|
439
|
+
**3. 专为 Agent 设计,更省 Token**
|
|
440
|
+
|
|
441
|
+
产出是「证据候选 + 可信度分解」的精简 JSON,不是长篇网页;MCP 响应可以按需裁剪,snippet 可控,不会撑爆 Agent 的上下文。比常规模型自带的搜索能力更专业、更省 Token。
|
|
442
|
+
|
|
443
|
+
**4. 深度研究**
|
|
444
|
+
|
|
445
|
+
把一个笼统的问题拆成多个子问题,多源并行采集,最后给出「还差什么证据」的缺口提示。适合综述、调研这类要全面、要扎实的场景。
|
|
446
|
+
|
|
447
|
+
**5. 登录态专业搜索(专业模式,默认关闭)**
|
|
448
|
+
|
|
449
|
+
知乎、小红书、公众号这类要登录才能看的内容,以及 JS 渲染页、反爬页,用真实浏览器配合登录态去搜。默认关闭,需要时开启,依赖 ego lite 和 WebBridge 两个东西,详见下节「登录态专业搜索」。
|
|
450
|
+
|
|
451
|
+
**6. 时间能力(时间窗 + 方向排序)**
|
|
452
|
+
|
|
453
|
+
要搜「最近几天刚发布的内容」,用 `--since 7d` 这类时间窗框住发布时间范围,判断新旧不再靠猜。支持引擎(如 `realtime_index`,免 Key 实时索引源、需自装 CLI,结果自带发布时间)把窗口下推给数据源;其余引擎的融合结果会按 `published_at` 最后再剔除明确超窗的条目(宽松策略,无时间字段的保留),返回包带 `time_filtered` 统计,CLI 与 MCP 均支持。`--since 7d` 与「7 天前的绝对日期」等价、共享缓存;`--until 2026-08-01` 含当天。配合 `--sort newest|oldest` 按发布时间重排——找最新动态用 `newest`,找最早出处用 `oldest`。
|
|
454
|
+
|
|
455
|
+
**7. 在 DSH 里当原生工具用**
|
|
456
|
+
|
|
457
|
+
装成 DSH 插件后,搜索与抓取是宿主的一等工具,不是外挂的 MCP 连接:`argo_search` / `argo_fetch` 直接可调,宿主的 `web_search` / `web_fetch` 也自动路由到 argo 的引擎链与抓取链。高频路径零常驻 token 开销,长尾取证能力(截图 / PDF / 社交 / 公众号 / 招聘 / 结构化提取 / 证据核验 / 意图消歧 / 站点爬取 / 批量预检 / 变化监控 / DOI 引用 / 本机检索)按需勾选开启。改配置不用碰文件——设置页六个分区改完即生效,密钥写进宿主凭证库、明文不回显。详见上文「DSH 插件」。
|
|
458
|
+
|
|
459
|
+
### 能力入口速查
|
|
460
|
+
|
|
461
|
+
| 能力 | 说明 | 入口 |
|
|
462
|
+
|------|------|------|
|
|
463
|
+
| 统一搜索 | 路由 → 召回 → 融合 → 快评 | `search.py` / `argo_search` |
|
|
464
|
+
| 本地文件搜索 | 本机代码/笔记/记忆(非联网) | `argo_local_search` |
|
|
465
|
+
| 本地文本预览 | 白名单目录内预览(fail-closed) | `argo_local_read` |
|
|
466
|
+
| 可复算 | 受限子进程重算数字(默认拒绝) | `argo_recompute` |
|
|
467
|
+
| 深度研究 | 拆子问题、多源采集、缺口提示 | `research.py` / `argo_research` |
|
|
468
|
+
| 可信度评估 | 权威 / 证据密度 / 时效 / 交叉验证 | `evidence.py` / `argo_evidence` |
|
|
469
|
+
| 证据核验(完整链路) | 高后果问题标记 `fetch_required` + 每条 `fetch_suggested`;`--verify` 一键抓正文核验、回填「核实后证据分」、核实过的链接自动记住 | `search.py --verify 3` / `research.py --verify 3` |
|
|
470
|
+
| 意图消歧 | 多义词、品牌碰撞、策略建议 | `clarify.py` / `argo_clarify` |
|
|
471
|
+
| 页面抓取 | HTTP 优先,必要时浏览器降级 | `argo_fetch`(`mode=extract` 可结构化) |
|
|
472
|
+
| 截图 / PDF | 页面截图、PDF 结构化提取 | `argo_screenshot` / `argo_pdf` |
|
|
473
|
+
| 站点爬取 | 列表页批量抓取 | `argo_crawl` |
|
|
474
|
+
| 查询操作符 | `site:`/`-site:`/`-词`/`-"短语"`/`"短语"`/`lang:`/`after:`/`before:` 从路由与检索两侧剥离(用法见 references/usage.md) | 查询词内直接写 |
|
|
475
|
+
| 结果可信信号 | `authority_level` 离散等级(0-4,≥3 极权威)+ `summary` 摘要档(核验后回填) | 结果字段,`--fields agent` 可见 |
|
|
476
|
+
| 社交与舆情 | 微博 / 小红书 / B 站 / Reddit / X 等 | `argo_social_search` |
|
|
477
|
+
| 实时索引搜索 | 免 Key 实时索引源,结果带发布时间,适合「最近几天有什么新东西」。**需自装 `realtime-index` CLI**(未安装时该源停用,见 ENGINE_CATALOG 已停用清单;多数查询走其他源不受影响) | `--engine realtime_index` |
|
|
478
|
+
| 时间窗过滤 | `--since` / `--until`(`7d` 或 `2026-08-01`)限定发布时间范围;支持引擎下推 + 融合后过滤(`time_filtered`),CLI 与 MCP 均支持 | `--since 7d` |
|
|
479
|
+
| 时间方向排序 | `--sort newest\|oldest` 按发布时间重排(最新动态 / 最早出处) | `--sort oldest` |
|
|
480
|
+
| 登录态专业搜索 | 知乎 / 小红书等登录墙正文、JS 渲染页、登录站点接口直取 | `sub-skills/ego-search/scripts/ego_search.py`(默认关闭,见下) |
|
|
481
|
+
| DSH 原生工具 | 装成 DSH 插件后 `argo_search` / `argo_fetch` 等成为宿主一等工具,走 CLI 单发、零常驻 token 开销 | `dsh plugin add` 后直接调 |
|
|
482
|
+
| DSH web seam | 宿主内置 `web_search` / `web_fetch` 路由到 argo 引擎链与抓取链(HTTP 优先,Cloudflare / JS 渲染自动升级浏览器) | 插件默认注册,profile 里 pin `searchProvider` / `fetchProvider` |
|
|
483
|
+
| DSH 设置页 | 接入 / 工具 / 引擎 / 密钥 / 研究 / 高级 六分区,改完即生效;密钥进宿主凭证库、明文不回显 | 设置弹窗 `Cmd+,` → 左侧「Argo」 |
|
|
484
|
+
|
|
485
|
+
### 预算模式
|
|
486
|
+
|
|
487
|
+
| 模式 | 适合 | 行为 |
|
|
488
|
+
|------|------|------|
|
|
489
|
+
| `fast` | 简单问题、要速度 | 免费引擎优先,跳过付费精排 |
|
|
490
|
+
| `auto` | 默认日常 | 成本感知,质量与花费折中 |
|
|
491
|
+
| `deep` | 调研、综述 | 质量优先,可多用引擎 |
|
|
492
|
+
| `budget` | 额度紧 | 配额控制,用完降级 |
|
|
268
493
|
|
|
269
|
-
###
|
|
494
|
+
### 当前大致能力(v2.9.8)
|
|
270
495
|
|
|
271
|
-
|
|
496
|
+
Argo 干的事,一句话能说完:把一个问题按领域和语言分给合适的源,取回结果后按可信度排个序,交回给 Agent 的是能排序、能复核的材料。搜索、抓取、核验、本机文件检索走同一条管线,19 个 MCP 工具和 CLI 命令一一对应,装哪种形态都不缺能力。另有几个单点命令随用随取:argo tweet 打包 X 帖子,argo auth 管登录态,argo job 聚合招聘信息。
|
|
497
|
+
|
|
498
|
+
装成 DSH 插件后,这些能力直接变成宿主的原生工具:高频的搜索与抓取默认就开,长尾取证能力在设置页里按需勾选,argo 本体的 28 个行为开关(缓存、重排、去重、守卫、代理、TTL 等)也从环境变量搬进了面板。密钥写进宿主凭证库,明文不回显,改完即生效。
|
|
499
|
+
|
|
500
|
+
最近几个版本各修了一类问题。
|
|
501
|
+
|
|
502
|
+
v2.9.8 做的是路由精度与反馈闭环。issue #18 报告的三件事——「latest」被误判进实时新闻、人民网匹配不到时回默认 feed、local_bing 只命中「2026」——都已复现并修掉;顺着这条线回放真实查询,又把 16 类同类误触发收窄:品牌名里的「雪」、产品名里的「火山引擎」、UI 排障里的「图标」、工商与金融字段里的「代码」、代码语境里的「汇率」等。SERP 覆盖率门与 CJK 交叉验证同时落地,避免「有结果就算相关」。感谢 @wpp666 提供的复现与定位。
|
|
503
|
+
|
|
504
|
+
v2.9.7 修的是三个老毛病。DSH 宿主里的 AI 要读一个网址时,走的是宿主自带的抓取,短链跳转和 JS 挑战页经常直接失败,argo 的抓取链根本用不上;这版把宿主的读网址接到 argo 上,这类页面从失败变成成功,普通页面没有变化。路由候选池里原先混着 18 个「只能显式指定」的引擎,万一被自动选中,唯一的付费引擎就会悄悄扣费;如今候选池里没有它们,要用必须写明白。引擎每成功一次,熔断器都要加锁重写一次磁盘;健康状态下这版已经零文件开销,多个引擎的记账也合并成一笔事务。开源协议同时从 MIT 换成了 Apache-2.0,公司商用更放心。
|
|
505
|
+
|
|
506
|
+
这之后 DSH 插件又补了一层:设置页从五个分区扩到六个,「引擎」分区把 argo 本体的行为开关收进面板(原先只能改环境变量),密钥页能看出每个 key 来自凭证库、启动环境还是 .env,工具勾选、超时、并发、研究上限全部改完即生效。取消信号也贯通到了连接建立阶段——AI 中途喊停,正在拉起的 argo 子进程会被立刻杀掉,不再空等超时。
|
|
507
|
+
|
|
508
|
+
v2.9.6 做的是查询指令和传输层。搜「site:github.com 某某」这类查询,指令有时被当成普通词,有时解析了也不过滤;现在有统一的契约层,路由和缓存只认剥掉指令后的查询,site: 真正执行过滤并进缓存键,两次搜索不会串味。传输上,以前每次 POST 都重新付一次 TLS 握手,三百到五百毫秒;连接复用之后,常驻的 MCP 进程每笔查询都省这笔钱。这版还接入了官方 DeepSeek 搜索,按次计费,不进日常组合。
|
|
509
|
+
|
|
510
|
+
v2.9.5 补的是汇率和去重。问「人民币兑美元汇率」,查询会在宏观域空转一圈,最后给个百科词条,1.4 秒也没有答案;专属汇率域建起来后,675 毫秒直接给即期汇率和每日快讯。去重加了站后缀归一和模糊复核两层,标题带分隔符的官方文档不再被误杀到后排。
|
|
511
|
+
|
|
512
|
+
v2.9.4 修的是显式选引擎的场景。用 --engine X 指定引擎时,缓存有效期原先一刀切;补上域判定之后,缓存按域走,没有备选引擎时也不再同引擎空跑一次。
|
|
513
|
+
|
|
514
|
+
逐版本细节见「最近更新」,各版发布说明在 docs/。
|
|
515
|
+
---
|
|
516
|
+
|
|
517
|
+
## 引擎与路由
|
|
518
|
+
|
|
519
|
+
当前配置 **272** 个源(**235** 个免密钥开箱可用)、**97** 个业务域(以 `config.yaml` 与 `--list-engines` 为准)。
|
|
520
|
+
|
|
521
|
+
### 直连与垂类(节选)
|
|
522
|
+
|
|
523
|
+
| 引擎 | 场景 | 成本倾向 |
|
|
524
|
+
|------|------|----------|
|
|
525
|
+
| anysearch / duckduckgo | 通用 / 技术 | 免费 |
|
|
526
|
+
| sina_quote / tencent_quote / eastmoney | A 股行情 / 资金 | 免费 |
|
|
527
|
+
| finviz / seeking_alpha | 美股与海外金融 | 视配置 |
|
|
528
|
+
| imdb / itunes / thesportsdb | 影视 / 音乐 / 体育 | 免费为主 |
|
|
529
|
+
| local_openstreetmap / wikidata / wikipedia | 地理 / 组织 / 百科 | 免费 |
|
|
530
|
+
| arxiv / semantic_scholar / openalex | 学术 | 免费为主 |
|
|
531
|
+
| pubchem / gbif / rfc_editor | 化学 / 物种 / 标准 | 免费 |
|
|
532
|
+
| github / stackoverflow / pypi / npm | 代码与包 | 视配置 |
|
|
533
|
+
| byted / bocha / octen / yuanbao | 中文网页 / AI 搜索 | API / 低成本 |
|
|
534
|
+
| hkex / shfe / cfets / defillama / gleif | 港股公告 / 上期所 / 人民币中间价 / DeFi / 法人标识 | 免费 |
|
|
535
|
+
| zhihu / wechat_sogou | 中文观点 / 公众号 | API / 免费 |
|
|
536
|
+
| tavily / exa | 国际 / 语义 | 付费或额度 |
|
|
537
|
+
| stackexchange / doi / endoflife / nvd / flk_law | 问答官方 API / 论文元数据 / 生命周期 / 漏洞 / 法规原文 | 免费 |
|
|
538
|
+
| twitter / reddit / xiaohongshu / bilibili / weibo | 社交 UGC | 免费(部分需登录) |
|
|
539
|
+
|
|
540
|
+
### 本地零成本层(`local_*`)
|
|
541
|
+
|
|
542
|
+
不依赖独立的 SearXNG 服务。主路径用进程内 HTML / RSS / JSON 解析(如 `local_bing`、`local_sogou`、`local_google`、`local_arxiv` 等)。**多语言查询**时,路由会按语种动态改写引擎语言参数(例如 Bing `setlang`),并参与 RRF 融合。
|
|
543
|
+
|
|
544
|
+
### 登录态专业搜索(ego-search,默认关闭)
|
|
545
|
+
|
|
546
|
+
普通搜索拿不到知乎、小红书、微博、公众号等**需要登录**的内容,也常抓不回来 JS 渲染页 / 反爬页。ego-search 用**真实浏览器**去做这类搜索:继承登录态、抓登录墙后的正文、在已登录站点直接调接口取数据(如知乎搜索接口)。
|
|
547
|
+
|
|
548
|
+
**默认关闭**,需要时开启(在 argo 目录下运行):
|
|
272
549
|
|
|
273
550
|
```bash
|
|
274
|
-
|
|
275
|
-
export TAVILY_API_KEY="tvly-xxx" # Tavily AI 搜索
|
|
276
|
-
export BOCHA_API_KEY="xxx" # 博查搜索
|
|
277
|
-
export BRAVE_API_KEY="xxx" # Brave Search
|
|
278
|
-
export METASO_API_KEY="xxx" # 秘塔搜索
|
|
279
|
-
export FELO_API_KEY="xxx" # Felo AI 搜索
|
|
280
|
-
export ZHIHU_ACCESS_SECRET="xxx" # 知乎搜索
|
|
281
|
-
export GITHUB_TOKEN="ghp_xxx" # GitHub 代码搜索(可选,提高限频)
|
|
282
|
-
export WOLFRAM_APPID="xxx" # WolframAlpha
|
|
283
|
-
export WEB_SEARCH_API_KEY="xxx" # 字节搜索
|
|
551
|
+
python3 sub-skills/ego-search/scripts/ego_search.py enable
|
|
284
552
|
```
|
|
285
553
|
|
|
286
|
-
|
|
554
|
+
常用命令:`python3 sub-skills/ego-search/scripts/ego_search.py status`(查看状态)、`... disable`(关闭)、`search` / `fetch` / `api`(分别对应浏览器搜索、抓正文、调站点接口)。
|
|
555
|
+
|
|
556
|
+
**依赖**(装好其中一个就能用,两个都装更好):
|
|
557
|
+
|
|
558
|
+
| 依赖 | 官方项目 | 是什么 | 什么时候用 |
|
|
559
|
+
|------|----------|--------|-----------|
|
|
560
|
+
| **ego lite** | [lite.ego.app](https://lite.ego.app/) | 专门给 Agent 用的浏览器应用(仅 macOS),初始化后提供 `ego-browser` 命令 | 默认首选:独立空间,不抢你正在用的浏览器标签 |
|
|
561
|
+
| **WebBridge** | [Kimi WebBridge 官方帮助中心](https://www.kimi.com/zh-cn/help/kimi-webbridge/kimi-webbridge-introduction) | 浏览器扩展桥,复用 Chrome / Edge 里已登录的会话 | ego lite 没装,或想直接沿用日常登录态时 |
|
|
287
562
|
|
|
288
|
-
|
|
563
|
+
登录态搜到的结果**不写**公共搜索缓存(避免污染共享缓存),需要融合时用 `merge` 命令把常规结果和登录态结果放一起分析。
|
|
289
564
|
|
|
290
|
-
|
|
565
|
+
### 本机配置覆盖层(`config.local.yaml`)
|
|
566
|
+
|
|
567
|
+
`config.yaml` 是随 argo 一起发版的**公共配置**。本机状态(某个引擎账户欠费要临时停用、本机路径、本机调优)不该写进去——写了就会随升级推给所有用户。本机覆盖层解决这件事:复制示例文件,只写要改的键。
|
|
291
568
|
|
|
292
569
|
```bash
|
|
293
|
-
|
|
294
|
-
export EASTMONEY_APIKEY="xxx" # 东方财富 API Key(可选)
|
|
570
|
+
cp config.local.yaml.example config.local.yaml
|
|
295
571
|
```
|
|
296
572
|
|
|
297
|
-
### 缓存配置
|
|
298
|
-
|
|
299
573
|
```yaml
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
574
|
+
# 例:本机临时停用某引擎(路由自动改用别的源)
|
|
575
|
+
engines:
|
|
576
|
+
parallel:
|
|
577
|
+
enabled: false
|
|
578
|
+
disabled_reason: "本机账户欠费,路由走 parallel_free;充值后删掉这段"
|
|
305
579
|
```
|
|
306
580
|
|
|
307
|
-
|
|
581
|
+
- **深度合并**:只写要改的键,不用整份抄引擎声明(`engines.parallel.enabled: false` 只翻一个布尔,其余字段原样保留)。
|
|
582
|
+
- **优先级最高**:`config.yaml` → `engines/*.yaml` 外置声明 → `config.local.yaml`。
|
|
583
|
+
- **改完立即生效**:进程内缓存与跨进程磁盘缓存都认它。
|
|
584
|
+
- **不进公开仓**:`config.local.yaml` 已在 `.gitignore` 里,不会被提交或推送。
|
|
585
|
+
- **损坏不影响使用**:文件写坏时静默忽略,退化为只用 `config.yaml`。
|
|
586
|
+
- **派生件不含本机状态**:`engine_registry.yaml` / `quota_profiles.json` 等随仓发布的派生文件按公共配置生成,本机跑 `sync_backends` 不会把本地状态写进公开仓。
|
|
587
|
+
|
|
588
|
+
不想用时删掉或改名即可,`config.yaml` 的行为完全不受影响。
|
|
589
|
+
|
|
590
|
+
---
|
|
308
591
|
|
|
309
|
-
|
|
310
|
-
|----|-----|------|
|
|
311
|
-
| 金融(股票/基金) | 5 分钟 | 数据变化快 |
|
|
312
|
-
| 新闻 | 10 分钟 | 时效性要求高 |
|
|
313
|
-
| 实时事件 | 15 分钟 | 突发/赛事 |
|
|
314
|
-
| 通用搜索 | 1 小时 | 默认 |
|
|
315
|
-
| 深度研究 | 2 小时 | 论文/综述 |
|
|
316
|
-
| 常青内容 | 24 小时 | 百科/定义 |
|
|
592
|
+
## 使用示例
|
|
317
593
|
|
|
318
|
-
|
|
594
|
+
### 金融
|
|
319
595
|
|
|
596
|
+
```bash
|
|
597
|
+
python3 scripts/search.py "贵州茅台股价" --explain
|
|
598
|
+
# 典型:命中 stock_query → 行情快照源
|
|
320
599
|
```
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
│ ├── engine_registry.yaml # 三层引擎注册表(T1+T2 元数据)
|
|
328
|
-
│ ├── domain_profiles.json # TF-IDF 领域文档(语义路由用)
|
|
329
|
-
│ └── quota_profiles.json # 配额/成本配置
|
|
330
|
-
├── scripts/
|
|
331
|
-
│ ├── search.py # CLI 主入口
|
|
332
|
-
│ ├── route.py # 双层路由 + 降级链
|
|
333
|
-
│ ├── engines.py # 统一引擎执行器(18+ 解析器)
|
|
334
|
-
│ ├── config.py # 配置加载器(热加载)
|
|
335
|
-
│ ├── cache.py # 双层缓存(L1 LRU + L2 SQLite)
|
|
336
|
-
│ ├── tfidf_router.py # TF-IDF 语义路由引擎
|
|
337
|
-
│ ├── health_check.py # 引擎健康检测
|
|
338
|
-
│ ├── quota.py # 配额管理
|
|
339
|
-
│ ├── search_types.py # 结果标准化类型
|
|
340
|
-
│ └── benchmark.py # 性能基准测试
|
|
341
|
-
├── local-search/ # T2 本地引擎层(28 个零成本引擎)
|
|
342
|
-
│ ├── search_v3.py # 搜索执行 + 健康检查
|
|
343
|
-
│ └── config.json # 本地引擎配置
|
|
344
|
-
├── tests/
|
|
345
|
-
│ ├── test_unit.py # 单元测试
|
|
346
|
-
│ ├── test_integration.py # 端到端验收
|
|
347
|
-
│ ├── test_full.py # 完整集成测试
|
|
348
|
-
│ └── test_new_engines.py # 新引擎集成测试
|
|
349
|
-
└── docs/
|
|
350
|
-
└── architecture.md # 架构文档
|
|
600
|
+
|
|
601
|
+
### 学术
|
|
602
|
+
|
|
603
|
+
```bash
|
|
604
|
+
python3 scripts/search.py "transformer attention mechanism paper" --json
|
|
605
|
+
# domain 常为 academic,引擎组合含 arxiv 等
|
|
351
606
|
```
|
|
352
607
|
|
|
353
|
-
|
|
608
|
+
### 研究与核验
|
|
354
609
|
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
610
|
+
```bash
|
|
611
|
+
python3 scripts/research.py "2026 公募基金二季报 持仓结构" --depth deep --json
|
|
612
|
+
|
|
613
|
+
python3 scripts/search.py "同一查询" --json | \
|
|
614
|
+
python3 scripts/evidence.py "同一查询" --stdin --json
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
### MCP 工具一览(19)
|
|
618
|
+
|
|
619
|
+
| 工具 | 用途 |
|
|
620
|
+
|------|------|
|
|
621
|
+
| `argo_search` | 统一搜索 |
|
|
622
|
+
| `argo_local_search` | 本地文件搜索(非联网) |
|
|
623
|
+
| `argo_local_read` | 白名单本地文本预览(fail-closed) |
|
|
624
|
+
| `argo_recompute` | 受限子进程可复算(默认拒绝,需授权) |
|
|
625
|
+
| `argo_research` | 深度研究(含 social-sentiment 模式) |
|
|
626
|
+
| `argo_evidence` | 可信度评估 |
|
|
627
|
+
| `argo_clarify` | 意图消歧 |
|
|
628
|
+
| `argo_fetch` | 智能抓取(`mode=extract` 结构化提取) |
|
|
629
|
+
| `argo_crawl` | 站点爬取 |
|
|
630
|
+
| `argo_screenshot` | 页面截图 |
|
|
631
|
+
| `argo_pdf` | PDF 提取 |
|
|
632
|
+
| `argo_social_search` | 多平台社交搜索(`mode=sentiment` 舆情聚合) |
|
|
633
|
+
|
|
634
|
+
---
|
|
635
|
+
|
|
636
|
+
## 安装与配置
|
|
637
|
+
|
|
638
|
+
### 环境要求
|
|
360
639
|
|
|
361
|
-
|
|
640
|
+
| 项目 | 要求 |
|
|
641
|
+
|------|------|
|
|
642
|
+
| Python | 3.9+(命令行与 MCP 核心) |
|
|
643
|
+
| 依赖 | `pip install pyyaml`(仅此一个硬依赖) |
|
|
644
|
+
| 可选增强 | `pip install curl_cffi`(TLS 指纹伪造,MIT 许可)。装上后对指纹检测型反爬站(Cloudflare 等)免起浏览器即可抓取;缺失时自动降级,核心功能不受影响 |
|
|
645
|
+
| Node.js | **仅**在使用 `npx` 入口时需要 18+ |
|
|
646
|
+
| SearXNG | 不需要(内置本地引擎替代) |
|
|
362
647
|
|
|
648
|
+
### API Key(全部可选)
|
|
649
|
+
|
|
650
|
+
不配置则跳过对应引擎,免费引擎自动保底。**请用环境变量**,不要把真实 Key 写进仓库或贴到 Issue。
|
|
651
|
+
|
|
652
|
+
```bash
|
|
653
|
+
# 推荐(提升搜索质量)
|
|
654
|
+
export TAVILY_API_KEY="你的密钥"
|
|
655
|
+
export BOCHA_API_KEY="你的密钥"
|
|
656
|
+
export METASO_API_KEY="你的密钥"
|
|
657
|
+
export ZHIHU_ACCESS_SECRET="你的密钥"
|
|
658
|
+
|
|
659
|
+
# 可选
|
|
660
|
+
export BRAVE_API_KEY="你的密钥"
|
|
661
|
+
export FELO_API_KEY="你的密钥"
|
|
662
|
+
export GITHUB_TOKEN="你的密钥"
|
|
663
|
+
export WEB_SEARCH_API_KEY="你的密钥"
|
|
664
|
+
export ANYSEARCH_API_KEY="你的密钥"
|
|
665
|
+
export OCTEN_API_KEY="你的密钥"
|
|
666
|
+
export ARGO_KEENABLE_API_KEY="你的密钥" # 可选;Keenable 免费体验期
|
|
363
667
|
```
|
|
364
|
-
用法: python3 scripts/search.py [选项] 查询词
|
|
365
668
|
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
669
|
+
`config.yaml` 里只写 `{ENV_NAME}` 占位,不会提交明文密钥。
|
|
670
|
+
|
|
671
|
+
### 缓存
|
|
672
|
+
|
|
673
|
+
默认 SQLite 路径见 `config.yaml` 的 `cache.db_path`(一般为 `~/.cache/unified-search/cache.db`)。
|
|
674
|
+
|
|
675
|
+
| 类型 | 大致 TTL |
|
|
676
|
+
|------|----------|
|
|
677
|
+
| 金融 | 约 5 分钟 |
|
|
678
|
+
| 新闻 / 实时 | 约 10–15 分钟 |
|
|
679
|
+
| 通用 | 约 1 小时 |
|
|
680
|
+
| 研究 / 常青 | 约 2–24 小时 |
|
|
681
|
+
| 空结果 | 很短(避免把失败固化) |
|
|
682
|
+
|
|
683
|
+
### 常见问题
|
|
684
|
+
|
|
685
|
+
**不配 API Key 能用吗?**
|
|
686
|
+
能。内置大量本地零成本引擎和免费 API 源,不配 Key 时自动走免费路径。
|
|
687
|
+
|
|
688
|
+
**安装脚本和 npx 有什么区别?**
|
|
689
|
+
安装脚本适合固定装在本机、改配置、挂 Skill;npx 适合快速把 MCP 挂进 Agent。两者底层同一套 Python 代码。
|
|
690
|
+
|
|
691
|
+
**如何确认引擎是否正常?**
|
|
692
|
+
`python3 scripts/search.py --list-engines`,或加 `--explain`。
|
|
693
|
+
|
|
694
|
+
**会不会在仓库里复制多份代码?**
|
|
695
|
+
不会。推荐「一份源文件 + 符号链接」。用 `link_source.py`,不要 rsync 多副本。
|
|
696
|
+
|
|
697
|
+
---
|
|
698
|
+
|
|
699
|
+
## CLI 常用参数
|
|
700
|
+
|
|
701
|
+
```
|
|
702
|
+
python3 scripts/search.py [选项] 查询词
|
|
703
|
+
|
|
704
|
+
--engine, -e 引擎,默认 auto
|
|
705
|
+
--max-results, -n 条数,默认 5
|
|
706
|
+
--depth, -d fast | balanced | deep
|
|
707
|
+
--mode fast | auto | deep | budget
|
|
708
|
+
--no-cache 跳过缓存
|
|
709
|
+
--explain 打印路由说明
|
|
373
710
|
--json JSON 输出
|
|
374
|
-
--timeout, -t
|
|
375
|
-
--list-engines
|
|
376
|
-
--progress 打印进度阶段(调试用)
|
|
711
|
+
--timeout, -t 超时秒数
|
|
712
|
+
--list-engines 列出引擎
|
|
377
713
|
```
|
|
378
714
|
|
|
379
|
-
|
|
715
|
+
---
|
|
380
716
|
|
|
381
|
-
|
|
717
|
+
## 设计取舍
|
|
382
718
|
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
719
|
+
1. **先服务 Agent 吸收,再谈链接数量。**
|
|
720
|
+
2. **免费与本地优先,付费可选增强。**
|
|
721
|
+
3. **失败要可观测**:空结果、超时、熔断分开标,不静默吞掉。
|
|
722
|
+
4. **配置驱动扩引擎**,`config.yaml` 为唯一来源。
|
|
723
|
+
5. **唯一来源安装**:链接入口、不 rsync 多副本。
|
|
724
|
+
6. **不把社交当真理库**;社交内容适合扩维与舆情,不适合单独当真值。
|
|
387
725
|
|
|
388
|
-
|
|
726
|
+
---
|
|
389
727
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
728
|
+
## 适用场景
|
|
729
|
+
|
|
730
|
+
- Claude Code / Grok Build / Codex / Kimi 等 **Agent 的搜索后端**
|
|
731
|
+
- **多语言、多领域**日常问答:中英日韩等 + 金融 / 影视 / 体育 / 学术 / 代码
|
|
732
|
+
- 脚本与流水线里需要 **可复现、可缓存** 的检索
|
|
733
|
+
- 事实核查、金融公开信息、实体与公开资料的 **多源对照**
|
|
734
|
+
|
|
735
|
+
不太适合单独承担:平台内高级互动定榜、需要长期养服务的最大召回聚合器(已用内嵌本地引擎替代外挂 SearXNG 主路径)。
|
|
736
|
+
|
|
737
|
+
---
|
|
738
|
+
|
|
739
|
+
## 目录结构(简)
|
|
740
|
+
|
|
741
|
+
```
|
|
742
|
+
argo/
|
|
743
|
+
├── README.md # 中文介绍(默认)
|
|
744
|
+
├── README.en.md # English
|
|
745
|
+
├── README.ja.md # 日本語
|
|
746
|
+
├── README.ko.md # 한국어
|
|
747
|
+
├── README.es.md # Español
|
|
748
|
+
├── SKILL.md
|
|
749
|
+
├── package.json # npx 入口
|
|
750
|
+
├── bin/argo.js # Node 启动 MCP
|
|
751
|
+
├── bin/argo # Python CLI
|
|
752
|
+
├── config.yaml # 引擎与域配置(来源)
|
|
753
|
+
├── assets/readme/ # README 视觉资源
|
|
754
|
+
├── backends/
|
|
755
|
+
├── mcp/ # 多客户端 MCP 注入配置(clients.yaml)
|
|
756
|
+
├── scripts/ # search / research / mcp / install …
|
|
757
|
+
├── sub-skills/local-search/
|
|
758
|
+
├── sub-skills/ego-search/ # 登录态专业搜索(默认关闭,开启命令见正文)
|
|
759
|
+
├── tests/
|
|
760
|
+
└── docs/ # 含 ENGINE_CATALOG.md(搜索源使用文档,生成)
|
|
761
|
+
```
|
|
762
|
+
|
|
763
|
+
---
|
|
764
|
+
|
|
765
|
+
## 最近更新
|
|
766
|
+
|
|
767
|
+
只列最近三个版本。完整历史见[版本记录](#版本记录),逐版详情见 [Releases](https://github.com/taxueseek/argo/releases)。
|
|
768
|
+
|
|
769
|
+
### 下一版:腾讯元宝搜索 + 免 key 三源 + 结构化失败清单
|
|
770
|
+
|
|
771
|
+
- **新增元宝搜索**:中文一手 / 官方口径源,与 bocha、byted 的「门户 + 自媒体」互补;进中文通用域第 2 位做权威源对冲;key 用 `ARGO_YUANBAO_API_KEY`
|
|
772
|
+
- **免 key 可用面再扩三源**:`tavily_free`、`keenable_free`、`exa` 匿名回退,不配任何 key 也能用
|
|
773
|
+
- **失败能照着处置**:失败按来源与类别给出「可重试 / 换源 / 去配 key」与建议,结果同时带 `meta.uncertainty` 综合可信度
|
|
774
|
+
- **本机配置覆盖层 `config.local.yaml`**:本机调优不再写进随版发布的公共配置
|
|
775
|
+
- **DSH 设置页新增「引擎」分区**:argo 本体的 28 个行为开关从环境变量搬进面板
|
|
776
|
+
|
|
777
|
+
### v2.9.7:架构收口 + 宿主网页抓取交给 argo + License 转 Apache-2.0
|
|
778
|
+
|
|
779
|
+
- **License 变更**:MIT → Apache License 2.0,专利授权明示,使用方式不变
|
|
780
|
+
- **宿主抓不到的网页现在能抓到**:短链跳转、协议升级、跳转壳与 Cloudflare / JS 挑战页交给 argo 的抓取链(HTTP 优先,遇反爬自动升级浏览器);默认开启,`fetchProviderEnabled` 可关
|
|
781
|
+
- **auto 档不会再误调付费引擎**:18 个「只接受显式指定」的引擎从路由候选池剔除,只有 `--engine` 点名才走
|
|
782
|
+
- **换新 key 下一跳就恢复**:配额耗尽的引擎不再等恢复窗口到点,路由缓存同步重算
|
|
783
|
+
- **crawl / research / MCP 里跑 JS 不再崩**
|
|
784
|
+
|
|
785
|
+
### v2.9.6:DeepSeek Search 接入 + 查询操作符 + 传输层去重付费
|
|
786
|
+
|
|
787
|
+
- **新增 `deepseek_search` 官方引擎**:延迟 445-510ms,权威分级 / rerank_score / 发布时间三项唯一全覆盖,`--since/--until` 时间窗真正生效;按次计费,需自备 `DEEPSEEK_API_KEY`,无 key 自动跳过
|
|
788
|
+
- **查询操作符收敛为契约层**:`site:` / `-site:` / `-词` / `lang:` / `after:` / `before:` 统一处理,`site:` 做真正的后置过滤
|
|
789
|
+
- **同一个 POST 不再重复付费**:连接池复用,同连接第二次请求省 320ms(anysearch)/ 561ms(octen)
|
|
790
|
+
- **两处取链与排序缺陷修复**:同引擎结果同分导致输出退化;Bing 跳转壳不还原导致近 7 天 40.2% 查询空手而归
|
|
791
|
+
- **路由决策有了快照门**:路由翻转变成可 diff 的 golden,不再静默变脸
|
|
792
|
+
|
|
793
|
+
---
|
|
794
|
+
|
|
795
|
+
## 版本记录
|
|
796
|
+
|
|
797
|
+
| 版本 | 说明 |
|
|
798
|
+
|------|------|
|
|
799
|
+
| **v2.9.8** | **路由精度审计 + issue #18/#19 修复 + 测试态隔离**:回放真实查询收窄 16 类误触发(品牌名/产品名/字段名/ASCII 子串),SERP 覆盖率门与 CJK 交叉验证落地;nightly 空日志、people_daily 默认 feed、缓存命中守卫一并收口;全量测试按用例隔离 adaptive/熔断状态。感谢 @wpp666 的复现与定位。详见 [发布说明](docs/RELEASE_NOTES_v2.9.8.md) |
|
|
800
|
+
| **v2.9.7** | **架构收口 + DSH web_fetch 占位 + License 转 Apache-2.0**:宿主 web_fetch 改走 argo 抓取链,JS 挑战页与跨源跳转从失败变成功;18 个 explicit_only 引擎从路由候选池剔除,堵住 auto 档误调付费引擎扣费;熔断、记账、配额恢复与路由缓存一批状态契约收口。 |
|
|
801
|
+
| **v2.9.6** | **DeepSeek Search 接入 + 查询操作符契约 + 传输层去重付费 + 路由快照门**:新引擎 `deepseek_search` 默认启用(445-510ms,权威分级 / rerank_score / 时间窗唯一全覆盖);查询操作符收敛为契约层;POST 连接池复用省 320-561ms/次;路由决策变成可 diff 的 golden。 |
|
|
802
|
+
| **v2.9.5** | **汇率查询专域 + 去重双轨 + 排序误杀修复 + daemon 多检出隔离**:新增 `fx_query` 域,汇率与中间价直接出即期与快讯,不再落进百科词条;去重补站后缀归一与模糊复核;daemon 落盘名字按检出目录隔离,多 worktree 不再互抢。 |
|
|
803
|
+
| **v2.9.4** | **显式引擎域归因 + 恢复链止损 + 门禁同步**:`--engine X` 补域判定,修复缓存 TTL 一刀切 general;显式单引擎无备选时不再空跑恢复链;`org_entity` / `fund_query` 域规则补限定词。 |
|
|
804
|
+
| **v2.9.3** | **X 帖子完整打包 + 浏览器登录态车道 + 本地链质速双修**:新增 `argo tweet`(正文 / 串 / 引用 / 转发与互动数据一次打包)与 `argo auth`(站点持久登录态,cookie 只存 Chrome 加密存储);本地中文链跳转壳无会话解析,保留结果 1→5 条;共识宽限自适应提速。 |
|
|
805
|
+
| **v2.9.2** | **DSH 0.2.1-alpha.1 适配验证 + 路由/守卫一批修复 + js-run 子技能**:DSH 三形态在新版实测启用,`argo mcp inject` 覆盖到第 7 宿主;TF-IDF 弱证据辅源化、死源与熔断槽位回填、配额耗尽引擎隔离;新增 js-run 子技能,不开浏览器跑网页 JS。 |
|
|
806
|
+
| **v2.9.1** | **内容质量优化 + 对抗内容农场 + 适配最新版本**:提升低质批量生成内容的识别与过滤;本地搜索新增自身安装树守卫,避免结果被自身源码污染。 |
|
|
807
|
+
| **v2.9.0** | **搜索源优化 + 插件与 CLI 持平 + 多语言小语种**:搜索源 237→253(免配置 198→219),新增 14 个小语种源与 CORE 全文源,百度与搜狗修活;导入链 −79%,重排序 33ms→1.5ms;新增 `argo stats` 本地使用日志。详见 [发布说明](docs/RELEASE_NOTES_v2.9.0.md) |
|
|
808
|
+
| **v2.8.9** | **输出减重 + 检索更全更快 + 5 个外媒与核查源**:默认输出 15.5KB→5.2KB(−66%,同一份结果不再写三遍);召回 +35%、抓取时延 −30%、正文结构保真 0/6→6/6;新增卫报 / France 24 / 德国之声 / FactCheck.org / Full Fact 五个免密钥源,gdelt 死源下线。详见 [发布说明](docs/RELEASE_NOTES_v2.8.9.md) |
|
|
809
|
+
| **v2.8.8** | **真实用户报障修复(#12 密钥别名静默失效、#13 抓取链不走代理)+ 全面提速 + 搜索源 218 → 235**:出口调度统一走 `ARGO_PROXY` / 按域规则并尊重 `NO_PROXY`;命令冷启动 2.1s→0.55s;新增 `argo answer` 直答与 `argo watch` 网页观察,14 个免密钥源。详见 [发布说明](docs/RELEASE_NOTES_v2.8.8.md) |
|
|
810
|
+
| **v2.8.7** | **218 源 / 89 域 + 取信技巧三通道 + 路由触发纪律 + macro 零结果修复**:批次七 / 八 / 九累计 50 个新源;抓取链新增 llms.txt 与 `.md` 直出探测;`--engine` 逗号多引擎修复,中国宏观查询国家统计局前置。详见 [发布说明](docs/RELEASE_NOTES_v2.8.7.md) |
|
|
811
|
+
| **v2.8.6** | **hedged 竞速 + 知乎三源分工 + 声明式语言分发 + 可达性门 + 学术检索协议**:首引擎宽限窗竞速,快引擎只付 1 次调用;zhihu 全网搜接入并防饿死;子查询语言与学术分发;死源显形检查。详见 [发布说明](docs/RELEASE_NOTES_v2.8.6.md) |
|
|
812
|
+
| **v2.8.5** | **DSH 插件工具原生化 + MCP 默认关闭 + Windows 兼容 + 配额自愈 + 抓取 deadline**:`argo_search` / `argo_fetch` 以原生一等工具注册,默认可用;Windows 全平台兼容;配额耗尽自动识别、切备用源、周期结束自愈,无需人工改配置。详见 [发布说明](docs/RELEASE_NOTES_v2.8.5.md) |
|
|
813
|
+
| **v2.8.4** | **本地数据融合 + 多客户端 MCP 接入 + 结构化搜索增强 + Keenable**:深度研究可吃本地一手数据(`file_inputs` + `recompute` 可复算执行器);`argo mcp inject` 一条命令注入 6 个客户端;查询归一化与复杂度门控。详见 [发布说明](docs/RELEASE_NOTES_v2.8.4.md) |
|
|
814
|
+
| **v2.8.3** | **多语言路由修复 + anysearch 进程化 + weighted RRF**:anysearch 从子进程改为进程内调用,省 Python 启动开销;weighted RRF 新增动态可靠性因子,弱源降权;ja/ko 与欧语言查询返回目标语言。详见 [发布说明](docs/RELEASE_NOTES_v2.8.3.md) |
|
|
815
|
+
| **v2.8.2** | **Windows 全平台 + 证据语义统一**:全链路 UTF-8 防线根治 GBK 崩溃,Chrome / Edge 自动发现;npm 包补 `dsh.bundle` 声明,一行命令即得 MCP 工具;`wide_research` 新增质量门与递归硬保护。详见 [发布说明](docs/RELEASE_NOTES_v2.8.2.md) |
|
|
816
|
+
| **v2.8.0** | **证据完整链路 + 求职 v3 + 天气双源**:搜索输出自带证据门控,`--verify` 一键核验并记住已核实链接;`argo job` 求职搜索 v3(结构化字段 + 增量监控);天气双源并行。详见 [发布说明](docs/RELEASE_NOTES_v2.8.0.md) |
|
|
817
|
+
| **v2.7.3** | **本轮修复 + 引擎激活**:引擎层接入 HTTP 客户端(UA 轮换 / 重试 / 重定向跟随,arxiv 从 5s 超时变 2s 内 10 条);TF-IDF 强语义注入激活 25 个此前永远选不中的垂直引擎;70 域缓存 TTL 全覆盖;国际引擎中文查询 URL 编码修复。详见 [发布说明](docs/RELEASE_NOTES_v2.7.3.md) |
|
|
818
|
+
| **v2.7.2** | **登录态专业搜索**:新增 ego-search 子技能(默认关闭,开启方法与依赖见上方「登录态专业搜索」节);搜索保底与多意图路由;日韩文查询不再混入中文引擎。详见 [发布说明](docs/RELEASE_NOTES_v2.7.2.md) |
|
|
819
|
+
| **v2.7.1** | **安全加固 + 路由修复**:SSRF 防护(URL 白名单 + IP 段检查);路由健康状态语义漂移根因修复,只对 `local_*` 做健康判定;深度研究 local_first 浪费修复。详见 [发布说明](docs/RELEASE_NOTES_v2.7.1.md) |
|
|
820
|
+
| **v2.7.0** | **垂直结构化模态卡**:内建 `bocha` / `bocha_ai` 原生引擎,`modal_card` 域统一识别火车票 / 油价 / 贵金属 / 万年历 / 星座等实时卡片;修复 `bocha` web 解析缺陷。详见 [发布说明](docs/RELEASE_NOTES_v2.7.0.md) |
|
|
821
|
+
| **v2.6.2** | 合并独立改进线:网络环境感知 / 加权 RRF 与语义缓存 / 自适应引擎禁用 / 内容安全与查询变体 / 三大垂直引擎;含 v2.6.1 路由修复。详见 [发布说明](docs/RELEASE_NOTES_v2.6.2.md) |
|
|
822
|
+
| **v2.6.1** | v2.6.0 修复版:路由误伤修复(`capital of` 不再抢 fact_check);版本同步。详见 [发布说明](docs/RELEASE_NOTES_v2.6.1.md) |
|
|
823
|
+
| **v2.6.0** | **多语言搜索**(检测 / 引擎参数 / 跨语言回退);影视·体育·地理·组织·媒体等垂直补全;约 120+ 源。详见 [发布说明](docs/RELEASE_NOTES_v2.6.0.md) |
|
|
824
|
+
| **v2.5.1** | 金融/宏观/化学等垂直答案源加厚;引擎分层 + combo 预算;[v2.5.1 说明](docs/RELEASE_NOTES_v2.5.1.md) |
|
|
825
|
+
| **v2.5.0** | 安装脚本 + npx;查询改写与路由拆开;路由热路径缓存;MCP 紧凑响应 |
|
|
826
|
+
| **v2.4.0** | 路由低分回退与社交误吸过滤;缓存 depth / 柔性命中;熔断与负缓存;`engine_outcomes` |
|
|
827
|
+
| **v2.2–v2.3** | 证据两阶段、中文信源表、content_signals、fetch 栈、引擎扩充 |
|
|
828
|
+
| **v2.1** | 社交引擎层(多平台 UGC) |
|
|
829
|
+
| **v1.x** | 统一命名为 Argo,多引擎路由与双层缓存成型 |
|
|
830
|
+
|
|
831
|
+
更细说明见 `docs/RELEASE_NOTES_v2.7.0.md` 与 `docs/OPTIMIZATION_ROADMAP_v2.4.md`。
|
|
832
|
+
|
|
833
|
+
---
|
|
393
834
|
|
|
394
835
|
## 贡献
|
|
395
836
|
|
|
396
|
-
|
|
837
|
+
欢迎提 Issue 与 Pull Request。改路由或证据逻辑时,请尽量补对应测试:
|
|
397
838
|
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
839
|
+
```bash
|
|
840
|
+
python3 -m pytest tests/test_unit.py tests/test_multilingual.py -q
|
|
841
|
+
python3 scripts/regression_p0p1.py --offline
|
|
842
|
+
python3 scripts/matrix_search_eval.py --offline
|
|
843
|
+
python3 scripts/ab_eval_p0p1.py # 可选,含在线实测
|
|
844
|
+
```
|
|
845
|
+
|
|
846
|
+
提交前请确认:不含真实 API Key、本机绝对路径、账号 cookie 等敏感信息。本机 Skill 路径请写在 `installs.local.yaml`(已忽略)。
|
|
403
847
|
|
|
404
848
|
## License
|
|
405
849
|
|
|
406
|
-
|
|
850
|
+
Apache License 2.0 © 2026 [taxueseek](https://github.com/taxueseek)
|
|
851
|
+
|
|
852
|
+
<p align="center">
|
|
853
|
+
<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>
|
|
854
|
+
</p>
|
|
855
|
+
|
|
856
|
+
---
|
|
857
|
+
|
|
858
|
+
> 好的搜索不是让你看得更多,是让你更敢下结论——以及知道什么时候还不该下结论。
|
|
407
859
|
|
|
408
860
|
---
|
|
409
861
|
|
|
410
|
-
|
|
862
|
+
## 生态联动:与 Invest 系列投资技能集成
|
|
863
|
+
|
|
864
|
+
本引擎的财经垂直源(`eastmoney`、`nbs_stats`、`jin10`、`nbs`、`fred`、`eurostat`、`finviz` 等)已接入 [invest 系列投资技能](https://github.com/taxueseek/taxue-invest)。
|
|
865
|
+
|
|
866
|
+
invest-cli 通过 `info`(`invest-cli info <词> --engine eastmoney`)与 `intent macro` 直接复用 argo 的财经 / 宏观 / 资讯取数,用于环节配额、低成本、多源数据,与 invest-cli 的结构化数据层(Wind / 盈米 / 东财 / yfinance / 天天基金)协同。
|
|
867
|
+
|
|
868
|
+
> 最新版已完成 argo 数据与 invest 系列技能(v2.0.5)的集成。
|