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.
Files changed (140) hide show
  1. package/README.en.md +58 -145
  2. package/README.es.md +58 -145
  3. package/README.ja.md +64 -151
  4. package/README.ko.md +63 -150
  5. package/README.md +65 -154
  6. package/SKILL.md +3 -3
  7. package/assets/readme/hero.svg +2 -2
  8. package/backends/domain_profiles.json +48 -0
  9. package/backends/engine_registry.yaml +118 -4
  10. package/backends/quota_profiles.json +92 -12
  11. package/backends/source_types_cn.json +27 -1
  12. package/bin/argo +74 -5
  13. package/bin/argo.js +33 -2
  14. package/config.yaml +219 -60
  15. package/docs/ENGINE_CATALOG.md +50 -39
  16. package/docs/MCP_SETUP.md +3 -1
  17. package/docs/RELEASE_NOTES_v2.9.8.md +73 -0
  18. package/engines/specs/cfets.yaml +41 -0
  19. package/engines/specs/defillama.yaml +38 -0
  20. package/engines/specs/firecrawl.yaml +1 -1
  21. package/engines/specs/fxtwitter.yaml +5 -0
  22. package/engines/specs/gleif.yaml +55 -0
  23. package/engines/specs/hkex.yaml +40 -0
  24. package/engines/specs/keenable_free.yaml +36 -0
  25. package/engines/specs/shfe.yaml +39 -0
  26. package/engines/specs/stackexchange.yaml +2 -2
  27. package/engines/specs/tavily_free.yaml +56 -0
  28. package/engines/specs/yuanbao.yaml +93 -0
  29. package/mcp/clients.yaml +32 -0
  30. package/package.json +6 -2
  31. package/packages/dsh-plugin/README.md +23 -5
  32. package/packages/dsh-plugin/dsh/client.js +304 -15
  33. package/packages/dsh-plugin/dsh/diagnostics.js +54 -0
  34. package/packages/dsh-plugin/dsh/index.js +112 -1875
  35. package/packages/dsh-plugin/dsh/native-tools.mjs +7 -1
  36. package/packages/dsh-plugin/dsh/runner.js +666 -0
  37. package/packages/dsh-plugin/dsh/wide-research.js +878 -0
  38. package/packages/dsh-plugin/package.json +2 -2
  39. package/packages/dsh-plugin/scripts/sync-local.sh +70 -0
  40. package/packages/dsh-plugin/test/client.test.js +175 -1
  41. package/packages/dsh-plugin/test/diagnostics.test.js +28 -0
  42. package/packages/dsh-plugin/test/index.test.js +44 -0
  43. package/scripts/adaptive.py +24 -1
  44. package/scripts/article_meta.py +131 -0
  45. package/scripts/budget.py +247 -0
  46. package/scripts/budget_cli.py +93 -0
  47. package/scripts/build_release_assets.sh +65 -0
  48. package/scripts/cache.py +60 -72
  49. package/scripts/ci_drift_gate.py +90 -0
  50. package/scripts/content_boundary.py +46 -0
  51. package/scripts/content_signals.py +26 -5
  52. package/scripts/cross_lingual_trace.py +293 -0
  53. package/scripts/dispatch_result.py +98 -0
  54. package/scripts/engine_dispatch.py +49 -86
  55. package/scripts/engine_env.py +5 -0
  56. package/scripts/engine_families.py +6 -0
  57. package/scripts/engine_policy.py +7 -7
  58. package/scripts/engines.py +21 -0
  59. package/scripts/engines_base.py +3 -3
  60. package/scripts/engines_builders.py +12 -0
  61. package/scripts/engines_builders_batch10.py +48 -3
  62. package/scripts/engines_builders_batch14.py +656 -0
  63. package/scripts/engines_builders_batch15.py +249 -0
  64. package/scripts/engines_builders_keyless.py +111 -0
  65. package/scripts/engines_builders_tech.py +0 -1
  66. package/scripts/evidence.py +31 -3
  67. package/scripts/evidence_loop.py +54 -22
  68. package/scripts/fetch_v3.py +25 -0
  69. package/scripts/gen_routing_snapshot.py +11 -0
  70. package/scripts/install.ps1 +18 -0
  71. package/scripts/install.sh +16 -1
  72. package/scripts/job.py +3 -3
  73. package/scripts/local_seek.py +41 -5
  74. package/scripts/macro_countries.py +15 -0
  75. package/scripts/matrix_search_eval.py +82 -0
  76. package/scripts/mcp_compact.py +234 -0
  77. package/scripts/mcp_handlers.py +60 -642
  78. package/scripts/mcp_launch.sh +10 -8
  79. package/scripts/mcp_local.py +241 -0
  80. package/scripts/mcp_server.py +19 -14
  81. package/scripts/mcp_setup.py +33 -9
  82. package/scripts/mcp_tools.py +1 -0
  83. package/scripts/mcp_transport.py +1 -1
  84. package/scripts/mcp_warm.py +127 -0
  85. package/scripts/output_transparency.py +200 -0
  86. package/scripts/paid_policy.py +98 -0
  87. package/scripts/quota.py +158 -13
  88. package/scripts/recovery_runner.py +150 -0
  89. package/scripts/replay_eval.py +18 -0
  90. package/scripts/research.py +37 -21
  91. package/scripts/research_expand.py +24 -1
  92. package/scripts/retry_policy.py +76 -0
  93. package/scripts/route.py +6 -6
  94. package/scripts/route_cache.py +18 -0
  95. package/scripts/route_combo.py +7 -0
  96. package/scripts/route_domains.py +32 -19
  97. package/scripts/search.py +15 -27
  98. package/scripts/search_attribution.py +100 -3
  99. package/scripts/search_cli.py +24 -11
  100. package/scripts/search_entry.py +7 -1
  101. package/scripts/search_output.py +99 -15
  102. package/scripts/search_pipeline.py +42 -193
  103. package/scripts/search_types.py +107 -9
  104. package/scripts/semantic_evidence.py +179 -3
  105. package/scripts/serp_guard.py +115 -7
  106. package/scripts/serp_kill_log.py +25 -2
  107. package/scripts/stats_cli.py +13 -1
  108. package/scripts/wide_research.py +45 -0
  109. package/scripts/zhihu_quota.py +139 -0
  110. package/sub-skills/local-search/bm25.py +27 -3
  111. package/sub-skills/local-search/cli_runner.py +331 -0
  112. package/sub-skills/local-search/parsers.py +328 -0
  113. package/sub-skills/local-search/search_v3.py +31 -674
  114. package/sub-skills/local-seek/scripts/seek_rank.py +7 -3
  115. package/assets/readme/settings-keys.png +0 -0
  116. package/assets/readme/settings-tools.png +0 -0
  117. package/scripts/image_vision/vision_probe +0 -0
  118. package/scripts/local_engines.py +0 -321
  119. package/sub-skills/ego-search/references/browser-runtime.md +0 -43
  120. package/sub-skills/ego-search/references/install.md +0 -67
  121. package/sub-skills/ego-search/references/original-ego-upgrade.md +0 -51
  122. package/sub-skills/ego-search/tests/test_query_normalize.py +0 -68
  123. package/sub-skills/js-run/tests/fixtures/challenge_like.js +0 -27
  124. package/sub-skills/js-run/tests/test_jsrun.py +0 -165
  125. package/sub-skills/local-seek/references/auto-behaviors.md +0 -24
  126. package/sub-skills/local-seek/references/fd-mdfind-recipes.md +0 -62
  127. package/sub-skills/local-seek/references/git-integration.md +0 -54
  128. package/sub-skills/local-seek/references/remote-handoff.md +0 -46
  129. package/sub-skills/local-seek/references/rg-recipes.md +0 -96
  130. package/sub-skills/local-seek/references/strategies.md +0 -52
  131. package/sub-skills/local-seek/references/structural-search.md +0 -59
  132. package/sub-skills/local-seek/tests/test_content_rank.py +0 -222
  133. package/sub-skills/local-seek/tests/test_determinism_20261006.py +0 -145
  134. package/sub-skills/local-seek/tests/test_noise_tier.py +0 -101
  135. package/sub-skills/local-seek/tests/test_pcre2_probe.py +0 -136
  136. package/sub-skills/local-seek/tests/test_rank_pinyin.py +0 -77
  137. package/sub-skills/local-seek/tests/test_regression_20261003.py +0 -169
  138. package/sub-skills/local-seek/tests/test_regression_20261006.py +0 -146
  139. package/sub-skills/local-seek/tests/test_seek_degradation.py +0 -111
  140. package/sub-skills/local-seek/tests/test_seek_fts.py +0 -313
package/README.es.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="assets/readme/hero.svg" width="100%" alt="Argo: búsqueda e investigación profunda para agentes, 264 fuentes de búsqueda, enrutamiento por dominio e idioma y evidencia absorbible como salida">
2
+ <img src="assets/readme/hero.svg" width="100%" alt="Argo: búsqueda e investigación profunda para agentes, 272 fuentes de búsqueda, enrutamiento por dominio e idioma y evidencia absorbible como salida">
3
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.7-informational">
28
- <img alt="engines" src="https://img.shields.io/badge/engines-264-orange">
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
  ## Qué es
37
37
 
38
- **Argo es una herramienta de búsqueda e investigación profunda que vive dentro del agente, y también puede obtener información de las páginas web relevantes. Detrás tiene 264 fuentes de búsqueda que cubren 95 dominios de negocio, además de búsqueda básica sobre archivos locales. Entre los proyectos de búsqueda de código abierto, su capacidad de búsqueda es muy potente.**
38
+ **Argo es una herramienta de búsqueda e investigación profunda que vive dentro del agente, y también puede obtener información de las páginas web relevantes. Detrás tiene 272 fuentes de búsqueda que cubren 97 dominios de negocio, además de búsqueda básica sobre archivos locales. Entre los proyectos de búsqueda de código abierto, su capacidad de búsqueda es muy potente.**
39
39
 
40
40
  Permite configurar claves API para mejorar la calidad de búsqueda (las fuentes con clave suelen dar mejores resultados; si falta la clave, se omiten automáticamente), y también cuenta con motores gratuitos y locales como red de seguridad automática. Cubre 18 idiomas, entre ellos chino, inglés, japonés y coreano, y da soporte a escenarios verticales como finanzas, academia, cine, deportes, código y macroeconomía.
41
41
 
@@ -81,11 +81,15 @@ Para una pregunta cotidiana usa `argo_search`; para forense con un solo agente u
81
81
  El plugin incluye una página de ajustes del lado del navegador con dos entradas: el elemento "Argo" del menú izquierdo del popup de ajustes (`Cmd+,`), o Ajustes > Plugins > Argo (una tarjeta de resumen del mismo panel: clic para abrir).
82
82
 
83
83
  <p align="center">
84
- <img src="assets/readme/settings-tools.png" width="100%" alt="Ajustes de Argo, sección Herramientas: la ruta caliente trae argo_search / argo_fetch activos por defecto, 16 herramientas de forense de cola larga se activan bajo demanda, con el tiempo de espera por llamada y el límite de texto devuelto debajo">
84
+ <img src="assets/readme/settings-tools.webp" width="100%" alt="Ajustes de Argo, Herramientas: 18 herramientas nativas — argo_search / argo_fetch activos en la ruta caliente, 16 de cola larga bajo demanda, con tiempo de espera y límite de texto debajo">
85
85
  </p>
86
86
 
87
87
  <p align="center">
88
- <img src="assets/readme/settings-keys.png" width="100%" alt="Ajustes de Argo, sección Claves: definir, actualizar y borrar claves de motores habituales, mostrando configurada/sin configurar más la capa de origen, sin mostrar el texto plano, con una casilla Reenviar por fila">
88
+ <img src="assets/readme/settings-engines.webp" width="100%" alt="Ajustes de Argo, Motores: los 28 interruptores de comportamiento del núcleo pasan al panel — caché / rerank TF-IDF / cotejo numérico / dedup MinHash / guardia SERP y umbral de dedup; las filas sin configurar muestran el valor por defecto y se aplican al guardar">
89
+ </p>
90
+
91
+ <p align="center">
92
+ <img src="assets/readme/settings-keys.webp" width="100%" alt="Ajustes de Argo, Claves: la búsqueda oficial de DeepSeek aparece como «configurada · almacén de credenciales» y comparte una clave con el web_search del host; las claves de Tencent Yuanbao / Tavily se definen, actualizan o borran sin mostrar el texto plano">
89
93
  </p>
90
94
 
91
95
  | Sección | Qué controla |
@@ -118,7 +122,7 @@ Guardar surte efecto de inmediato (todo es configuración volátil): el conjunto
118
122
 
119
123
  ## Ventajas principales
120
124
 
121
- **264 fuentes, 227 disponibles sin clave desde el primer momento.** Funciona sin configurar ninguna clave API: los motores gratuitos y locales actúan como red de seguridad. Las fuentes con clave suelen ofrecer mejor calidad; si no hay clave, se omiten. Una instalación y cubres todos los escenarios.
125
+ **272 fuentes, 235 disponibles sin clave desde el primer momento.** Funciona sin configurar ninguna clave API: los motores gratuitos y locales actúan como red de seguridad. Las fuentes con clave suelen ofrecer mejor calidad; si no hay clave, se omiten. Una instalación y cubres todos los escenarios.
122
126
 
123
127
  **Búsqueda local y búsqueda web en una sola pieza.** Es una capacidad que solo tiene Argo. La búsqueda de archivos locales se apoya en las herramientas que los desarrolladores usan a diario, como rg y mdfind, y busca símbolos de código, nombres de archivo, texto completo de documentos y estructura de archivos. Con un interruptor, los aciertos locales se integran en la misma búsqueda web, marcados como archivos de la máquina. Cuando escribes y recuerdas que hace medio año anotaste algo pero no dónde, esto es más rápido que navegar carpetas.
124
128
 
@@ -200,10 +204,10 @@ Las cuatro formas comparten el mismo código Python por debajo; la CLI y las her
200
204
  1. **De enlaces a evidencia.** Los agentes necesitan material estructurado, verificable y compacto — Argo devuelve JSON con desglose de credibilidad.
201
205
  2. **El contexto es el primer coste.** Argo perfil agente: ~3,7KB por llamada, con presupuestos de bytes fijados por gates.
202
206
  3. **Los sitios preparan contenido para IA.** llms.txt y `.md` se extienden — la cadena de fetch los sondea en el nivel 0, con lector r.jina.ai como respaldo.
203
- 4. **El ecosistema libre basta.** APIs abiertas de gobiernos/academia/estándares/seguridad + motores sin clave cubren la mayoría de dominios (227 sin clave).
207
+ 4. **El ecosistema libre basta.** APIs abiertas de gobiernos/academia/estándares/seguridad + motores sin clave cubren la mayoría de dominios (235 sin clave).
204
208
  5. **Calidad medible.** Pisos golden de ranking, gates de ablación de fusión y controles negativos de enrutamiento.
205
209
 
206
- > v2.9.3 lo implementa todo: 264 fuentes, 95 dominios, 227 sin clave.
210
+ > Los cinco puntos ya están implementados en la serie v2.9.x: 272 fuentes, 97 dominios, 235 sin clave.
207
211
 
208
212
  ---
209
213
 
@@ -273,7 +277,7 @@ Los resultados incluyen `selection`, `absorption`, `credibility_fast`, `evidence
273
277
 
274
278
  ## Inicio rápido
275
279
 
276
- 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.7**. **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.
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.
277
281
 
278
282
  **Funciona sin configuración**: sin claves API corren motores gratis + `local_*` locales; los que requieren clave se omiten si faltan (y suelen mejorar cuando están).
279
283
 
@@ -456,14 +460,16 @@ python3 scripts/search.py --list-engines
456
460
  | `deep` | investigación, sondeos | calidad primero; más motores |
457
461
  | `budget` | cuota justa | control de cuota; degrada al agotarse |
458
462
 
459
- ### Conjunto aproximado de capacidades (v2.9.7)
463
+ ### Conjunto aproximado de capacidades (v2.9.8)
460
464
 
461
- 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: 264 fuentes, 227 sin clave, 95 dominios.
465
+ Lo que hace Argo, en una frase: manda cada pregunta a las fuentes adecuadas según dominio e idioma, ordena lo que vuelve por credibilidad y devuelve al agente material que puede ordenar y verificar. Búsqueda, captura, verificación de evidencia y búsqueda de archivos locales comparten una sola tubería, 19 herramientas MCP se corresponden una a una con los comandos CLI, así que ninguna capacidad falta en la forma que instales. Algunos comandos sueltos completan el conjunto: argo tweet empaqueta un post de X, argo auth gestiona el estado de sesión y argo job agrega ofertas de empleo. El catálogo completo, con coste, clave y estado de cada fuente, está en docs/ENGINE_CATALOG.md: 272 fuentes, 235 sin clave, 97 dominios.
462
466
 
463
467
  Instalado como plugin DSH, estas capacidades se convierten en herramientas nativas del host: la búsqueda y el fetch de la ruta caliente vienen activos por defecto, las herramientas de forense de cola larga se activan en la página de ajustes y los 28 interruptores de comportamiento del propio argo (caché, reordenación, deduplicación, guardia, proxy, TTL y demás) salieron de las variables de entorno para entrar en el panel. Las claves van al almacén de credenciales del host, nunca se muestran y todo cambio surte efecto al guardar.
464
468
 
465
469
  Las últimas versiones arreglaron cada una una clase de problemas.
466
470
 
471
+ v2.9.8 es una versión de precisión de enrutado y cierre del ciclo de feedback. Los tres problemas del issue #18 —«latest» enviado a noticias en tiempo real, people_daily devolviendo su feed por defecto cuando no hay coincidencia, y local_bing coincidiendo solo con «2026»— se reprodujeron y corrigieron. Al reproducir consultas reales por la misma vía se acotaron 16 clases más de falsos disparadores: «nieve» dentro de nombres de marca, «Volcano Engine» dentro de nombres de producto, «iconos» en diagnóstico de UI, «código» dentro de campos mercantiles/financieros y «tipo de cambio» dentro de consultas de código/bibliotecas. Una puerta de cobertura SERP y la validación cruzada CJK evitan que «devolvió algo» cuente como «es relevante». Gracias a @wpp666 por la reproducción y el diagnóstico.
472
+
467
473
  v2.9.7 arregló tres problemas antiguos. Cuando una IA dentro de un huésped DSH pedía leer una URL, el huésped usaba su propio capturador, así que redirecciones de enlaces cortos y páginas de desafío JS fallaban de forma estructural mientras la cadena de fetch de argo se quedaba sin uso; esta versión pasa las lecturas del huésped por argo, y esas páginas van de fallar a funcionar, sin cambios en las páginas estáticas. El pool de candidatos de enrutado contenía 18 motores de solo-uso-explícito, y si alguno se auto-seleccionaba el único motor de pago te facturaba en silencio; el pool está limpio ya, y usarlos requiere decirlo. Cada éxito de motor tomaba antes un bloqueo de fichero y reescribía el estado del breaker en disco; los motores sanos ahora cuestan cero E/S de ficheros y la contabilidad multi-motor se confirma en una sola transacción. La licencia también pasó de MIT a Apache-2.0, más cómoda para uso comercial.
468
474
 
469
475
  Después de eso, el plugin DSH ganó otra capa: la página de ajustes pasó de cinco secciones a seis, la nueva sección «Motores» trae los interruptores de comportamiento de argo al panel (antes solo eran variables de entorno), la página de claves muestra ahora si cada clave viene del almacén de credenciales, del entorno de arranque o de `.env`, y los interruptores de herramientas, los tiempos de espera, la concurrencia y los límites de investigación se aplican todos al guardar. La cancelación también llegó a la etapa de establecimiento de la conexión: cuando la IA se detiene a mitad de camino, un subproceso de argo que aún se está creando se mata de inmediato en lugar de esperar a que expire su tiempo de espera.
@@ -479,7 +485,7 @@ El detalle por versión está en «Actualizaciones recientes»; las notas de cad
479
485
 
480
486
  ## Motores y enrutamiento
481
487
 
482
- La config tiene ahora **264** fuentes (**227** sin clave) y **95** dominios (ver `config.yaml` y `--list-engines`).
488
+ La config tiene ahora **272** fuentes (**235** sin clave) y **97** dominios (ver `config.yaml` y `--list-engines`).
483
489
 
484
490
  ### Directos y verticales (extracto)
485
491
 
@@ -493,7 +499,8 @@ La config tiene ahora **264** fuentes (**227** sin clave) y **95** dominios (ver
493
499
  | arxiv / semantic_scholar / openalex | académico | mostly free |
494
500
  | pubchem / gbif / rfc_editor | química / especies / estándares | free |
495
501
  | github / stackoverflow / pypi / npm | código y paquetes | depends |
496
- | byted / bocha / metaso / octen | web china / búsqueda IA | API / low cost |
502
+ | byted / bocha / metaso / octen / yuanbao | web china / búsqueda IA | API / bajo coste |
503
+ | hkex / shfe / cfets / defillama / gleif | anuncios de HKEX / SHFE / paridad central del yuan / DeFi / identificadores de entidad legal | Gratis |
497
504
  | zhihu / wechat_sogou | opinión china / WeChat | API / free |
498
505
  | tavily / felo / exa | internacional / semántica | paid or quota |
499
506
  | twitter / reddit / xiaohongshu / bilibili / weibo | social UGC | free (some need login) |
@@ -678,126 +685,31 @@ argo/
678
685
 
679
686
  ## Actualizaciones recientes
680
687
 
681
- ### Sin publicar (plugin DSH): la página de ajustes gana una sección «Motores» + la cancelación llega al establecimiento de la conexión
682
-
683
- - **Sexta sección de ajustes «Motores»**: los 28 interruptores de comportamiento de argo salieron de las variables de entorno para entrar en el panel (caché / reordenación TF-IDF / verificación cruzada numérica / deduplicación MinHash / guardia SERP, Jina / UA móvil / capa de fetch Parallel, capa de evidencia semántica, gracia de cobertura y anchura de cola, lista de motores activos, proxy, raíces de búsqueda local y lista de lectura permitida, calentamiento / registro de uso / pool de conexiones / TTL varios). Se aplican mediante la nueva configuración volátil `argoEnv` (un `KEY=VALUE` por línea) en el entorno del subproceso de argo; los nombres pasan por la lista `ARGO_ENV_SPECS` y cualquier cosa fuera de ella falla en voz alta al aplicar, para que un error tipográfico no quede en silencio sin efecto. Los de tipo interruptor se aplican al instante; los de número / texto / lista se guardan en grupo; las filas sin configurar muestran el valor por defecto de argo y se marcan como "default". Los interruptores de autorización (recompute, URLs intranet) quedan deliberadamente fuera del panel
684
- - **La capa de origen de las claves ya es visible**: muestra "configurada / sin configurar + capa de origen (almacén de credenciales / entorno de arranque / .env del proyecto / .env del hogar) + estado de solo lectura", y las capas que no son de fichero avisan de que se sobrescribirán al guardar; `DEEPSEEK_API_KEY` se marca como compartida con el `web_search` del host; `fetchMaxChars` se trunca al límite del esquema de la herramienta de argo (50000) al guardar, eliminando la discrepancia entre «valor mostrado» y «valor efectivo»
685
- - **La cancelación llega al establecimiento de la conexión**: `acquireMcp` respeta ahora la cancelación mientras se establece la conexión — al abortar mata el subproceso y cierra con `WEB_ABORTED` en lugar de esperar al timeout; la cancelación también fluye por el camino de disparo único
686
- - **Correcciones**: la deduplicación de evidencia ya no traga mayúsculas y minúsculas; los hosts antiguos sin `effect` ya no rompen la activación; `saveKey` / `setForward` / `toggleTool` leen una instantánea en vivo, corrigiendo una carrera que perdía actualizaciones en acciones consecutivas rápidas; las respuestas de `describe` se protegen contra reordenaciones y solo se acepta la de la petición más reciente
687
-
688
- ### v2.9.7: Consolidación de arquitectura — seam web_fetch DSH + contrato explicit_only + contratos de estado unificados (License: Apache-2.0)
689
-
690
- - **Cambio de licencia**: MIT → Apache License 2.0 (concesión de patentes explícita, más seguro para uso comercial); nada más cambia
691
- - **Seam web_fetch del plugin DSH**: el web_fetch del huésped antes esquivaba argo por completo como ruta predeterminada de «lee esta URL»; ahora registra un proveedor de fetch en la cadena argo_fetch (HTTP primero, ascenso automático a navegador anti-detección ante Cloudflare / páginas renderizadas con JS); ejecución de doble vía isomorfa con el proveedor de búsqueda — piscina MCP residente primero, CLI de un solo disparo solo ante fallo de transporte, errores de herramienta y timeouts no se reenvían (esas ya significan que la llamada terminó; reenviar duplica llamadas de motor y cuota); fallos clasificados en cinco clases (timeout / bloqueado / vacío / genérico / cancelado) con mensajes accionables; nueva configuración `fetchProviderEnabled` / `fetchProviderId` / `fetchTimeoutMs` (25000) / `fetchMaxChars` (50000), toda activa por defecto con salidas de emergencia; medido: redirecciones de origen cruzado (enlaces cortos, ascensos de protocolo, caparazones de redirección) y páginas de desafío JS pasan de fallos estructurales del huésped a éxitos de argo, las páginas estáticas no cambian
692
- - **Cierre del contrato explicit_only**: `config._routable_filter` filtraba listas negras/blancas de entorno, cles y bloqueos, pero no explicit_only, así que 18 motores de solo-uso-explícito (incluido el único `deepseek_search` de pago) yacían en el pool de candidados habilitados donde seis rutas de enrutado (inyección TF-IDF, catch-all, backfill, reserva, etc.) podían elegirlos — nunca disparó solo porque el corpus no tenía ninguna entrada; una entrada habría disparado motores de pago en modo auto; ahora se filtra en el único productor, fijado por `tests/test_explicit_only_gate.py`
693
- - **Contratos de estado unificados**: cortocircuito en memoria del cortacircuitos cuando está sano y cerrado con conteo cero (sin bloqueo de fichero, sin reescritura de disco) con conciencia cross-process vía `(st_mtime_ns, st_size)`; la contabilidad adaptativa pliega `MAX(created_at)` en un solo SQL agregado más un gestor de contexto `batch()` para confirmaciones multi-motor en una transacción; el agotamiento de cuota registra la huella de credencial vigente y se desbloquea solo al rotar la clave; la caché de ruta se invalida cuando un motor del combo se agota o se recupera; `is_engine_routable` se convierte en el predicado de admisión único tras backfill / tfidf / breaker_filter
694
- - **Despacho y transporte**: auto / deep también descartan motores agotados por duro (reserva fail-open); ventana de espera de cobertura estrechada, el early-stop de Wave-1 ahora acepta suficiencia acumulada cross-engine; agrupación de conexiones POST (ahorra ~320ms anysearch / ~561ms octen por petición) + preconexión MCP; el dominio de clima gana `early_stop_min_results: 1`
695
- - **Resta de rutas calientes en sub-skills**: js-run reemplaza SIGALRM por el timeout nativo de MiniRacer, arreglando el crash `ValueError: signal only works in main thread` al invocarse desde hilos de trabajo de crawl / research / mcp; el rerank de local-seek elimina las lecturas de disco O(N) por consulta; local-search reutiliza el registro (sin doble parseo YAML); ego-search corta en corto la detección bajo auto
696
- - **Validación**: 71 pruebas unitarias del plugin; suite completa 4264 passed / 28 skipped; siete puertas pre-commit 123 passed; la comparativa de la cadena de fetch no regresa páginas estáticas y convierte fallos en éxitos en redirecciones / desafíos JS
697
-
698
- ### v2.9.6: Motor DeepSeek Search + contrato de operadores de consulta + agrupación de conexiones + puerta de instantáneas de enrutado
699
-
700
- - Nuevo motor `deepseek_search` (`api.deepseek.com/v1/tools/search` oficial) activo por defecto: se omite solo sin `DEEPSEEK_API_KEY`, las otras 265 fuentes no se afectan; medido 445-510ms (anysearch 1.7-4.5s / exa 3.7s), el único de los tres con cobertura completa de nivel authority / rerank_score / hora de publicación, a la par de anysearch en ja/ko/es; pago por uso, fuera de los combos de dominio, `--engine deepseek_search` explícito es la vía principal; los hosts DSH comparten la misma key con el backend oficial por el seam nativo de credenciales (rotar la key en la página Models surte efecto en el siguiente salto, nunca se persiste ni se registra)
701
- - Corrección: `--since/--until` silenciosamente ineficaz para deepseek_search (añadido a TIME_CAPABLE_ENGINES)
702
- - Nueva `query_operators.py`, capa de contrato de operadores de consulta: `site:` / `-site:` / `-término` / `-"frase"` / `lang:` / `after:` / `before:` convergen de cinco formas dispersas en operadores estructurados; enrutado, caché y comprensión de consulta solo ven el clean_query sin instrucciones; `site:` / `-site:` posfiltran de verdad (coincidencia de subdominio, OR multi-sitio, conteo en `site_filtered`), los operadores entran en la clave de caché de resultados para evitar contaminación cruzada
703
- - `evidence.py`: nuevo campo de resumen de doble capa para Agent `summary` (semántica de resumen de DeepSeek Search)
704
- - Transporte sin pagar dos veces: POST reutiliza conexiones agrupadas (medido: la segunda petición en la misma conexión ahorra 320ms anysearch / 561ms octen), con reintento por fallo de préstamo y lectura del cuerpo antes de devolver; preconexión MCP; cierre de agotamiento de cuota y caché negativa muerta
705
- - Enrutado: octen entra en el segundo slot de la cadena de fallback general y el slot de cobertura TF-IDF (ventana de jitter de anysearch p90 3273→1614ms, máx 6266→1928ms, errores 9→0; sin diferencia de mediana en ventana sana, posicionado como seguro de cola), escapatoria `ARGO_GENERAL_FALLBACK_LEGACY=1`
706
- - Corrección de la decadencia de rango del aislamiento RRF por calibre: todos los resultados de un motor con la misma puntuación (medido: 5 resultados de anysearch todos 0.017213), la salida degeneraba en concatenación por peso de motor; nuevo test bloquea "puntuaciones estrictamente decrecientes dentro del mismo motor"
707
- - Corrección del caparazón de redirección ck/a de Bing no restaurado, que hacía que la capa de agregación filtrara lotes enteros (40.2% de resultados vacíos en los últimos 7 días): decodificación base64url offline recupera los enlaces reales, cero red
708
- - Corrección del combo líder TF-IDF que producía `['anysearch','anysearch']` ejecutándose dos veces en paralelo (doble cuota con wasted_ms registrado en 0): 200 consultas reales reproducidas, combos duplicados 1→0
709
- - Mejoras de búsqueda: caché negativa de fallos, conmutación por error de Nitter, aislamiento por calibre, extracción de X Article, guardián de eco de consulta (rechazo por parada temprana + cambio de motor en la cadena de recuperación)
710
- - Ingeniería: nueva puerta `scripts/pre-commit` (static_lint / module_size_gate / usage_doc / consistency / routing_snapshot / context_budget + engine_catalog, ~12s medido); la puerta de instantáneas de decisión de enrutado convierte los volteos de enrutado en golden diffable (unión de tres conjuntos de anotación, 115 consultas, solo se comparan domain y kind para que el ruido de entorno no dé falsos rojos); test de sincronía del registro de calibres bloquea "los nombres de motor de la tabla deben estar realmente registrados"
711
- - El plugin DSH se adapta a DSH 0.2.1-rc.2: entrada de runtime de doble stack (`startActivation({provider, label, request, signal, delivery})` nuevo / `start(provider, request)` heredado), el tool guard dentro del plugin evita llamadas anidadas de workers a `wide_research` tras eliminar rc.2 `toolFilter`; verificado extremo a extremo en rc.2 (`wide_research` planner → 2 workers → synthesis, passed=true / 14 sources) y `argo_search` nativo (count=3); rama de compatibilidad 0.2.1-alpha.1 cubierta por unit tests; unit tests del plugin 46→50
712
- - Versiones de entorno DSH: **DSH 0.2.1-rc.2 (actual, en ejecución, verificado extremo a extremo) + DSH 0.2.1-alpha.1 (compatible, rama start heredada cubierta por unit tests)**; tabla de compatibilidad en `packages/dsh-plugin/README.md`
713
-
714
- ### v2.9.5: Dominio dedicado de tipo de cambio + deduplicación de dos capas + corrección de falsa penalización + aislamiento de daemon por checkout
715
-
716
- - `config.yaml`: nuevo dominio `fx_query` — las consultas de "tipo de cambio RMB/USD, paridad central, offshore" ya no caen en callejones macro vacíos ni en entradas de enciclopedia; ahora tipo en vivo + noticia de paridad diaria (675ms medidos; antes 1411ms y desencaminado)
717
- - `search_rank.py`: deduplicación de dos capas — normalización de sufijo de sitio en título ( cero dependencias) + revisión difusa rapidfuzz (solo dentro de la banda de casi-acierto; `ARGO_DEDUP_FUZZY=0` desactiva, sin instalar vuelve a minhash puro)
718
- - Corrección: falsa penalización por separadores de título en rerank degradado — títulos con `|` / `_` / `——` recibían ×0.6 uniforme, hundiendo documentación oficial 40%; afectaba cada consulta auto/deep sin clave Bocha (criterio convergido a la implementación única de rank_signals)
719
- - `query_understanding.py`: la negación gana "no-X" (la interrogativa "si es o no" no se lee como negación)
720
- - `daemon.py`: nombres en disco (socket/pid/puntero/log) acotados por checkout — trabajo multi-worktree/clone peleándose el daemon, matar procesos ajenos y "los cambios no surten efecto", todos erradicados
721
- - Nueva dependencia opcional rapidfuzz (`pip install rapidfuzz`; la instala install.sh, el núcleo no se afecta si falta)
722
-
723
- ### v2.9.4: Atribución explícita de dominio de motor + cortador de cadena de recuperación + sincronización de puertas
724
-
725
- - `route.py`: `--engine X` complementa `match_domains`, corrigiendo TTL de caché general
726
- - `recovery.py`: motor único sin alternativa omite ejecución vacía L1
727
- - `config.yaml`: `org_entity` añade términos de diligencia; `fund_query` añade términos de regulación
728
- - `mcp_launch.sh`: `set -a` reducido a `. "$ENV_FILE"` línea única
729
- - `sub-skills/local-search/`: capa de registro cerrada y calidad mejorada
730
- - Sincronización de puertas: module_size_gate / ENGINE_CATALOG alineados
731
-
732
- ### v2.9.3: empaquetado completo de posts de X + carril de estado de sesión del navegador + calidad/velocidad de la cadena local
733
-
734
- - **Nuevo**: `argo tweet` — un comando empaqueta el texto completo, hilo/citas/retweets e interacciones de un post de X; por defecto solo texto, `--out` escribe el paquete de 4 archivos (post.md/raw.json/manifest.json/CHECKLIST.md), `--media` descarga imágenes/vídeos bajo demanda; los motivos de fallo quedan visibles en los artefactos
735
- - **Nuevo**: carril de estado de sesión del navegador `argo auth` — `login/status/logout` gestiona un perfil de navegador persistente por sitio; escanea el QR una vez y las páginas que exigen sesión se vuelven accesibles; las cookies solo viven en el almacenamiento cifrado del propio Chrome (argo no las lee ni las exporta), los resultados con sesión se marcan `login_state_used` y quedan excluidos de la caché compartida (activar con `ARGO_AUTH_FETCH`)
736
- - **Más preciso**: la cadena local china resuelve las shells de redirección de Sogou/Baidu en URLs reales sin sesión (resultados conservados 1→5); corregido el bloqueo falso de la puerta de intención (las consultas tipo "tutorial" ya no quedan fijadas a un solo motor); URLs de identidad de fila ferroviaria corrigen la compresión del embudo de candidatos (10→1 → fiel 10→10)
737
- - **Más rápido**: gracia de consenso adaptativa (el primer motor que entrega suficiente libera la espera; despacho en inglés ~3.0s→2.2-2.5s); parada temprana de cola larga local; huellas de imagen local vía producto matricial mmap (77k imágenes 158ms→3.9ms, apagado por defecto con `ARGO_LOCAL_IMAGE=1`); adelgazamiento automático del consumo por agentes + negociación de contenido markdown, overhead fijo por llamada MCP −32%
738
- - **Más fuentes**: 43 motores sin referencia de dominio conectados a sus dominios; route_lang de enrutamiento por idioma; 3 nuevas fuentes financieras sin clave; `--academic-deep` multi-fuente académica con una bandera; consultas ferroviarias con transbordo/escala
739
- - **Más robusto**: js-run integrado como primer carril de la cadena de fetch (reintentos con huella Chrome); fugas de sesión jsrun y presupuesto de backoff corregidos; timeouts ajustados (redskill 60→15s) con la política de declaración dividida en tres grupos
740
-
741
- ### v2.9.2: compatibilidad verificada con DSH 0.2.1-alpha.1 + correcciones de enrutamiento/guardas + sub-skill js-run
742
-
743
- - **Más compatible**: el plugin de DSH está verificado en el último DSH 0.2.1-alpha.1 — herramientas nativas de primera clase / web_search seam / wide_research funcionan en las tres formas; `argo mcp inject` añade WorkBuddy, cubriendo el 7.º host
744
- - **Más preciso**: degradación de evidencia débil TF-IDF a fuentes auxiliares, piso de fuentes muertas + relleno de slots del breaker, aislamiento de motores con cuota agotada, corrección de falsos positivos de serp_guard
745
- - **Más rápido y robusto**: importaciones diferidas de engines/evidence (volumen de import −50%), cortocircuito del conjunto de existencia en admisión (open 261 → 99), guardas de entrada/argumentos numéricos de MCP; nueva sub-skill `sub-skills/js-run` (ejecuta JS web sin navegador, P50 ≈ 1ms)
746
-
747
- ### v2.9.1: optimización de calidad de contenido + resistencia a granjas de contenido + compatibilidad con el último entorno
748
-
749
- - **Más limpio**: evaluación de calidad de contenido mejorada y mayor resistencia a granjas de contenido — el contenido de baja calidad o generado en masa se identifica y filtra con más eficacia
750
- - **Más compatible**: adaptado a la última versión para colaborar sin fisuras con el entorno actual
751
- - **Más estable**: la búsqueda local añade una guarda sobre su propio árbol de instalación, evitando que los resultados se contaminen con el código fuente del propio argo
752
-
753
- ### v2.9.0: optimización de fuentes + paridad plugin/CLI + lenguas minoritarias
754
-
755
- - **Más amplio**: fuentes 237 → 253 (sin clave 198 → 219); se añaden 14 fuentes de noticias locales en lenguas minoritarias, la fuente de texto completo de acceso abierto CORE, TinEye de búsqueda inversa de imágenes, una salida estable de Bing RSS y más; se revivieron Baidu y Sogou, dos fuentes perennes
756
- - **Más alineado**: 18 comandos CLI corresponden uno a uno con 19 herramientas MCP — por primera vez plugin y CLI quedan totalmente a la par en búsqueda
757
- - **Más idiomas**: 14 fuentes en lenguas minoritarias (tailandés/árabe/hebreo/griego/hindi/vietnamita/turco/indonesio, etc.), asignadas automáticamente según el idioma de la consulta
758
- - **Más rápido**: cadena de importación −79%, rerank con n=200 de 33ms → 1.5ms, aciertos de caché de ~60% a casi sin fallos
759
- - **Más fiable**: corrección de seguridad entre procesos en la ruta de escritura de cuotas, los resultados de parada temprana ya no se etiquetan erróneamente como timeout, y `argo stats` da a la calidad de búsqueda su propio libro contable
760
-
761
- ### v2.8.9: salida más ligera + recuperación más rica y rápida + 5 fuentes internacionales y de verificación
762
-
763
- - **Más ligero**: salida por defecto −66% (los mismos resultados ya no se escriben tres veces); consultas repetidas −30% (caché de decisiones de enrutado); esperas con red lenta −36% (una fuente de respaldo se dispara automáticamente si la principal supera 0.8s)
764
- - **Más rico**: recall +35%, latencia de fetch −30%; fidelidad estructural del cuerpo 0/6 → 6/6 (títulos, listas y tablas ya no se aplanan); el contenido en chino ya no se puntúa sistemáticamente como de baja calidad
765
- - **Nuevo**: fuentes 232 → 237 (sin clave 194 → 198, todas gratis — The Guardian, France 24, DW, más los verificadores FactCheck.org / Full Fact para afirmaciones de EE. UU. y Reino Unido); fuente muerta gdelt retirada
766
- - **Más fiable**: corregidos seis defectos de contabilidad donde los números se contradecían entre sí; un embudo de seis etapas localiza dónde colapsa una búsqueda sin resultados; una herramienta de repetición sin conexión permite verificar los cambios el mismo día. Ver [notas de la versión](docs/RELEASE_NOTES_v2.8.9.md)
767
-
768
- ### v2.8.8: correcciones reportadas por usuarios reales + aceleración general + 232 fuentes
769
-
770
- - **Correcciones**: motores que devolvían cero resultados en silencio al configurar claves con los nombres recomendados (#12); cadena de fetch que ignoraba el proxy y hacía fallar siempre sitios como GitHub (#13) — ahora funcionan `ARGO_PROXY`, las reglas por dominio del config y las variables de proxy estándar, respetando `NO_PROXY`
771
- - **Más rápido**: arranque en frío del comando 2.1s → 0.55s; caché de configuración entre procesos 50–82ms → 16–18ms; cada búsqueda informa tiempos por etapa y consumo de presupuesto, sin adivinar dónde está la lentitud (`--no-timing` para desactivar)
772
- - **Nuevo**: fuentes 218 → 232 (listas para usar sin configuración 184 → 194, todas sin clave: tendencias de China, avisos de seguridad, académico de acceso abierto, directorios de skills, búsqueda para agentes), `argo answer` (respuestas directas con citas), `argo watch` (observación de cambios web), superficies de herramientas CLI/MCP alineadas
773
- - **Más robusto**: rutas convencionales en los tres sistemas (nueva introspección `argo paths`), soporte de Python 3.9, degradaciones silenciosas ahora registradas; ver [notas de la versión](docs/RELEASE_NOTES_v2.8.8.md)
774
-
775
- ### v2.8.7: fuentes ampliadas a 218 + una tanda de correcciones
776
-
777
- - **Ampliación de fuentes**: 168 → 218 fuentes, 72 → 89 dominios (nuevas fuentes oficiales: StackExchange Q&A, metadatos DOI, inteligencia de vulnerabilidades, ciclos de vida), más tres canales directos de obtención de contenido
778
- - **Una tanda de correcciones**: enrutamiento multi-motor, fallback de resultados vacíos, redirecciones con chino, degradación de búsqueda local, etc.; ver [notas de la versión](docs/RELEASE_NOTES_v2.8.7.md)
779
-
780
- ### v2.8.6: búsqueda más rápida + reparto multi-fuente
688
+ Solo las tres versiones más recientes. El historial completo está en el [historial de cambios](#historial-de-cambios) y el detalle de cada versión en [Releases](https://github.com/taxueseek/argo/releases).
781
689
 
782
- - Carrera de motores, reparto en tres vías de Zhihu, distribución idiomática/académica ampliada, puerta de fuentes muertas
690
+ ### Próxima versión: búsqueda de Tencent Yuanbao + tres fuentes más sin clave + lista estructurada de fallos
783
691
 
784
- ### v2.8.5: herramientas nativas del plugin DSH + MCP apagado por defecto + compatibilidad con Windows
692
+ - **Búsqueda de Yuanbao**: fuente china de primera mano y voz oficial, complementaria a la mezcla de portales y autopublicaciones de bocha y byted; ocupa el 2.º puesto del dominio general chino como cobertura de autoridad. Clave: `ARGO_YUANBAO_API_KEY`
693
+ - **Tres fuentes más sin clave**: `tavily_free`, `keenable_free` y el retorno anónimo de `exa` funcionan sin configurar ninguna clave
694
+ - **Fallos sobre los que se puede actuar**: cada fallo indica su origen y su clase, y dice si reintentar, cambiar de fuente o configurar una clave, junto a un nivel de confianza `meta.uncertainty`
695
+ - **Capa de configuración local `config.local.yaml`**: los ajustes de esta máquina ya no se escriben en la configuración pública que acompaña a cada versión
696
+ - **Nueva sección «Engines» en la página de ajustes de DSH**: los 28 interruptores de comportamiento de argo salen de las variables de entorno y pasan al panel
785
697
 
786
- - **Herramientas nativas del plugin**: `argo_search` / `argo_fetch` se registran como herramientas nativas de primera clase, disponibles por defecto sin conexión MCP; los esquemas se generan desde la única fuente de verdad (`mcp_tools.py`), sin deriva; las 18 herramientas (salvo `argo_research`) se activan a demanda vía `nativeTools`
787
- - **MCP apagado por defecto**: tres formas de conexión (MCP a demanda / herramientas nativas como entrada por defecto / web_search seam); coste de token residente cero, y un profile patch abre la superficie completa de 19 herramientas
788
- - **Compatibilidad con Windows** (PR #11 de la comunidad): rutas temporales del sistema, arreglo de codificación GBK, resolución de intérprete en runtime (`python3`/`python`), symlink recurre a junction sin permisos, nuevo instalador PowerShell `install.ps1`
789
- - **Autocuración de cuotas**: el agotamiento de cuota remota oculto en HTTP 200 se detecta; el enrutamiento excluye ese motor y pasa a fuentes de respaldo, y vuelve automáticamente en el siguiente periodo
790
- - **Deadline global de fetch**: `ARGO_FETCH_DEADLINE_S` (60s por defecto) acota la cadena de respaldo; respeta señales de parada 429/503; renderizado tinyfish + sondas de variante `.md`
698
+ ### v2.9.7: consolidación de arquitectura + el host delega la obtención de páginas en argo + License pasa a Apache-2.0
791
699
 
792
- ### v2.8.4: fusión de datos locales + MCP en un comando
700
+ - **Cambio de License**: MIT → Apache License 2.0. Se explicita la concesión de patentes; lo demás no cambia
701
+ - **Las páginas que el host no podía obtener ahora sí se obtienen**: acortadores, actualizaciones de protocolo, redirect shells y páginas con desafío de JS pasan por la cadena de fetch de argo (HTTP primero, con escalada automática a un navegador cuando el sitio se resiste). Activado por defecto; se desactiva con `fetchProviderEnabled`
702
+ - **El modo auto ya no llama por error a motores de pago**: los 18 motores exclusivos de invocación explícita salen del pool de candidatos de enrutado y solo se usan si se nombran con `--engine`
703
+ - **Una clave nueva recupera el siguiente salto**: los motores con cuota agotada ya no esperan a que venza su ventana de recuperación, y la caché de enrutado se recalcula
704
+ - **Ejecutar JS desde crawl / research / MCP ya no se cae**
793
705
 
794
- - **La investigación profunda puede comer tus datos locales**: los work packages admiten `file_inputs` (CSV / XLSX / literatura de primera mano; se registra el hash, no el contenido) + `recompute` (recalc en sandbox; los desajustes se marcan)
795
- - **El MCP ya no se edita a mano**: `argo mcp inject` escribe Claude Code / Cursor / Windsurf / Codex / OpenCode / Cline (escritura atómica + backup + deshacer)
796
- - **Las consultas simples se quedan baratas**: normalización + puerta de complejidad + sintaxis social/plataforma primero + si se descarta un motor chino, se siguen mirando candidatos
797
- - **Keenable** como fuente web en prueba gratis
798
- - **Seguridad**: recompute bloquea subprocesos de salida a red; las rutas de host son conscientes de la instalación
706
+ ### v2.9.6: DeepSeek Search + operadores de consulta + fin del doble pago del mismo POST
799
707
 
800
- > Detalle: la tabla siguiente y las [notas de release](docs/) por versión.
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
801
713
 
802
714
  ---
803
715
 
@@ -805,30 +717,31 @@ argo/
805
717
 
806
718
  | Versión | Notas |
807
719
  |---------|-------|
808
- | **v2.9.7** | **Consolidación de arquitectura + seam web_fetch DSH + License a Apache-2.0**: MIT → Apache License 2.0; el web_fetch del huésped ahora fluye por la cadena argo_fetch (HTTP primero, ascenso a navegador ante desafíos JS, ejecución de doble vía, sin reenvío en errores de herramienta, fallos en cinco clases); 18 motores explicit_only fuera del pool de candidatos de enrutado (cierra el agujero de facturación accidental de motores de pago en auto); cortocircuito de salud del breaker, contabilidad adaptativa de una transacción, desbloqueo automático de cuota al rotar clave, invalidación de caché de ruta por agotamiento; auto/deep descartan motores agotados + early-stop más amplio + agrupación de conexiones POST; js-run arregla el crash fuera del hilo principal. |
809
- | **v2.9.6** | **Motor DeepSeek Search + contrato de operadores de consulta + agrupación de conexiones + puerta de instantáneas de enrutado**: nuevo motor `deepseek_search` activo por defecto (se omite sin key; 445-510ms, el único con cobertura completa authority/rerank_score/hora, ventanas de tiempo realmente efectivas; DSH comparte la key por el seam nativo de credenciales); `site:`/`-site:`/`-término`/`lang:`/`after:`/`before:` convergen en una capa de contrato con posfiltrado real + entrada en clave de caché; agrupación de conexiones POST (ahorra 320-561ms por petición) + preconexión MCP; octen entra en fallback y cobertura (p90 3273→1614ms, escapatoria `ARGO_GENERAL_FALLBACK_LEGACY=1`); corrige decadencia de rango RRF y caparazón de redirección Bing (40.2% de vacíos); nuevas puertas pre-commit y de instantáneas de enrutado; plugin DSH se adapta al doble stack 0.2.1-rc.2 + cobertura unit de alpha.1. |
810
- | **v2.9.5** | **Dominio dedicado de tipo de cambio + deduplicación de dos capas + corrección de falsa penalización + aislamiento de daemon por checkout**: nuevo dominio `fx_query` (tipo/paridad: en vivo + noticia diaria en 675ms vs enciclopedia antes); dedup gana normalización de sufijo (cero dependencias) + revisión difusa rapidfuzz (opcional, `ARGO_DEDUP_FUZZY`, con vuelta atrás); corrige ×0.6 por separadores (docs oficiales de vuelta arriba); negación gana "no-X"; nombres de daemon acotados por checkout. |
811
- | **v2.9.4** | **Atribución explícita de dominio de motor + cortador de cadena de recuperación + sincronización de puertas**: `--engine X` complementa `match_domains` corrigiendo TTL de caché general; motor único sin alternativa omite ejecución vacía L1; reglas `config.yaml` mejoradas; exportación `mcp_launch.sh` reducida; capa de registro local cerrada y calidad mejorada; sincronización de puertas. |
812
- | **v2.9.3** | **Empaquetado completo de posts de X + carril de estado de sesión del navegador + calidad/velocidad de la cadena local**: nuevo `argo tweet` (texto completo/hilo/citas/retweets/medios empaquetados bajo demanda, paquete de 4 archivos con `--out`); nuevo carril de sesión de navegador `argo auth` (perfil persistente por sitio, cookies solo en el almacenamiento cifrado de Chrome, resultados con sesión excluidos de la caché compartida); la cadena local china resuelve shells de Sogou/Baidu sin sesión (conservados 1→5) + gracia de consenso adaptativa (despacho en inglés ~3.0s→2.2-2.5s); js-run como primer carril de la cadena de fetch (reintentos con huella Chrome); consultas ferroviarias con transbordo/escala (embudo 10→1 corregido a un fiel 10→10); `--academic-deep` búsqueda académica profunda con una bandera; 43 motores conectados a dominios + 3 fuentes financieras sin clave + corrección del bloqueo falso de intención; huellas de imagen local 158ms→3.9ms; adelgazamiento del consumo por agentes (overhead fijo MCP −32%). |
813
- | **v2.9.2** | **Compatibilidad verificada con DSH 0.2.1-alpha.1 + tanda de correcciones de enrutamiento/guardas + sub-skill js-run**: las tres formas del plugin DSH verificadas en el último DSH 0.2.1-alpha.1; `argo mcp inject` añade WorkBuddy, cubriendo el 7.º host; degradación de evidencia débil TF-IDF a fuentes auxiliares, piso de fuentes muertas + relleno de slots del breaker, aislamiento de enrutamiento de motores con cuota agotada, corrección de falsos positivos en cascada de serp_guard; importaciones diferidas de engines/evidence (import −50%) y cortocircuito del conjunto de existencia en admisión (open 261→99); guardas de entrada MCP y de argumentos numéricos cerradas; nueva sub-skill js-run (JS web sin navegador, P50 ≈1ms). |
814
- | **v2.9.1** | **Optimización de calidad de contenido + resistencia a granjas de contenido + adaptación a la última versión**: evaluación de calidad de contenido mejorada, con mayor capacidad de identificar y filtrar contenido de baja calidad generado en masa; adaptación a la última versión para una colaboración sin fisuras; la búsqueda local añade una guarda de su propio árbol de instalación para evitar que los resultados se contaminen con su propio código fuente. |
815
- | **v2.9.0** | **Optimización de fuentes + paridad plugin/CLI + lenguas minoritarias**: fuentes 237→253 (sin clave 198→219); se añaden 14 fuentes de noticias en lenguas minoritarias, la fuente de texto completo CORE, TinEye de búsqueda inversa de imágenes, Bing RSS y más; Baidu y Sogou revividas; 18 comandos CLI corresponden uno a uno con 19 herramientas MCP; cadena de importación −79%, rerank 33ms→1.5ms, aciertos de caché notablemente mejorados; corrección de seguridad entre procesos en la ruta de escritura de cuotas; nuevo registro de uso local `argo stats`. Ver [notas de la versión](docs/RELEASE_NOTES_v2.9.0.md) |
816
- | **v2.8.9** | **Salida más ligera + recuperación más rica y rápida + 5 fuentes internacionales y de verificación**: salida por defecto 15.5KB→5.2KB (−66%, `--envelope` restaura el sobre completo); la caché de decisiones de enrutado reduce las consultas repetidas −30%; despacho en red lenta −36% (dominios serie con respaldo automático tras 0.8s); revisión de la cadena de fetch en cinco rondas (recall +35%, latencia −30%, P90 de cola larga −8%) + restauración de estructura del cuerpo (títulos/listas/tablas 0/6→6/6) + corrección de la puntuación de calidad para CJK; nuevas fuentes sin clave Guardian RSS / France 24 / DW / FactCheck.org / Full Fact (232→237, sin clave 194→198, dominios 90→92), gdelt retirado; seis defectos de autoconsistencia corregidos + embudo de seis etapas + herramienta de repetición sin conexión (`scripts/replay_eval.py`) + puertas de despliegue post-política y contratos de umbral por escenario. Ver [notas de la versión](docs/RELEASE_NOTES_v2.8.9.md) |
817
- | **v2.8.8** | **Correcciones reportadas por usuarios reales (#12 silencio del alias de clave, #13 fetch sin proxy) + aceleración general + fuentes 218 → 232**: despacho de salida unificado (`ARGO_PROXY` / reglas por dominio / variables de proxy estándar, respetando `NO_PROXY`); 16 puntos de lectura de claves unificados en la cadena de alias; arranque en frío 2.1s→0.55s, caché de configuración 50–82ms→16–18ms, parada temprana con umbral de planitud QPP, `--list-engines --detail` reducido 152KB→51KB; nuevos `argo answer` (respuestas directas con citas) y `argo watch` (detección de cambios web), 14 fuentes sin clave (tendencias y vida diaria de China / avisos de seguridad / académico de acceso abierto / directorios de skills / búsqueda para agentes), 69 motores reclasificados (cuota del fallback `web_general` 41%→20%, nuevo dominio security); rutas convencionales por plataforma (`argo paths`) + Python 3.9 + concurrencia acotada que hace efectivos los timeouts; search.py dividido en módulos 3351→2526 líneas, golden de relevancia sobre 22 motores, puertas de defectos estáticos y de contrato de salida. Ver [notas de la versión](docs/RELEASE_NOTES_v2.8.8.md) |
818
- | **v2.8.7** | **218 fuentes / 89 dominios + tres canales de salida directa del cuerpo + disciplina de disparo de rutas + corrección de cero resultados en macro**: 50 fuentes nuevas acumuladas en los lotes 7/8/9 (leyes, estándares, inteligencia de seguridad, academia, noticias, entretenimiento, energía/transporte, legal/administrativo), motores stackexchange y doi; sondeo de nivel 0 llms.txt y variantes `.md` en la cadena de fetch, más nivel lector r.jina.ai; corrección de la lista de motores separada por comas en `--engine`, alcance de tfidf y route_reason, matriz de control de rutas negativas, golden de ranking y puertas de ablación de fusión; las consultas macro de China priorizan el buró nacional de estadística, la recuperación de cero resultados abre L3 y los motores de rescate se contabilizan con honestidad. Ver [notas de la versión](docs/RELEASE_NOTES_v2.8.7.md) |
819
- | **v2.8.6** | **Carrera hedged + reparto de tres fuentes de Zhihu + despacho declarativo por idioma + puerta de alcanzabilidad + protocolo de búsqueda académica**: carrera con ventana de gracia para el primer motor (los motores rápidos pagan 1 llamada), búsqueda global y datos personales de Zhihu con antiexterminio, despacho por idioma/académico de subconsultas (fuentes en inglés y 17 fuentes académicas en la recolección), metadatos de idioma por motor y puerta de alcanzabilidad (las fuentes muertas salen a la luz), cola geo −56%, protocolo de construcción de consultas académicas. Ver [notas de la versión](docs/RELEASE_NOTES_v2.8.6.md) |
820
- | **v2.8.5** | **Herramientas nativas del plugin DSH + MCP apagado por defecto + compatibilidad Windows + autocuración de cuotas + deadline de fetch**: `argo_search`/`argo_fetch` como herramientas nativas de primera clase (CLI de un tiro, mismo motor y guardas que MCP, esquema de fuente única + puerta contra deriva); tres formas de conexión, MCP a demanda; compatibilidad Windows (rutas temp / GBK / resolución de intérprete / junction / `install.ps1`, PR #11); bucle de autocuración de cuotas (detección de sobre HTTP 200 + exclusión de ruta + autocuración por periodo); deadline global de fetch (`ARGO_FETCH_DEADLINE_S`) + renderizado tinyfish + sondas `.md`; env de recarga caliente y directorio de estado de fuente única. [Notas](docs/RELEASE_NOTES_v2.8.5.md) |
821
- | **v2.8.4** | **Fusión de datos locales + inyección MCP multi-cliente + búsqueda estructurada + Keenable**: investigación L1 con datos locales de primera mano (`file_inputs` + `recompute` + `local_sources`); `argo mcp inject` (`mcp/clients.yaml` declarativo); normalización / variantes / puerta de complejidad / sintaxis social primero / arreglo TF-IDF / `--include-local`; motor Keenable (prueba gratis); endurecimiento de seguridad. Ver [notas de release](docs/RELEASE_NOTES_v2.8.4.md) |
720
+ | **v2.9.8** | **Auditoría de precisión de enrutado + fixes de issue #18/#19 + aislamiento de estado en tests**: reproducción de consultas reales y acotado de 16 clases de falsos disparadores (marcas, productos, campos, subcadenas ASCII); puerta de cobertura SERP y validación cruzada CJK; ledger nocturno con log vacío, feed por defecto de people_daily y guardia de caché corregidos; estado adaptive/breaker aislado por test. Gracias a @wpp666 por la reproducción y el diagnóstico. Ver [notas de la versión](docs/RELEASE_NOTES_v2.9.8.md). |
721
+ | **v2.9.7** | **Consolidación de arquitectura + seam web_fetch DSH + License a Apache-2.0**: MIT → Apache 2.0; el fetch del huésped pasa por argo (redirect shells, desafíos JS); 18 motores de invocación explícita fuera del pool, para que el modo auto no facture por error. |
722
+ | **v2.9.6** | **Motor DeepSeek Search + contrato de operadores de consulta + agrupación de conexiones + puerta de instantáneas de enrutado**: `deepseek_search` nuevo y activo por defecto (se omite sin clave): 445-510 ms con `--since`/`--until`; conexiones agrupadas ahorran 320-561 ms; `site:` y `lang:` filtran de verdad. |
723
+ | **v2.9.5** | **Dominio dedicado de tipo de cambio + deduplicación de dos capas + corrección de falsa penalización + aislamiento de daemon por checkout**: `fx_query` nuevo: USD/CNY responde en 675 ms con tipo al contado y noticia del día, antes 1,4 s de enciclopedia; la deduplicación suma sufijos de sitio y `ARGO_DEDUP_FUZZY` opcional. |
724
+ | **v2.9.4** | **Atribución explícita de dominio de motor + cortador de cadena de recuperación + sincronización de puertas**: `--engine X` fija ya el dominio y el TTL de caché sigue al dominio, no se generaliza; un motor único sin respaldo ya no reejecuta en vacío. |
725
+ | **v2.9.3** | **Empaquetado completo de posts de X + carril de estado de sesión del navegador + calidad/velocidad de la cadena local**: nuevos `argo tweet` (posts de X con hilos y medios; `--out`), `argo auth` (sesión de navegador persistente por sitio) y `--academic-deep`; despacho en inglés ~3,0s→2,2-2,5s. |
726
+ | **v2.9.2** | **Compatibilidad verificada con DSH 0.2.1-alpha.1 + tanda de correcciones de enrutamiento/guardas + sub-skill js-run**: `argo mcp inject` añade WorkBuddy y cubre 7 hosts; nueva sub-habilidad js-run: JS de páginas web sin navegador, P50 ≈1 ms por ejecución. |
727
+ | **v2.9.1** | **Optimización de calidad de contenido + resistencia a granjas de contenido + adaptación a la última versión**: filtra mejor el contenido de baja calidad generado en masa; la búsqueda local ya no devuelve su propio código fuente como resultado. |
728
+ | **v2.9.0** | **Optimización de fuentes + paridad plugin/CLI + lenguas minoritarias**: fuentes 237→253 (sin clave 198→219): 14 fuentes de noticias minoritarias, CORE y TinEye; rerank 33 ms→1,5 ms; nuevo `argo stats`. Ver [notas de la versión](docs/RELEASE_NOTES_v2.9.0.md) |
729
+ | **v2.8.9** | **Salida más ligera + recuperación más rica y rápida + 5 fuentes internacionales y de verificación**: salida 15,5KB→5,2KB (−66 %, `--envelope` la restaura); consultas repetidas −30 %; cinco fuentes sin clave nuevas (235→237). Ver [notas de la versión](docs/RELEASE_NOTES_v2.8.9.md) |
730
+ | **v2.8.8** | **Correcciones reportadas por usuarios reales (#12 silencio del alias de clave, #13 fetch sin proxy) + aceleración general + fuentes 218 → 235**: proxies por `ARGO_PROXY` y por dominio, con `NO_PROXY` respetado; arranque 2,1s→0,55s; nuevos `argo answer` y `argo watch`; fuentes 218→235. Ver [notas de la versión](docs/RELEASE_NOTES_v2.8.8.md) |
731
+ | **v2.8.7** | **218 fuentes / 89 dominios + tres canales de salida directa del cuerpo + disciplina de disparo de rutas + corrección de cero resultados en macro**: 50 fuentes nuevas (leyes, estándares, seguridad); llms.txt sondeado en el nivel 0 con r.jina.ai de respaldo; `--engine` acepta listas con comas. Ver [notas de la versión](docs/RELEASE_NOTES_v2.8.7.md) |
732
+ | **v2.8.6** | **Carrera hedged + reparto de tres fuentes de Zhihu + despacho declarativo por idioma + puerta de alcanzabilidad + protocolo de búsqueda académica**: carrera con ventana de gracia para el primer motor; despacho por idioma y académico con 17 fuentes académicas; cola geo −56 %. Ver [notas de la versión](docs/RELEASE_NOTES_v2.8.6.md) |
733
+ | **v2.8.5** | **Herramientas nativas del plugin DSH + MCP apagado por defecto + compatibilidad Windows + autocuración de cuotas + deadline de fetch**: `argo_search` y `argo_fetch` ya son herramientas nativas de primera clase; llega el soporte de Windows; deadline de fetch (`ARGO_FETCH_DEADLINE_S`). [Notas](docs/RELEASE_NOTES_v2.8.5.md) |
734
+ | **v2.8.4** | **Fusión de datos locales + inyección MCP multi-cliente + búsqueda estructurada + Keenable**: investigación L1 con datos locales (`file_inputs`, `recompute`); `argo mcp inject` monta MCP en varios clientes; Keenable llega en prueba gratis. Ver [notas de release](docs/RELEASE_NOTES_v2.8.4.md) |
822
735
  | **v2.8.3** | **Arreglo de enrutamiento multilingüe + anysearch in-process + RRF ponderado**: ja/ko devuelven el idioma objetivo; DE/FR/ES/IT vía anysearch; downweight weakest-link (paper 2508.01405). Ver [notas de release](docs/RELEASE_NOTES_v2.8.3.md) |
823
736
  | **v2.8.2** | **Windows + semántica de evidencia unificada**: se quita el límite npm `os`; UTF-8 contra cuelgues GBK; `dsh.bundle` en el paquete principal; puerta de calidad de `wide_research`. Ver [notas de release](docs/RELEASE_NOTES_v2.8.2.md) |
824
737
  | **v2.8.0** | **Bucle de evidencia + empleos v3 + clima dual**: `fetch_required` / `--verify`; `argo job`; wttr.in + Open-Meteo; Parallel / You.com. Ver [notas de release](docs/RELEASE_NOTES_v2.8.0.md) |
825
738
  | **v2.7.3** | HttpClient en capa de motor; TF-IDF activa 25 verticales; TTL de 70 dominios; verticales bilingües. Ver [notas de release](docs/RELEASE_NOTES_v2.7.3.md) |
826
739
  | **v2.7.2** | Búsqueda profesional con sesión (ego-search, off por defecto); JA/KO ya no mezclan motores chinos. Ver [notas de release](docs/RELEASE_NOTES_v2.7.2.md) |
827
740
  | **v2.7.1** | Endurecimiento SSRF + arreglo del estado de salud del routing. Ver [notas de release](docs/RELEASE_NOTES_v2.7.1.md) |
828
- | **v2.7.0** | **Tarjetas modales verticales estructuradas**: motores nativos `bocha` / `bocha_ai` integrados; el dominio `modal_card` reconoce en un solo lugar tarjetas en tiempo real — billetes de tren / precios de combustible / metales preciosos / calendario perpetuo / horóscopo / consulta de teléfono / vehículos / citas médicas, etc.; corregido un defecto de análisis web de `bocha`. Ver [notas de la versión](docs/RELEASE_NOTES_v2.7.0.md) |
829
- | **v2.6.2** | Fusión de líneas de mejora independientes: conciencia del entorno de red / RRF ponderado + caché semántica / desactivación adaptativa de motores / seguridad de contenido + variantes de consulta / tres grandes motores verticales / mejora del enrutamiento de dominios ja-ko; incluye la corrección de enrutamiento de v2.6.1. Ver [notas de la versión](docs/RELEASE_NOTES_v2.6.2.md) |
741
+ | **v2.7.0** | **Tarjetas modales verticales estructuradas**: motores nativos `bocha` y `bocha_ai`; `modal_card` reconoce tarjetas de tren, combustible, metales y calendario en tiempo real. Ver [notas de la versión](docs/RELEASE_NOTES_v2.7.0.md) |
742
+ | **v2.6.2** | Fusión de líneas independientes: entorno de red, RRF ponderado con caché semántica, motores desactivables y enrutado ja-ko completado. Ver [notas de la versión](docs/RELEASE_NOTES_v2.6.2.md) |
830
743
  | **v2.6.1** | Versión de corrección de v2.6.0: corrección de daño colateral de enrutamiento (`capital of` ya no se apodera de fact_check); sincronización de versión. Ver [notas de la versión](docs/RELEASE_NOTES_v2.6.1.md) |
831
- | **v2.6.0** | **Búsqueda multilingüe** (detect / engine params / cross-lang fallback); verticales film·sports·geo·org·media; recovery anti-contaminación; familias de capacidad + regresión matrix; ~120+ fuentes. Ver [notas de release](docs/RELEASE_NOTES_v2.6.0.md) |
744
+ | **v2.6.0** | **Búsqueda multilingüe** (detección de idioma / params de motor / respaldo cross-lang); verticales de cine, deportes, geo, org y media; ~120+ fuentes. Ver [notas de release](docs/RELEASE_NOTES_v2.6.0.md) |
832
745
  | **v2.5.1** | Fuentes de respuesta finanzas/macro/química más densas; tiers de motor + presupuesto combo; [notas v2.5.1](docs/RELEASE_NOTES_v2.5.1.md) |
833
746
  | **v2.5.0** | Script de instalación + npx; rewrite desacoplado del routing; caché hot-path; MCP compacto |
834
747
  | **v2.4.0** | Fallback de ruta de baja puntuación + filtros de mal-enrutado social; caché depth / soft hits; breakers y caché negativa; `engine_outcomes` |