argo-search 1.0.1 โ 2.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -21
- package/README.en.md +822 -0
- package/README.es.md +864 -0
- package/README.ja.md +864 -0
- package/README.ko.md +864 -0
- package/README.md +867 -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/settings-keys.png +0 -0
- package/assets/readme/settings-tools.png +0 -0
- package/assets/readme/why-better.svg +104 -0
- package/assets/readme/workflow.svg +83 -0
- package/backends/domain_profiles.json +2308 -96
- package/backends/engine_registry.yaml +3314 -503
- package/backends/query_synonyms_cn.json +35 -0
- package/backends/quota_profiles.json +2409 -161
- package/backends/source_types_cn.json +83 -0
- package/backends/text_lexicon.json +44 -0
- package/bin/argo +703 -0
- package/bin/argo.js +71 -39
- package/config.yaml +4976 -363
- 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 +564 -0
- package/docs/MCP_SETUP.md +106 -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/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/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/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 +31 -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/google_news.yaml +22 -0
- package/engines/specs/gov_regulations.yaml +38 -0
- package/engines/specs/guardian_rss.yaml +59 -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/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/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/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/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 +74 -0
- package/package.json +51 -12
- package/packages/dsh-plugin/README.md +134 -0
- package/packages/dsh-plugin/cordis.patch.yml +48 -0
- package/packages/dsh-plugin/dsh/client.js +1244 -0
- package/packages/dsh-plugin/dsh/index.js +2290 -0
- package/packages/dsh-plugin/dsh/native-tools.mjs +743 -0
- package/packages/dsh-plugin/package.json +38 -0
- package/packages/dsh-plugin/test/client.test.js +232 -0
- package/packages/dsh-plugin/test/config.test.js +30 -0
- package/packages/dsh-plugin/test/index.test.js +1338 -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 +271 -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/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/burstiness_detector.py +147 -0
- package/scripts/cache.py +1078 -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/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_security.py +685 -0
- package/scripts/content_signals.py +730 -0
- package/scripts/crawl.py +74 -35
- package/scripts/daemon.py +866 -0
- package/scripts/digup_bridge.py +214 -0
- package/scripts/engine_admission.py +366 -0
- package/scripts/engine_dispatch.py +1019 -0
- package/scripts/engine_env.py +534 -0
- package/scripts/engine_failure.py +411 -0
- package/scripts/engine_families.py +732 -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 +778 -294
- package/scripts/engines_base.py +1521 -0
- package/scripts/engines_builders.py +298 -0
- package/scripts/engines_builders_batch10.py +159 -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_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_search.py +440 -0
- package/scripts/engines_builders_tech.py +1360 -0
- package/scripts/evidence.py +588 -162
- package/scripts/evidence_loop.py +592 -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 +1779 -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 +184 -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 +0 -0
- package/scripts/image_vision/vision_probe.swift +126 -0
- package/scripts/install.ps1 +148 -0
- package/scripts/install.sh +206 -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_engines.py +321 -0
- package/scripts/local_image.py +970 -0
- package/scripts/local_seek.py +366 -0
- package/scripts/macro_countries.py +82 -0
- package/scripts/matrix_search_eval.py +1105 -0
- package/scripts/mcp_diag.py +8 -3
- package/scripts/mcp_handlers.py +1074 -0
- package/scripts/mcp_handlers_surface.py +157 -0
- package/scripts/mcp_launch.sh +122 -0
- package/scripts/mcp_server.py +118 -417
- package/scripts/mcp_setup.py +407 -0
- package/scripts/mcp_tools.py +330 -0
- package/scripts/mcp_transport.py +191 -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/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 +488 -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/redskill/redskill_engine.py +332 -0
- package/scripts/regression_p0p1.py +318 -0
- package/scripts/replay_eval.py +640 -0
- package/scripts/rerank_tfidf.py +225 -0
- package/scripts/research.py +591 -403
- package/scripts/research_cli.py +361 -0
- package/scripts/research_dossier.py +492 -0
- package/scripts/research_expand.py +146 -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/robots_guard.py +259 -0
- package/scripts/route.py +921 -254
- package/scripts/route_bangs.py +40 -0
- package/scripts/route_cache.py +225 -0
- package/scripts/route_combo.py +910 -0
- package/scripts/route_domains.py +328 -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 +897 -405
- package/scripts/search_attribution.py +88 -0
- package/scripts/search_benchmark.py +407 -0
- package/scripts/search_cli.py +627 -0
- package/scripts/search_entry.py +389 -0
- package/scripts/search_output.py +606 -0
- package/scripts/search_pipeline.py +1077 -0
- package/scripts/search_rank.py +991 -0
- package/scripts/search_types.py +27 -12
- package/scripts/seek_locator.py +68 -0
- package/scripts/semantic_evidence.py +215 -0
- package/scripts/serp_guard.py +228 -0
- package/scripts/serp_kill_log.py +51 -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 +95 -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 +402 -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/sub-skills/ego-search/SKILL.md +253 -0
- package/sub-skills/ego-search/references/browser-runtime.md +43 -0
- package/sub-skills/ego-search/references/install.md +67 -0
- package/sub-skills/ego-search/references/original-ego-upgrade.md +51 -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/ego-search/tests/test_query_normalize.py +68 -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/js-run/tests/fixtures/challenge_like.js +27 -0
- package/sub-skills/js-run/tests/test_jsrun.py +165 -0
- package/sub-skills/local-search/SKILL.md +50 -53
- package/sub-skills/local-search/bm25.py +162 -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/search_v3.py +1182 -65
- 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/references/auto-behaviors.md +24 -0
- package/sub-skills/local-seek/references/fd-mdfind-recipes.md +62 -0
- package/sub-skills/local-seek/references/git-integration.md +54 -0
- package/sub-skills/local-seek/references/remote-handoff.md +46 -0
- package/sub-skills/local-seek/references/rg-recipes.md +96 -0
- package/sub-skills/local-seek/references/strategies.md +52 -0
- package/sub-skills/local-seek/references/structural-search.md +59 -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 +193 -0
- package/sub-skills/local-seek/tests/test_content_rank.py +222 -0
- package/sub-skills/local-seek/tests/test_determinism_20261006.py +145 -0
- package/sub-skills/local-seek/tests/test_noise_tier.py +101 -0
- package/sub-skills/local-seek/tests/test_pcre2_probe.py +136 -0
- package/sub-skills/local-seek/tests/test_rank_pinyin.py +77 -0
- package/sub-skills/local-seek/tests/test_regression_20261003.py +169 -0
- package/sub-skills/local-seek/tests/test_regression_20261006.py +146 -0
- package/sub-skills/local-seek/tests/test_seek_degradation.py +111 -0
- package/sub-skills/local-seek/tests/test_seek_fts.py +313 -0
package/README.ko.md
ADDED
|
@@ -0,0 +1,864 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="assets/readme/hero.svg" width="100%" alt="Argo ์๋ฅด๊ณ : ์์ด์ ํธ๋ฅผ ์ํ ๊ฒ์๊ณผ ์ฌ์ธต ๋ฆฌ์์น ๋๊ตฌ, 264๊ฐ ๊ฒ์ ์์ค, ๋๋ฉ์ธยท์ธ์ด๋ณ ๋ผ์ฐํ
, ํก์ ๊ฐ๋ฅํ ์ฆ๊ฑฐ ์ถ๋ ฅ">
|
|
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
|
+
<strong>ํ๊ตญ์ด</strong> ยท
|
|
10
|
+
<a href="README.es.md">Espaรฑol</a>
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
<p align="center">
|
|
14
|
+
<a href="#๋ฌด์์ธ๊ฐ">์๊ฐ</a> ยท
|
|
15
|
+
<a href="#๋ชจ๋ธ-๋ด์ฅ-๊ฒ์--ai-๊ฒ์--๋ฉํ๊ฒ์๋ณด๋ค-๊ฐํ-์ ">๋น๊ต</a> ยท
|
|
16
|
+
<a href="#์ง๋ฌธ-ํํ์-๋ง๋-๋ผ์ฐํ
">์ฆ๋ช
</a> ยท
|
|
17
|
+
<a href="#๋์-๋ฐฉ์">๋ฉ์ปค๋์ฆ</a> ยท
|
|
18
|
+
<a href="#๋น ๋ฅธ-์์">๋น ๋ฅธ ์์</a> ยท
|
|
19
|
+
<a href="#๊ธฐ๋ฅ">๊ธฐ๋ฅ</a> ยท
|
|
20
|
+
<a href="#์ค์น์-์ค์ ">์ค์ </a> ยท
|
|
21
|
+
<a href="#์ต๊ทผ-์
๋ฐ์ดํธ">์
๋ฐ์ดํธ</a>
|
|
22
|
+
</p>
|
|
23
|
+
|
|
24
|
+
<p align="center">
|
|
25
|
+
<img alt="license" src="https://img.shields.io/badge/license-Apache_2.0-blue">
|
|
26
|
+
<img alt="python" src="https://img.shields.io/badge/python-3.9+-green">
|
|
27
|
+
<img alt="version" src="https://img.shields.io/badge/version-2.9.7-informational">
|
|
28
|
+
<img alt="engines" src="https://img.shields.io/badge/engines-264-orange">
|
|
29
|
+
<img alt="mcp" src="https://img.shields.io/badge/MCP-19%20tools-purple">
|
|
30
|
+
</p>
|
|
31
|
+
|
|
32
|
+
> **์ด ์ ์ฅ์๋ taxueseek์ DeepSeek Harness ํ๋ฌ๊ทธ์ธ ๋ผ์ธ์
์ค ํ๋**์
๋๋ค๏ผ[dsh-files](https://github.com/taxueseek/dsh-files) 39โ
๏ผ. ๊ฐ์ ์ ์ ์คํฌ ์๋ฆฌ์ฆ: [session-digger](https://github.com/taxueseek/session-digger) 29โ
ยท [taxue-invest](https://github.com/taxueseek/taxue-invest) 21โ
ยท [taxueskills](https://github.com/taxueseek/taxueskills) 23โ
ยท [taxue-creative-style](https://github.com/taxueseek/taxue-creative-style) 12โ
|
|
33
|
+
|
|
34
|
+
# Argo ์๋ฅด๊ณ : ์์ด์ ํธ๋ฅผ ์ํ ๊ฒ์๊ณผ ์ฌ์ธต ๋ฆฌ์์น ๋๊ตฌ
|
|
35
|
+
|
|
36
|
+
## ๋ฌด์์ธ๊ฐ
|
|
37
|
+
|
|
38
|
+
**Argo๋ ์์ด์ ํธ์ ์ค์นํ๋ ๊ฒ์ยท์ฌ์ธต ๋ฆฌ์์น ๋๊ตฌ์ด๋ฉฐ, ๊ด๋ จ ์นํ์ด์ง์ ์ ๋ณด๋ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ๋ค์๋ 264๊ฐ์ ๊ฒ์ ์์ค๊ฐ ์๊ณ 95๊ฐ ์
๋ฌด ์์ญ์ ์ปค๋ฒํ๋ฉฐ, ๋ก์ปฌ ํ์ผ ๊ธฐ๋ณธ ๊ฒ์๋ ์ง์ํฉ๋๋ค. ์คํ์์ค ๊ฒ์ ํ๋ก์ ํธ ๊ฐ์ด๋ฐ ๋งค์ฐ ๊ฐ๋ ฅํ ๊ฒ์ ๋ฅ๋ ฅ์ ๊ฐ์ท์ต๋๋ค.**
|
|
39
|
+
|
|
40
|
+
API Key๋ฅผ ์ค์ ํ๋ฉด ๊ฒ์ ํ์ง์ด ์ฌ๋ผ๊ฐ๋๋ค(ํค๊ฐ ์๋ ์์ค๋ ๋ณดํต ๋ ์ข๊ณ , ์์ผ๋ฉด ์๋์ผ๋ก ๊ฑด๋๋). ๋ฌด๋ฃ ์์ง๊ณผ ๋ก์ปฌ ์์ง์ด ์๋์ผ๋ก ๋ณด๋ฃจ ์ญํ ์ ํฉ๋๋ค. ์ค๊ตญ์ดยท์์ดยท์ผ๋ณธ์ดยทํ๊ตญ์ด ๋ฑ 18๊ฐ ์ธ์ด๋ฅผ ์ปค๋ฒํ๊ณ , ๊ธ์ตยทํ์ ยท์ํยท์คํฌ์ธ ยท์ฝ๋ยท๋งคํฌ๋ก ๊ฐ์ ์์ง ์๋๋ฆฌ์ค๋ฅผ ์ง์ํฉ๋๋ค.
|
|
41
|
+
|
|
42
|
+
## ํ์ ์คํฌ
|
|
43
|
+
|
|
44
|
+
Argo์ ๋ฅ๋ ฅ์ ๋ค ๊ฐ์ ํ์ ์คํฌ(sub-skills)๋ก ๊ตฌ์ฑ๋๋ฉฐ, ๊ฐ ํ์ ์คํฌ์ ๋
๋ฆฝ์ ์ผ๋ก ์ธ ์ ์๋ ํ์ดํ๋ผ์ธ์
๋๋ค:
|
|
45
|
+
|
|
46
|
+
| ํ์ ์คํฌ | ๋ฅ๋ ฅ |
|
|
47
|
+
|--------|------|
|
|
48
|
+
| **local-search** | ๋ก์ปฌ ํ์ผ ๊ฒ์ + ๋ก์ปฌ ์ ๋ก ๋น์ฉ ์ง๊ณ ์์ง(๋ก์ปฌ ์์ง 32๊ฐ). ์ฝ๋ ์ฌ๋ณผ, ํ์ผ๋ช
, ๋ฌธ์ ์ ๋ฌธ, ํ์ผ ๊ตฌ์กฐ ๊ฒ์. ๋คํธ์ํฌ ๊ฒ์ ๊ฒฐ๊ณผ์ ํฉ์น ์ ์๊ณ , ์ค์์น ํ๋๋ฉด ๋ก์ปฌ ์ ์ค์ด ๊ฐ์ ๊ฒ์์ ํจ๊ป ๋ค์ด๊ฐ |
|
|
49
|
+
| **local-seek** | ๋ก์ปฌ ์๋งจํฑ ๊ฒ์(BM25 + ๋ฒกํฐ ํ์ด๋ธ๋ฆฌ๋), ๋
ธํธยท๋ฉ๋ชจ๋ฆฌยท์๋ฃ์ค ๊ฒ์. 3๋จ๊ณ ์ ์ง: ํ์ผ ์์น ํ์ธ โ ๋ฌธ๋งฅ ํ์ธ โ ๋จ๋ฝ ์ ๋
|
|
|
50
|
+
| **ego-search** | ๋ก๊ทธ์ธ ์ํ ์ ๋ฌธ ๊ฒ์. ์งํ, ์ค์คํ์, ์์ฑ ๊ณต์๊ณ์ ์ฒ๋ผ ๋ก๊ทธ์ธํด์ผ ๋ณผ ์ ์๋ ์ฝํ
์ธ ๋ฅผ ์ค์ ๋ธ๋ผ์ฐ์ ์ ๋ก๊ทธ์ธ ์ํ๋ก ๊ฒ์. ๊ธฐ๋ณธ ๊บผ์ง, ํ์ํ ๋ ์ผฌ |
|
|
51
|
+
| **js-run** | ๋ธ๋ผ์ฐ์ ์์ด ์น JS ์คํ. ๋ธ๋ผ์ฐ์ ๋ฅผ ์ด์ง ์๊ณ ใํ๊ฒฝ ํ์ง + ์์ ๊ณ์ฐใํ ์น ์คํฌ๋ฆฝํธ๋ฅผ ์คํ, ๋จ์ผ ์ปจํ
์คํธ P50 ์ฝ 1ms |
|
|
52
|
+
|
|
53
|
+
๋ค ํ์ ์คํฌ์ด ใ๋ก์ปฌ ๊ฒ์ใ์์ ใ์น ์ ์ฒด ๊ฒ์ใ, ใ๋ก๊ทธ์ธ ๋ฒฝ ๋ค ๊ฒ์ใ๊น์ง ์ ์ฒด์ธ์ ์ปค๋ฒํฉ๋๋ค. ๋๋ถ๋ถ์ local-search + ๋คํธ์ํฌ ๊ฒ์์ด๋ฉด ์ถฉ๋ถํ๊ณ , ํน์ํ ๊ฒฝ์ฐ์ ego-search์ js-run์ ์ผ๋ฉด ๋ฉ๋๋ค.
|
|
54
|
+
|
|
55
|
+
## DSH ํ๋ฌ๊ทธ์ธ
|
|
56
|
+
|
|
57
|
+
Argo๋ DeepSeek Harness ํ๋ฌ๊ทธ์ธ์ด๊ธฐ๋ ํ๋ฉฐ, ๋ช
๋ น ํ ์ค๋ก ์ค์นํฉ๋๋ค:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
dsh plugin --profile web add "github:taxueseek/argo"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
์ค์น ํ `dsh web`์ ์ฌ์์ํ๋ฉด ์ ์ฉ๋ฉ๋๋ค. ๊ฒ์๊ณผ ๊ธ๊ธฐ๊ฐ ๋ค์ดํฐ๋ธ 1๊ธ ๋๊ตฌ๊ฐ ๋์ด MCP ์ฐ๊ฒฐ์ ์์กดํ์ง ์๊ณ ์์ฃผ ์ปจํ
์คํธ ๋น์ฉ๋ ์ฐจ์งํ์ง ์์ต๋๋ค. ๊ทธ ์ธ `wide_research` ๋ณ๋ ฌ ๋ฆฌ์์น 1๊ฐ์ MCP ๋๊ตฌ 19๊ฐ๋ฅผ ํ์ํ ๋ ์ผค ์ ์์ต๋๋ค. ์ ์ฒด ์ฐ๋ ํํ๋ ์๋์์.
|
|
64
|
+
|
|
65
|
+
### ์ธ ๊ฐ์ง ํธ์ถ ์ฑ๋, ํ๋์ ๊ธฐ๋ฅ ์ธํธ
|
|
66
|
+
|
|
67
|
+
๊ฐ์ argo ๊ฒ์ ์ฝ์ด(๊ฐ์ ์์ง, ๊ฐ์ ์์ถ, ๊ฐ์ ๊ฐ๋)๊ฐ DSH ์์์ ์ธ ๊ฐ์ ์ฑ๋์ ์ด๊ณ , ํธ์คํธ ๋ฅ๋ ฅ์ ๋ฐ๋ผ ์๋์ผ๋ก ๋ค์ด๊ทธ๋ ์ด๋๋๋ฉฐ ์๋ก๋ฅผ ๋ฐฑ์
ํฉ๋๋ค:
|
|
68
|
+
|
|
69
|
+
| ์ฑ๋ | ๊ธฐ๋ณธ๊ฐ | ๋์ |
|
|
70
|
+
|------|--------|------|
|
|
71
|
+
| **๋ค์ดํฐ๋ธ 1๊ธ ๋๊ตฌ** | ์ผฌ | `argo_search` / `argo_fetch` ๋ฑ์ `ctx.tools.register`๋ก ๋ฑ๋กํ๊ณ CLI ๋จ๋ฐ(`--call`)๋ก ์คํํฉ๋๋ค. MCP์ ๋์ผํ ์์งยท๊ฐ๋ ์คํ์ ์ฌ์ฌ์ฉํ๋ฏ๋ก **MCP ์ฐ๊ฒฐ ๋ถํ์, ์์ฃผ ํ ํฐ ๋น์ฉ 0** |
|
|
72
|
+
| **๋ค์ดํฐ๋ธ web seam** | ์ผฌ | `argo`๋ฅผ ๊ฒ์ ํ๋ก๋ฐ์ด๋์ ๊ธ๊ธฐ ํ๋ก๋ฐ์ด๋ ์์ชฝ์ผ๋ก ๋ฑ๋กํด ํธ์คํธ ๋ด์ฅ `web_search`๋ argo ์์ง ์ฒด์ธ์ผ๋ก, `web_fetch`๋ argo ๊ธ๊ธฐ ์ฒด์ธ์ผ๋ก ๋ผ์ฐํ
ํฉ๋๋ค(HTTP ์ฐ์ , Cloudflare / JS ๋ ๋๋ง์์๋ ์๋์ผ๋ก ์ํฐ ๋ํ
์
๋ธ๋ผ์ฐ์ ๋ก ์น๊ฒฉ) |
|
|
73
|
+
| **MCP ํํ** | ํ์ ์ | 19๊ฐ `mcp__argo__*` ์ ์ฒด ๋๊ตฌ ๋ฉด. ๋๊ตฌ ์ ์๋ ๋งค ๋ผ์ด๋ ์ปจํ
์คํธ์ ์ฃผ์
๋๋ฉฐ ์์ถํด๋ ์ง์์ง์ง ์์ต๋๋ค(19๊ฐ ๋๊ตฌ ์ค์ธก โ3.7K ํ ํฐ/๋ผ์ด๋). ๋ฐ๋ฉด ๊ณ ๋น๋ ๊ฒฝ๋ก๋ ๋ค์ดํฐ๋ธ ๋๊ตฌ์ web seam์ด ์ด๋ฏธ ์ปค๋ฒํ๋ฏ๋ก ๊ธฐ๋ณธ์ ์ผ๋ก ๋ง์ดํธํ์ง ์์ต๋๋ค. ๋กฑํ
์ผ ํฌ๋ ์ ๋๊ตฌ๊ฐ ํ์ํ ๋ profile patch์ `mcp-argo` ์ค ์ฃผ์์ ํด์ ํ์ธ์ |
|
|
74
|
+
|
|
75
|
+
๊ทธ ์ธ `wide_research`๊ฐ 1๊ฐ ์์ต๋๋ค: ๋ณด์์ ์ธ ํธ๋์ ๊ณํ(`depends_on`์ผ๋ก ๋จ๊ณํ, ๊ธฐ๋ณธ์ ๋ณ๋ ฌ) โ ์ ๊ณ ๋ณ๋ ฌ ์๋ธ์์ด์ ํธ๋ก ์ฆ๊ฑฐ ์์ง โ ์ถ์ฒ ์ฅ๋ถ(http(s) URL๋ง ๊ธฐ๋ก) โ ์ข
ํฉ ๋ณด๊ณ ์. ์ถ๋ ฅ์๋ `quality_gate_results`(`conclusion_cap`: low/medium/high)๊ฐ ๋ถ๊ณ , `passed=false`์ผ ๋๋ ํํ์ ๋ฎ์ถ๊ณ ๊ฒฐ๋ก ์ ์ ์ฅ๋ถ์ ์ถ์ฒ๋ฅผ ๊ฒ์ฆํฉ๋๋ค. worker ์ฆ๊ฑฐ ๋๊ตฌ ํ์ฉ ๋ชฉ๋ก์ MCP ์ด๋ฆ๊ณผ ๋ค์ดํฐ๋ธ ์ด๋ฆ์ ๋ ๋ค ์ฐ๋ฏ๋ก(allow ์๋ฏธ) MCP ๋ง์ดํธ ์ฌ๋ถ์ ๋ฌด๊ดํ๊ฒ ๋์ํฉ๋๋ค. MCP๊ฐ ์์ผ๋ฉด ์ ์ฒด ๋ฉด์ ์ฐ๊ณ , ์์ผ๋ฉด `argo_search` / `argo_fetch`์ ํธ์คํธ์ `web_search` / `web_fetch`๋ก ๋จ์ด์ง๋๋ค.
|
|
76
|
+
|
|
77
|
+
์ผ์์ ์ธ ์ง๋ฌธ์๋ `argo_search`, ๋จ์ผ ์์ด์ ํธ ํฌ๋ ์์๋ `argo_research`, ์ธ์ฉ ์ฅ๋ถ๊ฐ ํ์ํ ๋ค๊ฐ์ ๋น๊ต์๋ `wide_research`๋ฅผ ๋๋ ์๋๋ค. worker๋ ๊ธฐ๋ณธ์ ์ผ๋ก argo ์ฆ๊ฑฐ ๋๊ตฌ๋ง ํธ์ถํ ์ ์๊ณ `argo_research`๋ฅผ ๋ค์ ํธ์ถํ ์ ์์ต๋๋ค(ํ๋ ๊ฐ๋ โ ์ฌ์ฉ์ ๊ณ์ธต์ ๆพ่ก๋ ๋ฌดํจ).
|
|
78
|
+
|
|
79
|
+
### ๋ด์ฅ ์ค์ ํ์ด์ง: ์ฌ์ฏ ๊ฐ ๊ตฌ์ญ, ์ ์ฅ ์ฆ์ ์ ์ฉ
|
|
80
|
+
|
|
81
|
+
ํ๋ฌ๊ทธ์ธ์๋ ๋ธ๋ผ์ฐ์ ์ธก ์ค์ ํ์ด์ง๊ฐ ๋ด์ฅ๋์ด ์๊ณ ์
๊ตฌ๋ ๋ ๊ณณ์
๋๋ค: ์ค์ ํ์
(`Cmd+,`)์ ์ผ์ชฝ ๋ฉ๋ด ํญ๋ชฉ "Argo", ๋๋ ์ค์ > ํ๋ฌ๊ทธ์ธ > Argo(๊ฐ์ ํจ๋์ ์์ฝ ์นด๋, ํด๋ฆญํ๋ฉด ์ด๋ฆฝ๋๋ค).
|
|
82
|
+
|
|
83
|
+
<p align="center">
|
|
84
|
+
<img src="assets/readme/settings-tools.png" width="100%" alt="Argo ์ค์ ํ์ด์ง '๋๊ตฌ' ๊ตฌ์ญ: ๊ณ ๋น๋ ๊ฒฝ๋ก๋ argo_search / argo_fetch๊ฐ ๊ธฐ๋ณธ์ผ๋ก ์ผ์ ธ ์๊ณ , ๋กฑํ
์ผ ํฌ๋ ์ 16๊ฐ๋ ํ์์ ๋ฐ๋ผ ์ฒดํฌ, ์๋์ ๋จ๋ฐ ํธ์ถ ํ์์์๊ณผ ๋ฐํ ํ
์คํธ ์ํ">
|
|
85
|
+
</p>
|
|
86
|
+
|
|
87
|
+
<p align="center">
|
|
88
|
+
<img src="assets/readme/settings-keys.png" width="100%" alt="Argo ์ค์ ํ์ด์ง 'ํค' ๊ตฌ์ญ: ์ฃผ์ ์์ง ํค์ ์
๋ ฅยท๊ฐฑ์ ยท์ญ์ , ์ค์ ๋จ/๋ฏธ์ค์ ๊ณผ ์ถ์ฒ ๊ณ์ธต ํ์, ํ๋ฌธ์ ํ์ํ์ง ์์, ๊ฐ ํ์ '์ ๋ฌ' ์ฒดํฌ๋ฐ์ค">
|
|
89
|
+
</p>
|
|
90
|
+
|
|
91
|
+
| ๊ตฌ์ญ | ๊ด๋ฆฌ ๋ด์ฉ |
|
|
92
|
+
|------|-----------|
|
|
93
|
+
| **ๆฅๅ
ฅ** | `web_search` / `web_fetch` seam ์ ํ. ์์ง ์คํ ๋ช
๋ น๊ณผ ์ธ์(npx ๋๋ ๋ก์ปฌ `mcp_server.py`). ๊ฒ์/๊ธ๊ธฐ ํ์์์, ๋ณธ๋ฌธ ์ํ, ์ ํด ์ฐ๊ฒฐ ํ์, ๋์ ์ฐ๊ฒฐ ์ |
|
|
94
|
+
| **๋๊ตฌ** | 18๊ฐ ๋ค์ดํฐ๋ธ 1๊ธ ๋๊ตฌ ์ฒดํฌ(๊ธฐ๋ณธ์ `argo_search` / `argo_fetch`๋ง). ๋จ๋ฐ ํธ์ถ ํ์์์๊ณผ ๋ฐํ ํ
์คํธ ์ํ |
|
|
95
|
+
| **ๅผๆ** | argo ๋ณธ์ฒด์ ๋์ ์ค์์น(๊ธฐ์กด์๋ ํ๊ฒฝ ๋ณ์, ํ๋ ์ด์
๋ ํ์ฉ ๋ชฉ๋ก 28๊ฐ: ์บ์ / TF-IDF ์ฌ์์ / ์์น ๊ต์ฐจ ๊ฒ์ฆ / MinHash ์ค๋ณต ์ ๊ฑฐ / SERP ๊ฐ๋, Jina / ๋ชจ๋ฐ์ผ UA / Parallel ๊ธ๊ธฐ ๊ณ์ธต, ์๋ฏธ ์ฆ๊ฑฐ ๊ณ์ธต, ํค์ง ์ฌ์ ์ ๊ผฌ๋ฆฌ ํญ, ์์ง ํ์ฑํ ๋ชฉ๋ก, ํ๋ก์, ๋ก์ปฌ ๊ฒ์ ๋ฃจํธ์ ์ฝ๊ธฐ ํ์ฉ ๋ชฉ๋ก, ์์
/ ์ฌ์ฉ ๋ก๊ทธ / ์ฐ๊ฒฐ ํ / ๊ฐ์ข
TTL). ์ค์์น๋ฅ๋ ์ฆ์ ๋ฐ์, ์ซ์ยทํ
์คํธยท๋ชฉ๋ก๋ฅ๋ ๊ทธ๋ฃน ์ ์ฅ. ๋ฏธ์ค์ ํ์ argo ๊ธฐ๋ณธ๊ฐ์ ํ์ํ๊ณ "้ป่ฎค"๋ก ํ๊ธฐ. ์ธ๊ฐ ๊ณ์ด ์ค์์น(์ฌ๊ณ์ฐ ์คํ, ์ธํธ๋ผ๋ท URL)๋ ์๋์ ์ผ๋ก ํจ๋์ ๋ฃ์ง ์์ต๋๋ค |
|
|
96
|
+
| **ๅฏ้ฅ** | ์ฃผ์ ์์ง ํค์ ์
๋ ฅยท๊ฐฑ์ ยท์ญ์ . "์ค์ ๋จ / ๋ฏธ์ค์ + ์ถ์ฒ ๊ณ์ธต(ๅญ่ฏๅบ / ์์ ํ๊ฒฝ / .env) + ์ฝ๊ธฐ ์ ์ฉ ์ํ"๋ฅผ ํ์ํ๊ณ ํ๋ฌธ์ ํ์ํ์ง ์์ต๋๋ค. ๊ฐ ํ์ "์ ๋ฌ" ์ฒดํฌ๋ ์ฐธ์กฐ ์ด๋ฆ์ `keyRefs`์ ์ถ๊ฐํ๋ ๊ฒ๊ณผ ๋์ผํฉ๋๋ค |
|
|
97
|
+
| **็ ็ฉถ** | worker / ํธ๋ / ํธ๋๋น ์ถ์ฒ / ํ ํฐ ์ํ๊ณผ ๋ณด๊ณ ์ ์ถ๋ ฅ ๋๋ ํฐ๋ฆฌ |
|
|
98
|
+
| **้ซ็บง** | worker ๋๊ตฌ allow / deny ๋ชฉ๋ก, ๅญ่ฏ ์ ๋ฌ ๋ชฉ๋ก |
|
|
99
|
+
|
|
100
|
+
์ ์ฅ์ ์ฆ์ ์ ์ฉ๋ฉ๋๋ค(๋ชจ๋ volatile ์ค์ ): ๋ค์ดํฐ๋ธ ๋๊ตฌ ์ธํธ๋ ์ฒดํฌ์ ๋ฐ๋ผ ๋ฑ๋กยทํด์ ๋๊ณ , ํ์์์ยท๋์์ฑยท์ฐ๊ตฌ ์ํ์ ๋ค์ ํธ์ถ ๋ ์ฝํ๋๋ค. ์์ง ์ค์์น๋ `argoEnv`(ํ ์ค์ ํ๋์ `KEY=VALUE`)๋ก argo ์๋ธํ๋ก์ธ์ค env์ ๋ค์ด๊ฐ ๋ค์ ์ ๊ท ์ฐ๊ฒฐ๋ถํฐ ์ ์ฉ๋ฉ๋๋ค(ํ์ ์ค๋๋ ์ฐ๊ฒฐ์ `searchIdleMs`๋ก ํ์, ๊ธฐ๋ณธ 60์ด). ๊ตฌ์กฐ์ ํ๋(`toolName`, `provider`, `searchProviderId`, `fetchProviderId`)๋ ์ค์ ํ์ด์ง์ ์๊ณ ์ฌ์ ํ profile patch๋ฅผ ๊ฑฐ์น๋ฏ๋ก ๋ณ๊ฒฝ ํ ์ฌ์์์ด ํ์ํฉ๋๋ค.
|
|
101
|
+
|
|
102
|
+
**ํค ๋ณด์**: ํค๋ DSH ๅญ่ฏๅบ(Models ํ์ด์ง์ ๊ฐ์ ๊ณณ)์ ์ฐ์ด๋ฉฐ ํ๋ฌ๊ทธ์ธ ์ค์ ์๋ ์ฐ์ด์ง ์๊ณ , ๋ก๊ทธ์๋ ๋จ์ง ์์ผ๋ฉฐ ํ๋ฌธ๋ ํ์ํ์ง ์์ต๋๋ค. ๅญ่ฏ ํด์ ์ฐ์ ์์๋ **์ ์ฅ ํ์ผ ๊ณ์ธต > ์์ ํ๊ฒฝ > ํ๋ก์ ํธ .env > ํ .env**์ด๋ฉฐ, ํจ๋(๋๋ Models ํ์ด์ง)์์ ์ ์ฅํ๋ฉด ์์ ํ๊ฒฝ์ ์ค๋๋ ๊ฐ์ ๋ฎ์ด์ฐ๊ณ argo ์๋ธํ๋ก์ธ์ค๋ ๋ค์ ์ ๊ท ์ฐ๊ฒฐ์์ ์ ํค๋ฅผ ๋ฐ์ต๋๋ค. "์ญ์ "๋ ๅญ่ฏๅบ ๊ฐ๋ง ์ง์ฐ๋ฏ๋ก ํ๊ฒฝ ๋ณ์๋ `.env`๊ฐ ์ ๊ณตํ ํค๋ ๋ค์ ๋๋ฌ๋ฉ๋๋ค. ์ค์ ํ์ด์ง๋ ๅญ่ฏ ๋๋ฉ์ธ์ ์ฐ๊ธฐ ์
๊ตฌ์ผ ๋ฟ์ด๋ฉฐ, ์ฝ๊ธฐ๋ ํธ์คํธ๊ฐ ๋งค ํธ์ถ ๋ ์ํํฉ๋๋ค.
|
|
103
|
+
|
|
104
|
+
**DeepSeek ๊ณต์ ํค๋ ๋ค์ดํฐ๋ธ๋ก ๊ณต๊ธ**: argo์ `deepseek_search` ์์ง(๊ณต์ `api.deepseek.com/v1/tools/search`, ๊ฒฐ๊ณผ์ authority ๊ถ์ ๋ฑ๊ธ / rerank_score / ๊ฒ์ ์๊ฐ์ด ๋ถ์)์ DSH ๊ณต์ ๊ฒ์ ๋ฐฑ์๋์ **๊ฐ์ ํค๋ฅผ ๊ณต์ **ํฉ๋๋ค. ํ๋ฌ๊ทธ์ธ์ DSH ๋ค์ดํฐ๋ธ ๅญ่ฏ seam์ผ๋ก ๊ฐ์ ธ์ค๋ฏ๋ก ์๋ ์ค์ ์ด ํ์ ์์ต๋๋ค. ํด์์ `ctx.get('credentials').resolve('DEEPSEEK_API_KEY')`๋ก ํธ์ถ๋ง๋ค ์ด๋ฃจ์ด์ง๋ฉฐ, web Models ํ์ด์ง์์ ํค๋ฅผ ๊ต์ฒดํ๋ฉด ๋ค์ ์ ๊ท ์ฐ๊ฒฐ์์ ๋ฐ์๋๊ณ ํ๋ฌ๊ทธ์ธ ์ฌ์์๋ ํ์ ์์ต๋๋ค. ํ๋ฌ๊ทธ์ธ์ ํค ํ์ผ์ ์ฝ์ง ์๊ณ , ๋์คํฌ์ ์ฐ์ง ์์ผ๋ฉฐ, ๋ก๊ทธ์๋ ๋จ๊ธฐ์ง ์์ต๋๋ค. ํค ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํตํด์๋ง argo ์๋ธํ๋ก์ธ์ค env์ ๋ค์ด๊ฐ๋ฉฐ ์ถ๋ ฅ์ด๋ ์ค๋ฅ ๋ฉ์์ง์ ์ผ์ ํฌํจ๋์ง ์์ต๋๋ค. credentials ์๋น์ค๊ฐ ์๋ ๊ตฌํ ํธ์คํธ์์๋ ์กฐ์ฉํ ๊ฑด๋๋ฐ๊ณ , ํด๋น ์์ง์ ํค ๋ถ์กฑ์ผ๋ก ๋นํ์ฑํ๋๋ฉฐ ๋๋จธ์ง 263๊ฐ ์์ค๋ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.
|
|
105
|
+
|
|
106
|
+
**web seam pin์ ํ์ ์ฝ๊ธฐ์
๋๋ค**(์ค์ ๋๋ฝ ์ `web_fetch`๊ฐ ๊นจ์ง๋๋ค): ํธ์คํธ `dsh-web`์ ํ๋ก๋ฐ์ด๋ ์ ํ ๊ท์น์ "์ค์ ๋ id๊ฐ ์ฐ์ . ๋ฏธ์ค์ ์ด๊ณ ์ฌ์ฉ ๊ฐ๋ฅ์ด ์ ํํ ํ๋๋ฉด ๊ทธ๊ฒ์ ๊ณ ๋ฆ. **์ฌ๋ฌ ๊ฐ๋ฉด `WEB_PROVIDER_AMBIGUOUS`๋ก ์คํจ**". web profile์ ๊ธฐ๋ณธ์ผ๋ก ๊ณต์ http fetch ํ๋ก๋ฐ์ด๋(key ๋ถํ์, ํญ์ ์ฌ์ฉ ๊ฐ๋ฅ)๋ฅผ ์ ์งํ๊ณ ์ด ๋ฒ๋ค์ด ํ๋๋ฅผ ๋ ๋ฑ๋กํ๋ฏ๋ก, pin์ด ์์ผ๋ฉด ์ฌ์ฉ ๊ฐ๋ฅ์ด ๋ ๊ฐ๊ฐ ๋์ด **`web_fetch`๊ฐ ํต์งธ๋ก ๊นจ์ง๋๋ค**(profile์ ๋ค๋ฅธ ๊ฒ์ ํ๋ก๋ฐ์ด๋๊ฐ ์์ผ๋ฉด `web_search`๋ ๋ง์ฐฌ๊ฐ์ง). ๋ฐ๋ผ์ web seam์ ํ์ฑํํ profile์ ๋ฐ๋์ web ์๋น์ค ์ค์ ๋ช
์ํด์ผ ํฉ๋๋ค:
|
|
107
|
+
|
|
108
|
+
```yaml
|
|
109
|
+
- id: web
|
|
110
|
+
config:
|
|
111
|
+
searchProvider: argo # ๊ฒ์ seam์ด ํ์ฑํ๋ ๊ฒฝ์ฐ(๊ธฐ๋ณธ ํ์ฑ) ํ์
|
|
112
|
+
fetchProvider: argo # ๊ธ๊ธฐ seam์ด ํ์ฑํ๋ ๊ฒฝ์ฐ(๊ธฐ๋ณธ ํ์ฑ) ํ์
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
`searchProviderEnabled: false` / `fetchProviderEnabled: false`๋ ํด๋น seam์ ํต์งธ๋ก ๋๋๋ค(ํ๋ก๋ฐ์ด๋๋ ๋ฑ๋ก๋ ์ฑ๋ก ๋จ์ง๋ง ์ ํ ๋ถ๊ฐ, ๋ค๋ฅธ ์ชฝ์๋ ์ํฅ ์์). ์์ง ์ชฝ์์๋ Firecrawl ๊ฐ์ ์ต๋ช
์ฌ์ฉ ๊ฐ๋ฅ ์์ง์ด **ํค ์์ด ๊ทธ๋๋ก ์ธ ์ ์๊ณ **(๋ฌด๋ฃ ๊ณ์ธต ํ ๋น๋), ํค๊ฐ ์ค์ ๋ ์์ง์ ์๋์ผ๋ก ์ธ์ฆ ์์ฒญ์ผ๋ก ์น๊ฒฉ๋๋ฉฐ ํค ๋ถ์กฑ์ ๋ผ์ฐํ
์ ๋ง์ง ์์ต๋๋ค.
|
|
116
|
+
|
|
117
|
+
> ์ ์ฒด ์ค์ ํญ๋ชฉ, Compatibility ๋ฒ์ ๋์ํ, ์ ๊ฑฐ ์ ์ฐจ๋ [packages/dsh-plugin/README.md](packages/dsh-plugin/README.md)์ ์์ต๋๋ค.
|
|
118
|
+
|
|
119
|
+
## ํต์ฌ ๊ฐ์
|
|
120
|
+
|
|
121
|
+
**264๊ฐ ์์ค, ๊ทธ์ค 227๊ฐ๋ ํค ์์ด ๋ฐ๋ก ์ฌ์ฉ.** API Key๋ฅผ ํ๋๋ ์ค์ ํ์ง ์์๋ ๋์๊ฐ๊ณ , ๋ฌด๋ฃ ์์ง๊ณผ ๋ก์ปฌ ์์ง์ด ์๋์ผ๋ก ๋ณด๋ฃจ ์ญํ ์ ํฉ๋๋ค. ํค๊ฐ ์๋ ์์ค๋ ๋ณดํต ๋ ์ข๊ณ , ์์ผ๋ฉด ์๋์ผ๋ก ๊ฑด๋๋๋๋ค. ํ ๋ฒ ์ค์น๋ก ๋ชจ๋ ์๋๋ฆฌ์ค๋ฅผ ์ปค๋ฒํฉ๋๋ค.
|
|
122
|
+
|
|
123
|
+
**๋ก์ปฌ ๊ฒ์ + ๋คํธ์ํฌ ๊ฒ์ ์ผ์ฒด.** Argo๋ง์ ๋ฅ๋ ฅ์
๋๋ค. ๋ก์ปฌ ํ์ผ ๊ฒ์์ ๋ฐ๋ฐํ์ rg, mdfind ๊ฐ์ ๊ฐ๋ฐ์ ์ผ์ ๋๊ตฌ๋ก, ์ฝ๋ ์ฌ๋ณผยทํ์ผ๋ช
ยท๋ฌธ์ ์ ๋ฌธยทํ์ผ ๊ตฌ์กฐ๋ฅผ ๊ฒ์ํฉ๋๋ค. ์ค์์น ํ๋๋ฉด ๋ก์ปฌ ์ ์ค์ด ๊ฐ์ ๋คํธ์ํฌ ๊ฒ์ ๊ฒฐ๊ณผ์ ํฉ์ณ์ง๊ณ , ๊ฒฐ๊ณผ์๋ ์ถ์ฒ๊ฐ ๋ก์ปฌ ํ์ผ์ด๋ผ๊ณ ํ์๋ฉ๋๋ค. ๊ธ์ ์ฐ๋ค๊ฐ ๋ฐ๋
์ ์ ์ ์ด ๋ ๋ฌธ๋จ์ด ๊ธฐ์ต๋๋๋ฐ ์ด๋์ ์๋์ง ๋ชจ๋ฅผ ๋, ํด๋๋ฅผ ๋ค์ง๋ ๊ฒ๋ณด๋ค ์ด ๊ฒ์์ด ๋น ๋ฆ
๋๋ค.
|
|
124
|
+
|
|
125
|
+
**์ด์ค ์บ์, ํซ ์ฟผ๋ฆฌ ์ฝ 10ms.** ์์์ฑ์ด ์ฝํ ์ฝํ
์ธ (๋ฐฑ๊ณผ๋ฅ, ์ญ์ฌ ๋ฐ์ดํฐ ๋ฑ)๋ ์ฒซ ์กฐํ ํ ์บ์์ ๋ค์ด๊ฐ๊ณ , ๊ฐ์ ์ฟผ๋ฆฌ๋ ๋ฐ๋ก ์ ์คํด ๋งค๋ฒ API๋ฅผ ๋ค์ ํ์ง ์์ต๋๋ค. ๋น์ฉ๋ ์๊ฐ๋ ์๋๋๋ค.
|
|
126
|
+
|
|
127
|
+
**๋ค๊ตญ์ด + ์์ง ์๋๋ฆฌ์ค.** 18๊ฐ ์ธ์ด๋ฅผ ์ค์ธกํ๊ณ , ์ค๊ตญ์ดยท์์ดยท์ผ๋ณธ์ด๋ ํ์ง 1์ฐจ ์์ค๋ฅผ ์ฐพ์ต๋๋ค. ๋
ผ๋ฌธ์ ํ์ DB, ์ํ๋ ์ํ DB, ์ฝ๋๋ Q&A ์ปค๋ฎค๋ํฐ, ์์ธ๋ ๊ธ์ต ์์ค๋ก ๋ณด๋
๋๋ค. ๋๋ฃจ๋ญ์ ํ ์ง๋ฌธ๋ง ์ผ๋ฐ ๊ฒ์์ผ๋ก ๊ฐ๋๋ค.
|
|
128
|
+
|
|
129
|
+
## ์ค์นํ๋ฉด ๋ฐ๋ก ์ฌ์ฉ
|
|
130
|
+
|
|
131
|
+
์ค์ ์์ด ๋ฐ๋ก ๋์๊ฐ๋๋ค. ์ค์น ๋ฐฉ๋ฒ ์ธ ๊ฐ์ง, ์ทจํฅ๋๋ก ๊ณ ๋ฅด์ธ์:
|
|
132
|
+
|
|
133
|
+
**AI ์ด์์คํดํธ๊ฐ ์ค์ค๋ก ๊ฒ์ํ๊ฒ ํ๊ณ ์ถ๋ค๋ฉด**, ์คํฌ ํจํค์ง๋ฅผ ๊ทธ ์คํฌ ๋๋ ํฐ๋ฆฌ์ ๋ฃ์ผ์ธ์. ์ดํ ใ์ข ์ฐพ์๋ดใใํ์ธํด๋ดใ๋ผ๊ณ ํ๋ฉด ์์์ ๊ฒ์ํฉ๋๋ค.
|
|
134
|
+
|
|
135
|
+
**๊ฐ๋ณ๊ฒ ์ํํด๋ณด๊ณ ์ถ๋ค๋ฉด**, npx ๋ช
๋ น ํ ์ค๋ก ์ค์น ์์ด ๋ฐ๋ก ์๋๋ค.
|
|
136
|
+
|
|
137
|
+
**์ด์์คํดํธ์ ์์ฃผ์ํค๊ณ ์ถ๋ค๋ฉด**, MCP๋ฅผ ๋ถ์ด๋ฉด 19๊ฐ ๊ฒ์ ๋๊ตฌ๋ฅผ ์ธ์ ๋ ์ธ ์ ์์ต๋๋ค. ์ํด๋ฆญ ์ฃผ์
๋ช
๋ น๋ ์์ด Claude Code, Cursor, Windsurf์ ์๋์ผ๋ก ์ค์ ํด ์ฃผ๋ฉฐ, Codex, OpenCode, Cline๋ ์ด ๋ชฉ๋ก์ ์์ต๋๋ค. ์ค์ ์ ์ฐ๊ธฐ ์ ์ ๋ฐฑ์
ํ๋ฏ๋ก ์ธ์ ๋ ๋๋๋ฆด ์ ์์ต๋๋ค.
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
# ๋ฐฉ์ 1: ์ํด๋ฆญ ์คํฌ๋ฆฝํธ(๋ก์ปฌ ์ฅ๊ธฐ ์ฌ์ฉ ๊ถ์ฅ)
|
|
141
|
+
curl -fsSL https://raw.githubusercontent.com/taxueseek/argo/main/scripts/install.sh | bash
|
|
142
|
+
|
|
143
|
+
# ๋ฐฉ์ 2: npx ์ฆ์ ์ฌ์ฉ(์์ด์ ํธ ๋น ๋ฅธ ๋ง์ดํธ ๊ถ์ฅ)
|
|
144
|
+
npx -y github:taxueseek/argo
|
|
145
|
+
|
|
146
|
+
# ๋ฐฉ์ 3: git clone(๊ฐ๋ฐ / ์์ค ์์ )
|
|
147
|
+
git clone https://github.com/taxueseek/argo.git
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
์ค์น ํ ๋ฐ๋ก ํ ๋ฒ ์ํ:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
argo search "python asyncio error handling"
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
StackOverflow ๊ณต์ API์์ ์ปค๋ฎค๋ํฐ ์ ์๋ก ์ ๋ ฌ๋๊ณ ์ฑํ ์ํ๊ฐ ํ์๋ ์ง๋ฌธ์ ์ค๋๋ค. SEO ํ์ด ์๋๋๋ค.
|
|
157
|
+
|
|
158
|
+
๋ด ์ปดํจํฐ์์ ์ง๊ธ ์ธ ์ ์๋ ์์ค๊ฐ ๋ช ๊ฐ์ธ์ง ๋ณด๊ณ ์ถ๋ค๋ฉด, ๋ช
๋ น ํ ์ค์ด๋ฉด ๋ชฉ๋ก์ด ๋์ต๋๋ค:
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
argo search --list-engines
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## ์ฐ๋ ํํ
|
|
165
|
+
|
|
166
|
+
Argo๋ ๋ค ๊ฐ์ง ์ฐ๋ ๋ฐฉ์์ ์ง์ํฉ๋๋ค. ์๋๋ฆฌ์ค์ ๋ง๊ฒ ๊ณ ๋ฅด์ธ์:
|
|
167
|
+
|
|
168
|
+
| ํํ | ์ ํฉ | ์ค๋ช
|
|
|
169
|
+
|------|------|------|
|
|
170
|
+
| **MCP Server** | ์์ด์ ํธ ์์ฃผ ๋ง์ดํธ | 19๊ฐ ๊ฒ์ ๋๊ตฌ๋ฅผ ์ธ์ ๋ ์ฌ์ฉ, ๋ช
๋ น ํ ์ค๋ก Claude Code / Cursor / Windsurf / Codex / OpenCode / Cline์ ์ฃผ์
, ์ค์ ์์ฑ ์ ์๋ ๋ฐฑ์
|
|
|
171
|
+
| **DSH ํ๋ฌ๊ทธ์ธ** | DeepSeek Harness ์ฌ์ฉ์ | `dsh plugin add` ํ ์ค๋ก ์ค์น, ๊ฒ์๊ณผ ๊ธ๊ธฐ๊ฐ ๋ค์ดํฐ๋ธ 1๊ธ ๋๊ตฌ๊ฐ ๋์ด MCP ์ฐ๊ฒฐ์ ์์กดํ์ง ์๊ณ ์์ฃผ ์ปจํ
์คํธ๋ ์ฐจ์งํ์ง ์์. ์ ์ฅ ์ฆ์ ์ ์ฉ๋๋ 6๊ฐ ๊ตฌ์ญ ์ค์ ํ์ด์ง ๋ด์ฅ |
|
|
172
|
+
| **Skill ํ์ผ** | Claude Code / Grok Build / Kimi ๋ฑ | ์คํฌ ํจํค์ง๋ฅผ ์์ด์ ํธ์ ์คํฌ ๋๋ ํฐ๋ฆฌ์ ๋ฃ์ผ๋ฉด ใ์ข ์ฐพ์๋ดใใํ์ธํด๋ดใ์ ์์์ ๊ฒ์ |
|
|
173
|
+
| **npx ์ฆ์ ์ฌ์ฉ** | ๋น ๋ฅด๊ฒ ์ํ | `npx -y github:taxueseek/argo`, ์ค์น ์์ด ์์๋ก ์๋ฌด ํด๋ผ์ด์ธํธ์ MCP๋ฅผ ๋ถ์ด๊ธฐ ์ข์ |
|
|
174
|
+
|
|
175
|
+
๋ค ๊ฐ์ง ํํ์ ๋ฐ๋ฐํ์ ๊ฐ์ Python ์ฝ๋์ด๋ฉฐ, CLI์ MCP ๋๊ตฌ๋ ์ผ๋์ผ๋ก ๋์ํ๋ฏ๋ก ์ด๋ ํํ๋ก ์ค์นํด๋ ๋ฅ๋ ฅ์ด ๋น ์ง์ง ์์ต๋๋ค.
|
|
176
|
+
|
|
177
|
+
## ๋ชจ๋ธ ๋ด์ฅ ๊ฒ์ / AI ๊ฒ์ / ๋ฉํ๊ฒ์๋ณด๋ค ๊ฐํ ์
|
|
178
|
+
|
|
179
|
+
> ๊ฐ๋จํ: ์์ ์ธ ๊ฐ์ง๋ **์ฌ๋**์ด ์ ๋ณด๋ฅผ ์ฐพ๊ฒ ๋์ต๋๋ค. Argo๋ **์์ด์ ํธ**๊ฐ ๊ฒ์๊ณผ ๊ฒ์ฆ์ ํ ํ์ดํ๋ผ์ธ์์ ํ๊ฒ ํฉ๋๋ค. ์ฐจ์ด๋ UI๊ฐ ์๋๋ผ ์ฐ์ถ๋ฌผ โ ์ฌ๋์ฉ ์์ฝ ํ์ด์งยท๋งํฌ ๋ชฉ๋ก ๋, ์์ด์ ํธ๊ฐ ์ ๋ ฌํ๊ณ `fetch`๋ก ์ฌํ์ธํ๊ณ ์ปจํ
์คํธ๋ฅผ ์ ํฐ๋จ๋ฆฌ๋ ์ฆ๊ฑฐ.
|
|
180
|
+
|
|
181
|
+
<p align="center">
|
|
182
|
+
<img src="assets/readme/why-better.svg" width="100%" alt="์ผ์ชฝ: ์ฌ๋์ฉ ๊ธฐ๋ณธ ๊ฒ์ ์ธ ๊ฐ์ง. ์ค๋ฅธ์ชฝ: ์์ด์ ํธ๊ฐ ํก์ํ Argo ์ฆ๊ฑฐ JSON">
|
|
183
|
+
</p>
|
|
184
|
+
|
|
185
|
+
| ์ฐจ์ | ๋ชจ๋ธ ๋ด์ฅ ๊ฒ์ | AI ๊ฒ์(์์ฝํ) | ๋ฉํ๊ฒ์ / ๊ฒ์ ์์ง | **Argo** |
|
|
186
|
+
|------|----------------|-----------------|----------------------|----------|
|
|
187
|
+
| ๊ฒฐ๊ณผ ํํ | ์ด์ด ๋ถ์ธ ์ฅ๋ฌธ | ์ฌ๋์ฉ ์์ฝ ํ์ด์ง | SERP ๋งํฌ ๋ชฉ๋ก | **์์ถ JSON: ์ฆ๊ฑฐ ํ๋ณด + ์ ๋ขฐ๋ ๋ถํด** |
|
|
188
|
+
| ์์ง ์ง๋ฌธ(์์ธ / ํํ์) | ์ผ๋ฐ ์น | ์ผ๋ฐ ์น ํ ์์ฝ | ์ผ๋ฐ ์น | **์์ง ์์ค ์ง๊ฒฐ, ๋ตํ ๊ฒฐ๊ณผ** |
|
|
189
|
+
| ์ฆ๊ฑฐ ์ ๋ขฐ๋ | ์ ์ ์์ | ๊ตฌ์กฐํ ์ ์ ์์ | ์ ์ ์์ | **selection ยท absorption ยท freshness ยท ํฉ์** |
|
|
190
|
+
| ๋ฐ๋ณต ์ง์ | ๋งค๋ฒ ๋คํธ์ํฌ | ๋งค๋ฒ ๋คํธ์ํฌ | ํ์ด์ง ์บ์ | **์ด์ค ์บ์(๋ฉ๋ชจ๋ฆฌ + SQLite), ํซ ์ฟผ๋ฆฌ ์ฝ 10ms** |
|
|
191
|
+
| ๋น์ฉ ์ ์ด | ์ ์ด ๋ถ๊ฐ | ํธ์ถ๋น ๋น์ | ๋ฌด๋ฃ์ง๋ง ์๊ณ | **์์ฐ ๋ชจ๋, ๋ฌด๋ฃ ์ฐ์ , ํค๋ ๋ชจ๋ ์ ํ** |
|
|
192
|
+
| ๋ค๊ตญ์ด | ๋ชจ๋ธ์ ๋ฐ๋ฆ | ๋ชจ๋ธ์ ๋ฐ๋ฆ | ์์ง์ ๋ฐ๋ฆ | **์ธ์ด ๊ฐ์ง + ์์ง ๋ก์ผ์ผ ํ๋ผ๋ฏธํฐ + ๋ค๊ตญ์ด ๋ผ์ฐํ
** |
|
|
193
|
+
|
|
194
|
+
> ๋ฉ์ปค๋์ฆ์ Argo๋ ๊ฒ์์ **์ฆ๊ฑฐ ํ์ดํ๋ผ์ธ**์ผ๋ก ๋ค๋ฃน๋๋ค: ์ธ์ด ๊ฐ์ง โ ๋๋ฉ์ธ ๋ผ์ฐํธ โ ๋ค์ค ์์ง ํ์ โ RRF ์ตํฉ โ ์ฆ๊ฑฐ ์ํ. ์์ด์ ํธ๊ฐ ์ ๋ ฌํ๊ณ , `fetch`๋ก ํ์ธํ๊ณ , ์ปจํ
์คํธ ์์ ๋ฃ์ ์ฌ๋ฃ๋ฅผ ์ค๋๋ค.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## 2026๋
๊ฒ์์์ ๋ฐ๋ ๊ฒ
|
|
199
|
+
|
|
200
|
+
1. **๋งํฌ์์ ์ฆ๊ฑฐ๋ก.** ์์ด์ ํธ๋ ์ ๋ ฌยท๊ฒ์ฆ ๊ฐ๋ฅํ๊ณ ์ปจํ
์คํธ์ ๋ง๋ ๊ตฌ์กฐํ ์๋ฃ๊ฐ ํ์ โ Argo๋ ์ ๋ขฐ๋ ๋ถํด JSON์ ๋ฐํ.
|
|
201
|
+
2. **์ปจํ
์คํธ๊ฐ ์ฒซ ๋ฒ์งธ ๋น์ฉ.** ์์ด์ ํธ ํ๋กํ์ ํ๋น ์ฝ 3.7KB, ํ๋์ ๋ฐ์ดํธ ์์ฐ์ ๊ฒ์ดํธ๋ก ๊ณ ์ .
|
|
202
|
+
3. **์ฌ์ดํธ๋ค์ด AI์ฉ ์ฝํ
์ธ ๋ฅผ ์ค๋น.** llms.txt์ `.md` ์ง์ ์ถ๋ ฅ์ด ํ์ฐ โ fetch ์ฒด์ธ์ด ๋ ๋ฒจ 0์์ ์๋ ํ์ง, r.jina.ai ๋ฆฌ๋๊ฐ fallback.
|
|
203
|
+
4. **๋ฌด๋ฃ ์คํ ์ํ๊ณ๋ก ์ถฉ๋ถ.** ์ ๋ถยทํ์ ยทํ์คยท๋ณด์ ๊ณต๊ฐ API์ ํค๋ฆฌ์ค ์์ง์ด ๋๋ถ๋ถ ๋๋ฉ์ธ์ ์ปค๋ฒ (๋ฌด์ค์ 227๊ฐ).
|
|
204
|
+
5. **ํ์ง์ ์ธก์ ๊ฐ๋ฅ.** ๋ญํน ๊ณจ๋ ํ๋ก์ด, ์ตํฉ ์ด๋ ์ด๋ธ๋ ์ด์
๊ฒ์ดํธ, ์์ ๋ผ์ฐํ
์ ์ด.
|
|
205
|
+
|
|
206
|
+
> v2.9.3์ ์ด ๋ชจ๋๋ฅผ ๊ตฌํ: 264 ์์ค / 95 ๋๋ฉ์ธ / 227 ๋ฌด์ค์ .
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## ์ง๋ฌธ ํํ์ ๋ง๋ ๋ผ์ฐํ
|
|
211
|
+
|
|
212
|
+
<p align="center">
|
|
213
|
+
<img src="assets/readme/proof-routes.svg" width="100%" alt="๋ค ๊ฐ์ง ์ค์ ๊ฒฝ๋ก: ๊ธ์ต, ์ํ, ๋ค๊ตญ์ด, ์ง๋ฆฌ">
|
|
214
|
+
</p>
|
|
215
|
+
|
|
216
|
+
| ์ด๋ ๊ฒ ๋ฌผ์ผ๋ฉด | ๋๊ฐ ์ผ์ด๋๋ ์ผ |
|
|
217
|
+
|---------|----------------------|
|
|
218
|
+
| python asyncio error handling | ์ฝ๋ฉ QA ๋๋ฉ์ธ โ StackOverflow/StackExchange ๊ณต์ API, ์ ์ยท์ฑํ ๋ง์ปค ํฌํจ |
|
|
219
|
+
| AAPL / US pre-market | ๋ฏธ๊ตญ ์ฃผ์ ๋๋ฉ์ธ, A์ฃผ์ ๋ถ๋ฆฌ |
|
|
220
|
+
| ่็ณๅ
็ๆ่ต ไธปๆผ / Inception director | ์ํ ๋๋ฉ์ธ โ IMDb ๋ฑ |
|
|
221
|
+
| ๆข
่ฅฟ ไฟฑไน้จ / ๅบ้ ็้ | ์คํฌ์ธ ๋๋ฉ์ธ โ TheSportsDB ๋ฑ |
|
|
222
|
+
| ๅ่ฒๅฐ้ๅกๅจๅช / where is Eiffel Tower | ์ง๋ฆฌ ์ํฐํฐ โ OpenStreetMap ๋ฑ |
|
|
223
|
+
| NASA founding year / ๅฝๅก้ข่่ฝ | ์กฐ์ง ์ํฐํฐ โ Wikidata ๋ฑ |
|
|
224
|
+
| ๅจๆฐไผฆ ไธ่พ / Taylor Swift album | ๋ฏธ๋์ด ๋๋ฉ์ธ โ iTunes ๋ฑ |
|
|
225
|
+
| ใขใใก ใใใใ / ํ๊ตญ ์ํ ์ถ์ฒ | JA/KO ๊ฐ์ง โ ์ธ์ด ์นํ ์์ค, ์ค๊ตญ์ด ์ ์ฉ ์ฌ์ดํธ ํํผ |
|
|
226
|
+
| US CPI, ์ผ๋ณธ ์ธํ๋ ์ด์
| ๋งคํฌ๋ก ๋๋ฉ์ธ, ๊ตญ๊ฐ ๋ถ๋ฆฌ (์๊ตญ 1์ฐจ ์์ค ์ฐ์ ) |
|
|
227
|
+
| log4j CVSS / nodejs 22 end of life | ๋ณด์ โ NVD ๊ณต์; ์๋ช
์ฃผ๊ธฐ โ endoflife.date |
|
|
228
|
+
| attention is all you need | ํ์ โ arXiv/OpenAlex/CrossRef ๋ฉํ๋ฐ์ดํฐ ๋ฐ DOI ๋งํฌ |
|
|
229
|
+
| ้ฟๅธๅนๆ ๅๅญๅผ | ํํ โ PubChem ๊ณ์ด ๋ต |
|
|
230
|
+
| TSMC valuation debate (deep research) | ํ์ ์ง๋ฌธ + ๋ณ๋ ฌ ์์ค, ์์ง ์์ค ๊ฐ์ค |
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## ๋์ ๋ฐฉ์
|
|
235
|
+
|
|
236
|
+
<p align="center">
|
|
237
|
+
<img src="assets/readme/workflow.svg" width="100%" alt="์ง์ โ ์ธ์ดยท๋๋ฉ์ธ โ ๋ค์ค ์์ง ํ์ โ RRF โ ์ฆ๊ฑฐ โ ํตํฉ JSON">
|
|
238
|
+
</p>
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
query
|
|
242
|
+
โโ intent clarify (optional)
|
|
243
|
+
โโ query rewrite (optional; routing still sees original intent)
|
|
244
|
+
โโ language detect + language preference
|
|
245
|
+
โโ route (domain rules + TF-IDF + budget + lang supplements + hot-path cache)
|
|
246
|
+
โโ multi-engine recall (circuit breaker / negative cache / parallel)
|
|
247
|
+
โโ staged empty-result recovery (widen โ same family/general โ cross-lang; anti-pollution)
|
|
248
|
+
โโ RRF fusion + optional re-rank
|
|
249
|
+
โโ evidence skim (authority ยท density ยท freshness ยท consensus)
|
|
250
|
+
โโ unified JSON (incl. engine_outcomes / recovery)
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
### ์ฆ๊ฑฐ ์ ์ (์์ฝ)
|
|
254
|
+
|
|
255
|
+
```
|
|
256
|
+
selection โ domain authority; SERP / redirect shells ranked very low
|
|
257
|
+
absorption โ density of numbers / definitions / comparisons / disclosures
|
|
258
|
+
freshness โ publish time (ignores historical comparison years like โsince 2015โ)
|
|
259
|
+
composite โ 0.40ยทselection + 0.35ยทabsorption + 0.15ยทfreshness + 0.10ยทengine score
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
๊ฒฐ๊ณผ์ `selection`, `absorption`, `credibility_fast`, `evidence_flags` ๋ฑ์ด ํฌํจ๋์ด ์์ด์ ํธ๊ฐ ๋ฐ๋ก ์ ๋ ฌํ ์ ์์ต๋๋ค.
|
|
263
|
+
|
|
264
|
+
### ์์ด์ ํธ ๊ท์จ (๊ถ์ฅ)
|
|
265
|
+
|
|
266
|
+
1. **๊ณ ์ํ ์ง๋ฌธ**(ํฌ์ง์
, ์์ , ใ์ด๊ฒ ์ฌ์ค์ธ๊ฐ?ใ): ๊ฒ์ โ ๋น ๋ฅธ ์ ์ ํ์ธ โ ์์ ๊ฒฐ๊ณผ `fetch` โ ๊ทธ๋ค์ ๊ฒฐ๋ก
|
|
267
|
+
2. **์ซ์**: ่ฎก็ฎๆนๅผ(์ ์ยท๋ฒ์)์ ๋ฐํ๊ณ , ์์ค๊ฐ ์ถฉ๋ํ๋ฉด ๋์ดโ์ต์ง๋ก ํฉ์น์ง ์๊ธฐ
|
|
268
|
+
3. **SERP / ๋ฆฌ๋ค์ด๋ ํธ ํ์ด์ง**: 1์ฐจ ์ถ์ฒ๋ก ์ทจ๊ธํ์ง ์๊ธฐ
|
|
269
|
+
4. **์์
ํฌ์คํธ**: ๊ฐ์ฑ๊ณผ ์์ฌ, ์ต์ข
์ฌ์ค ๊ทผ๊ฑฐ๊ฐ ์๋
|
|
270
|
+
5. **ํฉํธ์ฒดํฌ**: ์ธต์๋ณ ์์ ์ฟผ๋ฆฌ ์ ํธ(์ถ์ฒ / ๋น๊ต / ๋์)
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## ๋น ๋ฅธ ์์
|
|
275
|
+
|
|
276
|
+
๊ฒฝ๋ก๋ฅผ ๊ณ ๋ฅด๋ฉด ๋ฉ๋๋ค. **์ค์น ์ง์์ GitHub๋ฟ์
๋๋ค**(`npx github:taxueseek/argo` ๋๋ `install.sh`); ํ์ฌ ๊ถ์ฅ **v2.9.7**. **`npm install argo-search`๋ ์ฐ์ง ๋ง์ธ์** โ npm ๋ ์ง์คํธ๋ฆฌ ์ฌ๋ณธ์ **๋น๊ณต์ ๋ก์ v1.0.1**(์ด ์ ์ฅ์๊ฐ ์๋, ๊ธฐ๋ฅ ๋ถ์กฑ, ๊ฐฑ์ ์ ๋จ). ์ด ํจํค์ง๋ `private: true`๋ก npm ์ค๋ฐฐํฌ๋ฅผ ๋ง์ต๋๋ค.
|
|
277
|
+
|
|
278
|
+
**์ ๋ก ์ค์ ์ผ๋ก ๋์**: API ํค ์์ด๋ ๋ฌด๋ฃ ์์ง + ๋ก์ปฌ `local_*` ์์ง์ด ๋๊ณ , ํค ์๋ ์์ง์ ์คํต๋ฉ๋๋ค(ํค๊ฐ ์์ผ๋ฉด ๋ณดํต ๋ ์ข์ต๋๋ค).
|
|
279
|
+
|
|
280
|
+
### ์ต์
1: ์ค์น ์คํฌ๋ฆฝํธ (์ฅ๊ธฐ ๋ก์ปฌ ์ฌ์ฉ์ ์ ํฉ)
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
curl -fsSL https://raw.githubusercontent.com/taxueseek/argo/main/scripts/install.sh | bash
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
ํ ๊ฒฝ๋ก + Skill ๋งํฌ ์ง์ :
|
|
287
|
+
|
|
288
|
+
```bash
|
|
289
|
+
curl -fsSL https://raw.githubusercontent.com/taxueseek/argo/main/scripts/install.sh \
|
|
290
|
+
| bash -s -- --home "$HOME/.local/share/argo" --link "$HOME/.claude/skills/argo"
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
ํ์ธ:
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
python3 ~/.local/share/argo/scripts/search.py "python asyncio error handling" --json
|
|
297
|
+
python3 ~/.local/share/argo/scripts/search.py --list-engines
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### ์ต์
2: GitHub MCP (์์ด์ ํธ์ ๋น ๋ฅด๊ฒ ๋ถ์ด๊ธฐ)
|
|
301
|
+
|
|
302
|
+
**Node.js 18+** ์ **Python 3.9+** ํ์. ํ ๋ฒ:
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
pip3 install pyyaml
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
```bash
|
|
309
|
+
npx -y github:taxueseek/argo
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
ํด๋ผ์ด์ธํธ ์ค์ (Claude Code / Cursor / Kimi ๋ฑ):
|
|
313
|
+
|
|
314
|
+
```json
|
|
315
|
+
{
|
|
316
|
+
"mcpServers": {
|
|
317
|
+
"argo": {
|
|
318
|
+
"command": "npx",
|
|
319
|
+
"args": ["-y", "github:taxueseek/argo"]
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
๋ ์์ ์ ยทNode ๋ถํ์: ์ต์
1๋ก ์ค์น ํ ๋ก์ปฌ Python ์ง์ :
|
|
326
|
+
|
|
327
|
+
```json
|
|
328
|
+
{
|
|
329
|
+
"mcpServers": {
|
|
330
|
+
"argo": {
|
|
331
|
+
"command": "python3",
|
|
332
|
+
"args": ["/path/to/argo/scripts/mcp_server.py"]
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
๋นํ์ค Python ๊ฒฝ๋ก: `export ARGO_PYTHON=/path/to/python3` (npx ์ง์
์ ๋ง ์ฝ์).
|
|
339
|
+
|
|
340
|
+
### DeepSeek Harness ํ ์ค ํ๋ฌ๊ทธ์ธ
|
|
341
|
+
|
|
342
|
+
DeepSeek Harness์๋ ๋ ๊ฐ์ง ์ค์น:
|
|
343
|
+
|
|
344
|
+
```bash
|
|
345
|
+
# A: mcp__argo__* ๋๊ตฌ 19๊ฐ (๋ฉ์ธ ํจํค์ง bundle, MCP ์ ๋๊ณผ ๋์ผ)
|
|
346
|
+
dsh plugin --profile web add "github:taxueseek/argo"
|
|
347
|
+
|
|
348
|
+
# B: ๊ฒ์ ๋๊ตฌ + wide_research ๋ณ๋ ฌ ์ฐ๊ตฌ ์ค์ผ์คํธ๋ ์ด์
(์๋ธํจํค์ง)
|
|
349
|
+
dsh plugin --profile web add "github:taxueseek/argo#main&path:packages/dsh-plugin"
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
์ค์น ํ `dsh web`์ ์ฌ์์. ์์ธํ ๋ด์ฉ์ `packages/dsh-plugin/`.
|
|
353
|
+
|
|
354
|
+
### ์ต์
3: ๋ฆด๋ฆฌ์ค tarball
|
|
355
|
+
|
|
356
|
+
[Releases](https://github.com/taxueseek/argo/releases)์์ ์ต์ **`argo-x.y.z.tar.gz`** ๋ค์ด๋ก๋(`x.y.z`๋ ์ต์ ๋ฆด๋ฆฌ์ค ๋ฒํธ๋ก ๋ฐ๊ฟ ์ฝ๊ธฐ):
|
|
357
|
+
|
|
358
|
+
```bash
|
|
359
|
+
tar -xzf argo-x.y.z.tar.gz
|
|
360
|
+
cd argo-x.y.z
|
|
361
|
+
pip3 install pyyaml
|
|
362
|
+
python3 scripts/search.py "Python asyncio" --json
|
|
363
|
+
python3 scripts/mcp_server.py
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### ์ต์
4: git clone (๊ฐ๋ฐ / ์์ค ํจ์น)
|
|
367
|
+
|
|
368
|
+
```bash
|
|
369
|
+
git clone https://github.com/taxueseek/argo.git
|
|
370
|
+
cd argo
|
|
371
|
+
pip3 install pyyaml
|
|
372
|
+
bash scripts/install.sh --link ~/.claude/skills/argo # optional
|
|
373
|
+
python3 scripts/search.py --list-engines
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
### ์ต์
5: Skill ๋๋ ํฐ๋ฆฌ (์ฌ๋ณผ๋ฆญ ๋งํฌ, ๋จ์ผ ์ง์)
|
|
377
|
+
|
|
378
|
+
```bash
|
|
379
|
+
python3 scripts/link_source.py --to ~/.claude/skills/argo
|
|
380
|
+
python3 scripts/link_source.py --to ~/.agents/skills/argo
|
|
381
|
+
|
|
382
|
+
cp installs.local.yaml.example installs.local.yaml
|
|
383
|
+
python3 scripts/link_source.py
|
|
384
|
+
python3 scripts/link_source.py --check
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### ์ต์
6: Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ
|
|
388
|
+
|
|
389
|
+
```python
|
|
390
|
+
import sys
|
|
391
|
+
sys.path.insert(0, "/path/to/argo/scripts")
|
|
392
|
+
from search import super_search
|
|
393
|
+
|
|
394
|
+
result = super_search("Python asyncio", n=5, mode="fast")
|
|
395
|
+
for item in result["results"]:
|
|
396
|
+
print(item["title"], item.get("credibility_fast"), item["url"])
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
```bash
|
|
400
|
+
# if bin/argo is on PATH
|
|
401
|
+
argo search "Python asyncio"
|
|
402
|
+
argo research "2026 mutual fund holdings structure"
|
|
403
|
+
argo evidence "a claim to verify"
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
---
|
|
407
|
+
|
|
408
|
+
## ํ๋ซํผ
|
|
409
|
+
|
|
410
|
+
| ํ๋ซํผ | ์ฐ๋ | ๋น๊ณ |
|
|
411
|
+
|----------|-------------|-------|
|
|
412
|
+
| **Claude Code** | MCP / Skill ๋งํฌ | `npx` ๋๋ `mcp_server.py`; `link_source.py` ๊ฐ๋ฅ |
|
|
413
|
+
| **Kimi / Grok Build** | MCP Server | ๋์ผ |
|
|
414
|
+
| **Cursor / Cline / Continue** | MCP | MCP ์ง์ IDE ํ๋ฌ๊ทธ์ธ |
|
|
415
|
+
| **CLI** | `search.py` / `bin/argo` | ์คํฌ๋ฆฝํธ, cron, ์๋ ๋๋ฒ๊ทธ |
|
|
416
|
+
| **Python ํ๋ก์ ํธ** | `from search import super_search` | ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธ์ถ |
|
|
417
|
+
|
|
418
|
+
### ์ค์น ํ ์ ๊ฒ
|
|
419
|
+
|
|
420
|
+
```bash
|
|
421
|
+
python3 --version # 3.9+
|
|
422
|
+
python3 -c "import yaml; print('PyYAML OK')"
|
|
423
|
+
python3 -m pytest tests/test_unit.py -q # optional
|
|
424
|
+
python3 scripts/search.py --list-engines
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
|
|
429
|
+
## ๊ธฐ๋ฅ
|
|
430
|
+
|
|
431
|
+
| ๊ธฐ๋ฅ | ํ๋ ์ผ | ์ง์
์ |
|
|
432
|
+
|------------|--------------|-------|
|
|
433
|
+
| ํตํฉ ๊ฒ์ | route โ recall โ fuse โ skim score | `search.py` / `argo_search` |
|
|
434
|
+
| ๋ก์ปฌ ํ์ผ ๊ฒ์ | ๋์คํฌ ์ฝ๋/๋
ธํธ/๋ฉ๋ชจ๋ฆฌ (์คํ๋ผ์ธ) | `argo_local_search` |
|
|
435
|
+
| ๋ก์ปฌ ํ
์คํธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ | ํ์ดํธ๋ฆฌ์คํธ ๋๋ ํฐ๋ฆฌ ๋ฏธ๋ฆฌ๋ณด๊ธฐ (fail-closed) | `argo_local_read` |
|
|
436
|
+
| ์ฌ๊ณ์ฐ | ์ ํ ์๋ธํ๋ก์ธ์ค ์์น ์ฌ๊ณ์ฐ (๊ธฐ๋ณธ ๊ฑฐ๋ถ) | `argo_recompute` |
|
|
437
|
+
| ์ฌ์ธต ์ฐ๊ตฌ | ํ์ ์ง๋ฌธ, ๋ค์ค ์์ค, ๊ฐญ ํํธ | `research.py` / `argo_research` |
|
|
438
|
+
| ์ ๋ขฐ๋ | ๊ถ์ / ๋ฐ๋ / ์์์ฑ / ๊ต์ฐจ ๊ฒ์ฆ | `evidence.py` / `argo_evidence` |
|
|
439
|
+
| ์๋ ๋ช
ํํ | ๋ค์์ด, ๋ธ๋๋ ์ถฉ๋, ์ ๋ต ํํธ | `clarify.py` / `argo_clarify` |
|
|
440
|
+
| ํ์ด์ง ๊ฐ์ ธ์ค๊ธฐ | HTTP ์ฐ์ , ํ์ ์ ๋ธ๋ผ์ฐ์ ํด๋ฐฑ | `argo_fetch` (`mode=extract` ๊ตฌ์กฐ ์ถ์ถ) |
|
|
441
|
+
| ์คํฌ๋ฆฐ์ท / PDF | ํ์ด์ง ์บก์ฒ, ๊ตฌ์กฐํ PDF ์ถ์ถ | `argo_screenshot` / `argo_pdf` |
|
|
442
|
+
| ์ฌ์ดํธ ํฌ๋กค | ๋ชฉ๋ก ํ์ด์ง ๋ฐฐ์น ํฌ๋กค | `argo_crawl` |
|
|
443
|
+
| ์ฟผ๋ฆฌ ์ฐ์ฐ์ | `site:` / `-site:` / `-๋จ์ด` / `-"๊ตฌ๋ฌธ"` / `"๊ตฌ๋ฌธ"` / `lang:` / `after:` / `before:` ๋ฅผ ๋ผ์ฐํ
๊ณผ ๊ฒ์ ์์ชฝ์์ ๋ถ๋ฆฌ(์์ธ๋ references/usage.md) | ์ฟผ๋ฆฌ์ ์ง์ ๊ธฐ์ฌ |
|
|
444
|
+
| ์ ๋ขฐ ์ ํธ | `authority_level` ์ด์ฐ ๋ฑ๊ธ(0-4, โฅ3์ด๋ฉดๆ้ซๆๅจ) + `summary` ์์ด์ ํธ์ฉ ์์ฝ(๊ฒ์ฆ ํ ์ญ์ฑ์) | ๊ฒฐ๊ณผ ํ๋, `--fields agent` ๋ก ํ์ |
|
|
445
|
+
| ์์
/ ๊ฐ์ฑ | Weibo / Xiaohongshu / Bilibili / Reddit / X โฆ | `argo_social_search` |
|
|
446
|
+
| DSH ๋ค์ดํฐ๋ธ ๋๊ตฌ | DSH ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ค์นํ๋ฉด `argo_search` / `argo_fetch` ๋ฑ์ด ํธ์คํธ 1๊ธ ๋๊ตฌ๊ฐ ๋์ด CLI ๋จ๋ฐ๋ก ์คํ, ์์ฃผ ํ ํฐ ์ค๋ฒํค๋ 0 | `dsh plugin add` ํ ์ง์ ํธ์ถ |
|
|
447
|
+
| DSH web seam | ํธ์คํธ ๋ด์ฅ `web_search` / `web_fetch`๊ฐ argo์ ์์งยท๊ธ๊ธฐ ์ฒด์ธ์ผ๋ก ๋ผ์ฐํ
(HTTP ์ฐ์ , Cloudflare / JS ๋ ๋๋ง ์ ์๋ ๋ธ๋ผ์ฐ์ ์น๊ฒฉ) | ํ๋ฌ๊ทธ์ธ์ด ๊ธฐ๋ณธ ๋ฑ๋ก, profile์์ `searchProvider` / `fetchProvider` pin |
|
|
448
|
+
| DSH ์ค์ ํ์ด์ง | ๆฅๅ
ฅ / ๋๊ตฌ / ๅผๆ / ๅฏ้ฅ / ็ ็ฉถ / ้ซ็บง 6๊ฐ ๊ตฌ์ญ, ์ ์ฅ ์ฆ์ ์ ์ฉ. ํค๋ ํธ์คํธ ๅญ่ฏๅบ์, ํ๋ฌธ ๋นํ์ | ์ค์ ํ์
`Cmd+,` โ ์ผ์ชฝ ๋ฉ๋ด "Argo" |
|
|
449
|
+
|
|
450
|
+
### ์์ฐ ๋ชจ๋
|
|
451
|
+
|
|
452
|
+
| ๋ชจ๋ | ์ ํฉํ ๊ฒฝ์ฐ | ๋์ |
|
|
453
|
+
|------|----------|----------|
|
|
454
|
+
| `fast` | ๋จ์ Q, ์๋ ํ์ | ๋ฌด๋ฃ ์์ง ์ฐ์ , ์ ๋ฃ re-rank ์คํต |
|
|
455
|
+
| `auto` | ์ผ์ ๊ธฐ๋ณธ | ๋น์ฉ ์ธ์ ํ์ง/์ง์ถ ํธ๋ ์ด๋์คํ |
|
|
456
|
+
| `deep` | ์ฐ๊ตฌ, ์กฐ์ฌ | ํ์ง ์ฐ์ , ์์ง ๋ ํ์ฉ |
|
|
457
|
+
| `budget` | ํ ๋น๋ ํ์ดํธ | ์ฟผํฐ ์ ์ด, ์์ง ์ ์ ํ |
|
|
458
|
+
|
|
459
|
+
### ๋๋ต์ ์ธ ๋ฅ๋ ฅ ์ธํธ (v2.9.7)
|
|
460
|
+
|
|
461
|
+
Argo๊ฐ ํ๋ ์ผ์ ํ ์ค๋ก ๋งํ๋ฉด, ์ง๋ฌธ์ ๋๋ฉ์ธ๊ณผ ์ธ์ด๋ก ์๋ง์ ์์ค์ ๋ณด๋ด๊ณ , ๋์์จ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ขฐ๋๋ก ์ค์ธ์, ์์ด์ ํธ์๋ ์ค์ธ์ฐ๊ณ ๊ฒ์ฆํ ์ ์๋ ์ฌ๋ฃ๋ฅผ ๋๊ธด๋ค. ๊ฒ์ยท๊ธ๊ธฐยท์ฆ๊ฑฐ ํ์ธยท๋ก์ปฌ ํ์ผ ๊ฒ์์ ๊ฐ์ ํ์ดํ๋ผ์ธ์ ํ๋ฅด๊ณ , 19๊ฐ MCP ๋๊ตฌ๋ CLI ๋ช
๋ น๊ณผ ์ผ๋์ผ๋ก ๋์ํ๋ฏ๋ก ์ด๋ค ํํ๋ก ์ค์นํด๋ ๋ฅ๋ ฅ์ด ๋น ์ง์ง ์๋๋ค. ๋จ๋
๋ช
๋ น๋ ๋ช ๊ฐ ์๋ค: argo tweet์ X ๊ฒ์๋ฌผ์ ๋ฌถ๊ณ , argo auth๋ ๋ก๊ทธ์ธ ์ํ๋ฅผ ๊ด๋ฆฌํ๋ฉฐ, argo job์ ์ฑ์ฉ ์ ๋ณด๋ฅผ ๋ชจ์๋ค. ์ ์ฒด ์์ค์ ๋น์ฉยทํคยท์ํ๋ docs/ENGINE_CATALOG.md์ ์๋ค: 264 ์์ค, 227 ๋ฌด์ค์ , 95 ๋๋ฉ์ธ.
|
|
462
|
+
|
|
463
|
+
DSH ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ค์นํ๋ฉด ์ด ๋ฅ๋ ฅ๋ค์ด ํธ์คํธ์ ๋ค์ดํฐ๋ธ ๋๊ตฌ๊ฐ ๋๋ค. ๊ณ ๋น๋ ๊ฒ์๊ณผ ๊ธ๊ธฐ๋ ๊ธฐ๋ณธ์ผ๋ก ์ผ์ ธ ์๊ณ , ๋กฑํ
์ผ ํฌ๋ ์์ ์ค์ ํ์ด์ง์์ ํ์์ ๋ฐ๋ผ ์ฒดํฌํ๋ฉฐ, argo ๋ณธ์ฒด์ 28๊ฐ ๋์ ์ค์์น(์บ์, ์ฌ์์, ์ค๋ณต ์ ๊ฑฐ, ๊ฐ๋, ํ๋ก์, TTL ๋ฑ)๋ ํ๊ฒฝ ๋ณ์์์ ํจ๋๋ก ์ฎ๊ฒจ์ก๋ค. ํค๋ ํธ์คํธ ๅญ่ฏๅบ์ ๋ค์ด๊ฐ๊ณ , ํ๋ฌธ์ ํ์๋์ง ์์ผ๋ฉฐ, ๋ชจ๋ ๋ณ๊ฒฝ์ ์ ์ฅ ์ฆ์ ์ ์ฉ๋๋ค.
|
|
464
|
+
|
|
465
|
+
์ต๊ทผ ๋ช ํ์ด ๊ฐ์ ํ ๋ถ๋ฅ์ ๋ฌธ์ ๋ฅผ ๊ณ ์ณค๋ค.
|
|
466
|
+
|
|
467
|
+
v2.9.7์ด ๊ณ ์น ๊ฒ์ ์ธ ๊ฐ์ ์ค๋๋ ๋ณ์ด๋ค. DSH ํธ์คํธ ์์ AI๊ฐ URL์ ์ฝ์ ๋ ํธ์คํธ ์์ฒด ๊ธ๊ธฐ๋ฅผ ์จ์ ๋จ์ถ ๋งํฌ ์ ํยทJS ์ฑ๋ฆฐ์ง ํ์ด์ง๊ฐ ๊ตฌ์กฐ์ ์ผ๋ก ์คํจํ๊ธฐ ์ผ์ค์๊ณ , argo์ ๊ธ๊ธฐ ์ฒด์ธ์ ์ธ ์ผ์ด ์์๋ค; ์ด ํ์ ํธ์คํธ ์ฝ๊ธฐ๊ฐ argo๋ฅผ ํ๋ฌ ๊ทธ๋ฐ ํ์ด์ง๊ฐ ์คํจโ์ฑ๊ณต์ผ๋ก ๋ฐ๋๊ณ , ์ผ๋ฐ ํ์ด์ง๋ ๊ทธ๋๋ก๋ค. ๋ผ์ฐํ
ํ๋ณด ํ์ ๋ช
์ ์ ์ฉ 18๊ฐ ์์ง์ด ์์ฌ ์๋ ์ ํ๋๋ฉด ์ ์ผํ ์ ๋ฃ ์์ง์ด ์กฐ์ฉํ ๊ณผ๊ธ๋ ์ํ์ด ์์๋๋ฐ, ์ง๊ธ์ ํ๋ณด ํ์ ์๊ณ ์ฐ๋ ค๋ฉด ๋ช
์ํด์ผ ํ๋ค. ์์ง์ด ์ฑ๊ณตํ ๋๋ง๋ค ํ๋ก ์ฐจ๋จ๊ธฐ๊ฐ ํ์ผ ์ ๊ธ์ผ๋ก ๋์คํฌ๋ฅผ ๋ค์ ์ผ๋๋ฐ, ๊ฑด๊ฐ ์ํ์์๋ ํ์ผ ์ค๋ฒํค๋๊ฐ ์ ๋ก์ด๊ณ ๋ค์ค ์์ง ๋ถ๊ธฐ๋ ํ ํธ๋์ญ์
์ ํฉ์ณ์ง๋ค. License๋ MIT์์ Apache-2.0์ผ๋ก ๋ฐ๋์ด ์์ฉ ์ด์ฉ์ด ํ๊ฒฐ ํธํด์ก๋ค.
|
|
468
|
+
|
|
469
|
+
๊ทธ ํ DSH ํ๋ฌ๊ทธ์ธ์ ๋ ํ ์ธต์ด ๋ํด์ก๋ค. ์ค์ ํ์ด์ง๋ ๋ค์ฏ ๊ตฌ์ญ์์ ์ฌ์ฏ ๊ตฌ์ญ์ผ๋ก ๋์๊ณ , ์ ใๅผๆใ ๊ตฌ์ญ์ด argo ๋ณธ์ฒด์ ๋์ ์ค์์น๋ฅผ ํจ๋์ ๋ด์๋ค(๊ธฐ์กด์๋ ํ๊ฒฝ ๋ณ์๋ฟ). ํค ํ์ด์ง์์๋ ๊ฐ ํค๊ฐ ๅญ่ฏๅบ, ์์ ํ๊ฒฝ, `.env` ์ค ์ด๋์์ ์ค๋์ง ๋ณด์ด๊ฒ ๋๊ณ , ๋๊ตฌ ์ฒดํฌยทํ์์์ยท๋์์ฑยท์ฐ๊ตฌ ์ํ์ ๋ชจ๋ ์ ์ฅ ์ฆ์ ์ ์ฉ๋๋ค. ์ทจ์๋ ์ฐ๊ฒฐ ์๋ฆฝ ๋จ๊ณ๊น์ง ๋๋ฌํด, AI๊ฐ ์ค๊ฐ์ ๋ฉ์ถ๋ฉด ์์ง ๋จ๊ณ ์๋ argo ์๋ธํ๋ก์ธ์ค๋ ํ์์์์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ฆ์ ์ฃฝ๋๋ค.
|
|
470
|
+
|
|
471
|
+
v2.9.6์ด ๋งก์ ๊ฒ์ ์ฟผ๋ฆฌ ์ฐ์ฐ์์ ์ ์ก์ธต์ด๋ค. ใsite:github.com ๋ญ๋ญใ์ ์ง์๋ ์ฐ์ฐ์๊ฐ ์ผ๋ฐ ๋จ์ด๋ก ๋ค๋ค์ง๊ฑฐ๋่งฃๆ๋ง ๋๊ณ ้ๆปค๋ ์ ๋๋๋ฐ, ๊ณ์ฝ์ธต์ด ์๊ฒจ ๋ผ์ฐํธ์ ์บ์๋ ๋ฒ๊ธด ์ง์๋ง ์ธ์ํ๊ณ site:๋ ์ง์ง ํ์น ํํฐ๋ก ์คํ๋์ด ์บ์ ํค์๋ ๋ค์ด๊ฐ ๋ ๋ฒ์ ๊ฒ์์ด ์์ด์ง ์๋๋ค. ์ ์ก์ธต์์๋ POST๋ง๋ค TLS ํธ๋์
ฐ์ดํฌ(320~561 ms)๋ฅผ ๋ค์ ์ง๋ถํ๋๋ฐ, ์ฐ๊ฒฐ ํ๋ง์ผ๋ก ์์ฃผ MCP ํ๋ก์ธ์ค๋ ๋งค ์ง์๋ง๋ค ์ด๋ฅผ ์๋๋ค. ์ด ํ์ ๊ณต์ DeepSeek ๊ฒ์์ด ๋ค์ด๊ฐ๊ณ , ์ข
๋ ๊ณผ๊ธ์ ์ผ์ combo์๋ ์ ๋ ๋ค.
|
|
472
|
+
|
|
473
|
+
v2.9.5์์ ๋ํด์ง ๊ฒ์ ํ์จ๊ณผ ์ค๋ณต ์ ๊ฑฐ ์ ํ๋ค. ใ์์/๋ฌ๋ฌ ํ์จใ์ ๋ฌผ์ผ๋ฉด ๊ฑฐ์ ๋๋ฉ์ธ์ ๋์ ๋ฐฑ๊ณผ์ฌ์ ํ์ ์ด์ ์ฐฉ๋ฅํด 1.4์ด ๋ง์ ๋ต์ด ์์๋๋ฐ, ํ์จ ์ ์ฉ ๋๋ฉ์ธ์ด ์๊ฒจ 675 ms์ ์ฆ์ ํ์จ๊ณผ ๋งค์ผ ๋ด์ค๋ฅผ ๋๋ ค์ค๋ค. ์ค๋ณต ์ ๊ฑฐ์ ์ ๋ฏธ์ฌ ์ ๊ทํ์ ํผ์ง ์ฌํ์ธ์ด ๋ํด์ ธ ์ ๋ชฉ์ ๊ตฌ๋ถ์ ์๋ ๊ณต์ ๋ฌธ์๊ฐ ํ๋ฐฉ์ผ๋ก ๋ฐ๋ฆฌ๋ ์ผ์ด ์์ด์ก๋ค.
|
|
474
|
+
|
|
475
|
+
v2.9.4๊ฐ ๊ณ ์น ๊ฒ์ ๋ช
์ ์์ง ์ง์ ๊ฒฝ๋ก๋ค. --engine X๋ฅผ ์ง์ ํ๋ฉด ์บ์ TTL์ด ์ผ๋ฅ ์ด์๋๋ฐ, ๋๋ฉ์ธ ํ์ ์ด ๋ค์ด๊ฐ TTL์ ๋๋ฉ์ธ์ ๋ฐ๋ฅด๊ณ , ์๋น ์์ง์ด ์์ผ๋ฉด ๊ฐ์ ์์ง์ ๊ณตํ์ ๋ ํ์ง ์๋๋ค.
|
|
476
|
+
|
|
477
|
+
ํ๋ณ ์์ธ๋ ใ์ต๊ทผ ์
๋ฐ์ดํธใ์, ๊ฐ ํ ๋ฆด๋ฆฌ์ค ๋
ธํธ๋ docs/์ ์๋ค.
|
|
478
|
+
---
|
|
479
|
+
|
|
480
|
+
## ์์ง๊ณผ ๋ผ์ฐํ
|
|
481
|
+
|
|
482
|
+
์ค์ ์๋ ํ์ฌ **264** ์์ค(**227**๊ฐ๋ ํค ๋ถํ์)์ **95** ๋๋ฉ์ธ์ด ์์ต๋๋ค (`config.yaml`, `--list-engines` ์ฐธ๊ณ ).
|
|
483
|
+
|
|
484
|
+
### ์ง์ ยท์์ง (๋ฐ์ท)
|
|
485
|
+
|
|
486
|
+
| ์์ง | ์๋๋ฆฌ์ค | ๋น์ฉ ์ฑํฅ |
|
|
487
|
+
|--------|----------|-----------|
|
|
488
|
+
| anysearch / duckduckgo | ์ผ๋ฐ / ๊ธฐ์ | free |
|
|
489
|
+
| sina_quote / tencent_quote / eastmoney | A์ฃผ ์์ธ / ์๊ธ ํ๋ฆ | free |
|
|
490
|
+
| finviz / seeking_alpha | ๋ฏธ๊ตญยทํด์ธ ๊ธ์ต | depends |
|
|
491
|
+
| imdb / itunes / thesportsdb | ์ํ / ์์
/ ์คํฌ์ธ | mostly free |
|
|
492
|
+
| local_openstreetmap / wikidata / wikipedia | ์ง๋ฆฌ / ์กฐ์ง / ๋ฐฑ๊ณผ | free |
|
|
493
|
+
| arxiv / semantic_scholar / openalex | ํ์ | mostly free |
|
|
494
|
+
| pubchem / gbif / rfc_editor | ํํ / ์ข
/ ํ์ค | free |
|
|
495
|
+
| github / stackoverflow / pypi / npm | ์ฝ๋ยทํจํค์ง | depends |
|
|
496
|
+
| byted / bocha / metaso / octen | ์ค๊ตญ ์น / AI ๊ฒ์ | API / low cost |
|
|
497
|
+
| zhihu / wechat_sogou | ์ค๊ตญ ์ฌ๋ก / WeChat | API / free |
|
|
498
|
+
| tavily / felo / exa | ๊ตญ์ / ์๋งจํฑ | paid or quota |
|
|
499
|
+
| twitter / reddit / xiaohongshu / bilibili / weibo | ์์
UGC | free (some need login) |
|
|
500
|
+
|
|
501
|
+
### ๋ก์ปฌ ์ ๋ก ๋น์ฉ ๋ ์ด์ด (`local_*`)
|
|
502
|
+
|
|
503
|
+
๋ณ๋ SearXNG ์๋น์ค ๋ถํ์. ๋ฉ์ธ ๊ฒฝ๋ก๋ ํ๋ก์ธ์ค ๋ด HTML / RSS / JSON ํ์ฑ (`local_bing`, `local_sogou`, `local_google`, `local_arxiv`, โฆ). **๋ค๊ตญ์ด ์ฟผ๋ฆฌ**์์๋ ๋ผ์ฐํ
์ด ์์ง ์ธ์ด ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์์ฑ(์: Bing `setlang`)ํ๊ณ RRF๋ก ์ตํฉํฉ๋๋ค.
|
|
504
|
+
|
|
505
|
+
---
|
|
506
|
+
|
|
507
|
+
## ์์
|
|
508
|
+
|
|
509
|
+
### ๊ธ์ต
|
|
510
|
+
|
|
511
|
+
```bash
|
|
512
|
+
python3 scripts/search.py "python asyncio error handling" --explain
|
|
513
|
+
# typical: stock_query โ quote snapshot sources
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
### ํ์
|
|
517
|
+
|
|
518
|
+
```bash
|
|
519
|
+
python3 scripts/search.py "transformer attention mechanism paper" --json
|
|
520
|
+
# domain often academic; combo includes arxiv etc.
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
### ์ฐ๊ตฌ์ ๊ฒ์ฆ
|
|
524
|
+
|
|
525
|
+
```bash
|
|
526
|
+
python3 scripts/research.py "2026 mutual fund Q2 holdings structure" --depth deep --json
|
|
527
|
+
|
|
528
|
+
python3 scripts/search.py "same query" --json | \
|
|
529
|
+
python3 scripts/evidence.py "same query" --stdin --json
|
|
530
|
+
```
|
|
531
|
+
|
|
532
|
+
### MCP ๋๊ตฌ (12)
|
|
533
|
+
|
|
534
|
+
| ๋๊ตฌ | ์ฉ๋ |
|
|
535
|
+
|------|---------|
|
|
536
|
+
| `argo_search` | ํตํฉ ๊ฒ์ |
|
|
537
|
+
| `argo_local_search` | ๋ก์ปฌ ํ์ผ (์คํ๋ผ์ธ) |
|
|
538
|
+
| `argo_local_read` | ํ์ดํธ๋ฆฌ์คํธ ๋ก์ปฌ ํ
์คํธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ (fail-closed) |
|
|
539
|
+
| `argo_recompute` | ์ ํ ์๋ธํ๋ก์ธ์ค ์ฌ๊ณ์ฐ (๊ธฐ๋ณธ ๊ฑฐ๋ถ, ์ธ๊ฐ ํ์) |
|
|
540
|
+
| `argo_research` | ์ฌ์ธต ์ฐ๊ตฌ (์์
๊ฐ์ฑ ๋ชจ๋ ํฌํจ) |
|
|
541
|
+
| `argo_evidence` | ์ ๋ขฐ๋ ์ ์ |
|
|
542
|
+
| `argo_clarify` | ์๋ ๋ช
ํํ |
|
|
543
|
+
| `argo_fetch` | ์ค๋งํธ fetch (`mode=extract` ๊ตฌ์กฐ ์ถ์ถ) |
|
|
544
|
+
| `argo_crawl` | ์ฌ์ดํธ ํฌ๋กค |
|
|
545
|
+
| `argo_screenshot` | ํ์ด์ง ์คํฌ๋ฆฐ์ท |
|
|
546
|
+
| `argo_pdf` | PDF ์ถ์ถ |
|
|
547
|
+
| `argo_social_search` | ๋ฉํฐ ํ๋ซํผ ์์
(`mode=sentiment`) |
|
|
548
|
+
|
|
549
|
+
---
|
|
550
|
+
|
|
551
|
+
## ์ค์น์ ์ค์
|
|
552
|
+
|
|
553
|
+
### ์๊ตฌ ์ฌํญ
|
|
554
|
+
|
|
555
|
+
| ํญ๋ชฉ | ์๊ตฌ |
|
|
556
|
+
|------|-------------|
|
|
557
|
+
| Python | 3.9+ (CLI + MCP ์ฝ์ด) |
|
|
558
|
+
| ์์กด์ฑ | `pip install pyyaml` (ํ์ ์์กด์ฑ ํ๋) |
|
|
559
|
+
| Node.js | **`npx` ์ง์
์๋ง** ํ์, 18+ |
|
|
560
|
+
| SearXNG | ๋ถํ์ (๋ด์ฅ ๋ก์ปฌ ์์ง) |
|
|
561
|
+
|
|
562
|
+
### API ํค (๋ชจ๋ ์ ํ)
|
|
563
|
+
|
|
564
|
+
ํค๊ฐ ์์ผ๋ฉด ํด๋น ์์ง ์คํต, ๋ฌด๋ฃ ์์ง์ด ๋ฒํ. **ํ๊ฒฝ ๋ณ์ ์ฌ์ฉ**โ์ค์ ํค๋ฅผ ์ปค๋ฐํ๊ฑฐ๋ ์ด์์ ๋ถ์ด์ง ๋ง์ธ์.
|
|
565
|
+
|
|
566
|
+
```bash
|
|
567
|
+
# recommended (better quality)
|
|
568
|
+
export TAVILY_API_KEY="your_key"
|
|
569
|
+
export BOCHA_API_KEY="your_key"
|
|
570
|
+
export METASO_API_KEY="your_key"
|
|
571
|
+
export ZHIHU_ACCESS_SECRET="your_key"
|
|
572
|
+
|
|
573
|
+
# optional
|
|
574
|
+
export BRAVE_API_KEY="your_key"
|
|
575
|
+
export FELO_API_KEY="your_key"
|
|
576
|
+
export GITHUB_TOKEN="your_key"
|
|
577
|
+
export WEB_SEARCH_API_KEY="your_key"
|
|
578
|
+
export ANYSEARCH_API_KEY="your_key"
|
|
579
|
+
export OCTEN_API_KEY="your_key"
|
|
580
|
+
export ARGO_KEENABLE_API_KEY="your_key" # ์ ํ; Keenable ๋ฌด๋ฃ ์ฒดํ
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
`config.yaml`์๋ `{ENV_NAME}` ํ๋ ์ด์คํ๋๋งโgit์ ํ๋ฌธ ์ํฌ๋ฆฟ ์์.
|
|
584
|
+
|
|
585
|
+
### ์บ์
|
|
586
|
+
|
|
587
|
+
๊ธฐ๋ณธ SQLite ๊ฒฝ๋ก๋ `config.yaml`์ `cache.db_path` (๋ณดํต `~/.cache/unified-search/cache.db`).
|
|
588
|
+
|
|
589
|
+
| ์ ํ | ๋๋ต TTL |
|
|
590
|
+
|------|-------------|
|
|
591
|
+
| Finance | ~5 min |
|
|
592
|
+
| News / realtime | ~10โ15 min |
|
|
593
|
+
| General | ~1 hour |
|
|
594
|
+
| Research / evergreen | ~2โ24 hours |
|
|
595
|
+
| Empty results | very short (avoid freezing โno hitsโ) |
|
|
596
|
+
|
|
597
|
+
### FAQ
|
|
598
|
+
|
|
599
|
+
**API ํค ์์ด๋ ๋๋์?**
|
|
600
|
+
๋ค. ๋ง์ ๋ก์ปฌ ๋ฌด๋ฃ ์์ง๊ณผ ๋ฌด๋ฃ API; ํค ์๋ ๊ฒฝ๋ก๊ฐ ์๋์
๋๋ค.
|
|
601
|
+
|
|
602
|
+
**์ค์น ์คํฌ๋ฆฝํธ vs npx?**
|
|
603
|
+
์คํฌ๋ฆฝํธ: ๊ณ ์ ๋ก์ปฌ ์ค์น, ์ค์ , Skill ๋งํฌ. npx: MCP๋ฅผ ๋น ๋ฅด๊ฒ ๋ถ์. ๊ฐ์ Python ์ฝ์ด.
|
|
604
|
+
|
|
605
|
+
**์์ง ํ์ธ์?**
|
|
606
|
+
`python3 scripts/search.py --list-engines`, ๋๋ `--explain` ์ถ๊ฐ.
|
|
607
|
+
|
|
608
|
+
**์ ์ฅ์์ ์ฝ๋ ์ฌ๋ณธ์ด ์ฌ๋ฌ ๊ฐ?**
|
|
609
|
+
์๋์. `link_source.py`๋ก ๋จ์ผ ์์ค + ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๊ถ์ฅ, rsync ๋ณต์ ์ง์.
|
|
610
|
+
|
|
611
|
+
---
|
|
612
|
+
|
|
613
|
+
## CLI ํ๋๊ทธ
|
|
614
|
+
|
|
615
|
+
```
|
|
616
|
+
python3 scripts/search.py [options] query
|
|
617
|
+
|
|
618
|
+
--engine, -e engine, default auto
|
|
619
|
+
--max-results, -n count, default 5
|
|
620
|
+
--depth, -d fast | balanced | deep
|
|
621
|
+
--mode fast | auto | deep | budget
|
|
622
|
+
--no-cache skip cache
|
|
623
|
+
--explain print routing explanation
|
|
624
|
+
--json JSON output
|
|
625
|
+
--timeout, -t timeout seconds
|
|
626
|
+
--list-engines list engines
|
|
627
|
+
```
|
|
628
|
+
|
|
629
|
+
---
|
|
630
|
+
|
|
631
|
+
## ์ค๊ณ ํธ๋ ์ด๋์คํ
|
|
632
|
+
|
|
633
|
+
1. **์์ด์ ํธ ํก์ ์ฐ์ , ๋งํฌ ๊ฐ์ ์ฐจ์ .**
|
|
634
|
+
2. **๋ฌด๋ฃยท๋ก์ปฌ ์ฐ์ , ์ ๋ฃ๋ ์ ํ์ ํฅ์.**
|
|
635
|
+
3. **์คํจ๋ ๊ด์ธก ๊ฐ๋ฅ**: empty / timeout / breaker์ ๋ผ๋ฒจโ์กฐ์ฉํ ์ผํค์ง ์์.
|
|
636
|
+
4. **์ค์ ์ฃผ๋ ์์ง**; `config.yaml`์ด ๋จ์ผ ์ง์.
|
|
637
|
+
5. **๋จ์ผ ์์ค ์ค์น**: ๋งํฌ ์ํธ๋ฆฌ, rsync ๋ณต์ ๊ธ์ง.
|
|
638
|
+
6. **์์
์ ์ง๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋**; ํ์ฅยท๊ฐ์ฑ์๋ ์ข์ผ๋ ์ ์ผํ ์ฌ์ค ๊ทผ๊ฑฐ๋ ์๋.
|
|
639
|
+
|
|
640
|
+
---
|
|
641
|
+
|
|
642
|
+
## ์ ๋ง๋ ๊ฒฝ์ฐ
|
|
643
|
+
|
|
644
|
+
- Claude Code / Grok Build / Codex / Kimi ์์ด์ ํธ์ ๊ฒ์ ๋ฐฑ์๋
|
|
645
|
+
- **๋ค๊ตญ์ดยท๋ค๋๋ฉ์ธ** Q&A: CJK + EN + ๊ธ์ต / ์ํ / ์คํฌ์ธ / ํ์ / ์ฝ๋
|
|
646
|
+
- **์ฌํ ๊ฐ๋ฅยท์บ์ ๊ฐ๋ฅ** ๊ฒ์์ด ํ์ํ ์คํฌ๋ฆฝํธ์ ํ์ดํ๋ผ์ธ
|
|
647
|
+
- ๊ณต๊ฐ ๊ธ์ต / ์ํฐํฐ ๋ฐ์ดํฐ์ ํฉํธ์ฒดํฌ์ ๋ค์ค ์์ค ๋น๊ต
|
|
648
|
+
|
|
649
|
+
๋จ๋
์๋ฃจ์
์ผ๋ก ๋ ์ ํฉํ ๊ฒฝ์ฐ: ํ๋ซํผ ๋ค์ดํฐ๋ธ ์ธ๊ฒ์ด์ง๋จผํธ ๋ญํน, ๋๋ ์ฅ๊ธฐ max-recall ์ ๊ทธ๋ฆฌ๊ฒ์ดํฐ(๋ด์ฅ ๋ก์ปฌ ์์ง์ด ์ธ๋ถ SearXNG ๋ฉ์ธ ๊ฒฝ๋ก๋ฅผ ๋์ฒด).
|
|
650
|
+
|
|
651
|
+
---
|
|
652
|
+
|
|
653
|
+
## ํธ๋ฆฌ (์์ฝ)
|
|
654
|
+
|
|
655
|
+
```
|
|
656
|
+
argo/
|
|
657
|
+
โโโ README.md # Chinese (default)
|
|
658
|
+
โโโ README.en.md # English
|
|
659
|
+
โโโ README.ja.md # Japanese
|
|
660
|
+
โโโ README.ko.md # Korean
|
|
661
|
+
โโโ README.es.md # Spanish
|
|
662
|
+
โโโ SKILL.md
|
|
663
|
+
โโโ package.json # npx entry
|
|
664
|
+
โโโ bin/argo.js # Node MCP launcher
|
|
665
|
+
โโโ bin/argo # Python CLI
|
|
666
|
+
โโโ config.yaml # engines & domains (source of truth)
|
|
667
|
+
โโโ assets/readme/ # README visuals
|
|
668
|
+
โโโ backends/
|
|
669
|
+
โโโ mcp/ # ๋ค์ค ํด๋ผ์ด์ธํธ MCP ์ฃผ์
์ง์ (clients.yaml)
|
|
670
|
+
โโโ scripts/ # search / research / mcp / install โฆ
|
|
671
|
+
โโโ sub-skills/local-search/
|
|
672
|
+
โโโ sub-skills/ego-search/ # ๋ก๊ทธ์ธ ์ํ ์ ๋ฌธ ๊ฒ์ (๊ธฐ๋ณธ ๊บผ์ง)
|
|
673
|
+
โโโ tests/
|
|
674
|
+
โโโ docs/
|
|
675
|
+
```
|
|
676
|
+
|
|
677
|
+
---
|
|
678
|
+
|
|
679
|
+
## ์ต๊ทผ ์
๋ฐ์ดํธ
|
|
680
|
+
|
|
681
|
+
### ๋ฏธ๋ฆด๋ฆฌ์ค (DSH ํ๋ฌ๊ทธ์ธ): ์ค์ ํ์ด์ง์ "์์ง" ๊ตฌ์ญ ์ถ๊ฐ + ์ทจ์๊ฐ ์ฐ๊ฒฐ ์๋ฆฝ๊น์ง ๋๋ฌ
|
|
682
|
+
|
|
683
|
+
- **์ฌ์ฏ ๋ฒ์งธ ์ค์ ๊ตฌ์ญ "ๅผๆ"**: argo ๋ณธ์ฒด์ 28๊ฐ ๋์ ์ค์์น๋ฅผ ํ๊ฒฝ ๋ณ์์์ ํจ๋๋ก ์ฎ๊น(์บ์ / TF-IDF ์ฌ์์ / ์์น ๊ต์ฐจ ๊ฒ์ฆ / MinHash ์ค๋ณต ์ ๊ฑฐ / SERP ๊ฐ๋, Jina / ๋ชจ๋ฐ์ผ UA / Parallel ๊ธ๊ธฐ ๊ณ์ธต, ์๋ฏธ ์ฆ๊ฑฐ ๊ณ์ธต, ํค์ง ์ฌ์ ์ ๊ผฌ๋ฆฌ ํญ, ์์ง ํ์ฑํ ๋ชฉ๋ก, ํ๋ก์, ๋ก์ปฌ ๊ฒ์ ๋ฃจํธ์ ์ฝ๊ธฐ ํ์ฉ ๋ชฉ๋ก, ์์
/ ์ฌ์ฉ ๋ก๊ทธ / ์ฐ๊ฒฐ ํ / ๊ฐ์ข
TTL). ์ volatile ์ค์ `argoEnv`(ํ ์ค์ ํ๋์ `KEY=VALUE`)๋ก argo ์๋ธํ๋ก์ธ์ค env์ ๋ฐ์. ์ด๋ฆ์ `ARGO_ENV_SPECS` ํ์ฉ ๋ชฉ๋ก์ ๊ฑฐ์น๊ณ ํ์ฉ ๋ชฉ๋ก ๋ฐ์ apply ์์ ์ loud failํ๋ฏ๋ก ์คํ๊ฐ ์กฐ์ฉํ ๋ฌดํจ๊ฐ ๋๋ ์ผ์ ๋ง๋๋ค. ์ค์์น๋ฅ๋ ์ฆ์ ๋ฐ์, ์ซ์ยทํ
์คํธยท๋ชฉ๋ก๋ฅ๋ ๊ทธ๋ฃน ์ ์ฅ. ๋ฏธ์ค์ ํ์ argo ๊ธฐ๋ณธ๊ฐ์ ํ์ํ๊ณ "้ป่ฎค"๋ก ํ๊ธฐ. ์ธ๊ฐ ๊ณ์ด ์ค์์น(์ฌ๊ณ์ฐ ์คํ, ์ธํธ๋ผ๋ท URL)๋ ์๋์ ์ผ๋ก ํจ๋์ ๋ฃ์ง ์์
|
|
684
|
+
- **ํค ์ถ์ฒ ๊ณ์ธต์ด ๋ณด์ด๊ฒ**: "์ค์ ๋จ / ๋ฏธ์ค์ + ์ถ์ฒ ๊ณ์ธต(ๅญ่ฏๅบ / ์์ ํ๊ฒฝ / ํ๋ก์ ํธ .env / ํ .env) + ์ฝ๊ธฐ ์ ์ฉ ์ํ"๋ฅผ ํ์ํ๊ณ file ๊ณ์ธต ์ธ์๋ ์ ์ฅ ์ ๋ฎ์ด์ฐ์์ ์๋ด. `DEEPSEEK_API_KEY`๋ ํธ์คํธ์ `web_search`์ ๊ณต์ ์์ ๋ช
๊ธฐ. `fetchMaxChars`๋ ์ ์ฅ ์ argo ๋๊ตฌ ์คํค๋ง ์ํ 50000์ผ๋ก ์๋ผ "ํ์๊ฐ๊ณผ ์คํจ๊ฐ์ ๋ถ์ผ์น"๋ฅผ ํด์
|
|
685
|
+
- **์ทจ์๊ฐ ์ฐ๊ฒฐ ์๋ฆฝ๊น์ง ๋๋ฌ**: `acquireMcp`๊ฐ ์ฐ๊ฒฐ ์๋ฆฝ ์ค์๋ ์ทจ์๋ฅผ ์ธ์ ํ๊ฒ ๋จ. abortํ๋ฉด ์๋ธํ๋ก์ธ์ค๋ฅผ ์ฃฝ์ด๊ณ `WEB_ABORTED`๋ก ๋ง๋ฌด๋ฆฌํ๋ฉฐ ํ์์์๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์์. ์ทจ์๋ ๋จ๋ฐ ํด๋ฐฑ์๋ ๊ดํต
|
|
686
|
+
- **์์ **: ์ฆ๊ฑฐ ์ค๋ณต ์ ๊ฑฐ๊ฐ ๋์๋ฌธ์๋ฅผ ์ผํค์ง ์๊ฒ ๋จ. `effect`๊ฐ ์๋ ๊ตฌํ ํธ์คํธ์์ ํ์ฑํ๊ฐ ํญ๋ฐํ์ง ์๊ฒ ๋จ. `saveKey` / `setForward` / `toggleTool`์ด ์ค์๊ฐ ์ค๋
์ท์ ์ฝ์ด ์ฐ์ ์กฐ์์ ๋ ์ด์ค๋ก ๊ฐฑ์ ์ด ์ ์ค๋๋ ๋ฌธ์ ๋ฅผ ์์ . `describe` ์๋ต์ ์์ ๋ค์์์ ๋ฐฉ์ดํ๊ณ ์ต์ ์์ฒญ์ ์๋ต๋ง ์ธ์
|
|
687
|
+
|
|
688
|
+
### v2.9.7: ์ํคํ
์ฒ ์๋ ดโโDSH web_fetch ์ฌ + explicit_only ๊ณ์ฝ + ์ํ ๊ณ์ฝ ํต์ผ(License Apache-2.0์ผ๋ก)
|
|
689
|
+
|
|
690
|
+
- **License ๋ณ๊ฒฝ**: MIT โ Apache License 2.0(ํนํ ํ๊ฐ๊ฐ ๋ช
์๋์ด ์์ฉ์ ๋ ์์ ; ๊ทธ ์ธ ๋ถ๋ณ)
|
|
691
|
+
- **DSH ํ๋ฌ๊ทธ์ธ web_fetch ์ฌ**: ํธ์คํธ web_fetch๊ฐ ใ์ด URL์ ์ฝ๋๋คใ๋ ๊ธฐ๋ณธ ๊ฒฝ๋ก๋ก argo๋ฅผ ์์ ํ ์ฐํํ์ผ๋, fetch provider๋ฅผ ๋ฑ๋กํด argo_fetch ์ฒด์ธ์ ํ๋ฅด๊ฒ ํจ(HTTP ์ฐ์ , Cloudflare / JS ๋ ๋๋ง ์ ๋ฐํ์ง ๋ธ๋ผ์ฐ์ ๋ก ์๋ ์น๊ธ); search provider์ ๋ํ์ ์๋ก ์คํโโ์์ฃผ MCP ํ ์ฐ์ , ์ ์ก์ธต ๊ณ ์ฅ ์์๋ง CLI ๋จ๋ฐ ํด๋ฐฑ, ๋๊ตฌ ๋ ๋ฒจ ์ค๋ฅ์ ํ์์์์ ์ฌ๋ฐ์ก ์ ํจ(ํธ์ถ์ ์ด๋ฏธ ๋๋ฌ์ผ๋ ์ฌ๋ฐ์ก์ ์์ง ํธ์ถ๊ณผ ์ฟผํฐ๋ง ๋ฐฐ๋ก); ์คํจ๋ ๋ค์ฏ ๋ถ๋ฅ(ํ์์์ / ์ฐจ๋จ / ๋น ๊ฒฐ๊ณผ / ์ผ๋ฐ / ์ทจ์)๋ก ๋ถ๋ฅํด ์คํ ๊ฐ๋ฅ ๋ฌธ๊ตฌ๋ฅผ ๋ถ์ฌ; ์ ์ค์ `fetchProviderEnabled` / `fetchProviderId` / `fetchTimeoutMs`(๊ธฐ๋ณธ 25000) / `fetchMaxChars`(๊ธฐ๋ณธ 50000)๋ ๊ธฐ๋ณธ ์ ์ฒด ๊ฐ๋ฐฉยทํ์ถ๊ตฌ ํฌํจ; ์ค์ธก: ํฌ๋ก์ค ์ค๋ฆฌ์ง ์ ํ(๋จ์ถ ๋งํฌ, ํ๋กํ ์ฝ ์น๊ธ, ๋ฆฌ๋ค์ด๋ ํธ ๊ป์ง)์ JS ์ฑ๋ฆฐ์ง ํ์ด์ง๊ฐ ํธ์คํธ ๊ตฌ์กฐ์ ์คํจ์์ argo ์ฑ๊ณต์ผ๋ก, ์ผ๋ฐ ์ ์ ํ์ด์ง๋ ํ์ง ๋ถ๋ณ
|
|
692
|
+
- **explicit_only ๊ณ์ฝ ์๋ ด**: `config._routable_filter`๋ ํ๊ฒฝ ํ๋ฐฑ ๋ชฉ๋ก / ํค / ์ฐจ๋จ๋ง ๊ฑธ๋ฌ explicit_only๋ ๊ฑธ์ง ์์, 18๊ฐ ๋ช
์ ์ ์ฉ ์์ง(์ ์ผํ ์ ๋ฃ `deepseek_search` ํฌํจ)์ด enabled ํ๋ณด ํ์ ๋์ด ์ฑ TF-IDF ์ฃผ์
ยทcatch-allยทbackfillยทํด๋ฐฑ ๋ฑ ์ฌ์ฏ ๊ฒฝ๋ก ์ ๋ถ๊ฐ ์ ํํ ์ ์์์โโ์ ํฐ์ง ๊ฑด ์ฝํผ์ค์ ํ์ ์ด๊ฐ ์์ด์๋ฟ, ํ ์ค ์ถ๊ฐํ๋ฉด auto ๋จ์์ ์ ๋ฃ ์์ง์ ๋ณ๋ ฌ ํธ์ถํด ๊ณผ๊ธ๋จ; ์ด์ ํ๋ณด ํ ์ ์ผ ์์ฐ์ ํ ๊ณณ์์ ๊ฑธ๋ฌ๋ด๊ณ `tests/test_explicit_only_gate.py`๊ฐ ์ธ ๊ณ์ฝ(์ฃผ์
๋ฏธํธ์
/ ํ๋ณด ํ ์ ์ธ / ๋ช
์ `--engine` ์ ์ ๋จ๋ฐ)์ ์ ๊ธ
|
|
693
|
+
- **์ํ ๊ณ์ฝ ํต์ผ**: ํ๋ก ์ฐจ๋จ๊ธฐ๋ ๊ฑด๊ฐ closed ์ํ์ ์นด์ดํธ 0์ผ ๋ ๋ฉ๋ชจ๋ฆฌ ๋จ๋ฝ(ํ์ผ ์ ๊ธ ์ ๋กยท๋์คํฌ ์ฌ๊ธฐ๋ก ์ ๋ก), `(st_mtime_ns, st_size)`๋ก ํฌ๋ก์ค ํ๋ก์ธ์ค ๋ณ๊ฒฝ์ ๊ฐ์ง; adaptive ๋ถ๊ธฐ๋ `MAX(created_at)`์ ๋จ์ผ ์ง์ฝ SQL์ ํตํฉํ๊ณ `batch()` ์ปจํ
์คํธ ๋งค๋์ ๋ก ๋ค์ค ์์ง ๋ถ๊ธฐ๋ฅผ ๋จ์ผ ํธ๋์ญ์
์ผ๋ก; ์ฟผํฐ ๊ณ ๊ฐ์ ์ ํจ ์๊ฒฉ์ฆ๋ช
์ง๋ฌธ์ ๊ธฐ๋กํ๊ณ ์ ํค ๊ต์ฒด ์ ์๋ ์ ๊ธ ํด์ ; route ์บ์๋ ์ฝค๋ณด ์์ง ๊ณ ๊ฐ ๋๋ ๊ธฐ์กด ๊ณ ๊ฐ ์์ง ํ๋ณต ์ ์๋ ๋ฌดํจ ์ฌ๊ณ์ฐ; `is_engine_routable` ๋จ์ผ ์
์
์ ์ด๊ฐ backfill / tfidf / breaker_filter์ ๋ค์ธต ํํฐ๋ฅผ ์๋ ด
|
|
694
|
+
- **์ค์ผ์ค๊ณผ ์ ์ก**: auto / deep ๋จ์์๋ ์ฟผํฐ ํ๋ ๊ณ ๊ฐ ์์ง์ ์ ๊ฑฐ(fail-open ํด๋ฐฑ); ํค์ง ๋๊ธฐ ์ฐฝ์ ์ขํ๊ณ ์กฐ๊ธฐ ์ ์ง ํ์ ์ ์ํ(Wave-1 ํฌ๋ก์ค ์์ง ๋์ ์ถฉ์กฑ ์ ์ ์ง, Wave-2 ๋ฏธ๊ธฐ๋); POST ์ฐ๊ฒฐ ํ ๊ฐํต(anysearch ์ฝ 320ms / octen ์ฝ 561ms ๋งค๋ฒ ์ ์ฝ) + MCP ์ฌ์ ์ฐ๊ฒฐ; ๊ธฐ์ ๋๋ฉ์ธ์ `early_stop_min_results: 1` ์ถ๊ฐ
|
|
695
|
+
- **ํ์ ๊ธฐ์ ์ด๊ฒฝ๋ก ๊ฐ์ฐ**: js-run์ด SIGALRM์ MiniRacer ๋ค์ดํฐ๋ธ timeout์ผ๋ก ๊ต์ฒดํด crawl / research / mcp ์์
์ค๋ ๋ ํธ์ถ ์ ๋ฐ๋์ ๋์ง๋ `ValueError: signal only works in main thread` ๋ถ๊ดด๋ฅผ ๊ทผ์ ; local-seek ์ฌ์ ๋ ฌ์ด ๋งค๋ฒ O(N) ์ฝ๊ธฐ์ JSON ํ์ฑ์ ํด์; local-search๊ฐ registry๋ฅผ ์ฌ์ฌ์ฉํด ์ด์ค YAML ํ์ฑ์ ํด์; ego-search๊ฐ auto ํ์์ ํ์นจ์ ํ์ ์ ๋จ๋ฝ
|
|
696
|
+
- **๊ฒ์ฆ**: ํ๋ฌ๊ทธ์ธ ๋จ์ ํ
์คํธ 71 passed; argo ์ ๋ ํ๊ท 4264 passed / 28 skipped; pre-commit ์ผ๊ณฑ ๋ฌธ 123 passed; fetch ์ฒด์ธ ๋๋น์์ ์ผ๋ฐ ํ์ด์ง ๋นํดํ, ํฌ๋ก์ค ์ค๋ฆฌ์ง ์ ํ์ JS ์ฑ๋ฆฐ์ง๋ ์คํจโ์ฑ๊ณต
|
|
697
|
+
|
|
698
|
+
### v2.9.6: DeepSeek Search ์์ง + ์ฟผ๋ฆฌ ์ฐ์ฐ์ ๊ณ์ฝ + ไผ ่พ์ธต ์ฐ๊ฒฐ ํ + ๋ผ์ฐํ
์ค๋
์ท ๋ฌธ
|
|
699
|
+
|
|
700
|
+
- ์ ์์ง `deepseek_search`(๊ณต์ `api.deepseek.com/v1/tools/search`) ๊ธฐ๋ณธ ํ์ฑ: `DEEPSEEK_API_KEY` ์์ ๋๋ง ์๋ ์คํต, ๋๋จธ์ง 265 ์์ค ๋ฌด์ํฅ; ์ค์ธก 445-510ms(anysearch 1.7-4.5s / exa 3.7s), authority ๊ถ์ ๋ฑ๊ธ / rerank_score / ๋ฐํ ์๊ฐ์ ์
์ค ์ ์ผ ์ ํญ๋ชฉ ์ปค๋ฒ, ja/ko/es ๋ค์ธ์ด๋ anysearch์ ๋๋ฑ; ์ข
๋ ๊ณผ๊ธ, ๋๋ฉ์ธ combo์ ์ ๋ค๊ณ , ๋ช
์ `--engine deepseek_search`๊ฐ ์ฃผ ๊ฒฝ๋ก; DSH ํธ์คํธ๋ ๋ค์ดํฐ๋ธ ์๊ฒฉ์ฆ๋ช
seam์ผ๋ก ๊ณต์ ๋ฐฑ์๋์ ๊ฐ์ key ๊ณต์ (web Models ํ์ด์ง์์ key ๊ต์ฒด ์ ๋ค์ ํ๋ถํฐ ํจ๋ ฅ, ์ ์ฅ๋ ๋ก๊ทธ๋ ์ ๋จ)
|
|
701
|
+
- ์์ : `--since/--until` ๊ฐ deepseek_search์ ์กฐ์ฉํ ๋ฌดํจ(TIME_CAPABLE_ENGINES์ ์ถ๊ฐ)
|
|
702
|
+
- ์ `query_operators.py` ์ฟผ๋ฆฌ ์ฐ์ฐ์ ๊ณ์ฝ์ธต: `site:` / `-site:` / `-์ด` / `-"๊ตฌ"` / `lang:` / `after:` / `before:` ๊ฐ ๋ค์ฏ ๊ฐ๋ ํฉ์ด์ง ํํ์์ ๊ตฌ์กฐํ ์ฐ์ฐ์๋ก ์๋ ด; ๋ผ์ฐํธยท์บ์ยท์ฟผ๋ฆฌ ์ดํด๋ ์ง๋ น์ ๋ฒ๊ธด clean_query๋ง ์ธ์; `site:` / `-site:` ๊ฐ ์ง์ง ํ์น ํํฐ ์คํ(์๋ธ๋๋ฉ์ธ ๋งค์นญ, ๋ค์ค ์ฌ์ดํธ OR, ํํฐ ์๋ `site_filtered`์), ์ฐ์ฐ์๋ ๊ฒฐ๊ณผ ์บ์ ํค์ ํธ์
๋์ด ํผ์ ๋ฐฉ์ง
|
|
703
|
+
- `evidence.py`: Agent ๊ธ ์ด์ธต ์์ฝ `summary` ํ๋ ์ ์ค(DeepSeek Search ์์ฝ semantics ์ฐธ๊ณ )
|
|
704
|
+
- ไผ ่พ์ธต ์ด์ค ์ง๋ถ ์ ๊ฑฐ: POST๊ฐ ํ ์ฐ๊ฒฐ ์ฌ์ฌ์ฉ(์ค์ธก ๊ฐ์ ์ฐ๊ฒฐ ๋ ๋ฒ์งธ ์์ฒญ์์ anysearch 320ms / octen 561ms ์ ์ฝ), ๋์ถ ์คํจ ์ ์ฌ์๋์ ๋ชธํต ์ฝ์ ๋ค ๋ฐ๋ฉ ํฌํจ; MCP ์ฌ์ ์ฐ๊ฒฐ; ํ ๋น๋ ๊ณ ๊ฐ๊ณผ ์ฃฝ์ ๋ถ์ ์บ์ ์๊ตฌ
|
|
705
|
+
- ๋ผ์ฐํธ: octen์ด ์ผ๋ฐ ํด๋ฐฑ ์ฌ์ฌ 2๋ฒ์งธ์ TF-IDF ํค์ง ์ฌ๋กฏ์ ์ง์
(anysearch ๋จ๋ฆผ ์ฐฝ p90 3273โ1614ms, max 6266โ1928ms, ์ค๋ฅ 9โ0; ๊ฑด์ ์ฐฝ์์๋ ์ค์๊ฐ ์ฐจ ์์, ๊ผฌ๋ฆฌ ๋ณดํ์ผ๋ก ์์น), ๋ํผ ์ค์์น `ARGO_GENERAL_FALLBACK_LEGACY=1`
|
|
706
|
+
- RRF ๊ถค๋ ๊ฒฉ๋ฆฌ ๋ช
์ฐจ ๊ฐ์ ์์ : ํ ์์ง์ ๋ชจ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ (์ค์ธก anysearch 5๊ฑด ๋ชจ๋ 0.017213), ์ถ๋ ฅ์ด ใ์์ง ๊ฐ์ค์น ๋ธ๋ก ์ด์ด๋ถ์ด๊ธฐใ๋ก ํดํ; ใ๊ฐ์ ์์ง ๋ด ์ ์ ์๊ฒฉ ๋จ์กฐ ๊ฐ์ใ๋ฅผ ์ ๊ทธ๋ ์ ํ
์คํธ
|
|
707
|
+
- Bing ck/a ๋ฆฌ๋ค์ด๋ ํธ ๊ป์ง์ด ํ์๋์ง ์์ ์งํฉ์ธต์ด ๊ฒฐ๊ณผ๋ฅผ ํต์งธ๋ก ๊ฑธ๋ฌ๋๋ ๋ฌธ์ ์์ (์ต๊ทผ 7์ผ 40.2% ๋น ๊ฒฐ๊ณผ): ์คํ๋ผ์ธ base64url ๋ณตํธ๋ก ์ง๋งํฌ ํ์, ์ ๋ก ๋คํธ์ํฌ
|
|
708
|
+
- TF-IDF ๋ฆฌ๋ combo๊ฐ `['anysearch','anysearch']` ๋ฅผ ๋ณ๋ ฌ ๋ ๋ฒ ์คํํ๋ ๋ฌธ์ ์์ (ํ ๋น๋ ๋ ๋ฐฐ์ wasted_ms๋ 0 ๊ธฐ๋ก): 200๊ฑด ์ค์ ์ฟผ๋ฆฌ ์ฌ์, ์ค๋ณต combo 1โ0
|
|
709
|
+
- ๊ฒ์ ๊ฐ์ : ์คํจ ๋ถ์ ์บ์, Nitter ํ์ผ์ค๋ฒ, ๊ถค๋ ๊ฒฉ๋ฆฌ, X Article ์ถ์ถ, ์ฟผ๋ฆฌ ์์ฝ ๋ฐฉ์ด(์กฐ๊ธฐ ์ ์ง ๊ฑฐ๋ถ + ํ๋ณต ์ฌ์ฌ ์์ง ์ ํ)
|
|
710
|
+
- ๊ณตํํ: `scripts/pre-commit` ์๋ฌธ ์ ์ค(static_lint / module_size_gate / usage_doc / consistency / routing_snapshot / context_budget + engine_catalog, ์ค์ธก โ12s); ๋ผ์ฐํ
๊ฒฐ์ ์ค๋
์ท ๋ฌธ์ด ๋ผ์ฐํธ ๋ฐ์ ์ diff ๊ฐ๋ฅํ golden์ผ๋ก ๋ณํ(์ธ ์ฃผ์ ์งํฉ์ ํฉ, 115 ์ฟผ๋ฆฌ, domain๊ณผ kind๋ง ๋น๊ตํด ํ๊ฒฝ ์ก์์ ์ํ ์ค์ ์์); ๊ถค๋ ๋ ์ง์คํธ๋ฆฌ ๋๊ธฐ ํ
์คํธ๊ฐ ใํ์ ์์ง๋ช
์ ์ค๋ฑ๋ก ํ์ใ๋ฅผ ์ ๊ธ
|
|
711
|
+
- DSH ํ๋ฌ๊ทธ์ธ์ DSH 0.2.1-rc.2 ๋์: ์คํ ์ ์
๊ตฌ ๋์ผ ์คํ(`startActivation({provider, label, request, signal, delivery})` ์ / `start(provider, request)` ๊ตฌ), rc.2์์ `toolFilter` ์ ๊ฑฐ ํ ํ๋ฌ๊ทธ์ธ ๋ด tool guard๊ฐ ์์ปค์ `wide_research` ์ค์ฒฉ ํธ์ถ ์ฐจ๋จ; rc.2์์ `wide_research`(planner โ 2 worker โ synthesis, passed=true / 14 sources)์ ๋ค์ดํฐ๋ธ `argo_search`(count=3) ์ข
๋จ๊ฐ ์ค์ธก ํต๊ณผ; 0.2.1-alpha.1 ํธํ ๋ถ์ง๋ ๋จ์ ํ
์คํธ ์ปค๋ฒ; ํ๋ฌ๊ทธ์ธ ๋จ์ ํ
์คํธ 46โ50
|
|
712
|
+
- DSH ํ๊ฒฝ ๋ฒ์ : **DSH 0.2.1-rc.2(ํํยท๊ฐ๋ ์ค, ์ข
๋จ๊ฐ ์ค์ธก) + DSH 0.2.1-alpha.1(ํธํ, ๊ตฌ start ๋ถ์ง๋ ๋จ์ ํ
์คํธ ์ปค๋ฒ)**; ๋์ํ๋ `packages/dsh-plugin/README.md`์ Compatibility ์
|
|
713
|
+
|
|
714
|
+
### v2.9.5: ํ์จ ์ ์ฉ ๋๋ฉ์ธ + 2์ธต ์ค๋ณต ์ ๊ฑฐ + ์์ ์ค์ง๋จ ์์ + ์ฒดํฌ์์๋ณ daemon ๊ฒฉ๋ฆฌ
|
|
715
|
+
|
|
716
|
+
- `config.yaml`: ์ ๋๋ฉ์ธ `fx_query` โ "์์/๋ฌ๋ฌ ํ์จ, ์ค์ฌํ์จ, ์คํ์ผ์ด" ์ง๋ฌธ์ด ๊ฑฐ์ ๋๋ฉ์ธ ๋น ํ์ ๋์ ๋ฐฑ๊ณผ์ฌ์ ํญ๋ชฉ์ผ๋ก ๋จ์ด์ง์ง ์๊ณ ์ํ์จ + ๋งค์ผ ์ค์ฌํ์จ ๋ด์ค๋ฅผ ๋๋ ค์ค๋ค(์ค์ธก 675ms, ์์ ์ ์ 1411ms์ด๋ฉด์ ๋น๋๊ฐ)
|
|
717
|
+
- `search_rank.py`: ์ค๋ณต ์ ๊ฑฐ๋ฅผ 2์ธต์ผ๋ก โ ์ ๋ชฉ ์ฌ์ดํธ suffix ์ ๊ทํ(์ ๋ก ์์กด) + rapidfuzz ํผ์ง ๊ทผ์ ์ค๋ณต ๊ฒ์ฌ(๊ทผ์ ๋ช
์ค ๋์ญ ๋ด์์๋ง ๊ฐ๋; `ARGO_DEDUP_FUZZY=0` ์ผ๋ก ์ฐจ๋จ, ๋ฏธ์ค์น ์ ์์ minhash๋ก ์๋ ํด๋ฐฑ)
|
|
718
|
+
- ์์ : ์ดํ ๋ฆฌ๋ญํฌ์ ์ ๋ชฉ ๊ตฌ๋ถ์ ์ค์ง๋จ โ `|` / `_` / `โโ` ๋ฅผ ํฌํจํ ์ ๋ชฉ์ ์ผ๋ฅ ร0.6์ผ๋ก ๊ณต์ ๋ฌธ์๊ฐ 40% ๋๋ ธ๋ค; Bocha ํค ์๋ auto/deep ์ง๋ฌธ ์ ์ฒด๊ฐ ์ํฅ(ํ์ ์ rank_signals ๋จ์ผ ๊ตฌํ์ผ๋ก ์๋ ด)
|
|
719
|
+
- `query_understanding.py`: ๋ถ์ ์ดํด์ ใไธๆฏXใ ์ถ๊ฐ(์๋ฌธํ ใๆฏไธๆฏใ์ ๋ถ์ ์ผ๋ก ์ค์ง๋จํ์ง ์์)
|
|
720
|
+
- `daemon.py`: socket/pid/ํฌ์ธํฐ ๋ฑ ์จ๋์คํฌ ์ด๋ฆ์ ์ฒดํฌ์์๋ณ๋ก ๊ฒฉ๋ฆฌ โ ๋ค์ค worktree/clone์ daemon ์ํยท์ค์ดยท"๋ณ๊ฒฝ์ด ์ ๋จนํ" ์ธ ๊ณ ์ฅ์ ๊ทผ์
|
|
721
|
+
- ์ ์ ํ ์์กด rapidfuzz(`pip install rapidfuzz`; install.sh๊ฐ ์๋ ์ค์น, ๋ฏธ์ค์น์ฌ๋ ์ฝ์ด ๊ธฐ๋ฅ์ ์ํฅ ์์)
|
|
722
|
+
|
|
723
|
+
### v2.9.4: ๋ช
์์ ์์ง ๋๋ฉ์ธ ์์ฑ + ๋ณต๊ตฌ ์ฒด์ธ ์ฐจ๋จ๊ธฐ + ๊ฒ์ดํธ ๋๊ธฐํ
|
|
724
|
+
|
|
725
|
+
- `route.py`: `--engine X` ์ `match_domains` ๋ณด์ถฉ์ผ๋ก ์บ์ TTL ์ผ๊ด ์ผ๋ฐํ ์์
|
|
726
|
+
- `recovery.py`: ๋จ์ผ ์์ง์ ๋์ฒด ์์ผ๋ฉด L1 ๋น ์คํ ๊ฑด๋๋
|
|
727
|
+
- `config.yaml`: `org_entity`์ ์ฃผ์ฃผ ์ค์ฌ ์ฉ์ด ์ถ๊ฐ; `fund_query`์ ์ ์ฑ
๋ฒ๊ท ์ฉ์ด ์ถ๊ฐ
|
|
728
|
+
- `mcp_launch.sh`: `set -a`๋ฅผ `. "$ENV_FILE"` ํ ์ค๋ก ์ถ์
|
|
729
|
+
- `sub-skills/local-search/`: ์์ง ๋ ์ง์คํธ๋ฆฌ ๊ณ์ธต ํ์ ๋ฐ search_v3 ํ์ง ํฅ์
|
|
730
|
+
- ๊ฒ์ดํธ ๋๊ธฐํ: module_size_gate / ENGINE_CATALOG ์ ํฉ
|
|
731
|
+
|
|
732
|
+
### v2.9.3: X ๊ฒ์๋ฌผ ์์ ํจํค์ง + ๋ธ๋ผ์ฐ์ ๋ก๊ทธ์ธ ์ํ ๋ ์ธ + ๋ก์ปฌ ์ฒด์ธ ํ์งยท์๋ ์์
|
|
733
|
+
|
|
734
|
+
- **์ ๊ท**: `argo tweet` โ ํ ๋ฒ์ ๋ช
๋ น์ผ๋ก ์ง์ X ๊ฒ์๋ฌผ์ ์ ๋ฌธยท์ค๋ ๋/์ธ์ฉ/๋ฆฌํฌ์คํธยท์ธํฐ๋์
๋ฐ์ดํฐ๋ฅผ ํจํค์ง; ๊ธฐ๋ณธ์ ํ
์คํธ๋ง, `--out`์ผ๋ก 4ํ์ผ ์ธํธ(post.md/raw.json/manifest.json/CHECKLIST.md), `--media`๋ก ์ด๋ฏธ์ง/๋์์ ํ์ ์ ๋ค์ด๋ก๋; ์คํจ ์์ธ์ ์ฐ์ถ๋ฌผ์ ๊ฐ์ํ
|
|
735
|
+
- **์ ๊ท**: `argo auth` ๋ธ๋ผ์ฐ์ ๋ก๊ทธ์ธ ์ํ ๋ ์ธ โ `login/status/logout`์ผ๋ก ์ฌ์ดํธ๋ณ ์๊ตฌ ๋ธ๋ผ์ฐ์ ํ๋กํ ๊ด๋ฆฌ; QR์ ํ ๋ฒ ์ค์บํ๋ฉด ๋ก๊ทธ์ธ ํ์ ํ์ด์ง๋ ๊ฐ์ ธ์ฌ ์ ์์; ์ฟ ํค๋ Chrome ์์ฒด ์ํธํ ์ ์ฅ์์๋ง ๋ณด๊ด๋๋ฉฐ argo๊ฐ ์ฝ์ง ์๊ณ , ๋ก๊ทธ์ธ ์ํ ๊ฒฐ๊ณผ์๋ `login_state_used`๋ฅผ ๋ถ์ฌ ๊ณต์ ์บ์์์ ์ ์ธ(`ARGO_AUTH_FETCH`๋ก ํ์ฑํ)
|
|
736
|
+
- **์ ํ์ฑ**: ์ค๊ตญ์ด ๋ก์ปฌ ์ฒด์ธ์ด Sogou/Baidu ๋ฆฌ๋ค์ด๋ ํธ ๊ป์ง์ ์ธ์
์์ด ์ค์ URL๋ก ํด์(๋ณด์กด ๊ฒฐ๊ณผ 1โ5๊ฑด); ์ธํ
ํธ ๊ฒ์ดํธ ์ค์ ๊ธ ์์ ("ํํ ๋ฆฌ์ผ"๋ฅ ์ฟผ๋ฆฌ๊ฐ ๋จ์ผ ์์ง์ ๊ณ ์ ๋์ง ์์); ์ฒ ๋ ํ
์ด๋ธ ํ ์๋ณ URL๋ก ํ๋ณด ํผ๋ ์์ถ(10โ1)์ ์ค์ ๋๋ก 10โ10์ผ๋ก ์์
|
|
737
|
+
- **์๋**: ์ปจ์ผ์์ค ์ ์ ์ ์ํ(์ถฉ๋ถํ ์ ๋ฌํ ์ฒซ ์์ง์ผ๋ก ๋ฐฉ์ถ; ์์ด ๋์คํจ์น ~3.0sโ2.2-2.5s); ๋ก์ปฌ ๋กฑํ
์ผ ์กฐ๊ธฐ ์ค๋จ; ๋ก์ปฌ ์ด๋ฏธ์ง ํ๊ฑฐํ๋ฆฐํธ๋ฅผ mmap ํ๋ ฌ๊ณฑ์ผ๋ก(77k์ฅ 158msโ3.9ms, ๊ธฐ๋ณธ ๋นํ์ฑ `ARGO_LOCAL_IMAGE=1`); ์์ด์ ํธ ์๋น ์๋ ์ฌ๋ฆผํ + markdown ์ฝํ
์ธ ํ์, MCP ํธ์ถ๋น ๊ณ ์ ์ค๋ฒํค๋ โ32%
|
|
738
|
+
- **์์ค**: ๋๋ฉ์ธ ์ฐธ์กฐ ์๋ 43๊ฐ ์์ง์ ๊ฐ ๋๋ฉ์ธ์ ๋ฐฐ์ ; route_lang ์ธ์ด ๋ผ์ฐํ
; ํค ๋ถํ์ ๊ธ์ต ์์ค 3๊ฑด ์ถ๊ฐ; `--academic-deep` ์ํ๋๊ทธ ํ์ ๋ฉํฐ์์ค; ์ฒ ๋ ํ์นยท๊ฒฝ์ ์กฐํ
|
|
739
|
+
- **์์ ์ฑ**: js-run์ fetch ์ฒด์ธ ์ฒซ ๋ฒ์งธ ๋ ์ธ์ผ๋ก ์ ์ (Chrome ํ๊ฑฐํ๋ฆฐํธ ์ฌ์๋); jsrun ์ธ์
๋์์ ๋ฐฑ์คํ ์์ฐ ์์ ; ํ์์์ ์กฐ์(redskill 60โ15s)๊ณผ ์ ์ธ ์ ์ฑ
์ผ๋ถํ
|
|
740
|
+
|
|
741
|
+
### v2.9.2: DSH 0.2.1-alpha.1 ํธํ ๊ฒ์ฆ + ๋ผ์ฐํ
/๊ฐ๋ ์์ + js-run ์๋ธ ์คํฌ
|
|
742
|
+
|
|
743
|
+
- **ํธํ์ฑ**: DSH ํ๋ฌ๊ทธ์ธ์ ์ต์ DSH 0.2.1-alpha.1์์ ์ค์ธก ๊ฒ์ฆ โ ๋ค์ดํฐ๋ธ ํผ์คํธํด๋์ค ๋๊ตฌ / web_search seam / wide_research ์ผํํ ๋ชจ๋ ์ ์ ์๋; `argo mcp inject`์ WorkBuddy๋ฅผ ์ถ๊ฐํด 7๋ฒ์งธ ํธ์คํธ๊น์ง ์ง์
|
|
744
|
+
- **์ ํ์ฑ**: TF-IDF ์ฝ์ฆ๊ฑฐ ๋ณด์กฐ ์์ค ๊ฐ๋ฑ, ์ฃฝ์ ์์ค ํ๋ก์ด + ์ํท ๋ธ๋ ์ด์ปค ์ฌ๋กฏ ์ฌ์ถฉ์ , ์ฟผํฐ ์์ง ์์ง ๊ฒฉ๋ฆฌ, serp_guard ์คํ ์์
|
|
745
|
+
- **์๋์ ์์ ์ฑ**: engines/evidence ์ง์ฐ ์ํฌํธ(import๋ โ50%), ์ด๋๋ฏธ์
์กด์ฌ ์งํฉ ๋จ๋ฝ(open 261 โ 99), MCP ์ง์
/์์น ์ธ์ ๊ฐ๋; ์ ๊ท ์๋ธ ์คํฌ `sub-skills/js-run`(๋ธ๋ผ์ฐ์ ์์ด ์น JS ์คํ, P50 โ 1ms)
|
|
746
|
+
|
|
747
|
+
### v2.9.1: ์ฝํ
์ธ ํ์ง ์ต์ ํ + ์ฝํ
์ธ ํ ๋์ + ์ต์ ํ๊ฒฝ ์ ์
|
|
748
|
+
|
|
749
|
+
- **๊นจ๋ํจ**: ์ฝํ
์ธ ํ์ง ํ๊ฐ๋ฅผ ์ต์ ํํ๊ณ ์ฝํ
์ธ ํ ๋์ ๋ฅ๋ ฅ์ ๊ฐํ โ ๊ฒ์ ๊ฒฐ๊ณผ์ ์ ํ์งยท๋๋ ์์ฑ ์ฝํ
์ธ ๋ฅผ ๋ ํจ๊ณผ์ ์ผ๋ก ์๋ณํ๊ณ ํํฐ๋ง
|
|
750
|
+
- **ํธํ์ฑ**: ์ต์ ๋ฒ์ ์ ์ ์ํ์ฌ ํ์ฌ ํ๊ฒฝ๊ณผ ์ํํ๊ฒ ํ์
|
|
751
|
+
- **์์ ์ฑ**: ๋ก์ปฌ ๊ฒ์์ ์์ฒด ์ค์น ํธ๋ฆฌ ๊ฐ๋๋ฅผ ์ถ๊ฐ โ ๊ฒ์ ๊ฒฐ๊ณผ๊ฐ argo ์์ ์ ์์ค ์ฝ๋๋ก ์ค์ผ๋์ง ์๋๋ก
|
|
752
|
+
|
|
753
|
+
### v2.9.0: ์์ค ์ต์ ํ + ํ๋ฌ๊ทธ์ธ๊ณผ CLI ๋๋ฑ + ์์ ์ธ์ด
|
|
754
|
+
|
|
755
|
+
- **์ถฉ์ค**: ์์ค 237 โ 253(๋ฌด์ค์ 198 โ 219). 14๊ฐ ์์ ์ธ์ด ๋ก์ปฌ ๋ด์ค ์์ค, CORE ์คํ์ก์ธ์ค ์ ๋ฌธ ์์ค, TinEye ์ญ๋ฐฉํฅ ์ด๋ฏธ์ง ๊ฒ์, Bing RSS ์์ ์ถ๊ตฌ ๋ฑ ์ถ๊ฐ; ๋ฐ์ด๋์ ์๊ณ ์ฐ ๋ ์๋ก ์์ค ๋ถํ
|
|
756
|
+
- **์ ๋ ฌ**: CLI 18๊ฐ ๋ช
๋ น๊ณผ MCP 19๊ฐ ๋๊ตฌ๊ฐ ์ผ๋์ผ ๋์ โ ํ๋ฌ๊ทธ์ธ๊ณผ CLI ๊ฒ์ ๋ฅ๋ ฅ์ด ์ฒ์์ผ๋ก ์์ ํ ๋๋ฑ
|
|
757
|
+
- **๋ค๊ตญ์ด**: 14๊ฐ ์์ ์ธ์ด ์์ค(ํ์ด/์๋์ด/ํ๋ธ๋ฆฌ์ด/๊ทธ๋ฆฌ์ค์ด/ํ๋์ด/๋ฒ ํธ๋จ์ด/ํฐํค์ด/์ธ๋๋ค์์์ด ๋ฑ) ์ถ๊ฐ, ์ฟผ๋ฆฌ ์ธ์ด์ ๋ฐ๋ผ ์๋ ๋ฐฐ์น
|
|
758
|
+
- **๊ณ ์**: ์ํฌํธ ์ฒด์ธ โ79%, n=200 ์ฌ๋ญํน 33ms โ 1.5ms, ์บ์ ์ ์ค๋ฅ ์ ์ฝ 60%์์ ๊ฑฐ์ ๋ฏธ์ค ์์ด
|
|
759
|
+
- **์ ๋ขฐ์ฑ**: ์ฟผํฐ ์ฐ๊ธฐ ๊ฒฝ๋ก์ ํ๋ก์ธ์ค ๊ฐ ์์ ์ฑ ์์ , ์กฐ๊ธฐ ์ค๋จ ๊ฒฐ๊ณผ๊ฐ ํ์์์์ผ๋ก ์ค๊ธฐ๋์ง ์์ผ๋ฉฐ, `argo stats`๋ก ๊ฒ์ ํ์ง์ด ์์ฒด ์ฅ๋ถ๋ฅผ ๊ฐ์ง
|
|
760
|
+
|
|
761
|
+
### v2.8.9: ์ถ๋ ฅ ๊ฒฝ๋ํ + ๋ ๋น ๋ฅด๊ณ ํ๋ถํ ๊ฒ์ + ํด์ธ ๋ฏธ๋์ด ๋ฐ ํฉํธ์ฒดํฌ ์์ค 5๊ฐ
|
|
762
|
+
|
|
763
|
+
- **๊ฒฝ๋ํ**: ๊ธฐ๋ณธ ์ถ๋ ฅ โ66%(๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ธ ๋ฒ ์ฐ์ง ์์); ๋ฐ๋ณต ์ฟผ๋ฆฌ โ30%(๋ผ์ฐํ
๊ฒฐ์ ์บ์); ๋๋ฆฐ ๋คํธ์ํฌ ๋๊ธฐ โ36%(์ฃผ ์์ค๊ฐ 0.8์ด๋ฅผ ๋๊ธฐ๋ฉด ์๋์ผ๋ก ๋ฐฑ์
์์ค ์ถ๊ฐ ๊ธฐ๋)
|
|
764
|
+
- **์ถฉ์คํ**: ๋ฆฌ์ฝ +35%, ์์ง ์ง์ฐ โ30%; ๋ณธ๋ฌธ ๊ตฌ์กฐ ๋ณด์กด 0/6 โ 6/6(์ ๋ชฉยท๋ชฉ๋กยทํ๊ฐ ๋๋ฆฌ์ง ์์); ์ค๊ตญ์ด ์ฝํ
์ธ ๊ฐ ์ฒด๊ณ์ ์ผ๋ก ์ ํ์ง ํ์ ๋ฐ์ง ์์
|
|
765
|
+
- **์ถ๊ฐ**: ์์ค 232 โ 237(ํค ๋ถํ์ 194 โ 198, ์ ๋ถ ๋ฌด๋ฃ โ The Guardian, France 24, DW, ํฉํธ์ฒดํฌ FactCheck.org / Full Fact ๋ฏธยท์ ์๊ถ); ์ฃฝ์ ์์ค gdelt ํ์ง
|
|
766
|
+
- **์ ๋ขฐ์ฑ**: ์ซ์๊ฐ ์๋ก ๋ชจ์๋๋ ์ฌ์ฏ ์ฅ๋ถ ๊ฒฐํจ ์์ ; 6๋จ ํผ๋๋ก 0๊ฑด์ด ์ด๋ ์ธต์์ ๋ฌด๋์ก๋์ง ํน์ ๊ฐ๋ฅ; ์คํ๋ผ์ธ ์ฌ์ ๋๊ตฌ๋ก ๋ณ๊ฒฝ ํจ๊ณผ๋ฅผ ๋น์ผ ๊ฒ์ฆ. ์์ธํ๋ [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/RELEASE_NOTES_v2.8.9.md)
|
|
767
|
+
|
|
768
|
+
### v2.8.8: ์ค์ฌ์ฉ์ ๋ฒ๊ทธ ์์ + ์ ๋ฉด ์๋ ๊ฐ์ + ์์ค 232๊ฐ
|
|
769
|
+
|
|
770
|
+
- **์์ **: ๋ฌธ์ ์ถ์ฒ ์ด๋ฆ์ผ๋ก ํค๋ฅผ ์ค์ ํด๋ ์์ง์ด ์กฐ์ฉํ 0๊ฑด์ ๋ฐํํ๋ ๋ฌธ์ (#12), ์์ง ์ฒด์ธ์ด ํ๋ก์๋ฅผ ๋ฌด์ํด GitHub ๊ฐ์ ์ฌ์ดํธ๊ฐ ํญ์ ์คํจํ๋ ๋ฌธ์ (#13) โ ์ด์ `ARGO_PROXY`, config ๋๋ฉ์ธ๋ณ ๊ท์น, ํ์ค ํ๋ก์ ํ๊ฒฝ๋ณ์๊ฐ ๋ชจ๋ ์๋ํ๊ณ `NO_PROXY` ์กด์ค
|
|
771
|
+
- **์๋**: ๋ช
๋ น์ด ์ฝ๋ ์คํํธ 2.1s โ 0.55s; ํ๋ก์ธ์ค ๊ฐ ์ค์ ์บ์ 50โ82ms โ 16โ18ms; ๋งค ๊ฒ์์ ๋จ๊ณ๋ณ ์์ ์๊ฐ๊ณผ ์์ฐ ์๋น๋ฅผ ์ถ๋ ฅํด ์ด๋๊ฐ ๋๋ฆฐ์ง ์ถ์ธก ๋ถํ์(`--no-timing`์ผ๋ก ๋นํ์ฑํ)
|
|
772
|
+
- **์ ๊ท**: ์์ค 218 โ 232(์ค์ ์์ด ๋ฐ๋ก ์ฐ๋ 184 โ 194, ๋ชจ๋ ํค ๋ถํ์: ์ค๊ตญ ํธ๋ ๋ ๋ณด๋, ๋ณด์ ์ทจ์ฝ์ , ์คํ ์ก์ธ์ค ํ์ , ์คํฌ ๋๋ ํฐ๋ฆฌ, ์์ด์ ํธ ๊ฒ์), ์ง๋ต `argo answer`, ์น ๊ด์ฐฐ `argo watch`, CLI/MCP ๋๊ตฌ๋ฉด ์ ๋ ฌ
|
|
773
|
+
- **์์ ์ฑ**: 3๊ฐ OS์ ๊ด๋ก ๊ฒฝ๋ก(`argo paths` ์๊ธฐ์ ๊ฒ ์ ๊ท), Python 3.9 ์ง์, ์กฐ์ฉํ ์งํ๋๋ ์ฑ๋ฅ ์ ํ๋ฅผ ์ ์งํ๊ฒ ๊ธฐ๋ก. ์์ธํ ๋ด์ฉ์ [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/RELEASE_NOTES_v2.8.8.md)
|
|
774
|
+
|
|
775
|
+
### v2.8.7: ์์ค 218๊ฐ๋ก ํ์ถฉ + ์์ ์ผ๊ด
|
|
776
|
+
|
|
777
|
+
- **์์ค ํ์ถฉ**: 168 โ 218 ์์ค, 72 โ 89 ๋๋ฉ์ธ (StackExchange Q&A, DOI ๋ฉํ๋ฐ์ดํฐ, ์ทจ์ฝ์ ์ธํ
, ์ ํ ์๋ช
์ฃผ๊ธฐ ๋ฑ ๊ณต์ ์์ค ์ถ๊ฐ), ๋ณธ๋ฌธ ํ๋ ์งํต ์ฑ๋ 3๊ฐ ์ถ๊ฐ
|
|
778
|
+
- **์์ ์ผ๊ด**: ๋ฉํฐ ์์ง ๋ผ์ฐํ
, ๋น ๊ฒฐ๊ณผ ํด๋ฐฑ, ์ค๊ตญ์ด ๋ฆฌ๋ค์ด๋ ํธ, ๋ก์ปฌ ๊ฒ์ ์ดํ ๋ฑ; ์์ธํ ๋ด์ฉ์ [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/RELEASE_NOTES_v2.8.7.md)
|
|
779
|
+
|
|
780
|
+
### v2.8.6: ๊ฒ์ ๊ณ ์ํ + ๋ฉํฐ ์์ค ๋ถ๋ด
|
|
781
|
+
|
|
782
|
+
- ์์ง ๋ ์ด์ฑ, ์งํ ์ธ ์์ค ๋ถ๋ด, ์ธ์ด/ํ์ ๋์คํจ์น ํ๋, ์ฃฝ์ ์์ค ๊ฒ์ดํธ
|
|
783
|
+
|
|
784
|
+
### v2.8.5: DSH ํ๋ฌ๊ทธ์ธ ๋๊ตฌ ๋ค์ดํฐ๋ธํ + MCP ๊ธฐ๋ณธ ๋ + Windows ํธํ
|
|
785
|
+
|
|
786
|
+
- **ํ๋ฌ๊ทธ์ธ ๋๊ตฌ ๋ค์ดํฐ๋ธํ**: `argo_search` / `argo_fetch`๊ฐ 1๊ธ ๋ค์ดํฐ๋ธ ๋๊ตฌ๋ก ๋ฑ๋ก๋์ด MCP ์ฐ๊ฒฐ ์์ด ๊ธฐ๋ณธ ์ฌ์ฉ ๊ฐ๋ฅ; ์คํค๋ง๋ ๋จ์ผ ์ง์ `mcp_tools.py`์์ ์๋ ์์ฑ๋์ด ์์ชฝ ๋ชจ๋ ๋๋ฆฌํํธ ์์; `argo_research`๋ฅผ ์ ์ธํ 18๊ฐ ๋๊ตฌ๋ฅผ `nativeTools`๋ก ์์ ํ์ฑํ ๊ฐ๋ฅ
|
|
787
|
+
- **MCP ๊ธฐ๋ณธ ๋**: 3๊ฐ์ง ์ ์ ํํ(์์ ์ ๋ง์ดํธ MCP / ๊ธฐ๋ณธ ์ง์
๋ค์ดํฐ๋ธ ๋๊ตฌ / web_search seam); ํ์ ์์ฃผ ํ ํฐ ๋น์ฉ 0, 19๊ฐ ๋๊ตฌ ์ ์ฒด๊ฐ ํ์ํ๋ฉด profile patch ํ ์ฅ์ผ๋ก ์ถ
|
|
788
|
+
- **Windows ํธํ**(์ปค๋ฎค๋ํฐ PR #11): ์์ ๊ฒฝ๋ก๋ ์์คํ
temp, GBK ์ธ์ฝ๋ฉ ์์ , `python3`/`python` ๋ฐํ์ ํด์, symlink๋ ๊ถํ ์์ผ๋ฉด junction์ผ๋ก ํด๋ฐฑ, PowerShell ์ผ๊ด ์ค์น `install.ps1` ์ถ๊ฐ
|
|
789
|
+
- **์ฟผํฐ ์๊ฐ ์น์ **: HTTP 200์ ์จ์ ์๊ฒฉ ์ฟผํฐ ๊ณ ๊ฐ์ ๊ฐ์งํ๊ณ , ๋ผ์ฐํ
์ด ํด๋น ์์ง์ ์ ์ธํด ๋ฐฑ์
์์ค๋ก ์ ํ, ๋ค์ ์ฟผํฐ ์ฃผ๊ธฐ์ ์๋ ๋ณต๊ท
|
|
790
|
+
- **ํ์น ์ ์ญ deadline**: `ARGO_FETCH_DEADLINE_S`(๊ธฐ๋ณธ 60s)๋ก ํด๋ฐฑ ์ฌ์ฌ ์ด ์๊ฐ ์ํ; 429/503 ์ ์ง ์๊ทธ๋ ์กด์ค; tinyfish ๋ ๋๋ง + `.md` ๋ณํ ํ๋ก๋ธ
|
|
791
|
+
|
|
792
|
+
### v2.8.4: ๋ก์ปฌ ๋ฐ์ดํฐ ์ตํฉ + ์ ์ปค๋งจ๋ MCP ์ฐ๊ฒฐ
|
|
793
|
+
|
|
794
|
+
- **์ฌ์ธต ์ฐ๊ตฌ๊ฐ ๋ก์ปฌ ๋ฐ์ดํฐ๋ฅผ ๋จน์ ์ ์์**: ์์
ํจํค์ง์ `file_inputs`(1์ฐจ CSV / XLSX / ๋ฌธํ; ํด์๋ ๋ฑ๊ธฐ, ๋ด์ฉ์ ๋ฃ์ง ์์) + `recompute`(์๋๋ฐ์ค ์ฌ๊ณ์ฐ; ๋ถ์ผ์น๋ ํ๋๊ทธ)
|
|
795
|
+
- **MCP ์ฐ๊ฒฐ์ ๋ ์ด์ ์์ผ๋ก ์ ๊ณ ์นจ**: `argo mcp inject`๊ฐ Claude Code / Cursor / Windsurf / Codex / OpenCode / Cline์ ๊ธฐ๋ก(์์ ์ฐ๊ธฐ + ๋ฐฑ์
+ ๋๋๋ฆฌ๊ธฐ)
|
|
796
|
+
- **๊ฐ๋จํ ์ฟผ๋ฆฌ๋ ์ธ๊ฒ ์ ์ง**: ์ ๊ทํ + ๋ณต์ก๋ ๊ฒ์ดํธ + ์์
/ํ๋ซํผ ๋ฌธ๋ฒ ์ฐ์ + ์ค๊ตญ์ด ์์ง์ ๋ฒ๋ ค๋ ํ๋ณด๋ฅผ ๊ณ์ ๋ด
|
|
797
|
+
- **Keenable**์ ๋ฌด๋ฃ ์ฒดํ ์น ๊ฒ์ ์์ค๋ก ์ถ๊ฐ
|
|
798
|
+
- **๋ณด์**: recompute๊ฐ ์ธ๋ถ ํ๋ก์ธ์ค ์ถ๋ง์ ์ฐจ๋จ; ํธ์คํธ ๊ฒฝ๋ก๋ ์ค์น ์ธ์ง
|
|
799
|
+
|
|
800
|
+
> ์์ธํ ๋ด์ฉ์ ์๋ ํ์ ๊ฐ ๋ฒ์ [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/)ใ
|
|
801
|
+
|
|
802
|
+
---
|
|
803
|
+
|
|
804
|
+
## ๋ณ๊ฒฝ ์ด๋ ฅ
|
|
805
|
+
|
|
806
|
+
| ๋ฒ์ | ๋น๊ณ |
|
|
807
|
+
|---------|-------|
|
|
808
|
+
| **v2.9.7** | **์ํคํ
์ฒ ์๋ ด + DSH web_fetch ์ฌ + License Apache-2.0์ผ๋ก**: MIT โ Apache License 2.0; ํธ์คํธ web_fetch๊ฐ argo_fetch ์ฒด์ธ์ ํ๋ฆ(HTTP ์ฐ์ , JS ์ฑ๋ฆฐ์ง ์ ๋ธ๋ผ์ฐ์ ์น๊ธ, ์๋ก ์คํ, ๋๊ตฌ ์ค๋ฅ ์ฌ๋ฐ์ก ์์, ์คํจ ๋ค์ฏ ๋ถ๋ฅ); 18๊ฐ explicit_only ์์ง์ ๋ผ์ฐํ
ํ๋ณด ํ์์ ์ ๊ฑฐ(auto ๋จ ์ ๋ฃ ์์ง ์ค๊ณผ๊ธ ๊ตฌ๋ฉ ํ์); ํ๋ก ๊ฑด๊ฐ ๋จ๋ฝ, adaptive ๋จ์ผ ํธ๋์ญ์
๋ถ๊ธฐ, ์ฟผํฐ ํค ๊ต์ฒด ์๋ ์ ๊ธ ํด์ , route ์บ์ ๊ณ ๊ฐ ๋ฌดํจ; auto/deep ํ๋ ๊ณ ๊ฐ ์ ์ธ + ์กฐ๊ธฐ ์ ์ง ์ํ + POST ์ฐ๊ฒฐ ํ; js-run ๋น๋ฉ์ธ์ค๋ ๋ ๋ถ๊ดด ์์ . |
|
|
809
|
+
| **v2.9.6** | **DeepSeek Search ์์ง + ์ฟผ๋ฆฌ ์ฐ์ฐ์ ๊ณ์ฝ + ไผ ่พ์ธต ์ฐ๊ฒฐ ํ + ๋ผ์ฐํ
์ค๋
์ท ๋ฌธ**: ์ ์์ง `deepseek_search` ๊ธฐ๋ณธ ํ์ฑ(key ์์ผ๋ฉด ์๋ ์คํต; 445-510ms, authority/rerank_score/๋ฐํ ์๊ฐ ์ ์ผ ์ ํญ๋ชฉ ์ปค๋ฒ, ์๊ฐ์ฐฝ ์ง์ง ํจ๋ ฅ; DSH๋ ๋ค์ดํฐ๋ธ ์๊ฒฉ์ฆ๋ช
seam์ผ๋ก key ๊ณต์ ); `site:`/`-site:`/`-์ด`/`lang:`/`after:`/`before:` ๊ฐ ์ฐ์ฐ์ ๊ณ์ฝ์ธต์ผ๋ก ์๋ ดํด ์ง์ง ํ์น ํํฐ + ์บ์ ํค ํธ์
; POST ์ฐ๊ฒฐ ํ(ํ๋น 320-561ms ์ ์ฝ) + MCP ์ฌ์ ์ฐ๊ฒฐ; octen์ด ํด๋ฐฑ๊ณผ ํค์ง ์ฌ๋กฏ์(p90 3273โ1614ms, ๋ํผ ์ค์์น `ARGO_GENERAL_FALLBACK_LEGACY=1`); RRF ๋ช
์ฐจ ๊ฐ์ ์ Bing ๋ฆฌ๋ค์ด๋ ํธ ๊ป์ง(40.2% ๋น ๊ฒฐ๊ณผ) ์์ ; pre-commit ์๋ฌธ๊ณผ ๋ผ์ฐํ
์ค๋
์ท ๋ฌธ ์ ์ค; DSH ํ๋ฌ๊ทธ์ธ์ 0.2.1-rc.2 ๋์ผ ์คํ + alpha.1 ๋จ์ ์ปค๋ฒ. |
|
|
810
|
+
| **v2.9.5** | **ํ์จ ์ ์ฉ ๋๋ฉ์ธ + 2์ธต ์ค๋ณต ์ ๊ฑฐ + ์์ ์ค์ง๋จ ์์ + ์ฒดํฌ์์๋ณ daemon ๊ฒฉ๋ฆฌ**: ์ ๋๋ฉ์ธ `fx_query`(ํ์จ/์ค์ฌํ์จ์ 675ms๋ก ์ํ์จ+์ผ์ผ ๋ด์ค, ์์ ์ ์ ๋ฐฑ๊ณผ์ฌ์ ); ์ค๋ณต ์ ๊ฑฐ์ ์ฌ์ดํธ suffix ์ ๊ทํ(์ ๋ก ์์กด) + rapidfuzz ํผ์ง ๊ฒ์ฌ(์ ํ, `ARGO_DEDUP_FUZZY`, ํด๋ฐฑ)๋ฅผ ์ถ๊ฐ; ๊ตฌ๋ถ์ ร0.6 ์ค์ง๋จ์ ์์ (๊ณต์ ๋ฌธ์๊ฐ ์์ด๋ก); ๋ถ์ ์ ใไธๆฏXใ ์ถ๊ฐ; daemon ์ด๋ฆ์ ์ฒดํฌ์์๋ณ๋ก ๊ฒฉ๋ฆฌ. |
|
|
811
|
+
| **v2.9.4** | **๋ช
์์ ์์ง ๋๋ฉ์ธ ์์ฑ + ๋ณต๊ตฌ ์ฒด์ธ ์ฐจ๋จ๊ธฐ + ๊ฒ์ดํธ ๋๊ธฐํ**: `--engine X` ์ `match_domains` ๋ณด์ถฉ์ผ๋ก ์บ์ TTL ์ผ๊ด ์ผ๋ฐํ ์์ ; ๋จ์ผ ์์ง์ ๋์ฒด ์์ผ๋ฉด L1 ๋น ์คํ ๊ฑด๋๋; `config.yaml` ๋๋ฉ์ธ ๊ท์น ๊ฐํ; `mcp_launch.sh` ํ๊ฒฝ ๋ณ์ ๋ด๋ณด๋ด๊ธฐ ์ถ์; ๋ก์ปฌ ๊ฒ์ ์์ง ๋ ์ง์คํธ๋ฆฌ ๊ณ์ธต ํ์ ๋ฐ ํ์ง ํฅ์; ๊ฒ์ดํธ ๋๊ธฐํ. |
|
|
812
|
+
| **v2.9.3** | **X ๊ฒ์๋ฌผ ์์ ํจํค์ง + ๋ธ๋ผ์ฐ์ ๋ก๊ทธ์ธ ์ํ ๋ ์ธ + ๋ก์ปฌ ์ฒด์ธ ํ์งยท์๋ ์์ **: ์ ๊ท `argo tweet`(์ ๋ฌธ/์ค๋ ๋/์ธ์ฉ/๋ฆฌํฌ์คํธ/๋ฏธ๋์ด๋ฅผ ํ์์ ๋ฐ๋ผ ํจํค์ง, `--out` 4ํ์ผ ์ธํธ); ์ ๊ท `argo auth` ๋ธ๋ผ์ฐ์ ๋ก๊ทธ์ธ ์ํ ๋ ์ธ(์ฌ์ดํธ๋ณ ์๊ตฌ ํ๋กํ, ์ฟ ํค๋ Chrome์ ์ํธํ ์ ์ฅ์์๋ง, ๋ก๊ทธ์ธ ์ํ ๊ฒฐ๊ณผ๋ ๊ณต์ ์บ์ ์ ์ธ); ์ค๊ตญ์ด ๋ก์ปฌ ์ฒด์ธ์ด Sogou/Baidu ๋ฆฌ๋ค์ด๋ ํธ ๊ป์ง์ ์ธ์
์์ด ํด์(๋ณด์กด 1โ5) + ์ปจ์ผ์์ค ์ ์ ์ ์ํ(์์ด ๋์คํจ์น ~3.0sโ2.2-2.5s); js-run์ fetch ์ฒด์ธ ์ฒซ ๋ ์ธ์ผ๋ก ์ ์ (Chrome ํ๊ฑฐํ๋ฆฐํธ ์ฌ์๋); ์ฒ ๋ ํ์นยท๊ฒฝ์ ์กฐํ(ํผ๋ 10โ1์ ์ค์ ๋๋ก 10โ10์ผ๋ก ์์ ); `--academic-deep` ์ํ๋๊ทธ ํ์ ์ฌ์ธต; 43๊ฐ ์์ง ๋๋ฉ์ธ ๋ฐฐ์ + ํค ๋ถํ์ ๊ธ์ต ์์ค 3๊ฑด + ์ธํ
ํธ ๊ฒ์ดํธ ์ค์ ๊ธ ์์ ; ๋ก์ปฌ ์ด๋ฏธ์ง ํ๊ฑฐํ๋ฆฐํธ 158msโ3.9ms; ์์ด์ ํธ ์๋น ์ฌ๋ฆผํ(MCP ๊ณ ์ ์ค๋ฒํค๋ โ32%). |
|
|
813
|
+
| **v2.9.2** | **DSH 0.2.1-alpha.1 ํธํ ๊ฒ์ฆ + ๋ผ์ฐํ
/๊ฐ๋ ์์ ์ผ๊ด + js-run ์๋ธ ์คํฌ**: DSH ํ๋ฌ๊ทธ์ธ ์ผํํ๋ฅผ ์ต์ DSH 0.2.1-alpha.1์์ ์ค์ธก ๊ฒ์ฆ; `argo mcp inject`์ WorkBuddy๋ฅผ ์ถ๊ฐํด 7๋ฒ์งธ ํธ์คํธ๊น์ง ์ง์; TF-IDF ์ฝ์ฆ๊ฑฐ ๋ณด์กฐ ์์ค ๊ฐ๋ฑ, ์ฃฝ์ ์์ค ํ๋ก์ด + ์ํท ๋ธ๋ ์ด์ปค ์ฌ๋กฏ ์ฌ์ถฉ์ , ์ฟผํฐ ์์ง ์์ง ๋ผ์ฐํ
๊ฒฉ๋ฆฌ, serp_guard ์ฐ์ ์คํ ์์ ; engines/evidence ์ง์ฐ ์ํฌํธ(import๋ โ50%)์ ์ด๋๋ฏธ์
์กด์ฌ ์งํฉ ๋จ๋ฝ(open 261โ99); MCP ์ง์
ยท์์น ์ธ์ ๊ฐ๋ ์์ต; js-run ์๋ธ ์คํฌ ์ ๊ท(๋ธ๋ผ์ฐ์ ์์ด ์น JS, P50 โ1ms). |
|
|
814
|
+
| **v2.9.1** | **์ฝํ
์ธ ํ์ง ์ต์ ํ + ์ฝํ
์ธ ํ ๋์ + ์ต์ ๋ฒ์ ์ ์**: ์ฝํ
์ธ ํ์ง ํ๊ฐ๋ฅผ ์ต์ ํํ์ฌ ์ ํ์ง ๋๋ ์์ฑ ์ฝํ
์ธ ์๋ณยทํํฐ๋ง ๋ฅ๋ ฅ ํฅ์; ์ต์ ๋ฒ์ ์ ์ ์ํด ์ํํ ํ์
๋ณด์ฅ; ๋ก์ปฌ ๊ฒ์์ ์์ฒด ์ค์น ํธ๋ฆฌ ๊ฐ๋๋ฅผ ์ถ๊ฐํด ๊ฒฐ๊ณผ๊ฐ ์์ฒด ์์ค๋ก ์ค์ผ๋์ง ์๋๋ก ๋ฐฉ์ง. |
|
|
815
|
+
| **v2.9.0** | **์์ค ์ต์ ํ + ํ๋ฌ๊ทธ์ธ๊ณผ CLI ๋๋ฑ + ๋ค๊ตญ์ด ์์ ์ธ์ด**: ์์ค 237โ253(๋ฌด์ค์ 198โ219). 14๊ฐ ์์ ์ธ์ด ๋ด์ค ์์ค, CORE ์ ๋ฌธ ์์ค, TinEye ์ญ๋ฐฉํฅ ์ด๋ฏธ์ง ๊ฒ์, Bing RSS ๋ฑ ์ถ๊ฐ; ๋ฐ์ด๋ยท์๊ณ ์ฐ ๋ถํ; CLI 18๊ฐ ๋ช
๋ น๊ณผ MCP 19๊ฐ ๋๊ตฌ ์ผ๋์ผ ๋์; ์ํฌํธ ์ฒด์ธ โ79%, ์ฌ๋ญํน 33msโ1.5ms, ์บ์ ์ ์ค๋ฅ ๋ํญ ํฅ์; ์ฟผํฐ ์ฐ๊ธฐ ๊ฒฝ๋ก ํ๋ก์ธ์ค ๊ฐ ์์ ์์ ; `argo stats` ๋ก์ปฌ ์ฌ์ฉ ๋ก๊ทธ ์ ๊ท ์ถ๊ฐ. ์์ธํ๋ [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/RELEASE_NOTES_v2.9.0.md) |
|
|
816
|
+
| **v2.8.9** | **์ถ๋ ฅ ๊ฒฝ๋ํ + ๋ ๋น ๋ฅด๊ณ ํ๋ถํ ๊ฒ์ + ํด์ธ ๋ฏธ๋์ด ๋ฐ ํฉํธ์ฒดํฌ ์์ค 5๊ฐ**: ๊ธฐ๋ณธ ์ถ๋ ฅ 15.5KBโ5.2KB(โ66%, `--envelope`๋ก ์ ์ฒด ๋ดํฌ ๋ณต์); ๋ผ์ฐํ
๊ฒฐ์ ์บ์๋ก ๋ฐ๋ณต ์ฟผ๋ฆฌ โ30%; ๋๋ฆฐ ๋คํธ์ํฌ ๋์คํจ์น โ36%(์ง๋ ฌ ๋๋ฉ์ธ์ 0.8์ด ์ด๊ณผ ์ ์๋ ํค์ง); ์์ง ์ฒด์ธ 5์ฐจ ๊ฐ์ (๋ฆฌ์ฝ +35%, ์ง์ฐ โ30%, ๋กฑํ
์ผ P90 โ8%) + ๋ณธ๋ฌธ ๊ตฌ์กฐ ๋ณต์(์ ๋ชฉ/๋ชฉ๋ก/ํ ๋ณด์กด 0/6โ6/6) + CJK ํ์ง ์ ์ ์์ ; ํค ๋ถํ์ ์ ๊ท ์์ค Guardian RSS / France 24 / DW / FactCheck.org / Full Fact(232โ237, ํค ๋ถํ์ 194โ198, ๋๋ฉ์ธ 90โ92), ์ฃฝ์ gdelt ํ์ง; ์๊ธฐ์ผ๊ด์ฑ ๊ฒฐํจ 6๊ณณ ์์ + 6๋จ ํผ๋ ๊ท์ + ์คํ๋ผ์ธ ์ฌ์ ๋๊ตฌ(`scripts/replay_eval.py`) + ์ ์ฑ
ํ ๋ฐฐํฌ ๊ฒ์ดํธ ๋ฐ ์๋๋ฆฌ์ค ์๊ณ๊ฐ ๊ณ์ฝ. ์์ธํ๋ [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/RELEASE_NOTES_v2.8.9.md) |
|
|
817
|
+
| **v2.8.8** | **์ค์ฌ์ฉ์ ์ ๊ณ ์์ (#12 ํค ๋ณ์นญ ๋ฌด์ ์คํจ, #13 ํ๋ก์ ๋ฏธ์ง์ ์์ง) + ์ ๋ฉด ์๋ ๊ฐ์ + ์์ค 218 โ 232**: ์ถ๊ตฌ ๋์คํจ์น ํต์ผ(`ARGO_PROXY` / ๋๋ฉ์ธ๋ณ ๊ท์น / ํ์ค ํ๋ก์ ๋ณ์, `NO_PROXY` ์กด์ค); ํค ์ฝ๊ธฐ 16๊ณณ์ ๋ณ์นญ ์ฒด์ธ์ผ๋ก ํต์ผ; ๋ช
๋ น์ด ์ฝ๋ ์คํํธ 2.1sโ0.55s, ์ค์ ์บ์ 50โ82msโ16โ18ms, QPP ํํ๋ ๊ฒ์ดํธ ์กฐ๊ธฐ ์ค๋จ, `--list-engines --detail` 152KBโ51KB ์ถ์; ์ง๋ต `argo answer`์ ์น ๊ด์ฐฐ `argo watch` ์ถ๊ฐ, ํค ๋ถํ์ ์์ค 14๊ฐ(์ค๊ตญ ํธ๋ ๋ยท๋ผ์ดํ์คํ์ผ / ๋ณด์ ์ทจ์ฝ์ / ์คํ ์ก์ธ์ค ํ์ / ์คํฌ ๋๋ ํฐ๋ฆฌ / ์์ด์ ํธ ๊ฒ์), 69๊ฐ ์์ง ์ฌ๋ถ๋ฅ(`web_general` ํด๋ฐฑ ๋น์ค 41%โ20%, security ๋๋ฉ์ธ ์ ์ค); 3๊ฐ OS ๊ด๋ก ๊ฒฝ๋ก(`argo paths`) + Python 3.9 + ์ ๊ณ ๋์์ฑ์ผ๋ก ํ์์์ ์คํจํ; search.py ๋ชจ๋ ๋ถํ 3351โ2526ํ, 22๊ฐ ์์ง ๊ด๋ จ์ฑ ๊ณจ๋ , ์ ์ ๊ฒฐํจยท์ถ๋ ฅ ๊ณ์ฝ ๊ฒ์ดํธ. ์์ธํ๋ [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/RELEASE_NOTES_v2.8.8.md) |
|
|
818
|
+
| **v2.8.7** | **218 ์์ค / 89 ๋๋ฉ์ธ + ๋ณธ๋ฌธ ์ง์ถ 3์ฑ๋ + ๋ผ์ฐํ
๋ฐํ ๊ท์จ + macro ์ ๋ก ๊ฒฐ๊ณผ ์์ **: ๋ฐฐ์น 7/8/9 ๋์ 50๊ฐ ์ ๊ท ์์ค(๋ฒ๋ น, ํ์ค, ๋ณด์ ์ธํ
, ํ์ , ๋ด์ค, ์ํฐ, ์๋์งยท๊ตํต, ๋ฒ๋ฌดยทํ์ ), stackexchangeยทdoi ์์ง; ์์ง ์ฒด์ธ 0๋จ๊ณ์ llms.txt์ `.md` ์ง์ถ ํ๋ก๋ธ, r.jina.ai ๋ฆฌ๋ ๋จ๊ณ ์ถ๊ฐ; `--engine` ์ฝค๋ง ๋ค์ค ์ง์ ์์ , tfidf ๊ธฐ์ค๊ณผ route_reason, ๋ถ์ ๋ผ์ฐํ
์ ์ด ๋งคํธ๋ฆญ์ค, ๋ญํน ๊ณจ๋ ๊ณผ ์ตํฉ ์ด๋ ์๊ฑฐ ๊ฒ์ดํธ; ์ค๊ตญ ๊ฑฐ์ ์กฐํ๋ ๊ตญ๊ฐํต๊ณ๊ตญ ์ฐ์ , ์ ์ญ ์ ๋ก ๊ฒฐ๊ณผ ๋ณต๊ตฌ๊ฐ L3 ๊ฐ๋ฐฉ, ๊ตฌ์กฐ ์์ง ์ ์ง ์ง๊ณ. ์์ธํ๋ [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/RELEASE_NOTES_v2.8.7.md) |
|
|
819
|
+
| **v2.8.6** | **hedged ๋ ์ด์ฑ + ์งํ 3์์ค ๋ถ๋ด + ์ ์ธ์ ์ธ์ด ๋์คํจ์น + ๋๋ฌ์ฑ ๊ฒ์ดํธ + ํ์ ๊ฒ์ ํ๋กํ ์ฝ**: ์ ๋ ์์ง ์ ์ ์ฐฝ ๋ ์ด์ฑ(๋น ๋ฅธ ์์ง์ ํธ์ถ 1ํ), zhihu ์ ์ฒด ๊ฒ์/๊ฐ์ธ ๋ฐ์ดํฐ ์ฐ๋๊ณผ ์์ฌ ๋ฐฉ์ง, ํ์ ์ฟผ๋ฆฌ ์ธ์ดยทํ์ ๋์คํจ์น(์์ด ์์ค์ 17๊ฐ ํ์ ์์ค๋ฅผ ์ฐ๊ตฌ ์์ง์ ์ฐ๊ฒฐ), ์์ง ์ธ์ด ๋ฉํ๋ฐ์ดํฐ์ ๋๋ฌ์ฑ ๊ฒ์ดํธ(์ฃฝ์ ์์ค ๋
ธ์ถ), geo ๊ผฌ๋ฆฌ โ56%, ํ์ ๊ฒ์ ์ฟผ๋ฆฌ ๊ตฌ์ฑ ํ๋กํ ์ฝ. ์์ธํ๋ [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/RELEASE_NOTES_v2.8.6.md) |
|
|
820
|
+
| **v2.8.5** | **DSH ํ๋ฌ๊ทธ์ธ ๋๊ตฌ ๋ค์ดํฐ๋ธํ + MCP ๊ธฐ๋ณธ ๋ + Windows ํธํ + ์ฟผํฐ ์๊ฐ ์น์ + ํ์น deadline**: `argo_search`/`argo_fetch`๊ฐ 1๊ธ ๋ค์ดํฐ๋ธ ๋๊ตฌ๋ก ๊ธฐ๋ณธ ์ฌ์ฉ ๊ฐ๋ฅ(CLI ๋จ๋ฐ์ MCP์ ๋์ผ ์์งยท๊ฐ๋, ์คํค๋ง ๋จ์ผ ์ง์ + ๋๋ฆฌํํธ ๊ฒ์ดํธ); 3๊ฐ์ง ํํ ์ ์, MCP๋ ์์ ์ ๋ง์ดํธ ๊ธฐ๋ณธ ๋; Windows ํธํ(temp ๊ฒฝ๋ก / GBK / ์ธํฐํ๋ฆฌํฐ ํด์ / junction / `install.ps1`, PR #11); ์ฟผํฐ ์๊ฐ ์น์ ๋ฃจํ(200 ์
๋ฌด ์ค๋ฅ ๋ดํฌ ๊ฐ์ง + ๋ผ์ฐํธ ์ ์ธ + ์ฃผ๊ธฐ ์๊ฐ ์น์ ); ํ์น ์ ์ญ deadline(`ARGO_FETCH_DEADLINE_S`) + tinyfish ๋ ๋๋ง + `.md` ๋ณํ ํ๋ก๋ธ; ํซ๋ฆฌ๋ก๋ env์ ์ํ ๋๋ ํฐ๋ฆฌ ๋จ์ผ ์ง์. [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/RELEASE_NOTES_v2.8.5.md) |
|
|
821
|
+
| **v2.8.4** | **๋ก์ปฌ ๋ฐ์ดํฐ ์ตํฉ + ๋ค์ค ํด๋ผ์ด์ธํธ MCP ์ฃผ์
+ ๊ตฌ์กฐํ ๊ฒ์ + Keenable**: ์ฐ๊ตฌ L1 ๋ก์ปฌ 1์ฐจ ๋ฐ์ดํฐ(`file_inputs` + `recompute` + `local_sources`); `argo mcp inject`(์ ์ธ์ `mcp/clients.yaml`); ์ฟผ๋ฆฌ ์ ๊ทํ / ๋ณ์ฒด / ๋ณต์ก๋ ๊ฒ์ดํธ / ์์
๋ฌธ๋ฒ ์ฐ์ / TF-IDF ์์ / `--include-local`; Keenable(๋ฌด๋ฃ ์ฒดํ); ๋ณด์ ๊ฐํ. [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/RELEASE_NOTES_v2.8.4.md) |
|
|
822
|
+
| **v2.8.3** | **๋ค๊ตญ์ด ๋ผ์ฐํ
์์ + ํ๋ก์ธ์ค ๋ด anysearch + weighted RRF**: ja/ko๊ฐ ๋์ ์ธ์ด๋ฅผ ๋ฐํ; ๋
/๋ถ/์/์ด anysearch; weakest-link ๋ค์ด์จ์ดํธ(๋
ผ๋ฌธ 2508.01405). [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/RELEASE_NOTES_v2.8.3.md) |
|
|
823
|
+
| **v2.8.2** | **Windows + ์ฆ๊ฑฐ ์๋ฏธ ํต์ผ**: npm `os` ์ ํ ์ ๊ฑฐ; GBK ํฌ๋์ ๋๋น UTF-8; ๋ฉ์ธ ํจํค์ง `dsh.bundle`; `wide_research` ํ์ง ๊ฒ์ดํธ. [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/RELEASE_NOTES_v2.8.2.md) |
|
|
824
|
+
| **v2.8.0** | **์ฆ๊ฑฐ ๋ฃจํ + ๊ตฌ์ง v3 + ๋ ์จ ์์์ค**: `fetch_required` / `--verify`; `argo job`; wttr.in + Open-Meteo; Parallel / You.com. [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/RELEASE_NOTES_v2.8.0.md) |
|
|
825
|
+
| **v2.7.3** | ์์ง ์ธต HttpClient; TF-IDF๋ก ์์ง 25๊ฐ ํ์ฑํ; 70 ๋๋ฉ์ธ TTL; ์์ง ์ค์. [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/RELEASE_NOTES_v2.7.3.md) |
|
|
826
|
+
| **v2.7.2** | ๋ก๊ทธ์ธ ์ํ ์ ๋ฌธ ๊ฒ์(ego-search, ๊ธฐ๋ณธ ๊บผ์ง); ํ์ผ ์ฟผ๋ฆฌ๊ฐ ์ค๊ตญ์ด ์์ง์ ์์ด์ง ์์. [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/RELEASE_NOTES_v2.7.2.md) |
|
|
827
|
+
| **v2.7.1** | SSRF ๊ฐํ + ๋ผ์ฐํ
ํฌ์ค ์๋ฏธ ์์ . [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/RELEASE_NOTES_v2.7.1.md) |
|
|
828
|
+
| **v2.7.0** | **์์ง ๊ตฌ์กฐํ ๋ชจ๋ฌ ์นด๋**: ๋ด์ฅ `bocha` / `bocha_ai` ๋ค์ดํฐ๋ธ ์์ง, `modal_card` ๋๋ฉ์ธ์์ ๊ธฐ์ฐจํ / ์ ๊ฐ / ๊ท๊ธ์ / ๋ง๋
๋ ฅ / ๋ณ์๋ฆฌ / ํด๋ํฐ / ์๋์ฐจ / ์ง๋ฃ ์์ฝ ๋ฑ ์ค์๊ฐ ์นด๋ ํต์ผ ์ธ์; `bocha` ์น ํ์ฑ ๊ฒฐํจ ์์ . ์์ธํ๋ [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/RELEASE_NOTES_v2.7.0.md) |
|
|
829
|
+
| **v2.6.2** | ๋
๋ฆฝ ๊ฐ์ ๋ผ์ธ ํตํฉ: ๋คํธ์ํฌ ํ๊ฒฝ ์ธ์ง / ๊ฐ์ค RRF + ์๋งจํฑ ์บ์ / ์ ์ํ ์์ง ๋นํ์ฑํ / ์ฝํ
์ธ ์์ + ์ฟผ๋ฆฌ ๋ณํ / 3๋ ์์ง ์์ง / ์ผยทํ ๋๋ฉ์ธ ๋ผ์ฐํ
๋ณด์; v2.6.1 ๋ผ์ฐํ
์์ ํฌํจ. ์์ธํ๋ [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/RELEASE_NOTES_v2.6.2.md) |
|
|
830
|
+
| **v2.6.1** | v2.6.0 ์์ ํ: ๋ผ์ฐํ
์ฐ์ ํผํด ์์ (`capital of`์ด fact_check๋ฅผ ๊ฐ๋ก์ฑ์ง ์์); ๋ฒ์ ๋๊ธฐํ. ์์ธํ๋ [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/RELEASE_NOTES_v2.6.1.md) |
|
|
831
|
+
| **v2.6.0** | **๋ค๊ตญ์ด ๊ฒ์** (detect / engine params / cross-lang fallback); filmยทsportsยทgeoยทorgยทmedia ์์ง; recovery ์ค์ผ ๋ฐฉ์ง; ๋ฅ๋ ฅ ํจ๋ฐ๋ฆฌ + ๋งคํธ๋ฆญ์ค ํ๊ท; ~120+ ์์ค. [๋ฆด๋ฆฌ์ค ๋
ธํธ](docs/RELEASE_NOTES_v2.6.0.md) |
|
|
832
|
+
| **v2.5.1** | ๊ธ์ต/๋งคํฌ๋ก/ํํ ๋ตํ ์์ค ๊ฐํ; ์์ง ํฐ์ด + combo ์์ฐ; [v2.5.1 notes](docs/RELEASE_NOTES_v2.5.1.md) |
|
|
833
|
+
| **v2.5.0** | ์ค์น ์คํฌ๋ฆฝํธ + npx; rewrite์ ๋ผ์ฐํ
๋ถ๋ฆฌ; hot-path ์บ์; compact MCP |
|
|
834
|
+
| **v2.4.0** | ์ ์ ์ ๋ผ์ฐํธ ํด๋ฐฑ + ์์
์ค๋ผ์ฐํธ ํํฐ; ์บ์ depth / soft hits; breakers & negative cache; `engine_outcomes` |
|
|
835
|
+
| **v2.2โv2.3** | 2๋จ๊ณ ์ฆ๊ฑฐ, ์ค๊ตญ ์์ค ํ, content_signals, fetch ์คํ, ์์ง ํ์ฅ |
|
|
836
|
+
| **v2.1** | ์์
์์ง ๋ ์ด์ด (๋ฉํฐ ํ๋ซํผ UGC) |
|
|
837
|
+
| **v1.x** | ํตํฉ ์ด๋ฆ Argo; ๋ค์ค ์์ง ๋ผ์ฐํ
+ ์ด์ค ์บ์ |
|
|
838
|
+
|
|
839
|
+
---
|
|
840
|
+
|
|
841
|
+
## ๊ธฐ์ฌ
|
|
842
|
+
|
|
843
|
+
Issue์ PR ํ์ํฉ๋๋ค. ๋ผ์ฐํ
์ด๋ ์ฆ๊ฑฐ ๋ก์ง์ ๋ฐ๊ฟ ๋ ํ
์คํธ๋ฅผ ์ถ๊ฐํด ์ฃผ์ธ์:
|
|
844
|
+
|
|
845
|
+
```bash
|
|
846
|
+
python3 -m pytest tests/test_unit.py tests/test_multilingual.py -q
|
|
847
|
+
python3 scripts/regression_p0p1.py --offline
|
|
848
|
+
python3 scripts/matrix_search_eval.py --offline
|
|
849
|
+
python3 scripts/ab_eval_p0p1.py # optional, online
|
|
850
|
+
```
|
|
851
|
+
|
|
852
|
+
์ปค๋ฐ ์ : ์ค์ API ํค, ๋ณธ๊ธฐ ์ ๋ ๊ฒฝ๋ก, ๊ณ์ ์ฟ ํค ์์. ๋ก์ปฌ Skill ๊ฒฝ๋ก๋ `installs.local.yaml`(gitignored)์.
|
|
853
|
+
|
|
854
|
+
## License
|
|
855
|
+
|
|
856
|
+
Apache License 2.0 ยฉ 2026 [taxueseek](https://github.com/taxueseek)
|
|
857
|
+
|
|
858
|
+
<p align="center">
|
|
859
|
+
<a href="https://github.com/oil-oil/beautify-github-readme"><img src="assets/readme/made-with-beautify.svg" width="300" alt="README made with beautify-github-readme"></a>
|
|
860
|
+
</p>
|
|
861
|
+
|
|
862
|
+
---
|
|
863
|
+
|
|
864
|
+
> ์ข์ ๊ฒ์์ ๋ ๋ง์ด ๋ณด๋ ๊ฒ์ด ์๋๋ผ, ์์ ์๊ฒ ๊ฒฐ๋ก ๋ด๋ฆฌ๊ณ , ์์ง ๊ฒฐ๋ก ๋ด๋ฆฌ๋ฉด ์ ๋ ๋๋ฅผ ์๋ ๊ฒ์
๋๋ค.
|