argo-search 2.9.7 → 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/README.en.md +58 -145
- package/README.es.md +58 -145
- package/README.ja.md +64 -151
- package/README.ko.md +63 -150
- package/README.md +65 -154
- package/SKILL.md +3 -3
- package/assets/readme/hero.svg +2 -2
- package/backends/domain_profiles.json +48 -0
- package/backends/engine_registry.yaml +118 -4
- package/backends/quota_profiles.json +92 -12
- package/backends/source_types_cn.json +27 -1
- package/bin/argo +74 -5
- package/bin/argo.js +33 -2
- package/config.yaml +219 -60
- package/docs/ENGINE_CATALOG.md +50 -39
- package/docs/MCP_SETUP.md +3 -1
- package/docs/RELEASE_NOTES_v2.9.8.md +73 -0
- package/engines/specs/cfets.yaml +41 -0
- package/engines/specs/defillama.yaml +38 -0
- package/engines/specs/firecrawl.yaml +1 -1
- package/engines/specs/fxtwitter.yaml +5 -0
- package/engines/specs/gleif.yaml +55 -0
- package/engines/specs/hkex.yaml +40 -0
- package/engines/specs/keenable_free.yaml +36 -0
- package/engines/specs/shfe.yaml +39 -0
- package/engines/specs/stackexchange.yaml +2 -2
- package/engines/specs/tavily_free.yaml +56 -0
- package/engines/specs/yuanbao.yaml +93 -0
- package/mcp/clients.yaml +32 -0
- package/package.json +6 -2
- package/packages/dsh-plugin/README.md +23 -5
- package/packages/dsh-plugin/dsh/client.js +304 -15
- package/packages/dsh-plugin/dsh/diagnostics.js +54 -0
- package/packages/dsh-plugin/dsh/index.js +112 -1875
- package/packages/dsh-plugin/dsh/native-tools.mjs +7 -1
- 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 +2 -2
- package/packages/dsh-plugin/scripts/sync-local.sh +70 -0
- package/packages/dsh-plugin/test/client.test.js +175 -1
- package/packages/dsh-plugin/test/diagnostics.test.js +28 -0
- package/packages/dsh-plugin/test/index.test.js +44 -0
- package/scripts/adaptive.py +24 -1
- package/scripts/article_meta.py +131 -0
- package/scripts/budget.py +247 -0
- package/scripts/budget_cli.py +93 -0
- package/scripts/build_release_assets.sh +65 -0
- package/scripts/cache.py +60 -72
- package/scripts/ci_drift_gate.py +90 -0
- package/scripts/content_boundary.py +46 -0
- package/scripts/content_signals.py +26 -5
- package/scripts/cross_lingual_trace.py +293 -0
- package/scripts/dispatch_result.py +98 -0
- package/scripts/engine_dispatch.py +49 -86
- package/scripts/engine_env.py +5 -0
- package/scripts/engine_families.py +6 -0
- package/scripts/engine_policy.py +7 -7
- package/scripts/engines.py +21 -0
- package/scripts/engines_base.py +3 -3
- package/scripts/engines_builders.py +12 -0
- package/scripts/engines_builders_batch10.py +48 -3
- package/scripts/engines_builders_batch14.py +656 -0
- package/scripts/engines_builders_batch15.py +249 -0
- package/scripts/engines_builders_keyless.py +111 -0
- package/scripts/engines_builders_tech.py +0 -1
- package/scripts/evidence.py +31 -3
- package/scripts/evidence_loop.py +54 -22
- package/scripts/fetch_v3.py +25 -0
- package/scripts/gen_routing_snapshot.py +11 -0
- package/scripts/install.ps1 +18 -0
- package/scripts/install.sh +16 -1
- package/scripts/job.py +3 -3
- package/scripts/local_seek.py +41 -5
- package/scripts/macro_countries.py +15 -0
- package/scripts/matrix_search_eval.py +82 -0
- package/scripts/mcp_compact.py +234 -0
- package/scripts/mcp_handlers.py +60 -642
- package/scripts/mcp_launch.sh +10 -8
- package/scripts/mcp_local.py +241 -0
- package/scripts/mcp_server.py +19 -14
- package/scripts/mcp_setup.py +33 -9
- package/scripts/mcp_tools.py +1 -0
- package/scripts/mcp_transport.py +1 -1
- package/scripts/mcp_warm.py +127 -0
- package/scripts/output_transparency.py +200 -0
- package/scripts/paid_policy.py +98 -0
- package/scripts/quota.py +158 -13
- package/scripts/recovery_runner.py +150 -0
- package/scripts/replay_eval.py +18 -0
- package/scripts/research.py +37 -21
- package/scripts/research_expand.py +24 -1
- package/scripts/retry_policy.py +76 -0
- package/scripts/route.py +6 -6
- package/scripts/route_cache.py +18 -0
- package/scripts/route_combo.py +7 -0
- package/scripts/route_domains.py +32 -19
- package/scripts/search.py +15 -27
- package/scripts/search_attribution.py +100 -3
- package/scripts/search_cli.py +24 -11
- package/scripts/search_entry.py +7 -1
- package/scripts/search_output.py +99 -15
- package/scripts/search_pipeline.py +42 -193
- package/scripts/search_types.py +107 -9
- package/scripts/semantic_evidence.py +179 -3
- package/scripts/serp_guard.py +115 -7
- package/scripts/serp_kill_log.py +25 -2
- package/scripts/stats_cli.py +13 -1
- package/scripts/wide_research.py +45 -0
- package/scripts/zhihu_quota.py +139 -0
- package/sub-skills/local-search/bm25.py +27 -3
- package/sub-skills/local-search/cli_runner.py +331 -0
- package/sub-skills/local-search/parsers.py +328 -0
- package/sub-skills/local-search/search_v3.py +31 -674
- package/sub-skills/local-seek/scripts/seek_rank.py +7 -3
- package/assets/readme/settings-keys.png +0 -0
- package/assets/readme/settings-tools.png +0 -0
- package/scripts/image_vision/vision_probe +0 -0
- package/scripts/local_engines.py +0 -321
- package/sub-skills/ego-search/references/browser-runtime.md +0 -43
- package/sub-skills/ego-search/references/install.md +0 -67
- package/sub-skills/ego-search/references/original-ego-upgrade.md +0 -51
- package/sub-skills/ego-search/tests/test_query_normalize.py +0 -68
- package/sub-skills/js-run/tests/fixtures/challenge_like.js +0 -27
- package/sub-skills/js-run/tests/test_jsrun.py +0 -165
- package/sub-skills/local-seek/references/auto-behaviors.md +0 -24
- package/sub-skills/local-seek/references/fd-mdfind-recipes.md +0 -62
- package/sub-skills/local-seek/references/git-integration.md +0 -54
- package/sub-skills/local-seek/references/remote-handoff.md +0 -46
- package/sub-skills/local-seek/references/rg-recipes.md +0 -96
- package/sub-skills/local-seek/references/strategies.md +0 -52
- package/sub-skills/local-seek/references/structural-search.md +0 -59
- package/sub-skills/local-seek/tests/test_content_rank.py +0 -222
- package/sub-skills/local-seek/tests/test_determinism_20261006.py +0 -145
- package/sub-skills/local-seek/tests/test_noise_tier.py +0 -101
- package/sub-skills/local-seek/tests/test_pcre2_probe.py +0 -136
- package/sub-skills/local-seek/tests/test_rank_pinyin.py +0 -77
- package/sub-skills/local-seek/tests/test_regression_20261003.py +0 -169
- package/sub-skills/local-seek/tests/test_regression_20261006.py +0 -146
- package/sub-skills/local-seek/tests/test_seek_degradation.py +0 -111
- package/sub-skills/local-seek/tests/test_seek_fts.py +0 -313
package/README.en.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="assets/readme/hero.svg" width="100%" alt="Argo: search and deep research for agents —
|
|
2
|
+
<img src="assets/readme/hero.svg" width="100%" alt="Argo: search and deep research for agents — 272 search sources, routing by domain and language, absorbable evidence output">
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
<p align="center">
|
|
25
25
|
<img alt="license" src="https://img.shields.io/badge/license-Apache_2.0-blue">
|
|
26
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.
|
|
28
|
-
<img alt="engines" src="https://img.shields.io/badge/engines-
|
|
27
|
+
<img alt="version" src="https://img.shields.io/badge/version-2.9.8-informational">
|
|
28
|
+
<img alt="engines" src="https://img.shields.io/badge/engines-272-orange">
|
|
29
29
|
<img alt="mcp" src="https://img.shields.io/badge/MCP-19%20tools-purple">
|
|
30
30
|
</p>
|
|
31
31
|
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
|
|
36
36
|
## What it is
|
|
37
37
|
|
|
38
|
-
**Argo is a search and deep-research tool that lives inside your agent, and can also pull information from the relevant web pages. It connects to
|
|
38
|
+
**Argo is a search and deep-research tool that lives inside your agent, and can also pull information from the relevant web pages. It connects to 272 search sources across 97 business domains, and also covers basic local file search. Among open-source search projects, its search capability is exceptionally strong.**
|
|
39
39
|
|
|
40
40
|
API keys are optional and improve quality (keyed sources are usually better; unkeyed ones are skipped automatically), with free engines and local engines as an automatic fallback. It covers 18 languages including Chinese, English, Japanese and Korean, and supports vertical scenarios such as finance, academia, film, sports, code and macro data.
|
|
41
41
|
|
|
@@ -81,11 +81,15 @@ For an everyday question use `argo_search`; for single-agent forensics use `argo
|
|
|
81
81
|
The plugin ships a browser-side settings page with two entries: the settings popup (`Cmd+,`) left-hand menu item "Argo", or Settings > Plugins > Argo (a summary card for the same panel — click to open).
|
|
82
82
|
|
|
83
83
|
<p align="center">
|
|
84
|
-
<img src="assets/readme/settings-tools.
|
|
84
|
+
<img src="assets/readme/settings-tools.webp" width="100%" alt="Argo settings, Tools: 18 native tools to toggle — argo_search / argo_fetch on in the hot path, 16 long-tail tools on demand, with per-call timeout and returned-text cap">
|
|
85
85
|
</p>
|
|
86
86
|
|
|
87
87
|
<p align="center">
|
|
88
|
-
<img src="assets/readme/settings-
|
|
88
|
+
<img src="assets/readme/settings-engines.webp" width="100%" alt="Argo settings, Engines: argo's 28 behaviour switches moved into the panel — cache / TF-IDF rerank / numeric cross-check / MinHash dedup / SERP guard and dedup threshold; unconfigured rows show the default and changes apply immediately">
|
|
89
|
+
</p>
|
|
90
|
+
|
|
91
|
+
<p align="center">
|
|
92
|
+
<img src="assets/readme/settings-keys.webp" width="100%" alt="Argo settings, Keys: DeepSeek official search shows configured · credential store and shares one key with the host's web_search; common engine keys (Tencent Yuanbao / Tavily) can be set, updated or cleared, plaintext never echoed">
|
|
89
93
|
</p>
|
|
90
94
|
|
|
91
95
|
| Section | What it controls |
|
|
@@ -118,7 +122,7 @@ Saving takes effect immediately (all volatile config): the native tool set is re
|
|
|
118
122
|
|
|
119
123
|
## Core strengths
|
|
120
124
|
|
|
121
|
-
**
|
|
125
|
+
**272 sources, 235 keyless and ready out of the box.** Runs without any API key; free and local engines fall back automatically. Keyed sources are usually better, and unkeyed ones are skipped automatically. One install covers every scenario.
|
|
122
126
|
|
|
123
127
|
**Local and web search in one.** This is a capability only Argo has. Local file search is built on the same tools developers use daily, rg and mdfind: code symbols, filenames, document text and file structure. Flip one switch and local hits join the same web search results, labelled with the local file as the source. When you remember writing something six months ago but forget where, this beats digging through folders.
|
|
124
128
|
|
|
@@ -200,10 +204,10 @@ All four forms run the same Python code underneath; CLI and MCP tools map one to
|
|
|
200
204
|
1. **From links to evidence.** Agents need structured material they can rank, verify and fit in context — Argo returns credibility-decomposed JSON, not SERP lists.
|
|
201
205
|
2. **Context is the first cost.** A single page scrape can burn 10k+ tokens; Argo's agent profile is ~3.7KB per call, with field sets and byte budgets pinned by gates.
|
|
202
206
|
3. **Sites now prepare content for AI.** llms.txt and `.md` direct-out are spreading across major doc sites — Argo's fetch chain probes them at level 0, with an r.jina.ai reader fallback.
|
|
203
|
-
4. **The free/open ecosystem is enough.** Government, academic, standards and security open APIs plus keyless engines cover most domains (
|
|
207
|
+
4. **The free/open ecosystem is enough.** Government, academic, standards and security open APIs plus keyless engines cover most domains (235 keyless sources).
|
|
204
208
|
5. **Quality is measurable.** Ranking golden floors, fusion-ablation gates and negative routing controls — "is this version better" is now a number, not a vibe.
|
|
205
209
|
|
|
206
|
-
>
|
|
210
|
+
> All five are already shipped across the v2.9.x line: 272 sources, 97 domains, 235 keyless out of the box. Details in [docs/为什么选择argo.md](docs/为什么选择argo.md).
|
|
207
211
|
|
|
208
212
|
---
|
|
209
213
|
|
|
@@ -273,7 +277,7 @@ Results include `selection`, `absorption`, `credibility_fast`, `evidence_flags`,
|
|
|
273
277
|
|
|
274
278
|
## Quick start
|
|
275
279
|
|
|
276
|
-
Pick any path. **GitHub is the only install source of truth** (`npx github:taxueseek/argo` or `install.sh`); current recommendation **v2.9.
|
|
280
|
+
Pick any path. **GitHub is the only install source of truth** (`npx github:taxueseek/argo` or `install.sh`); current recommendation **v2.9.8**. **Do not `npm install argo-search`** — the npm registry copy is an **unofficial stale v1.0.1** (not this repo, incomplete, not updated). This package sets `private: true` so it is not published to npm by mistake.
|
|
277
281
|
|
|
278
282
|
**Zero-config works**: without API keys, free engines + local `local_*` engines run; keyed engines are skipped when missing (and usually better when present).
|
|
279
283
|
|
|
@@ -414,14 +418,16 @@ python3 scripts/search.py --list-engines
|
|
|
414
418
|
| `deep` | research, surveys | quality first; more engines allowed |
|
|
415
419
|
| `budget` | tight quota | quota control; degrade when exhausted |
|
|
416
420
|
|
|
417
|
-
### Rough capability set (v2.9.
|
|
421
|
+
### Rough capability set (v2.9.8)
|
|
418
422
|
|
|
419
|
-
What Argo does, in one sentence: it sends each question to the right sources by domain and language, ranks what comes back by credibility, and hands the agent material it can sort and verify. Search, fetch, evidence checking and local file search share one pipeline, the 19 MCP tools map one-to-one onto CLI commands, so nothing is missing whichever form you install. A few standalone commands round it out: argo tweet packs an X post, argo auth handles login state, argo job aggregates job listings. The full catalog, with cost, key and status per source, sits in docs/ENGINE_CATALOG.md: **
|
|
423
|
+
What Argo does, in one sentence: it sends each question to the right sources by domain and language, ranks what comes back by credibility, and hands the agent material it can sort and verify. Search, fetch, evidence checking and local file search share one pipeline, the 19 MCP tools map one-to-one onto CLI commands, so nothing is missing whichever form you install. A few standalone commands round it out: argo tweet packs an X post, argo auth handles login state, argo job aggregates job listings. The full catalog, with cost, key and status per source, sits in docs/ENGINE_CATALOG.md: **272 sources (235 usable with no key), 97 domains**.
|
|
420
424
|
|
|
421
425
|
Installed as a DSH plugin, these capabilities become native host tools: the hot-path search and fetch are on by default, the long-tail forensics tools toggle on in the settings page, and argo's own 28 behaviour switches (cache, rerank, dedup, guard, proxy, TTLs and the rest) moved out of environment variables and into the panel. Keys go into the host credential store, are never echoed, and every change takes effect on save.
|
|
422
426
|
|
|
423
427
|
The last few releases each fixed one class of problems.
|
|
424
428
|
|
|
429
|
+
v2.9.8 is a routing-precision and feedback-loop release. The three problems in issue #18 — "latest" being routed into realtime news, people_daily returning its default feed when nothing matches, and local_bing matching only "2026" — were all reproduced and fixed. Replaying real queries along the same lines tightened 16 more classes of false triggers: "snow" inside brand names, "Volcano Engine" inside product names, UI-troubleshooting "icons", "code" inside business/finance field names, and "exchange rate" inside code/library queries. A SERP coverage gate and CJK cross-validation now stop "it returned something" from counting as "it is relevant". Thanks to @wpp666 for the reproduction and diagnosis.
|
|
430
|
+
|
|
425
431
|
v2.9.7 fixed three long-standing ones. When an AI inside a DSH host asked to read a URL, the host used its own fetcher, so short-link redirects and JS challenge pages often failed outright while argo's fetch chain sat unused; this release wires the host's reads through argo, and those pages go from failing to succeeding, with static pages unchanged. The routing candidate pool used to hold 18 explicit-only engines, and if one was ever auto-selected the only paid engine would quietly bill you; the pool is clean now, and using them requires saying so. Every engine success used to take a file lock and rewrite breaker state on disk; healthy engines now cost zero file I/O, and multi-engine accounting commits in one transaction. The license also moved from MIT to Apache-2.0, which sits easier with commercial users.
|
|
426
432
|
|
|
427
433
|
After that the DSH plugin gained another layer: the settings page grew from five sections to six, the new "Engines" section brings argo's behaviour switches into the panel (they used to be env-var only), the keys page now shows whether each key comes from the credential store, the startup environment or `.env`, and tool toggles, timeouts, concurrency and research caps all apply on save. Cancellation now reaches the connection-establishment stage too — when the AI stops mid-flight, an argo subprocess that is still being spawned is killed immediately instead of waiting out its timeout.
|
|
@@ -437,7 +443,7 @@ Per-version detail lives in "Recent updates"; release notes for each version are
|
|
|
437
443
|
|
|
438
444
|
## Engines & routing
|
|
439
445
|
|
|
440
|
-
Config currently has **
|
|
446
|
+
Config currently has **272** sources (**235** usable with no key) and **97** domains (see `config.yaml` and `--list-engines`).
|
|
441
447
|
|
|
442
448
|
### Direct & vertical (excerpt)
|
|
443
449
|
|
|
@@ -451,7 +457,8 @@ Config currently has **264** sources (**227** usable with no key) and **95** dom
|
|
|
451
457
|
| arxiv / semantic_scholar / openalex | academic | mostly free |
|
|
452
458
|
| pubchem / gbif / rfc_editor | chemistry / species / standards | free |
|
|
453
459
|
| github / stackoverflow / pypi / npm | code & packages | depends |
|
|
454
|
-
| byted / bocha / metaso / octen | Chinese web / AI search | API / low cost |
|
|
460
|
+
| byted / bocha / metaso / octen / yuanbao | Chinese web / AI search | API / low cost |
|
|
461
|
+
| hkex / shfe / cfets / defillama / gleif | HKEX announcements / SHFE / RMB central parity / DeFi / legal entity IDs | Free |
|
|
455
462
|
| zhihu / wechat_sogou | Chinese opinion / WeChat | API / free |
|
|
456
463
|
| tavily / felo / exa | international / semantic | paid or quota |
|
|
457
464
|
| twitter / reddit / xiaohongshu / bilibili / weibo | social UGC | free (some need login) |
|
|
@@ -636,126 +643,31 @@ argo/
|
|
|
636
643
|
|
|
637
644
|
## Recent updates
|
|
638
645
|
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
- **Sixth settings section "Engines"**: argo's 28 behaviour switches moved out of environment variables and into the panel (cache / TF-IDF rerank / numeric cross-check / MinHash dedup / SERP guard, Jina / mobile UA / Parallel fetch layer, semantic evidence layer, hedge grace and tail width, engine enable list, proxy, local search roots and read allowlist, warmup / usage log / connection pool / assorted TTLs). Applied via the new volatile config `argoEnv` (one `KEY=VALUE` per line) into the argo subprocess env; names go through the `ARGO_ENV_SPECS` allowlist, and anything outside it fails loudly at apply time so a typo cannot silently do nothing. Switch-type changes apply immediately; number / text / list types save as a group; unconfigured rows show argo's default and are marked "default". Authorisation switches (recompute, intranet URLs) deliberately stay out of the panel
|
|
642
|
-
- **Key source layer is now visible**: shows "configured / unconfigured + source layer (credential store / startup env / project .env / home .env) + read-only state", with non-file layers noting they will be overwritten on save; `DEEPSEEK_API_KEY` is marked as shared with the host's `web_search`; `fetchMaxChars` is truncated to the argo tool schema cap of 50000 on save, removing the "displayed value ≠ effective value" mismatch
|
|
643
|
-
- **Cancellation reaches connection establishment**: `acquireMcp` now honours cancellation while the connection is being established — abort kills the subprocess and settles with `WEB_ABORTED` instead of waiting out the timeout; cancellation also flows through the single-shot fallback
|
|
644
|
-
- **Fixes**: evidence dedup no longer swallows case; older hosts without `effect` no longer crash activation; `saveKey` / `setForward` / `toggleTool` read a live snapshot, fixing a race that dropped updates on rapid consecutive actions; `describe` responses are guarded against reordering, only the latest request's response is accepted
|
|
645
|
-
|
|
646
|
-
### v2.9.7: Architecture consolidation — DSH web_fetch seam + explicit_only contract + unified state contracts (License: Apache-2.0)
|
|
647
|
-
|
|
648
|
-
- **License change**: MIT → Apache License 2.0 (explicit patent grant, safer for commercial use); nothing else changes
|
|
649
|
-
- **DSH plugin web_fetch seam**: the host's web_fetch used to bypass argo entirely as the default "read this URL" path; it now registers a fetch provider on the argo_fetch chain (HTTP first, auto-upgrade to an anti-detection browser on Cloudflare / JS-rendered pages); isomorphic dual-path execution with the search provider — resident MCP pool first, CLI single-shot only on transport failure, tool-level errors and timeouts are not retried (those mean the call already ran; retrying doubles engine calls and quota); failures classified into five kinds (timeout / blocked / empty / generic / cancelled) with actionable messages; new config `fetchProviderEnabled` / `fetchProviderId` / `fetchTimeoutMs` (25000) / `fetchMaxChars` (50000), all on by default with escape hatches; measured: cross-origin redirects (short links, protocol upgrades, redirect shells) and JS challenge pages flip from structural host failures to argo successes, static pages unchanged
|
|
650
|
-
- **explicit_only contract closure**: `config._routable_filter` filtered env blacklists / keys / blocklists but not explicit_only, so 18 explicit-only engines (including the only paid `deepseek_search`) sat in the enabled candidate pool where six routing paths (TF-IDF injection, catch-all, backfill, fallback, etc.) could select them — it never fired only because the corpus had no matching entry; one entry would have auto-fired paid engines in auto mode; now filtered at the single producer, locked by `tests/test_explicit_only_gate.py`
|
|
651
|
-
- **Unified state contracts**: circuit breaker memory short-circuit when healthy closed and zero-count (no file lock, no disk rewrite) with cross-process awareness via `(st_mtime_ns, st_size)`; adaptive accounting folds `MAX(created_at)` into one aggregate SQL plus a `batch()` context manager for single-transaction multi-engine commits; quota exhaustion records the credential fingerprint and auto-unlocks on key rotation; the route cache invalidates when a combo engine is exhausted or recovers; `is_engine_routable` becomes the single admission predicate behind backfill / tfidf / breaker_filter
|
|
652
|
-
- **Dispatch and transport**: auto / deep also drop hard-exhausted engines (fail-open fallback); hedge wait window narrowed, Wave-1 early stop now accepts cross-engine cumulative sufficiency; POST connection pooling (saves ~320ms anysearch / ~561ms octen per request) + MCP pre-connect; weather domain gains `early_stop_min_results: 1`
|
|
653
|
-
- **Sub-skill hot-path subtraction**: js-run replaces SIGALRM with MiniRacer's native timeout, fixing the `ValueError: signal only works in main thread` crash when called from crawl / research / mcp worker threads; local-seek rerank drops per-query O(N) disk reads; local-search reuses the registry (no double YAML parse); ego-search short-circuits probing under auto
|
|
654
|
-
- **Validation**: 71 plugin unit tests; full suite 4264 passed / 28 skipped; pre-commit seven gates 123 passed; fetch-chain A/B shows no static-page regression and failures flipped to successes on redirects / JS challenges
|
|
655
|
-
|
|
656
|
-
### v2.9.6: DeepSeek Search engine + query operator contract + transport connection pooling + routing snapshot gate
|
|
657
|
-
|
|
658
|
-
- New engine `deepseek_search` (official `api.deepseek.com/v1/tools/search`) on by default: auto-skipped without `DEEPSEEK_API_KEY`, other 265 sources unaffected; measured 445-510ms (anysearch 1.7-4.5s / exa 3.7s), the only one of the three with full authority tier / rerank_score / publish-time coverage, on par with anysearch for ja/ko/es; pay-per-use, excluded from domain combos, explicit `--engine deepseek_search` is the main path; DSH hosts share the same key with the official backend via the native credential seam (key rotation on the web Models page takes effect on the next hop, never persisted or logged)
|
|
659
|
-
- Fix: `--since/--until` silently ineffective for deepseek_search (added to TIME_CAPABLE_ENGINES)
|
|
660
|
-
- New `query_operators.py` query operator contract layer: `site:` / `-site:` / `-term` / `-"phrase"` / `lang:` / `after:` / `before:` converge from five scattered forms into structured operators; routing, cache, and query understanding only see the clean_query with instructions stripped; `site:` / `-site:` truly post-filter (subdomain match, multi-site OR, filtered count in `site_filtered`), operators join the result cache key to avoid cross-contamination
|
|
661
|
-
- `evidence.py`: new Agent-tier two-layer summary `summary` field (DeepSeek Search summary semantics)
|
|
662
|
-
- Transport de-duplicated pay: POST reuses pooled connections (measured second request on the same connection saves 320ms anysearch / 561ms octen), with borrow-failure retry and read-drain-before-return; MCP pre-connect; quota exhaustion and dead negative-cache closure
|
|
663
|
-
- Routing: octen joins the general fallback chain second slot and TF-IDF hedge slot (anysearch jitter window p90 3273→1614ms, max 6266→1928ms, errors 9→0; no median difference in the healthy window, positioned as tail insurance), `ARGO_GENERAL_FALLBACK_LEGACY=1` escape hatch
|
|
664
|
-
- Fix RRF caliber-isolation rank decay: all results from one engine scored identically (measured anysearch 5 results all 0.017213), output degenerated into engine-weight block concatenation; new test locks "strictly decreasing scores within the same engine"
|
|
665
|
-
- Fix Bing ck/a redirect shell not restored, causing the aggregation layer to filter entire batches (40.2% empty results in the last 7 days): offline base64url decode restores real links, zero network
|
|
666
|
-
- Fix TF-IDF leader combo producing `['anysearch','anysearch']` run twice concurrently (double quota with wasted_ms recorded as 0): 200 real queries replayed, duplicate combos 1→0
|
|
667
|
-
- Search improvements: failure negative cache, Nitter failover, caliber isolation, X Article extraction, query echo guard (early-stop rejection + recovery chain engine switch)
|
|
668
|
-
- Engineering: new `scripts/pre-commit` gate (static_lint / module_size_gate / usage_doc / consistency / routing_snapshot / context_budget + engine_catalog, ~12s measured); routing decision snapshot gate turns routing flips into diffable golden (union of three annotation sets, 115 queries, only domain and kind compared so environment noise can't false-red); caliber registry sync test locks "engine names in the table must be really registered"
|
|
669
|
-
- DSH plugin adapts to DSH 0.2.1-rc.2: dual-stack runtime entry (`startActivation({provider, label, request, signal, delivery})` new / `start(provider, request)` legacy), tool guard inside the plugin prevents worker nested `wide_research` calls after rc.2 removed `toolFilter`; end-to-end verified on rc.2 (`wide_research` planner → 2 workers → synthesis, passed=true / 14 sources) and native `argo_search` (count=3); 0.2.1-alpha.1 compatibility branch covered by unit tests; plugin unit tests 46→50
|
|
670
|
-
- DSH environment versions: **DSH 0.2.1-rc.2 (current, running, end-to-end verified) + DSH 0.2.1-alpha.1 (compatible, legacy start branch unit-covered)**; compatibility table in `packages/dsh-plugin/README.md`
|
|
671
|
-
|
|
672
|
-
### v2.9.5: FX-rate dedicated domain + two-layer dedup + ranking false-kill fix + per-checkout daemon isolation
|
|
673
|
-
|
|
674
|
-
- `config.yaml`: new `fx_query` domain — "RMB/USD exchange rate, central parity, offshore" queries no longer fall through macro-data dead-ends to encyclopedia entries; now live rate + daily parity news (675ms measured; previously 1411ms and off-target)
|
|
675
|
-
- `search_rank.py`: two-layer dedup — title site-suffix normalization (zero-dep) + rapidfuzz fuzzy near-duplicate check (only inside the near-hit band; `ARGO_DEDUP_FUZZY=0` to disable, auto-fallback to pure minhash when not installed)
|
|
676
|
-
- Fix: title separator false-kill during degraded rerank — titles containing `|` / `_` / `——` were uniformly ×0.6, pushing official docs down 40%; every auto/deep query on keyless setups was affected (judgment converged to the single rank_signals implementation)
|
|
677
|
-
- `query_understanding.py`: negation understanding gains "not-X" (the interrogative "whether" is not misread as negation)
|
|
678
|
-
- `daemon.py`: on-disk names (socket/pid/pointer/log) scoped per checkout — multi-worktree/clone daemon squatting, wrong-process kills, and "edits don't take effect" all rooted out
|
|
679
|
-
- New optional dependency rapidfuzz (`pip install rapidfuzz`; installed by install.sh, core unaffected when missing)
|
|
680
|
-
|
|
681
|
-
### v2.9.4: Explicit engine domain attribution + recovery chain circuit-breaker + gate sync
|
|
682
|
-
|
|
683
|
-
- `route.py`: explicit `--engine X` supplements `match_domains`, fixing cache TTL blanket-general
|
|
684
|
-
- `recovery.py`: explicit single-engine no-fallback skips L1 same-engine empty run
|
|
685
|
-
- `config.yaml`: `org_entity` adds unless shareholder-diligence terms; `fund_query` adds unless policy-regulation terms
|
|
686
|
-
- `mcp_launch.sh`: `set -a` narrowed to `. "$ENV_FILE"` single line
|
|
687
|
-
- `sub-skills/local-search/`: engine registry layer closure and search_v3 quality improvement
|
|
688
|
-
- Gate sync: module_size_gate / ENGINE_CATALOG / domain_profiles.json baseline aligned
|
|
689
|
-
|
|
690
|
-
### v2.9.3: full X post packaging + browser login-state lane + local-chain quality/speed fixes
|
|
691
|
-
|
|
692
|
-
- **New**: `argo tweet` — one command packs a given X post's full text, thread/quote/repost context and engagement data; text-only by default, `--out` writes a 4-file bundle (post.md/raw.json/manifest.json/CHECKLIST.md), `--media` downloads images/videos on demand; failure reasons surface in the artifacts
|
|
693
|
-
- **New**: `argo auth` browser login-state lane — `login/status/logout` manages a persistent per-site browser profile; scan the QR once and login-required pages become fetchable; cookies stay in Chrome's own encrypted storage (argo never reads or exports them), login-state results are flagged `login_state_used` and excluded from the shared cache (enable with `ARGO_AUTH_FETCH`)
|
|
694
|
-
- **More accurate**: the Chinese local chain resolves Sogou/Baidu redirect shells into real URLs without a session (kept results 1→5); intent-gate false-lock fixed ("tutorial"-style queries no longer pinned to one engine); rail table-row identity URLs fix the candidate funnel compression (10→1 → faithful 10→10)
|
|
695
|
-
- **Faster**: adaptive consensus grace (the first engine delivering enough releases the wait; English dispatch ~3.0s→2.2-2.5s); local long-tail early-stop; local image fingerprints via mmap matrix dot product (77k images 158ms→3.9ms, off by default with `ARGO_LOCAL_IMAGE=1`); automatic agent-consumption slimming + markdown content negotiation, MCP per-call fixed overhead −32%
|
|
696
|
-
- **More sources**: 43 engines without domain references wired into their domains; route_lang language routing; 3 new keyless finance sources; `--academic-deep` one-flag academic multi-source; rail transfer/stopover queries
|
|
697
|
-
- **More robust**: js-run wired in as the fetch chain's first lane (Chrome-fingerprint retries); jsrun session-leak and backoff-budget fixes; timeouts tightened (redskill 60→15s) with the declaration policy split into three groups
|
|
698
|
-
|
|
699
|
-
### v2.9.2: DSH 0.2.1-alpha.1 compatibility verified + routing/guard fixes + js-run sub-skill
|
|
700
|
-
|
|
701
|
-
- **More compatible**: the DSH plugin is verified on the latest DSH 0.2.1-alpha.1 — native first-class tools / web_search seam / wide_research all work; `argo mcp inject` adds WorkBuddy, covering a 7th host
|
|
702
|
-
- **More accurate**: TF-IDF weak-evidence demotion to auxiliary sources, dead-source floor + breaker slot backfill, quota-exhausted engine isolation, serp_guard false-positive fixes
|
|
703
|
-
- **Faster & more robust**: lazy imports for engines/evidence (import volume −50%), admission existence-set short-circuit (open calls 261 → 99), MCP entry/numeric-argument guards; new `sub-skills/js-run` sub-skill (browser-free JS execution, P50 ≈ 1ms)
|
|
704
|
-
|
|
705
|
-
### v2.9.1: content-quality optimization + content-farm resistance + latest-environment compatibility
|
|
706
|
-
|
|
707
|
-
- **Cleaner**: improved content-quality assessment and stronger resistance to content farms — low-quality, bulk-generated content in results is identified and filtered more effectively
|
|
708
|
-
- **More compatible**: adapted to the latest host environment for seamless operation
|
|
709
|
-
- **More stable**: local search now guards against its own install tree, so results are no longer polluted by argo's own source files
|
|
710
|
-
|
|
711
|
-
### v2.9.0: source optimization + plugin/CLI parity + minor languages
|
|
712
|
-
|
|
713
|
-
- **Broader**: sources 237 → 253 (keyless 198 → 219), adding 14 minor-language local news sources, the CORE open-access full-text source, TinEye reverse image search, a stable Bing RSS outlet, and more; the evergreen Baidu and Sogou sources were revived
|
|
714
|
-
- **More aligned**: 18 CLI commands map one-to-one to 19 MCP tools — plugin and CLI search capabilities are fully at parity for the first time
|
|
715
|
-
- **More languages**: 14 minor-language sources (Thai/Arabic/Hebrew/Greek/Hindi/Vietnamese/Turkish/Indonesian, etc.), matched automatically by query language
|
|
716
|
-
- **Faster**: import chain −79%, rerank at n=200 33ms → 1.5ms, cache hit rate from ~60% to almost no misses
|
|
717
|
-
- **More trustworthy**: cross-process safety fix on the quota write path, early-stop results no longer mislabeled as timeouts, and `argo stats` gives search quality its own ledger
|
|
718
|
-
|
|
719
|
-
### v2.8.9: slimmer output + richer and faster retrieval + 5 international media and fact-check sources
|
|
720
|
-
|
|
721
|
-
- **Leaner**: default output −66% (the same results are no longer written three times); repeated queries −30% (routing-decision cache); slow-network waits −36% (backup sources auto-dispatched when the primary stalls past 0.8s)
|
|
722
|
-
- **Richer**: recall +35%, fetch latency −30%; body-structure fidelity 0/6 → 6/6 (headings, lists and tables no longer flattened); Chinese content no longer systematically judged low-quality
|
|
723
|
-
- **New**: sources 232 → 237 (keyless 194 → 198, all free — The Guardian, France 24, DW, fact-checkers FactCheck.org / Full Fact in US and UK editions); dead source gdelt retired
|
|
724
|
-
- **More trustworthy**: six bookkeeping defects where numbers contradicted each other fixed; the six-stage funnel shows which layer a "0 results" collapse happened in; offline replay tools verify changes same-day; see [release notes](docs/RELEASE_NOTES_v2.8.9.md)
|
|
725
|
-
|
|
726
|
-
### v2.8.8: real-user bug fixes + across-the-board speedups + 232 sources
|
|
727
|
-
|
|
728
|
-
- **Fixes**: engines silently returning nothing after a key was configured under its recommended name (#12); the fetch chain bypassed proxies so GitHub etc. always failed (#13) — `ARGO_PROXY`, config per-domain rules and standard proxy environment variables now all work, and `NO_PROXY` is respected
|
|
729
|
-
- **Faster**: CLI cold start 2.1s → 0.55s; cross-process config cache 50–82ms → 16–18ms; every search reports per-stage timing and a budget bill, so there is no guessing where it is slow (`--no-timing` to disable)
|
|
730
|
-
- **New**: sources 218 → 232 (keyless 184 → 194, all keyless: domestic trending boards, security vulnerabilities, open-access scholarship, skill directories, agent search), `argo answer` direct answers, `argo watch` page watching, CLI/MCP tool-surface alignment
|
|
731
|
-
- **More robust**: platform-conventional paths on all three OSes (new `argo paths` introspection), Python 3.9 supported, silent degradations now reported; see [release notes](docs/RELEASE_NOTES_v2.8.8.md)
|
|
732
|
-
|
|
733
|
-
### v2.8.7: sources expanded to 218 + a batch of fixes
|
|
734
|
-
|
|
735
|
-
- **Source expansion**: 168 → 218 sources, 72 → 89 domains (new official sources incl. StackExchange Q&A, DOI metadata, vulnerability intel, product lifecycles), plus three direct-out fetch channels
|
|
736
|
-
- **A batch of fixes**: multi-engine routing, zero-result fallback, Chinese redirects, local search degradation, etc.; see [release notes](docs/RELEASE_NOTES_v2.8.7.md)
|
|
737
|
-
|
|
738
|
-
### v2.8.6: faster search + multi-source split
|
|
646
|
+
Only the three most recent versions. Full history in the [changelog](#changelog); per-release detail on [Releases](https://github.com/taxueseek/argo/releases).
|
|
739
647
|
|
|
740
|
-
|
|
648
|
+
### Next version: Tencent Yuanbao search + three more keyless sources + a structured failure list
|
|
741
649
|
|
|
742
|
-
|
|
650
|
+
- **Yuanbao search**: a first-hand, official-voice Chinese source that complements the portal-and-self-media mix of bocha and byted; sits 2nd in the Chinese-general domain as an authority hedge. Key: `ARGO_YUANBAO_API_KEY`
|
|
651
|
+
- **Three more sources usable with no key**: `tavily_free`, `keenable_free` and the `exa` anonymous fallback now work with no key configured at all
|
|
652
|
+
- **Failures you can act on**: each failure names its source and class and says whether to retry, switch sources or configure a key, alongside a `meta.uncertainty` confidence level
|
|
653
|
+
- **Local config overlay `config.local.yaml`**: machine-local tuning is no longer written into the public config shipped with each release
|
|
654
|
+
- **A new "Engines" section on the DSH settings page**: argo's 28 behaviour switches move out of environment variables and into the panel
|
|
743
655
|
|
|
744
|
-
|
|
745
|
-
- **MCP off by default**: three plugin shapes (on-demand MCP / native tools as the default entry / web_search seam); zero standing token cost, and one profile patch opens the full 14-tool surface
|
|
746
|
-
- **Windows compatibility** (community PR #11): system temp paths, GBK encoding fix, runtime interpreter resolution (`python3`/`python`), symlink falls back to junction, new PowerShell installer `install.ps1`
|
|
747
|
-
- **Quota self-healing**: remote quota exhaustion hidden in HTTP 200 envelopes is detected; routing excludes that engine and switches to backup sources, returning automatically at the next quota period
|
|
748
|
-
- **Fetch global deadline**: `ARGO_FETCH_DEADLINE_S` (default 60s) caps the fallback chain; 429/503 stop signals are honored; tinyfish rendering + `.md` variant probes
|
|
656
|
+
### v2.9.7: architecture consolidation + host web fetching handed to argo + License moved to Apache-2.0
|
|
749
657
|
|
|
750
|
-
|
|
658
|
+
- **License change**: MIT → Apache License 2.0. The patent grant is now explicit; nothing else changes
|
|
659
|
+
- **Pages the host could not fetch now succeed**: short-link redirects, protocol upgrades, redirect shells and Cloudflare / JS challenge pages go through argo's fetch chain (HTTP first, auto-escalating to a browser when a site pushes back). On by default; turn it off with `fetchProviderEnabled`
|
|
660
|
+
- **Auto mode no longer calls paid engines by accident**: the 18 explicit-only engines are removed from the routing candidate pool and are reached only when named with `--engine`
|
|
661
|
+
- **A new key recovers on the next hop**: quota-exhausted engines no longer wait for their recovery window, and the routing cache is recomputed
|
|
662
|
+
- **Running JS from crawl / research / MCP no longer crashes**
|
|
751
663
|
|
|
752
|
-
|
|
753
|
-
- **MCP attach is no longer hand-edited config**: `argo mcp inject` writes Claude Code / Cursor / Windsurf / Codex / OpenCode / Cline (atomic write + backup + undo)
|
|
754
|
-
- **Simple queries stay cheap**: query normalize + complexity gate + social/platform syntax first + if a Chinese engine is dropped, keep looking at backups
|
|
755
|
-
- **Keenable** added as a free-trial web search source
|
|
756
|
-
- **Security**: recompute blocks outbound subprocesses; host paths are install-aware
|
|
664
|
+
### v2.9.6: DeepSeek Search + query operators + no double-paying for the same POST
|
|
757
665
|
|
|
758
|
-
|
|
666
|
+
- **New `deepseek_search` engine**: 445-510ms, the only one of the three covering authority tiering, rerank_score and publish time; `--since/--until` genuinely works. Billed per call, needs your own `DEEPSEEK_API_KEY` and is skipped automatically without one
|
|
667
|
+
- **Query operators behind one contract**: `site:` / `-site:` / `-term` / `lang:` / `after:` / `before:` are parsed uniformly, and `site:` performs real post-filtering
|
|
668
|
+
- **The same POST is no longer paid for twice**: connection-pool reuse saves 320ms (anysearch) / 561ms (octen) on the second request over one connection
|
|
669
|
+
- **Two link-resolution and ranking defects fixed**: results from one engine all scoring the same had flattened the output; Bing redirect shells left unresolved cost 40.2% of queries their results over 7 days
|
|
670
|
+
- **Routing decisions are snapshot-gated**: routing flips become a diffable golden instead of changing silently
|
|
759
671
|
|
|
760
672
|
---
|
|
761
673
|
|
|
@@ -763,28 +675,29 @@ argo/
|
|
|
763
675
|
|
|
764
676
|
| Version | Notes |
|
|
765
677
|
|---------|-------|
|
|
766
|
-
| **v2.9.
|
|
767
|
-
| **v2.9.
|
|
768
|
-
| **v2.9.
|
|
769
|
-
| **v2.9.
|
|
770
|
-
| **v2.9.
|
|
771
|
-
| **v2.9.
|
|
772
|
-
| **v2.9.
|
|
773
|
-
| **v2.9.
|
|
774
|
-
| **v2.
|
|
775
|
-
| **v2.8.
|
|
776
|
-
| **v2.8.
|
|
777
|
-
| **v2.8.
|
|
778
|
-
| **v2.8.
|
|
779
|
-
| **v2.8.
|
|
678
|
+
| **v2.9.8** | **Routing precision audit + issue #18/#19 fixes + test-state isolation**: replayed real queries and tightened 16 classes of false triggers (brand/product names, field names, ASCII substrings); added the SERP coverage gate and CJK cross-validation; fixed the empty-log nightly ledger, people_daily default feed, and cached-result guarding; isolated adaptive/breaker state per test. Thanks to @wpp666 for the reproduction and diagnosis. See [release notes](docs/RELEASE_NOTES_v2.9.8.md). |
|
|
679
|
+
| **v2.9.7** | **Architecture consolidation + DSH web_fetch seam + License to Apache-2.0**: MIT → Apache License 2.0. Host web_fetch now flows through argo's fetch chain (HTTP first, browser upgrade on JS challenges), and explicit-only engines leave the routing pool so auto mode cannot bill them by accident. |
|
|
680
|
+
| **v2.9.6** | **DeepSeek Search engine + query operator contract + transport connection pooling + routing snapshot gate**: New `deepseek_search` engine, on by default (445-510ms; skipped without a key). Query operators (`site:`, `-term`, `lang:`, `after:`, `before:`) share one contract with real post-filtering; POST pooling saves 320-561ms per request. |
|
|
681
|
+
| **v2.9.5** | **FX-rate dedicated domain + two-layer dedup + ranking false-kill fix + per-checkout daemon isolation**: New `fx_query` domain answers rate and parity questions in 675ms. Dedup gains site-suffix normalization plus an optional fuzzy check (`ARGO_DEDUP_FUZZY`), and a separator false-kill is fixed. |
|
|
682
|
+
| **v2.9.4** | **Explicit engine domain attribution + recovery chain circuit-breaker + gate sync**: `--engine X` supplements domain matching, so cached results are no longer blanket-general, and single-engine runs skip the empty first level. `config.yaml` domain rules gained unless-terms handling. |
|
|
683
|
+
| **v2.9.3** | **Full X post packaging + browser login-state lane + local-chain quality/speed fixes**: New `argo tweet` packs a full post into a `--out` bundle; `argo auth` adds browser login-state sessions excluded from the shared cache. English dispatch falls to 2.2-2.5s, image fingerprints 158ms→3.9ms. |
|
|
684
|
+
| **v2.9.2** | **DSH 0.2.1-alpha.1 compatibility verified + routing/guard fixes + js-run sub-skill**: The DSH plugin is verified on DSH 0.2.1-alpha.1, and `argo mcp inject` adds WorkBuddy as a seventh host. Import cost drops 50%, and js-run (a new sub-skill) runs web JS with no browser, P50 ≈1ms. |
|
|
685
|
+
| **v2.9.1** | **Content-quality optimization + content-farm resistance + latest-version adaptation**: Content-quality scoring better identifies and filters low-quality bulk-generated content, and local search gained a self-install-tree guard so argo's own source stops polluting results. |
|
|
686
|
+
| **v2.9.0** | **Source optimization + plugin/CLI parity + minor languages**: Sources 237→253 (keyless 198→219), adding 14 minor-language news sources and the CORE full-text source; Baidu and Sogou are revived. Import −79%, rerank 33ms→1.5ms, new `argo stats`. See [release notes](docs/RELEASE_NOTES_v2.9.0.md) |
|
|
687
|
+
| **v2.8.9** | **Output slimming + richer, faster retrieval + 5 international & fact-check sources**: Default output 15.5KB→5.2KB (−66%, `--envelope` restores the full envelope); slow-network dispatch −36%. Five keyless sources added, taking sources to 237 and keyless to 198. See [release notes](docs/RELEASE_NOTES_v2.8.9.md) |
|
|
688
|
+
| **v2.8.8** | **Real-user fixes (#12 key-alias silence, #13 proxy-less fetch) + across-the-board speedups + sources 218 → 235**: One egress path for all traffic (`ARGO_PROXY`). Cold start 2.1s→0.55s; new `argo answer` and `argo watch` (page-change watching), web_general fallback 41%→20%. See [release notes](docs/RELEASE_NOTES_v2.8.8.md) |
|
|
689
|
+
| **v2.8.7** | **218 sources / 89 domains + three fetch direct-out channels + routing trigger discipline + macro zero-result fix**: 218 sources across 89 domains after 50 new ones (statutes, standards, security, academia, news, legal). Fetch probes llms.txt and `.md` variants; `--engine` takes comma lists again. See [release notes](docs/RELEASE_NOTES_v2.8.7.md) |
|
|
690
|
+
| **v2.8.6** | **Hedged racing + Zhihu three-source split + declarative language dispatch + reachability gate + academic search protocol**: First-engine grace-window racing lets fast engines pay one call. Zhihu global search and personal data are wired in, dead sources surface, geo tail latency drops 56%. See [release notes](docs/RELEASE_NOTES_v2.8.6.md) |
|
|
691
|
+
| **v2.8.5** | **Native DSH plugin tools + MCP off by default + Windows compat + quota self-healing + fetch deadline**: `argo_search` and `argo_fetch` are now first-class tools; MCP is on demand only. Windows support (`install.ps1`), quota self-healing, and `ARGO_FETCH_DEADLINE_S` for the fetch deadline. See [release notes](docs/RELEASE_NOTES_v2.8.5.md) |
|
|
692
|
+
| **v2.8.4** | **Local data fusion + multi-client MCP inject + structured search + Keenable**: Research L1 can draw on first-hand local data (`file_inputs`, `recompute`), and `argo mcp inject` wires clients from `mcp/clients.yaml`. Query normalization and `--include-local` added. See [release notes](docs/RELEASE_NOTES_v2.8.4.md) |
|
|
780
693
|
| **v2.8.3** | **Multilingual routing fix + in-process anysearch + weighted RRF**: ja/ko queries return the target language; DE/FR/ES/IT via anysearch; weakest-link downweight (paper 2508.01405). See [release notes](docs/RELEASE_NOTES_v2.8.3.md) |
|
|
781
694
|
| **v2.8.2** | **Windows + unified evidence semantics**: npm `os` limit removed; UTF-8 path against GBK crashes; main-package `dsh.bundle`; `wide_research` quality gate. See [release notes](docs/RELEASE_NOTES_v2.8.2.md) |
|
|
782
695
|
| **v2.8.0** | **Evidence loop + jobs v3 + dual weather**: `fetch_required` / `--verify`; `argo job`; wttr.in + Open-Meteo; Parallel / You.com. See [release notes](docs/RELEASE_NOTES_v2.8.0.md) |
|
|
783
|
-
| **v2.7.3** | Engine-layer
|
|
696
|
+
| **v2.7.3** | Engine-layer HTTP client; TF-IDF activates 25 verticals; 70-domain TTL; bilingual verticals. See [release notes](docs/RELEASE_NOTES_v2.7.3.md) |
|
|
784
697
|
| **v2.7.2** | Logged-in professional search (ego-search, off by default); JA/KO no longer mix Chinese engines. See [release notes](docs/RELEASE_NOTES_v2.7.2.md) |
|
|
785
698
|
| **v2.7.1** | SSRF hardening + routing health-state fix. See [release notes](docs/RELEASE_NOTES_v2.7.1.md) |
|
|
786
|
-
| **v2.7.0** | **Vertical structured modal cards**:
|
|
787
|
-
| **v2.6.2** | Merged
|
|
699
|
+
| **v2.7.0** | **Vertical structured modal cards**: Built-in `bocha` / `bocha_ai` engines; the `modal_card` domain recognizes real-time cards in one place: train tickets, fuel prices, calendar, horoscope, vehicles, hospital registration. See [release notes](docs/RELEASE_NOTES_v2.7.0.md) |
|
|
700
|
+
| **v2.6.2** | Merged improvement lines: network-environment awareness, weighted RRF with semantic cache, adaptive engine disabling, content safety with query variants, vertical engines and ja-ko routing. See [release notes](docs/RELEASE_NOTES_v2.6.2.md) |
|
|
788
701
|
| **v2.6.1** | v2.6.0 fix release: routing collateral-damage fix (`capital of` no longer grabs fact_check); version sync. See [release notes](docs/RELEASE_NOTES_v2.6.1.md) |
|
|
789
702
|
| **v2.6.0** | **Multilingual search** (detect / engine params / cross-lang fallback); film·sports·geo·org·media verticals; recovery anti-pollution; capability families + matrix regression; ~120+ sources. See [release notes](docs/RELEASE_NOTES_v2.6.0.md) |
|
|
790
703
|
| **v2.5.1** | Thicker finance/macro/chemistry answer sources; engine tiers + combo budget; [v2.5.1 notes](docs/RELEASE_NOTES_v2.5.1.md) |
|