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.es.md
ADDED
|
@@ -0,0 +1,777 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="assets/readme/hero.svg" width="100%" alt="Argo: búsqueda e investigación profunda para agentes, 272 fuentes de búsqueda, enrutamiento por dominio e idioma y evidencia absorbible como salida">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="README.md">中文</a> ·
|
|
7
|
+
<a href="README.en.md">English</a> ·
|
|
8
|
+
<a href="README.ja.md">日本語</a> ·
|
|
9
|
+
<a href="README.ko.md">한국어</a> ·
|
|
10
|
+
<strong>Español</strong>
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
<p align="center">
|
|
14
|
+
<a href="#qué-es">Intro</a> ·
|
|
15
|
+
<a href="#por-qué-supera-a-la-búsqueda-del-modelo-la-búsqueda-ia-y-el-metasearch">Comparar</a> ·
|
|
16
|
+
<a href="#enrutamiento-según-la-consulta">Prueba</a> ·
|
|
17
|
+
<a href="#cómo-funciona">Mecanismo</a> ·
|
|
18
|
+
<a href="#inicio-rápido">Inicio rápido</a> ·
|
|
19
|
+
<a href="#capacidades">Capacidades</a> ·
|
|
20
|
+
<a href="#instalación-y-configuración">Config</a> ·
|
|
21
|
+
<a href="#actualizaciones-recientes">Actualizaciones</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
|
+
> **Este repositorio es parte del conjunto de plugins DeepSeek Harness de taxueseek** ([dsh-files](https://github.com/taxueseek/dsh-files) 39★). Serie de habilidades del mismo autor: [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: búsqueda e investigación profunda para agentes
|
|
35
|
+
|
|
36
|
+
## Qué es
|
|
37
|
+
|
|
38
|
+
**Argo es una herramienta de búsqueda e investigación profunda que vive dentro del agente, y también puede obtener información de las páginas web relevantes. Detrás tiene 272 fuentes de búsqueda que cubren 97 dominios de negocio, además de búsqueda básica sobre archivos locales. Entre los proyectos de búsqueda de código abierto, su capacidad de búsqueda es muy potente.**
|
|
39
|
+
|
|
40
|
+
Permite configurar claves API para mejorar la calidad de búsqueda (las fuentes con clave suelen dar mejores resultados; si falta la clave, se omiten automáticamente), y también cuenta con motores gratuitos y locales como red de seguridad automática. Cubre 18 idiomas, entre ellos chino, inglés, japonés y coreano, y da soporte a escenarios verticales como finanzas, academia, cine, deportes, código y macroeconomía.
|
|
41
|
+
|
|
42
|
+
## Sub-habilidades
|
|
43
|
+
|
|
44
|
+
Las capacidades de Argo se organizan en cuatro sub-habilidades, y cada una es un pipeline independiente que se puede usar por separado:
|
|
45
|
+
|
|
46
|
+
| Sub-habilidad | Capacidad |
|
|
47
|
+
|---------------|-----------|
|
|
48
|
+
| **local-search** | Búsqueda de archivos locales + agregador local de coste cero (32 motores locales). Busca símbolos de código, nombres de archivo, texto completo de documentos y estructura de archivos. Puede fusionarse con los resultados web: con un interruptor, los aciertos locales se unen a la misma búsqueda |
|
|
49
|
+
| **local-seek** | Búsqueda semántica local (BM25 + vectores híbridos) sobre notas, memoria y bases de conocimiento. Tres niveles progresivos: primero ubica el archivo, luego revisa el contexto y al final lee en detalle el pasaje |
|
|
50
|
+
| **ego-search** | Búsqueda profesional con sesión iniciada. Para contenido que exige login, como Zhihu, Xiaohongshu o cuentas de WeChat, usa un navegador real con la sesión activa. Desactivado por defecto; se activa cuando hace falta |
|
|
51
|
+
| **js-run** | Ejecuta JS de páginas web sin navegador. Corre scripts de página del tipo «detección de entorno + cálculo puro» sin abrir un navegador; P50 de contexto por ejecución: ~1 ms |
|
|
52
|
+
|
|
53
|
+
Las cuatro sub-habilidades cubren la cadena completa, desde buscar en la máquina hasta buscar en toda la web y detrás de muros de login. En la mayoría de casos basta con local-search + búsqueda en red; para escenarios especiales se activan ego-search y js-run.
|
|
54
|
+
|
|
55
|
+
## Plugin DSH
|
|
56
|
+
|
|
57
|
+
Argo también es un plugin de DeepSeek Harness: se instala con una sola línea.
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
dsh plugin --profile web add "github:taxueseek/argo"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Tras instalarlo, reinicia `dsh web` y queda activo. La búsqueda y el fetch pasan a ser herramientas nativas de primera clase: no dependen de una conexión MCP ni ocupan contexto permanente. Además hay 1 `wide_research` de investigación en paralelo y 19 herramientas MCP que se activan bajo demanda. Las formas de integrarlo están más abajo.
|
|
64
|
+
|
|
65
|
+
### Tres canales de invocación, un mismo conjunto de capacidades
|
|
66
|
+
|
|
67
|
+
El mismo núcleo de recuperación de argo (mismos motores, misma compresión, mismas guardas) abre tres canales dentro de DSH. Degradan automáticamente según la capacidad del host y se respaldan entre sí:
|
|
68
|
+
|
|
69
|
+
| Canal | Por defecto | Qué hace |
|
|
70
|
+
|-------|-------------|----------|
|
|
71
|
+
| **Herramientas nativas de primera clase** | Activado | `argo_search` / `argo_fetch` y demás se registran con `ctx.tools.register` y se ejecutan como disparos únicos de CLI (`--call`), reutilizando la pila de motores y guardas exacta que usa MCP — **sin conexión MCP y con coste de tokens residentes cero** |
|
|
72
|
+
| **Web seam nativo** | Activado | Registra `argo` como proveedor tanto de búsqueda como de fetch, de modo que el `web_search` integrado del host se enruta a la cadena de motores de argo y el `web_fetch` a su cadena de fetch (HTTP primero, con escalado automático a un navegador anti-detección en páginas con Cloudflare / renderizado JS) |
|
|
73
|
+
| **Forma MCP** | Bajo demanda | La superficie completa de 19 herramientas `mcp__argo__*`. Las definiciones de herramientas se inyectan en el contexto en cada ronda y sobreviven a la compactación (≈3.7K tokens/ronda medidos para 19 herramientas), y la ruta caliente ya está cubierta por las herramientas nativas y el web seam — por eso no se monta por defecto. Descomenta la línea `mcp-argo` del profile patch cuando necesites las herramientas de forense de cola larga |
|
|
74
|
+
|
|
75
|
+
Hay además un `wide_research`: planifica pistas complementarias (`depends_on` las escalona, en paralelo por defecto) → recolección de evidencia con subagentes concurrentes acotados → un libro de fuentes (solo se registran URLs http(s)) → un informe de síntesis. La salida lleva `quality_gate_results` (`conclusion_cap`: low/medium/high); cuando `passed=false` se rebaja el tono y se verifican las fuentes del libro antes de cualquier conclusión. La lista de permitidos de herramientas de evidencia del worker escribe tanto nombres MCP como nativos (semántica allow), así que funciona con o sin MCP montado: con MCP usa la superficie completa, sin él cae a `argo_search` / `argo_fetch` y al `web_search` / `web_fetch` del host.
|
|
76
|
+
|
|
77
|
+
Para una pregunta cotidiana usa `argo_search`; para forense con un solo agente usa `argo_research`; para comparación multiperspectiva con libro de citas usa `wide_research`. Los workers solo pueden llamar a herramientas de evidencia de argo por defecto y no pueden volver a llamar a `argo_research` (protección dura: las anulaciones de usuario no funcionan).
|
|
78
|
+
|
|
79
|
+
### Página de ajustes integrada: seis secciones, efectiva al guardar
|
|
80
|
+
|
|
81
|
+
El plugin incluye una página de ajustes del lado del navegador con dos entradas: el elemento "Argo" del menú izquierdo del popup de ajustes (`Cmd+,`), o Ajustes > Plugins > Argo (una tarjeta de resumen del mismo panel: clic para abrir).
|
|
82
|
+
|
|
83
|
+
<p align="center">
|
|
84
|
+
<img src="assets/readme/settings-tools.webp" width="100%" alt="Ajustes de Argo, Herramientas: 18 herramientas nativas — argo_search / argo_fetch activos en la ruta caliente, 16 de cola larga bajo demanda, con tiempo de espera y límite de texto debajo">
|
|
85
|
+
</p>
|
|
86
|
+
|
|
87
|
+
<p align="center">
|
|
88
|
+
<img src="assets/readme/settings-engines.webp" width="100%" alt="Ajustes de Argo, Motores: los 28 interruptores de comportamiento del núcleo pasan al panel — caché / rerank TF-IDF / cotejo numérico / dedup MinHash / guardia SERP y umbral de dedup; las filas sin configurar muestran el valor por defecto y se aplican al guardar">
|
|
89
|
+
</p>
|
|
90
|
+
|
|
91
|
+
<p align="center">
|
|
92
|
+
<img src="assets/readme/settings-keys.webp" width="100%" alt="Ajustes de Argo, Claves: la búsqueda oficial de DeepSeek aparece como «configurada · almacén de credenciales» y comparte una clave con el web_search del host; las claves de Tencent Yuanbao / Tavily se definen, actualizan o borran sin mostrar el texto plano">
|
|
93
|
+
</p>
|
|
94
|
+
|
|
95
|
+
| Sección | Qué controla |
|
|
96
|
+
|---------|--------------|
|
|
97
|
+
| **Acceso** | Interruptores del web seam `web_search` / `web_fetch`; comando y argumentos de entrada del motor (npx o `mcp_server.py` local); tiempos de espera de búsqueda/fetch, límite de cuerpo, recuperación de conexiones inactivas, conexiones concurrentes |
|
|
98
|
+
| **Herramientas** | Casillas para las 18 herramientas nativas de primera clase (por defecto solo `argo_search` / `argo_fetch`); tiempo de espera por llamada y límite de texto devuelto |
|
|
99
|
+
| **Motores** | Los interruptores de comportamiento del propio argo (antes variables de entorno, lista curada de 28: caché / reordenación TF-IDF / verificación cruzada numérica / deduplicación MinHash / guardia SERP, Jina / UA móvil / capa de fetch Parallel, capa de evidencia semántica, gracia de cobertura y anchura de cola, lista de motores activos, proxy, raíces de búsqueda local y lista de lectura permitida, calentamiento / registro de uso / pool de conexiones / TTL varios). Los de tipo interruptor se aplican al instante; los de número / texto / lista se guardan en grupo; las filas sin configurar muestran el valor por defecto de argo y se marcan como "default". Los interruptores de autorización (recompute, URLs intranet) quedan deliberadamente fuera del panel |
|
|
100
|
+
| **Claves** | Definir, actualizar y borrar claves de motores habituales; muestra "configurada / sin configurar + capa de origen (almacén de credenciales / entorno de arranque / .env) + estado de solo lectura", sin mostrar el texto plano; cada fila tiene una casilla Reenviar, equivalente a añadir el nombre de referencia a `keyRefs` |
|
|
101
|
+
| **Investigación** | límites de worker / pistas / fuentes por pista / tokens y directorio de salida de informes |
|
|
102
|
+
| **Avanzado** | listas allow / deny de herramientas del worker, lista de reenvío de credenciales |
|
|
103
|
+
|
|
104
|
+
Guardar surte efecto de inmediato (todo es configuración volátil): el conjunto de herramientas nativas se registra y se retira según las casillas; los tiempos de espera, la concurrencia y los límites de investigación se leen en la siguiente llamada; los interruptores de motores se escriben como `argoEnv` (un `KEY=VALUE` por línea) en el entorno del subproceso de argo y se aplican a la siguiente conexión nueva (las conexiones antiguas del pool se recuperan con `searchIdleMs`, 60 s por defecto). Los campos estructurales (`toolName`, `provider`, `searchProviderId`, `fetchProviderId`) no están en la página de ajustes: siguen yendo por el profile patch y necesitan reinicio.
|
|
105
|
+
|
|
106
|
+
**Seguridad de claves**: las claves se escriben en el almacén de credenciales de DSH (el mismo sitio que la página de Modelos) — nunca en la configuración del plugin, nunca en registros, nunca se muestran. La prioridad de resolución de credenciales es **capa de archivo almacenado > entorno de arranque > .env del proyecto > .env del hogar**: guardar en el panel (o en la página de Modelos) sobrescribe los valores antiguos del entorno de arranque, y el subproceso de argo toma la clave nueva en la siguiente conexión nueva; Borrar solo elimina el valor del almacén de credenciales, así que las claves aportadas por variables de entorno o `.env` reaparecen. La página de ajustes es solo una entrada de escritura para el dominio de credenciales: las lecturas las sigue haciendo el host en cada llamada.
|
|
107
|
+
|
|
108
|
+
**Clave oficial de DeepSeek, suministrada de forma nativa**: el motor `deepseek_search` de argo (el `api.deepseek.com/v1/tools/search` oficial, cuyos resultados traen niveles de autoridad / puntuaciones de rerank / fechas de publicación) **comparte una sola clave con el backend de búsqueda oficial de DSH**. El plugin la obtiene mediante el credential seam nativo de DSH, así que no hace falta configuración manual: la resolución es `ctx.get('credentials').resolve('DEEPSEEK_API_KEY')`, resuelta en cada llamada — tras rotar la clave en la página de Modelos web, la siguiente conexión nueva la usa, sin reiniciar el plugin. El plugin nunca lee archivos de claves, nunca escribe en disco, nunca registra; el valor de la clave llega al entorno del subproceso de argo solo en memoria, y ningún mensaje de salida o de error lo contiene. En hosts antiguos sin servicio de credenciales lo omite en silencio: ese motor se desactiva por falta de clave, y las otras 263 fuentes no se ven afectadas.
|
|
109
|
+
|
|
110
|
+
**El pin del web seam es lectura obligatoria** (un pin ausente rompe `web_fetch`): la regla de selección de proveedor del host `dsh-web` es "gana el id configurado; si no hay ninguno configurado y exactamente uno está disponible, se elige; **si hay más de uno disponible, falla con `WEB_PROVIDER_AMBIGUOUS`**". El perfil web trae un proveedor http fetch oficial por defecto (sin clave, siempre disponible), y este bundle registra otro — así que sin pin hay dos disponibles y **`web_fetch` se rompe por completo** (igual con `web_search` si el perfil tiene otro proveedor de búsqueda). Cualquier perfil con el web seam activado debe especificarlo de forma explícita en la línea del servicio web:
|
|
111
|
+
|
|
112
|
+
```yaml
|
|
113
|
+
- id: web
|
|
114
|
+
config:
|
|
115
|
+
searchProvider: argo # obligatorio cuando el search seam está activado (lo está por defecto)
|
|
116
|
+
fetchProvider: argo # obligatorio cuando el fetch seam está activado (lo está por defecto)
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
`searchProviderEnabled: false` / `fetchProviderEnabled: false` desactivan el web seam correspondiente por completo (el proveedor sigue registrado pero no seleccionable, y el otro no se ve afectado). En el lado de los motores, los motores de uso anónimo como Firecrawl funcionan **sin clave desde el primer momento** (cuota de capa gratuita), los motores con clave configurada se actualizan automáticamente a peticiones autenticadas, y una clave ausente no bloquea el enrutamiento.
|
|
120
|
+
|
|
121
|
+
> Las opciones de configuración completas, la tabla de versiones de Compatibility y los pasos de desinstalación están en [packages/dsh-plugin/README.md](packages/dsh-plugin/README.md).
|
|
122
|
+
|
|
123
|
+
## Ventajas principales
|
|
124
|
+
|
|
125
|
+
**272 fuentes, 235 disponibles sin clave desde el primer momento.** Funciona sin configurar ninguna clave API: los motores gratuitos y locales actúan como red de seguridad. Las fuentes con clave suelen ofrecer mejor calidad; si no hay clave, se omiten. Una instalación y cubres todos los escenarios.
|
|
126
|
+
|
|
127
|
+
**Búsqueda local y búsqueda web en una sola pieza.** Es una capacidad que solo tiene Argo. La búsqueda de archivos locales se apoya en las herramientas que los desarrolladores usan a diario, como rg y mdfind, y busca símbolos de código, nombres de archivo, texto completo de documentos y estructura de archivos. Con un interruptor, los aciertos locales se integran en la misma búsqueda web, marcados como archivos de la máquina. Cuando escribes y recuerdas que hace medio año anotaste algo pero no dónde, esto es más rápido que navegar carpetas.
|
|
128
|
+
|
|
129
|
+
**Caché de dos capas, consultas calientes en ~10 ms.** El contenido que no cambia tanto (enciclopedia, datos históricos) entra en caché tras la primera consulta; después, la misma consulta se resuelve al instante sin volver a recorrer la API. Ahorra dinero y tiempo.
|
|
130
|
+
|
|
131
|
+
**Multilingüe + escenarios verticales.** Probado en 18 idiomas: en chino, inglés y japonés se llega a fuentes primarias locales. Para papers, bibliotecas académicas; para cine, bases de datos de títulos; para código, comunidades de preguntas y respuestas; para mercados, fuentes financieras. Solo las preguntas genéricas van a búsqueda general.
|
|
132
|
+
|
|
133
|
+
## Instalar y usar
|
|
134
|
+
|
|
135
|
+
Funciona sin configuración. Tres formas de instalarlo, elige la que te acomode:
|
|
136
|
+
|
|
137
|
+
**Si quieres que tu asistente de IA sepa buscar por su cuenta**, instala el paquete de habilidades en su directorio de skills. Cuando le digas «búscame esto» o «verifícalo», irá a buscar solo.
|
|
138
|
+
|
|
139
|
+
**Si solo quieres probarlo**, un comando npx y listo, sin instalar nada.
|
|
140
|
+
|
|
141
|
+
**Si quieres que el asistente lo tenga siempre disponible**, conéctalo por MCP y tendrás 19 herramientas de búsqueda a mano. También hay un comando de inyección en un paso que configura automáticamente Claude Code, Cursor y Windsurf; Codex, OpenCode y Cline están en la misma lista. Antes de escribir la configuración hace una copia de seguridad, así que puedes revertir cuando quieras.
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
# Opción 1: script de instalación (recomendado para uso local a largo plazo)
|
|
145
|
+
curl -fsSL https://raw.githubusercontent.com/taxueseek/argo/main/scripts/install.sh | bash
|
|
146
|
+
|
|
147
|
+
# Opción 2: npx al paso (recomendado para montar el agente rápido)
|
|
148
|
+
npx -y github:taxueseek/argo
|
|
149
|
+
|
|
150
|
+
# Opción 3: git clone (desarrollo / modificar el código)
|
|
151
|
+
git clone https://github.com/taxueseek/argo.git
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Una prueba rápida tras instalar:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
argo search "python asyncio error handling"
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Lo que devuelve son preguntas de la API oficial de StackOverflow ordenadas por puntuación de la comunidad y marcadas con el estado de respuesta aceptada, no un montón de granjas SEO.
|
|
161
|
+
|
|
162
|
+
Si quieres ver cuántas fuentes tienes disponibles en tu máquina ahora mismo, un comando las lista:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
argo search --list-engines
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Formas de integración
|
|
169
|
+
|
|
170
|
+
Argo admite cuatro formas de integración; elige según tu caso:
|
|
171
|
+
|
|
172
|
+
| Forma | Ideal para | Descripción |
|
|
173
|
+
|-------|------------|-------------|
|
|
174
|
+
| **MCP Server** | Agente montado de forma permanente | 19 herramientas de búsqueda siempre disponibles; un comando las inyecta en Claude Code / Cursor / Windsurf / Codex / OpenCode / Cline, con copia de seguridad automática antes de escribir la configuración |
|
|
175
|
+
| **Plugin DSH** | Usuarios de DeepSeek Harness | Se instala con una línea de `dsh plugin add`; búsqueda y fetch pasan a ser herramientas nativas de primera clase, sin conexión MCP y sin coste de contexto permanente; incluye una página de ajustes de seis secciones efectiva al guardar |
|
|
176
|
+
| **Archivo Skill** | Claude Code / Grok Build / Kimi, etc. | El paquete de habilidades va al directorio de skills del agente; cuando dices «búscame esto» o «verifícalo», él busca solo |
|
|
177
|
+
| **npx al paso** | Probar rápido | `npx -y github:taxueseek/argo`, sin instalar; ideal para montar el MCP temporalmente en cualquier cliente |
|
|
178
|
+
|
|
179
|
+
Las cuatro formas comparten el mismo código Python por debajo; la CLI y las herramientas MCP se corresponden una a una, así que elijas la que elijas no pierdes capacidades.
|
|
180
|
+
|
|
181
|
+
## Por qué supera a la búsqueda del modelo, la búsqueda IA y el metasearch
|
|
182
|
+
|
|
183
|
+
> En corto: las tres primeras ayudan a **personas** a encontrar información. Argo ayuda a **agentes** a buscar y verificar en un mismo pipeline. La diferencia no es la interfaz, es el entregable: página de resumen o lista de enlaces para humanos frente a evidencia ordenable, re-verificable y que no hincha el contexto.
|
|
184
|
+
|
|
185
|
+
<p align="center">
|
|
186
|
+
<img src="assets/readme/why-better.svg" width="100%" alt="Izquierda: tres búsquedas por defecto hechas para humanos; derecha: JSON de evidencia absorbible de Argo para agentes">
|
|
187
|
+
</p>
|
|
188
|
+
|
|
189
|
+
| Dimensión | Búsqueda del modelo | Búsqueda IA (resúmenes) | Metasearch / motores | **Argo** |
|
|
190
|
+
|-----------|---------------------|-------------------------|----------------------|----------|
|
|
191
|
+
| Forma del resultado | Texto largo cosido | Página de resumen humana | Lista de enlaces SERP | **JSON compacto: candidatos de evidencia + desglose de credibilidad** |
|
|
192
|
+
| Preguntas verticales (cotizaciones / fórmulas) | Web genérica | Web genérica y luego resumen | Web genérica | **Fuentes verticales directas, en forma de respuesta** |
|
|
193
|
+
| Credibilidad de evidencia | Sin puntuación | Sin puntuación estructurada | Sin puntuación | **selection · absorption · freshness · consenso** |
|
|
194
|
+
| Consultas repetidas | Red cada vez | Red cada vez | Caché de página | **Caché de dos capas (memoria + SQLite); consultas calientes ~10 ms** |
|
|
195
|
+
| Control de coste | Incontrolable | Caro por llamada | Gratis pero trabajoso | **Modos de presupuesto; gratis primero; claves todas opcionales** |
|
|
196
|
+
| Multilingüe | Sigue al modelo | Sigue al modelo | Sigue al motor | **Detección de idioma + params de locale + enrutamiento multilingüe** |
|
|
197
|
+
|
|
198
|
+
> Mecánicamente, Argo trata la búsqueda como un **pipeline de evidencia**: detectar idioma → enrutar dominio → recall multi-motor → fusionar RRF → ojeada de evidencia. El agente puede ordenar, `fetch` para verificar y mantener el material dentro del contexto.
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## Qué está cambiando en la búsqueda en 2026
|
|
203
|
+
|
|
204
|
+
1. **De enlaces a evidencia.** Los agentes necesitan material estructurado, verificable y compacto — Argo devuelve JSON con desglose de credibilidad.
|
|
205
|
+
2. **El contexto es el primer coste.** Argo perfil agente: ~3,7KB por llamada, con presupuestos de bytes fijados por gates.
|
|
206
|
+
3. **Los sitios preparan contenido para IA.** llms.txt y `.md` se extienden — la cadena de fetch los sondea en el nivel 0, con lector r.jina.ai como respaldo.
|
|
207
|
+
4. **El ecosistema libre basta.** APIs abiertas de gobiernos/academia/estándares/seguridad + motores sin clave cubren la mayoría de dominios (235 sin clave).
|
|
208
|
+
5. **Calidad medible.** Pisos golden de ranking, gates de ablación de fusión y controles negativos de enrutamiento.
|
|
209
|
+
|
|
210
|
+
> Los cinco puntos ya están implementados en la serie v2.9.x: 272 fuentes, 97 dominios, 235 sin clave.
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Enrutamiento según la consulta
|
|
215
|
+
|
|
216
|
+
<p align="center">
|
|
217
|
+
<img src="assets/readme/proof-routes.svg" width="100%" alt="Cuatro rutas reales: finanzas, cine, multilingüe, geo">
|
|
218
|
+
</p>
|
|
219
|
+
|
|
220
|
+
| Preguntas así | Lo que suele ocurrir |
|
|
221
|
+
|---------|----------------------|
|
|
222
|
+
| python asyncio error handling | Dominio de QA de programación → API oficial de StackOverflow/StackExchange, con puntuación y respuesta aceptada |
|
|
223
|
+
| AAPL / US pre-market | Dominio de acciones EE. UU., separado de A-shares |
|
|
224
|
+
| 肖申克的救赎 主演 / Inception director | Dominio cine → IMDb etc. |
|
|
225
|
+
| 梅西 俱乐部 / 库里 球队 | Dominio deportes → TheSportsDB etc. |
|
|
226
|
+
| 埃菲尔铁塔在哪 / where is Eiffel Tower | Entidad geo → OpenStreetMap etc. |
|
|
227
|
+
| NASA founding year / 国务院职能 | Entidad org → Wikidata etc. |
|
|
228
|
+
| 周杰伦 专辑 / Taylor Swift album | Dominio media → iTunes etc. |
|
|
229
|
+
| アニメ おすすめ / 한국 영화 추천 | Detecta JA/KO → fuentes amigables al idioma; evita sitios solo en chino |
|
|
230
|
+
| US CPI, inflación de Japón | Dominio macro; separa por país (fuentes nacionales primero) |
|
|
231
|
+
| log4j CVSS / nodejs 22 end of life | Seguridad → NVD oficial; ciclo de vida → endoflife.date |
|
|
232
|
+
| attention is all you need | Académico → metadatos de arXiv/OpenAlex/CrossRef con DOI |
|
|
233
|
+
| 阿司匹林 分子式 | Química → respuestas tipo PubChem |
|
|
234
|
+
| TSMC valuation debate (deep research) | Subpreguntas + fuentes en paralelo; verticales reforzados |
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## Cómo funciona
|
|
239
|
+
|
|
240
|
+
<p align="center">
|
|
241
|
+
<img src="assets/readme/workflow.svg" width="100%" alt="Consulta → idioma y dominio → recall multi-motor → RRF → evidencia → JSON unificado">
|
|
242
|
+
</p>
|
|
243
|
+
|
|
244
|
+
```
|
|
245
|
+
query
|
|
246
|
+
├─ intent clarify (optional)
|
|
247
|
+
├─ query rewrite (optional; routing still sees original intent)
|
|
248
|
+
├─ language detect + language preference
|
|
249
|
+
├─ route (domain rules + TF-IDF + budget + lang supplements + hot-path cache)
|
|
250
|
+
├─ multi-engine recall (circuit breaker / negative cache / parallel)
|
|
251
|
+
├─ staged empty-result recovery (widen → same family/general → cross-lang; anti-pollution)
|
|
252
|
+
├─ RRF fusion + optional re-rank
|
|
253
|
+
├─ evidence skim (authority · density · freshness · consensus)
|
|
254
|
+
└─ unified JSON (incl. engine_outcomes / recovery)
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### Puntuación de evidencia (resumen)
|
|
258
|
+
|
|
259
|
+
```
|
|
260
|
+
selection ≈ domain authority; SERP / redirect shells ranked very low
|
|
261
|
+
absorption ≈ density of numbers / definitions / comparisons / disclosures
|
|
262
|
+
freshness ≈ publish time (ignores historical comparison years like “since 2015”)
|
|
263
|
+
composite ≈ 0.40·selection + 0.35·absorption + 0.15·freshness + 0.10·engine score
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Los resultados incluyen `selection`, `absorption`, `credibility_fast`, `evidence_flags`, etc. para que el agente ordene directamente.
|
|
267
|
+
|
|
268
|
+
### Disciplina del agente (recomendada)
|
|
269
|
+
|
|
270
|
+
1. **Preguntas de alto riesgo** (posiciones, seguridad, «¿es cierto?»): buscar → leer puntuaciones rápidas → `fetch` de los top → luego concluir
|
|
271
|
+
2. **Números**: declarar el计算方式 (definición/alcance); si las fuentes chocan, listarlas—no forzar fusión
|
|
272
|
+
3. **Páginas SERP / redirección**: nunca como fuente primaria
|
|
273
|
+
4. **Posts sociales**: sentimiento y narrativa, no verdad de fondo
|
|
274
|
+
5. **Fact-check**: preferir pocas consultas estratificadas (fuente / comparación / sujeto)
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
## Inicio rápido
|
|
279
|
+
|
|
280
|
+
Elige cualquier camino. **GitHub es la única fuente de verdad de instalación** (`npx github:taxueseek/argo` o `install.sh`); recomendación actual **v2.9.8**. **No uses `npm install argo-search`** — la copia del registro npm es un **v1.0.1 no oficial y obsoleto** (no es este repo, incompleto, no se actualiza). Este paquete pone `private: true` para no publicarse en npm por error.
|
|
281
|
+
|
|
282
|
+
**Funciona sin configuración**: sin claves API corren motores gratis + `local_*` locales; los que requieren clave se omiten si faltan (y suelen mejorar cuando están).
|
|
283
|
+
|
|
284
|
+
### Opción 1: Script de instalación (mejor para uso local a largo plazo)
|
|
285
|
+
|
|
286
|
+
```bash
|
|
287
|
+
curl -fsSL https://raw.githubusercontent.com/taxueseek/argo/main/scripts/install.sh | bash
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
Home personalizado + enlace de 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
|
+
Verificar:
|
|
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
|
+
### Opción 2: MCP desde GitHub (enganche rápido del agente)
|
|
305
|
+
|
|
306
|
+
Necesita **Node.js 18+** y **Python 3.9+**. Una vez:
|
|
307
|
+
|
|
308
|
+
```bash
|
|
309
|
+
pip3 install pyyaml
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
```bash
|
|
313
|
+
npx -y github:taxueseek/argo
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
Config del cliente (Claude Code / Cursor / Kimi, etc.):
|
|
317
|
+
|
|
318
|
+
```json
|
|
319
|
+
{
|
|
320
|
+
"mcpServers": {
|
|
321
|
+
"argo": {
|
|
322
|
+
"command": "npx",
|
|
323
|
+
"args": ["-y", "github:taxueseek/argo"]
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
Más estable, sin Node: instala con la opción 1 y apunta a Python local:
|
|
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
|
+
Ruta de Python inusual: `export ARGO_PYTHON=/path/to/python3` (solo lo lee la entrada npx).
|
|
343
|
+
|
|
344
|
+
### Plugin de una línea para DeepSeek Harness
|
|
345
|
+
|
|
346
|
+
Dos caminos dentro de DeepSeek Harness:
|
|
347
|
+
|
|
348
|
+
```bash
|
|
349
|
+
# A: 19 herramientas mcp__argo__* (bundle del paquete principal, igual que el MCP completo)
|
|
350
|
+
dsh plugin --profile web add "github:taxueseek/argo"
|
|
351
|
+
|
|
352
|
+
# B: herramientas de búsqueda + orquestación wide_research (subpaquete)
|
|
353
|
+
dsh plugin --profile web add "github:taxueseek/argo#main&path:packages/dsh-plugin"
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
Reinicia `dsh web` tras instalar. Ver `packages/dsh-plugin/`.
|
|
357
|
+
|
|
358
|
+
### Opción 3: Tarball de release
|
|
359
|
+
|
|
360
|
+
Abre [Releases](https://github.com/taxueseek/argo/releases) y descarga el tarball más reciente, **`argo-x.y.z.tar.gz`** (sustituye `x.y.z` por el número de la última versión):
|
|
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
|
+
### Opción 4: git clone (dev / parchear fuente)
|
|
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 # optional
|
|
377
|
+
python3 scripts/search.py --list-engines
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
### Opción 5: Directorio Skill (symlink, una sola fuente de verdad)
|
|
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
|
+
### Opción 6: Biblioteca 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
|
+
# if bin/argo is on PATH
|
|
405
|
+
argo search "Python asyncio"
|
|
406
|
+
argo research "2026 mutual fund holdings structure"
|
|
407
|
+
argo evidence "a claim to verify"
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
---
|
|
411
|
+
|
|
412
|
+
## Plataformas
|
|
413
|
+
|
|
414
|
+
| Plataforma | Integración | Notas |
|
|
415
|
+
|----------|-------------|-------|
|
|
416
|
+
| **Claude Code** | MCP / enlace Skill | `npx` o `mcp_server.py`; `link_source.py` ok |
|
|
417
|
+
| **Kimi / Grok Build** | MCP Server | igual |
|
|
418
|
+
| **Cursor / Cline / Continue** | MCP | cualquier plugin IDE con MCP |
|
|
419
|
+
| **CLI** | `search.py` / `bin/argo` | scripts, cron, debug manual |
|
|
420
|
+
| **Proyectos Python** | `from search import super_search` | llamada de librería |
|
|
421
|
+
|
|
422
|
+
### Comprobación post-instalación
|
|
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 # optional
|
|
428
|
+
python3 scripts/search.py --list-engines
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
## Capacidades
|
|
434
|
+
|
|
435
|
+
| Capacidad | Qué hace | Entrada |
|
|
436
|
+
|------------|--------------|-------|
|
|
437
|
+
| Búsqueda unificada | route → recall → fuse → skim score | `search.py` / `argo_search` |
|
|
438
|
+
| Búsqueda de archivos locales | código/notas/memoria en disco (offline) | `argo_local_search` |
|
|
439
|
+
| Vista previa de texto local | preview en dirs en whitelist (fail-closed) | `argo_local_read` |
|
|
440
|
+
| Recompute | recálculo numérico en sandbox (niega por defecto) | `argo_recompute` |
|
|
441
|
+
| Investigación profunda | subpreguntas, multi-fuente, pistas de huecos | `research.py` / `argo_research` |
|
|
442
|
+
| Credibilidad | autoridad / densidad / frescura / cruce | `evidence.py` / `argo_evidence` |
|
|
443
|
+
| Aclarar intención | polisemia, colisiones de marca, pistas de estrategia | `clarify.py` / `argo_clarify` |
|
|
444
|
+
| Fetch de página | HTTP primero, navegador si hace falta | `argo_fetch` (`mode=extract` para estructura) |
|
|
445
|
+
| Captura / PDF | capturas de página, extracto PDF estructurado | `argo_screenshot` / `argo_pdf` |
|
|
446
|
+
| Crawl de sitio | crawl por lotes de páginas de listado | `argo_crawl` |
|
|
447
|
+
| Operadores de consulta | `site:` / `-site:` / `-término` / `-"frase"` / `"frase"` / `lang:` / `after:` / `before:` extraídos de ruta y recuperación (detalles en references/usage.md) | se escriben directo en la consulta |
|
|
448
|
+
| Señales de confianza | `authority_level` grado discreto (0-4, >=3 muy autoritativo) + `summary` resumen para Agent (se rellena tras verificar) | campos del resultado, visibles con `--fields agent` |
|
|
449
|
+
| Social / sentimiento | Weibo / Xiaohongshu / Bilibili / Reddit / X … | `argo_social_search` |
|
|
450
|
+
| Herramientas nativas DSH | al instalarlo como plugin DSH, `argo_search` / `argo_fetch` y demás pasan a ser herramientas de primera clase del host, ejecutadas como disparos únicos de CLI con coste de tokens residentes cero | llamar directo tras `dsh plugin add` |
|
|
451
|
+
| Web seam DSH | el `web_search` / `web_fetch` integrado del host se enrutan a las cadenas de motores y de fetch de argo (HTTP primero, con ascenso automático a navegador en páginas con Cloudflare / renderizado JS) | registrado por defecto por el plugin; fija `searchProvider` / `fetchProvider` en el perfil |
|
|
452
|
+
| Página de ajustes DSH | seis secciones — Acceso / Herramientas / Motores / Claves / Investigación / Avanzado — efectiva al guardar; las claves van al almacén de credenciales del host y nunca se muestran | popup de ajustes `Cmd+,` → menú izquierdo "Argo" |
|
|
453
|
+
|
|
454
|
+
### Modos de presupuesto
|
|
455
|
+
|
|
456
|
+
| Modo | Mejor para | Comportamiento |
|
|
457
|
+
|------|----------|----------|
|
|
458
|
+
| `fast` | Q simple, necesita velocidad | motores gratis primero; omite re-rank de pago |
|
|
459
|
+
| `auto` | default diario | equilibrio calidad/gasto con conciencia de coste |
|
|
460
|
+
| `deep` | investigación, sondeos | calidad primero; más motores |
|
|
461
|
+
| `budget` | cuota justa | control de cuota; degrada al agotarse |
|
|
462
|
+
|
|
463
|
+
### Conjunto aproximado de capacidades (v2.9.8)
|
|
464
|
+
|
|
465
|
+
Lo que hace Argo, en una frase: manda cada pregunta a las fuentes adecuadas según dominio e idioma, ordena lo que vuelve por credibilidad y devuelve al agente material que puede ordenar y verificar. Búsqueda, captura, verificación de evidencia y búsqueda de archivos locales comparten una sola tubería, 19 herramientas MCP se corresponden una a una con los comandos CLI, así que ninguna capacidad falta en la forma que instales. Algunos comandos sueltos completan el conjunto: argo tweet empaqueta un post de X, argo auth gestiona el estado de sesión y argo job agrega ofertas de empleo. El catálogo completo, con coste, clave y estado de cada fuente, está en docs/ENGINE_CATALOG.md: 272 fuentes, 235 sin clave, 97 dominios.
|
|
466
|
+
|
|
467
|
+
Instalado como plugin DSH, estas capacidades se convierten en herramientas nativas del host: la búsqueda y el fetch de la ruta caliente vienen activos por defecto, las herramientas de forense de cola larga se activan en la página de ajustes y los 28 interruptores de comportamiento del propio argo (caché, reordenación, deduplicación, guardia, proxy, TTL y demás) salieron de las variables de entorno para entrar en el panel. Las claves van al almacén de credenciales del host, nunca se muestran y todo cambio surte efecto al guardar.
|
|
468
|
+
|
|
469
|
+
Las últimas versiones arreglaron cada una una clase de problemas.
|
|
470
|
+
|
|
471
|
+
v2.9.8 es una versión de precisión de enrutado y cierre del ciclo de feedback. Los tres problemas del issue #18 —«latest» enviado a noticias en tiempo real, people_daily devolviendo su feed por defecto cuando no hay coincidencia, y local_bing coincidiendo solo con «2026»— se reprodujeron y corrigieron. Al reproducir consultas reales por la misma vía se acotaron 16 clases más de falsos disparadores: «nieve» dentro de nombres de marca, «Volcano Engine» dentro de nombres de producto, «iconos» en diagnóstico de UI, «código» dentro de campos mercantiles/financieros y «tipo de cambio» dentro de consultas de código/bibliotecas. Una puerta de cobertura SERP y la validación cruzada CJK evitan que «devolvió algo» cuente como «es relevante». Gracias a @wpp666 por la reproducción y el diagnóstico.
|
|
472
|
+
|
|
473
|
+
v2.9.7 arregló tres problemas antiguos. Cuando una IA dentro de un huésped DSH pedía leer una URL, el huésped usaba su propio capturador, así que redirecciones de enlaces cortos y páginas de desafío JS fallaban de forma estructural mientras la cadena de fetch de argo se quedaba sin uso; esta versión pasa las lecturas del huésped por argo, y esas páginas van de fallar a funcionar, sin cambios en las páginas estáticas. El pool de candidatos de enrutado contenía 18 motores de solo-uso-explícito, y si alguno se auto-seleccionaba el único motor de pago te facturaba en silencio; el pool está limpio ya, y usarlos requiere decirlo. Cada éxito de motor tomaba antes un bloqueo de fichero y reescribía el estado del breaker en disco; los motores sanos ahora cuestan cero E/S de ficheros y la contabilidad multi-motor se confirma en una sola transacción. La licencia también pasó de MIT a Apache-2.0, más cómoda para uso comercial.
|
|
474
|
+
|
|
475
|
+
Después de eso, el plugin DSH ganó otra capa: la página de ajustes pasó de cinco secciones a seis, la nueva sección «Motores» trae los interruptores de comportamiento de argo al panel (antes solo eran variables de entorno), la página de claves muestra ahora si cada clave viene del almacén de credenciales, del entorno de arranque o de `.env`, y los interruptores de herramientas, los tiempos de espera, la concurrencia y los límites de investigación se aplican todos al guardar. La cancelación también llegó a la etapa de establecimiento de la conexión: cuando la IA se detiene a mitad de camino, un subproceso de argo que aún se está creando se mata de inmediato en lugar de esperar a que expire su tiempo de espera.
|
|
476
|
+
|
|
477
|
+
v2.9.6 se ocupó de los operadores de consulta y la capa de transporte. Una consulta como site:github.com algo trataba antes su operador como una palabra normal, o lo analizaba sin aplicarlo nunca; una capa de contrato quita ahora los operadores antes de enrutar y cachear, aplica site: como filtro real y lo mete en la clave de caché, así dos búsquedas no se contaminan. En transporte, cada POST repagaba el saludo TLS, de 320 a 561 ms; con conexiones agrupadas, un proceso MCP residente lo ahorra en cada consulta. Esta versión también sumó el motor oficial de DeepSeek, facturado por llamada y fuera de los combos cotidianos.
|
|
478
|
+
|
|
479
|
+
v2.9.5 agregó tipos de cambio y limpió la deduplicación. Preguntar por el tipo USD/CNY daba antes vueltas por el dominio macro y acababa en una entrada de enciclopedia, 1,4 s sin respuesta; un dominio fx dedicado responde ahora en 675 ms con el tipo al contado y las noticias diarias. La deduplicación ganó normalización de sufijos de sitio y una segunda pasada difusa, así los documentos oficiales con separadores en el título dejan de caer al fondo.
|
|
480
|
+
|
|
481
|
+
v2.9.4 corrigió la ruta de motor explícito. Fijar --engine X tenía antes un TTL de caché uniforme; con la determinación de dominio en su sitio, el TTL sigue al dominio y la ausencia de motor de respaldo ya no provoca una reejecución vacía del mismo motor.
|
|
482
|
+
|
|
483
|
+
El detalle por versión está en «Actualizaciones recientes»; las notas de cada versión, en docs/.
|
|
484
|
+
---
|
|
485
|
+
|
|
486
|
+
## Motores y enrutamiento
|
|
487
|
+
|
|
488
|
+
La config tiene ahora **272** fuentes (**235** sin clave) y **97** dominios (ver `config.yaml` y `--list-engines`).
|
|
489
|
+
|
|
490
|
+
### Directos y verticales (extracto)
|
|
491
|
+
|
|
492
|
+
| Motor | Escenario | Sesgo de coste |
|
|
493
|
+
|--------|----------|-----------|
|
|
494
|
+
| anysearch / duckduckgo | general / tech | free |
|
|
495
|
+
| sina_quote / tencent_quote / eastmoney | cotizaciones A-share / flujos | free |
|
|
496
|
+
| finviz / seeking_alpha | finanzas EE. UU. y exterior | depends |
|
|
497
|
+
| imdb / itunes / thesportsdb | cine / música / deportes | mostly free |
|
|
498
|
+
| local_openstreetmap / wikidata / wikipedia | geo / org / enciclopedia | free |
|
|
499
|
+
| arxiv / semantic_scholar / openalex | académico | mostly free |
|
|
500
|
+
| pubchem / gbif / rfc_editor | química / especies / estándares | free |
|
|
501
|
+
| github / stackoverflow / pypi / npm | código y paquetes | depends |
|
|
502
|
+
| byted / bocha / metaso / octen / yuanbao | web china / búsqueda IA | API / bajo coste |
|
|
503
|
+
| hkex / shfe / cfets / defillama / gleif | anuncios de HKEX / SHFE / paridad central del yuan / DeFi / identificadores de entidad legal | Gratis |
|
|
504
|
+
| zhihu / wechat_sogou | opinión china / WeChat | API / free |
|
|
505
|
+
| tavily / felo / exa | internacional / semántica | paid or quota |
|
|
506
|
+
| twitter / reddit / xiaohongshu / bilibili / weibo | social UGC | free (some need login) |
|
|
507
|
+
|
|
508
|
+
### Capa local de coste cero (`local_*`)
|
|
509
|
+
|
|
510
|
+
No hace falta un servicio SearXNG aparte. La ruta principal usa parseo in-process de HTML / RSS / JSON (`local_bing`, `local_sogou`, `local_google`, `local_arxiv`, …). En **consultas multilingües**, el enrutamiento reescribe params de idioma del motor (p. ej. Bing `setlang`) y fusiona con RRF.
|
|
511
|
+
|
|
512
|
+
---
|
|
513
|
+
|
|
514
|
+
## Ejemplos
|
|
515
|
+
|
|
516
|
+
### Finanzas
|
|
517
|
+
|
|
518
|
+
```bash
|
|
519
|
+
python3 scripts/search.py "python asyncio error handling" --explain
|
|
520
|
+
# typical: stock_query → quote snapshot sources
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
### Académico
|
|
524
|
+
|
|
525
|
+
```bash
|
|
526
|
+
python3 scripts/search.py "transformer attention mechanism paper" --json
|
|
527
|
+
# domain often academic; combo includes arxiv etc.
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
### Investigar y verificar
|
|
531
|
+
|
|
532
|
+
```bash
|
|
533
|
+
python3 scripts/research.py "2026 mutual fund Q2 holdings structure" --depth deep --json
|
|
534
|
+
|
|
535
|
+
python3 scripts/search.py "same query" --json | \
|
|
536
|
+
python3 scripts/evidence.py "same query" --stdin --json
|
|
537
|
+
```
|
|
538
|
+
|
|
539
|
+
### Herramientas MCP (12)
|
|
540
|
+
|
|
541
|
+
| Herramienta | Propósito |
|
|
542
|
+
|------|---------|
|
|
543
|
+
| `argo_search` | búsqueda unificada |
|
|
544
|
+
| `argo_local_search` | archivos locales (offline) |
|
|
545
|
+
| `argo_local_read` | preview de texto local en whitelist (fail-closed) |
|
|
546
|
+
| `argo_recompute` | recálculo en sandbox (niega por defecto; hace falta auth) |
|
|
547
|
+
| `argo_research` | investigación profunda (incl. modo sentimiento social) |
|
|
548
|
+
| `argo_evidence` | puntuación de credibilidad |
|
|
549
|
+
| `argo_clarify` | desambiguación de intención |
|
|
550
|
+
| `argo_fetch` | fetch inteligente (`mode=extract` extracto estructurado) |
|
|
551
|
+
| `argo_crawl` | crawl de sitio |
|
|
552
|
+
| `argo_screenshot` | captura de página |
|
|
553
|
+
| `argo_pdf` | extracto PDF |
|
|
554
|
+
| `argo_social_search` | social multi-plataforma (`mode=sentiment`) |
|
|
555
|
+
|
|
556
|
+
---
|
|
557
|
+
|
|
558
|
+
## Instalación y configuración
|
|
559
|
+
|
|
560
|
+
### Requisitos
|
|
561
|
+
|
|
562
|
+
| Ítem | Requisito |
|
|
563
|
+
|------|-------------|
|
|
564
|
+
| Python | 3.9+ (CLI + núcleo MCP) |
|
|
565
|
+
| Deps | `pip install pyyaml` (única dependencia dura) |
|
|
566
|
+
| Node.js | **solo** para entrada `npx`, 18+ |
|
|
567
|
+
| SearXNG | no requerido (motores locales integrados) |
|
|
568
|
+
|
|
569
|
+
### Claves API (todas opcionales)
|
|
570
|
+
|
|
571
|
+
Sin clave se omite ese motor; los gratis sostienen. **Usa variables de entorno**—nunca commits de claves reales ni pegarlas en issues.
|
|
572
|
+
|
|
573
|
+
```bash
|
|
574
|
+
# recommended (better quality)
|
|
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
|
+
# optional
|
|
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" # opcional; prueba gratis de Keenable
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
`config.yaml` solo guarda placeholders `{ENV_NAME}`—sin secretos en claro en git.
|
|
591
|
+
|
|
592
|
+
### Caché
|
|
593
|
+
|
|
594
|
+
La ruta SQLite por defecto es `cache.db_path` en `config.yaml` (suele ser `~/.cache/unified-search/cache.db`).
|
|
595
|
+
|
|
596
|
+
| Tipo | TTL aprox. |
|
|
597
|
+
|------|-------------|
|
|
598
|
+
| Finance | ~5 min |
|
|
599
|
+
| News / realtime | ~10–15 min |
|
|
600
|
+
| General | ~1 hour |
|
|
601
|
+
| Research / evergreen | ~2–24 hours |
|
|
602
|
+
| Empty results | very short (avoid freezing “no hits”) |
|
|
603
|
+
|
|
604
|
+
### FAQ
|
|
605
|
+
|
|
606
|
+
**¿Funciona sin claves API?**
|
|
607
|
+
Sí. Muchos motores locales gratis y APIs gratis; la ruta sin clave es automática.
|
|
608
|
+
|
|
609
|
+
**¿Script de instalación vs npx?**
|
|
610
|
+
Script: instalación local fija, config, enlace Skill. npx: enganchar MCP rápido. Mismo núcleo Python.
|
|
611
|
+
|
|
612
|
+
**¿Cómo ver los motores?**
|
|
613
|
+
`python3 scripts/search.py --list-engines`, o añade `--explain`.
|
|
614
|
+
|
|
615
|
+
**¿Varias copias de código en el repo?**
|
|
616
|
+
No. Prefiere una fuente + symlinks con `link_source.py`, no clones rsync.
|
|
617
|
+
|
|
618
|
+
---
|
|
619
|
+
|
|
620
|
+
## Flags CLI
|
|
621
|
+
|
|
622
|
+
```
|
|
623
|
+
python3 scripts/search.py [options] query
|
|
624
|
+
|
|
625
|
+
--engine, -e engine, default auto
|
|
626
|
+
--max-results, -n count, default 5
|
|
627
|
+
--depth, -d fast | balanced | deep
|
|
628
|
+
--mode fast | auto | deep | budget
|
|
629
|
+
--no-cache skip cache
|
|
630
|
+
--explain print routing explanation
|
|
631
|
+
--json JSON output
|
|
632
|
+
--timeout, -t timeout seconds
|
|
633
|
+
--list-engines list engines
|
|
634
|
+
```
|
|
635
|
+
|
|
636
|
+
---
|
|
637
|
+
|
|
638
|
+
## Compromisos de diseño
|
|
639
|
+
|
|
640
|
+
1. **Absorción del agente primero, cantidad de enlaces segundo.**
|
|
641
|
+
2. **Gratis y local primero; de pago es elevación opcional.**
|
|
642
|
+
3. **Los fallos son observables**: empty / timeout / breaker van etiquetados—sin tragar en silencio.
|
|
643
|
+
4. **Motores guiados por config**; `config.yaml` es la única fuente de verdad.
|
|
644
|
+
5. **Instalación de fuente única**: enlaza entradas, no rsync de copias.
|
|
645
|
+
6. **Lo social no es una biblioteca de verdad**; sirve para expansión y sentimiento, no como única base factual.
|
|
646
|
+
|
|
647
|
+
---
|
|
648
|
+
|
|
649
|
+
## Buenos encajes
|
|
650
|
+
|
|
651
|
+
- Backend de búsqueda para agentes Claude Code / Grok Build / Codex / Kimi
|
|
652
|
+
- Q&A **multilingüe y multi-dominio**: CJK + EN + finanzas / cine / deportes / academia / código
|
|
653
|
+
- Scripts y pipelines que necesitan recuperación **reproducible y cacheable**
|
|
654
|
+
- Fact-check y comparación multi-fuente de datos públicos de finanzas / entidades
|
|
655
|
+
|
|
656
|
+
No es gran solución única para: ranking nativo de engagement de plataforma, o agregadores max-recall de larga vida (los motores locales embebidos reemplazan SearXNG externo como vía principal).
|
|
657
|
+
|
|
658
|
+
---
|
|
659
|
+
|
|
660
|
+
## Árbol (resumen)
|
|
661
|
+
|
|
662
|
+
```
|
|
663
|
+
argo/
|
|
664
|
+
├── README.md # Chinese (default)
|
|
665
|
+
├── README.en.md # English
|
|
666
|
+
├── README.ja.md # Japanese
|
|
667
|
+
├── README.ko.md # Korean
|
|
668
|
+
├── README.es.md # Spanish
|
|
669
|
+
├── SKILL.md
|
|
670
|
+
├── package.json # npx entry
|
|
671
|
+
├── bin/argo.js # Node MCP launcher
|
|
672
|
+
├── bin/argo # Python CLI
|
|
673
|
+
├── config.yaml # engines & domains (source of truth)
|
|
674
|
+
├── assets/readme/ # README visuals
|
|
675
|
+
├── backends/
|
|
676
|
+
├── mcp/ # fuente de inyección MCP multi-cliente (clients.yaml)
|
|
677
|
+
├── scripts/ # search / research / mcp / install …
|
|
678
|
+
├── sub-skills/local-search/
|
|
679
|
+
├── sub-skills/ego-search/ # búsqueda profesional con sesión (off por defecto)
|
|
680
|
+
├── tests/
|
|
681
|
+
└── docs/
|
|
682
|
+
```
|
|
683
|
+
|
|
684
|
+
---
|
|
685
|
+
|
|
686
|
+
## Actualizaciones recientes
|
|
687
|
+
|
|
688
|
+
Solo las tres versiones más recientes. El historial completo está en el [historial de cambios](#historial-de-cambios) y el detalle de cada versión en [Releases](https://github.com/taxueseek/argo/releases).
|
|
689
|
+
|
|
690
|
+
### Próxima versión: búsqueda de Tencent Yuanbao + tres fuentes más sin clave + lista estructurada de fallos
|
|
691
|
+
|
|
692
|
+
- **Búsqueda de Yuanbao**: fuente china de primera mano y voz oficial, complementaria a la mezcla de portales y autopublicaciones de bocha y byted; ocupa el 2.º puesto del dominio general chino como cobertura de autoridad. Clave: `ARGO_YUANBAO_API_KEY`
|
|
693
|
+
- **Tres fuentes más sin clave**: `tavily_free`, `keenable_free` y el retorno anónimo de `exa` funcionan sin configurar ninguna clave
|
|
694
|
+
- **Fallos sobre los que se puede actuar**: cada fallo indica su origen y su clase, y dice si reintentar, cambiar de fuente o configurar una clave, junto a un nivel de confianza `meta.uncertainty`
|
|
695
|
+
- **Capa de configuración local `config.local.yaml`**: los ajustes de esta máquina ya no se escriben en la configuración pública que acompaña a cada versión
|
|
696
|
+
- **Nueva sección «Engines» en la página de ajustes de DSH**: los 28 interruptores de comportamiento de argo salen de las variables de entorno y pasan al panel
|
|
697
|
+
|
|
698
|
+
### v2.9.7: consolidación de arquitectura + el host delega la obtención de páginas en argo + License pasa a Apache-2.0
|
|
699
|
+
|
|
700
|
+
- **Cambio de License**: MIT → Apache License 2.0. Se explicita la concesión de patentes; lo demás no cambia
|
|
701
|
+
- **Las páginas que el host no podía obtener ahora sí se obtienen**: acortadores, actualizaciones de protocolo, redirect shells y páginas con desafío de JS pasan por la cadena de fetch de argo (HTTP primero, con escalada automática a un navegador cuando el sitio se resiste). Activado por defecto; se desactiva con `fetchProviderEnabled`
|
|
702
|
+
- **El modo auto ya no llama por error a motores de pago**: los 18 motores exclusivos de invocación explícita salen del pool de candidatos de enrutado y solo se usan si se nombran con `--engine`
|
|
703
|
+
- **Una clave nueva recupera el siguiente salto**: los motores con cuota agotada ya no esperan a que venza su ventana de recuperación, y la caché de enrutado se recalcula
|
|
704
|
+
- **Ejecutar JS desde crawl / research / MCP ya no se cae**
|
|
705
|
+
|
|
706
|
+
### v2.9.6: DeepSeek Search + operadores de consulta + fin del doble pago del mismo POST
|
|
707
|
+
|
|
708
|
+
- **Nuevo motor `deepseek_search`**: 445-510 ms, el único de los tres que cubre clasificación de autoridad, rerank_score y fecha de publicación; `--since/--until` funciona de verdad. Se factura por llamada y requiere su propia `DEEPSEEK_API_KEY`; sin clave se omite
|
|
709
|
+
- **Operadores de consulta bajo un solo contrato**: `site:` / `-site:` / `-término` / `lang:` / `after:` / `before:` se analizan de forma uniforme, y `site:` aplica un filtrado posterior real
|
|
710
|
+
- **El mismo POST ya no se paga dos veces**: la reutilización del pool de conexiones ahorra 320 ms (anysearch) / 561 ms (octen) en la segunda petición de una misma conexión
|
|
711
|
+
- **Dos defectos de enlaces y ordenación corregidos**: todos los resultados de un motor puntuaban igual y aplanaban la salida; los redirect shells de Bing sin restaurar costaron sus resultados al 40,2 % de las consultas en 7 días
|
|
712
|
+
- **Las decisiones de enrutado tienen puerta de instantánea**: una inversión de rutas se vuelve un golden diffeable en lugar de cambiar en silencio
|
|
713
|
+
|
|
714
|
+
---
|
|
715
|
+
|
|
716
|
+
## Historial de cambios
|
|
717
|
+
|
|
718
|
+
| Versión | Notas |
|
|
719
|
+
|---------|-------|
|
|
720
|
+
| **v2.9.8** | **Auditoría de precisión de enrutado + fixes de issue #18/#19 + aislamiento de estado en tests**: reproducción de consultas reales y acotado de 16 clases de falsos disparadores (marcas, productos, campos, subcadenas ASCII); puerta de cobertura SERP y validación cruzada CJK; ledger nocturno con log vacío, feed por defecto de people_daily y guardia de caché corregidos; estado adaptive/breaker aislado por test. Gracias a @wpp666 por la reproducción y el diagnóstico. Ver [notas de la versión](docs/RELEASE_NOTES_v2.9.8.md). |
|
|
721
|
+
| **v2.9.7** | **Consolidación de arquitectura + seam web_fetch DSH + License a Apache-2.0**: MIT → Apache 2.0; el fetch del huésped pasa por argo (redirect shells, desafíos JS); 18 motores de invocación explícita fuera del pool, para que el modo auto no facture por error. |
|
|
722
|
+
| **v2.9.6** | **Motor DeepSeek Search + contrato de operadores de consulta + agrupación de conexiones + puerta de instantáneas de enrutado**: `deepseek_search` nuevo y activo por defecto (se omite sin clave): 445-510 ms con `--since`/`--until`; conexiones agrupadas ahorran 320-561 ms; `site:` y `lang:` filtran de verdad. |
|
|
723
|
+
| **v2.9.5** | **Dominio dedicado de tipo de cambio + deduplicación de dos capas + corrección de falsa penalización + aislamiento de daemon por checkout**: `fx_query` nuevo: USD/CNY responde en 675 ms con tipo al contado y noticia del día, antes 1,4 s de enciclopedia; la deduplicación suma sufijos de sitio y `ARGO_DEDUP_FUZZY` opcional. |
|
|
724
|
+
| **v2.9.4** | **Atribución explícita de dominio de motor + cortador de cadena de recuperación + sincronización de puertas**: `--engine X` fija ya el dominio y el TTL de caché sigue al dominio, no se generaliza; un motor único sin respaldo ya no reejecuta en vacío. |
|
|
725
|
+
| **v2.9.3** | **Empaquetado completo de posts de X + carril de estado de sesión del navegador + calidad/velocidad de la cadena local**: nuevos `argo tweet` (posts de X con hilos y medios; `--out`), `argo auth` (sesión de navegador persistente por sitio) y `--academic-deep`; despacho en inglés ~3,0s→2,2-2,5s. |
|
|
726
|
+
| **v2.9.2** | **Compatibilidad verificada con DSH 0.2.1-alpha.1 + tanda de correcciones de enrutamiento/guardas + sub-skill js-run**: `argo mcp inject` añade WorkBuddy y cubre 7 hosts; nueva sub-habilidad js-run: JS de páginas web sin navegador, P50 ≈1 ms por ejecución. |
|
|
727
|
+
| **v2.9.1** | **Optimización de calidad de contenido + resistencia a granjas de contenido + adaptación a la última versión**: filtra mejor el contenido de baja calidad generado en masa; la búsqueda local ya no devuelve su propio código fuente como resultado. |
|
|
728
|
+
| **v2.9.0** | **Optimización de fuentes + paridad plugin/CLI + lenguas minoritarias**: fuentes 237→253 (sin clave 198→219): 14 fuentes de noticias minoritarias, CORE y TinEye; rerank 33 ms→1,5 ms; nuevo `argo stats`. Ver [notas de la versión](docs/RELEASE_NOTES_v2.9.0.md) |
|
|
729
|
+
| **v2.8.9** | **Salida más ligera + recuperación más rica y rápida + 5 fuentes internacionales y de verificación**: salida 15,5KB→5,2KB (−66 %, `--envelope` la restaura); consultas repetidas −30 %; cinco fuentes sin clave nuevas (235→237). Ver [notas de la versión](docs/RELEASE_NOTES_v2.8.9.md) |
|
|
730
|
+
| **v2.8.8** | **Correcciones reportadas por usuarios reales (#12 silencio del alias de clave, #13 fetch sin proxy) + aceleración general + fuentes 218 → 235**: proxies por `ARGO_PROXY` y por dominio, con `NO_PROXY` respetado; arranque 2,1s→0,55s; nuevos `argo answer` y `argo watch`; fuentes 218→235. Ver [notas de la versión](docs/RELEASE_NOTES_v2.8.8.md) |
|
|
731
|
+
| **v2.8.7** | **218 fuentes / 89 dominios + tres canales de salida directa del cuerpo + disciplina de disparo de rutas + corrección de cero resultados en macro**: 50 fuentes nuevas (leyes, estándares, seguridad); llms.txt sondeado en el nivel 0 con r.jina.ai de respaldo; `--engine` acepta listas con comas. Ver [notas de la versión](docs/RELEASE_NOTES_v2.8.7.md) |
|
|
732
|
+
| **v2.8.6** | **Carrera hedged + reparto de tres fuentes de Zhihu + despacho declarativo por idioma + puerta de alcanzabilidad + protocolo de búsqueda académica**: carrera con ventana de gracia para el primer motor; despacho por idioma y académico con 17 fuentes académicas; cola geo −56 %. Ver [notas de la versión](docs/RELEASE_NOTES_v2.8.6.md) |
|
|
733
|
+
| **v2.8.5** | **Herramientas nativas del plugin DSH + MCP apagado por defecto + compatibilidad Windows + autocuración de cuotas + deadline de fetch**: `argo_search` y `argo_fetch` ya son herramientas nativas de primera clase; llega el soporte de Windows; deadline de fetch (`ARGO_FETCH_DEADLINE_S`). [Notas](docs/RELEASE_NOTES_v2.8.5.md) |
|
|
734
|
+
| **v2.8.4** | **Fusión de datos locales + inyección MCP multi-cliente + búsqueda estructurada + Keenable**: investigación L1 con datos locales (`file_inputs`, `recompute`); `argo mcp inject` monta MCP en varios clientes; Keenable llega en prueba gratis. Ver [notas de release](docs/RELEASE_NOTES_v2.8.4.md) |
|
|
735
|
+
| **v2.8.3** | **Arreglo de enrutamiento multilingüe + anysearch in-process + RRF ponderado**: ja/ko devuelven el idioma objetivo; DE/FR/ES/IT vía anysearch; downweight weakest-link (paper 2508.01405). Ver [notas de release](docs/RELEASE_NOTES_v2.8.3.md) |
|
|
736
|
+
| **v2.8.2** | **Windows + semántica de evidencia unificada**: se quita el límite npm `os`; UTF-8 contra cuelgues GBK; `dsh.bundle` en el paquete principal; puerta de calidad de `wide_research`. Ver [notas de release](docs/RELEASE_NOTES_v2.8.2.md) |
|
|
737
|
+
| **v2.8.0** | **Bucle de evidencia + empleos v3 + clima dual**: `fetch_required` / `--verify`; `argo job`; wttr.in + Open-Meteo; Parallel / You.com. Ver [notas de release](docs/RELEASE_NOTES_v2.8.0.md) |
|
|
738
|
+
| **v2.7.3** | HttpClient en capa de motor; TF-IDF activa 25 verticales; TTL de 70 dominios; verticales bilingües. Ver [notas de release](docs/RELEASE_NOTES_v2.7.3.md) |
|
|
739
|
+
| **v2.7.2** | Búsqueda profesional con sesión (ego-search, off por defecto); JA/KO ya no mezclan motores chinos. Ver [notas de release](docs/RELEASE_NOTES_v2.7.2.md) |
|
|
740
|
+
| **v2.7.1** | Endurecimiento SSRF + arreglo del estado de salud del routing. Ver [notas de release](docs/RELEASE_NOTES_v2.7.1.md) |
|
|
741
|
+
| **v2.7.0** | **Tarjetas modales verticales estructuradas**: motores nativos `bocha` y `bocha_ai`; `modal_card` reconoce tarjetas de tren, combustible, metales y calendario en tiempo real. Ver [notas de la versión](docs/RELEASE_NOTES_v2.7.0.md) |
|
|
742
|
+
| **v2.6.2** | Fusión de líneas independientes: entorno de red, RRF ponderado con caché semántica, motores desactivables y enrutado ja-ko completado. Ver [notas de la versión](docs/RELEASE_NOTES_v2.6.2.md) |
|
|
743
|
+
| **v2.6.1** | Versión de corrección de v2.6.0: corrección de daño colateral de enrutamiento (`capital of` ya no se apodera de fact_check); sincronización de versión. Ver [notas de la versión](docs/RELEASE_NOTES_v2.6.1.md) |
|
|
744
|
+
| **v2.6.0** | **Búsqueda multilingüe** (detección de idioma / params de motor / respaldo cross-lang); verticales de cine, deportes, geo, org y media; ~120+ fuentes. Ver [notas de release](docs/RELEASE_NOTES_v2.6.0.md) |
|
|
745
|
+
| **v2.5.1** | Fuentes de respuesta finanzas/macro/química más densas; tiers de motor + presupuesto combo; [notas v2.5.1](docs/RELEASE_NOTES_v2.5.1.md) |
|
|
746
|
+
| **v2.5.0** | Script de instalación + npx; rewrite desacoplado del routing; caché hot-path; MCP compacto |
|
|
747
|
+
| **v2.4.0** | Fallback de ruta de baja puntuación + filtros de mal-enrutado social; caché depth / soft hits; breakers y caché negativa; `engine_outcomes` |
|
|
748
|
+
| **v2.2–v2.3** | Evidencia en dos etapas, tabla de fuentes chinas, content_signals, stack fetch, más motores |
|
|
749
|
+
| **v2.1** | Capa de motores sociales (UGC multi-plataforma) |
|
|
750
|
+
| **v1.x** | Nombre unificado Argo; enrutamiento multi-motor + caché de dos capas |
|
|
751
|
+
|
|
752
|
+
---
|
|
753
|
+
|
|
754
|
+
## Contribuir
|
|
755
|
+
|
|
756
|
+
Issues y PRs bienvenidos. Si cambias lógica de routing o evidencia, añade tests:
|
|
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 # optional, online
|
|
763
|
+
```
|
|
764
|
+
|
|
765
|
+
Antes del commit: sin claves API reales, rutas absolutas de máquina ni cookies de cuenta. Las rutas locales de Skill van en `installs.local.yaml` (gitignored).
|
|
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
|
+
> Una buena búsqueda no es ver más: es concluir con confianza, y saber cuándo aún no debes.
|