ollama-intern-mcp 2.8.0 → 2.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.es.md +167 -140
- package/README.fr.md +36 -9
- package/README.hi.md +171 -144
- package/README.it.md +37 -10
- package/README.ja.md +178 -151
- package/README.md +39 -12
- package/README.pt-BR.md +36 -9
- package/README.zh.md +37 -10
- package/SECURITY.md +10 -2
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +21 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +176 -74
- package/dist/index.js.map +1 -1
- package/dist/observability.d.ts +7 -0
- package/dist/observability.d.ts.map +1 -1
- package/dist/observability.js.map +1 -1
- package/dist/profiles.d.ts +29 -2
- package/dist/profiles.d.ts.map +1 -1
- package/dist/profiles.js +32 -4
- package/dist/profiles.js.map +1 -1
- package/dist/routing.d.ts +46 -0
- package/dist/routing.d.ts.map +1 -1
- package/dist/routing.js +96 -7
- package/dist/routing.js.map +1 -1
- package/dist/tools/batch.d.ts.map +1 -1
- package/dist/tools/batch.js +15 -10
- package/dist/tools/batch.js.map +1 -1
- package/dist/tools/briefs/common.d.ts +29 -1
- package/dist/tools/briefs/common.d.ts.map +1 -1
- package/dist/tools/briefs/common.js +55 -1
- package/dist/tools/briefs/common.js.map +1 -1
- package/dist/tools/changeBrief.js +2 -2
- package/dist/tools/changeBrief.js.map +1 -1
- package/dist/tools/chat.d.ts +4 -0
- package/dist/tools/chat.d.ts.map +1 -1
- package/dist/tools/chat.js +39 -7
- package/dist/tools/chat.js.map +1 -1
- package/dist/tools/classify.d.ts.map +1 -1
- package/dist/tools/classify.js +2 -1
- package/dist/tools/classify.js.map +1 -1
- package/dist/tools/codeCitation.js +2 -2
- package/dist/tools/codeCitation.js.map +1 -1
- package/dist/tools/codeReview.js +2 -2
- package/dist/tools/codeReview.js.map +1 -1
- package/dist/tools/corpusAnswer.d.ts.map +1 -1
- package/dist/tools/corpusAnswer.js +2 -1
- package/dist/tools/corpusAnswer.js.map +1 -1
- package/dist/tools/corpusSearch.d.ts.map +1 -1
- package/dist/tools/corpusSearch.js +4 -1
- package/dist/tools/corpusSearch.js.map +1 -1
- package/dist/tools/doctor.d.ts +6 -0
- package/dist/tools/doctor.d.ts.map +1 -1
- package/dist/tools/doctor.js +11 -1
- package/dist/tools/doctor.js.map +1 -1
- package/dist/tools/extract.d.ts.map +1 -1
- package/dist/tools/extract.js +2 -1
- package/dist/tools/extract.js.map +1 -1
- package/dist/tools/hypothesisDrill.js +2 -2
- package/dist/tools/hypothesisDrill.js.map +1 -1
- package/dist/tools/incidentBrief.js +2 -2
- package/dist/tools/incidentBrief.js.map +1 -1
- package/dist/tools/logStats.d.ts +88 -0
- package/dist/tools/logStats.d.ts.map +1 -0
- package/dist/tools/logStats.js +227 -0
- package/dist/tools/logStats.js.map +1 -0
- package/dist/tools/multiFileRefactorPropose.js +2 -2
- package/dist/tools/multiFileRefactorPropose.js.map +1 -1
- package/dist/tools/refactorPlan.js +2 -2
- package/dist/tools/refactorPlan.js.map +1 -1
- package/dist/tools/repoBrief.js +2 -2
- package/dist/tools/repoBrief.js.map +1 -1
- package/dist/tools/runner.d.ts +13 -0
- package/dist/tools/runner.d.ts.map +1 -1
- package/dist/tools/runner.js +37 -11
- package/dist/tools/runner.js.map +1 -1
- package/dist/tools/summarizeDeep.d.ts.map +1 -1
- package/dist/tools/summarizeDeep.js +6 -4
- package/dist/tools/summarizeDeep.js.map +1 -1
- package/dist/tools/summarizeFast.d.ts.map +1 -1
- package/dist/tools/summarizeFast.js +5 -3
- package/dist/tools/summarizeFast.js.map +1 -1
- package/dist/tools/triageLogs.d.ts.map +1 -1
- package/dist/tools/triageLogs.js +2 -1
- package/dist/tools/triageLogs.js.map +1 -1
- package/dist/tools/verifyClaims.d.ts +199 -0
- package/dist/tools/verifyClaims.d.ts.map +1 -0
- package/dist/tools/verifyClaims.js +458 -0
- package/dist/tools/verifyClaims.js.map +1 -0
- package/package.json +4 -2
package/README.es.md
CHANGED
|
@@ -13,65 +13,76 @@
|
|
|
13
13
|
<a href="https://mcp-tool-shop-org.github.io/ollama-intern-mcp/handbook/"><img alt="Handbook" src="https://img.shields.io/badge/handbook-docs-10b981"></a>
|
|
14
14
|
</p>
|
|
15
15
|
|
|
16
|
-
> **El becario local para Claude Code.** <!-- TOOL_COUNT:start -->
|
|
16
|
+
> **El becario local para Claude Code.** <!-- TOOL_COUNT:start -->44<!-- TOOL_COUNT:end --> herramientas diseñadas para tareas específicas, resúmenes basados en evidencia, artefactos duraderos.
|
|
17
17
|
|
|
18
|
-
Un servidor MCP que
|
|
18
|
+
Un servidor MCP que proporciona a Claude Code un **becario local** con reglas, niveles, un escritorio y un archivador. Claude elige la _herramienta_; la herramienta elige el _nivel_ (Instantáneo / de trabajo intensivo / Profundo / Integrado); el nivel escribe un archivo que puedes abrir la semana que viene.
|
|
19
19
|
|
|
20
|
-
**También ejecuta [Hermes Agent](https://github.com/NousResearch/hermes-agent) en `hermes3:8b`** — validado de principio a fin el 19 de abril de 2026. La configuración predeterminada es `hermes3:8b`; `qwen3:*` es la
|
|
20
|
+
**También ejecuta [Hermes Agent](https://github.com/NousResearch/hermes-agent) en `hermes3:8b`** — validado de principio a fin el 19 de abril de 2026. La configuración predeterminada es `hermes3:8b`; `qwen3:*` es la alternativa. Consulta [Uso con Hermes](#use-with-hermes) más abajo.
|
|
21
21
|
|
|
22
|
-
**Requisitos de hardware:** ~6 GB de VRAM para `hermes3:8b`, o ~16 GB de RAM para la inferencia en CPU.
|
|
22
|
+
**Requisitos de hardware:** ~6 GB de VRAM para `hermes3:8b`, o ~16 GB de RAM para la inferencia en CPU. Consulta [handbook/getting-started](https://mcp-tool-shop-org.github.io/ollama-intern-mcp/handbook/getting-started/#hardware-minimums) para obtener información detallada.
|
|
23
23
|
|
|
24
|
-
**¿No
|
|
24
|
+
**¿No usas Claude?** El directorio [`examples/`](./examples/) contiene un cliente MCP mínimo de Node.js y Python que puedes ejecutar a través de stdio. Consulta también [handbook/with-hermes](https://mcp-tool-shop-org.github.io/ollama-intern-mcp/handbook/with-hermes/).
|
|
25
25
|
|
|
26
|
-
**
|
|
26
|
+
**Prioridad local:** cero transferencia de datos a través de la red hasta que decidas activarla. Sin telemetría. Nada "autónomo". Cada llamada muestra su proceso. El enrutamiento opcional a [Ollama Cloud](#ollama-cloud-optional) permite utilizar modelos de clase 600B con las mismas herramientas cuando el hardware local es el cuello de botella, con una reversión automática al modo local.
|
|
27
27
|
|
|
28
28
|
---
|
|
29
29
|
|
|
30
|
-
##
|
|
30
|
+
## Nuevo en la versión 2.9.0
|
|
31
31
|
|
|
32
|
-
**
|
|
32
|
+
**La función de nube — un proceso de verificación entre familias, escalamiento a la nube bajo demanda y la economía para verlo.** El comportamiento con prioridad local no cambia: sin una clave configurada, el comportamiento es idéntico al de la versión 2.8.0 (cero transferencia de datos, sin comprobación inicial en la nube).
|
|
33
33
|
|
|
34
|
-
-
|
|
35
|
-
- **
|
|
36
|
-
-
|
|
37
|
-
- **
|
|
38
|
-
- **Artefactos y registros honestos.** Las escrituras del paquete son atómicas y nunca sobrescriben silenciosamente; los paquetes degradados informan sobre el nivel que se utilizó realmente; el detector de escritura interrumpida detecta las escrituras incompletas en cualquier modificación; los ID de fragmento ya no coinciden entre archivos con contenido idéntico. La auditoría de dependencias está completamente limpia (0 vulnerabilidades).
|
|
34
|
+
- **`ollama_verify_claims` — verificación entre familias.** `ollama_code_review` *genera* los resultados; esto *los evalúa*. Ejecuta un panel insignia de Ollama Cloud de una familia diferente (deepseek / kimi / glm por defecto) sobre tus afirmaciones + evidencia y devuelve CONFIRMADO / REFUTADO / NECESITA_REVISIÓN para cada afirmación. La agregación se basa en el principio de que la disidencia única nunca decide (≥2 para refutar, ≥2 para confirmar), cada jurado está verificado con un modelo servido localmente (se excluye y no se cuenta un modelo local alternativo o sustituto) y las entradas de las afirmaciones están estructuradas sin razonamiento. El límite honesto está documentado: una confirmación es evidencia de respaldo, no prueba; es fiable para señalar errores graves, pero menos eficaz con los errores sutiles de un modelo de vanguardia.
|
|
35
|
+
- **Escalamiento a la nube por llamada + modo de espera.** Establece `OLLAMA_API_KEY` *solo* (sin `OLLAMA_CLOUD_PRIMARY`) y estarás en **modo de espera**: prioridad local, cero transferencia de datos, sin comprobación inicial, hasta que una sola llamada active el modo con `backend:'cloud'`. Escala una revisión de alto riesgo a un modelo de 600B sin cambiar todas las llamadas al modo nube. La primera escalada revela la transferencia de datos de forma clara en el momento en que ocurre; ahora, una anulación de `model` por llamada se aplica literalmente al intento en la nube.
|
|
36
|
+
- **`ollama_log_stats` — las métricas económicas prometidas en el eslogan.** Un resumen sin LLM de tus recibos NDJSON: división entre nube y local, tasa de reversión de nube a local, tokens por herramienta, p50/p95 de latencia, limitado por una ventana `since`.
|
|
37
|
+
- **Herramienta de diagnóstico para CI + herramientas legibles por máquina.** `doctor --json --fail-unhealthy` proporciona a las canalizaciones una puerta de enlace real (con un indicador `healthy` compatible con la nube), y ahora cada herramienta incluye anotaciones MCP `readOnlyHint`/`destructiveHint`/`title`, para que los clientes obtengan la experiencia de usuario de permisos correcta. Además, `init --claude` crea un archivo `.mcp.json` listo para pegar.
|
|
39
38
|
|
|
40
|
-
|
|
39
|
+
Más detalles en [CHANGELOG.md](./CHANGELOG.md).
|
|
41
40
|
|
|
42
|
-
##
|
|
41
|
+
## Nuevo en la versión 2.8.0
|
|
43
42
|
|
|
44
|
-
**
|
|
43
|
+
**Mayor fiabilidad, durabilidad y seguridad — 25 correcciones, todas ellas probadas primero y verificadas entre familias.** El comportamiento con prioridad local no cambia y no se eliminó ningún contrato de herramienta; las llamadas existentes siguen funcionando. Las mejoras más importantes son:
|
|
45
44
|
|
|
46
|
-
- **
|
|
47
|
-
- **
|
|
48
|
-
-
|
|
49
|
-
-
|
|
45
|
+
- **No más pérdida silenciosa de datos del corpus.** Un error de lectura transitorio durante `ollama_corpus_refresh` (un bloqueo de archivos de Windows, una retención de un antivirus, una ventana de guardado de un editor) solía clasificar el archivo como "faltante" y **eliminar permanentemente su contenido indexado**. Ahora solo se elimina un archivo que realmente no existe; un error transitorio conserva la ruta, lo marca para reintentar y preserva sus fragmentos.
|
|
46
|
+
- **Concurrencia que respeta sus límites.** Un tiempo de espera de nivel ahora puede cancelar una llamada que aún está en cola para obtener un permiso (antes se quedaba bloqueada mucho después del límite mientras los recibos indicaban otra cosa), y `ollama_chat` finalmente se enruta a través de la unión de tiempo de espera/nivel, por lo que una generación local atascada no puede detener todas las herramientas y realmente llega a la nube en el modo con prioridad en la nube.
|
|
47
|
+
- **Nube que se degrada en lugar de fallar.** Un ID de modelo de nube retirado ahora vuelve al modo local con una razón clara `cloud_model_missing` y una indicación específica de la nube en lugar de un fallo total; el interruptor automático no puede bloquearse permanentemente; un modelo persistentemente faltante deja de realizar una solicitud a la nube en cada llamada.
|
|
48
|
+
- **Superficie de seguridad que coincide con su documentación.** `ollama_batch_proof_check` ahora realmente aplica la contención del directorio de trabajo (con una nueva restricción de entorno del operador `INTERN_BATCH_PROOF_ALLOWED_ROOTS` que un llamador no puede ampliar), los sanitizadores de inyección de prompts obtuvieron cobertura + un límite honestamente divulgado, y el protector de ruta protegido no distingue entre mayúsculas y minúsculas en macOS.
|
|
49
|
+
- **Artefactos y recibos honestos.** Las escrituras de paquetes son atómicas y nunca sobrescriben silenciosamente; los sobre de lotes degradados informan del nivel que se utilizó realmente; el detector de escritura interrumpida detecta las escrituras incompletas en cualquier modificación; los ID de fragmento ya no entran en conflicto entre archivos con contenido idéntico. La auditoría de dependencias es completamente clara (0 vulnerabilidades).
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
Más detalles en [CHANGELOG.md](./CHANGELOG.md).
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
## Nuevo en la versión 2.7.0
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
- **Por qué existe esto.** El wrapper R-018 de research-os (v0.12.1) envolvió `callTool` de MCP con `Promise.race` y descubrió que el presupuesto del wrapper no alcanzaba el nivel interno; `DEV_RTX5080_TIMEOUTS.instant = 15_000` continuó activando `TIER_TIMEOUT` a los 15000 ms, independientemente de un presupuesto de wrapper de 180000 ms. v2.6.0 proporciona el presupuesto autoritativo del lado de MCP para que la bandera `--planner-timeout-ms` del operador (research-os) controle finalmente los tiempos de espera internos como se diseñó.
|
|
57
|
-
- **Se conserva el comportamiento predeterminado.** Si se omite el campo, los valores predeterminados del perfil rigen byte a byte. Los llamadores anteriores a v2.6.0 no ven ningún cambio.
|
|
58
|
-
- **Se conserva la expresión regular `fallback-cause` de R-010.** El mensaje de error `TIER_TIMEOUT` del lado del servidor sigue coincidiendo con `/elapsed=(\d+)ms/` + `/budget=(\d+)ms/`, por lo que la visibilidad del asesor de IA en las rutas posteriores funciona tanto para la anulación como para los valores predeterminados.
|
|
59
|
-
- Utilizado por research-os v0.13.0 (acumulativo, configuración del cliente R-019 + R-020 + R-021) en una versión multirrepositorio coordinada.
|
|
55
|
+
**Enrutamiento opcional de Ollama Cloud: primario en la nube, con respaldo local.** Para activarlo, utilice una clave y un indicador, y las capas generativas se dirigirán a un modelo en la nube de clase 600B; los embeddings permanecerán locales; un mecanismo de seguridad volverá al perfil local en caso de cualquier fallo en la nube. **Desactivado por defecto: sin transferencia de datos a menos que configure tanto `OLLAMA_API_KEY` como `OLLAMA_CLOUD_PRIMARY=1`.** Mejora menor y aditiva: los usuarios de versiones anteriores a v2.7.0 (y aquellos que no activen la función) verán un comportamiento idéntico. Consulte [Ollama Cloud (opcional)](#ollama-cloud-optional).
|
|
60
56
|
|
|
61
|
-
|
|
57
|
+
- **Primario en la nube con una red de seguridad.** Un `RoutingOllamaClient` intenta primero utilizar la nube y, si se produce un tiempo de espera / error 5xx / 429 / problema de red, vuelve al perfil local. Las claves incorrectas (401/403) se detectan claramente mediante un mecanismo de seguridad persistente en lugar de degradarse silenciosamente para siempre; también se detecta un ID de modelo en la nube retirado o con errores tipográficos (404).
|
|
58
|
+
- **Nunca una degradación silenciosa.** Cada mensaje incluye `backend` (`cloud`|`local`), `degraded` y `degrade_reason`, por lo que siempre sabrá cuándo se utilizó el modelo local en lugar del modelo principal. Un evento NDJSON `backend_fallback` hace visible la tasa de cambio de nube a local en `ollama_log_tail`.
|
|
59
|
+
- **`ollama_doctor` informa sobre la autenticación y la accesibilidad de la nube** como un bloque distinto; `ollama-intern-mcp doctor` muestra una sección `Cloud (primary)`.
|
|
60
|
+
- El modelo predeterminado en la nube era `minimax-m3:cloud` en el lanzamiento v2.7.0 *(desde entonces se ha cambiado a `qwen3-coder-next:cloud`: un valor predeterminado que devuelve respuestas vacías en las herramientas con un límite de `num_predict`; consulte la [tabla de variables de entorno](#cloud-env-vars))*; puede anularlo por capa con `INTERN_CLOUD_MODEL` / `INTERN_CLOUD_DEEP_MODEL`.
|
|
62
61
|
|
|
63
|
-
|
|
62
|
+
## Nuevo en v2.6.0
|
|
64
63
|
|
|
65
|
-
|
|
64
|
+
Anulación del presupuesto por llamada y por capa en `ollama_extract`. Mejora menor y aditiva: los usuarios de versiones anteriores a v2.6.0 no se verán afectados. Entrada detallada en [CHANGELOG.md](./CHANGELOG.md).
|
|
66
65
|
|
|
67
|
-
|
|
66
|
+
- **Campo del esquema `tier_budget_ms_override?: number` en `ollama_extract`** (opcional, con un límite de `[1, 600000]` ms). Cuando está presente, aplica la anulación a cada capa visitada por el ejecutor, de modo que el mecanismo interno `runWithTimeoutAndFallback` en `src/guardrails/timeouts.ts:61` respete el presupuesto proporcionado por el operador en lugar del valor predeterminado del perfil. La cascada (motor principal → instantáneo al alcanzar el tiempo de espera) sigue activándose; la anulación rige cada salto de la cascada de forma uniforme.
|
|
67
|
+
- **Por qué existe esto.** El wrapper R-018 de research-os (v0.12.1) envolvió `callTool` de MCP con `Promise.race` y descubrió que el presupuesto del wrapper no alcanzaba la capa interna: `DEV_RTX5080_TIMEOUTS.instant = 15_000` continuó activando `TIER_TIMEOUT` a los 15000 ms, independientemente del presupuesto de 180000 ms del wrapper. v2.6.0 proporciona el presupuesto autoritativo en el lado de MCP para que la bandera `--planner-timeout-ms` del operador (research-os) controle finalmente los tiempos de espera de las capas internas según lo previsto.
|
|
68
|
+
- **Se conserva el comportamiento predeterminado.** Si se omite el campo, se aplican los valores predeterminados del perfil de forma idéntica. Los usuarios de versiones anteriores a v2.6.0 no notarán ningún cambio.
|
|
69
|
+
- **Se conserva la expresión regular `R-010 fallback-cause`.** El mensaje de error `TIER_TIMEOUT` en el lado del servidor sigue coincidiendo con `/elapsed=(\d+)ms/` + `/budget=(\d+)ms/`, por lo que la visibilidad del asesor de IA aguas abajo funciona tanto en las rutas de anulación como en las predeterminadas.
|
|
70
|
+
- Utilizado por research-os v0.13.0 (integración acumulativa del cliente R-019 + R-020 + R-021) en un lanzamiento coordinado entre varios repositorios.
|
|
68
71
|
|
|
69
|
-
|
|
70
|
-
- **Nuevo campo de envoltorio `num_ctx_used?: number`**: presente solo cuando el servidor MCP realmente envió `num_ctx`. Ausente cuando la solicitud permitió que Ollama eligiera. No infiera un valor predeterminado: el servidor MCP no consulta a Ollama para obtener el valor efectivo.
|
|
71
|
-
- **Valores predeterminados del perfil**: `dev-rtx5080` / `dev-rtx5080-qwen3` se envían con `instant: 4096`, `workhorse: 8192`, `deep`/`embed` NO ESTABLECIDOS. Dimensionado para mantener `hermes3:8b` residente en los 16 GB de VRAM de la RTX 5080 para herramientas rápidas. `m5-max` deja cada nivel SIN ESTABLECER; los 128 GB de memoria unificada no tienen problemas de desbordamiento.
|
|
72
|
-
- **Cierra el diagnóstico de la fase 1 de la v0.8.0**: `hermes3:8b` con el contexto predeterminado de 32K en RTX 5080 se derramó a la CPU y comenzó a agotar el tiempo de las llamadas `ollama_extract` del motor principal. La v2.4.0 evita esto en la capa del perfil.
|
|
72
|
+
### Histórico: entregas de v2.4.0
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
Consulte [CHANGELOG.md](./CHANGELOG.md) y [docs/release-notes/v2.4.0.md](./docs/release-notes/v2.4.0.md) para obtener la entrada completa de v2.4.0 (control por capa de `num_ctx` en el sistema de perfiles).
|
|
75
|
+
|
|
76
|
+
## Nuevo en v2.4.0
|
|
77
|
+
|
|
78
|
+
Control por capa de `num_ctx` (tamaño de la ventana de contexto) en el sistema de perfiles. Mejora menor y aditiva: los usuarios de v2.3.0 no se verán afectados. Entradas detalladas en [CHANGELOG.md](./CHANGELOG.md) y [docs/release-notes/v2.4.0.md](./docs/release-notes/v2.4.0.md).
|
|
79
|
+
|
|
80
|
+
- **Nuevo mapa `TierConfig.num_ctx`:** opcional `{ instant?, workhorse?, deep?, embed? }` en el perfil. Cuando se establece para una capa, el servidor MCP coloca `options.num_ctx = <value>` en cada solicitud de generación/chat de Ollama dirigida a esa capa (inicial + de respaldo). Cuando no está establecido, la solicitud omite por completo `num_ctx`, por lo que Ollama utiliza su valor predeterminado cargado con el modelo; se conserva exactamente el comportamiento de v2.3.0.
|
|
81
|
+
- **Nuevo campo en el mensaje: `num_ctx_used?: number`:** presente solo cuando el servidor MCP realmente envió `num_ctx`. Ausente cuando la solicitud permitió que Ollama eligiera. No infiera un valor predeterminado: el servidor MCP no consulta a Ollama para obtener el valor efectivo.
|
|
82
|
+
- **Valores predeterminados del perfil:** `dev-rtx5080` / `dev-rtx5080-qwen3` se envían con `instant: 4096`, `workhorse: 8192`, `deep`/`embed` NO ESTABLECIDOS. Dimensionados para mantener `hermes3:8b` residente en los 16 GB de VRAM de la RTX 5080 para herramientas rápidas. `m5-max` deja todas las capas SIN ESTABLECER: no hay problemas de desbordamiento con 128 GB de memoria unificada.
|
|
83
|
+
- **Cierra el diagnóstico de la Fase 1 de v0.8.0:** `hermes3:8b` con el contexto predeterminado de 32K en RTX 5080 se derramó a la CPU y comenzó a provocar tiempos de espera en las llamadas `ollama_extract`. v2.4.0 evita esto en la capa del perfil.
|
|
84
|
+
|
|
85
|
+
### Control por capa de `num_ctx` (nuevo en v2.4.0)
|
|
75
86
|
|
|
76
87
|
Perfil (fragmento de `src/profiles.ts`):
|
|
77
88
|
|
|
@@ -93,7 +104,7 @@ Perfil (fragmento de `src/profiles.ts`):
|
|
|
93
104
|
}
|
|
94
105
|
```
|
|
95
106
|
|
|
96
|
-
|
|
107
|
+
Mensaje en una llamada a la capa "workhorse" (por ejemplo, `ollama_extract`):
|
|
97
108
|
|
|
98
109
|
```jsonc
|
|
99
110
|
{
|
|
@@ -105,23 +116,23 @@ Envoltorio en una llamada del nivel del motor principal (por ejemplo, `ollama_ex
|
|
|
105
116
|
}
|
|
106
117
|
```
|
|
107
118
|
|
|
108
|
-
En `m5-max` (o cualquier perfil que deje
|
|
119
|
+
En `m5-max` (o cualquier perfil que deje una capa sin establecer), `num_ctx_used` está ausente del mensaje y la solicitud al cable de Ollama no incluye el campo `num_ctx`: Ollama utiliza su valor predeterminado cargado con el modelo.
|
|
109
120
|
|
|
110
|
-
Los operadores ajustan seleccionando
|
|
121
|
+
Los operadores ajustan seleccionando o editando el perfil; no hay una entrada `num_ctx` por llamada en los esquemas de las herramientas. Si una llamada futura revela la necesidad, el patrón sigue a la anulación de `model` de v2.3.0.
|
|
111
122
|
|
|
112
|
-
### Histórico:
|
|
123
|
+
### Histórico: entregas de v2.3.0
|
|
113
124
|
|
|
114
|
-
Consulte [CHANGELOG.md](./CHANGELOG.md) y [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md) para obtener la entrada completa de
|
|
125
|
+
Consulte [CHANGELOG.md](./CHANGELOG.md) y [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md) para obtener la entrada completa de v2.3.0 (anulación del modelo por llamada).
|
|
115
126
|
|
|
116
|
-
##
|
|
127
|
+
## Nuevo en v2.3.0
|
|
117
128
|
|
|
118
|
-
Anulación del modelo por llamada en todas las herramientas atómicas basadas en LLM. Mejora menor aditiva: los
|
|
129
|
+
Anulación del modelo por llamada en todas las herramientas atómicas basadas en LLM. Mejora menor y aditiva: los usuarios de v2.2.0 no se verán afectados. Entradas detalladas en [CHANGELOG.md](./CHANGELOG.md) y [docs/release-notes/v2.3.0.md](./docs/release-notes/v2.3.0.md).
|
|
119
130
|
|
|
120
|
-
- **
|
|
121
|
-
- **Nuevo campo de envoltorio `model_requested?: string
|
|
122
|
-
- **Corrección de errores:
|
|
131
|
+
- **Parámetro opcional `model: string` en 8 herramientas de atomización** — `ollama_extract`, `ollama_classify`, `ollama_summarize_fast`, `ollama_summarize_deep`, `ollama_research`, `ollama_corpus_answer`, `ollama_chat`, `ollama_code_citation`. El primer intento en el nivel de la herramienta se ejecuta con el modelo especificado por quien realiza la llamada; si se agota el tiempo, la cascada existente de `TIER_FALLBACK` resuelve el modelo del nivel más económico (NO el que especificó quien realizó la llamada). Las herramientas compuestas/breves/de agrupación NO aceptan deliberadamente `model`; los átomos tienen control por llamada, las herramientas compuestas utilizan los valores predeterminados del nivel.
|
|
132
|
+
- **Nuevo campo de envoltorio `model_requested?: string`** — presente solo cuando se proporcionó el parámetro de anulación. Los programas que tienen en cuenta la calibración comparan `model_requested` con `model` para detectar una sustitución: `if (env.model_requested && env.model !== env.model_requested) { /* sustitución */ }`. Las entradas vacías o que solo contienen espacios generan un error de `ZodError` durante el análisis del esquema, en lugar de realizar una sustitución silenciosa.
|
|
133
|
+
- **Corrección de errores: desviación de `src/version.ts`.** La constante `VERSION` en tiempo de ejecución ahora se lee desde `package.json` cuando se carga el módulo; las versiones v2.1.0 y v2.2.0 mostraban la cadena de identidad obsoleta `"2.0.0"`. El nuevo archivo `tests/version.test.ts` bloquea `VERSION === pkg.version`.
|
|
123
134
|
|
|
124
|
-
### Anulación del modelo por llamada (
|
|
135
|
+
### Anulación del modelo por llamada (nuevo en v2.3.0)
|
|
125
136
|
|
|
126
137
|
```jsonc
|
|
127
138
|
{
|
|
@@ -147,30 +158,30 @@ Envoltorio:
|
|
|
147
158
|
}
|
|
148
159
|
```
|
|
149
160
|
|
|
150
|
-
Si el nivel
|
|
161
|
+
Si el nivel principal o profundo hubiera excedido el tiempo límite y la llamada hubiera pasado al nivel instantáneo, `env.model` sería el modelo resuelto del nivel instantáneo y `env.fallback_from` sería `"workhorse"`; `env.model_requested` seguiría siendo `"hermes3:8b"`, y `env.model !== env.model_requested` es la señal de sustitución. La anulación NO se aplica deliberadamente al nivel más económico; el modelo elegido puede que no se ajuste en absoluto a la función de ese nivel.
|
|
151
162
|
|
|
152
|
-
### Histórico:
|
|
163
|
+
### Histórico: entregas de v2.2.0
|
|
153
164
|
|
|
154
|
-
Consulte [CHANGELOG.md](./CHANGELOG.md) y [docs/release-notes/v2.2.0.md](./docs/release-notes/v2.2.0.md) para obtener la entrada completa de
|
|
165
|
+
Consulte [CHANGELOG.md](./CHANGELOG.md) y [docs/release-notes/v2.2.0.md](./docs/release-notes/v2.2.0.md) para obtener la entrada completa de v2.2.0 (pertinencia limitada al marco + abstención estructurada).
|
|
155
166
|
|
|
156
|
-
##
|
|
167
|
+
## Nuevo en v2.2.0
|
|
157
168
|
|
|
158
|
-
Contrato
|
|
169
|
+
Contrato del rol de trabajador de evidencia local: pertinencia limitada al marco y abstención estructurada. Mejora menor aditiva: los programas de v2.1.0 no se modifican. Entradas detalladas en [CHANGELOG.md](./CHANGELOG.md) y [docs/release-notes/v2.2.0.md](./docs/release-notes/v2.2.0.md).
|
|
159
170
|
|
|
160
|
-
- **Extracción
|
|
161
|
-
- **Abstención estructurada** en `ollama_research
|
|
162
|
-
- **Umbral de pertinencia** en `ollama_corpus_answer
|
|
163
|
-
- **Preservación de la puntuación de recuperación** a través de
|
|
164
|
-
- **Límites del rango de líneas de cita
|
|
165
|
-
- **
|
|
171
|
+
- **Extracción limitada al marco** en `ollama_extract`, `ollama_classify`, `ollama_summarize_fast`, `ollama_summarize_deep` — parámetro opcional `frame: string` + salidas estructuradas `frame_alignment`/`on_topic`/`frame_addressed`. En lugar de parafrasear las fuentes que no están relacionadas con el tema, se marcan.
|
|
172
|
+
- **Abstención estructurada** en `ollama_research` — campos `weak`/`abstained`/`sources_address_question`. Un archivo `citations[]` vacío con un `answer` no vacío ya no se considera un éxito silencioso.
|
|
173
|
+
- **Umbral de pertinencia** en `ollama_corpus_answer` — parámetro opcional `min_top_score`. Por debajo del umbral, la herramienta interrumpe el proceso con `abstained: true` y omite la síntesis. El `score` por cita ahora es visible en cada cita.
|
|
174
|
+
- **Preservación de la puntuación de recuperación** a través de evidencia breve — `corpusHitsToEvidence` conserva `score` (y el parámetro `corpus_min_evidence_score` filtra en el momento del ensamblaje en `incident_brief`/`repo_brief`/`change_brief`).
|
|
175
|
+
- **Límites del rango de líneas de cita** — `guardrails/citations.ts` rechaza los rangos fuera de límites en `ollama_research`, lo que coincide con la postura existente en `ollama_code_citation`.
|
|
176
|
+
- **Se corrigieron los documentos del contrato del operador** — se corrigió `chunk_id`/`chunk_index` en el archivo README, se reescribió "validado en el lado del servidor", se calificó la sección de las leyes de la evidencia y se anotó el eslogan de marketing.
|
|
166
177
|
|
|
167
|
-
### Regresión de
|
|
178
|
+
### Regresión de la semilla: la verificación
|
|
168
179
|
|
|
169
|
-
Se verifica el contrato del fragmento con respecto al fallo literal
|
|
180
|
+
Se verifica el contrato del fragmento con respecto al fallo literal de fresh-pack de research-os: arxiv 2112.10422 (Temporizadores estándar cosmológicos) en el marco de la sección 01 *"¿Qué significa la custodia de la evidencia en los flujos de trabajo de investigación profunda de LLM locales frente a los basados en la nube?"* — 9 de 9 pruebas del contrato de LLM simulado confirman que ahora se contiene la fuente que no está relacionada con el tema (`frame_alignment.on_topic = false` en extract; `off_topic: true` en classify; `frame_addressed: false` en summarize_deep; `abstained: true` en corpus_answer con `min_top_score` establecido).
|
|
170
181
|
|
|
171
|
-
###
|
|
182
|
+
### Histórico: entregas de v2.1.0
|
|
172
183
|
|
|
173
|
-
Consulte [CHANGELOG.md](./CHANGELOG.md) para obtener la entrada completa de
|
|
184
|
+
Consulte [CHANGELOG.md](./CHANGELOG.md) para obtener la entrada completa de v2.1.0 (éxito de la función: 13 nuevas herramientas + 4 mejoras + eliminación de la restricción).
|
|
174
185
|
|
|
175
186
|
---
|
|
176
187
|
|
|
@@ -196,7 +207,7 @@ flowchart LR
|
|
|
196
207
|
MCP --> NDJSON
|
|
197
208
|
```
|
|
198
209
|
|
|
199
|
-
Cada llamada a una herramienta de Claude
|
|
210
|
+
Cada llamada a una herramienta de Claude entra en el servidor MCP a través de stdio JSON-RPC. El servidor valida la llamada con respecto al esquema [zod](https://zod.dev) de la herramienta, ejecuta las protecciones configuradas (validación de citas, eliminación de frases prohibidas, aplicación de rutas protegidas, umbrales de confianza) y luego enruta a un renderizador determinista (nivel de artefactos) o a una llamada HTTP de Ollama (todos los demás niveles). El daemon de Ollama nunca ve las rutas proporcionadas por el usuario; solo el nivel del modelo y la solicitud preparada. Cada llamada agrega un evento estructurado al registro NDJSON en `~/.ollama-intern/log.ndjson`, donde `ollama_log_tail` y su shell pueden leerlo.
|
|
200
211
|
|
|
201
212
|
---
|
|
202
213
|
|
|
@@ -214,7 +225,7 @@ Cada llamada a una herramienta de Claude ingresa al servidor MCP a través de st
|
|
|
214
225
|
}
|
|
215
226
|
```
|
|
216
227
|
|
|
217
|
-
Devuelve un
|
|
228
|
+
Devuelve un envoltorio que apunta a un archivo en el disco:
|
|
218
229
|
|
|
219
230
|
```jsonc
|
|
220
231
|
{
|
|
@@ -236,11 +247,11 @@ Devuelve un sobre que apunta a un archivo en el disco:
|
|
|
236
247
|
}
|
|
237
248
|
```
|
|
238
249
|
|
|
239
|
-
→ `weak: false` significa que se ensamblaron ≥2 elementos de
|
|
250
|
+
→ `weak: false` significa que se ensamblaron ≥2 elementos de evidencia; NO significa que las hipótesis estén verificadas. Consulte [Leyes de la evidencia](#evidence-laws) a continuación.
|
|
240
251
|
|
|
241
|
-
Ese archivo Markdown es el resultado del trabajo del
|
|
252
|
+
Ese archivo Markdown es el resultado del trabajo del becario: encabezados, bloque de evidencia con identificadores citados, `next_checks` investigativos, banner `weak: true` si la evidencia es escasa. Es determinista: el renderizador es código, no una solicitud. (El renderizador es determinista; el *contenido* de las hipótesis y los elementos es generativo; léalos como un borrador, no como algo verificado). Ábralo mañana, compárelo la semana que viene, expórtelo a un manual con `ollama_artifact_export_to_path`.
|
|
242
253
|
|
|
243
|
-
Todos los competidores en esta categoría comienzan con "ahorrar tokens". Nosotros comenzamos con _aquí está el archivo que escribió el
|
|
254
|
+
Todos los competidores en esta categoría comienzan con "ahorrar tokens". Nosotros comenzamos con _aquí está el archivo que escribió el becario_.
|
|
244
255
|
|
|
245
256
|
### Segundo ejemplo: cree un corpus y luego pregúntele
|
|
246
257
|
|
|
@@ -260,13 +271,13 @@ Todos los competidores en esta categoría comienzan con "ahorrar tokens". Nosotr
|
|
|
260
271
|
// → { answer: "...", citations: [{chunk_index, path}...], weak: false }
|
|
261
272
|
```
|
|
262
273
|
|
|
263
|
-
El servidor valida la identidad de la cita y que cada `chunk_index` esté dentro del rango de los resultados
|
|
274
|
+
El servidor valida la identidad de la cita y que cada `chunk_index` esté dentro del rango de los resultados obtenidos. NO prueba que cada afirmación generada esté respaldada semánticamente por el contenido del fragmento citado; esa es la responsabilidad del modelo, y una recuperación deficiente aún puede producir respuestas con formato de cita. Consulta completa en [handbook/corpora](https://mcp-tool-shop-org.github.io/ollama-intern-mcp/handbook/corpora/).
|
|
264
275
|
|
|
265
276
|
---
|
|
266
277
|
|
|
267
|
-
## Extracción delimitada por
|
|
278
|
+
## Extracción delimitada por un marco (nuevo en la v2.2.0)
|
|
268
279
|
|
|
269
|
-
`ollama_extract`, `ollama_classify`, `ollama_summarize_fast` y `ollama_summarize_deep` aceptan una entrada opcional `frame: string`. El
|
|
280
|
+
`ollama_extract`, `ollama_classify`, `ollama_summarize_fast` y `ollama_summarize_deep` aceptan una entrada opcional `frame: string`. El parámetro `frame` especifica la pregunta a la que se le pide al origen que responda; se indica al modelo que se abstenga en lugar de emitir contenido verdadero pero fuera de tema cuando el origen no aborda el marco.
|
|
270
281
|
|
|
271
282
|
```jsonc
|
|
272
283
|
{
|
|
@@ -280,33 +291,33 @@ El servidor valida la identidad de la cita y que cada `chunk_index` esté dentro
|
|
|
280
291
|
// → result includes frame_alignment: { on_topic: boolean, reason: string, unaddressed_aspects: string[] }
|
|
281
292
|
```
|
|
282
293
|
|
|
283
|
-
Si se omite `frame`, el comportamiento no cambia con respecto a la
|
|
294
|
+
Si se omite `frame`, el comportamiento no cambia con respecto a la v2.1.0. Cuando se proporciona, `frame_alignment.on_topic = false` indica que los campos extraídos pueden ser verdaderos para la fuente, pero no relevantes para el marco; trate esto como lo mismo que un resumen con `weak: true`: útil, pero verifique antes de promoverlo a evidencia posterior.
|
|
284
295
|
|
|
285
296
|
---
|
|
286
297
|
|
|
287
|
-
##
|
|
298
|
+
## Acuerdo de abstención (nuevo en la v2.2.0)
|
|
288
299
|
|
|
289
|
-
`ollama_research` devuelve campos de abstención estructurados: `weak: boolean`, `abstained: boolean`, `sources_address_question: boolean | null`.
|
|
300
|
+
`ollama_research` devuelve campos de abstención estructurados: `weak: boolean`, `abstained: boolean`, `sources_address_question: boolean | null`. Una lista de `citations[]` vacía con una `answer` no vacía ya no se considera silencio; `abstained: true` indica que el modelo se negó a sintetizar porque las rutas proporcionadas por el llamante no abordaban la pregunta. Considere la abstención como un éxito, no como un fracaso: es la herramienta negándose a "lavar" una recuperación deficiente para producir resultados autorizados.
|
|
290
301
|
|
|
291
|
-
`ollama_corpus_answer` acepta un umbral
|
|
302
|
+
`ollama_corpus_answer` acepta un umbral de relevancia opcional `min_top_score: number` (de 0,0 a 1,0). Cuando la puntuación de recuperación más alta para una consulta cae por debajo de `min_top_score`, la herramienta interrumpe el proceso con `abstained: true` y omite la síntesis, evitando el modo de falla "5 fragmentos fuera de tema con una puntuación de 0,21 aún generan una respuesta completa" que la regla `weak: true` de la v2.1.0 no detectaba (`weak: true` solo se activaba cuando `hits.length < 2`). Combine esto con el campo `score` por cita recién incluido en cada cita para auditar directamente la calidad de la recuperación desde el sobre.
|
|
292
303
|
|
|
293
304
|
---
|
|
294
305
|
|
|
295
|
-
## ¿Qué hay aquí? — Cuatro niveles, <!-- TOOL_COUNT:start -->
|
|
306
|
+
## ¿Qué hay aquí? — Cuatro niveles, <!-- TOOL_COUNT:start -->44<!-- TOOL_COUNT:end --> herramientas
|
|
296
307
|
|
|
297
|
-
|
|
308
|
+
**Orientado al trabajo** significa que cada herramienta especifica un trabajo que se le asignaría a un becario: clasificar esto, extraer aquello, priorizar estos registros, redactar esta nota de lanzamiento, organizar este incidente. La entrada de la herramienta es la especificación del trabajo; la salida es el resultado final. No hay una función genérica `run_model` / `chat_with_llm` en la parte superior.
|
|
298
309
|
|
|
299
310
|
| Nivel | Cantidad | Qué contiene |
|
|
300
311
|
|---|---|---|
|
|
301
|
-
| **Atoms** |
|
|
302
|
-
| **Briefs** | 3 | Resúmenes estructurados respaldados por
|
|
303
|
-
| **Packs** | 3 | Trabajos compuestos de
|
|
312
|
+
| **Atoms** | 31 | Funciones básicas orientadas al trabajo. **Originales 15:** `classify`, `extract`, `triage_logs`, `summarize_fast` / `deep`, `draft`, `research`, `corpus_search` / `answer` / `index` / `refresh` / `list`, `embed_search`, `embed`, `chat`. **+13 agregadas en la v2.1.0:** `doctor`, `log_tail`, `batch_proof_check` (operaciones); `code_map`, `code_citation`, `multi_file_refactor_propose`, `refactor_plan` (refactorización); `artifact_prune`, `hypothesis_drill` (artefacto/resumen); `corpus_health`, `corpus_amend`, `corpus_amend_history`, `corpus_rerank` (corpus). **+1 átomo de revisión:** `code_review` (hallazgos estructurados de la revisión de solicitudes de extracción, herramienta principal; solo para revisión). **+2 en la v2.9:** `verify_claims` (un panel insignia de nube inter-familiar adjudica las afirmaciones; requiere la nube) y `log_stats` (agrega los recibos NDJSON en métricas económicas: división entre nube/local, tasa de respaldo, p50/p95 por herramienta; no se realiza ninguna llamada al modelo). Los átomos con capacidad por lotes (`classify`, `extract`, `triage_logs`) aceptan `items: [{id, text}]`. |
|
|
313
|
+
| **Briefs** | 3 | Resúmenes estructurados de operadores respaldados por evidencia. `incident_brief`, `repo_brief`, `change_brief`. Cada afirmación cita un ID de evidencia; los datos desconocidos se eliminan en el lado del servidor. La evidencia débil muestra `weak: true` en lugar de una narrativa falsa. |
|
|
314
|
+
| **Packs** | 3 | Trabajos compuestos de canalización fija que escriben Markdown + JSON duraderos en `~/.ollama-intern/artifacts/`. `incident_pack`, `repo_pack`, `change_pack`. Renderizadores deterministas: no se realizan llamadas al modelo en el formato del artefacto. |
|
|
304
315
|
| **Artifacts** | 7 | Superficie de continuidad sobre las salidas del paquete. `artifact_list` / `read` / `diff` / `export_to_path`, más tres fragmentos deterministas: `incident_note`, `onboarding_section`, `release_note`. |
|
|
305
316
|
|
|
306
|
-
Total: **
|
|
317
|
+
Total: **31 átomos + 3 resúmenes + 3 paquetes + 7 herramientas de artefacto = <!-- TOOL_COUNT:start -->44<!-- TOOL_COUNT:end -->**.
|
|
307
318
|
|
|
308
319
|
Líneas congeladas:
|
|
309
|
-
-
|
|
320
|
+
- Átomos: la congelación se levantó en la v2.1.0 (31 hoy; +13 agregados en el lanzamiento de funciones de la v2.1.0, +1 `code_review` más tarde, +2 en la v2.9: `verify_claims`, `log_stats`). Los nuevos átomos aún requieren una justificación basada en auditorías, pruebas, una página del manual y una entrada en el registro de cambios; no se realizarán adiciones casuales.
|
|
310
321
|
- Paquetes congelados en 3. No hay nuevos tipos de paquetes.
|
|
311
322
|
- Nivel de artefactos congelado en 7.
|
|
312
323
|
|
|
@@ -316,11 +327,11 @@ La referencia completa de las herramientas está disponible en el [manual](https
|
|
|
316
327
|
|
|
317
328
|
## Instalación
|
|
318
329
|
|
|
319
|
-
Requiere que [Ollama](https://ollama.com) se esté ejecutando localmente y que los modelos del nivel
|
|
330
|
+
Requiere que [Ollama](https://ollama.com) se esté ejecutando localmente y que los modelos del nivel se hayan descargado (consulte [Descarga de modelos](#model-pulls) a continuación).
|
|
320
331
|
|
|
321
332
|
### Claude Code (recomendado)
|
|
322
333
|
|
|
323
|
-
La mayoría de los usuarios lo instalan
|
|
334
|
+
La mayoría de los usuarios lo instalan agregándolo a la configuración del servidor Claude Code MCP; no se requiere una instalación global. Claude Code ejecuta el servidor bajo demanda mediante `npx`:
|
|
324
335
|
|
|
325
336
|
```json
|
|
326
337
|
{
|
|
@@ -343,7 +354,7 @@ El mismo bloque, escrito en `~/Library/Application Support/Claude/claude_desktop
|
|
|
343
354
|
|
|
344
355
|
### Instalación global (avanzada)
|
|
345
356
|
|
|
346
|
-
Solo es necesario si desea que el
|
|
357
|
+
Solo es necesario si desea que el binario esté en su `PATH` para uso ad hoc fuera de Claude Code:
|
|
347
358
|
|
|
348
359
|
```bash
|
|
349
360
|
npm install -g ollama-intern-mcp
|
|
@@ -351,7 +362,7 @@ npm install -g ollama-intern-mcp
|
|
|
351
362
|
|
|
352
363
|
### Uso con Hermes
|
|
353
364
|
|
|
354
|
-
Este MCP se validó de
|
|
365
|
+
Este MCP se validó de principio a fin con [Hermes Agent](https://github.com/NousResearch/hermes-agent) contra `hermes3:8b` en Ollama (19 de abril de 2026). Hermes es un agente externo que *se comunica* con la superficie primitiva congelada de este MCP; él se encarga de la planificación, nosotros del trabajo.
|
|
355
366
|
|
|
356
367
|
Configuración de referencia ([hermes.config.example.yaml](hermes.config.example.yaml) en este repositorio):
|
|
357
368
|
|
|
@@ -381,7 +392,7 @@ mcp_servers:
|
|
|
381
392
|
# only needed if you're pinning a different local model.
|
|
382
393
|
```
|
|
383
394
|
|
|
384
|
-
**La
|
|
395
|
+
**La estructura del mensaje es importante.** Los mensajes imperativos que invocan herramientas ("Llama a X con los argumentos...") son la prueba de integración; proporcionan a un modelo local de 8B suficiente base para generar `tool_calls` limpios. Los mensajes en forma de lista para múltiples tareas ("haz A, luego B, luego C") son puntos de referencia de capacidad para modelos más grandes; no interpretes un fallo en el formato de lista en un modelo de 8B como "la conexión está rota". Consulta [handbook/with-hermes](https://mcp-tool-shop-org.github.io/ollama-intern-mcp/handbook/with-hermes/) para obtener la guía completa de integración y las limitaciones conocidas del transporte (Ollama `/v1` en streaming + openai-SDK sin streaming).
|
|
385
396
|
|
|
386
397
|
### Descarga de modelos
|
|
387
398
|
|
|
@@ -394,7 +405,7 @@ export OLLAMA_MAX_LOADED_MODELS=2
|
|
|
394
405
|
export OLLAMA_KEEP_ALIVE=-1
|
|
395
406
|
```
|
|
396
407
|
|
|
397
|
-
**Alternativa Qwen 3 (
|
|
408
|
+
**Alternativa Qwen 3 (mismo hardware, para las herramientas de Qwen):**
|
|
398
409
|
|
|
399
410
|
```bash
|
|
400
411
|
ollama pull qwen3:8b
|
|
@@ -403,7 +414,7 @@ ollama pull nomic-embed-text
|
|
|
403
414
|
export INTERN_PROFILE=dev-rtx5080-qwen3
|
|
404
415
|
```
|
|
405
416
|
|
|
406
|
-
**Perfil M5 Max (128 GB
|
|
417
|
+
**Perfil M5 Max (128 GB unificado):**
|
|
407
418
|
|
|
408
419
|
```bash
|
|
409
420
|
ollama pull qwen3:14b
|
|
@@ -412,7 +423,7 @@ ollama pull nomic-embed-text
|
|
|
412
423
|
export INTERN_PROFILE=m5-max
|
|
413
424
|
```
|
|
414
425
|
|
|
415
|
-
Las variables de entorno por nivel (`INTERN_TIER_INSTANT`, `INTERN_TIER_WORKHORSE`, `INTERN_TIER_DEEP`, `INTERN_EMBED_MODEL`) siguen anulando las selecciones del perfil para casos
|
|
426
|
+
Las variables de entorno por nivel (`INTERN_TIER_INSTANT`, `INTERN_TIER_WORKHORSE`, `INTERN_TIER_DEEP`, `INTERN_EMBED_MODEL`) siguen anulando las selecciones del perfil para casos puntuales.
|
|
416
427
|
|
|
417
428
|
---
|
|
418
429
|
|
|
@@ -438,31 +449,34 @@ Cada herramienta devuelve la misma estructura:
|
|
|
438
449
|
}
|
|
439
450
|
```
|
|
440
451
|
|
|
441
|
-
`residency` proviene de `/api/ps` de Ollama. Cuando `evicted: true` o `size_vram < size`, el modelo se
|
|
452
|
+
`residency` proviene de `/api/ps` de Ollama. Cuando `evicted: true` o `size_vram < size`, el modelo se guarda en disco y la inferencia disminuye entre 5 y 10 veces; muestra esto al usuario para que sepa que debe reiniciar Ollama o reducir la cantidad de modelos cargados.
|
|
442
453
|
|
|
443
|
-
En modo [Ollama Cloud](#ollama-cloud-optional), el sobre también contiene `backend` (`"cloud"` | `"local"`) y, en caso de
|
|
454
|
+
En el modo [Ollama Cloud](#ollama-cloud-optional), el sobre también contiene `backend` (`"cloud"` | `"local"`) y, en caso de cambio a un entorno local desde la nube, `degraded: true` + `degrade_reason`. Estos campos **no están presentes** en la ruta predeterminada solo local, por lo que los consumidores existentes no se ven afectados. `residency` es `null` para las llamadas servidas desde la nube (la nube sin estado no tiene residencia de VRAM local).
|
|
444
455
|
|
|
445
|
-
Cada llamada se registra como una línea NDJSON en `~/.ollama-intern/log.ndjson`.
|
|
456
|
+
Cada llamada se registra como una línea NDJSON en `~/.ollama-intern/log.ndjson`. Filtra por `hardware_profile` para evitar que los números de desarrollo aparezcan en puntos de referencia publicables.
|
|
446
457
|
|
|
447
458
|
---
|
|
448
459
|
|
|
449
460
|
## Perfiles de hardware
|
|
450
461
|
|
|
451
|
-
| Perfil | Instantáneo | De trabajo intensivo | Profundo |
|
|
462
|
+
| Perfil | Instantáneo | De trabajo intensivo | Profundo | Incrustación |
|
|
452
463
|
|---|---|---|---|---|
|
|
453
|
-
| **`dev-rtx5080
|
|
464
|
+
| **`dev-rtx5080` (predeterminado)** | hermes3 8B | hermes3 8B | hermes3 8B | nomic-embed-text |
|
|
454
465
|
| `dev-rtx5080-qwen3` | qwen3 8B | qwen3 8B | qwen3 14B | nomic-embed-text |
|
|
455
466
|
| `m5-max` | qwen3 14B | qwen3 14B | qwen3 32B | nomic-embed-text |
|
|
456
467
|
|
|
457
|
-
**El perfil predeterminado**
|
|
468
|
+
**El perfil `dev` predeterminado** agrupa los tres niveles de trabajo en `hermes3:8b`; esta es la ruta de integración validada para Hermes Agent. El uso del mismo modelo de arriba a abajo significa que solo hay una cosa que descargar, un costo de residencia y un conjunto de comportamientos que comprender. Los usuarios que prefieren Qwen 3 (con su sistema `THINK_BY_SHAPE`) pueden optar por `dev-rtx5080-qwen3`. `m5-max` es la escala de Qwen 3 diseñada para memoria unificada.
|
|
458
469
|
|
|
459
470
|
---
|
|
460
471
|
|
|
461
472
|
## Ollama Cloud (opcional)
|
|
462
473
|
|
|
463
|
-
Los modelos locales de 8B son el cuello de botella de hardware que la mayoría de las personas encuentran. [Ollama Cloud](https://ollama.com/cloud)
|
|
474
|
+
Los modelos locales de 8B son el cuello de botella de hardware que la mayoría de las personas encuentran. [Ollama Cloud](https://ollama.com/cloud) sirve modelos de clase 600B detrás de la **misma** superficie `/api/*`, por lo que puedes dirigir las herramientas más pesadas a un modelo mucho más potente y liberar VRAM local, al tiempo que mantienes el entorno local como una opción siempre activa.
|
|
475
|
+
|
|
476
|
+
**Esto es opcional y está desactivado de forma predeterminada.** Sin establecer ninguna clave, el paquete permanece en modo local primero con **cero transferencia de datos**: cualquier persona que no active esta función no se verá afectada. Hay dos formas de activarlo:
|
|
464
477
|
|
|
465
|
-
**
|
|
478
|
+
- **Principalmente en la nube** (abajo): establece tanto `OLLAMA_CLOUD_PRIMARY=1` como `OLLAMA_API_KEY`; los niveles generativos se dirigen a la nube con una opción de cambio a un entorno local.
|
|
479
|
+
- **En espera en la nube** (v2.9): establece solo `OLLAMA_API_KEY`; todo permanece local (sigue sin haber transferencia de datos, ni siquiera una sonda de inicio) hasta que una sola llamada solicite explícitamente escalar con `backend: "cloud"`. Consulta [Cambio a la nube en espera y escalado por llamada](#cloud-standby--per-call-escalation) a continuación.
|
|
466
480
|
|
|
467
481
|
```json
|
|
468
482
|
{
|
|
@@ -480,63 +494,76 @@ Los modelos locales de 8B son el cuello de botella de hardware que la mayoría d
|
|
|
480
494
|
}
|
|
481
495
|
```
|
|
482
496
|
|
|
483
|
-
> **La clave es una variable de entorno en tiempo de ejecución, no un secreto de CI.** Un secreto de GitHub Actions solo es visible dentro de las ejecuciones de CI; nunca llega al servidor en funcionamiento.
|
|
497
|
+
> **La clave es una variable de entorno en tiempo de ejecución, no un secreto de CI.** Un secreto de GitHub Actions solo es visible dentro de las ejecuciones de CI; nunca llega al servidor en funcionamiento. Crea una clave en [ollama.com/settings/keys](https://ollama.com/settings/keys) y colócala en el bloque `env` del cliente MCP o en tu entorno de shell.
|
|
484
498
|
|
|
485
|
-
**Cómo funciona el enrutamiento.** Cuando la nube está activada, los niveles generativos (instantáneo / de trabajo intensivo / profundo) se dirigen al modelo de la nube; **las incrustaciones siempre permanecen locales** (Ollama Cloud no
|
|
499
|
+
**Cómo funciona el enrutamiento.** Cuando la nube está activada, los niveles generativos (instantáneo / de trabajo intensivo / profundo) se dirigen al modelo de la nube; **las incrustaciones siempre permanecen locales** (Ollama Cloud no sirve modelos de incrustación, por lo que las herramientas de corpus/incrustación no se ven afectadas). Un interruptor automático intenta primero conectarse a la nube y vuelve a tu perfil local en caso de tiempo de espera / errores 5xx / 429 / problemas de red. Una clave incorrecta (401/403) activa un interruptor *persistente* que muestra una advertencia clara en lugar de degradar silenciosamente el rendimiento. El perfil local (`INTERN_PROFILE`) es la escala de respaldo, así que mantén sus modelos descargados.
|
|
486
500
|
|
|
487
|
-
**Nunca se reducirá el rendimiento de forma silenciosa.** Cada
|
|
501
|
+
**Nunca se te reducirá el rendimiento de forma silenciosa.** Cada sobre informa qué backend atendió la llamada:
|
|
488
502
|
|
|
489
503
|
```ts
|
|
490
504
|
{ ...envelope, backend: "cloud" | "local", degraded?: true, degrade_reason?: "cloud_timeout" | "cloud_5xx" | "cloud_rate_limited" | "cloud_unreachable" | "cloud_auth_failed" | "circuit_open" }
|
|
491
505
|
```
|
|
492
506
|
|
|
493
|
-
Una línea `backend_fallback` aparece en `~/.ollama-intern/log.ndjson` cada
|
|
507
|
+
Una línea `backend_fallback` aparece en `~/.ollama-intern/log.ndjson` en cada cambio a un entorno local desde la nube (`ollama_log_tail --filter_kind backend_fallback`), y `ollama-intern-mcp doctor` muestra un bloque **Nube (principal | en espera)** con el modo, la capacidad de conexión y el estado de autenticación.
|
|
508
|
+
|
|
509
|
+
### Cambio a la nube en espera y escalado por llamada
|
|
510
|
+
|
|
511
|
+
Establecer `OLLAMA_API_KEY` **sin** `OLLAMA_CLOUD_PRIMARY` activa el modo **en espera**: el enrutamiento permanece principalmente local y nada sale de la máquina, hasta que una llamada contenga `backend: "cloud"` (expuesto en `ollama_chat`, utilizado internamente por `ollama_verify_claims`). Esa única llamada se escala al modelo de la nube, con el mismo interruptor automático + mecanismo de cambio a un entorno local y la misma procedencia del sobre; todas las demás llamadas permanecen locales. La **primera** llamada escalada imprime una advertencia clara en stderr que indica el host y escribe una línea `cloud_egress` en el registro NDJSON; la transferencia de datos se revela en el momento en que ocurre, no solo aquí en la documentación.
|
|
512
|
+
|
|
513
|
+
Las reglas se aplican de forma automática:
|
|
514
|
+
|
|
515
|
+
- Si no se proporciona una clave → `backend: "cloud"` falla con `CLOUD_NOT_CONFIGURED`. Nunca se utiliza silenciosamente el modelo local, aunque afirme haber realizado una escalada.
|
|
516
|
+
- En modo de espera + sin directiva → local, sin transferencia de datos (el inicio tampoco comprueba el host en la nube).
|
|
517
|
+
- Si se configura como principal en la nube, `backend: "local"` asigna una llamada al entorno local; es la opción inversa para evitar el uso de la nube.
|
|
518
|
+
- Ahora, cada llamada puede anular el modelo y utilizar la configuración de la nube (anteriormente, esta configuración era reemplazada por el mapa de niveles a modelos en la nube), lo que permite a los orquestadores basados en recibos especificar el modelo exacto de la nube para cada llamada.
|
|
519
|
+
|
|
520
|
+
El producto estrella es **`ollama_verify_claims`**: evalúa las afirmaciones y los resultados utilizando un panel de 3 modelos diferentes alojados en la nube (el valor predeterminado es `deepseek-v4-pro:cloud` / `kimi-k2.7-code:cloud` / `glm-5.2:cloud`). La agregación nunca se decide por una sola opinión disidente, se comprueban los modelos utilizados en cada evaluación y se utiliza un indicador honesto de "débil" cuando el panel tiene pocos miembros. Una confirmación del panel sobre las afirmaciones generadas por modelos avanzados es *evidencia de apoyo, no prueba*; el panel detecta de forma fiable errores graves y es menos eficaz para detectar errores sutiles. Consulte la [página del manual](https://mcp-tool-shop-org.github.io/ollama-intern-mcp/handbook/tools/verify-claims/).
|
|
494
521
|
|
|
495
|
-
**Latencia frente a calidad.** Los modelos grandes
|
|
522
|
+
**Latencia frente a calidad.** Los modelos grandes alojados en la nube se ejecutan mucho más lentamente por token que un modelo local de 8B (segundos, no milisegundos); es una mejora de la calidad, no de la velocidad. Los niveles de la nube utilizan un intervalo de tiempo de espera generoso (30 segundos inmediatos / 120 segundos para el uso principal / 300 segundos en profundidad por defecto).
|
|
496
523
|
|
|
497
524
|
### Variables de entorno de la nube
|
|
498
525
|
|
|
499
|
-
| Variable |
|
|
526
|
+
| Variable | Valor predeterminado | Propósito |
|
|
500
527
|
|---|---|---|
|
|
501
|
-
| `OLLAMA_CLOUD_PRIMARY` | _(
|
|
502
|
-
| `OLLAMA_API_KEY` | _(
|
|
528
|
+
| `OLLAMA_CLOUD_PRIMARY` | _(sin definir)_ | **El interruptor "principal en la nube".** `1`/`true`/`yes`/`on` dirige los niveles generativos a la nube. Si no se define con una clave, se activa el modo de **espera** (principal local, escalada por llamada). Si no se define sin una clave, solo se utiliza el entorno local, sin transferencia de datos. |
|
|
529
|
+
| `OLLAMA_API_KEY` | _(sin definir)_ | Clave de acceso para Ollama Cloud. Establecerla activa el modo de **espera**; es **obligatoria** cuando `OLLAMA_CLOUD_PRIMARY` está habilitado (falla rápidamente al inicio si falta). |
|
|
503
530
|
| `OLLAMA_CLOUD_HOST` | `https://ollama.com` | Host base de la nube. |
|
|
504
|
-
| `INTERN_CLOUD_MODEL` | `
|
|
505
|
-
| `INTERN_CLOUD_DEEP_MODEL` | _(= `INTERN_CLOUD_MODEL`)_ |
|
|
531
|
+
| `INTERN_CLOUD_MODEL` | `qwen3-coder-next:cloud` | Modelo de la nube para los niveles inmediato, principal y profundo. Mantenga el valor predeterminado como **no reflexivo**; un modelo reflexivo aquí agotaría los presupuestos de salida corta en CoT (coloque los modelos de razonamiento más complejos en la opción de anulación profunda que se muestra a continuación). |
|
|
532
|
+
| `INTERN_CLOUD_DEEP_MODEL` | _(= `INTERN_CLOUD_MODEL`)_ | Anulación opcional solo para el nivel profundo, por ejemplo, `deepseek-v3.1:671b`. |
|
|
506
533
|
| `INTERN_CLOUD_TIMEOUT_{INSTANT,WORKHORSE,DEEP}_MS` | `30000`/`120000`/`300000` | Tiempos de espera para los intentos en la nube por nivel. |
|
|
507
|
-
| `INTERN_CLOUD_NUM_CTX` | `32768` | Límite de ventana de contexto para las llamadas a la nube (la nube cobra por el tiempo de GPU; el límite controla el
|
|
534
|
+
| `INTERN_CLOUD_NUM_CTX` | `32768` | Límite de ventana de contexto para las llamadas a la nube (la nube cobra por el tiempo de GPU; el límite controla el coste). |
|
|
508
535
|
|
|
509
|
-
> **
|
|
536
|
+
> **Cambios en la disponibilidad del modelo.** Ollama rota o retira los identificadores de la nube en el lado del servidor. A partir del 7 de julio de 2026, `qwen3-coder-next:cloud` (valor predeterminado no reflexivo) y los modelos estrella reflexivos `deepseek-v4-pro:cloud` / `kimi-k2.7-code:cloud` / `glm-5.2:cloud` están disponibles; consulte [ollama.com/search?c=cloud](https://ollama.com/search?c=cloud) antes de fijar un identificador. Un identificador retirado se degrada visiblemente (`cloud_model_missing`), pero nunca lo hace de forma silenciosa.
|
|
510
537
|
|
|
511
|
-
**Nota sobre la privacidad.** El enrutamiento a Ollama Cloud envía indicaciones a un tercero. La [política de privacidad](https://ollama.com/privacy) de Ollama establece que las indicaciones de la nube se procesan de forma transitoria, no se conservan más allá de la solicitud y no se utilizan para el entrenamiento,
|
|
538
|
+
**Nota sobre la privacidad.** El enrutamiento a Ollama Cloud envía las indicaciones a un tercero. La [política de privacidad](https://ollama.com/privacy) de Ollama establece que las indicaciones de la nube se procesan de forma transitoria, no se conservan más allá de la solicitud y no se utilizan para el entrenamiento; sin embargo, sigue siendo una transferencia de datos, por lo que es opcional y se informa al usuario. El modo solo local (el valor predeterminado) no envía nada fuera del sistema.
|
|
512
539
|
|
|
513
540
|
---
|
|
514
541
|
|
|
515
|
-
## Leyes sobre pruebas
|
|
542
|
+
## Leyes sobre las pruebas
|
|
516
543
|
|
|
517
|
-
Estas se aplican en el servidor, no en la indicación:
|
|
544
|
+
Estas reglas se aplican en el servidor, no en la indicación:
|
|
518
545
|
|
|
519
|
-
- **Se requieren citas.** Cada afirmación breve cita un
|
|
520
|
-
- **Los elementos desconocidos se eliminan
|
|
521
|
-
- **Validación por ID, no por contenido.** El servidor
|
|
522
|
-
- **Débil es débil.** Las
|
|
523
|
-
- **
|
|
524
|
-
- **Renderizadores deterministas.** La forma del
|
|
525
|
-
- **Diferencias solo dentro del mismo paquete.** Se rechaza de forma contundente la comparación entre paquetes
|
|
546
|
+
- **Se requieren citas.** Cada afirmación breve cita un identificador de prueba.
|
|
547
|
+
- **Los elementos desconocidos se eliminan en el lado del servidor.** Los modelos que citan identificadores que no están en el conjunto de pruebas tienen esos identificadores eliminados con una advertencia antes de devolver el resultado.
|
|
548
|
+
- **Validación por ID, no por contenido.** El servidor comprueba que cada `evidence_ref` citado apunta a un identificador de prueba real en el conjunto ensamblado. No verifica que el texto de la afirmación se pueda derivar de la prueba citada; ese es el trabajo del modelo, y las pruebas débiles a veces contienen afirmaciones no respaldadas con referencias válidas. Utilice `weak: true` + notas de cobertura + el campo `excerpt` incluido para realizar una comprobación aleatoria.
|
|
549
|
+
- **Débil es débil.** Las pruebas débiles marcan `weak: true` con notas de cobertura. Nunca se suavizan en una narrativa falsa.
|
|
550
|
+
- **Investigativa, no prescriptiva.** Solo `next_checks` / `read_next` / `likely_breakpoints`. Las indicaciones prohíben "aplicar esta corrección".
|
|
551
|
+
- **Renderizadores deterministas.** La forma del formato Markdown es código, no una indicación. `draft` se reserva para la prosa donde el estilo del modelo importa.
|
|
552
|
+
- **Diferencias solo dentro del mismo paquete.** Se rechaza de forma contundente la comparación entre paquetes con `artifact_diff`; las cargas útiles permanecen distintas.
|
|
526
553
|
|
|
527
554
|
---
|
|
528
555
|
|
|
529
556
|
## Artefactos y continuidad
|
|
530
557
|
|
|
531
|
-
Los paquetes se escriben en `~/.ollama-intern/artifacts/{incident,repo,change}/<slug>.(md|json)`. El nivel de artefactos le
|
|
558
|
+
Los paquetes se escriben en `~/.ollama-intern/artifacts/{incident,repo,change}/<slug>.(md|json)`. El nivel de artefactos le proporciona una superficie de continuidad sin convertir esto en una herramienta de gestión de archivos:
|
|
532
559
|
|
|
533
|
-
- `artifact_list`: índice
|
|
534
|
-
- `artifact_read`: lectura
|
|
535
|
-
- `artifact_diff`: comparación estructurada dentro del mismo paquete; se muestra
|
|
536
|
-
- `artifact_export_to_path`: escribe un artefacto existente (con encabezado de procedencia) en
|
|
560
|
+
- `artifact_list`: índice solo con metadatos, filtrable por paquete, fecha y patrón de nombre.
|
|
561
|
+
- `artifact_read`: lectura tipada por `{pack, slug}` o `{json_path}`.
|
|
562
|
+
- `artifact_diff`: comparación estructurada dentro del mismo paquete; se muestra la inversión débil.
|
|
563
|
+
- `artifact_export_to_path`: escribe un artefacto existente (con encabezado de procedencia) en una ruta `allowed_roots` declarada por el llamador. Rechaza los archivos existentes a menos que `overwrite: true`.
|
|
537
564
|
- `artifact_incident_note_snippet`: fragmento de nota del operador.
|
|
538
565
|
- `artifact_onboarding_section_snippet`: fragmento del manual.
|
|
539
|
-
- `artifact_release_note_snippet`: fragmento de la nota de lanzamiento
|
|
566
|
+
- `artifact_release_note_snippet`: fragmento BORRADOR de la nota de lanzamiento.
|
|
540
567
|
|
|
541
568
|
No se realizan llamadas al modelo en este nivel. Todo se renderiza a partir del contenido almacenado.
|
|
542
569
|
|
|
@@ -544,13 +571,13 @@ No se realizan llamadas al modelo en este nivel. Todo se renderiza a partir del
|
|
|
544
571
|
|
|
545
572
|
## Modelo de amenazas y telemetría
|
|
546
573
|
|
|
547
|
-
**Datos
|
|
574
|
+
**Datos afectados:** rutas de archivo que el llamador proporciona explícitamente (`ollama_research`, herramientas de corpus), texto en línea y artefactos que el llamador solicita que se escriban en `~/.ollama-intern/artifacts/` o en una ruta `allowed_roots` declarada por el llamador.
|
|
548
575
|
|
|
549
|
-
**Datos NO
|
|
576
|
+
**Datos que NO se modifican:** cualquier cosa fuera de `source_paths` / `allowed_roots`. Se rechaza `..` antes de la normalización. `artifact_export_to_path` rechaza los archivos existentes a menos que `overwrite: true`. Los borradores dirigidos a rutas protegidas (`memory/`, `.claude/`, `docs/canon/`, etc.) requieren un `confirm_write: true` explícito, aplicado en el servidor.
|
|
550
577
|
|
|
551
|
-
**Comunicación de red:** **desactivada por defecto.** De
|
|
578
|
+
**Comunicación de red:** **desactivada por defecto.** De fábrica, el único tráfico saliente es hacia el punto final HTTP local de Ollama; no hay llamadas a la nube, ni señales de actualización, ni informes de fallos. **Excepción opcional:** si habilita [Ollama Cloud](#ollama-cloud-optional) (`OLLAMA_CLOUD_PRIMARY=1` + `OLLAMA_API_KEY`), las indicaciones para los niveles generativos se envían a `ollama.com` a través de HTTPS con una clave Bearer. Esto es explícito, está declarado y está desactivado a menos que configure ambas variables; los embeddings nunca abandonan el sistema. Consulte [SECURITY.md](SECURITY.md) §11.
|
|
552
579
|
|
|
553
|
-
**Telemetría:** **ninguna.** Cada llamada se registra como una línea NDJSON en `~/.ollama-intern/log.ndjson` en su máquina. El servidor en sí no envía información a ningún
|
|
580
|
+
**Telemetría:** **ninguna.** Cada llamada se registra como una línea NDJSON en `~/.ollama-intern/log.ndjson` en su máquina. El servidor en sí no envía información a ningún lugar.
|
|
554
581
|
|
|
555
582
|
**Errores:** formato estructurado `{ code, message, hint, retryable }`. Los rastreos de pila nunca se exponen a través de los resultados de las herramientas.
|
|
556
583
|
|
|
@@ -560,24 +587,24 @@ Política completa: [SECURITY.md](SECURITY.md).
|
|
|
560
587
|
|
|
561
588
|
## Estándares
|
|
562
589
|
|
|
563
|
-
Construido según el estándar [Shipcheck](https://github.com/mcp-tool-shop-org/shipcheck). Las
|
|
590
|
+
Construido según el estándar [Shipcheck](https://github.com/mcp-tool-shop-org/shipcheck). Las pruebas A–D se superan; consulte [SHIP_GATE.md](SHIP_GATE.md) y [SCORECARD.md](SCORECARD.md).
|
|
564
591
|
|
|
565
|
-
- **A. Seguridad:** SECURITY.md, modelo de amenazas, sin telemetría, seguridad de la ruta, `confirm_write` en rutas protegidas
|
|
566
|
-
- **B. Errores:** formato estructurado en todos los resultados de las herramientas; no hay rastreos
|
|
567
|
-
- **C. Documentación:** README actualizado, CHANGELOG, LICENSE; los esquemas de las herramientas se documentan
|
|
568
|
-
- **D. Buenas prácticas:** `npm run verify` (conjunto completo de pruebas vitest), CI con análisis de dependencias, Dependabot, archivo lockfile, `engines.node
|
|
592
|
+
- **A. Seguridad:** SECURITY.md, modelo de amenazas, sin telemetría, seguridad de la ruta, `confirm_write` en rutas protegidas
|
|
593
|
+
- **B. Errores:** formato estructurado en todos los resultados de las herramientas; no hay rastreos brutos
|
|
594
|
+
- **C. Documentación:** README actualizado, CHANGELOG, LICENSE; los esquemas de las herramientas se auto documentan
|
|
595
|
+
- **D. Buenas prácticas:** `npm run verify` (conjunto completo de pruebas vitest), CI con análisis de dependencias, Dependabot, archivo lockfile, `engines.node`
|
|
569
596
|
|
|
570
597
|
---
|
|
571
598
|
|
|
572
599
|
## Hoja de ruta (refuerzo, no ampliación del alcance)
|
|
573
600
|
|
|
574
|
-
- **Fase 1: Eje de delegación:** ✓
|
|
575
|
-
- **Fase 2: Eje de la verdad:** ✓
|
|
576
|
-
- **Fase 3: Eje de paquetes y artefactos:** ✓
|
|
577
|
-
- **Fase 4: Eje de adopción:** ✓ v2.0.1:
|
|
578
|
-
- **Fase 5: Pruebas comparativas M5 Max:**
|
|
601
|
+
- **Fase 1: Eje de delegación:** ✓ lanzado: superficie atómica, envoltorio uniforme, enrutamiento por niveles, medidas de seguridad
|
|
602
|
+
- **Fase 2: Eje de la verdad:** ✓ lanzado: fragmentación del esquema v2, BM25 + RRF, corpus dinámicos, resúmenes basados en evidencia, paquete de evaluación de recuperación
|
|
603
|
+
- **Fase 3: Eje de paquetes y artefactos:** ✓ lanzado: paquetes de canalización fija con artefactos duraderos + nivel de continuidad
|
|
604
|
+
- **Fase 4: Eje de adopción:** ✓ v2.0.1: prueba de salud de tres etapas, corpus reforzado (TOCTOU, límite de archivo de 50 MB, rechazo de enlaces simbólicos, escrituras atómicas, captura de fallos por archivo), recorrido del camino de la herramienta, capacidad de observación (eventos de espera de semáforo, contexto de error de tiempo de espera, registro de anulación de entorno de perfil, señal de precalentamiento de inicio en frío), seguridad de las pruebas (instantánea del entorno de carga de módulos en 10 archivos, `tools/call` E2E). Se agregó un manual de solución de problemas y los requisitos mínimos de hardware para los operadores.
|
|
605
|
+
- **Fase 5: Pruebas comparativas M5 Max:** números publicables una vez que se disponga del hardware (~24 de abril de 2026)
|
|
579
606
|
|
|
580
|
-
|
|
607
|
+
Fase por capa de refuerzo. Las capas de paquetes y artefactos permanecen congeladas en 3 y 7. La congelación atómica se levantó en v2.1.0; los nuevos átomos requieren una justificación basada en auditoría, pruebas, una página del manual y una entrada en CHANGELOG.
|
|
581
608
|
|
|
582
609
|
---
|
|
583
610
|
|