argo-search 2.9.8 → 2.9.9

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.
Files changed (46) hide show
  1. package/README.en.md +30 -20
  2. package/README.es.md +30 -20
  3. package/README.ja.md +30 -20
  4. package/README.ko.md +30 -20
  5. package/README.md +32 -22
  6. package/SKILL.md +1 -1
  7. package/bin/argo +4 -0
  8. package/bin/argo.js +1 -1
  9. package/config.yaml +52 -5
  10. package/docs/ARGO_INTRO.md +5 -3
  11. package/docs/RELEASE_NOTES_v2.9.9.md +78 -0
  12. package/package.json +3 -2
  13. package/packages/dsh-plugin/README.md +3 -2
  14. package/packages/dsh-plugin/dsh/client.js +98 -32
  15. package/packages/dsh-plugin/dsh/diagnostics.js +43 -0
  16. package/packages/dsh-plugin/dsh/index.js +23 -1
  17. package/packages/dsh-plugin/package.json +2 -2
  18. package/packages/dsh-plugin/test/client.test.js +2 -1
  19. package/scripts/adaptive.py +102 -42
  20. package/scripts/bench_tail_ab.py +281 -0
  21. package/scripts/bounded_run.py +91 -49
  22. package/scripts/clock_bridge.py +22 -0
  23. package/scripts/content_security.py +119 -4
  24. package/scripts/dispatch_result.py +9 -2
  25. package/scripts/engine_add.py +602 -0
  26. package/scripts/engine_dispatch.py +9 -0
  27. package/scripts/evidence_loop.py +4 -0
  28. package/scripts/fetch_quality.py +13 -0
  29. package/scripts/fetch_v3.py +3 -3
  30. package/scripts/http_client.py +24 -38
  31. package/scripts/image_vision/vision_probe +0 -0
  32. package/scripts/local_engines.py +321 -0
  33. package/scripts/matrix_search_eval.py +111 -1
  34. package/scripts/mcp_transport.py +1 -1
  35. package/scripts/net_proxy.py +27 -0
  36. package/scripts/recovery.py +7 -3
  37. package/scripts/route_combo.py +19 -5
  38. package/scripts/route_domains.py +138 -12
  39. package/scripts/safe_conn.py +52 -0
  40. package/scripts/search_entry.py +1 -0
  41. package/scripts/search_pipeline.py +20 -2
  42. package/scripts/search_rank.py +6 -0
  43. package/scripts/serp_guard.py +23 -0
  44. package/scripts/tail_completion.py +212 -0
  45. package/scripts/url_safety.py +126 -3
  46. package/scripts/usage_log.py +45 -0
package/README.en.md CHANGED
@@ -24,7 +24,7 @@
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.8-informational">
27
+ <img alt="version" src="https://img.shields.io/badge/version-2.9.9-informational">
28
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>
@@ -57,7 +57,8 @@ Together the four cover the full chain from local machine to open web to behind
57
57
  Argo is also a DeepSeek Harness plugin. One line installs it:
58
58
 
59
59
  ```bash
60
- dsh plugin --profile web add "github:taxueseek/argo"
60
+ dsh plugin --profile web add argo-search # npm release
61
+ dsh plugin --profile web add "github:taxueseek/argo" # GitHub main
61
62
  ```
62
63
 
63
64
  Restart `dsh web` and it takes effect. Search and fetch become native first-class tools: no MCP connection, no standing context overhead. There is also one `wide_research` parallel researcher and 19 MCP tools you can enable on demand. See integration forms below.
@@ -144,8 +145,10 @@ Zero config works. Three ways to install, pick your habit:
144
145
  # Option 1: install script (recommended for long-term local use)
145
146
  curl -fsSL https://raw.githubusercontent.com/taxueseek/argo/main/scripts/install.sh | bash
146
147
 
147
- # Option 2: npx on demand (recommended for quick agent attachment)
148
- npx -y github:taxueseek/argo
148
+ # Option 2: npm / npx (supported, currently 2.9.9; released per tag, version pinned)
149
+ npm install -g argo-search # install the CLI globally
150
+ npx -y argo-search # or run it without installing
151
+ npx -y github:taxueseek/argo # use this to follow the latest commit on main
149
152
 
150
153
  # Option 3: git clone (development / editing source)
151
154
  git clone https://github.com/taxueseek/argo.git
@@ -174,7 +177,7 @@ Argo supports four integration forms; pick by scenario:
174
177
  | **MCP Server** | Always-on agent attachment | 19 retrieval tools ready; one command injects Claude Code / Cursor / Windsurf / Codex / OpenCode / Cline, config backed up first |
175
178
  | **DSH plugin** | DeepSeek Harness users | One line `dsh plugin add`; search and fetch become native first-class tools, no MCP connection, no standing context overhead; ships a six-section settings page effective on save |
176
179
  | **Skill files** | Claude Code / Grok Build / Kimi, etc. | Drop the skill package into the agent's skills directory; say "look this up" or "verify this" and it searches |
177
- | **npx on demand** | Quick trial | `npx -y github:taxueseek/argo`, no install, good for temporarily attaching MCP to any client |
180
+ | **npx on demand** | Quick trial | `npx -y argo-search` (npm release) or `npx -y github:taxueseek/argo` (main), no install, good for temporarily attaching MCP to any client |
178
181
 
179
182
  All four forms run the same Python code underneath; CLI and MCP tools map one to one, so no form lacks capability.
180
183
 
@@ -277,7 +280,7 @@ Results include `selection`, `absorption`, `credibility_fast`, `evidence_flags`,
277
280
 
278
281
  ## Quick start
279
282
 
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.
283
+ Pick any path. **npm install is supported, current version 2.9.9**, published from this repo like GitHub. The npm route uses `npm install -g argo-search` or `npx -y argo-search`, is released per tag, with a pinned version and a smaller download. The GitHub route uses `install.sh` / `install.ps1` or `npx github:taxueseek/argo` and follows main. From now on every tag push makes CI publish both npm packages together with the GitHub Release; the older v1.0.1 on the registry is a historical version, do not pin to it.
281
284
 
282
285
  **Zero-config works**: without API keys, free engines + local `local_*` engines run; keyed engines are skipped when missing (and usually better when present).
283
286
 
@@ -347,9 +350,11 @@ Two install paths inside DeepSeek Harness:
347
350
 
348
351
  ```bash
349
352
  # A: 19 mcp__argo__* tools (main-package bundle, same as full MCP)
350
- dsh plugin --profile web add "github:taxueseek/argo"
353
+ dsh plugin --profile web add argo-search # npm release
354
+ dsh plugin --profile web add "github:taxueseek/argo" # GitHub main
351
355
 
352
356
  # B: search tools + wide_research parallel research orchestration (subpackage)
357
+ dsh plugin --profile web add @taxueseek/argo-dsh # npm release
353
358
  dsh plugin --profile web add "github:taxueseek/argo#main&path:packages/dsh-plugin"
354
359
  ```
355
360
 
@@ -418,7 +423,7 @@ python3 scripts/search.py --list-engines
418
423
  | `deep` | research, surveys | quality first; more engines allowed |
419
424
  | `budget` | tight quota | quota control; degrade when exhausted |
420
425
 
421
- ### Rough capability set (v2.9.8)
426
+ ### Rough capability set (v2.9.9)
422
427
 
423
428
  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**.
424
429
 
@@ -426,6 +431,8 @@ Installed as a DSH plugin, these capabilities become native host tools: the hot-
426
431
 
427
432
  The last few releases each fixed one class of problems.
428
433
 
434
+ v2.9.9 is a security-and-delivery-quality release. The content-security engine used to score web content but not stop it: a high-risk injection page went straight into the pipeline. Now anything over the risk threshold is quarantined, the cleaned text replaces the original, and it never reaches the evidence score. The network egress gains two layers of defense: redirects are validated hop by hop, and the resolved address is pinned to the connection, closing the DNS-rebinding window. On the dispatch side, results from slow engines abandoned by early-stop are no longer thrown away: they are collected in the background, delivered as usual if they finish within the grace window, and their real performance finally reaches the learner. A six-family scan of real-world scenarios tightened five classes of mis-routing: A-share financial queries, corporate due-diligence / invoicing / person-to-company lookups, civil-law practice, drug leaflets and paper-writing how-tos all land where they should. New this round: `argo engine add` wires a new engine up in one step, and the DSH settings page gains a route-observation card with tool recommendation combos.
435
+
429
436
  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
437
 
431
438
  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.
@@ -645,12 +652,22 @@ argo/
645
652
 
646
653
  Only the three most recent versions. Full history in the [changelog](#changelog); per-release detail on [Releases](https://github.com/taxueseek/argo/releases).
647
654
 
648
- ### Next version: Tencent Yuanbao search + three more keyless sources + a structured failure list
655
+ ### v2.9.9: security in depth + slow-source results no longer dropped + five mis-routing classes closed
656
+
657
+ - **High-risk page text can no longer reach the context**: the content-security engine upgrades from "score only" to "quarantine + clean replacement"; text with `risk_score ≥ 0.5` is replaced by its cleaned version and excluded from the evidence score. On by default; `ARGO_CONTENT_RISK_GATE=0` for an emergency override
658
+ - **Network egress defense in depth**: redirects validated hop by hop (`ARGO_MAX_REDIRECTS`, default 5) + resolve-and-pin, closing the DNS-rebinding window
659
+ - **Results from slow engines abandoned by early-stop are no longer dropped**: abandoned engines are collected in the background; whatever finishes within `ARGO_TAIL_COMPLETE_S` (default 3s, 0=off) is delivered as usual and recorded as a real score, with results merged back into the cache
660
+ - **Five mis-routing classes closed**: A-share financial queries to `stock_query`, corporate due-diligence / invoicing / person-to-company to `company_search`, civil-law practice to `flk_law`, drug leaflets no longer stolen by the "usage" token, paper-writing how-tos no longer routed to academic search
661
+ - **`argo engine add`**: one-step engine onboarding; the manual spec/env/validate/sync/combo/allowlist chain becomes a single command
662
+ - **Bucketed scenario learning + ZCode plugin package**: routing can now tell "strong in domain A, weak in domain B"; skill+CLI direct channel and a zero-token panel shipped to zcode-plugins
649
663
 
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
664
+ ### v2.9.8: routing precision audit + Tencent Yuanbao search + three more keyless sources + a structured failure list
665
+
666
+ - **issue #18/#19 all fixed**: `latest` mis-routed into realtime news, people_daily default feed, local_bing matching only "2026", Chinese cross-validation always 0, nightly crash on empty logs; 16 more isomorphic false-trigger classes tightened along the way
667
+ - **Yuanbao search**: a first-hand, official-voice Chinese source, sitting 2nd in the Chinese-general domain as an authority hedge. Key: `ARGO_YUANBAO_API_KEY`
668
+ - **Three more sources usable with no key**: `tavily_free`, `keenable_free` and the `exa` anonymous fallback
652
669
  - **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
670
+ - **Local config overlay `config.local.yaml`**: machine-local tuning is no longer written into the public config
654
671
  - **A new "Engines" section on the DSH settings page**: argo's 28 behaviour switches move out of environment variables and into the panel
655
672
 
656
673
  ### v2.9.7: architecture consolidation + host web fetching handed to argo + License moved to Apache-2.0
@@ -661,20 +678,13 @@ Only the three most recent versions. Full history in the [changelog](#changelog)
661
678
  - **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
679
  - **Running JS from crawl / research / MCP no longer crashes**
663
680
 
664
- ### v2.9.6: DeepSeek Search + query operators + no double-paying for the same POST
665
-
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
671
-
672
681
  ---
673
682
 
674
683
  ## Changelog
675
684
 
676
685
  | Version | Notes |
677
686
  |---------|-------|
687
+ | **v2.9.9** | **Security in depth + slow-source results no longer dropped + five mis-routing classes closed**: high-risk text quarantined with cleaned replacement (excluded from the evidence score), hop-by-hop redirect validation and DNS-rebinding pinning; slow engines abandoned by early-stop are collected in the background (`ARGO_TAIL_COMPLETE_S`) and their real scores recorded; a six-family real-scenario scan closes academic/finance/corporate/legal/pharma mis-routing; plus `argo engine add` one-step onboarding, bucketed scenario learning, and the ZCode plugin package. See [release notes](docs/RELEASE_NOTES_v2.9.9.md). |
678
688
  | **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
689
  | **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
690
  | **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. |
package/README.es.md CHANGED
@@ -24,7 +24,7 @@
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.8-informational">
27
+ <img alt="version" src="https://img.shields.io/badge/version-2.9.9-informational">
28
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>
@@ -57,7 +57,8 @@ Las cuatro sub-habilidades cubren la cadena completa, desde buscar en la máquin
57
57
  Argo también es un plugin de DeepSeek Harness: se instala con una sola línea.
58
58
 
59
59
  ```bash
60
- dsh plugin --profile web add "github:taxueseek/argo"
60
+ dsh plugin --profile web add argo-search # versión npm
61
+ dsh plugin --profile web add "github:taxueseek/argo" # GitHub main
61
62
  ```
62
63
 
63
64
  Tras instalarlo, reinicia `dsh web` y queda activo. La búsqueda y el fetch pasan a ser herramientas nativas de primera clase: no dependen de una conexión MCP ni ocupan contexto permanente. Además hay 1 `wide_research` de investigación en paralelo y 19 herramientas MCP que se activan bajo demanda. Las formas de integrarlo están más abajo.
@@ -144,8 +145,10 @@ Funciona sin configuración. Tres formas de instalarlo, elige la que te acomode:
144
145
  # Opción 1: script de instalación (recomendado para uso local a largo plazo)
145
146
  curl -fsSL https://raw.githubusercontent.com/taxueseek/argo/main/scripts/install.sh | bash
146
147
 
147
- # Opción 2: npx al paso (recomendado para montar el agente rápido)
148
- npx -y github:taxueseek/argo
148
+ # Opción 2: npm / npx (soportado, versión actual 2.9.9; se publica por tag, versión fija)
149
+ npm install -g argo-search # instala la CLI globalmente
150
+ npx -y argo-search # o úsalo sin instalar
151
+ npx -y github:taxueseek/argo # para seguir el último commit de main
149
152
 
150
153
  # Opción 3: git clone (desarrollo / modificar el código)
151
154
  git clone https://github.com/taxueseek/argo.git
@@ -174,7 +177,7 @@ Argo admite cuatro formas de integración; elige según tu caso:
174
177
  | **MCP Server** | Agente montado de forma permanente | 19 herramientas de búsqueda siempre disponibles; un comando las inyecta en Claude Code / Cursor / Windsurf / Codex / OpenCode / Cline, con copia de seguridad automática antes de escribir la configuración |
175
178
  | **Plugin DSH** | Usuarios de DeepSeek Harness | Se instala con una línea de `dsh plugin add`; búsqueda y fetch pasan a ser herramientas nativas de primera clase, sin conexión MCP y sin coste de contexto permanente; incluye una página de ajustes de seis secciones efectiva al guardar |
176
179
  | **Archivo Skill** | Claude Code / Grok Build / Kimi, etc. | El paquete de habilidades va al directorio de skills del agente; cuando dices «búscame esto» o «verifícalo», él busca solo |
177
- | **npx al paso** | Probar rápido | `npx -y github:taxueseek/argo`, sin instalar; ideal para montar el MCP temporalmente en cualquier cliente |
180
+ | **npx al paso** | Probar rápido | `npx -y argo-search` (versión npm) o `npx -y github:taxueseek/argo` (main), sin instalar; ideal para montar el MCP temporalmente en cualquier cliente |
178
181
 
179
182
  Las cuatro formas comparten el mismo código Python por debajo; la CLI y las herramientas MCP se corresponden una a una, así que elijas la que elijas no pierdes capacidades.
180
183
 
@@ -277,7 +280,7 @@ Los resultados incluyen `selection`, `absorption`, `credibility_fast`, `evidence
277
280
 
278
281
  ## Inicio rápido
279
282
 
280
- Elige cualquier camino. **GitHub es la única fuente de verdad de instalación** (`npx github:taxueseek/argo` o `install.sh`); recomendación actual **v2.9.8**. **No uses `npm install argo-search`** — la copia del registro npm es un **v1.0.1 no oficial y obsoleto** (no es este repo, incompleto, no se actualiza). Este paquete pone `private: true` para no publicarse en npm por error.
283
+ Elige cualquier camino. **La instalación por npm está soportada y la versión actual es 2.9.9**, publicada desde este repo igual que GitHub. La ruta npm usa `npm install -g argo-search` o `npx -y argo-search`, se publica por tag, con versión fija y menos descarga. La ruta GitHub usa `install.sh` / `install.ps1` o `npx github:taxueseek/argo` y sigue main. A partir de ahora, cada tag hace que la CI publique los dos paquetes npm junto con el GitHub Release; el v1.0.1 antiguo del registro es una versión histórica, no fijes esa.
281
284
 
282
285
  **Funciona sin configuración**: sin claves API corren motores gratis + `local_*` locales; los que requieren clave se omiten si faltan (y suelen mejorar cuando están).
283
286
 
@@ -347,9 +350,11 @@ Dos caminos dentro de DeepSeek Harness:
347
350
 
348
351
  ```bash
349
352
  # A: 19 herramientas mcp__argo__* (bundle del paquete principal, igual que el MCP completo)
350
- dsh plugin --profile web add "github:taxueseek/argo"
353
+ dsh plugin --profile web add argo-search # versión npm
354
+ dsh plugin --profile web add "github:taxueseek/argo" # GitHub main
351
355
 
352
356
  # B: herramientas de búsqueda + orquestación wide_research (subpaquete)
357
+ dsh plugin --profile web add @taxueseek/argo-dsh # versión npm
353
358
  dsh plugin --profile web add "github:taxueseek/argo#main&path:packages/dsh-plugin"
354
359
  ```
355
360
 
@@ -460,7 +465,7 @@ python3 scripts/search.py --list-engines
460
465
  | `deep` | investigación, sondeos | calidad primero; más motores |
461
466
  | `budget` | cuota justa | control de cuota; degrada al agotarse |
462
467
 
463
- ### Conjunto aproximado de capacidades (v2.9.8)
468
+ ### Conjunto aproximado de capacidades (v2.9.9)
464
469
 
465
470
  Lo que hace Argo, en una frase: manda cada pregunta a las fuentes adecuadas según dominio e idioma, ordena lo que vuelve por credibilidad y devuelve al agente material que puede ordenar y verificar. Búsqueda, captura, verificación de evidencia y búsqueda de archivos locales comparten una sola tubería, 19 herramientas MCP se corresponden una a una con los comandos CLI, así que ninguna capacidad falta en la forma que instales. Algunos comandos sueltos completan el conjunto: argo tweet empaqueta un post de X, argo auth gestiona el estado de sesión y argo job agrega ofertas de empleo. El catálogo completo, con coste, clave y estado de cada fuente, está en docs/ENGINE_CATALOG.md: 272 fuentes, 235 sin clave, 97 dominios.
466
471
 
@@ -468,6 +473,8 @@ Instalado como plugin DSH, estas capacidades se convierten en herramientas nativ
468
473
 
469
474
  Las últimas versiones arreglaron cada una una clase de problemas.
470
475
 
476
+ v2.9.9 es una versión de seguridad en profundidad y calidad de entrega. El motor de seguridad de contenido puntuaba pero no detenía: una página de inyección de alto riesgo entraba tal cual en la tubería. Ahora todo lo que supera el umbral de riesgo se aísla, el texto limpio sustituye al original y no llega a la puntuación de evidencia. La salida de red gana dos capas de defensa: las redirecciones se validan salto a salto y la dirección resuelta se fija a la conexión, cerrando la ventana de reencadernación DNS. En el despacho, los resultados de motores lentos abandonados por la parada temprana ya no se tiran: se recolectan en segundo plano, se entregan como siempre si terminan dentro de la ventana de gracia y su rendimiento real por fin llega al aprendiz. Un barrido de seis familias de escenarios reales acotó cinco clases de enrutado erróneo: consultas financieras de A-share, diligencia debida / facturación / búsqueda de empresa por persona, práctica legal civil, prospectos de medicamentos y guías de escritura de papers caen donde deben. Novedades: `argo engine add` conecta un motor nuevo en un paso, y la página de ajustes de DSH estrena una tarjeta de observación de rutas con combos de herramientas recomendadas.
477
+
471
478
  v2.9.8 es una versión de precisión de enrutado y cierre del ciclo de feedback. Los tres problemas del issue #18 —«latest» enviado a noticias en tiempo real, people_daily devolviendo su feed por defecto cuando no hay coincidencia, y local_bing coincidiendo solo con «2026»— se reprodujeron y corrigieron. Al reproducir consultas reales por la misma vía se acotaron 16 clases más de falsos disparadores: «nieve» dentro de nombres de marca, «Volcano Engine» dentro de nombres de producto, «iconos» en diagnóstico de UI, «código» dentro de campos mercantiles/financieros y «tipo de cambio» dentro de consultas de código/bibliotecas. Una puerta de cobertura SERP y la validación cruzada CJK evitan que «devolvió algo» cuente como «es relevante». Gracias a @wpp666 por la reproducción y el diagnóstico.
472
479
 
473
480
  v2.9.7 arregló tres problemas antiguos. Cuando una IA dentro de un huésped DSH pedía leer una URL, el huésped usaba su propio capturador, así que redirecciones de enlaces cortos y páginas de desafío JS fallaban de forma estructural mientras la cadena de fetch de argo se quedaba sin uso; esta versión pasa las lecturas del huésped por argo, y esas páginas van de fallar a funcionar, sin cambios en las páginas estáticas. El pool de candidatos de enrutado contenía 18 motores de solo-uso-explícito, y si alguno se auto-seleccionaba el único motor de pago te facturaba en silencio; el pool está limpio ya, y usarlos requiere decirlo. Cada éxito de motor tomaba antes un bloqueo de fichero y reescribía el estado del breaker en disco; los motores sanos ahora cuestan cero E/S de ficheros y la contabilidad multi-motor se confirma en una sola transacción. La licencia también pasó de MIT a Apache-2.0, más cómoda para uso comercial.
@@ -687,12 +694,22 @@ argo/
687
694
 
688
695
  Solo las tres versiones más recientes. El historial completo está en el [historial de cambios](#historial-de-cambios) y el detalle de cada versión en [Releases](https://github.com/taxueseek/argo/releases).
689
696
 
690
- ### Próxima versión: búsqueda de Tencent Yuanbao + tres fuentes más sin clave + lista estructurada de fallos
697
+ ### v2.9.9: seguridad en profundidad + los resultados de fuentes lentas ya no se descartan + cinco clases de enrutado erróneo cerradas
698
+
699
+ - **El texto de alto riesgo ya no llega al contexto**: el motor de seguridad de contenido pasa de «solo puntuar» a «aislar + sustitución limpia»; el texto con `risk_score ≥ 0.5` se reemplaza por su versión limpia y queda fuera de la puntuación de evidencia. Activado por defecto; `ARGO_CONTENT_RISK_GATE=0` para anularlo en emergencia
700
+ - **Defensa en profundidad de la salida de red**: validación de redirecciones salto a salto (`ARGO_MAX_REDIRECTS`, por defecto 5) + resolución y fijación inmediata, cerrando la ventana de reencadernación DNS
701
+ - **Los resultados de fuentes lentas abandonadas por la parada temprana ya no se descartan**: los motores abandonados pasan a recolectarse en segundo plano; lo que termine dentro de `ARGO_TAIL_COMPLETE_S` (por defecto 3 s, 0=apagado) se entrega como siempre y registra una puntuación real, con los resultados fusionados en la caché tras deduplicar
702
+ - **Cinco clases de enrutado erróneo cerradas**: consultas financieras de A-share a `stock_query`, diligencia debida / facturación / persona-a-empresa a `company_search`, práctica legal civil a `flk_law`, prospectos de medicamentos que ya no roba el token «uso», y guías de escritura de papers que ya no caen en búsqueda académica
703
+ - **`argo engine add`**: alta de un motor nuevo en un paso; la cadena manual de spec/env/validación/sincronización/combo/lista blanca se convierte en un solo comando
704
+ - **Aprendizaje por cubos de escenario + paquete de plugin ZCode**: el enrutado ya distingue «fuerte en el dominio A, débil en el B»; canal directo skill+CLI y panel de cero tokens enviados a zcode-plugins
691
705
 
692
- - **Búsqueda de Yuanbao**: fuente china de primera mano y voz oficial, complementaria a la mezcla de portales y autopublicaciones de bocha y byted; ocupa el 2.º puesto del dominio general chino como cobertura de autoridad. Clave: `ARGO_YUANBAO_API_KEY`
693
- - **Tres fuentes más sin clave**: `tavily_free`, `keenable_free` y el retorno anónimo de `exa` funcionan sin configurar ninguna clave
706
+ ### v2.9.8: auditoría de precisión de enrutado + búsqueda de Tencent Yuanbao + tres fuentes más sin clave + lista estructurada de fallos
707
+
708
+ - **issue #18/#19 todos corregidos**: «latest» enviado a noticias en tiempo real, feed por defecto de people_daily, local_bing coincidiendo solo con «2026», validación cruzada CJK siempre 0, caída nocturna con log vacío; 16 clases isomorfas de falsos disparadores acotadas de paso
709
+ - **Búsqueda de Yuanbao**: fuente china de primera mano y voz oficial, en el 2.º puesto del dominio general chino como cobertura de autoridad. Clave: `ARGO_YUANBAO_API_KEY`
710
+ - **Tres fuentes más sin clave**: `tavily_free`, `keenable_free` y el retorno anónimo de `exa`
694
711
  - **Fallos sobre los que se puede actuar**: cada fallo indica su origen y su clase, y dice si reintentar, cambiar de fuente o configurar una clave, junto a un nivel de confianza `meta.uncertainty`
695
- - **Capa de configuración local `config.local.yaml`**: los ajustes de esta máquina ya no se escriben en la configuración pública que acompaña a cada versión
712
+ - **Capa de configuración local `config.local.yaml`**: los ajustes de esta máquina ya no se escriben en la configuración pública
696
713
  - **Nueva sección «Engines» en la página de ajustes de DSH**: los 28 interruptores de comportamiento de argo salen de las variables de entorno y pasan al panel
697
714
 
698
715
  ### v2.9.7: consolidación de arquitectura + el host delega la obtención de páginas en argo + License pasa a Apache-2.0
@@ -703,20 +720,13 @@ Solo las tres versiones más recientes. El historial completo está en el [histo
703
720
  - **Una clave nueva recupera el siguiente salto**: los motores con cuota agotada ya no esperan a que venza su ventana de recuperación, y la caché de enrutado se recalcula
704
721
  - **Ejecutar JS desde crawl / research / MCP ya no se cae**
705
722
 
706
- ### v2.9.6: DeepSeek Search + operadores de consulta + fin del doble pago del mismo POST
707
-
708
- - **Nuevo motor `deepseek_search`**: 445-510 ms, el único de los tres que cubre clasificación de autoridad, rerank_score y fecha de publicación; `--since/--until` funciona de verdad. Se factura por llamada y requiere su propia `DEEPSEEK_API_KEY`; sin clave se omite
709
- - **Operadores de consulta bajo un solo contrato**: `site:` / `-site:` / `-término` / `lang:` / `after:` / `before:` se analizan de forma uniforme, y `site:` aplica un filtrado posterior real
710
- - **El mismo POST ya no se paga dos veces**: la reutilización del pool de conexiones ahorra 320 ms (anysearch) / 561 ms (octen) en la segunda petición de una misma conexión
711
- - **Dos defectos de enlaces y ordenación corregidos**: todos los resultados de un motor puntuaban igual y aplanaban la salida; los redirect shells de Bing sin restaurar costaron sus resultados al 40,2 % de las consultas en 7 días
712
- - **Las decisiones de enrutado tienen puerta de instantánea**: una inversión de rutas se vuelve un golden diffeable en lugar de cambiar en silencio
713
-
714
723
  ---
715
724
 
716
725
  ## Historial de cambios
717
726
 
718
727
  | Versión | Notas |
719
728
  |---------|-------|
729
+ | **v2.9.9** | **Seguridad en profundidad + los resultados de fuentes lentas ya no se descartan + cinco clases de enrutado erróneo cerradas**: texto de alto riesgo aislado con sustitución limpia (fuera de la puntuación de evidencia), validación de redirecciones salto a salto y fijación contra reencadernación DNS; las fuentes lentas abandonadas por la parada temprana se recolectan en segundo plano (`ARGO_TAIL_COMPLETE_S`) y registran su puntuación real; un barrido de seis familias de escenarios reales cierra el enrutado erróneo de academia/finanzas/empresas/legal/farma; además `argo engine add` en un paso, aprendizaje por cubos de escenario y el paquete de plugin ZCode. Ver [notas de la versión](docs/RELEASE_NOTES_v2.9.9.md). |
720
730
  | **v2.9.8** | **Auditoría de precisión de enrutado + fixes de issue #18/#19 + aislamiento de estado en tests**: reproducción de consultas reales y acotado de 16 clases de falsos disparadores (marcas, productos, campos, subcadenas ASCII); puerta de cobertura SERP y validación cruzada CJK; ledger nocturno con log vacío, feed por defecto de people_daily y guardia de caché corregidos; estado adaptive/breaker aislado por test. Gracias a @wpp666 por la reproducción y el diagnóstico. Ver [notas de la versión](docs/RELEASE_NOTES_v2.9.8.md). |
721
731
  | **v2.9.7** | **Consolidación de arquitectura + seam web_fetch DSH + License a Apache-2.0**: MIT → Apache 2.0; el fetch del huésped pasa por argo (redirect shells, desafíos JS); 18 motores de invocación explícita fuera del pool, para que el modo auto no facture por error. |
722
732
  | **v2.9.6** | **Motor DeepSeek Search + contrato de operadores de consulta + agrupación de conexiones + puerta de instantáneas de enrutado**: `deepseek_search` nuevo y activo por defecto (se omite sin clave): 445-510 ms con `--since`/`--until`; conexiones agrupadas ahorran 320-561 ms; `site:` y `lang:` filtran de verdad. |
package/README.ja.md CHANGED
@@ -24,7 +24,7 @@
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.8-informational">
27
+ <img alt="version" src="https://img.shields.io/badge/version-2.9.9-informational">
28
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>
@@ -57,7 +57,8 @@ Argo の能力は四つのサブスキル(sub-skills)で構成され、各
57
57
  Argo は DeepSeek Harness のプラグインでもあり、一行のコマンドでインストールできます:
58
58
 
59
59
  ```bash
60
- dsh plugin --profile web add "github:taxueseek/argo"
60
+ dsh plugin --profile web add argo-search # npm リリース版
61
+ dsh plugin --profile web add "github:taxueseek/argo" # GitHub main
61
62
  ```
62
63
 
63
64
  インストール後に `dsh web` を再起動すれば有効になります。検索と取得がネイティブの一等ツールになり、MCP 接続に依存せず、常駐コンテキストのオーバーヘッドもありません。ほかに `wide_research` の並列リサーチが 1 つ、MCP ツールが 19 あり、必要に応じて有効化できます。接続形態の全体像は後述します。
@@ -144,8 +145,10 @@ dsh plugin --profile web add "github:taxueseek/argo"
144
145
  # 方法 1:ワンコマンドスクリプト(本機で長期利用に推奨)
145
146
  curl -fsSL https://raw.githubusercontent.com/taxueseek/argo/main/scripts/install.sh | bash
146
147
 
147
- # 方法 2:npx で即時利用(Agent への素早いマウントに推奨)
148
- npx -y github:taxueseek/argo
148
+ # 方法 2:npm / npx(対応済み、現在 2.9.9。tag ごとに公開、バージョン固定)
149
+ npm install -g argo-search # CLI をグローバルインストール
150
+ npx -y argo-search # またはインストールせず即時利用
151
+ npx -y github:taxueseek/argo # main の最新コミットに追従したい場合
149
152
 
150
153
  # 方法 3:git clone(開発 / ソース変更)
151
154
  git clone https://github.com/taxueseek/argo.git
@@ -174,7 +177,7 @@ Argo は四つの接続方式をサポートします。場面に合わせて選
174
177
  | **MCP Server** | Agent への常駐マウント | 19 の検索ツールがいつでも使え、コマンド一つで Claude Code / Cursor / Windsurf / Codex / OpenCode / Cline に注入。設定を書く前に自動バックアップ |
175
178
  | **DSH プラグイン** | DeepSeek Harness ユーザー | `dsh plugin add` 一行でインストールでき、検索と取得がネイティブの一等ツールになる。MCP 接続に依存せず、常駐コンテキストのオーバーヘッドもない。保存即有効の 6 分区設定ページ同梱 |
176
179
  | **Skill ファイル** | Claude Code / Grok Build / Kimi など | スキルパッケージを Agent のスキルディレクトリに入れる。「ちょっと調べて」「事実確認して」と言えば自分で検索する |
177
- | **npx 即時利用** | さっと試したい | `npx -y github:taxueseek/argo`。インストール不要で、任意のクライアントに一時的に MCP を載せるのに向く |
180
+ | **npx 即時利用** | さっと試したい | `npx -y argo-search`(npm リリース版)または `npx -y github:taxueseek/argo`(main)。インストール不要で、任意のクライアントに一時的に MCP を載せるのに向く |
178
181
 
179
182
  四つの形態は土台が同じ Python コードで、CLI と MCP ツールは一対一に対応し、どれを入れても能力は欠けません。
180
183
 
@@ -277,7 +280,7 @@ freshness ≈ 公開時刻(「2015 年以来」のような歴史比較年は
277
280
 
278
281
  ## クイックスタート
279
282
 
280
- どれか 1 つで十分です。**インストールの来源は GitHub のみ**(`npx github:taxueseek/argo` または `install.sh`)、現在推奨 **v2.9.8**。**`npm install argo-search` は使わないでください**——npm registry 上のそれは**非公式の古い v1.0.1**(本リポジトリ外、機能不足、更新されない)。本パッケージは `private: true` で npm 誤公開を防ぎます。
283
+ どれか 1 つで十分です。**npm インストールに対応済みで、最新版は 2.9.9**。GitHub と同じく本リポジトリから公開しています。npm 経由は `npm install -g argo-search` または `npx -y argo-search`、tag ごとに公開され、バージョンが固定されダウンロードも小さい。GitHub 経由は `install.sh` / `install.ps1` または `npx github:taxueseek/argo` で main に追従。今後は tag を打つたびに CI が npm の 2 パッケージと GitHub Release をまとめて公開します。registry 上の古い v1.0.1 は履歴版なので、それに固定しないでください。
281
284
 
282
285
  **ゼロ設定で動く**:API Key なしなら無料エンジン + ローカル `local_*`。Key があるソースは品質が上がりやすく、無いものは自動スキップ。
283
286
 
@@ -347,9 +350,11 @@ DeepSeek Harness では 2 通り:
347
350
 
348
351
  ```bash
349
352
  # A:mcp__argo__* ツール 19 個(メインパッケージ bundle、MCP 全量と同じ)
350
- dsh plugin --profile web add "github:taxueseek/argo"
353
+ dsh plugin --profile web add argo-search # npm リリース版
354
+ dsh plugin --profile web add "github:taxueseek/argo" # GitHub main
351
355
 
352
356
  # B:検索ツール + wide_research 並列研究オーケストレーション(サブパッケージ)
357
+ dsh plugin --profile web add @taxueseek/argo-dsh # npm リリース版
353
358
  dsh plugin --profile web add "github:taxueseek/argo#main&path:packages/dsh-plugin"
354
359
  ```
355
360
 
@@ -460,7 +465,7 @@ python3 scripts/search.py --list-engines
460
465
  | `deep` | 調査・総説 | 品質優先、エンジン増可 |
461
466
  | `budget` | 枠が厳しい | クォータ制御、使い切ると劣化 |
462
467
 
463
- ### 現時点の能力概要(v2.9.8)
468
+ ### 現時点の能力概要(v2.9.9)
464
469
 
465
470
  Argo のやることを一行で言うと、質問を領域と言語で適切なソースに振り分け、返ってきた結果を信頼度で並べ、エージェントには並べ替えられ検証できる素材を渡す。検索・取得・証拠確認・ローカルファイル検索は同じパイプラインを流れ、19 個の MCP ツールは CLI コマンドと一対一で対応するので、どの形态で入れても能力は欠けない。単独コマンドもいくつかある:argo tweet は X 投稿をまとめ、argo auth はログイン状态を管理し、argo job は採用情報を集約する。全ソースの費用・键・状态は docs/ENGINE_CATALOG.md に清单されている:272 ソース、235 無設定、97 ドメイン。
466
471
 
@@ -468,6 +473,8 @@ DSH プラグインとして入れると、これらの能力は宿主のネイ
468
473
 
469
474
  最近数版が、それぞれ一类の問題を直した。
470
475
 
476
+ v2.9.9 はセキュリティと提供品質の版です。コンテンツセキュリティエンジンは採点だけで止めていなかったため、高リスクの注入ページがそのまま文脈に入っていました。今は閾値を超えると隔離し、洗浄済みの本文で差し替え、証拠スコアにも入りません。ネットワーク出口には二つの防御を追加しました。リダイレクトはホップごとに検証し、DNS 解決の結果は当該接続に釘付けします。ディスパッチ側では、早期停止で打ち切られた遅いエンジンの成果をもう捨てません。バックグラウンドで回収し、猶予時間内に完成すれば通常どおり提供して学習器に実績を記録します。ルーティングは六族の実シナリオ走査で五類の誤ルーティングを収めました。A 株の財務クエリ、企業デューデリ/インボイス/人から会社を探す、民事実務、薬の説明書、論文執筆 howto がそれぞれ所定の場所へ。ほかに argo engine add で新エンジンを一段階で接続でき、DSH 設定ページにはルーティング観測カードとツール推奨コンボが加わりました。
477
+
471
478
  v2.9.8 はルーティング精度とフィードバック閉環の版です。issue #18 の三つ——「latest」がリアルタイムニュースに誤判定される、people_daily が一致しないときに既定 feed を返す、local_bing が「2026」だけに一致する——をすべて再現して修正しました。同じ観点で実クエリを再生し、さらに 16 クラスの誤発火を絞り込みました。ブランド名の「雪」、製品名の「火山引擎」、UI トラブルシュートの「アイコン」、工商・金融フィールドの「コード」、コード文脈の「為替レート」などです。SERP カバレッジゲートと CJK クロス検証も入れ、「結果が返った=関連がある」とは限らないようにしました。再現と特定に協力してくれた @wpp666 に感謝します。
472
479
 
473
480
  v2.9.7 が直したのは三つの古い毛病。DSH 宿主内の AI が URL を読むとき、宿主自身の取集を使っていたため、短链ジャンプや JS チャレンジページは构造的に失败しがちで、argo の取得链は出番がなかった;この版で宿主の読込が argo を流れるようになり、そうしたページは失败から成功に変わり、普通のページは変わらない。路由候选池には 18 个の明示専用エンジンが混在し、自动选択されれば唯一の有料エンジンが密かに课金される风险があった;今は候选池になく、使うには明示が必要。エンジンが成功するたびに熔断器がファイル锁でディスクを书き换えていた;健全状态ではファイル开销がゼロになり、复数エンジンの记账も一件のトランザクションにまとまる。License は MIT から Apache-2.0 に変わり、商用での利用は安心感が増した。
@@ -687,12 +694,22 @@ argo/
687
694
 
688
695
  直近 3 バージョンのみを載せています。完全な履歴は[更新履歴](#更新履歴)、各版の詳細は [Releases](https://github.com/taxueseek/argo/releases) を参照してください。
689
696
 
690
- ### 次期バージョン:Tencent Yuanbao 検索 + キー不要ソース 3 件 + 構造化された失敗リスト
697
+ ### v2.9.9:多層セキュリティ + 遅いソースの成果を捨てない + 誤ルーティング五類の収口
698
+
699
+ - **高リスク本文は文脈に入らない**:コンテンツセキュリティエンジンを「採点のみ」から「隔離+洗浄差し替え」へ昇格。`risk_score ≥ 0.5` の本文は洗浄版で置き換えられ、証拠スコアには入りません。既定で有効、`ARGO_CONTENT_RISK_GATE=0` で緊急解除
700
+ - **ネットワーク出口の多層防御**:リダイレクトのホップごと検証(`ARGO_MAX_REDIRECTS`、既定 5)+ 解決即釘付けで DNS リバインディング窓を封鎖
701
+ - **早期停止で打ち切られた遅いソースの成果をもう捨てない**:打ち切られたエンジンはバックグラウンド回収へ。`ARGO_TAIL_COMPLETE_S`(既定 3 秒、0=無効)内に完成すれば通常どおり提供し、実績を学習器に記録、成果は重複排除してキャッシュへ統合
702
+ - **誤ルーティング五類を収口**:A 株財務クエリは `stock_query` へ、企業デューデリ/インボイス/人から会社は `company_search` へ、民事実務は `flk_law` へ、薬の説明書は「用法」に奪われず、論文執筆 howto は学術検索に落ちない
703
+ - **`argo engine add`**:新エンジンを一段階で接続。spec/env/検証/同期/combo/許可リストの手作業チェーンを一コマンドに
704
+ - **シナリオ別バケット学習 + ZCode プラグインパッケージ**:ルーティングが「エンジンは A ドメインに強く B ドメインに弱い」を区別できるように。skill+CLI 直結とゼロトークンパネルを zcode-plugins へ提供
691
705
 
692
- - **Yuanbao 検索を追加**:中国語の一次情報・公式系ソースで、bocha / byted の「ポータル+セルフメディア」を補完します。中国語汎用ドメインの 2 番目に置き、権威ソースのヘッジとします。キーは `ARGO_YUANBAO_API_KEY`
693
- - **キー不要で使えるソースを 3 件追加**:`tavily_free`、`keenable_free`、`exa` の匿名フォールバック。キーを一切設定しなくても使えます
706
+ ### v2.9.8:ルーティング精度監査 + Tencent Yuanbao 検索 + キー不要ソース 3 件 + 構造化された失敗リスト
707
+
708
+ - **issue #18/#19 を全修正**:「latest」の誤判定、people_daily の既定 feed、local_bing の「2026」のみ一致、中国語クロス検証が恒常 0、nightly の空ログクラッシュ。同型の誤発火 16 クラスもさらに絞り込み
709
+ - **Yuanbao 検索を追加**:中国語の一次情報・公式系ソース。中国語汎用ドメインの 2 番目に置き、権威ソースのヘッジとします。キーは `ARGO_YUANBAO_API_KEY`
710
+ - **キー不要で使えるソースを 3 件追加**:`tavily_free`、`keenable_free`、`exa` の匿名フォールバック
694
711
  - **失敗の内容に応じて対処できる**:失敗はソースと種別ごとに「再試行 / ソース切替 / キー設定」と助言を示し、`meta.uncertainty` の信頼度も付きます
695
- - **ローカル設定オーバーレイ `config.local.yaml`**:このマシン固有の調整が、各版に同梱される公開設定に書き込まれなくなります
712
+ - **ローカル設定オーバーレイ `config.local.yaml`**:このマシン固有の調整が公開設定に書き込まれなくなります
696
713
  - **DSH 設定ページに「エンジン」セクションを追加**:argo 本体の 28 個の挙動スイッチを環境変数からパネルへ移しました
697
714
 
698
715
  ### v2.9.7:アーキテクチャの収束 + ホストのページ取得を argo へ + License を Apache-2.0 に
@@ -703,20 +720,13 @@ argo/
703
720
  - **新しいキーなら次のホップで復帰**:クォータを使い切ったエンジンが復帰を待たなくなり、ルーティングキャッシュも再計算されます
704
721
  - **crawl / research / MCP から JS を実行しても落ちない**
705
722
 
706
- ### v2.9.6:DeepSeek Search 対応 + クエリ演算子 + 同じ POST の二重課金を解消
707
-
708
- - **新しい `deepseek_search` エンジン**:445-510ms で、権威階層・rerank_score・公開時刻の 3 項目すべてをカバーするのは 3 エンジン中これだけ。`--since/--until` が本当に効きます。従量課金で `DEEPSEEK_API_KEY` が必須、キーがなければ自動でスキップします
709
- - **クエリ演算子を 1 つの契約に集約**:`site:` / `-site:` / `-語` / `lang:` / `after:` / `before:` を統一的に解釈し、`site:` は実際の絞り込みとして動作します
710
- - **同じ POST に二度払いしない**:接続プールの再利用で、同じ接続の 2 回目のリクエストが 320ms(anysearch)/ 561ms(octen)節約されます
711
- - **リンク解決と並び順の 2 件を修正**:同一エンジンの結果が同点で出力が平坦になっていた問題と、Bing のリダイレクト用中間ページを復元できず直近 7 日で 40.2% のクエリが結果を得られなかった問題
712
- - **ルーティング判断にスナップショットゲートを追加**:経路の反転が黙って起きず、diff 可能な golden になります
713
-
714
723
  ---
715
724
 
716
725
  ## 更新履歴
717
726
 
718
727
  | 版 | 内容 |
719
728
  |----|------|
729
+ | **v2.9.9** | **多層セキュリティ + 遅いソースの成果を捨てない + 誤ルーティング五類の収口**:高リスク本文の隔離+洗浄差し替え(証拠スコアから除外)、リダイレクトのホップごと検証と DNS リバインディング封鎖。早期停止で打ち切られた遅いソースはバックグラウンド回収(`ARGO_TAIL_COMPLETE_S`)で実績を学習器に記録。六族の実シナリオ走査で学術/財務/企業/法律/医薬の誤ルーティングを収口。`argo engine add` の一段階接続、シナリオ別バケット学習、ZCode プラグインパッケージ。詳細は [リリースノート](docs/RELEASE_NOTES_v2.9.9.md)。 |
720
730
  | **v2.9.8** | **ルーティング精度監査 + issue #18/#19 修正 + テスト状態の隔離**:実クエリ再生で 16 クラスの誤発火(ブランド名・製品名・フィールド名・ASCII 部分文字列)を絞り込み、SERP カバレッジゲートと CJK クロス検証を追加。nightly の空ログ、people_daily の既定 feed、キャッシュ命中ガードを修正し、adaptive/breaker 状態をテストごとに隔離。再現と特定に協力してくれた @wpp666 に感謝。詳細は [リリースノート](docs/RELEASE_NOTES_v2.9.8.md)。 |
721
731
  | **v2.9.7** | **アーキテクチャ収束 + DSH web_fetch 連携 + License を Apache-2.0 へ**:宿主の web_fetch を argo の取得チェーンに接続し、JS チャレンジページとクロスオリジンのリダイレクトが失敗から成功に;明示指定専用の 18 エンジンをルーティング候補プールから外し、auto モードの有料エンジン誤課金を遮断。 |
722
732
  | **v2.9.6** | **DeepSeek Search 対応 + クエリ演算子契約 + 伝送層の二重課金解消**:新エンジン `deepseek_search` が既定で有効(445-510ms、権威階層・rerank_score・公開時刻を唯一すべてカバー);クエリ演算子を 1 つの契約層に集約し、`site:` が実際の絞り込みとして動作。 |
package/README.ko.md CHANGED
@@ -24,7 +24,7 @@
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.8-informational">
27
+ <img alt="version" src="https://img.shields.io/badge/version-2.9.9-informational">
28
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>
@@ -57,7 +57,8 @@ Argo의 능력은 네 개의 하위 스킬(sub-skills)로 구성되며, 각 하
57
57
  Argo는 DeepSeek Harness 플러그인이기도 하며, 명령 한 줄로 설치합니다:
58
58
 
59
59
  ```bash
60
- dsh plugin --profile web add "github:taxueseek/argo"
60
+ dsh plugin --profile web add argo-search # npm 릴리스판
61
+ dsh plugin --profile web add "github:taxueseek/argo" # GitHub main
61
62
  ```
62
63
 
63
64
  설치 후 `dsh web`을 재시작하면 적용됩니다. 검색과 긁기가 네이티브 1급 도구가 되어 MCP 연결에 의존하지 않고 상주 컨텍스트 비용도 차지하지 않습니다. 그 외 `wide_research` 병렬 리서치 1개와 MCP 도구 19개를 필요할 때 켤 수 있습니다. 전체 연동 형태는 아래에서.
@@ -144,8 +145,10 @@ dsh plugin --profile web add "github:taxueseek/argo"
144
145
  # 방식 1: 원클릭 스크립트(로컬 장기 사용 권장)
145
146
  curl -fsSL https://raw.githubusercontent.com/taxueseek/argo/main/scripts/install.sh | bash
146
147
 
147
- # 방식 2: npx 즉시 사용(에이전트 빠른 마운트 권장)
148
- npx -y github:taxueseek/argo
148
+ # 방식 2: npm / npx(지원됨, 현재 2.9.9, tag마다 배포·버전 고정)
149
+ npm install -g argo-search # CLI 전역 설치
150
+ npx -y argo-search # 또는 설치 없이 즉시 사용
151
+ npx -y github:taxueseek/argo # main 최신 커밋을 따라가려면 이 명령
149
152
 
150
153
  # 방식 3: git clone(개발 / 소스 수정)
151
154
  git clone https://github.com/taxueseek/argo.git
@@ -174,7 +177,7 @@ Argo는 네 가지 연동 방식을 지원합니다. 시나리오에 맞게 고
174
177
  | **MCP Server** | 에이전트 상주 마운트 | 19개 검색 도구를 언제든 사용, 명령 한 줄로 Claude Code / Cursor / Windsurf / Codex / OpenCode / Cline에 주입, 설정 작성 전 자동 백업 |
175
178
  | **DSH 플러그인** | DeepSeek Harness 사용자 | `dsh plugin add` 한 줄로 설치, 검색과 긁기가 네이티브 1급 도구가 되어 MCP 연결에 의존하지 않고 상주 컨텍스트도 차지하지 않음. 저장 즉시 적용되는 6개 구역 설정 페이지 내장 |
176
179
  | **Skill 파일** | Claude Code / Grok Build / Kimi 등 | 스킬 패키지를 에이전트의 스킬 디렉터리에 넣으면 「좀 찾아봐」「확인해봐」에 알아서 검색 |
177
- | **npx 즉시 사용** | 빠르게 시험 | `npx -y github:taxueseek/argo`, 설치 없이 임시로 아무 클라이언트에 MCP를 붙이기 좋음 |
180
+ | **npx 즉시 사용** | 빠르게 시험 | `npx -y argo-search`(npm 릴리스판) 또는 `npx -y github:taxueseek/argo`(main), 설치 없이 임시로 아무 클라이언트에 MCP를 붙이기 좋음 |
178
181
 
179
182
  네 가지 형태의 밑바탕은 같은 Python 코드이며, CLI와 MCP 도구는 일대일로 대응하므로 어느 형태로 설치해도 능력이 빠지지 않습니다.
180
183
 
@@ -277,7 +280,7 @@ composite ≈ 0.40·selection + 0.35·absorption + 0.15·freshness + 0.10·engi
277
280
 
278
281
  ## 빠른 시작
279
282
 
280
- 경로를 고르면 됩니다. **설치 진원은 GitHub뿐입니다**(`npx github:taxueseek/argo` 또는 `install.sh`); 현재 권장 **v2.9.8**. **`npm install argo-search`는 쓰지 마세요** — npm 레지스트리 사본은 **비공식 낡은 v1.0.1**(이 저장소가 아님, 기능 부족, 갱신 안 됨). 이 패키지는 `private: true`로 npm 오배포를 막습니다.
283
+ 경로를 고르면 됩니다. **npm 설치를 지원하며 최신 버전은 2.9.9**, GitHub와 마찬가지로 이 저장소에서 배포합니다. npm 경로는 `npm install -g argo-search` 또는 `npx -y argo-search`로 tag마다 배포되어 버전이 고정되고 다운로드도 작습니다. GitHub 경로는 `install.sh` / `install.ps1` 또는 `npx github:taxueseek/argo`로 main을 따릅니다. 앞으로는 tag를 만들 때마다 CI가 npm 두 패키지와 GitHub Release를 함께 배포합니다. registry의 낡은 v1.0.1은 역사 버전이니 고정하지 마세요.
281
284
 
282
285
  **제로 설정으로 동작**: API 키 없이도 무료 엔진 + 로컬 `local_*` 엔진이 돌고, 키 없는 엔진은 스킵됩니다(키가 있으면 보통 더 좋습니다).
283
286
 
@@ -347,9 +350,11 @@ DeepSeek Harness에는 두 가지 설치:
347
350
 
348
351
  ```bash
349
352
  # A: mcp__argo__* 도구 19개 (메인 패키지 bundle, MCP 전량과 동일)
350
- dsh plugin --profile web add "github:taxueseek/argo"
353
+ dsh plugin --profile web add argo-search # npm 릴리스판
354
+ dsh plugin --profile web add "github:taxueseek/argo" # GitHub main
351
355
 
352
356
  # B: 검색 도구 + wide_research 병렬 연구 오케스트레이션 (서브패키지)
357
+ dsh plugin --profile web add @taxueseek/argo-dsh # npm 릴리스판
353
358
  dsh plugin --profile web add "github:taxueseek/argo#main&path:packages/dsh-plugin"
354
359
  ```
355
360
 
@@ -460,7 +465,7 @@ python3 scripts/search.py --list-engines
460
465
  | `deep` | 연구, 조사 | 품질 우선, 엔진 더 허용 |
461
466
  | `budget` | 할당량 타이트 | 쿼터 제어, 소진 시 저하 |
462
467
 
463
- ### 대략적인 능력 세트 (v2.9.8)
468
+ ### 대략적인 능력 세트 (v2.9.9)
464
469
 
465
470
  Argo가 하는 일을 한 줄로 말하면, 질문을 도메인과 언어로 알맞은 소스에 보내고, 돌아온 결과를 신뢰도로 줄세워, 에이전트에는 줄세우고 검증할 수 있는 재료를 넘긴다. 검색·긁기·증거 확인·로컬 파일 검색은 같은 파이프라인을 흐르고, 19개 MCP 도구는 CLI 명령과 일대일로 대응하므로 어떤 형태로 설치해도 능력이 빠지지 않는다. 단독 명령도 몇 개 있다: argo tweet은 X 게시물을 묶고, argo auth는 로그인 상태를 관리하며, argo job은 채용 정보를 모은다. 전체 소스의 비용·키·상태는 docs/ENGINE_CATALOG.md에 있다: 272 소스, 235 무설정, 97 도메인.
466
471
 
@@ -468,6 +473,8 @@ DSH 플러그인으로 설치하면 이 능력들이 호스트의 네이티브
468
473
 
469
474
  최근 몇 판이 각자 한 부류의 문제를 고쳤다.
470
475
 
476
+ v2.9.9는 보안과 제공 품질의 판이다. 콘텐츠 보안 엔진은 채점만 하고 막지 않아 고위험 주입 페이지가 그대로 컨텍스트에 들어갔다. 이제 임계값을 넘으면 격리하고, 세척된 본문으로 갈아치우며, 증거 점수에도 들어가지 않는다. 네트워크 출구에는 두 겹의 방어가 더해졌다. 리다이렉트는 홉마다 검증하고, DNS 해석 결과는 해당 연결에 못 박는다. 디스패치 쪽에서는 조기 중단으로 버려진 느린 엔진의 결과를 더 이상 버리지 않는다. 백그라운드에서 회수하고, 유예 시간 안에 끝나면 평소처럼 제공하며 학습기에 실제 성적을 기록한다. 라우팅은 여섯 부류의 실전 시나리오 스캔으로 다섯 부류의 오라우팅을 거뒀다. A주 금융 쿼리, 기업 듀딜리전스/개표/사람으로 회사 찾기, 민사 실무, 약 설명서, 논문 작성 하우투가 제자리를 찾는다. 이번 판에 argo engine add로 새 엔진을 한 단계에 붙일 수 있고, DSH 설정 페이지에는 라우팅 관측 카드와 도구 추천 조합이 생겼다.
477
+
471
478
  v2.9.8은 라우팅 정밀도와 피드백 루프를 닫는 버전입니다. issue #18의 세 가지 —「latest」가 실시간 뉴스로 잘못 분류됨, people_daily가 일치하지 않을 때 기본 feed를 반환함, local_bing이 「2026」만 매칭함 — 을 모두 재현해 고쳤습니다. 같은 관점으로 실제 쿼리를 재생해 16개 클래스의 오탐을 더 좁혔습니다. 브랜드명 속 「눈」, 제품명 속 「火山引擎」, UI 트러블슈팅의 「아이콘」, 상공/금융 필드의 「코드」, 코드 문맥의 「환율」 등입니다. SERP 커버리지 게이트와 CJK 교차 검증도 넣어 「결과가 나왔다=관련 있다」로 끝나지 않게 했습니다. 재현과 진단을 도와준 @wpp666에게 감사합니다.
472
479
 
473
480
  v2.9.7이 고친 것은 세 개의 오래된 병이다. DSH 호스트 안의 AI가 URL을 읽을 때 호스트 자체 긁기를 써서 단축 링크 점프·JS 챌린지 페이지가 구조적으로 실패하기 일쑤였고, argo의 긁기 체인은 쓸 일이 없었다; 이 판에 호스트 읽기가 argo를 흘러 그런 페이지가 실패→성공으로 바뀌고, 일반 페이지는 그대로다. 라우팅 후보 풀에 명시 전용 18개 엔진이 섞여 자동 선택되면 유일한 유료 엔진이 조용히 과금될 위험이 있었는데, 지금은 후보 풀에 없고 쓰려면 명시해야 한다. 엔진이 성공할 때마다 회로 차단기가 파일 잠금으로 디스크를 다시 썼는데, 건강 상태에서는 파일 오버헤드가 제로이고 다중 엔진 부기도 한 트랜잭션에 합쳐진다. License도 MIT에서 Apache-2.0으로 바뀌어 상용 이용이 한결 편해졌다.
@@ -687,12 +694,22 @@ argo/
687
694
 
688
695
  최근 세 버전만 싣습니다. 전체 이력은 [변경 이력](#변경-이력), 각 버전의 상세는 [Releases](https://github.com/taxueseek/argo/releases)에서 볼 수 있습니다.
689
696
 
690
- ### 다음 버전: Tencent Yuanbao 검색 + 키 불필요 소스 3종 + 구조화된 실패 목록
697
+ ### v2.9.9: 다층 보안 + 느린 소스 결과를 버리지 않음 + 오라우팅 다섯 부류 수습
698
+
699
+ - **고위험 본문은 컨텍스트에 들어가지 않습니다**: 콘텐츠 보안 엔진이 「채점만」에서 「격리+세척 치환」으로 올라갑니다. `risk_score ≥ 0.5` 본문은 세척본으로 대체되고 증거 점수에서 제외됩니다. 기본 활성, `ARGO_CONTENT_RISK_GATE=0`로 비상 해제
700
+ - **네트워크 출구 다층 방어**: 리다이렉트 홉별 검증(`ARGO_MAX_REDIRECTS`, 기본 5) + 해석 즉시 고정으로 DNS 리바인딩 창을 막습니다
701
+ - **조기 중단으로 버려진 느린 소스의 결과를 다시 버리지 않습니다**: 버려진 엔진은 백그라운드 회수로 넘어가고, `ARGO_TAIL_COMPLETE_S`(기본 3초, 0=끔) 안에 끝나면 평소처럼 제공되며 실제 성적이 학습기에 기록되고, 결과는 중복 제거해 캐시에 통합됩니다
702
+ - **오라우팅 다섯 부류 수습**: A주 금융 쿼리는 `stock_query`로, 기업 듀딜리전스/개표/사람으로 회사 찾기는 `company_search`로, 민사 실무는 `flk_law`로, 약 설명서는 「용법」에 뺏기지 않고, 논문 작성 하우투는 학술 검색으로 떨어지지 않습니다
703
+ - **`argo engine add`**: 새 엔진을 한 단계에 연결합니다. spec/env/검증/동기화/combo/허용 목록의 수작업 사슬을 한 명령으로
704
+ - **시나리오 버킷 학습 + ZCode 플러그인 패키지**: 라우팅이 「A 도메인에 강하고 B 도메인에 약함」을 구분할 수 있게 됩니다. skill+CLI 직결과 제로 토큰 패널을 zcode-plugins에 제공
691
705
 
692
- - **Yuanbao 검색 추가**: 중국어 1차 정보·공식 성격 소스로, bocha / byted의 포털·자체 미디어 조합을 보완합니다. 중국어 범용 도메인 2순위에 두어 권위 소스 헤지로 씁니다. 키는 `ARGO_YUANBAO_API_KEY`
693
- - **키 없이 쓸 수 있는 소스 3종 추가**: `tavily_free`, `keenable_free`, `exa` 익명 폴백. 키를 전혀 설정하지 않아도 동작합니다
706
+ ### v2.9.8: 라우팅 정밀도 감사 + Tencent Yuanbao 검색 + 키 불필요 소스 3종 + 구조화된 실패 목록
707
+
708
+ - **issue #18/#19 전부 수정**: 「latest」오분류, people_daily 기본 feed, local_bing 「2026」만 매칭, 중국어 교차 검증 항상 0, nightly 빈 로그 크래시. 동형 오탐 16개 클래스도 더 좁혔습니다
709
+ - **Yuanbao 검색 추가**: 중국어 1차 정보·공식 성격 소스. 중국어 범용 도메인 2순위에 두어 권위 소스 헤지로 씁니다. 키는 `ARGO_YUANBAO_API_KEY`
710
+ - **키 없이 쓸 수 있는 소스 3종 추가**: `tavily_free`, `keenable_free`, `exa` 익명 폴백
694
711
  - **실패에 대응할 수 있습니다**: 실패마다 소스와 유형을 밝히고 재시도 / 소스 교체 / 키 설정과 권고를 제시하며, `meta.uncertainty` 신뢰도도 함께 옵니다
695
- - **로컬 설정 오버레이 `config.local.yaml`**: 이 머신의 조정 값이 매 버전에 동봉되는 공개 설정에 더 이상 기록되지 않습니다
712
+ - **로컬 설정 오버레이 `config.local.yaml`**: 이 머신의 조정 값이 공개 설정에 더 이상 기록되지 않습니다
696
713
  - **DSH 설정 페이지에 엔진 섹션 추가**: argo 본체의 28개 동작 스위치를 환경 변수에서 패널로 옮겼습니다
697
714
 
698
715
  ### v2.9.7: 아키텍처 수렴 + 호스트 페이지 가져오기를 argo로 + License를 Apache-2.0으로
@@ -703,20 +720,13 @@ argo/
703
720
  - **새 키로 바꾸면 다음 홉에서 복구**: 쿼터를 소진한 엔진이 복구를 기다리지 않으며 라우팅 캐시도 다시 계산됩니다
704
721
  - **crawl / research / MCP에서 JS를 실행해도 죽지 않습니다**
705
722
 
706
- ### v2.9.6: DeepSeek Search 연동 + 쿼리 연산자 + 같은 POST 이중 과금 해소
707
-
708
- - **새 `deepseek_search` 엔진**: 445-510ms이며, 권위 등급·rerank_score·게시 시각 세 항목을 모두 갖춘 것은 세 엔진 중 이것뿐입니다. `--since/--until`이 실제로 동작합니다. 호출당 과금이고 `DEEPSEEK_API_KEY`가 필요하며, 키가 없으면 자동으로 건너뜁니다
709
- - **쿼리 연산자를 하나의 계약으로 통합**: `site:` / `-site:` / `-단어` / `lang:` / `after:` / `before:`를 일관되게 해석하고, `site:`는 실제 후처리 필터로 동작합니다
710
- - **같은 POST에 두 번 과금하지 않습니다**: 연결 풀 재사용으로 같은 연결의 두 번째 요청에서 320ms(anysearch) / 561ms(octen)를 아낍니다
711
- - **링크 해석과 정렬 결함 2건 수정**: 같은 엔진 결과가 모두 동점이라 출력이 평탄해지던 문제, Bing 리다이렉트 껍질을 복원하지 못해 최근 7일 동안 쿼리의 40.2%가 결과를 얻지 못하던 문제
712
- - **라우팅 판단에 스냅샷 게이트 추가**: 경로 반전이 조용히 일어나지 않고 diff 가능한 golden이 됩니다
713
-
714
723
  ---
715
724
 
716
725
  ## 변경 이력
717
726
 
718
727
  | 버전 | 비고 |
719
728
  |---------|-------|
729
+ | **v2.9.9** | **다층 보안 + 느린 소스 결과를 버리지 않음 + 오라우팅 다섯 부류 수습**: 고위험 본문 격리+세척 치환(증거 점수 제외), 리다이렉트 홉별 검증과 DNS 리바인딩 차단. 조기 중단으로 버려진 느린 소스는 백그라운드 회수(`ARGO_TAIL_COMPLETE_S`)로 실제 성적을 학습기에 기록. 여섯 부류 실전 시나리오 스캔으로 학술/금융/기업/법률/의약 오라우팅을 수습. `argo engine add` 한 단계 연결, 시나리오 버킷 학습, ZCode 플러그인 패키지. 자세한 내용은 [릴리스 노트](docs/RELEASE_NOTES_v2.9.9.md). |
720
730
  | **v2.9.8** | **라우팅 정밀도 감사 + issue #18/#19 수정 + 테스트 상태 격리**: 실제 쿼리 재생으로 16개 클래스 오탐(브랜드/제품명, 필드명, ASCII 부분 문자열)을 좁히고, SERP 커버리지 게이트와 CJK 교차 검증을 추가했습니다. nightly 빈 로그, people_daily 기본 feed, 캐시 적중 가드를 고쳤고, adaptive/breaker 상태를 테스트별로 격리했습니다. 재현과 진단을 도와준 @wpp666에게 감사합니다. 자세한 내용은 [릴리스 노트](docs/RELEASE_NOTES_v2.9.8.md). |
721
731
  | **v2.9.7** | **아키텍처 수렴 + DSH web_fetch 심 + License Apache-2.0으로**: MIT에서 Apache License 2.0으로 바뀌었고, 호스트 web_fetch가 argo 가져오기 체인을 흐릅니다. auto 모드는 명시 지정 전용 엔진 18개를 후보 풀에서 제외합니다. |
722
732
  | **v2.9.6** | **DeepSeek Search 엔진 + 쿼리 연산자 계약 + 전송층 연결 풀 + 라우팅 스냅샷 게이트**: 새 `deepseek_search` 엔진은 445-510ms로 합류했고, 연결 풀 재사용으로 같은 POST 재호출에서 320-561ms를 아낍니다. `site:` 연산자는 실제 후처리 필터입니다. |