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
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# argo-dsh
|
|
2
|
+
|
|
3
|
+
DeepSeek Harness 插件:一行同时挂上 [Argo](https://github.com/taxueseek/argo) 搜索 MCP 和 `wide_research` 并行研究编排。
|
|
4
|
+
|
|
5
|
+
## 安装
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
dsh plugin --profile web add "github:taxueseek/argo#main&path:packages/dsh-plugin"
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
重启 `dsh web` 后生效。
|
|
12
|
+
|
|
13
|
+
### 本地开发:改完源码必须同步进 profile
|
|
14
|
+
|
|
15
|
+
profile 里的依赖是 `file:` / `github:`,pnpm 安装时**复制**进
|
|
16
|
+
`node_modules/@taxueseek/argo-dsh`,不是软链。只改本仓源码、不跑同步,
|
|
17
|
+
DSH 设置页读到的仍是旧 bundle(2026-10-22 实测:缓存开关与付费额度已改,
|
|
18
|
+
面板仍显示旧版)。
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
packages/dsh-plugin/scripts/sync-local.sh --check # 比对源码与已安装 bundle
|
|
22
|
+
packages/dsh-plugin/scripts/sync-local.sh # 同步 web/desktop
|
|
23
|
+
packages/dsh-plugin/scripts/sync-local.sh --restart # 同步并重启 dsh web
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
同步会先备份到 `~/.dsh/backups/argo-dsh-sync-<时间>-<profile>`;浏览器如仍显示
|
|
27
|
+
旧面板,做一次硬刷新(Cmd+Shift+R)。
|
|
28
|
+
|
|
29
|
+
本 bundle 提供 **三形态接入**——同一套 argo 检索能力(同引擎、同压缩、同守卫),三种调用通道互为冗余,按宿主能力自动降级:
|
|
30
|
+
|
|
31
|
+
- **原生一等工具**(默认开):`argo_search` / `argo_fetch`(`ctx.tools.register`),走 CLI 单发(`--call`)复用 MCP 同一套引擎与守卫,**不依赖 MCP 连接、零常驻 token 开销**;`nativeTools: []` 关闭
|
|
32
|
+
- **原生 web seam**(默认开):注册 `argo` 搜索与抓取两个 provider,宿主内置 `web_search` 路由到 argo 引擎链、`web_fetch` 走 argo 抓取链(HTTP 优先,遇 Cloudflare/JS 渲染自动升级反检测浏览器);`searchProviderEnabled: false` / `fetchProviderEnabled: false` 时对应 provider 注册但不可选
|
|
33
|
+
- **MCP 形态**(按需开):19 个 `mcp__argo__*` 完整工具面(`argo_search` / `argo_local_search` / `argo_local_read` / `argo_recompute` / `argo_research` / `argo_evidence` / `argo_clarify` / `argo_fetch` / `argo_crawl` / `argo_screenshot` / `argo_pdf` / `argo_social_search` / `argo_article` / `argo_job` / `argo_extract` / `argo_preflight` / `argo_answer` / `argo_watch` / `argo_cite`,与 CLI 能力面对齐)。工具定义每轮注入上下文且压缩清不掉(实测 19 工具 ≈3.7K token/轮),而搜索/抓取高频路径已由原生工具与 web seam 覆盖,故默认不挂载;需要长尾取证能力(screenshot / pdf / social / article / job / evidence / clarify / crawl / local_*)时在 profile patch 中取消 `mcp-argo` 行注释
|
|
34
|
+
|
|
35
|
+
另有 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`。
|
|
36
|
+
|
|
37
|
+
日常一问用 `argo_search`;单代理取证用 `argo_research`;多视角对比、要引用账本用 `wide_research`。worker 默认只能调 argo 取证工具,不会再调 `argo_research`(硬保护,用户层放行也无效)。
|
|
38
|
+
|
|
39
|
+
## 设置界面
|
|
40
|
+
|
|
41
|
+
插件自带浏览器端设置页,两个入口:
|
|
42
|
+
|
|
43
|
+
- 设置弹窗(Cmd+,)左侧一级菜单「Argo」
|
|
44
|
+
- 设置 > 插件 > Argo(同一面板的摘要卡片,点开即用)
|
|
45
|
+
|
|
46
|
+
六个分区:
|
|
47
|
+
|
|
48
|
+
- **接入**:`web_search` / `web_fetch` seam 开关;引擎入口命令与参数(npx 或本机 `mcp_server.py`);搜索/抓取超时、正文上限、连接空闲回收、并发连接数
|
|
49
|
+
- **工具**:18 个原生一等工具的勾选(默认只开 `argo_search` / `argo_fetch`);单次调用超时与返回文本上限
|
|
50
|
+
- **引擎**:argo 本体的行为开关(原环境变量,curated 白名单 35 个,分八组:缓存与排序 / 抓取层 / 语义与自适应 / 引擎启停 / 网络出口 / 本机检索 / **额度与预算** / 其他)。「缓存与排序」组第一项是**测试模式(关闭结果缓存)**,默认关、日常结果缓存 1 小时;只有改进 Skill/插件、需要实时结果时才打开。「额度与预算」组把免费与付费源放在同一套 QuotaManager 下:金额计费的源设月度预算(DeepSeek 元 / Exa 美元),按次数限额的源设日/月次数上限(AnySearch / 知乎按日,元宝默认 2000/月、Tavily 按月);博查按量付费,不设固定次数上限,由服务商侧结算。额度或预算用尽后该源自动跳过并回落免费源。开关类即时生效,数字 / 文本 / 名单类分组保存;未配置行显示 argo 默认态并标注「默认」。授权类开关(可复算执行、内网 URL)刻意不进面板
|
|
51
|
+
- **密钥**:常用引擎 key 的填写、更新、清除;显示「已配置 / 未配置 + 来源层(凭证库 / 启动环境 / .env)+ 只读态」,明文不回显;每行可勾选「转发」,等价于把引用名加进 `keyRefs`
|
|
52
|
+
- **研究**:worker / 轨道 / 每轨信源 / token 上限与报告落盘目录
|
|
53
|
+
- **高级**:worker 工具 allow / deny 名单、凭证转发名单
|
|
54
|
+
|
|
55
|
+
保存即生效(全部为 volatile 配置):原生工具集合按勾选增删注册,超时、并发、研究上限在下一次调用时读取;引擎开关写成 `argoEnv`(一行一个 `KEY=VALUE`)随 argo 子进程 env 进入,对下一次新建连接生效(池内旧连接按 `searchIdleMs` 回收,默认 60s)。结构性字段(`toolName`、`provider`、`searchProviderId`、`fetchProviderId`)不在设置页,仍走 profile patch,改后需重启。
|
|
56
|
+
|
|
57
|
+
密钥写入 DSH 凭证库(与 Models 页同一处),不写进插件配置、不打日志。凭证服务优先级为**存储文件层 > 启动环境 > 项目 .env > 家目录 .env**:在面板(或 Models 页)保存即覆盖启动环境里的旧值,argo 子进程下一跳新连接用新 key;「清除」只删凭证库里的值,环境变量或 .env 提供的 key 会重新露出。设置页只是凭证域的写入口,读取仍由宿主在每次调用时完成。
|
|
58
|
+
|
|
59
|
+
## web seam 的 pin 必读(漏配会打挂 web_fetch)
|
|
60
|
+
|
|
61
|
+
宿主 `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 服务行显式指定:
|
|
62
|
+
|
|
63
|
+
```yaml
|
|
64
|
+
- id: web
|
|
65
|
+
config:
|
|
66
|
+
searchProvider: argo # 已默认启用搜索 seam 时必配
|
|
67
|
+
fetchProvider: argo # 已默认启用抓取 seam 时必配
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
用户层 `cordis.patch.yml` 同 id 覆盖(同 id + name 匹配才是替换)。`searchProviderEnabled: false` / `fetchProviderEnabled: false` 可整体关掉对应 seam(provider 仍注册但不可选,不影响另一个)。
|
|
71
|
+
|
|
72
|
+
搜索引擎侧,Firecrawl 等匿名可用引擎 **keyless 免配置即用**(免费层额度),配置了密钥的引擎自动升级为认证请求;缺密钥不阻断路由。
|
|
73
|
+
|
|
74
|
+
## DeepSeek 官方 key:DSH 凭证服务原生供给
|
|
75
|
+
|
|
76
|
+
argo 的 `deepseek_search` 引擎(官方 `api.deepseek.com/v1/tools/search`,结果自带 authority 权威分级 / rerank_score 排序分 / 发布时间)与 DSH 官方搜索后端**共用同一把 key**。插件经 DSH 原生凭证 seam 取用,不需要任何手工配置:
|
|
77
|
+
|
|
78
|
+
```yaml
|
|
79
|
+
- id: wide-research
|
|
80
|
+
name: '@taxueseek/argo-dsh'
|
|
81
|
+
config:
|
|
82
|
+
# 默认即 ['DEEPSEEK_API_KEY'],一般无需写这一行
|
|
83
|
+
keyRefs: ['DEEPSEEK_API_KEY']
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
- 解析路径:`ctx.get('credentials').resolve('DEEPSEEK_API_KEY')`,逐次解析——在 web Models 页轮换 key 后,下一跳新连接即生效,无需重启插件(池内连接最长存活 `searchIdleMs`,默认 60s)
|
|
87
|
+
- 层级语义与官方后端一致:**凭证服务管理的 `.credentials.yaml`(web Models 页或设置页写入的那把)> 启动环境变量 > 调用目录 `.env` > `$DSH_HOME/.env`**——存储值胜出,所以面板轮换 key 后 argo 子进程拿到的是新值,不是启动时的旧值
|
|
88
|
+
- 安全:插件不读 key 文件、不落盘、不打日志;key 值只经内存进入 argo 子进程 env,任何输出与错误信息都不含它
|
|
89
|
+
- 旧宿主无 credentials 服务时静默跳过:argo 侧该引擎按缺 key 停用,其余 265 个源不受影响
|
|
90
|
+
- `keyRefs: []` 可整体关闭转发;后续要转发别的宿主凭证(如 `ARGO_EXA_API_KEY`),把引用名加进数组即可,entry 必须是 POSIX 标识符(apply 期 loud fail)
|
|
91
|
+
- `argoEnv`(设置页「引擎」分区写入):argo 行为开关,一行一个 `KEY=VALUE`,名字限 curated 白名单(index.js 的 `ARGO_ENV_SPECS`,35 个;白名单外 apply 期 loud fail,防拼错静默失效);授权位与路径 / 状态类变量刻意不收。与 `keyRefs` 的分工:`keyRefs` 管密钥(凭证库),`argoEnv` 管行为开关(插件配置),两者都不落明文
|
|
92
|
+
|
|
93
|
+
## 依赖
|
|
94
|
+
|
|
95
|
+
- Node.js ≥ 18(npx 拉取 argo 包)
|
|
96
|
+
- Python 3.9+,`pip install pyyaml`
|
|
97
|
+
- DSH 子代理 provider 需支持 `outputSchema`、`depthLimit`(标准 `spawn` 即可);`toolFilter` 在 alpha.x 上可选,rc.2 已移除该启动期字段,改由插件内的 tool guard 阻止 worker 嵌套调用 `wide_research`
|
|
98
|
+
- 已在 DSH 0.2.1-alpha.1 与 0.2.1-rc.2 实测:rc.2 上 `wide_research`(planner → 2 worker → synthesis,passed=true / 14 sources)与原生 `argo_search`(count=3)均真跑通;`dsh web` 启动无 argo 报错。web seam 的 provider 注册随启动通过,headless 无 web 服务,未做实际调用。旧宿主 alpha.x 的 `start` 分支由单测覆盖
|
|
99
|
+
|
|
100
|
+
## Compatibility(DSH Harness 版本对照)
|
|
101
|
+
|
|
102
|
+
| argo-dsh | DSH Harness | 说明 |
|
|
103
|
+
|----------|-------------|------|
|
|
104
|
+
| 2.9.8(当前) | 0.2.1-rc.2(当前,运行中) | 自带设置页(接入 / 工具 / API 密钥 / 研究 / 高级);双栈入口 `startActivation({provider, label, request, signal, delivery})`;rc.2 移除 `toolFilter` 启动期字段后由插件内 tool guard 阻止 worker 嵌套调用 `wide_research`;`wide_research` 端到端实测通过(planner → 2 worker → synthesis,passed=true / 14 sources) |
|
|
105
|
+
| 2.9.7(上一版,兼容) | 0.2.1-alpha.1(实测,兼容) | 旧宿主走 `start(provider, request)` 分支,`toolFilter` 启动期字段仍认;该分支由插件单测覆盖,未在 alpha.x 上重跑端到端 |
|
|
106
|
+
| 2.9.2 | 0.2.1-alpha.1(实测) | 上一轮适配验证基线;rc.2 的新入口与 tool guard 自 2.9.4 起进入 |
|
|
107
|
+
|
|
108
|
+
低于 0.2.1 的 Harness 未做验证,不保证可用。
|
|
109
|
+
|
|
110
|
+
## 自定义(可选)
|
|
111
|
+
|
|
112
|
+
两行配置 id 分别为 `mcp-argo` 和 `wide-research`。用户层 `cordis.patch.yml` 同 id + name 才是替换:
|
|
113
|
+
|
|
114
|
+
```yaml
|
|
115
|
+
- id: mcp-argo
|
|
116
|
+
name: '@deepseek-ai/dsh-mcp-client'
|
|
117
|
+
config:
|
|
118
|
+
serverName: argo
|
|
119
|
+
transport: stdio
|
|
120
|
+
command: /usr/bin/python3
|
|
121
|
+
args:
|
|
122
|
+
- /path/to/argo/scripts/mcp_server.py
|
|
123
|
+
|
|
124
|
+
- id: wide-research
|
|
125
|
+
name: '@taxueseek/argo-dsh'
|
|
126
|
+
config:
|
|
127
|
+
defaultWorkers: 6
|
|
128
|
+
maxWorkers: 9
|
|
129
|
+
maxTracks: 9
|
|
130
|
+
# 原生一等工具(可选调整):默认只注册 argo_search / argo_fetch(高频路径,
|
|
131
|
+
# 零常驻 token 开销)。全部长尾工具(article / job / social_search / pdf /
|
|
132
|
+
# crawl / extract / evidence / clarify / screenshot / preflight / answer /
|
|
133
|
+
# watch / cite / local_search / local_read / recompute,共 16 个,schema
|
|
134
|
+
# 自动派生自 MCP 真源)都可按需追加,例如:
|
|
135
|
+
# nativeTools: ['argo_search', 'argo_fetch', 'argo_pdf', 'argo_article']
|
|
136
|
+
# nativeTools: [] # 空数组关闭
|
|
137
|
+
# nativeTimeoutMs: 60000 # 单次进程超时(ms)
|
|
138
|
+
# nativeMaxChars: 24000 # 返回文本上限(字符)
|
|
139
|
+
# searchProviderEnabled: false # 关闭原生 web seam
|
|
140
|
+
childToolAllow:
|
|
141
|
+
- mcp__argo__argo_search
|
|
142
|
+
- mcp__argo__argo_evidence
|
|
143
|
+
- mcp__argo__argo_fetch
|
|
144
|
+
- web_search
|
|
145
|
+
- web_fetch
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
> 注意:`argo_research` 不提供原生单发形态——它是分钟级编排,默认 60s 进程超时会中断研究;深度研究请用 `wide_research`(本 bundle 已注册)或挂载 MCP 形态。
|
|
149
|
+
|
|
150
|
+
## 卸载
|
|
151
|
+
|
|
152
|
+
在 DSH 的 Settings → Plugins 管理面板中移除本 bundle,或从 profile `package.json` 的 `dsh.profile.bundles` 中删除 `@taxueseek/argo-dsh` 后重启。
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# argo-dsh bundle:默认一行 —
|
|
2
|
+
# wide-research:本包 apply() 注册 wide_research 编排 + 原生一等工具
|
|
3
|
+
# (argo_search / argo_fetch)+ 原生 web_search seam(argo 引擎链)
|
|
4
|
+
# + 原生 web_fetch seam(argo 抓取链)
|
|
5
|
+
#
|
|
6
|
+
# fetch seam 的 pin 说明(必读,漏配会打挂 web_fetch):
|
|
7
|
+
# 宿主 dsh-web 的选择规则是「配置 id 优先,都没有且恰好一个可用则选它,
|
|
8
|
+
# 多个可用则 WEB_PROVIDER_AMBIGUOUS 直接报错」。web profile 默认挂着
|
|
9
|
+
# dsh-web-fetch-http(免 key、永远可用),我们再注册一个 fetch provider
|
|
10
|
+
# 就是两个可用——不 pin 的话 web_fetch 整个挂掉。故启用 fetch seam 的
|
|
11
|
+
# profile 必须在 web 服务行配 fetchProvider: argo(searchProvider 同理)。
|
|
12
|
+
#
|
|
13
|
+
# MCP 形态(mcp-argo,19 个 mcp__argo__* 完整工具面)默认不挂载:
|
|
14
|
+
# 工具定义每轮注入上下文且压缩清不掉(实测 19 工具 ≈3.7K token/轮),而搜索 /
|
|
15
|
+
# 抓取高频路径已由原生工具与 web seam 覆盖,走 CLI 单发同引擎同守卫、
|
|
16
|
+
# 零常驻开销。需要长尾取证能力(screenshot / pdf / social / article /
|
|
17
|
+
# job / extract / preflight / answer / watch / cite / evidence / clarify /
|
|
18
|
+
# crawl / local_*)时取消下方注释按需开启。
|
|
19
|
+
#
|
|
20
|
+
# 依赖:Node.js ≥ 18(npx)+ Python 3.9+(pip install pyyaml)。
|
|
21
|
+
# 安装后重启 dsh web 生效。
|
|
22
|
+
#
|
|
23
|
+
# 同 id 可在用户层 cordis.patch.yml 覆盖(同 id + name 才是替换)。
|
|
24
|
+
# worker 取证工具白名单用内置默认(mcp__argo__* 与原生工具双写,
|
|
25
|
+
# MCP 挂载与否两态自洽),不含 argo_research,避免研究套研究。
|
|
26
|
+
|
|
27
|
+
- insert:
|
|
28
|
+
# 按需开启:MCP 完整工具面(取消注释后重启生效)
|
|
29
|
+
# - id: mcp-argo
|
|
30
|
+
# name: '@deepseek-ai/dsh-mcp-client'
|
|
31
|
+
# config:
|
|
32
|
+
# serverName: argo
|
|
33
|
+
# transport: stdio
|
|
34
|
+
# command: npx
|
|
35
|
+
# args:
|
|
36
|
+
# - '-y'
|
|
37
|
+
# - 'github:taxueseek/argo'
|
|
38
|
+
- id: wide-research
|
|
39
|
+
name: '@taxueseek/argo-dsh'
|
|
40
|
+
config:
|
|
41
|
+
toolName: wide_research
|
|
42
|
+
provider: spawn
|
|
43
|
+
defaultWorkers: 6
|
|
44
|
+
maxWorkers: 9
|
|
45
|
+
maxTracks: 9
|
|
46
|
+
maxSourcesPerTrack: 5
|
|
47
|
+
workerMaxTokens: 5000
|
|
48
|
+
synthesisMaxTokens: 7000
|