Prism Coder
Memoria de sesión persistente para agentes de codificación de IA: recuperación local-first, detección de deriva e inferencia en el dispositivo.
Documentación
Prism Coder
Dale a tu agente de IA una memoria que perdure — y ve los tokens en la nube que nunca tuvo que gastar. Sesiones persistentes, grafos de conocimiento, enrutamiento de herramientas sin conexión y un medidor de ahorro auditable. Totalmente local y gratuito.
Prism Coder es un servidor MCP que le da a Claude, Cursor y otras herramientas de IA una memoria a largo plazo que sobrevive entre sesiones. Incluye la familia de modelos de peso abierto prism-coder (2B–27B) para un enrutamiento de herramientas rápido y sin conexión — sin necesidad de nube. Y lleva la cuenta: cada llamada servida localmente se mide, de modo que prism savings muestra el volumen de tokens que nunca llegó a tu modelo en la nube — medido honestamente, en tokens.
No se necesita cuenta. Sin claves API. Se ejecuta en tu máquina.
Una suscripción de pago añade sincronización en la nube, niveles de modelo superiores y funciones de equipo a través del portal Synalux.
Lo que Prism te ofrece
- Memoria de sesión que sobrevive a los reinicios — retoma proyectos con notas de traspaso, trabajo reciente, TODOs abiertos y contexto rápido, estándar o profundo configurable.
- Inferencia local primero — el trabajo acotado se enruta primero a través de modelos locales de Ollama, con selección automática de 2B/4B/9B/27B según los modelos instalados, la RAM disponible, el ajuste del contexto y los derechos de suscripción.
- Un medidor de ahorro que puedes auditar —
prism savings(o la herramientalocal_savingsdesde cualquier host) informa el volumen de tokens que el servicio local mantuvo fuera de tu modelo en la nube: titular, cuota local, desglose por modelo. Informa tokens, nunca una cifra inventada en dólares, e imprime sus supuestos y los subconteos conocidos en línea — un número que puedes comprobar, no marketing. - Aplicación de salida de ruta — el modo de ruta devuelve solo llamadas bien formadas a
herramientas que el host realmente anunció. Los planes Estándar y superiores pueden añadir
corrección determinista autenticada;
route_guard: "local"desactiva solo esa corrección.cloud_fallback: falseprohíbe la alternativa de inferencia en la nube yverify: false(sinevidence) desactiva el verificador de fundamentación. Con los tres desactivados, ninguna solicitud lleva tu prompt, borrador o evidencia; la comprobación de derechos por llamada y la telemetría aún contactan con el portal y no llevan ninguno. - Una configuración para cada agente —
prism connectconfigura Claude Code, Claude Desktop, Cursor, Gemini CLI y Codex mientras preserva los ajustes no relacionados. - Habilidades conscientes de la suscripción — las habilidades con derecho se sincronizan antes de que el host se lance, con actualizaciones seguras, degradaciones, preservación de conflictos y recuperación sin conexión de la última versión buena.
- Arranque sin hooks — los metadatos MCP y las instrucciones nativas solicitan el
contexto de arranque de Prism sin requerir hooks de ciclo de vida ni un lanzador propiedad de Prism.
Cuando un host ofrece hooks (Claude Code, Codex),
prism connectañade dos pequeños adicionales: enrutamiento de prompt a mitad de sesión y una reinyección posterior a la compactación del resumen de piso protegido. - Escalada segura y observabilidad — los resultados de inferencia son explícitos, el texto reservado permanece con cierre ante fallos (las imágenes clínicas se procesan localmente, nunca se envían a la nube) y el uso local/en la nube se registra para revisión.
Comenzar
npm install -g prism-mcp-server
prism connect
prism dashboard
Usa prism connect --dry-run para previsualizar cambios, prism connect --all para
configurar cada host detectado, o prism connect --refresh para reconciliar
las entradas gestionadas por Prism después de una actualización. Reinicia el host después de conectarte.
prism dashboard abre el Mind Palace local actual sin un inicio de sesión de Synalux.
Prism funciona localmente sin cuenta, clave API o suscripción en la nube. Añade una
suscripción de Synalux cuando quieras memoria en la nube, habilidades de nivel de pago o funciones
de equipo.
Para comprobar tu plan, abre ⚙ Cuenta y Ajustes → Cuenta en el panel. Los usuarios gratuitos ven Iniciar prueba de 14 días; los usuarios de pago ven Gestionar suscripción. Durante una prueba, el mismo panel muestra el nivel de pago y la fecha de finalización exacta. No se requiere tarjeta para comenzar. Añade los datos de pago antes de la fecha de finalización para continuar; si no lo haces, la suscripción se cancela y Prism Free local permanece disponible. También puedes comparar planes directamente en synalux.ai/pricing#prism-plans.
Después de algunas sesiones, pregunta cuánto ha valido:
prism savings --period month
💾 Local serving — LAST 30 DAYS
~510K tokens kept off your cloud model
53 call(s) served locally of 58 routed (91%)
Tus números diferirán — ese es el punto: informa lo que tu máquina
realmente sirvió, no una proyección. La anatomía completa del informe y las reglas de honestidad
detrás de él están en la
sección local_savings.
Instalar como plugin
Prism también se distribuye como plugin, que registra el servidor MCP y la habilidad de arranque por ti.
Ambos hosts se instalan directamente desde este repositorio. No hay nada que alojar y
ningún servidor que ejecutar: el catálogo es el archivo .claude-plugin/marketplace.json
confirmado aquí, y tu cliente lo clona desde GitHub.
Claude Code:
claude plugin marketplace add dcostenco/prism-coder
claude plugin install prism-coder@prism
Codex:
codex plugin marketplace add dcostenco/prism-coder
codex plugin add prism-coder@prism
El plugin registra prism-mcp a través de npx -y prism-mcp-server. Si ya
configuraste Prism a mano — prism connect escribe una entrada mcp_servers.prism-mcp —
tienes ese servidor dos veces bajo una clave. Instala el plugin o
ejecuta prism connect, no ambos.
Qué cambia prism connect sobre los subagentes del host
connect dirige el trabajo acotado a prism_infer en tu máquina en lugar de a
agentes generados por el host. Lo que escribe difiere según el host, y no desactiva los subagentes
en todas partes — Claude Code los mantiene y se apunta a un modelo
económico en su lugar. Los trabajadores locales de Prism permanecen disponibles a través de MCP en todos los casos.
| Host | Ajuste escrito | Efecto |
|---|---|---|
| Claude Code | env.CLAUDE_CODE_SUBAGENT_MODEL = "sonnet" en ~/.claude/settings.json | Los subagentes permanecen habilitados, fijados a un modelo económico. La expansión se desaconseja mediante texto de política, no mediante configuración |
| Gemini CLI | experimental.enableAgents = false en ~/.gemini/settings.json | Subagentes desactivados. Gemini expone un booleano, así que eso es todo lo que hay que establecer |
| Codex | features.multi_agent = false en $CODEX_HOME/config.toml (por defecto ~/.codex), más una alternativa acotada: 2 hilos, profundidad 1, modelo de subagente barato, límite de 900s | Subagentes desactivados, con un perfil acotado debajo para que una re-habilitación deliberada aterrice en algún lugar sensato |
Dos cosas que vale la pena saber:
experimentales el espacio de nombres de Gemini, no el nuestro. Prism no está habilitando nada experimental — escribefalseen una bandera que Gemini ya define en esa ruta. Escribir en cualquier otro lugar no tendría efecto.- Ese espacio de nombres es por definición temporal. Si Gemini promueve
enableAgentsfuera deexperimental, Prism sigue escribiendo la ruta antigua, Gemini lee la nueva y los subagentes del host se reactivan silenciosamente. Nada da error y el archivo de ajustes sigue pareciendo correcto. Si ves subagentes del host ejecutándose mientrasenableAgentsleefalse, comprueba si la clave se ha movido antes de asumir queconnectfalló al escribirla.
Ambas escrituras son idempotentes en el sentido de que un host ya configurado de esta manera
se deja intacto — pero se re-aplican en cada ejecución de prism connect,
no solo en --refresh. Si deliberadamente re-habilitas los subagentes del host, la siguiente
connect los desactivará de nuevo. Mantenlos activos no volviendo a ejecutar connect,
o re-habilitándolos después de cada ejecución.
Historial de versiones (opcional)
Novedades en v20.21.17
- Corregido: la pantalla en el dispositivo rechazaba algunas solicitudes de codificación ordinarias. Con una cuenta de Synalux (gratuita incluida), ahora lee cada solicitud a través de una política que Synalux sirve, fijada por su SHA-256. Sin cuenta, o con imágenes adjuntas, la pantalla no cambia.
- Modo de ruta
prism_infer: estableceallow_parallel_callspara mantener una respuesta que llama a varias de las herramientas que ofreciste enallowed_tools.
Novedades en v20.21.16
Conversaciones: comprobadas en tu dispositivo y gratuitas con una cuenta
- Una respuesta local a una conversación se comprueba en tu dispositivo antes de servirse. Si la comprobación falla o no puede ejecutarse, la respuesta va a la nube cuando tu plan y ajustes lo permiten, y se retiene en caso contrario.
- En Pro y Team, una respuesta local que pasa también es confirmada por Synalux, en una copia seudonimizada en tu dispositivo; la asignación permanece en tu dispositivo. Con una imagen adjunta, o con la nube desactivada, se sirve la respuesta local comprobada.
- Cuando la pantalla en el dispositivo 4b no está segura sobre una conversación, la 9b la lee de nuevo antes de que la conversación se rechace o se envíe a la nube.
- Todo lo local es gratuito sin cuenta y sin límite en el tamaño del modelo local.
Una cuenta gratuita de Synalux añade
prism_inferde múltiples turnos y 20 respuestas en la nube al día. Pro ($15/mes) y Team ($20/asiento/mes) son los propios planes de Prism. - Búsqueda web opcional de You.com: establece
YDC_API_KEYpara habilitaryoucom_web_search(contribuido por @mouse-value-add en #227). - Corregido: el 2b y el 4b ya no responden a las propias solicitudes de Prism como enrutador de herramientas. Un prompt de sistema integrado en esos modelos había convertido algunas respuestas en llamadas a herramientas y hacía que la pantalla en el dispositivo rechazara algunas solicitudes ordinarias.
Novedades en v20.21.15
Seguimientos: ve lo que se ejecuta localmente y una pantalla más estricta cuando el clasificador está caído
local_savings(yprism savings) muestra una línea para los seguimientos, llamadas que llevaron tu conversación. Cubre cuántas respondió el modelo local (y cuántas de esas respondió el 9b), cuántas rechazó la pantalla en el dispositivo y en qué etapa, cuántas rechazaron los límites de múltiples turnos de tu plan y cuántas fueron a la nube.- Una respuesta corta de chat ("16", "Sí") cuenta como respuesta. Antes, la puerta de calidad la trataba como vacía y un plan de pago volvía a preguntar a la nube.
- Cuando el clasificador en el dispositivo falla en cada lectura de un seguimiento, el seguimiento ya no se responde solo con una comprobación de palabras clave. Va a la nube si tu plan lo permite y se rechaza en caso contrario.
Novedades en v20.21.14
Las habilidades se cargan cuando ayudan y puedes ver por qué se cargaron
- Las notificaciones de tareas en segundo plano, los informes de otros agentes y los resúmenes de continuación ya no cargan habilidades en medio de una tarea, de modo que una palabra dentro del informe de un agente no puede atraer reglas no relacionadas.
- Pegar la salida de arranque de Prism en un prompt ya no carga habilidades que casualmente comparten una palabra con ella.
- Las tareas que dicen que necesitan herramientas del host o juicio reservado permanecen con el host en lugar de fallar en el trabajador local.
- Cada encabezado de habilidades enrutadas termina con la versión de la tabla de enrutamiento (por ejemplo "Tabla de enrutamiento v41."), de modo que una carga de habilidad pasada puede comprobarse contra las reglas exactas que la eligieron.
- Las habilidades con sus propios disparadores ahora se cargan incluso cuando su archivo usa finales de línea
de Windows o menciona
prompt_triggers:en su descripción; antes, se entregaban pero silenciosamente nunca se cargaban.
Novedades en v20.21.13
Los planes de pago y las pruebas son claros en Cuenta y Ajustes
- Los usuarios gratuitos pueden abrir la comparación de planes de Prism y comenzar una prueba de 14 días.
- Los usuarios de prueba ven su nivel de pago, la fecha de finalización exacta y la acción para añadir los datos de pago antes de la cancelación automática.
- Los estados activos y de recuperación de pago llevan a la acción de facturación alojada correcta; una verificación no disponible se etiqueta en lugar de presentarse como pagada.
- Prism Free local permanece disponible sin cuenta o suscripción.
Novedades en v20.21.12
Múltiples hosts MCP mantienen un enlace de panel funcional
- Cada host de Prism en ejecución ahora registra su panel local de forma independiente.
prism dashboardy el mensaje de arranque verifican los candidatos más recientes y recurren a un panel en vivo más antiguo cuando un host más nuevo se detiene.- La limpieza de instancias no puede eliminar el registro de otro host y el mensaje abierto preserva la cuenta vinculada y la descripción del plan.
Novedades en v20.21.11
Las cuentas vinculadas persisten entre actualizaciones del panel
- Un proceso host con una credencial de lanzamiento obsoleta ahora se recupera de la cuenta más nueva guardada por el panel después de que la credencial obsoleta sea rechazada.
- Las credenciales de host válidas siguen siendo autoritativas; el cierre de sesión, los cambios de cuenta concurrentes, las fallas de red y las fallas del servidor no activan un cambio de credencial inseguro.
prism dashboardabre el panel local activo sin volver a etiquetar una cuenta vinculada Standard, Advanced o Enterprise como Free.
Novedades en v20.21.10
Los paneles Free con sesión cerrada siguen funcionando localmente
- Cerrar sesión ahora cambia la Vista de Proyecto, los detalles del proyecto y las lecturas de gráficos a SQLite local sin requerir una cuenta, edición de configuración o reinicio.
- La preferencia guardada del backend de Synalux permanece lista para el próximo inicio de sesión; las credenciales de nube faltantes accidentales aún fallan de forma segura.
- La Actividad Reciente usa la sesión persistente más nueva cuando es más nueva que el traspaso guardado. Las Sesiones Recientes están ordenadas de más nuevas a más antiguas, y las versiones de traspaso guardadas permanecen disponibles como puntos de restauración.
Novedades en v20.21.9
Prism Free se abre sin una cuenta de Synalux
- Ejecuta
prism dashboardpara abrir el Mind Palace local actual. No se requiere inicio de sesión, código de vinculación de cuenta, clave API, plan de pago o canje de plan Free. - Una dirección de panel local simple ahora da el comando exacto de apertura local en lugar de mostrar un estado de cuenta roto.
- Cuenta y Configuración muestra Prism Free como activo. La vinculación de Synalux sigue siendo una acción opcional para sincronización en la nube, facturación y funciones de pago.
- El acceso local permanece protegido sin imprimir su capacidad de navegador en la salida de inicio, y las rutas de estado inseguras o las sondas de identidad redirigidas fallan de forma segura.
Novedades en v20.21.8
Los gráficos del panel usan el Portal autenticado
- El proyecto de nube seleccionado ahora muestra sus nodos de sesión reales y enlaces almacenados en lugar de colapsar en una burbuja de proyecto solo con palabras clave.
- Sintetizar Bordes usa el contrato de incrustación del Portal Synalux autenticado; el proceso del panel de Prism no necesita una clave API de Google o Gemini.
- Los vectores y enlaces existentes se reutilizan en ejecuciones repetidas, la expansión de síntesis está limitada y las fallas del Portal se muestran en lugar de representarse como un gráfico vacío.
- Cuenta y Configuración ahora muestra el usuario actual, el rol y el plan Free, Standard, Advanced o Enterprise, con acciones visibles de inicio de sesión, actualización, facturación y cierre de sesión.
- Un plan de pago seleccionado sobrevive al viaje de ida y vuelta del inicio de sesión del Portal, los catálogos de Stripe en vivo y de prueba resuelven cada nivel de pago, y el pago localizado nunca reutiliza un Precio en USD para otra moneda.
Novedades en v20.18.1
Las habilidades de tareas sobreviven a la compactación y se actualizan en su lugar
- Las habilidades de tareas enrutadas por prompt ahora regresan después de la compactación. El hook restaura
las tres habilidades de tareas más recientemente activas junto con el resumen de piso protegido,
por lo que un seguimiento corto como
continuemantiene el flujo de trabajo y las reglas de verificación visual que gobernaron el trabajo antes de que el contexto se compactara. - Una sincronización completada de habilidades administradas actualiza las reglas de tareas activas en el siguiente prompt. El hook compara la generación materializada en disco con su estado por sesión, reautoriza cada nombre restaurado contra el manifiesto actual e inyecta los cuerpos actuales. Una degradación borra el estado de tareas de pago obsoleto; los directorios administrados por Prism no pueden usar la excepción de habilidades locales propiedad del usuario.
- Las habilidades locales propiedad del usuario ahora se enrutan con su cuerpo real. Una
SKILL.mdlocal permanece utilizable mientras se cierra la sesión, mientras que un cuerpo de plataforma con derecho tiene prioridad si ambas fuentes usan el mismo nombre. - El contexto del hook de Codex está anclado a la solicitud del usuario. Las reglas enrutadas le dicen al modelo que ejecute la solicitud de usuario anterior con las reglas aplicadas, evitando que la colocación del contexto de desarrollador final se confunda con una nueva tarea. El ancla y todo el contenido restaurado comparten el límite de 9,800 caracteres.
- La versión 5 del hook aplica su versión de comando. Un host aún en ejecución con un
comando v4 confiable no puede ejecutar el script v5 reescrito. Después de actualizar,
ejecuta
prism connect --refresh --no-models; Codex debe confiar en ambas nuevas entradas de hook v5 en/hooks. Reinicia el host si no ha recargado las nuevas definiciones de hook. Una vez que v5 está activo, las generaciones posteriores de cuerpos de habilidades se actualizan en el siguiente prompt sin otro reinicio del host. - Los nombres de estado se validan y limitan antes de convertirse en argumentos de CLI, y las rutas de actualización de dos llamadas caben dentro del tiempo de espera de hook de 15 segundos del host.
Novedades en v20.18.0
El piso protegido viaja con el bootstrap — y sobrevive a la compactación
session_bootstrapahora incluye un resumen del piso protegido en niveles de pago a profundidad estándar y profunda: una línea inerte por regla, derivada del primer párrafo de cada habilidad (o sudigest:fijado), más su mapa de secciones, ~5.6K caracteres para el piso completo. Los hosts de contexto pequeño como Codex estaban releyendo los dieciséis archivos SKILL.md en cada sesión (mediana de 8 relecturas / 36KB, peor 823 / 5.1MB en registros de implementación) porque el bootstrap solo los nombraba. El resumen se paga además del presupuesto de contexto, por lo que la participación de ledger/traspaso en cada profundidad es byte-idéntica a antes. La profundidad rápida sigue siendo solo nombres — la opción de exclusión.- Un segundo hook reinyecta el resumen después de la compactación.
prism connectregistra el script prism-route enSessionStartcoincidente concompact(Claude Code y Codex); ejecutaprism floor-digest, que aplica las mismas decisiones de nivel y profundidad que el bootstrap, y no agrega nada en inicio/reanudación/limpieza. Los hosts sin hooks (Gemini, Cursor) aún obtienen el resumen en cada bootstrap. Codex: NO VERIFICADO contra una compactación en vivo. El hook está registrado y el script acepta las ortografías de payload documentadas, pero no se ha observado ninguna compactación de Codex de extremo a extremo; en un payload que no reconoce, no reinyecta nada en lugar de algo incorrecto. Si el resumen proviene de una generación cuyos archivos de habilidades nunca terminaron de sincronizarse, el bloque reinyectado lleva la misma advertencia STALE que muestra el bootstrap. - La confianza de Codex se informa honestamente después de una reescritura de hook. Las aprobaciones están
claveadas por hash de definición, por lo que un
hooks.jsonreescrito — esta versión agrega la entrada SessionStart — anula la confianza previa: connect imprime AWAITING TRUST para ambas entradas en lugar de un ✓ verde para un hook que Codex omitiría silenciosamente, y la confianza registrada para una versión de hook más antigua nunca se confunde con la actual. - Una configuración de host que ya no se analiza se deja intacta. Si
~/.claude/settings.jsono~/.codex/hooks.jsonexiste pero no es JSON válido, connect lo mantiene byte-idéntico, no registra ningún hook allí y lo dice — ya no reemplaza el archivo con uno mínimo solo de hooks. El aviso postinstall de npm dice lo mismo, en lugar de pedirte que confíes en un hook de Codex que nunca registró. - Corregido: una habilidad enrutada por síntoma cuyo cierre de cerca de frontmatter es su última línea se incluía con su YAML (incluidos los disparadores) como si fuera la regla.
- Corregido: una línea de resumen que cruza a una nueva sección mantiene el encabezado de esa sección delante de ella — lo que haya abierto la sección (un H2, un H1 en medio del documento, un encabezado vacío, un subrayado setext) — para que las reglas "Delegar a" / "NO delegar" no puedan leerse con la polaridad incorrecta una vez unidas. Un archivo de habilidad en disco se usa solo cuando se resume: archivos vacíos, cortados dentro de su frontmatter o solo con frontmatter recurren a la copia almacenada en lugar de renderizar YAML como la regla.
- Corregido: en Windows, una aprobación de hook de Codex se reconoce aunque Codex almacene la ruta con barras invertidas escapadas.
- La puerta de publicación ahora rechaza notas de versión que van adelante de la versión
del paquete (CHANGELOG, README, READMEs traducidos) — leyendo la versión más nueva
en la línea de encabezado, por lo que un rango de
v20.17.3 – v20.18.0cuenta como 20.18.0, y sobrevive a un apóstrofo tipográfico o un BOM.
Novedades en v20.17.3
- Una instalación de plugin ya no puede habilitar el hook de enrutamiento de prompts. Las rutas
de mantenimiento del paquete (postinstall de npm, inicio del servidor) ahora solo
actualizan un hook que un
prism connectexplícito instaló previamente — un registro MCP de prism en la configuración del host ya no cuenta como consentimiento. La primera instalación del hook ocurre a través deprism connecto no ocurre en absoluto. - El lanzador de plugin de Claude Code es completamente determinista. Ejecuta la
versión exacta del servidor fijado con los scripts de ciclo de vida de npm deshabilitados, y
el plugin ahora documenta su postura de seguridad en
plugins/prism/README.md.
Novedades en v20.17.2
- Los registros pegados ya no pueden activar habilidades falsamente. El enrutamiento disparado por síntomas ahora elimina bloques cercados y menciones de nombres de habilidades enrutables (incluidas dentro de identificadores compuestos como nombres de contenedor/pod) de la vista de enrutamiento de un prompt, por lo que citar un registro de agente o una lista de habilidades no carga habilidades que el texto solo menciona. Las habilidades nombradas por palabras ordinarias mantienen el enrutamiento normal.
- Las habilidades enrutadas por síntomas ahora llegan completas. Los presupuestos de inicio entregan el texto completo de la regla en cada profundidad que cabe; cuando una regla realmente no puede caber, la pantalla dice exactamente cuánto falta y cómo cargar el resto, en lugar de truncar silenciosamente.
- El enrutamiento ya no puede deshabilitarse silenciosamente por una mala habilidad. Tablas de disparadores corruptas u hostiles — formas de valores incorrectas, patrones nombrados después de propiedades de prototipos de objetos — se omiten por entrada en lugar de derribar todo el enrutamiento de prompts (o, en un caso, la exportación de la bóveda) para la sesión.
Novedades en v20.17.1
- Corrige una CLI rota en 20.17.0 — una colisión de nombres de comando hizo que cada
invocación de CLI de
prismsaliera con un error de commander al inicio (el servidor MCP no se vio afectado). El comando de sincronización de traspaso esprism handoff …;prism syncsigue siendo la sincronización de datos entre backends. Si instalaste 20.17.0, actualiza.
Novedades en v20.17.0
Traspaso de Sesión entre Máquinas — Cifrado de Extremo a Extremo
- Reanuda una sesión en cualquiera de tus máquinas. Con
prism handoff enable(de pago, desactivado por defecto), cadasession_save_handoffsella el traspaso a todas las claves de dispositivo de tu cuenta y retransmite el CIPHERTEXT; otra máquina lo extrae consync_pull_handoff(oprism handoff pull <project>) y lo abre localmente. - El relay almacena solo ciphertext — sobres sellados X25519 + AES-256-GCM. Ninguna clave que abra un traspaso existe nunca en el lado del servidor. El canal está deliberadamente separado de la sincronización de ahorros, que lleva solo contadores.
- El fijado de dispositivo TOFU revela un relay comprometido: sellar a una clave que esta máquina nunca ha visto advierte en voz alta, claveado en el id de destinatario derivado del cliente para que una clave intercambiada no pueda esconderse detrás de un nombre de dispositivo familiar.
prism handoff status|devicespara inspeccionar; revoca una máquina perdida desde el portal.
Novedades en v20.16.0
Ve lo que el Servicio Local Te Ahorra — Medible, Auditable, para Todo el Equipo
- Herramienta
local_savings+ CLIprism savings— el volumen de tokens que el servicio local mantuvo fuera de tu modelo de nube: todo el tiempo, últimos 30/7 días, o cualquier ventana de--days N. Tokens, nunca una cifra en dólares inventada, con las suposiciones y subconteos conocidos impresos en línea. - Resumen de equipo (de pago) —
prism savings --sync-enablesube contadores por día solo (nunca contenido; el payload es un conjunto de campos cerrado que el servidor también aplica);prism savings --teammuestra el total de todo el espacio de trabajo con la participación por miembro. Desactivado por defecto. - Base de sincronización E2E — sobres sellados de múltiples destinatarios (X25519 + HKDF-SHA256 + AES-256-GCM en node:crypto, sin nueva dependencia) e identidades por dispositivo, revisadas de manera adversaria: la sincronización de sesión entre máquinas se enviará en un relay que solo almacena ciphertext.
- Guardia de fuga pública al enviar — los diffs salientes Y los mensajes de commit se escanean antes de que cualquier cosa salga de la máquina.
Novedades en v20.12.1
prism connect --refreshahora converge cada registro que posee, no solo el de nivel superior — las entradas con ámbito de directorio podrían seguir lanzando una compilación antigua indefinidamente.prism updateverifica el paquete instalado, no el CLI que está en ejecución, por lo que ya no puede informar "actual" mientras la instalación está desactualizada.- El actualizador programado opcional realmente puede iniciarse — el LaunchAgent ahora incluye un PATH que contiene node y npm.
Novedades en v20.12.0
- Prism ahora te avisa cuando está desactualizado. El inicio de sesión muestra un
aviso de actualización de una línea cuando existe una versión más reciente — respaldado por caché,
como máximo una verificación de registro por día, silencioso sin conexión.
PRISM_NO_UPDATE_CHECK=1permite optar por no participar. - Actualizaciones sin intervención, si las deseas.
prism autoupdate enableconfigura unprism update --if-idlediario: solo actualiza el paquete npm global, se pospone mientras cualquier servidor Prism esté en ejecución y nunca toca la configuración del host — eso permanece detrás de unprism connectvisible.
Novedades en v20.11.1
- Guardar memoria nunca se rechaza. La ruta de guardado solía rechazar
llamadas
session_save_ledger/save_handoffcuando su heurística de ruta-a-proyecto discrepaba con el proyecto que declaraste — y el registro en el que la heurística confiaba podía contener basura de auto-registros anteriores, por lo que sesiones legítimas terminaban sin guardar. Tu declaración ahora siempre gana; la discrepancia se devuelve como una advertencia informativa, y el auto-registro solo acepta raíces de repositorio reales. - Las capturas de pantalla vuelven a ser evidencia. Las capturas de
prism browseren macOS se ampliaban silenciosamente al límite de tamaño, por lo que una captura ya no mostraba lo que realmente se renderizaba. Solo las capturas genuinamente sobredimensionadas se redimensionan ahora, y el límite ya no recorta una ventana estándar de 1920 píxeles de ancho.
Novedades en v20.10.0 – v20.11.0
- El enrutamiento de habilidades ahora funciona a mitad de sesión. Los nuevos mensajes se comparan en el dispositivo a medida que avanza la conversación — no solo en el primer turno — y se inyectan dentro de los límites de contexto reales de cada host (Claude Code limita la salida de hooks a 10k caracteres; Codex trunca por defecto), con entrega prioritaria de punteros cuando una carga útil no cabe en línea.
prism connectes un comando de convergencia. Primero se autoactualiza, se re-ejecuta, y luego reconcilia el registro de MCP, las habilidades y los hooks — no más máquinas con "configuración nueva, código obsoleto".- Las habilidades con ámbito se enrutan también en mensajes, y la salida de inicio sobrevive a hosts que descartan contenido de herramientas estructurado.
Novedades en v20.9.0 – v20.9.3
-
Tus habilidades siguen a tu cuenta.
skill_savealmacena una habilidad en el ámbito que elijas: solo esta máquina (local, funciona sin conexión y sin sesión iniciada), tu cuenta (user— cada máquina en la que inicies sesión la recibe), o un espacio de trabajo (team— compartida con miembros, administrada por administradores, opcionalmente dirigida a personas específicas). -
Recorta el catálogo que no usas.
skill_managepuede liberar habilidades de plataforma que nunca tocas — liberando presupuesto del catálogo de habilidades del host — y restaurarlas en cualquier momento, sin pérdidas. Eliminar una habilidad con ámbito archiva su contenido final localmente primero, por lo que nada queda silenciosamente irrecuperable. -
Entrega que se pone en cola en lugar de fallar. Las sesiones concurrentes ya no privan a la sincronización de habilidades en el almacén de configuración local (WAL + tiempo de espera de ocupado) — un fallo que anteriormente solo informaba "parcial" donde nadie podía verlo.
-
Las reglas retenidas siguen vinculando. Cuando el presupuesto de contexto no puede incluir el texto de una habilidad, el manifiesto de nombres retenidos ahora declara que esas habilidades siguen rigiendo el trabajo y nombra todas las formas de cargarlas antes de que se afirme la finalización.
-
El presupuesto que el piso nunca gastó. Un error contable de larga data significaba que ninguna habilidad desprotegida se incluía en línea en ningún nivel de contexto normal — el piso protegido siempre incluido estaba debitando el presupuesto destinado a todo lo demás. Las habilidades coincidentes con tareas (como la lista de verificación de evidencia de finalización) ahora realmente llegan.
Novedades en v20.8.2
- La entrega de habilidades ahora admite el fallo en lugar de ocultarlo. Un caso límite
de permisos del sistema de archivos (un umask que elimina el bit de ejecución del propietario) podía dejar
la sincronización de habilidades sin escribir nada mientras se informaba como actual — medido en nueve
días en una máquina real. Los directorios administrados rotos se reparan en su lugar,
cada directorio se crea a prueba de umask, y la ruta de reparación rechaza enlaces simbólicos
mediante un descriptor
O_NOFOLLOW. - Una instalación desactualizada te lo dice al inicio. Prism ahora rastrea la generación que realmente llegó al disco por separado de la que la base de datos aceptó; si divergen, el banner de inicio lo dice en una advertencia colocada donde la truncación de pantalla no puede cortarla. Una sincronización exitosa la limpia automáticamente.
Novedades en v20.7 – v20.8.0
- La primera ejecución demuestra la memoria en lugar de describirla —
session_bootstrapsiembra una memoria de demostración y la muestra recuperada del disco, por lo que el bucle guardar→recuperar se siente en la sesión 1. De un solo uso, contenida en su propio proyectoprism-demo, eliminable con una llamada. - Panel corregido — un error tipográfico de comillas (publicado el 2026-05-29) mató el script
en línea en el momento del análisis, por lo que cada panel desde entonces renderizó "Cargando proyectos..."
para siempre. Corregido, y el lint ES5 ahora
node --checkel script en línea compilado para que un panel no analizable nunca pueda volver a publicarse. - Publicación confiable — los lanzamientos de npm se autentican mediante GitHub OIDC. Sin token
almacenado que expire o se filtre, y cada lanzamiento lleva una atestación de
procedencia firmada — puedes
verificar que el tarball que instalas fue compilado desde este repositorio por CI
(
npm audit signatures). - TLS obligatorio para la sincronización en la nube — una URL de almacenamiento remoto
http://se actualiza ahttps://en lugar de enviar silenciosamente el contenido de la sesión en claro. - Colisión de plugin de Codex + detección de estado habilitado —
prism connectomite su propio registro solo cuando un plugin realmente proporcionaprism-mcp(caché presente y habilitado), evitando tanto servidores duplicados como faltantes. - CI de Windows estabilizado; listados de registro/npm realineados y deduplicados.
Novedades en v20.6.0
La Entrega No Es una Sugerencia
Una auditoría de un incidente real (un agente borró datos de demostración después de anunciar el borrado — con la regla de preguntar-primero confirmada, empaquetada y ausente de lo que cualquier agente realmente recibió) encontró que el piso protegido había superado todos los presupuestos de entrega: "desprotegido" había llegado silenciosamente a significar "nunca entregado".
ask-firstyfeature-preservationse unen al piso protegido (14 → 16). Las habilidades protegidas siempre se incluyen en línea; estas dos ahora llegan a cada sesión.- Los conflictos de sincronización son ruidosos y nombrados. El inicio solía decir "· 2 conflictos locales preservados" mientras las habilidades de seguridad estaban meses desactualizadas; ahora nombra cada habilidad congelada y declara cómo reanudar las actualizaciones.
--storageaceptaautoysynalux— el CLI rechazaba su propio valor predeterminado documentado y el backend de producción.- Divulgación: la entrega de habilidades informa; no bloquea. Una sonda en vivo mostró que un agente host aún editaba código fuente no verificado con la regla cargada. Si tu modelo de amenazas incluye un agente que actúa contra una regla cargada bajo presión de tarea, combina este paquete con barreras mecánicas (hooks, permisos, roles de privilegio mínimo). Cierto en cada lanzamiento anterior; declarado desde este.
Novedades en v20.5.3
La Evidencia de Base Lleva Su Edad
Las respuestas basadas en memoria etiquetaban sus fuentes pero nunca las fechaban, por lo que una nota de hace dos años y la de ayer llegaban al modelo de manera idéntica. Nada en la evidencia permitía descartar la desactualizada. Impulsado por una revisión externa que nombró el riesgo correcto para la memoria local-primero: los datos permanecen locales, pero una mala base se vuelve permanente — almacenar todo en tu máquina elimina la presión externa que de otro modo sacaría a la superficie una nota desactualizada.
La evidencia ahora dice:
[SOURCE 1: ledger:8286581d (recorded 2025-05-29, 431 days ago)]
La fecha ya existía en el almacenamiento y se estaba descartando en la capa de fragmentos, por lo que esto es plomería en lugar de nueva recopilación de datos. Las marcas de tiempo SQLite sin zona se normalizan a UTC — leídas como locales, un registro de hace diez minutos se analizaba horas en el futuro y su edad se suprimía por completo, lo que significa que la función silenciosamente no hacía nada en las memorias más frescas. Una fecha ausente o no analizable se muestra como nada en lugar de predeterminar a ahora; predeterminar haría que las memorias más antiguas, las más propensas a estar desactualizadas, parecieran las más frescas.
tests/integration/grounding-staleness.test.ts ejecuta la propia sonda del revisor —
siembra una nota deliberadamente desactualizada junto a una fresca contradictoria y afirma
que el modelo recibe ambas, visiblemente fechadas. Cualquiera puede ejecutarla.
No resuelto, y no afirmado: la recuperación no pondera la actualidad. Una nota desactualizada
mostrada junto a una fresca es el caso fácil — el modelo ve ambas fechas y puede
ponderarlas. El caso difícil es una nota desactualizada recuperada sola, porque la clasificación es
por coincidencia de palabras clave y un almacén antiguo devuelve resultados antiguos; entonces la etiqueta de edad es la
única defensa y no hay un registro más fresco con el que comparar. Rastreado como
TECH_DEBT.md #4.
Novedades en v20.5.0 – v20.5.2
El Primer Mensaje Nunca Sale de Tu Máquina
Las habilidades activadas por síntomas — las reglas que se activan en "no puedo ver X", "sin filas",
"la lista está vacía" — están destinadas a cargarse en el turno en que llega un informe de incidente.
Nunca lo hicieron: cada plantilla de host llamaba a session_bootstrap con {}, por lo que
no había un mensaje con el que comparar.
Arreglar eso planteó la pregunta de dónde ocurre la comparación. Ahora ocurre
localmente. Las 28 reglas de palabras clave ya son públicas, por lo que no había nada que una comparación
local no pudiera calcular, y callPortal() no tiene ningún parámetro prompt en absoluto —
la garantía es estructural, no una promesa. La solicitud del portal lleva el
proyecto y el rol solamente.
Una regla coincidente ahora llega como contenido, no como un nombre. Los hosts nativos fuera del espejo de archivos de habilidades no tenían forma de leer una regla de la que solo se les informaba, por lo que el cuerpo de la regla se incluye en línea en la pantalla de inicio, limitado y dimensionado contra el presupuesto real por proyecto.
Novedades en v20.4.0
Un Backend en la Nube Explícitamente Nombrado Falla Ruidosamente
Configurar PRISM_STORAGE=synalux o =supabase con credenciales incompletas
solía degradar silenciosamente a SQLite local. El cambio se registraba en stderr, que
los hosts MCP descartan, por lo que nada lo sacaba a la superficie: las sesiones seguían sirviendo contexto local
desactualizado mientras la nube tenía un historial más nuevo, y context_source leía local
en lugar de cualquier tipo de advertencia. Una sesión podía funcionar así durante semanas.
Nombrar un backend explícitamente es una declaración fuerte de intención, por lo que ahora lanza una excepción —
nombrando las variables faltantes y la opción de exclusión PRISM_STORAGE=local — en lugar de
dividir silenciosamente el historial de tu sesión. auto no cambia: mantiene su
degradación documentada synalux > supabase > local, fijada por una prueba.
Nota de actualización: si configuras explícitamente PRISM_STORAGE=synalux|supabase y
tus credenciales están incompletas, el inicio ahora falla con un error nombrado en lugar
de usar silenciosamente datos locales. Ese error es la solución — configura la variable faltante,
o elige PRISM_STORAGE=local deliberadamente. Las configuraciones predeterminadas (auto) no se ven
afectadas.
La excepción deliberadamente no se trata como un fallo de inicio recuperable: esa ruta existe para errores transitorios (límites de tasa, 5xx, DNS), que pueden degradarse detrás de un aviso visible. Una credencial faltante es un fallo de configuración y no debe encubrirse.
También: el bloque de habilidades ahora se presupuesta por defecto en lugar de solo a petición, por lo que una carga útil grande de habilidades no puede desplazar el informe y el historial.
Novedades en v20.3.2
Web Scholar: Endurecimiento SSRF
Lanzamiento de seguridad. Web Scholar extrae URLs de artículos que provienen de
la salida del motor de búsqueda, por lo que el objetivo es influenciable por atacantes a través de envenenamiento
SEO — y debido a que lo que extrae se escribe en el corpus de memoria y se
pasa al LLM configurado, una redirección a una dirección local significaba leer un servicio
interno y enviar el resultado hacia adelante.
El guardián del host comparaba prefijos de cadena en lugar de analizar la dirección, y seis grafías de una dirección local lograron pasar: [::1] (URL.hostname conserva los corchetes), 127.0.0.2 (solo se enumeró .1, no todo 127.0.0.0/8), 0.0.0.0, [::ffff:127.0.0.1], localhost. (un punto final derrotó todas las comprobaciones de sufijo a la vez), y [64:ff9b::7f00:1] (NAT64 incrusta IPv4 en sus bits bajos). La clasificación de hosts ahora analiza direcciones y también cubre CGNAT, pruebas de rendimiento, multidifusión, rangos reservados, y rangos únicos locales y de enlace local de IPv6.
El secuestro de DNS también está cerrado. Cada comprobación leía la cadena de la URL, por lo que un nombre de host controlado por el atacante pasaba todas ellas y aún podía resolverse a 127.0.0.1. Los objetivos ahora se resuelven primero, cada dirección devuelta se valida, y la conexión se fija a esas direcciones para que el nombre nunca se resuelva una segunda vez, lo que también cierra la ventana entre la comprobación y la conexión.
Los fallos de raspado ya no desaparecen en un simple catch {}, una ejecución está limitada por PRISM_SCHOLAR_SCRAPE_BUDGET_MS (60 s por defecto) en lugar de estancarse por un recuento de artículos elevado, y las respuestas están limitadas a 8 MiB.
Esto solo es alcanzable cuando scholar realmente se ejecuta — scholar_research, o el bucle en segundo plano bajo PRISM_SCHOLAR_ENABLED=true — y cuando el atacante también controla el DNS o un resultado de búsqueda. Actualice si usa Web Scholar.
Novedades en v20.3.1
Prism Browser Informa Fallos Reales
prism browser no podía fallar una prueba. eval 1 === 2 devolvía status: ok con código de salida 0, una página que servía HTTP 500 informaba status: ok, y los errores de consola y las excepciones de página no capturadas se descartaban por completo. Esta versión añade aserciones — assert-text, assert-visible, assert-count, assert-url, assert-title, assert-eval, assert-no-page-errors — que devuelven status: failed y un código de salida distinto de cero. open ahora informa http_status y falla en 400 o superior, las capturas de pantalla se validan en lugar de asumirse, y eval devuelve JSON nativo con su tipo en lugar de un repr de Python.
La capa de huella digital nunca se había aplicado: un argumento de palabra clave incorrecto hacía que la biblioteca de sigilo lanzara una excepción en cada inicio — 1,139 fallos y 0 éxitos desde abril — mientras que el ejecutor informaba que estaba activa. Está corregido, y una capa que no se puede aplicar ahora falla de forma ruidosa. La compilación sin cabeza ya no se anuncia a través de navigator.userAgentData o la cabecera Sec-CH-UA, y se ha eliminado un parche que corrompía Object.getOwnPropertyDescriptor en cada página bajo prueba. Estas siguen siendo ayudas de prueba de mejor esfuerzo, no una garantía contra la detección de bots.
--local-only ahora aísla de verdad: la salida de WebSocket, EventSource, WebRTC y sendBeacon eludía el enrutamiento de solicitudes y nunca se bloqueaba, y se permitía el paso a los service workers. --cleanup era una operación nula en los dos modos que usan los agentes. El aislamiento del sitio, la detección de phishing y el bloqueo de ventanas emergentes ya no están deshabilitados por defecto, ya que estos perfiles contienen cookies autenticadas en vivo.
Nuevo para ejecuciones de prueba: --ephemeral-profile y --storage-state para flujos autenticados herméticos, pages/switch-page para que las ventanas emergentes de OAuth sean accesibles, --fail-fast, --fast, --trace/--video/--har, y profiles --prune-older-than para el mantenimiento de perfiles.
Novedades en v20.2.7
Los Guardados de Sesión Sobreviven a los Reinicios del Agente
Prism ahora recuerda que una conversación cargó correctamente su contexto de proyecto cuando el servidor MCP se reinicia u otro proceso de Prism maneja la siguiente solicitud. session_save_ledger y session_save_handoff ya no fallan con un error falso de context_not_loaded en ese flujo.
La recuperación sigue siendo de cierre ante fallos: la autorización se limita al proyecto y la conversación exactos, expira con la ventana de contexto existente, y no almacena un identificador de conversación en texto plano. Los recibos entre proyectos, falsificados, malformados, caducados o con fecha futura siguen rechazándose. La versión también actualiza PostCSS a la versión parcheada 8.5.23.
Novedades en v20.3.0
Búsqueda de Memoria Híbrida (Nivel Portal)
session_search_memory en el nivel portal (instalaciones respaldadas por Synalux) ahora fusiona la similitud semántica con la coincidencia léxica de términos exactos mediante fusión ponderada de rango recíproco. Medido en sondas ciegas contra un corpus real de 8.5k entradas: la recuperación fusionada nunca fue peor que la semántica sola en los 5 primeros resultados, y los identificadores exactos — TPN, nombres de función, cadenas de error — ahora rescatan consultas que la similitud de incrustación difumina. Los resultados indican cómo se encontraron — cabeceras hybrid retrieval, brazos sem#/lex# por acierto — y un rescate solo léxico se etiqueta como exact-term match en lugar de pretender una puntuación de similitud. Las instalaciones locales de SQLite mantienen la búsqueda vectorial pura; la híbrida necesita el índice léxico del portal.
Novedades en v20.2.6
Actualizaciones de Configuración Más Seguras en Cada Agente
prism connect ahora lee la configuración de Claude, Cursor, Gemini y Codex a través de una única instantánea de archivo verificada, evitando que otro proceso intercambie un archivo entre la comprobación de seguridad de Prism y su lectura. Los dotfiles con enlaces simbólicos compatibles siguen funcionando, mientras que los enlaces simbólicos colgantes o plantados fallan de forma ruidosa en lugar de seguirse o sobrescribirse. Esta versión también incluye las dependencias parcheadas y las comprobaciones de versión multiplataforma introducidas en v20.2.5.
La alternativa en la nube ahora se documenta de forma coherente como Gemini 3.6 Flash. Los techos de plan gobiernan el enrutamiento automático de prism_infer; el uso directo de cualquier modelo descargado a través de Ollama local sigue siendo gratuito en todos los niveles.
Novedades en v20.2.4
Memoria de Sesión Fiable que Muestra Trabajo, No Saludos
Las respuestas del asistente que solo contienen saludos se omiten antes de las escrituras en el libro mayor. Las filas de saludo existentes se filtran en el momento de la lectura en el inicio nativo, el contexto MCP y prism load --json, mientras que las entradas que contienen decisiones, TODOs, archivos modificados o eventos que no son de sesión permanecen visibles. Las filas históricas no se eliminan de forma destructiva. Si Synalux tiene un fallo de inicio transitorio, Prism muestra una única instantánea local acotada del último buen estado y la etiqueta claramente; los fallos permanentes de autorización o validación siguen fallando de forma ruidosa, y las escrituras posteriores permanecen enrutadas a la nube.
Novedades en v20.2.2
Un Flujo de Trabajo Local-Primero en Cada Agente
prism connect ahora instala un contrato de orquestación para Claude Code, Claude Desktop, Cursor, Gemini CLI y Codex. El trabajo delegado acotado va primero a session_task_route y al trabajador local prism_infer; el trabajo rutinario no debe crear agentes host en segundo plano. Los trabajadores locales pueden recibir la memoria rápida, estándar o profunda configurada en el panel del proyecto activo y seleccionar un modelo 2B/4B/9B/27B seguro para RAM en el momento de la llamada. El enrutador reenvía la complejidad pero no elige el modelo; prism_infer posee la decisión final utilizando la memoria y el ajuste del contexto, los modelos instalados, la RAM en vivo, los derechos y las anulaciones explícitas del llamante.
La expansión de agentes nativos de Codex y Gemini se deshabilita durante la conexión. Codex mantiene un perfil de respaldo Terra/bajo de dos hilos y un nivel si el desarrollador vuelve a habilitar explícitamente los agentes nativos más tarde. Claude Code mantiene los agentes nativos como una ruta de último recurso pero fija su modelo a Sonnet. Cursor y Claude Desktop no exponen un archivo de política de subagente global compatible, por lo que reciben el flujo de trabajo idéntico a través de las instrucciones del servidor MCP de Prism. Los límites de seguridad de prism_infer y la responsabilidad final de verificación del host no cambian.
Habilidades de Nivel de Suscripción Llegan Antes del Primer Inicio del Host
prism connect ahora descarga el manifiesto de habilidades autoritativo de Synalux y materializa los paquetes con derecho en el directorio nativo ~/.agents/skills antes de que el comando salga. Codex por lo tanto ve el conjunto de habilidades actual en su primer inicio en lugar de requerir un segundo reinicio. Prism vuelve a comprobar la misma instantánea en el inicio de MCP, la carga de sesión y cada cinco minutos: la entrega de habilidades nunca depende de un gancho de ciclo de vida del host.
En el primer turno del usuario, la habilidad nativa de Prism, los metadatos de MCP y las instrucciones gestionadas del host solicitan una llamada a session_bootstrap({}). Prism entonces usa el nombre de desarrollador del panel, Auto-Cargar Proyectos y la configuración rápida, estándar o profunda. La respuesta se mantiene enfocada en el saludo y el estado de la sesión porque las habilidades de nivel ya están presentes en el directorio de habilidades nativas del host.
El MCP sin ganchos puede proporcionar y priorizar ese bloque listo para mostrar, pero el modelo host sigue siendo el propietario del mensaje final del asistente y puede resumirlo. Prism no reclama un saludo verbatim determinista en superficies de chat de terceros; eso requeriría un gancho de ciclo de vida del host, un lanzador, una extensión o un panel propiedad de Prism. La carga del contexto en sí sigue siendo completa incluso cuando un host acorta la respuesta visible.
Las cuentas gratuitas reciben solo el paquete público prism-startup sin ganchos; el servidor MCP sigue suministrando un contrato de seguridad y evidencia compacto y no propietario. Las cuentas de pago autenticadas reciben los paquetes de ingeniería y comportamiento protegidos más el conjunto de enrutamiento suscrito actual. El evidence-first-protocol de pago mantiene la codificación ordinaria ligera: una reproducción correlacionada es suficiente para comenzar una edición, mientras que la aceptación estricta comienza solo antes de una reclamación de finalización, push o lanzamiento e inspecciona solo los artefactos exactos utilizados como prueba. Las actualizaciones instalan paquetes recién autorizados; las degradaciones verificadas eliminan solo los paquetes propiedad de Prism mientras preservan las habilidades locales y los conflictos modificados localmente.
Al actualizar una instalación antigua de Claude Code, prism connect elimina solo las acciones de gancho de inicio, sincronización de habilidades, traspaso y deriva propiedad de Prism del bootstrap heredado. También elimina las secciones de inicio de Prism heredadas reconocidas de ~/CLAUDE.md, preserva todas las demás instrucciones e instala un pequeño bloque nativo marcado como propiedad que selecciona session_bootstrap({}) en el primer turno. Los ganchos de usuario, las secciones de instrucciones personalizadas y las coincidencias cercanas permanecen intactos; las habilidades nativas y los recordatorios del lado del servidor preservan esas características de Prism sin depender de los ganchos de ciclo de vida del host. En Claude Code y Codex, la conexión además registra el script prism-route dos veces: en cada prompt (enrutamiento de habilidades a mitad de sesión) y en SessionStart coincidente solo con compact (resumen de piso protegido post-compactación). Debido a que los hosts no exponen una devolución de llamada nativa de fin de sesión, el traspaso al apagado está impulsado por instrucciones en lugar de ser un evento de ciclo de vida garantizado.
Después de que el registro de usuario nativo de Claude Code tenga éxito, el mismo comando predeterminado o --refresh comprueba el .mcp.json más cercano desde el directorio actual hasta el directorio de inicio. Elimina solo la entrada heredada exacta prism-mcp { "command": "npx", "args": ["-y", "prism-mcp-server"] } que de otro modo ocultaría el registro de usuario. Las entradas personalizadas de Prism y sus campos adicionales, más los servidores no relacionados, se preservan; los archivos malformados fallan de forma ruidosa sin cambios. --dry-run informa la migración reconocida sin cambiar el archivo.
Novedades en v20.2.1
Almacenamiento de Memoria Consciente de la Suscripción
prism connect ahora lleva un PRISM_STORAGE=auto|local|synalux|supabase explícito a cada registro de host gestionado y rechaza valores inválidos antes de cambiar un archivo de configuración. En auto, un nivel gratuito confirmado por el portal usa SQLite local, mientras que Standard, Advanced y Enterprise usan memoria en la nube de Synalux. Si la resolución de derechos no está disponible, Prism falla de forma cerrada en lugar de dividir el historial entre backends. El almacenamiento sigue siendo independiente del enrutamiento de modelos local-primero.
Novedades en v20.2.0
Un Comando Conecta Cada Host Compatible
Instale Prism globalmente y ejecute prism connect. Detecta Claude Code, Claude Desktop en macOS, Windows y Linux (beta), Cursor, Gemini CLI y Codex, y luego registra de forma segura el servidor desde el paquete instalado. Las entradas personalizadas existentes no se tocan; --dry-run previsualiza los cambios y --refresh actualiza solo las entradas gestionadas por Prism.
Novedades en v20.1.0
Cada Resultado de Inferencia Ahora Es Observable
prism_infer gana un contrato de fallo: pasa escalation: "report" y cada llamada devuelve un gate_outcome estructurado — success, degraded (salida fallida por compuerta servida de todos modos, marcada explícitamente), o refused (tipado, con razón, en lugar de un error lanzado). La salida degradada ya no puede servirse en silencio.
Los Prompts Grandes Funcionan Localmente
Los prompts de más de 4000 caracteres eran rechazados de forma general cuando la nube estaba apagada. Ahora el texto completo recibe un escaneo determinista de palabras clave reservadas más una clasificación de extractos cabeza+medio+cola — los prompts sobredimensionados limpios se sirven localmente con un marcador de auditoría UNCERTAIN_LENGTH distinto. El manejo clínico/reservado no cambia (y su umbral de palabras clave se fortaleció).
No Más Truncamiento Silencioso
Los límites de contexto por nivel ahora coinciden con los Modelfiles en vivo (27b/9b son modelos de 4096 tokens; 4b/2b son 32768 — la tabla anterior estaba al revés). Los niveles que no pueden contener tu prompt se omiten con una razón visible de ctx_insufficient; si nada cabe, obtienes el prompt completo en la nube o un error claro — nunca una respuesta calculada a partir de un prompt recortado en silencio.
Sepa Bajo Qué Plan Está Ejecutando Realmente
Los derechos conllevan un campo source: portal (real), unconfigured (gratis por diseño), o fallback_free (portal inalcanzable — se SUPONEN límites gratuitos). Pasa strict_entitlements: true para fallar de forma ruidosa en lugar de ejecutar degradado.
Novedades en v20.0.8
verify_behavior Funciona de Nuevo
La herramienta verify_behavior fallaba en cada llamada (-32602 expected object, received string) — el manejador devolvía una cadena simple en lugar de un objeto MCP CallToolResult. Corregido, con contrato y pruebas de regresión de cierre ante fallos para que la compuerta de seguridad nunca pueda romperse silenciosamente de nuevo. Si estás en 20.0.6/20.0.7, actualiza.
Desde v20.0.7: Seguridad de Contenido Reservado, Autenticación de Skills, Métricas de Delegación
El contenido clínico reservado ahora es Claude-o-rechazo (nunca servido por un modelo más pequeño que el que lo rechazó), la entrega de skills ganó un respaldo de autenticación JWT (los skills de nivel de pago ahora llegan a máquinas que usan solo PRISM_SYNALUX_API_KEY), y cada llamada de prism_infer se registra en un libro mayor persistente de infer_metrics. Detalles completos en CHANGELOG.md.
Novedades en v20.0.5
Delegación Local-Primero — 15 Categorías, Tasa Medida
La skill local-inference-first cubre 15 categorías de disparo duro (generación de código, regex, conversión de formato, resumen, documentación, búsqueda factual, clasificación, comandos de shell, generación de config, y más). Los bloques de código pegados ahora disparan delegación independientemente de la redacción de la pregunta. Tasa de delegación medida: 30-35% en sesiones de ingeniería, 40-60% en sesiones de transformación/contenido. La tasa depende de la mezcla de prompts, no de la skill — los instrumentos ahora se autovalidan con nonDelegatedCount para prevenir tautologías de conjuntos curados.
Reintento Solo-Pensamiento (v20.0.4)
Los modelos Qwen 3.5 (9B/27B) con pensamiento habilitado podían quemar todos los tokens en bloques de <think> y devolver contenido vacío, causando una cascada a 4B. Ahora detecta respuestas solo-pensamiento y reintenta el mismo nivel con pensamiento deshabilitado — preservando la calidad del modelo en lugar de caer a un modelo más pequeño.
Novedades en v20.0.3
Resiliencia de Modelo Frío en Capa 1
(Como se envió en una versión anterior; el contrato actual es el encabezado de src/utils/layer1.ts.) El clasificador de categorías reservadas reintenta una vez con un tiempo de espera más largo ante fallo de modelo frío, luego cae a un respaldo determinista de palabras clave; el texto limpio de palabras clave se sirve localmente. Los prompts sobredimensionados (>4K caracteres) obtienen el umbral de palabras clave de texto completo más una lectura de extractos cabeza+medio+cola y un marcador distinto UNCERTAIN_LENGTH — el relleno de prompts no puede forzar la rama ERROR. Esto elimina el problema de rechazo por arranque en frío sin debilitar la compuerta de seguridad.
Respaldo de Palabras Clave para Contenido Reservado
Cuando el clasificador LLM falla (tiempo de espera, inyección, presión de recursos), un piso determinista de regex captura vocabulario reservado (restricción, aislamiento, autolesión, suicidio, sobredosis, desescalada de crisis, etc.) incluyendo formas flexionadas y verbales. Bloquea ataques de relleno de prompts e inyección de clasificador en la ruta ERROR.
Texto de Seguridad de Fuente Única
La declaración de seguridad en el campo instructions del servidor MCP ahora importa desde boundaries.ts — una fuente de verdad en lugar de dos copias mantenidas a mano. La versión de límites se actualizó a v3 con una decisión de entrega explícita documentada en el código.
Compuerta de Seguridad de Categorías Reservadas — Todos los Niveles (v20.0.2)
El clasificador semántico de Capa 1 ahora se ejecuta para cada usuario, no solo niveles de pago. El contenido clínico reservado se rechaza en el nivel gratuito cuando la nube no está disponible — cierre ante fallos.
Deduplicación de Libro Mayor (v20.0.2)
session_save_ledger deduplica entradas idénticas dentro de una ventana de 5 minutos.
Script de Evidencia (v20.0.2)
scripts/generate-evidence.sh regenera los 5 archivos de evidencia con aserciones integradas. Ejecuta bash scripts/generate-evidence.sh para verificar el pipeline completo.
Novedades en v20.0.0
Licencia: AGPL-3.0 → Apache-2.0
Prism MCP ahora es Apache-2.0. La arquitectura de cliente delgado significa que todo el valor propietario (resolución de skills, compuertas de nivel, facturación, inferencia en la nube) vive en el lado del servidor — el cliente abierto no lleva ningún foso que proteger. Apache-2.0 elimina la fricción de adopción empresarial que causaba AGPL.
Arquitectura de Cliente Delgado
El enrutamiento de skills, la gestión de presupuesto y la resolución de contenido se han movido al lado del servidor en el portal Synalux. El cliente MCP ahora es un llamador de API delgado — más simple, más pequeño y portátil en cualquier host (Claude Code, Gemini, Cursor, scripts autónomos). El respaldo sin conexión lee la última respuesta exitosa de SQLite local.
Adaptador Voyage AI de Sala Limpia
El adaptador de embeddings Voyage AI fue reimplementado de forma independiente desde los docs de la API de Voyage para asegurar copyright 100% propiedad del proyecto. El modelo predeterminado se actualizó a voyage-3.5. Ver PROVENANCE.md para detalles.
Detección de Deriva en el Lado del Servidor
La detección de deriva de sesión (GATE 5) ya no requiere hooks de Claude Code. El temporizador se ejecuta en el lado del servidor por conversación, aprovechando cada respuesta de herramienta MCP. Funciona para cualquier host.
Requisito de CLA
Las contribuciones externas ahora requieren firmar el CLA Individual. La verificación de CLA bloquea fusiones en la rama main.
Inicio Rápido
El nivel gratuito no necesita cuenta, ni clave API, ni nube. Instala Prism, luego regístralo con cada host MCP compatible ya instalado en tu máquina:
npm install --global prism-mcp-server
prism connect
prism connect detecta Claude Code, Claude Desktop (macOS/Windows/Linux), Cursor,
Gemini CLI y Codex.
Usa prism connect --all para apuntar a los cinco, --host <name> para un solo host, o
--dry-run para previsualizar los archivos que cambiarían. Las entradas existentes de prism y
prism-mcp nunca se sobrescriben por defecto. --refresh actualiza solo
una entrada creada previamente por Prism; las entradas personalizadas permanecen intactas.
Para Claude Code, tanto el comando predeterminado como --refresh también eliminan la
entrada exacta heredada de npx -y prism-mcp-server a nivel de proyecto del
.mcp.json ancestro efectivo después de que el registro de usuario nativo tenga éxito. Ninguna
entrada de proyecto personalizada o de coincidencia cercana se modifica.
Cierra los hosts MCP objetivo antes de un registro que no sea de prueba en seco para que no puedan
editar su configuración al mismo tiempo.
La misma conexión instala el contrato de orquestación local-primero:
| Host | Contención gestionada |
|---|---|
| Codex | features.multi_agent=false; se conserva un perfil de respaldo Terra/low de 2 hilos y profundidad 1 para re-habilitación explícita |
| Gemini CLI | experimental.enableAgents=false |
| Claude Code | CLAUDE_CODE_SUBAGENT_MODEL=sonnet; las instrucciones gestionadas lo reservan como último recurso |
| Cursor | Política canónica entregada a través de instrucciones de inicialización MCP |
| Claude Desktop | Política canónica entregada a través de instrucciones de inicialización MCP |
Los cinco reciben PRISM_AGENT_POLICY=local-first en su entrada gestionada de Prism MCP.
Las tareas rutinarias usan el trabajador local consciente de RAM; la expansión nativa/en segundo plano
no es el flujo de trabajo predeterminado. session_task_route proporciona una pista de complejidad;
prism_infer sigue siendo el único propietario de la selección de modelo y pensamiento y puede
elegir 27B cuando sus compuertas de viabilidad lo respalden.
Establece PRISM_STORAGE antes de ejecutar prism connect para preservar una elección
explícita de almacenamiento en las entradas de host generadas. Esto no cambia el enrutamiento
de modelos locales; el almacenamiento en la nube de Synalux requiere por separado un derecho
activo de memoria en la nube.
El registro de Codex preserva contenido no relacionado de ~/.codex/config.toml, agrega
solo el bloque marcado de Prism MCP y actualiza solo las claves documentadas de
funciones/agentes local-primero. CODEX_HOME se respeta cuando se establece y debe existir
ya, coincidiendo con el propio contrato de Codex. Reinicia la CLI de Codex, la
extensión del IDE o la aplicación de escritorio de ChatGPT después de conectar.
Reinicia el host conectado y tu agente ahora tiene memoria respaldada por una base
de datos SQLite local (~/.prism-mcp/data.db). Ver configuración del IDE
para configuración manual y rutas específicas del host.
Opcional — flota de modelos local para enrutamiento de herramientas sin conexión. Descarga el que se ajuste a tu hardware:
ollama pull dcostenco/prism-coder:2b # 3.3 GB · on-device / lowest RAM · sees images (100% on our routing suite)
ollama pull dcostenco/prism-coder:4b # 3.5 GB · verifier · sees images (100%)
ollama pull dcostenco/prism-coder:9b # 6.7 GB · default router · sees images (95.7%, reasons before answering)
ollama pull dcostenco/prism-coder:27b # 16.8 GB · complex code / quality · text only (100%)
Prism detecta automáticamente tanto las etiquetas de Ollama con espacio de nombres (dcostenco/prism-coder:9b) como las simples (prism-coder:9b).
Los niveles 2b/4b/9b llevan una torre de visión y aceptan capturas de pantalla a través de
prism_infer({ images: [...] }) — pasa rutas absolutas o base64. Las solicitudes de
imagen se rechazan en lugar de responderse a ciegas cuando ningún nivel (o el clasificador
de seguridad de Capa 1) puede ver realmente la imagen, por lo que un modelo solo de texto nunca
recibe un prompt sobre una captura de pantalla que nunca recibió. El 27b es solo texto.
Qué hace
Tu agente de IA olvida todo entre sesiones. Prism arregla eso — y agrega verificación, detección de deriva y coordinación multi-agente encima.
Mind Palace — memoria persistente que sobrevive entre sesiones
Cada conversación alimenta un almacén persistente. La siguiente sesión carga el contexto correcto automáticamente — sin re-explicar.
El panel muestra el estado actual de tu proyecto, TODOs pendientes, salud de intenciones y un grafo de conocimiento neuronal — todo construido automáticamente desde tus sesiones de agente.
Se ejecuta en loopback y está protegido por un token local por defecto — ejecuta
prism dashboard para abrirlo sin iniciar sesión. Este paso de navegador local no es
un canje del plan Free.
Las solicitudes con un Host/Origin no confiable se rechazan, cerrando la exposición
de DNS-rebinding corregida en GHSA-9cvx-7x8q-3g6m. Ver docs/IDE_SETUP.md
para fijar el token, deshabilitarlo o configurar Basic Auth / JWKS.
Exportar — lee el registro fuera del agente
session_export_memory escribe tu memoria como archivos de texto plano que puedes leer,
comparar y confirmar. Nada pasa por un modelo para producirlo.
markdown human-readable — drop it in a PR to show what the agent actually did
json machine-readable — import into another Prism instance
vault zipped Markdown with YAML frontmatter and [[wikilinks]] (Obsidian, Logseq)
Esta es la superficie a la que recurrir cuando quieras responder "¿verificó el agente esto, o está afirmando que lo hizo?" — la exportación es un registro que revisas después del hecho, en una comparación o una solicitud de extracción, en lugar de una vista en vivo que tienes que ir a abrir. Los mismos datos están disponibles desde los botones Export ZIP y Export Vault del panel.
Grafo de Conocimiento — búsqueda semántica + palabras clave + grafo
Pregunta "¿qué decidí sobre el flujo de autenticación el mes pasado?" y obtén una respuesta con citas, combinando similitud vectorial, búsqueda de texto completo y recorrido de grafo.
Historial de Sesiones — rastro de auditoría inmutable
Cada sesión se registra con archivos cambiados, decisiones tomadas y TODOs. Busca, filtra y reproduce cualquier sesión pasada.
Métricas de Inferencia — ve a dónde van tus tokens
Cada llamada de prism_infer rastrea qué modelo la manejó (Ollama local vs nube) y cuántos tokens se consumieron. Cuando guardas una sesión, Prism muestra un resumen:
📊 Inference Metrics (this session):
Total calls: 12 — Local: 10 (83%) | Cloud: 2 (17%)
Prompt tokens: 7,840 evaluated / 8,420 submitted est.
Completion tokens: 3,150
Cloud tokens saved (est.): 11,570 — token volume handled locally instead of cloud
Avg latency: 1,240ms
By model:
prism-coder:27b: 6 calls, 7,200 tokens, avg 1,800ms
prism-coder:9b: 4 calls, 2,870 tokens, avg 620ms
synalux-27b: 2 calls, 1,500 tokens, avg 1,100ms
Cloud tokens saved es la métrica de enrutamiento honesta: solo se acumula cuando Ollama local maneja una llamada que de otro modo habría ido a la inferencia en la nube de Synalux. Una versión compacta aparece en línea después de cada 5.ª llamada a prism_infer: 📊 local 10 (83%) · cloud 2 (17%) · ~11,570 tok · avg 1,240ms · 11,570 cloud tok saved.
Las llamadas locales usan los recuentos reales de tokens de Ollama (prompt_eval_count / eval_count de Ollama); las llamadas en la nube usan estimaciones de char/4. Las métricas se rastrean localmente: sin dependencia del portal, sin variables de entorno, funciona sin conexión. Los datos por llamada también se reenvían al portal de Synalux como análisis de mejor esfuerzo (independiente de la visualización).
Detección de desviación de sesión
Las sesiones largas de agentes pueden alejarse de su objetivo original. session_detect_drift compara el trabajo actual con el objetivo declarado y devuelve on_track / minor_drift / major_drift para que el agente pueda autocorregirse.
Verificación de comportamiento: detecta ediciones incorrectas antes de que ocurran
Los agentes de IA aplican patrones de listas de verificación sin comprender el impacto en el mundo real. La herramienta verify_behavior desafía al agente con un escenario que debe responder antes de editar, lo que lo obliga a pensar en lo que experimentará el usuario final.
Agent: "I'll revert this kitchen display change"
Prism: "⚠️ Scenario: A cook sees a 3-item ticket. One item is voided.
What should the cook see after the void?"
Agent: "The ticket stays visible with the remaining 2 items."
Prism: "Correct — your revert would hide the ticket entirely."
17 dominios integrados (facturación, autenticación, pedidos, clínica, RR. HH. y más). Dominios personalizados por espacio de trabajo en Enterprise. No se necesitan hooks: funciona en cualquier cliente MCP.
Viaje en el tiempo
Revierte a cualquier estado de sesión anterior. Compara diferencias entre versiones. Restaura un estado conocido y bueno con un clic.
Enrutamiento cognitivo
Tres tipos de memoria, ordenados automáticamente: episódica (qué sucedió: registros de sesión, decisiones), semántica (qué es verdad: hechos, arquitectura) y procedimental (cómo hacer X: flujos de trabajo, patrones). Cuando buscas, el enrutador elige el almacén correcto en lugar de volcarlo todo.
Hivemind multiagente
Coordina múltiples agentes de IA que trabajan en el mismo proyecto. Cada agente tiene su propia sesión, pero comparten memoria a través del grafo de conocimiento. El Radar Hivemind muestra el estado, las tareas y la actividad de los agentes en tiempo real.
Búsqueda neuronal
Busca en todas las memorias con resultados resaltados, edición del grafo de conocimiento y métricas de densidad de memoria.
Local primero y privacidad
El nivel gratuito se ejecuta completamente en tu máquina. Los niveles de pago añaden sincronización en la nube a través del portal de Synalux, lo que permite la memoria entre dispositivos y el intercambio en equipo.
| Nivel local (gratuito) | Nivel en la nube (de pago) | |
|---|---|---|
| Almacenamiento de memoria | SQLite local | Portal de Synalux (respaldado por Supabase) |
| Inferencia | Modelos Ollama locales | Modelos locales + respaldo Gemini 3.6 Flash |
| Claves API requeridas | Ninguna | Clave de suscripción de Synalux |
| Búsqueda web / raspado | No incluido | A través del portal de Synalux (claves de proveedor en el servidor) |
| Lo que sale de tu máquina | Nada | Texto de memoria, rutas de archivo, consultas de búsqueda y avisos/borradores de inferencia cuando se usa su función en la nube, enviados al portal a través de TLS. Las escrituras de memoria en la nube tienen identificadores personales redactados; la inferencia y las solicitudes de ruta son transitorias. |
| Funciona sin conexión | ✅ | Funciones locales sí; sincronización/nube no |
Manejo de datos sensibles. Las escrituras de memoria en la nube pasan por una redacción automática (SSN, fechas de nacimiento, números de registro médico, números de teléfono, correos electrónicos e identificadores clínicos se eliminan antes del almacenamiento). La inferencia en la nube y la corrección de ruta envían la solicitud a través de TLS para su procesamiento y no la almacenan como memoria de Prism. El nivel local (sin clave de Synalux) es el aislamiento; route_guard: "local" solo omite la corrección de ruta, y cloud_fallback y verify gobiernan los otros dos canales.
Modelos
La flota prism-coder usa Qwen3.5 para el enrutamiento de herramientas MCP Y la inferencia general. Los 9B y 27B están ajustados; los 2B y 4B usan Qwen3.5-4B estándar en diferentes niveles de cuantización. El 27B obtuvo un 100% en nuestra suite interna de 115 casos de enrutamiento de herramientas y un 100% en una evaluación interna de 15 problemas de codificación, a un costo de inferencia de $0. Estas son evaluaciones autoejecutadas, no envíos a la tabla de clasificación BFCL.
prism_infer admite tres modos: route (enrutamiento de herramientas, rápido), chat (conversación) y code (generación de código). El razonamiento lo decide el nivel, no el modo: un nivel que lleva MODEL_TIERS.prefersThinking también lleva un piso de minLocalTokens para que el razonamiento no desplace a la respuesta, y solo esos niveles usan bloques <think> (eliminados antes de servir la respuesta). El 9B sí; el 4B y el 2B no, porque en esos niveles el razonamiento consumía el mismo presupuesto de num_predict que la respuesta necesitaba y devolvía una respuesta vacía. Un think: true explícito aún anula, para un llamador que ha dimensionado max_tokens para ello. Si el modelo local falla un control de calidad (vacío, solo pensamiento o truncado), los niveles de pago escalan automáticamente a Gemini 3.6 Flash a través del portal de Synalux.
Cada resultado en modo de ruta se analiza localmente y se verifica contra allowed_tools antes de llegar al host. Las llamadas malformadas o no anunciadas se convierten en NO_TOOL. Con route_guard: "auto" (el predeterminado), los planes Standard y superiores también envían un borrador bien formado para una de las siete herramientas entrenadas de Prism—o un borrador no anunciado que puede necesitar corrección—a Synalux para una corrección determinista autenticada. Las herramientas de host personalizadas anunciadas permanecen locales. route_guard: "local" desactiva solo esa corrección: el respaldo de inferencia en la nube se rige por cloud_fallback, y el verificador de fundamentos es un canal separado con su propio interruptor (verify, activado por defecto cuando se da evidence). Con los tres desactivados, ninguna solicitud lleva tu aviso, borrador o evidencia; la verificación de derecho y la telemetría aún contactan al portal y no llevan ninguno.
| Modelo | Etiqueta Ollama | Tamaño | Visión | Precisión de enrutamiento¹ | Rol | Nivel de enrutamiento automático |
|---|---|---|---|---|---|---|
| Qwen3.5-4B Q4_K_S | prism-coder:2b | 3.3 GB | ✅ | 100% | En dispositivo / RAM más baja (4.5 GiB libres) | Gratuito |
| Qwen3.5-4B Q4_K_M | prism-coder:4b | 3.5 GB | ✅ | 100% | Verificador (5.2 GiB libres) | Gratuito |
| Qwen3.5-9B (LoRA) | prism-coder:9b | 6.7 GB | ✅ | 95.7%² | Enrutador predeterminado / caballo de batalla (9 GiB libres) | Gratuito |
| Qwen3.5-27B (LoRA) | prism-coder:27b | 16.8 GB | — | 100% | Código complejo / calidad (21 GiB libres) | Gratuito |
¹ Autoejecutado en una suite estrecha de 115 casos de selección de herramientas MCP, temperature: 0, medido a través de la ruta de llamada que prism_infer realmente usa (/api/chat, la plantilla de cada modelo). Dice que estos modelos eligen la herramienta correcta en nuestra propia evaluación, nada más: no es una medida de capacidad general, ni un resultado de referencia independiente. Revisiones anteriores de esta tabla citaban 99.1–100% de un arnés que improvisaba un aviso ChatML con raw: true, omitiendo la plantilla; esos números describían una ruta que ningún llamador ejercita. Advertencias completas de metodología a continuación.
² El 9B es el único nivel que razona antes de responder, y se mide con el razonamiento habilitado: 95.7% con pensamiento, 83.5% sin él. prism_infer establece esto por nivel (MODEL_TIERS.prefersThinking), por lo que los llamadores obtienen la ruta del 95.7% por defecto. El razonamiento cuesta aproximadamente 600 tokens, por lo que el 9B también lleva un piso local de 2,048 tokens.
Visión. Las etiquetas 2B/4B/9B incluyen una capa projector separada (0.68–0.92 GB) y leen imágenes; el 27B es solo texto. prism_infer sondea esa capa y omite un nivel sin visión en lugar de enviarle una imagen: si se le pregunta directamente, un modelo solo de texto aún responderá con confianza sobre píxeles que nunca recibió. Ejercitado contra los modelos reales en tests/integration/visionScreenshot.test.ts.
Estos niveles controlan la selección automática de prism_infer, no a Ollama en sí. Cualquier usuario puede ejecutar cualquier modelo descargado en el dispositivo directamente a través de Ollama en todos los planes.
Pesos: huggingface.co/dcostenco (GGUF público). La latencia depende del tamaño del modelo y el hardware: consulta Benchmarks para medirlo en tu propia máquina en lugar de confiar en un número impreso.
Cascada
query → prism-coder:9b (local router, default)
→ prism-coder:4b (grounding verifier)
→ prism-coder:2b (iPhone / mobile, auto-selected by RAM)
→ prism-coder:27b (complex tasks, on demand)
→ Gemini 3.6 Flash cloud fallback (paid tiers, for max quality)
Verificación multicapa
La salida de ruta y las respuestas fundamentadas en evidencia usan compuertas separadas. Cada nivel obtiene el analizador de ruta local y el registro de herramientas anunciadas; los planes Standard y superiores pueden agregar la corrección de ruta determinista privada. La verificación de evidencia es opcional (o automática cuando se proporciona evidencia) y permanece separada de la selección de ruta.
| Capa | Qué | Modelo | Costo |
|---|---|---|---|
| L1 | Compuerta de seguridad de crisis/médica | Ninguno (regex) | 0 ms |
| L3-Registro | Validación de envolvente + aplicación de herramientas anunciadas (todos los niveles) | Ninguno | 0 ms |
| L3-Ruta | Corrección de ruta determinista autenticada (Standard+) | Ninguno | Latencia de red |
| L3-Tier0 | Fundamentación entera (pertenencia a conjunto) | Ninguno (determinista) | 0 ms |
| L3-Tier2 | Verificador NLI (afirmación → ENTAILED/NEUTRAL/CONTRADICTED) | prism-coder:2b | ~200 ms |
| L4 | Juez de alucinaciones (opt-out para clínica) | prism-coder:4b | ~500 ms |
Cierre por fallo en la ruta verificada: cuando el verificador de fundamentos se ejecuta, el tiempo de espera, la ambigüedad o la evidencia faltante producen una negativa, no un paso directo. Si la corrección de ruta de pago no está disponible, el registro local aún bloquea llamadas malformadas y no anunciadas e informa una ruta preservada permitida como degradada.
Benchmarks
Los números de benchmark publicados son resúmenes concisos de evaluación determinista interna. Los evaluadores, los casos exhaustivos, las matrices exactas de enrutamiento de niveles y las salidas de modelo sin procesar permanecen en el repositorio de ingeniería privado y no se incluyen en el paquete npm ni en el árbol de código fuente público.
Evaluación de enrutamiento. En una suite estrecha de selección de herramientas, la flota logró resultados casi saturados en tres semillas. Esto mide la confiabilidad del enrutamiento MCP sin conexión, no la capacidad general del modelo.
| Modelo | Precisión de enrutamiento | Notas |
|---|---|---|
| prism-coder:2b (Q4_K_S) | 100% | El 2B fue recuantizado cuando se lanzó la visión; el antiguo 99.1% era Q3_K_M |
| prism-coder:4b | 100% | |
| prism-coder:9b | 95.7% con razonamiento | 83.5% sin él: el único nivel donde esto difiere |
| prism-coder:27b | 100% | |
| Claude (frontera, misma evaluación) | ~98% | Más fuerte en todos los demás fuera de esta tarea estrecha |
Medido a través de /api/chat con la plantilla de cada modelo: la ruta que prism_infer usa. temperature: 0, por lo que las tres semillas solo reordenan el orden de los casos y no pueden discrepar; revisiones anteriores citaban ese acuerdo como confirmación, lo que nunca fue.
Mejora de memoria (LoCoMo-Plus, autopublicado). Un benchmark separado de diálogo de contexto largo (dcostenco/Locomo-Plus) mide cuánto ayuda la memoria estructurada a un modelo base a retener contexto de varios días. Los resultados muestran grandes ganancias cuando un modelo se combina con la memoria de Prism en lugar de ejecutarse sin procesar. Ten en cuenta que este benchmark está escrito, ejecutado y juzgado por LLM por este proyecto: trátalo como una demostración reproducible, no como un resultado independiente de terceros, y ejecútalo tú mismo con los comandos en ese repositorio.
Evaluación de generación de código. En una pequeña verificación de ejecución determinista de julio de 2026, el 9B local pasó 2/3 tareas; el 27B local y Gemini 3.6 Flash pasaron 3/3 cada uno. Esta es una señal de regresión autopublicada, no una tabla de clasificación independiente ni una afirmación de equivalencia amplia de modelos.
Escalada en la nube (cloud_fallback)
Prism siempre intenta primero un modelo local elegible. Si el control de calidad detecta una respuesta vacía, truncada, solo de pensamiento o en bucle, o la pantalla de seguridad encuentra la solicitud incierta o reservada, un plan de pago escala la solicitud a través de Gemini 3.6 Flash. El enrutamiento del nivel gratuito permanece local e informa el resultado sin hacer una llamada en la nube.
La bandera sigue al plan. Déjala sin configurar y tu plan decide: los planes de pago escalan, los planes gratuitos nunca lo hacen. Pasa false para prohibir el respaldo de inferencia en la nube para una llamada, lo que las reglas de delegación clínica hacen para redactar; pasa true para solicitarlo, lo que aún requiere un plan con nube. Una solicitud que lleva una imagen nunca se escala; las capturas de pantalla permanecen en este dispositivo.
Por qué Prism Coder
Tus datos locales permanecen en tu dispositivo. La memoria, los modelos locales y la verificación de respuestas se ejecutan en tu máquina, sin necesidad de cuenta. Los datos salen de ella solo cuando activas una función en la nube, y entonces solo lo que esa función necesita; consulta Local-first y privacidad.
- Gratis sin cuenta, sin límite en el tamaño del modelo local.
- Memoria y modelos en un solo servidor MCP: memoria persistente, un grafo de conocimiento y enrutamiento automático a modelos locales de Ollama, con respuestas en la nube solo cuando tu plan y configuración lo permiten.
- Respuestas verificadas: una respuesta local de múltiples turnos se verifica en tu dispositivo antes de entregarse.
Cómo se compara
Precios de la página de precios de cada proveedor, consultados el 2026-09-26. Los planes cambian a menudo; sigue los enlaces para conocer los términos actuales. La tabla compara solo los planes publicados; no es una afirmación de que un producto carezca de una función no listada.
| Producto | Qué es | Gratis | Individual | Equipo, por asiento |
|---|---|---|---|---|
| Prism Coder | Memoria local y enrutamiento de modelos (MCP), nube opcional | Todo local, sin cuenta | Pro $15/mes | $20, mínimo 2 asientos |
| GitHub Copilot | Asistente de codificación | Limitado | Pro $10, Pro+ $39, Max $100 | Business $19, Enterprise $39 |
| Cursor | Editor de código con IA | Hobby, limitado | Pro $20 | Teams $40 |
| Windsurf | Editor de código con IA | Plan gratuito | Pro $20, Max $200 | Teams $40 |
| Claude | Asistente; Claude Code desde Pro | Gratis (sin Claude Code) | Pro $20, Max desde $100 | Team $25 ($20 facturado anualmente) |
| Amazon Q Developer | Asistente de codificación | 50 solicitudes de agente al mes | Pro $19 por usuario | -- |
| Ollama | Entorno de ejecución de modelos locales, modelos en la nube | Modelos locales, créditos iniciales en la nube | Pro $20 ($60 de créditos en la nube), Max $100 | Team $500/mes, usuarios ilimitados |
| Mem0 | API de memoria | 10,000 adiciones, 1,000 recuperaciones al mes | Starter $19; memoria de grafo desde Pro $249 | -- |
| Supermemory | API de memoria | $5 de créditos al mes | Pro $19 (3 asientos), Max $100 | -- |
| Zep | Memoria (grafo de conocimiento) | 10,000 créditos al mes | Flex $125 | -- |
| Pieces | Memoria de desarrollador en el dispositivo | Ninguno (prueba de 7 días) | Pro $18.99 | Enterprise $22.99 |
| MemPalace | Memoria local de código abierto (MIT) | Gratis | -- | -- |
Planes
Todo lo que se ejecuta en tu máquina es gratuito, sin cuenta y sin límite en el modelo local. Una cuenta gratuita de Synalux añade lo que necesita Synalux; Pro y Team añaden funciones en la nube y límites más altos.
| Gratis (sin cuenta) | Cuenta gratuita | Pro $15/mes | Team $20/asiento/mes | |
|---|---|---|---|---|
Modelos locales vía Ollama (enrutamiento automático prism_infer) | hasta 27b | hasta 27b | hasta 27b | hasta 27b |
| Memoria local, grafo de conocimiento, panel, herramientas MCP | ✅ | ✅ | ✅ | ✅ |
prism_infer de múltiples turnos, con verificación de respuesta en el dispositivo | -- | 12 turnos / 32k caracteres | 12 turnos / 32k caracteres | 20 turnos / 64k caracteres |
| Respuestas en la nube (Gemini 3.6 Flash; conversaciones de cuenta gratuita: 3.5 Flash-Lite) | -- | 20/día | 1,000/mes (500 en la prueba; máx. 200/día) | 1,500/mes por asiento (máx. 200/día) |
| Confirmación en la nube de una respuesta local (sobre una copia seudonimizada) | -- | -- | ✅ | ✅ |
| Verificador de fundamentación (verifica la salida de IA; cuenta como respuesta en la nube) | -- | -- | ✅ | ✅ |
| Búsqueda en la nube | -- | -- | 1,000/mes (máx. 150/día) | 1,500/mes por asiento (máx. 150/día) |
| Sincronización de memoria (nube) | -- | -- | ✅ | ✅ |
| Biblioteca completa de habilidades, superhabilidades, enrutamiento de agentes, habilidades de cuenta y equipo | -- | -- | ✅ | ✅ |
| Asientos | 1 | 1 | 1 | 2 o más |
Pro comienza con una prueba de 14 días. No se requiere tarjeta para comenzar; añade los datos de pago antes de que termine la prueba para continuar, o la suscripción se cancela automáticamente y Prism Free permanece disponible. Consulta la fecha límite exacta en ⚙ Cuenta y Configuración → Cuenta en prism dashboard. Una confirmación en la nube cuenta como una de las respuestas en la nube del día. Para iniciar un plan Team: contacta con ventas.
Cómo lo usan los agentes
Prism expone más de 40 herramientas MCP. El bucle de memoria central:
| Herramienta | Qué hace |
|---|---|
session_bootstrap | Saludo de primer turno sin hooks y contexto configurado desde el panel |
session_load_context | Recarga explícita del proyecto o respaldo de inicio para servidores antiguos |
session_save_ledger | Añade una entrada de registro de sesión inmutable |
session_save_handoff | Guarda el estado en vivo para la próxima sesión |
knowledge_search | Búsqueda semántica + por palabras clave en todas las memorias |
query_memory_natural | Preguntas y respuestas con prioridad a la memoria y respaldo fundamentado en fuentes en vivo en niveles de pago |
session_detect_drift | Detecta cuando una sesión se ha desviado de su objetivo |
verify_behavior | Desafío de escenario previo a la edición: detecta cambios malos antes de que ocurran |
knowledge_ingest | Enseña a Prism un código o documento |
prism_infer | Inferencia local primero (modos de enrutamiento/chat/código, pensamiento, escalada a la nube) |
inference_metrics | Delegación de sesión o estadísticas locales/nube del panel MCP + VS Code persistidas |
local_savings | Volumen de tokens servidos localmente mantenido fuera de tu modelo en la nube, todo el tiempo / 30 días / sesión |
query_memory_natural — memoria primero, fuentes actuales cuando sea necesario
Haz una pregunta en lenguaje natural en lugar de elegir herramientas separadas de memoria, búsqueda, extracción e inferencia. Prism busca primero en su memoria acumulada del proyecto. Si no existe evidencia útil, los niveles de pago ejecutan una búsqueda limitada de Synalux (Firecrawl, fundamentación de Google Search con Gemini 3.6, luego respaldo heredado de Brave), resuelven y conservan las URL de las fuentes, extraen la página principal y piden a un modelo local Prism Coder seguro para RAM que responda desde esa evidencia. El verificador Gemini 3.6 de nivel de pago comprueba el borrador antes de entregarlo. El contenido clínico reservado o incierto nunca entra en la ruta local fundamentada en la web; sigue el límite de seguridad de nube-o-rechazo de Prism.
prism_infer — inferencia local primero con escalada a la nube
prism_infer({
prompt: "Write a binary search in Python",
mode: "code", // "route" | "chat" | "code"
think: true, // enable <think> reasoning (default: true for chat/code)
model_ceiling: "27b", // use the quality tier
})
// → 27B generates code locally ($0), with thinking for quality
// → If quality gate fails + paid tier → auto-escalate to Gemini 3.6 Flash
// Follow-ups carry the conversation (paid plans). The host curates the turns;
// Prism bounds them to your plan's caps (user+assistant text only), safety-
// screens every turn (each alone, then each in context; a short routine
// request skips its own model read), counts them against
// the tier's context, and never stores them. A free plan or a host with no
// portal is refused: multi_turn_not_in_plan.
prism_infer({
messages: [
{ role: "user", content: "Write a binary search in Python" },
{ role: "assistant", content: "<the accepted answer>" },
],
prompt: "Now make it return the insertion point when the value is absent",
mode: "code",
})
Múltiples turnos: por qué importa y por qué es una función de pago
Una sola llamada prism_infer no tiene memoria. El host hace una pregunta, el modelo local responde, y la siguiente llamada comienza desde cero: "ahora añádele un tiempo de espera" no significa nada para un modelo que nunca vio "eso". Sin historial, el host o bien reformula todo el contexto en cada prompt (tokens, y la respuesta se desvía) o abandona la delegación local y hace el seguimiento él mismo en la nube. Con messages, el host devuelve los turnos que aceptó y el modelo local continúa el hilo a $0, que es lo que hace que la delegación local sea útil para trabajo real en lugar de fragmentos de una sola vez.
Es de pago porque no puede ejecutarse sin Synalux detrás:
- Los límites los sirve el portal, según el plan. Cuántos turnos y cuántos caracteres puede llevar una conversación es un derecho que devuelve tu plan, no un número que decide el cliente. Sin portal, sin política, y la llamada se rechaza como
multi_turn_not_in_plan. - Los turnos ambiguos van a la nube de Synalux. Cada turno se examina por seguridad en el dispositivo, solo y en contexto. Un turno que el examen encuentra incierto nunca lo sirve el modelo local; va a la nube cuando el plan lo permite, y se rechaza en caso contrario. Gratis no tiene nube, así que la única respuesta honesta para gratis es no tener historial en absoluto.
- No se almacena nada. Prism limita, examina, cuenta y reenvía los turnos que envía el host, y no conserva ninguno.
Sin múltiples turnos (plan gratuito, o sin `messages`): cada llamada comienza en frío
// Call 1
prism_infer({ prompt: "My project codename is Nightjar. Reply OK.", mode: "chat" })
// → "OK" (local model, $0)
// Call 2 — the model never saw call 1
prism_infer({ prompt: "What is my codename? One word.", mode: "chat" })
// → "I don't have that information." (local model, correct and useless)
// Call 3 — a coding follow-up with no thread
prism_infer({ prompt: "Now add a timeout parameter to it.", mode: "code" })
// → guesses what "it" is, or asks (the host has to redo the work)
// A free plan that sends messages anyway:
prism_infer({ messages: [/* … */], prompt: "…" })
// → refused: multi_turn_not_in_plan (no portal entitlement, no cloud)
Con múltiples turnos (plan de pago): el hilo continúa localmente, y el examen decide por turno
// The host keeps the turns it accepted and passes them back.
prism_infer({
messages: [
{ role: "user", content: "My project codename is Nightjar. Reply OK." },
{ role: "assistant", content: "OK" },
],
prompt: "What is my codename? One word.",
mode: "chat",
})
// → "Nightjar" (local model, $0; history_turns: 2)
prism_infer({
messages: [
{ role: "user", content: "We named the helper countActiveUsers(data). Confirm." },
{ role: "assistant", content: "Confirmed." },
],
prompt: "Write the one-line call that stores its result in n.",
mode: "code",
})
// → "n = countActiveUsers(data)" (local model, $0)
// A turn the on-device screen finds uncertain, alone or in context, is not
// served locally: it goes to Synalux cloud on a paid plan, or is refused with
// cloud_fallback: false. The result names the reason (layer1_uncertain) so
// the host can decide what to do with the thread.
prism_infer({
messages: [
{ role: "user", content: "The ticket for this bug is SYN-4471. Acknowledge." },
{ role: "assistant", content: "Acknowledged." },
],
prompt: "Which ticket is this bug filed under?",
cloud_fallback: true,
})
// → "SYN-4471" (Gemini 3.6 Flash; used_cloud: true)
Medido el 20.21.14 a través del manejador real, en el 9b local con la nube desactivada:
- Cada seguimiento benigno que llegó al 9b local con su conversación adjunta se respondió correctamente. Sin la conversación, la mayoría de las respuestas fueron inventadas.
- El examen en el dispositivo aún rechaza demasiados seguimientos benignos: 11 de 26 en nuestras pruebas. Cada rechazo nombra su razón. Reducir estos rechazos falsos es el trabajo actual.
- Cada sonda reservada de múltiples turnos fue rechazada antes de cualquier generación (11 de 11).
| Modo | Pensar | Modelo | Caso de uso |
|---|---|---|---|
route | Desactivado (rápido) — excepto un nivel que razona mejor, p. ej. 9B | 9B predeterminado | Enrutamiento de herramientas MCP |
chat | Por nivel: activado para 9B, desactivado para 4B/2B | 27B preferido | Conversación, razonamiento |
code | Por nivel: activado para 9B, desactivado para 4B/2B | 27B preferido | Generación de código, depuración |
Pensar es una propiedad de nivel, no de modo. Los niveles con prefersThinking también declaran un piso de minLocalTokens que reserva presupuesto para la respuesta; los niveles sin él gastan toda la asignación de num_predict dentro de <think> y no devuelven nada. Pasa think explícitamente para anular en cualquier dirección.
Las firmas completas de TypeScript viven en src/tools/; la arquitectura en docs/ARCHITECTURE.md.
inference_metrics — ve tu uso de modelos locales bajo demanda
Llama a inference_metrics en cualquier momento a mitad de sesión para ver cuántas llamadas prism_infer se ejecutaron localmente frente a la nube. Usa period: "all" para importar atómicamente el spool del panel de VS Code de Synalux e incluir su tasa de servicio local en los totales persistidos:
📊 Inference Metrics — local-model delegation (this session):
Total calls: 5 — Local: 5 (100%) | Cloud: 0 (0%)
Tokens: 1,240 in + 380 out = 1,620 total
Avg latency: 420ms
By model:
prism-coder:27b: 3 calls, 1,100 tokens, avg 520ms
prism-coder:9b: 2 calls, 520 tokens, avg 270ms
El mismo bloque también aparece automáticamente en las respuestas de session_save_ledger y session_save_handoff al final de la sesión.
Nota: La vista de sesión predeterminada rastrea la delegación prism_infer de este proceso MCP. La vista de todo el tiempo combina llamadas MCP persistidas con inferencia del panel de VS Code de Synalux. Ninguna vista incluye el gasto de tokens propio del agente host; usa el informe de uso nativo de ese host cuando esté disponible.
local_savings — qué desplazó realmente el servicio local
inference_metrics informa contadores brutos. local_savings responde la pregunta detrás de ellos: cuánto trabajo nunca llegó a tu modelo en la nube. Llama a la herramienta en cualquier host, o ejecuta prism savings desde una terminal — --period all|month|week|session, --days N para cualquier ventana personalizada (p. ej. --days 90 para un trimestre), y --json para salida legible por máquina:
💾 Local serving — LAST 30 DAYS (2026-08-02 → 2026-08-26)
~510K tokens kept off your cloud model
53 call(s) served locally of 58 routed (91%)
Breakdown: 461,400 prompt + 48,400 completion
By model:
prism-coder:9b: 41 call(s), ~505K tokens
prism-coder:4b: 12 call(s), ~4.8K tokens
Follow-ups with your conversation:
12 answered locally (12 by the 9b) · 2 refused by the on-device screen · 0 sent to cloud
Refusals by stage: follow-up alone 1 · turns together 1
Counts tokens a local model handled instead of your cloud model. On the token
axis, the token count is measured — a floor, with known undercounts listed
when present. On the displacement axis, prism cannot observe the call your
host would have made, so whether all of it would have hit the cloud is an
assumption. Read it as: at most this much displacement, of at least this
token volume.
Caveats:
· 12 local call(s) hit the KV cache, so Ollama reported 0 prompt tokens for
context that was really submitted — prompt tokens are undercounted.
· 3 refused call(s) excluded — nothing was served, so nothing was displaced.
Por qué tokens y no dinero. Prism informa volumen de tokens y nunca una cifra en dólares, porque no puede producir una honestamente: las tarifas publicadas cambian y una tabla de precios incluida sería incorrecta con el tiempo; prism nunca observa qué modelo habría usado tu host, y esa sola elección es una diferencia de múltiples veces en los mismos tokens; y la mayoría de los usuarios están en planes planos donde una cifra en moneda no significa nada. Los tokens son la única unidad que prism midió por sí mismo. Si conoces tu propia tarifa efectiva, multiplica — la división se imprime exactamente por esa razón.
Seguimientos. Las llamadas que llevaron tu conversación (messages) tienen su propia línea:
- cuántas respondió el modelo local, y cuántas de esas respondió el 9b;
- cuántas rechazó el examen en el dispositivo, y en qué etapa (el seguimiento leído solo, un turno anterior leído solo, o los turnos leídos juntos);
- cuántas fueron a la nube.
Un seguimiento rechazado volvió a tu host en lugar de responderse localmente, así que esta línea muestra cuánto de tu trabajo de seguimiento tomó realmente el servicio local. Los rechazos porque tu plan no incluye historial de múltiples turnos, o el historial supera su límite, se cuentan en su propia línea. Se registran solo cuando el host solicita un informe (escalation: "report"); de lo contrario, fallan antes de que se registre nada. La línea aparece para las vistas week, month, all y --days, que leen el libro mayor duradero.
Las llamadas rechazadas quedan excluidas, la cuota de uso compartido del panel de VS Code se divulga por separado, y las fuentes conocidas de subconteo se enumeran en línea en lugar de dejarse implícitas — por lo que el titular duradero (week/month/all/--days) es un piso medido, no un número que simplemente parece preciso. Las cifras son por máquina: cada máquina reporta su propio registro local.
Resumen de equipo (de pago). En los planes de pago, prism savings --sync-enable habilita esta máquina para la sincronización de ahorros: una vez por sesión, prism sube contadores diarios — recuentos de llamadas y totales de tokens, nunca prompts, completaciones, nombres de proyectos ni salida del modelo (la carga útil es un conjunto cerrado de campos; el servidor rechaza cualquier otra cosa). prism savings --team (o la herramienta local_savings con scope: "team") muestra entonces el resumen en tu espacio de trabajo: total de tokens mantenidos fuera de los modelos en la nube, participación por miembro, recuentos de dispositivos. Los miembros que no han optado por participar simplemente no se cuentan, por lo que la cifra del equipo es un piso. La sincronización está desactivada por defecto, --sync-disable la detiene, y la sincronización más profunda de contenido de sesión (traspasos) es un canal separado con cifrado de extremo a extremo — los dos no están unificados deliberadamente, porque un blob E2E no puede agregarse y un canal de contadores nunca debe transportar contenido. La vista session es la única excepción: en aciertos de caché KV estima los tokens de prompt enviados a partir del texto (el registro cuenta el 0 medido en su lugar), por lo que está marcada como (est.) y lo indica cada vez que ocurre.
Delegación a modelos locales (por defecto)
Prism enruta trabajo acotado elegible — clasificación masiva, extracción de campos, formato mecánico, generación de pruebas y tareas similares — a modelos locales de Ollama antes que a cualquier subagente nativo del host. El agente verifica gate_outcome, valida el resultado y continúa en el hilo actual del host cuando el trabajador local no está disponible, se niega o está degradado.
Pasa la memoria del proyecto cuando la subtarea depende de trabajo previo:
{
"prompt": "Generate the bounded regression-test cases.",
"project": "prism-mcp",
"context_depth": "standard",
"conversation_id": "<from session_bootstrap>",
"mode": "code",
"cloud_fallback": false,
"escalation": "report"
}
Omite context_depth para usar la configuración del panel. Desactiva el interruptor de Task Router del panel o establece PRISM_TASK_ROUTER_ENABLED=false para una exclusión explícita.
Salvaguardas:
- Local por defecto — se preserva una exclusión explícita del operador
- Nunca delega: código/texto que se envía al usuario, lógica de seguridad/protección, planificación/razonamiento, cualquier cosa donde una caída silenciosa de calidad no sea obvia
- Siempre verifica: comprueba
quality_gate_failedyused_cloudantes de confiar en la salida local
Cómo Prism sobrevive a la compactación de contexto
La ventana de contexto del LLM se trata como espacio temporal efímero; el estado duradero vive en el almacenamiento persistente (SQLite localmente, el portal en la nube). Cada sesión comienza con una llamada obligatoria sin argumentos a session_bootstrap, por lo que Prism aplica el proyecto del panel y la configuración rápida/estándar/profunda antes de que el agente escriba una respuesta. Cuando un proyecto supera un umbral (por defecto 50 entradas), session_compact_ledger resume las entradas antiguas en un resumen, archiva suavemente los originales y los enlaza en el grafo. Ver docs/COMPACTION.md
CLI
prism load <project> # load session context
prism save # save ledger + handoff
prism search <query> # search code across repos (exact / regex / symbol / semantic)
prism review <files...> # AI code review — security, performance, style
prism scan <files...> # security scan — secrets, licenses, Dockerfile
prism browser ... # persistent local browser testing and structured automation
prism push # push local SQLite to the cloud backend
prism register-models # alias dcostenco/prism-coder:* -> prism-coder:*
prism browser — pruebas de navegador local
El paquete npm incluye el ejecutor de navegador Python/Playwright de Prism; no se requiere una aplicación Prism Browser separada ni un DMG. Añade una CLI estable orientada a agentes alrededor de Playwright con perfiles nombrados reutilizables, sesiones de pipe/REPL de múltiples acciones, registros de auditoría locales redactados y scripts de precarga protegidos para aplicaciones locales. Usa el modo pipe o REPL cuando varias acciones deban compartir una sesión de página:
printf 'open http://127.0.0.1:3000\nwait-for #app\nread-dom #app\n' | \
prism browser --headless --local-only pipe
Las aplicaciones locales pueden cargar ayudantes de prueba repetibles previos a la navegación con --inject ./tests/browser-init.js. La inyección personalizada requiere --local-only; la navegación pública y las solicitudes que no sean de bucle local se rechazan en ese modo. Instala el runtime local una vez con pip3 install playwright playwright-stealth y python3 -m playwright install chromium.
Usa Playwright sin procesar para suites autorizadas que necesiten sus APIs completas de aserciones, trazado, fixtures y trabajadores paralelos. Usa prism browser cuando un agente de IA necesite una sesión de navegador local pequeña, persistente y auditable a través de una CLI consistente. Los parches de compatibilidad son de mejor esfuerzo; no son una garantía de evasión de CAPTCHA. Ver Pruebas locales de Prism Browser para la superficie de comandos, el modelo de seguridad y los casos de aceptación verificados.
prism search — búsqueda semántica de código
prism review — revisión de código con IA con comprobaciones de seguridad y privacidad
prism scan — escáner de seguridad para secretos, Dockerfiles, licencias
Compañeros
Prism funciona junto con estas herramientas — usa la que se ajuste a tu flujo de trabajo.
IDE web — Prism Coder
Abre synalux.ai/coder, inicia sesión, conecta GitHub e importa un repositorio al que puedas acceder. Selecciona una rama, abre un archivo, edítalo y guárdalo de vuelta en GitHub.
- Editor Monaco — múltiples pestañas, vista dividida, resaltado de sintaxis y atajos de teclado familiares de VS Code.
- Edición de GitHub — selección de rama, guardado de archivos, historial y protección de conflictos. Si un archivo cambia remotamente, un guardado conflictivo conserva tu borrador local para recuperación. Los renombrados binarios preservan los bytes y se admiten rutas Unicode.
- Modo Agente de IA — describe una tarea, revisa los cambios de archivo propuestos, aplica los cambios seleccionados y guarda en una rama de agente aislada. La reversión descarta esa rama y vuelve a tu trabajo anterior.
- Live Share — inicia una sesión y comparte su invitación con los miembros del repositorio para ediciones sincronizadas y cursores remotos etiquetados. La señalización de primera parte está habilitada en el IDE alojado.
- Node.js y terminal en el navegador — WebContainer ejecuta scripts de paquete y vistas previas cuando el navegador admite su runtime. El PTY de servidor opcional y el depurador de Node.js requieren un servidor de desarrollo conectado.
- Tareas y diagnósticos — un ejecutor de
tasks.jsony un panel de Problemas para diagnósticos de Monaco; las cadenas de interfaz localizadas están disponibles en 12 idiomas.
Sesión de producción, 8 de septiembre de 2026. Las siguientes capturas de pantalla se tomaron del IDE en vivo usando un repositorio de prueba privado. La sesión ejercitó importación/guardado de GitHub, recuperación de conflictos, renombrado binario, archivos Unicode, revisión/aplicación/guardado/reversión de Agente y texto y cursores de Live Share en ambas direcciones.
Revisa una propuesta de Agente antes de aplicarla. El diff a continuación propone una nueva función add(a, b). Los cambios seleccionados se aplicaron luego y el archivo exacto se guardó en la rama del agente; la reversión se comprobó después.

Conserva tu borrador cuando una edición remota entre en conflicto. La barra de estado informa el conflicto mientras la edición local no guardada permanece en el editor. La recuperación del borrador también se comprobó después de recargar.

Ve las ediciones y cursores de los colaboradores. El host recibe la edición y el cursor del invitado en la primera captura. El invitado recibe la edición de retorno y el cursor del host en la segunda. Estas capturas muestran dos pestañas de Safari usando la misma cuenta autorizada; las conexiones de usuario separado y entre dispositivos no se cubrieron en esta ejecución.


Requisitos de runtime. Se recomienda Chrome o Edge para la instalación de paquetes de WebContainer, pruebas y vistas previas; ver Soporte de navegador de WebContainer. La edición en Safari y los flujos de trabajo mostrados arriba se ejercitaron, pero la instalación de npm aún falló en esta sesión de Safari. Una edición exitosa no establece una ejecución de código exitosa. La ejecución de pruebas y verificación de tipos del Agente también depende del runtime. La IA en la nube requiere el plan aplicable y el servicio configurado; Ollama local requiere una conexión explícita.
Extensión de VS Code — Synalux
IA con memoria aumentada dentro de VS Code con funciones de gestión de práctica clínica. Instala desde el marketplace:
code --install-extension synalux-ai.synalux
Chat de IA, entrada de voz, generador de notas SOAP, colaboración en equipo y videollamadas — todo dentro de VS Code. Enruta a través de Ollama local por defecto; nube en niveles de pago.
Detalles de funciones
- IA: Participante de chat (
@synalux), pipeline multiagente, entrada de voz, cambio de modelo, 10 tonos - Clínico: Generador de notas SOAP, acceso basado en roles, firma de documentos
- Colaboración: Chat de equipo, MDs, videollamadas, tablero de clientes, constructor visual, DevContainers
- Privacidad: Ollama local por defecto.
preferLocal=trueintenta local primero.
Prism AAC
Aplicación de comunicación para usuarios no hablantes, impulsada por la flota prism-coder en el dispositivo para predicción de frases. macOS / iOS / web.
Ver github.com/dcostenco/prism-aac
Hooks de Git (Portátiles)
Hooks de seguridad pre-commit y pre-push que funcionan con cualquier editor, cualquier herramienta de IA y CLI directa. Sin dependencia de Claude Code.
# Install in all repos (one-time)
bash hooks/install.sh
# Or install manually in a single repo
cp hooks/pre-commit .git/hooks/pre-commit && chmod +x .git/hooks/pre-commit
cp hooks/pre-push .git/hooks/pre-push && chmod +x .git/hooks/pre-push
| Hook | Qué comprueba | Modo |
|---|---|---|
pre-commit | Código muerto, servicios huérfanos, código de andamiaje, autenticación faltante | PRECOMMIT_MODE=advisory|block|off |
pre-push | Auditoría de seguridad de 19 reglas (SSRF, inyección SQL, secretos, IDOR, etc.) | PREPUSH_MODE=advisory|block|off |
El modo por defecto es advisory (advertir pero permitir). Establece *_MODE=block para aplicación estricta. Los hooks buscan scripts de auditoría completos en el repositorio primero (hooks/lib/), luego el respaldo ~/.claude/hooks/, luego comprobaciones mínimas en línea.
Autoalojamiento (Empresa)
Ejecuta la pila completa de modelos en tu propio hardware — sin nube, soberanía total de datos.
Requisitos: Mac M2 Pro+ (48 GB recomendado) o Linux + GPU NVIDIA, más Ollama.
ollama pull dcostenco/prism-coder:9b # default router
export LOCAL_LLM_URL=http://localhost:11434
El enrutamiento autoalojado permanece local: 9b → 4b en escritorio/servidor y 2b en móvil/iPhone, con 27B disponible cuando está instalado y seguro para RAM. Los niveles de pago alojados por Synalux pueden usar Gemini 3.6 Flash como respaldo en la nube. Para iOS u otra máquina en la misma red, ejecuta OLLAMA_HOST=0.0.0.0 ollama serve y apunta LOCAL_LLM_URL a la IP del host.
Referencia de configuración
| Variable | Propósito | Por defecto |
|---|---|---|
PRISM_STORAGE | local / synalux / supabase / auto | auto |
PRISM_SYNALUX_API_KEY | Clave de portal de nivel de pago (synalux_sk_...) | -- (local si no se establece) |
LOCAL_LLM_URL | Endpoint de Ollama | http://localhost:11434 |
PRISM_FORCE_LOCAL | Forzar SQLite local independientemente de las credenciales | false |
TELEMETRY_WRITE_TOKEN | Token de analítica del portal (opcional — la visualización de métricas funciona sin él) | -- |
Sin variables establecidas, Prism se ejecuta completamente local. Con una suscripción activa de memoria en la nube, establece PRISM_SYNALUX_API_KEY (y deja PRISM_STORAGE=auto) para usar el backend de Synalux; un nivel gratuito confirmado por el portal permanece en SQLite local.
Pruebas
npm test # full suite (vitest) — 95 files, 2841 tests
npm test -- --coverage # coverage report
La cobertura abarca recuperación HRR, ingesta de conocimiento, la cascada de inferencia y el verificador de fundamentación, métricas de inferencia, lista blanca de telemetría, puerta de delegación, compactación, el selector de modelos y viajes de ida y vuelta de almacenamiento.
Migración: local a nube
Para mover el historial del nivel gratuito al portal de pago:
node scripts/migrate-local-to-portal.mjs --dry-run # preview, no network
PRISM_SYNALUX_API_KEY=synalux_sk_... \
node scripts/migrate-local-to-portal.mjs # push ledger + handoffs
Lee ~/.prism-mcp/data.db y hace POST de las entradas al portal. Las entradas del registro son de solo añadir y se deduplican en el servidor; los traspasos usan última escritura gana por proyecto. Re-ejecutar en la misma base de datos es seguro. Esta es una migración de una sola vez, no un demonio de sincronización — después, establece PRISM_STORAGE=synalux (o déjalo en auto).
Licencia y niveles
Este repositorio (el cliente MCP de Prism) está licenciado bajo Apache-2.0.
Gratis (sin cuenta)
| Función | Detalles |
|---|---|
| Inferencia local | El uso directo de Ollama no está restringido; el enrutamiento automático de prism_infer selecciona hasta 27B, en la medida que la memoria de tu máquina lo permita |
| Memoria de sesión | Sesiones persistentes, traspasos, registro — todo en SQLite local |
| Búsqueda de conocimiento | Búsqueda semántica en el historial de sesiones |
| Habilidades | Todas las habilidades disponibles localmente (ejecuta sync-skills.sh para poblarlas) |
| Detección de deriva | Recordatorios GATE 5 del lado del servidor |
Cuenta gratuita (inicio de sesión con Synalux, $0)
Todo lo incluido en Free, más:
| Característica | Detalles |
|---|---|
Conversaciones de múltiples turnos prism_infer | El historial de conversación se conserva entre llamadas; cada respuesta local se verifica en tu dispositivo antes de entregarse |
| Respuestas en la nube | 20 al día desde Gemini cuando una respuesta local no se puede usar: 3.5 Flash-Lite en una conversación, 3.6 Flash para una consulta individual |
Inicia sesión desde prism dashboard en Cuenta.
Pro ($15/mes) y Team ($20/asiento/mes, mínimo 2 asientos)
Todo lo incluido en la cuenta gratuita, más:
| Característica | Detalles |
|---|---|
| Respuestas en la nube | 1,000 al mes (Pro; 500 durante la prueba de 14 días) o 1,500 al mes por asiento (Team), máximo 200 al día, desde Gemini 3.6 Flash; una confirmación en la nube cuenta como una |
| Confirmación de respuesta | Una respuesta local que pasó la verificación en el dispositivo también es confirmada por Synalux, en una copia con nombres, fechas y otros identificadores reemplazados en tu dispositivo |
| Enrutamiento de habilidades | El portal resuelve qué habilidades cargar según tu proyecto y consulta |
| Memoria entre dispositivos | Sincronización en la nube de Supabase: las sesiones sobreviven entre máquinas |
| Verificador de fundamentación | Verificación NLI L3 en las salidas del modelo |
| Funciones de equipo | Hivemind multiagente, colaboración en el espacio de trabajo, habilidades de cuenta y de equipo |
Los niveles de pago añaden enrutamiento inteligente: el portal de Synalux determina qué habilidades son relevantes para tu proyecto y consulta actuales, para que tu agente obtenga experiencia de dominio (patrones de stripe, protocolos de entrenamiento, estándares clínicos) en lugar de cargar todo. Los usuarios gratuitos con el repositorio pueden ejecutar sync-skills.sh para poblar todas las habilidades localmente; el enrutamiento de pago añade selección consciente del proyecto y de la consulta.
- Las contribuciones requieren firmar el CLA.
- "Prism" y "Synalux" son nombres comerciales de Synalux LLC; la licencia Apache no otorga derechos de marca comercial (ver §6 de la licencia).
Cambio de licencia (v20)
A partir de esta versión, prism-mcp se vuelve a licenciar de AGPL-3.0 a Apache-2.0. Las versiones anteriores permanecen bajo AGPL-3.0. Las bifurcaciones existentes conservan todos los derechos recibidos bajo la licencia original.
| Producto | Licencia |
|---|---|
| prism-mcp-server (este repositorio) | Apache-2.0 |
| Extensión de VS Code (synalux-ai.synalux) | BSL-1.1 |
| Web IDE (synalux.ai/coder) | Términos de servicio de Synalux |
| Prism AAC | Apache-2.0 |
Este repositorio está licenciado bajo Apache-2.0. Las funciones en la nube (inferencia alojada, memoria entre dispositivos, funciones de equipo) son proporcionadas por el servicio en la nube de Synalux bajo términos separados.
© 2026 Synalux, LLC.