Prism Coder
Memória de sessão persistente para agentes de codificação de IA - recall local-first, detecção de drift e inferência no dispositivo.
Documentação
Prism Coder
Dê ao seu agente de IA uma memória que dura — e veja os tokens na nuvem que ele nunca precisou gastar. Sessões persistentes, grafo de conhecimento, roteamento de ferramentas offline e um medidor de economia auditável. Totalmente local e gratuito.
Prism Coder é um servidor MCP que dá ao Claude, Cursor e outras ferramentas de IA uma memória de longo prazo que sobrevive entre sessões. Ele vem com a família de modelos de pesos abertos prism-coder (2B–27B) para roteamento de ferramentas rápido e offline — sem necessidade de nuvem. E ele mantém a pontuação: cada chamada atendida localmente é medida, então o prism savings mostra o volume de tokens que nunca chegou ao seu modelo na nuvem — medido honestamente, em tokens.
Sem necessidade de conta. Sem chaves de API. Roda na sua máquina.
Uma assinatura paga adiciona sincronização na nuvem, níveis de modelo superiores e recursos de equipe pelo portal Synalux.
O que o Prism oferece
- Memória de sessão que sobrevive a reinicializações — retome projetos com notas de handoff, trabalhos recentes, TODOs abertos e contexto rápido, padrão ou profundo configurável.
- Inferência local-first — trabalhos limitados são roteados primeiro pelos modelos locais Ollama, com seleção automática 2B/4B/9B/27B com base nos modelos instalados, RAM disponível, ajuste de contexto e direitos da assinatura.
- Um medidor de economia que você pode auditar —
prism savings(ou a ferramentalocal_savingsde qualquer host) relata o volume de tokens que o atendimento local manteve fora do seu modelo na nuvem: manchete, participação local, detalhamento por modelo. Ele relata tokens, nunca um valor em dólar inventado, e imprime suas premissas e subcontagens conhecidas inline — um número que você pode verificar, não marketing. - Imposição de saída roteada — o modo de roteamento retorna apenas chamadas bem formadas para
ferramentas que o host realmente anunciou. Os planos Standard e superiores podem adicionar
correção determinística autenticada;
route_guard: "local"desativa apenas essa correção.cloud_fallback: falseproíbe o fallback de inferência na nuvem everify: false(semevidence) desativa o verificador de fundamentação. Com os três desativados, nenhuma solicitação carrega seu prompt, rascunho ou evidência; a verificação de direito por chamada e a telemetria ainda contatam o portal e não carregam nenhum deles. - Uma configuração para cada agente —
prism connectconfigura Claude Code, Claude Desktop, Cursor, Gemini CLI e Codex preservando configurações não relacionadas. - Habilidades cientes da assinatura — habilidades com direito são sincronizadas antes do host iniciar, com upgrades seguros, downgrades, preservação de conflitos e recuperação offline da última versão boa.
- Inicialização sem hooks — metadados MCP e instruções nativas solicitam o
contexto de inicialização do Prism sem exigir hooks de ciclo de vida ou um inicializador de propriedade do Prism.
Onde um host oferece hooks (Claude Code, Codex),
prism connectadiciona dois pequenos por cima: roteamento de prompt no meio da sessão e uma reinjeção pós-compactação do resumo do piso protegido. - Escalonamento seguro e observabilidade — os resultados da inferência são explícitos, o texto reservado permanece fail-closed (imagens clínicas são processadas localmente, nunca enviadas para a nuvem), e o uso local/nuvem é registrado para revisão.
Comece
npm install -g prism-mcp-server
prism connect
prism dashboard
Use prism connect --dry-run para visualizar as alterações, prism connect --all para
configurar cada host detectado, ou prism connect --refresh para reconciliar
as entradas gerenciadas pelo Prism após um upgrade. Reinicie o host após conectar.
prism dashboard abre o Mind Palace local atual sem login no Synalux.
O Prism funciona localmente sem conta, chave de API ou assinatura na nuvem. Adicione uma
assinatura Synalux quando quiser memória na nuvem, habilidades de nível pago ou recursos
de equipe.
Para verificar seu plano, abra ⚙ Conta e Configurações → Conta no painel. Usuários gratuitos veem Iniciar teste de 14 dias; usuários pagos veem Gerenciar assinatura. Durante um teste, o mesmo painel mostra o nível pago e a data exata de término. Nenhum cartão é necessário para começar. Adicione os dados de pagamento antes da data de término para continuar; se não fizer isso, a assinatura é cancelada e o Prism Free local permanece disponível. Você também pode comparar planos diretamente em synalux.ai/pricing#prism-plans.
Após algumas sessões, pergunte o que valeu a pena:
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%)
Seus números serão diferentes — é esse o ponto: ele relata o que sua máquina
realmente atendeu, não uma projeção. A anatomia completa do relatório e as regras de honestidade
por trás dele estão na
seção local_savings.
Instalar como plugin
O Prism também vem como plugin, que registra o servidor MCP e a habilidade de inicialização para você.
Ambos os hosts instalam direto deste repositório. Não há nada para hospedar e
nenhum servidor para executar: o catálogo é o arquivo .claude-plugin/marketplace.json
commitado aqui, e seu cliente o clona do 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
O plugin registra prism-mcp via npx -y prism-mcp-server. Se você já
configurou o Prism manualmente — prism connect escreve uma entrada mcp_servers.prism-mcp —
você tem esse servidor duas vezes sob uma chave. Instale o plugin ou
execute prism connect, não ambos.
O que prism connect muda sobre subagentes do host
connect direciona trabalhos limitados para prism_infer na sua máquina em vez de
agentes gerados pelo host. O que ele escreve difere por host, e ele não desativa subagentes
em todos os lugares — o Claude Code os mantém e é apontado para um modelo
econômico em vez disso. Os trabalhadores locais do Prism permanecem disponíveis via MCP em todos os casos.
| Host | Configuração escrita | Efeito |
|---|---|---|
| Claude Code | env.CLAUDE_CODE_SUBAGENT_MODEL = "sonnet" em ~/.claude/settings.json | Subagentes permanecem ativados, fixados em um modelo econômico. O fan-out é desencorajado por texto de política, não por configuração |
| Gemini CLI | experimental.enableAgents = false em ~/.gemini/settings.json | Subagentes desativados. O Gemini expõe um booleano, então é só isso que há para definir |
| Codex | features.multi_agent = false em $CODEX_HOME/config.toml (padrão ~/.codex), mais um fallback limitado: 2 threads, profundidade 1, modelo de subagente barato, limite de 900s | Subagentes desativados, com um perfil limitado por baixo para que uma reativação deliberada caia em algum lugar sensato |
Duas coisas que vale saber:
experimentalé o namespace do Gemini, não nosso. O Prism não está ativando nada experimental — ele escrevefalseem um sinalizador que o Gemini já define nesse caminho. Escrever em qualquer outro lugar não teria efeito.- Esse namespace é por definição temporário. Se o Gemini promover
enableAgentspara fora deexperimental, o Prism continua escrevendo o caminho antigo, o Gemini lê o novo, e os subagentes do host silenciosamente voltam a ligar. Nada gera erro e o arquivo de configurações ainda parece correto. Se você vir subagentes do host rodando enquantoenableAgentslêfalse, verifique se a chave mudou antes de assumir queconnectfalhou ao escrevê-la.
Ambas as escritas são idempotentes no sentido de que um host já configurado dessa forma
é deixado intocado — mas elas são reaplicadas a cada execução de prism connect,
não apenas em --refresh. Se você deliberadamente reativar subagentes do host, a próxima
connect os desativará novamente. Mantenha-os ativos não executando connect novamente,
ou reativando-os após cada execução.
Histórico de versões (opcional)
Novidades na v20.21.17
- Corrigido: a tela no dispositivo recusava algumas solicitações de codificação comuns. Com uma conta Synalux (gratuita incluída), agora ela lê cada solicitação por meio de uma política que o Synalux serve, fixada pelo seu SHA-256. Sem conta, ou com imagens anexadas, a tela permanece inalterada.
- Modo de rota
prism_infer: definaallow_parallel_callspara manter uma resposta que chama várias das ferramentas que você ofereceu emallowed_tools.
Novidades na v20.21.16
Conversas: verificadas no seu dispositivo e gratuitas com uma conta
- Uma resposta local a uma conversa é verificada no seu dispositivo antes de ser atendida. Se a verificação falhar ou não puder ser executada, a resposta vai para a nuvem quando seu plano e configurações permitirem, e é retida caso contrário.
- No Pro e Team, uma resposta local que passa também é confirmada pelo Synalux, em uma cópia pseudonimizada no seu dispositivo; o mapeamento permanece no seu dispositivo. Com uma imagem anexada, ou com a nuvem desativada, a resposta local verificada é atendida.
- Quando a tela no dispositivo 4b não tem certeza sobre uma conversa, a 9b a lê novamente antes que a conversa seja recusada ou enviada para a nuvem.
- Tudo local é gratuito sem conta e sem limite no tamanho do modelo local.
Uma conta Synalux gratuita adiciona
prism_infermulti-turno e 20 respostas na nuvem por dia. Pro ($15/mês) e Team ($20/assento/mês) são os próprios planos do Prism. - Pesquisa web opcional do You.com: defina
YDC_API_KEYpara ativaryoucom_web_search(contribuído por @mouse-value-add em #227). - Corrigido: o 2b e o 4b não respondem mais às próprias solicitações do Prism como roteador de ferramentas. Um prompt de sistema embutido nesses modelos transformava algumas respostas em chamadas de ferramentas e fazia a tela no dispositivo recusar algumas solicitações comuns.
Novidades na v20.21.15
Acompanhamentos: veja o que roda localmente e uma tela mais rigorosa quando o classificador está fora
local_savings(eprism savings) mostra uma linha para acompanhamentos, chamadas que carregaram sua conversa. Ela cobre quantas o modelo local respondeu (e quantas dessas a 9b respondeu), quantas a tela no dispositivo recusou e em qual estágio, quantas os limites de multi-turno do seu plano recusaram e quantas foram para a nuvem.- Uma resposta curta de chat ("16", "Sim") conta como resposta. Antes, o portão de qualidade a tratava como vazia, e um plano pago re-perguntava à nuvem.
- Quando o classificador no dispositivo falha em todas as leituras de um acompanhamento, o acompanhamento não é mais respondido apenas com uma verificação de palavra-chave. Ele vai para a nuvem se seu plano permitir, e é recusado caso contrário.
Novidades na v20.21.14
Habilidades carregam quando ajudam, e você pode ver por que carregaram
- Notificações de tarefas em segundo plano, relatórios de outros agentes e resumos de continuação não carregam mais habilidades no meio de uma tarefa, então uma palavra dentro do relatório de um agente não pode puxar regras não relacionadas.
- Colar a saída de inicialização do Prism em um prompt não carrega mais habilidades que por acaso compartilham uma palavra com ela.
- Tarefas que dizem precisar de ferramentas do host ou julgamento reservado permanecem com o host em vez de falhar no trabalhador local.
- Todo cabeçalho de habilidades roteadas termina com a versão da tabela de roteamento (por exemplo, "Tabela de roteamento v41."), para que um carregamento de habilidade passado possa ser verificado contra as regras exatas que o escolheram.
- Habilidades com gatilhos próprios agora carregam mesmo quando seu arquivo usa finais de linha do Windows
ou menciona
prompt_triggers:em sua descrição; antes, elas eram entregues, mas silenciosamente nunca carregadas.
Novidades na v20.21.13
Planos pagos e testes estão claros em Conta e Configurações
- Usuários gratuitos podem abrir a comparação de planos do Prism e iniciar um teste de 14 dias.
- Usuários em teste veem seu nível pago, data exata de término e a ação para adicionar dados de pagamento antes do cancelamento automático.
- Estados ativos e de recuperação de pagamento levam à ação de cobrança hospedada correta; uma verificação indisponível é rotulada em vez de ser apresentada como paga.
- O Prism Free local permanece disponível sem conta ou assinatura.
Novidades na v20.21.12
Vários hosts MCP mantêm um link de painel funcional
- Cada host Prism em execução agora registra seu painel local de forma independente.
prism dashboarde a mensagem de inicialização verificam os candidatos mais recentes e recorrem a um painel ativo mais antigo quando um host mais novo para.- A limpeza de instância não pode remover o registro de outro host, e a mensagem aberta preserva a conta vinculada e a descrição do plano.
Novidades na v20.21.11
Contas vinculadas persistem entre atualizações do painel
- Um processo host com uma credencial de inicialização obsoleta agora se recupera da conta mais recente salva pelo painel após a credencial obsoleta ser rejeitada.
- Credenciais de host válidas permanecem autoritativas; sair, alterações de conta simultâneas, falhas de rede e falhas de servidor não acionam uma troca de credencial insegura.
prism dashboardabre o painel local ativo sem reclassificar uma conta vinculada Standard, Advanced ou Enterprise como Free.
Novidades na v20.21.10
Painéis Free desconectados continuam funcionando localmente
- Sair agora alterna a Visualização de Projeto, os detalhes do projeto e as leituras de gráficos para o SQLite local sem exigir conta, edição de configuração ou reinicialização.
- A preferência de backend Synalux salva permanece pronta para o próximo login; credenciais de nuvem ausentes acidentalmente ainda falham de forma segura.
- Atividade Recente usa a sessão durável mais recente quando ela é mais nova que o handoff salvo. Sessões Recentes são as mais novas primeiro, e as versões de handoff salvas permanecem disponíveis como pontos de restauração.
Novidades na v20.21.9
Prism Free abre sem uma conta Synalux
- Execute
prism dashboardpara abrir o Mind Palace local atual. Nenhum login, código de vinculação de conta, chave de API, plano pago ou resgate de plano Free é necessário. - Um endereço de painel local simples agora fornece o comando exato de abertura local em vez de renderizar um estado de conta quebrado.
- Conta e Configurações mostra o Prism Free como ativo. A vinculação Synalux permanece uma ação opcional para sincronização em nuvem, cobrança e recursos pagos.
- O acesso local permanece protegido sem imprimir sua capacidade de navegador na saída de inicialização, e caminhos de estado inseguros ou sondas de identidade redirecionadas falham de forma segura.
Novidades na v20.21.8
Gráficos do painel usam o Portal autenticado
- O projeto em nuvem selecionado agora mostra seus nós de sessão reais e links armazenados em vez de colapsar em uma bolha de projeto somente por palavra-chave.
- Synthesize Edges usa o contrato de incorporação do Portal Synalux autenticado; o processo do painel Prism não precisa de uma chave de API Google ou Gemini.
- Vetores e links existentes são reutilizados em execuções repetidas, o fan-out de síntese é limitado e falhas do Portal são mostradas em vez de renderizadas como um gráfico vazio.
- Conta e Configurações agora mostra o usuário atual, função e plano Free, Standard, Advanced ou Enterprise, com ações visíveis de login, upgrade, cobrança e saída.
- Um plano pago selecionado sobrevive ao round trip de login no Portal, catálogos Stripe ao vivo e de teste resolvem cada nível pago, e o checkout localizado nunca reutiliza um Preço USD para outra moeda.
Novidades na v20.18.1
Habilidades de tarefa sobrevivem à compactação e atualizam no lugar
- Habilidades de tarefa roteadas por prompt agora retornam após a compactação. O hook
restaura as três habilidades de tarefa mais recentemente ativas junto com o resumo do
piso protegido, para que um acompanhamento curto como
continuemantenha o fluxo de trabalho e as regras de verificação visual que governavam o trabalho antes da compactação do contexto. - Uma sincronização concluída de habilidade gerenciada atualiza as regras de tarefa ativas no próximo prompt. O hook compara a geração materializada no disco com seu estado por sessão, reautoriza cada nome restaurado contra o manifesto atual e injeta os corpos atuais. Um downgrade limpa o estado de tarefa paga obsoleto; diretórios gerenciados pelo Prism não podem usar a exceção de habilidade local de propriedade do usuário.
- Habilidades locais de propriedade do usuário agora roteiam com seu corpo real. Uma
SKILL.mdlocal permanece utilizável enquanto desconectado, enquanto um corpo de plataforma com direito tem precedência se ambas as fontes usarem o mesmo nome. - O contexto do hook Codex é ancorado à solicitação do usuário. Regras roteadas dizem ao modelo para executar a solicitação do usuário anterior com as regras aplicadas, evitando que a colocação do contexto de desenvolvedor final seja confundida com uma nova tarefa. A âncora e todo o conteúdo restaurado compartilham o limite de 9.800 caracteres.
- A versão 5 do hook impõe sua versão de comando. Um host ainda em execução com um
comando v4 confiável não pode executar o script v5 reescrito. Após atualizar,
execute
prism connect --refresh --no-models; o Codex deve confiar em ambas as novas entradas de hook v5 em/hooks. Reinicie o host se ele não tiver recarregado as novas definições de hook. Uma vez que o v5 está ativo, gerações posteriores de corpos de habilidade são atualizadas no próximo prompt sem outra reinicialização do host. - Os nomes de estado são validados e limitados antes de se tornarem argumentos de CLI, e os caminhos de atualização de duas chamadas cabem dentro do tempo limite de hook de 15 segundos do host.
Novidades na v20.18.0
O piso protegido acompanha o bootstrap — e sobrevive à compactação
session_bootstrapagora incorpora um resumo do piso protegido em níveis pagos em profundidade padrão e profunda: uma linha inerte por regra, derivada do primeiro parágrafo de cada habilidade (ou seudigest:fixado), além de seu mapa de seção, ~5,6K caracteres para o piso completo. Hosts de contexto pequeno, como Codex, estavam relendo os dezesseis arquivos SKILL.md a cada sessão (mediana de 8 releituras / 36KB, pior 823 / 5,1MB nos logs de rollout) porque o bootstrap apenas os nomeava. O resumo é pago além do orçamento de contexto, então a parcela ledger/handoff em cada profundidade é byte-idêntica à anterior. A profundidade rápida permanece apenas com nomes — a opção de exclusão.- Um segundo hook reinjeta o resumo após a compactação.
prism connectregistra o script prism-route emSessionStartcorrespondente acompact(Claude Code e Codex); ele executaprism floor-digest, que aplica as mesmas decisões de nível e profundidade que o bootstrap e não adiciona nada em inicialização/retomada/limpeza. Hosts sem hooks (Gemini, Cursor) ainda recebem o resumo em cada bootstrap. Codex: NÃO VERIFICADO contra uma compactação ao vivo. O hook está registrado e o script aceita as grafias de payload documentadas, mas nenhuma compactação do Codex foi observada de ponta a ponta; em um payload que ele não reconhece, ele não reinjeta nada em vez de algo errado. Se o resumo vier de uma geração cujos arquivos de habilidade nunca terminaram de sincronizar, o bloco reinjetado carrega o mesmo aviso STALE que o bootstrap mostra. - A confiança do Codex é relatada honestamente após uma reescrita de hook. Aprovações são
vinculadas pelo hash da definição, então um
hooks.jsonreescrito — esta versão adiciona a entrada SessionStart — anula a confiança anterior: connect imprime AWAITING TRUST para ambas as entradas em vez de um ✓ verde para um hook que o Codex pularia silenciosamente, e a confiança registrada para uma versão de hook mais antiga nunca é confundida com a atual. - Uma configuração de host que não analisa mais é deixada em paz. Se
~/.claude/settings.jsonou~/.codex/hooks.jsonexistir, mas não for JSON válido, connect o mantém byte-idêntico, não registra nenhum hook lá e informa isso — ele não substitui mais o arquivo por um mínimo apenas com hooks. O aviso pós-instalação do npm diz o mesmo, em vez de pedir para você confiar em um hook Codex que ele nunca registrou. - Corrigido: uma habilidade roteada por sintoma cuja cerca de frontmatter de fechamento é sua última linha era incorporada com seu YAML (gatilhos incluídos) como se fosse a regra.
- Corrigido: uma linha de resumo que cruza para uma nova seção mantém o título dessa seção na frente dela — o que quer que tenha aberto a seção (um H2, um H1 no meio do documento, um título vazio, um sublinhado setext) — para que regras "Delegar para" / "NÃO delegar" não possam ser lidas com a polaridade errada após a junção. Um arquivo de habilidade no disco é usado apenas quando ele resume: arquivos vazios, cortados dentro do frontmatter ou apenas com frontmatter caem de volta para a cópia armazenada em vez de renderizar YAML como a regra.
- Corrigido: no Windows, uma aprovação de hook do Codex é reconhecida mesmo que o Codex armazene o caminho com barras invertidas escapadas.
- O gate de publicação agora recusa notas de versão que estão à frente da versão
do pacote (CHANGELOG, README, READMEs traduzidos) — lendo a versão mais nova
na linha de título, para que um intervalo
v20.17.3 – v20.18.0conte como 20.18.0 e sobreviva a um apóstrofo tipográfico ou um BOM.
Novidades na v20.17.3
- Uma instalação de plugin não pode mais habilitar o hook de roteamento de prompt. Os
caminhos de manutenção do pacote (pós-instalação do npm, inicialização do servidor) agora apenas
atualizam um hook que um
prism connectexplícito instalou anteriormente — um registro prism MCP na configuração do host não conta mais como consentimento. A primeira instalação do hook acontece por meio deprism connectou não acontece. - O launcher de plugin do Claude Code é totalmente determinístico. Ele executa a
versão exata do servidor fixada com scripts de ciclo de vida do npm desabilitados, e
o plugin agora documenta sua postura de segurança em
plugins/prism/README.md.
Novidades na v20.17.2
- Logs colados não podem mais ativar habilidades falsamente. O roteamento acionado por sintoma agora remove blocos cercados e menções de nomes de habilidades roteáveis (incluindo dentro de identificadores compostos como nomes de contêiner/pod) da visão de roteamento de um prompt, para que citar um log de agente ou uma lista de habilidades não carregue habilidades que o texto apenas menciona. Habilidades nomeadas por palavras comuns continuam roteando normalmente.
- Habilidades roteadas por sintoma agora chegam inteiras. Orçamentos de inicialização entregam o texto completo da regra em cada profundidade que couber; quando uma regra genuinamente não couber, a exibição diz exatamente quanto está faltando e como carregar o resto, em vez de truncar silenciosamente.
- O roteamento não pode mais ser silenciosamente desabilitado por uma habilidade ruim. Tabelas de gatilho corrompidas ou hostis — formas de valor erradas, padrões nomeados após propriedades de protótipo de objeto — são puladas por entrada em vez de derrubar todo o roteamento de prompt (ou, em um caso, a exportação do cofre) para a sessão.
Novidades na v20.17.1
- Corrige uma CLI quebrada na 20.17.0 — uma colisão de nome de comando fez cada
invocação de CLI
prismsair com um erro de commander na inicialização (o servidor MCP não foi afetado). O comando de sincronização de handoff éprism handoff …;prism syncpermanece a sincronização de dados entre backends. Se você instalou 20.17.0, atualize.
Novidades na v20.17.0
Handoff de Sessão Entre Máquinas — Criptografado de Ponta a Ponta
- Retome uma sessão em qualquer uma de suas máquinas. Com
prism handoff enable(pago, desativado por padrão), cadasession_save_handoffsela o handoff para todas as chaves de dispositivo da sua conta e retransmite o CIPHERTEXT; outra máquina puxa comsync_pull_handoff(ouprism handoff pull <project>) e o abre localmente. - O relay armazena apenas ciphertext — envelopes selados X25519 + AES-256-GCM. Nenhuma chave que abre um handoff existe no lado do servidor. O canal é deliberadamente separado da sincronização de economia, que carrega apenas contadores.
- Fixação de dispositivo TOFU expõe um relay comprometido: selar para uma chave que esta máquina nunca viu avisa alto, vinculado ao ID de destinatário derivado do cliente, para que uma chave trocada não possa se esconder atrás de um nome de dispositivo familiar.
prism handoff status|devicespara inspecionar; revogue uma máquina perdida no portal.
Novidades na v20.16.0
Veja o que o Serviço Local Economiza para Você — Mensurável, Auditável, em Toda a Equipe
- Ferramenta
local_savings+ CLIprism savings— o volume de tokens que o serviço local manteve fora do seu modelo em nuvem: todo o tempo, últimos 30/7 dias ou qualquer janela--days N. Tokens, nunca um valor em dólar inventado, com as suposições e subcontagens conhecidas impressas inline. - Roll-up de equipe (pago) —
prism savings --sync-enableenvia contadores por dia apenas (nunca conteúdo; o payload é um conjunto de campos fechado que o servidor também impõe);prism savings --teammostra o total em todo o espaço de trabalho com a parcela por membro. Desativado por padrão. - Fundação de sincronização E2E — envelopes selados de múltiplos destinatários (X25519 + HKDF-SHA256 + AES-256-GCM em node:crypto, sem nova dependência) e identidades por dispositivo, revisadas adversarialmente: a sincronização de sessão entre máquinas será lançada em um relay que só armazena ciphertext.
- Proteção contra vazamento público no envio — diffs de saída E mensagens de commit são verificados antes que qualquer coisa saia da máquina.
Novidades na v20.12.1
prism connect --refreshagora converge todo registro que possui, não apenas o de nível superior — entradas com escopo de diretório poderiam, de outra forma, continuar lançando uma build antiga indefinidamente.prism updateverifica o pacote instalado, não o CLI que está em execução, então não pode mais informar "atual" enquanto a instalação está desatualizada.- O atualizador agendado opcional pode realmente iniciar — o LaunchAgent agora carrega um PATH que inclui node e npm.
Novidades na v20.12.0
- O Prism agora avisa quando está desatualizado. A inicialização da sessão mostra um
aviso de atualização em uma linha quando existe uma versão mais recente — com cache, no máximo
uma verificação de registro por dia, silencioso offline.
PRISM_NO_UPDATE_CHECK=1desativa. - Atualizações sem intervenção, se você quiser.
prism autoupdate enableconfigura umprism update --if-idlediário: ele atualiza apenas o pacote npm global, adia enquanto qualquer servidor Prism estiver em execução e nunca toca na configuração do host — isso permanece atrás de umprism connectvisível.
Novidades na v20.11.1
- Salvar memória nunca mais é recusado. O caminho de salvamento costumava rejeitar
chamadas
session_save_ledger/save_handoffquando sua heurística de caminho-para-projeto discordava do projeto que você declarou — e o registro que a heurística confiava podia conter lixo de auto-registro anterior, então sessões legítimas terminavam sem salvar. Sua declaração agora sempre vence; a discordância é retornada como um aviso consultivo, e o auto-registro só aceita raízes de repositório reais. - Capturas de tela são evidência novamente. Capturas
prism browserno macOS eram silenciosamente ampliadas para o limite de tamanho, então uma captura de tela não mostrava mais o que realmente foi renderizado. Apenas capturas genuinamente grandes são redimensionadas agora, e o limite não corta mais uma viewport padrão de 1920 de largura.
Novidades na v20.10.0 – v20.11.0
- O roteamento de habilidades agora funciona no meio da sessão. Novos prompts são correspondidos no dispositivo conforme a conversa avança — não apenas no primeiro turno — e injetados dentro dos limites reais de contexto de cada host (o Claude Code limita a saída de hooks a 10 mil caracteres; o Codex trunca por padrão), com entrega priorizando ponteiros quando um payload não cabe inline.
prism connecté um comando de convergência. Ele se auto-atualiza primeiro, reexecuta, e então reconcilia o registro MCP, habilidades e hooks — sem mais máquinas com "config nova, código desatualizado".- Habilidades com escopo roteiam também em prompts, e a saída de inicialização sobrevive a hosts que descartam conteúdo de ferramentas estruturado.
Novidades na v20.9.0 – v20.9.3
-
Suas habilidades seguem sua conta.
skill_savearmazena uma habilidade no escopo que você escolher: apenas nesta máquina (local, funciona offline e desconectado), sua conta (user— toda máquina em que você fizer login a recebe), ou um workspace (team— compartilhada com membros, gerenciada por administradores, opcionalmente direcionada a pessoas específicas). -
Apare o catálogo que você não usa.
skill_managepode liberar habilidades de plataforma que você nunca toca — liberando orçamento do catálogo de habilidades do host — e restaurá-las a qualquer momento, sem perdas. Excluir uma habilidade com escopo arquiva seu conteúdo final localmente primeiro, então nada fica silenciosamente irrecuperável. -
Entrega que enfileira em vez de falhar. Sessões concorrentes não passam mais fome de sincronização de habilidades no armazenamento de configuração local (WAL + tempo limite de ocupação) — uma falha que anteriormente relatava apenas "parcial" onde ninguém podia vê-la.
-
Regras retidas ainda vinculam. Quando o orçamento de contexto não pode incluir inline o texto de uma habilidade, o manifesto de nomes retidos agora declara que essas habilidades ainda governam o trabalho e nomeia todas as formas de carregá-las antes que as reivindicações de conclusão.
-
O orçamento que o piso nunca gastou. Um bug contábil de longa data significava que nenhuma habilidade desprotegida era incluída inline em nenhum nível de contexto normal — o piso protegido sempre incluído estava debitando o orçamento destinado a tudo o mais. Habilidades correspondentes a tarefas (como a lista de verificação de evidências de conclusão) agora realmente chegam.
Novidades na v20.8.2
- A entrega de habilidades agora admite falha em vez de escondê-la. Um caso extremo
de permissão de sistema de arquivos (um umask removendo o bit de execução do proprietário) podia deixar
a sincronização de habilidades sem escrever nada enquanto se reportava como atual — medido em nove
dias em uma máquina real. Diretórios gerenciados quebrados são reparados no local,
todo diretório é criado à prova de umask, e o caminho de reparo recusa symlinks
via um descritor
O_NOFOLLOW. - Uma instalação desatualizada avisa na inicialização. O Prism agora rastreia a geração que realmente chegou ao disco separadamente daquela que o banco de dados aceitou; se elas divergirem, o banner de inicialização diz isso em um aviso colocado onde a truncagem de exibição não pode cortá-lo. Uma sincronização bem-sucedida o limpa automaticamente.
Novidades na v20.7 – v20.8.0
- A primeira execução prova a memória em vez de descrevê-la —
session_bootstrapsemeia uma memória de demonstração e a mostra recuperada do disco, então o loop salvar→recuperar é sentido na sessão 1. Único, contido em seu próprio projetoprism-demo, removível com uma chamada. - Dashboard corrigido — um erro de digitação em aspas (enviado em 2026-05-29) matou o script
inline no momento da análise, então todo dashboard desde então renderizava "Carregando projetos..."
para sempre. Corrigido, e o lint ES5 agora
node --checko script inline construído para que um dashboard não analisável nunca mais seja enviado. - Publicação Confiável — lançamentos npm autenticam via GitHub OIDC. Sem token
armazenado para expirar ou vazar, e todo lançamento carrega uma atestação de
proveniência assinada — você
pode verificar que o tarball que você instala foi construído a partir deste repositório por CI
(
npm audit signatures). - TLS aplicado para sincronização em nuvem — uma URL de armazenamento
http://remota é atualizada parahttps://em vez de enviar silenciosamente o conteúdo da sessão em texto claro. - Colisão de plugin Codex + detecção de estado habilitado —
prism connectpula seu próprio registro apenas quando um plugin realmente forneceprism-mcp(cache presente e habilitado), prevenindo servidores duplicados e ausentes. - CI do Windows estabilizado; listagens de registro/npm realinhadas e deduplicadas.
Novidades na v20.6.0
Entrega Não É Uma Sugestão
Uma auditoria de um incidente real (um agente apagou dados de demonstração após anunciar o apagamento — com a regra de perguntar-primeiro confirmada, empacotada e ausente do que qualquer agente realmente recebeu) descobriu que o piso protegido havia superado todo orçamento de entrega: "desprotegido" silenciosamente passou a significar "nunca entregue".
ask-firstefeature-preservationentram no piso protegido (14 → 16). Habilidades protegidas são sempre incluídas inline; estas duas agora alcançam toda sessão.- Conflitos de sincronização são altos e nomeados. A inicialização costumava dizer "· 2 conflitos locais preservados" enquanto habilidades de segurança ficavam meses desatualizadas; agora nomeia cada habilidade congelada e declara como retomar as atualizações.
--storageaceitaautoesynalux— o CLI rejeitava seu próprio padrão documentado e o backend de produção.- Divulgação: a entrega de habilidades informa; ela não bloqueia. Uma sonda ao vivo mostrou um agente host ainda editando fonte não verificada com a regra carregada. Se seu modelo de ameaça inclui um agente agindo contra uma regra carregada sob pressão de tarefa, combine este pacote com bloqueios mecânicos (hooks, permissões, funções de privilégio mínimo). Verdadeiro para todo lançamento anterior; declarado a partir deste.
Novidades na v20.5.3
Evidência de Fundamentação Carrega Sua Idade
Respostas fundamentadas em memória rotulavam suas fontes, mas nunca as datavam, então uma nota de dois anos atrás e a de ontem alcançavam o modelo de forma idêntica. Nada na evidência permitia descontar a desatualizada. Motivado por uma revisão externa nomeando o risco certo para memória local-primeiro: os dados permanecem locais, mas fundamentação ruim se torna permanente — armazenar tudo na sua máquina remove a pressão externa que de outra forma traria à tona uma nota desatualizada.
A evidência agora lê:
[SOURCE 1: ledger:8286581d (recorded 2025-05-29, 431 days ago)]
A data já existia no armazenamento e estava sendo descartada na camada de snippet, então isso é encanamento em vez de nova coleta de dados. Carimbos de data/hora SQLite sem zona são normalizados para UTC — lidos como locais, um registro de dez minutos atrás analisado horas no futuro e sua idade foi suprimida inteiramente, significando que o recurso silenciosamente não fazia nada nas memórias mais recentes. Uma data ausente ou não analisável renderiza como nada em vez de assumir o padrão "agora"; assumir o padrão faria as memórias mais antigas, as mais propensas a estarem desatualizadas, parecerem as mais recentes.
tests/integration/grounding-staleness.test.ts executa a própria sonda do revisor —
semeie uma nota deliberadamente desatualizada ao lado de uma nova contraditória e afirme
que o modelo recebe ambas, visivelmente datadas. Qualquer um pode executá-la.
Não resolvido, e não reivindicado: a recuperação não pondera a recência. Uma nota desatualizada
mostrada ao lado de uma nova é o caso fácil — o modelo vê ambas as datas e pode
ponderá-las. O caso difícil é uma nota desatualizada recuperada sozinha, porque a classificação é
por correspondência de palavras-chave e um armazenamento antigo retorna resultados antigos; então o rótulo de idade é a
única defesa e não há registro mais recente para comparar. Rastreado como
TECH_DEBT.md #4.
Novidades na v20.5.0 – v20.5.2
A Primeira Mensagem Nunca Sai da Sua Máquina
Habilidades acionadas por sintomas — as regras que disparam em "não consigo ver X", "sem linhas",
"a lista está vazia" — são destinadas a carregar no turno em que um relatório de incidente chega.
Elas nunca carregaram: todo template de host chamava session_bootstrap com {}, então
não havia prompt para corresponder.
Corrigir isso levantou a questão de onde a correspondência acontece. Agora acontece
localmente. As 28 regras de palavras-chave já são públicas, então não havia nada que uma correspondência
local não pudesse calcular, e callPortal() não tem nenhum parâmetro prompt —
a garantia é estrutural, não uma promessa. A solicitação do portal carrega o
projeto e o papel apenas.
Uma regra correspondida agora chega como conteúdo, não como um nome. Hosts nativos fora do espelho de arquivos de habilidades não tinham como ler uma regra sobre a qual apenas foram informados, então o corpo da regra é incluído inline na exibição de inicialização, limitado e dimensionado contra o orçamento real por projeto.
Novidades na v20.4.0
Um Backend de Nuvem Explicitamente Nomeado Falha Alto
Definir PRISM_STORAGE=synalux ou =supabase com credenciais incompletas costumava
rebaixar silenciosamente para SQLite local. A mudança era registrada no stderr, que
os hosts MCP descartam, então nada a trazia à tona: sessões continuavam servindo contexto local
desatualizado enquanto a nuvem mantinha histórico mais novo, e context_source lia local
em vez de qualquer tipo de aviso. Uma sessão podia rodar assim por semanas.
Nomear um backend explicitamente é uma forte declaração de intenção, então agora ele lança —
nomeando as variáveis ausentes e a opção de exclusão PRISM_STORAGE=local — em vez de
dividir silenciosamente o histórico da sua sessão. auto não mudou: ele mantém sua
degradação synalux > supabase > local documentada, fixada por um teste.
Nota de atualização: se você definir explicitamente PRISM_STORAGE=synalux|supabase e
suas credenciais estiverem incompletas, a inicialização agora falha com um erro nomeado em vez
de usar silenciosamente dados locais. Esse erro é a correção — defina a variável ausente,
ou escolha PRISM_STORAGE=local deliberadamente. Configurações padrão (auto) são
afetadas.
O lançamento deliberadamente não é tratado como uma falha de inicialização recuperável: esse caminho existe para erros transitórios (limites de taxa, 5xx, DNS), que podem degradar atrás de um aviso visível. Uma credencial ausente é uma falha de configuração e não deve ser encoberta.
Também: o bloco de habilidades agora é orçado por padrão em vez de apenas sob solicitação, então um payload grande de habilidades não pode sufocar o briefing e o histórico.
Novidades na v20.3.2
Web Scholar: Endurecimento SSRF
Lançamento de segurança. O Web Scholar raspa URLs de artigos que vêm da
saída do mecanismo de busca, então o alvo é influenciável por atacantes através de envenenamento
de SEO — e porque o que ele raspa é escrito no corpus de memória e
passado ao LLM configurado, um redirecionamento para um endereço local significava ler um serviço
interno e enviar o resultado adiante.
O guardião de host correspondia a prefixos de string em vez de analisar o endereço, e seis
grafias de um endereço local passaram: [::1] (URL.hostname mantém os
colchetes), 127.0.0.2 (apenas .1 foi enumerado, não todos os 127.0.0.0/8),
0.0.0.0, [::ffff:127.0.0.1], localhost. (um ponto final derrotou todas as
verificações de sufixo de uma vez), e [64:ff9b::7f00:1] (NAT64 incorpora IPv4 em seus
bits baixos). A classificação de host agora analisa endereços e também cobre CGNAT,
benchmarking, multicast, reservado, e faixas IPv6 unique-local e link-local.
O rebinding de DNS também está fechado. Cada verificação lia a string da URL, então um nome de host que o
atacante controla passava em todas elas e ainda podia resolver para 127.0.0.1.
Os alvos agora são resolvidos primeiro, cada endereço retornado é validado, e a
conexão é fixada nesses endereços para que o nome nunca seja resolvido uma segunda
vez — o que também fecha a janela entre a verificação e a conexão.
Falhas de scraping não desaparecem mais em um catch {} vazio, uma execução é limitada por
PRISM_SCHOLAR_SCRAPE_BUDGET_MS (padrão 60s) em vez de travar em uma
contagem de artigos elevada, e as respostas são limitadas a 8 MiB.
Isso é alcançável apenas quando o scholar realmente executa — scholar_research, ou o
loop em segundo plano sob PRISM_SCHOLAR_ENABLED=true — e quando o atacante também
controla DNS ou um resultado de busca. Atualize se você usa o Web Scholar.
O que há de novo na v20.3.1
Prism Browser Relata Falhas Reais
prism browser não conseguia falhar um teste. eval 1 === 2 retornava status: ok
com código de saída 0, uma página servindo HTTP 500 relatava status: ok, e erros
de console e exceções de página não capturadas eram descartados inteiramente. Esta versão adiciona
asserções — assert-text, assert-visible, assert-count, assert-url,
assert-title, assert-eval, assert-no-page-errors — que retornam
status: failed e uma saída não zero. open agora relata http_status e
falha em 400 ou superior, capturas de tela são validadas em vez de assumidas, e
eval retorna JSON nativo com seu tipo em vez de um repr Python.
A camada de impressão digital nunca havia sido aplicada: um argumento de palavra-chave errado fazia a
biblioteca de stealth lançar uma exceção em cada inicialização — 1.139 falhas e 0 sucessos
desde abril — enquanto o executor a relatava como ativa. Isso foi corrigido, e uma camada
que não pode ser aplicada agora falha ruidosamente. A compilação headless não anuncia mais
a si mesma através de navigator.userAgentData ou do cabeçalho Sec-CH-UA,
e um patch que corrompia Object.getOwnPropertyDescriptor em cada página
sob teste foi removido. Esses permanecem auxílios de teste de melhor esforço, não uma
garantia contra detecção de bot.
--local-only agora realmente isola: WebSocket, EventSource, WebRTC e
saída sendBeacon ignoram o roteamento de solicitações e nunca foram bloqueados, e service
workers eram permitidos. --cleanup era um no-op nos dois modos que os agentes
usam. Isolamento de site, detecção de phishing e bloqueio de popups não são mais
desabilitados por padrão, já que esses perfis contêm cookies autenticados ao vivo.
Novo para execuções de teste: --ephemeral-profile e --storage-state para fluxos
autenticados herméticos, pages/switch-page para que popups OAuth sejam alcançáveis,
--fail-fast, --fast, --trace/--video/--har, e
profiles --prune-older-than para manutenção de perfil.
O que há de novo na v20.2.7
Saves de Sessão Sobrevivem a Reinícios de Agente
O Prism agora lembra que uma conversa carregou com sucesso seu contexto de projeto
quando o servidor MCP reinicia ou outro processo Prism lida com a próxima solicitação.
session_save_ledger e session_save_handoff não falham mais com um falso
erro context_not_loaded nesse fluxo.
A recuperação permanece com falha fechada: a autorização é limitada ao projeto exato e conversa, expira com a janela de contexto existente, e não armazena identificador de conversa em texto puro. Recibos entre projetos, forjados, malformados, expirados, ou com data futura ainda são rejeitados. A versão também atualiza o PostCSS para a versão corrigida 8.5.23.
O que há de novo na v20.3.0
Busca de Memória Híbrida (Nível Portal)
session_search_memory no nível portal (instalações com suporte Synalux) agora
combina similaridade semântica com correspondência lexical de termo exato via fusão
ponderada de classificação recíproca. Medido em sondas cegas contra um corpus
real de 8,5 mil entradas: a recuperação fundida foi nunca pior do que a semântica
sozinha no top-5, e identificadores exatos — TPNs, nomes de funções, strings
de erro — agora resgatam consultas que a similaridade de incorporação desfoca. Os resultados dizem como foram encontrados — cabeçalhos hybrid retrieval,
braços sem#/lex# por ocorrência — e um resgate somente lexical é rotulado
exact-term match em vez de fingir uma pontuação de similaridade. Instalações
SQLite locais mantêm busca vetorial pura; o híbrido precisa do
índice lexical do portal.
O que há de novo na v20.2.6
Atualizações de Configuração Mais Seguras em Todos os Agentes
prism connect agora lê a configuração do Claude, Cursor, Gemini e Codex
através de um único snapshot de arquivo verificado, impedindo que outro processo
troque um arquivo entre a verificação de segurança do Prism e sua leitura. Dotfiles
com link simbólico suportados ainda funcionam, enquanto links simbólicos pendentes ou plantados
falham ruidosamente em vez de serem seguidos ou sobrescritos. Esta versão também traz as
dependências corrigidas e verificações de lançamento multiplataforma introduzidas na v20.2.5.
O fallback de nuvem agora é documentado consistentemente como Gemini 3.6 Flash. Os tetos
de plano governam o roteamento automático de prism_infer; o uso direto de qualquer modelo
baixado através do Ollama local permanece gratuito em todos os níveis.
O que há de novo na v20.2.4
Memória de Sessão Confiável Que Mostra Trabalho, Não Saudações
Respostas de assistente somente com saudação são puladas antes das gravações de ledger. Linhas
de saudação existentes são filtradas no momento da leitura em inicialização nativa, contexto MCP e
prism load --json, enquanto entradas contendo decisões, TODOs, arquivos alterados,
ou eventos não relacionados à sessão permanecem visíveis. Linhas históricas não são excluídas
destrutivamente. Se o Synalux tiver uma falha transitória de inicialização, o Prism exibe um snapshot
local último-bom limitado e o rotula claramente; falhas permanentes de autorização ou
validação ainda falham ruidosamente, e gravações posteriores permanecem roteadas para a nuvem.
O que há de novo na v20.2.2
Um Fluxo de Trabalho Local-Primeiro em Todos os Agentes
prism connect agora instala um contrato de orquestração para Claude Code,
Claude Desktop, Cursor, Gemini CLI e Codex. Trabalho delegado limitado vai para
session_task_route e o trabalhador local prism_infer primeiro; trabalho rotineiro não
deve criar agentes de host em segundo plano. Trabalhadores locais podem receber a
memória rápida, padrão ou profunda configurada no dashboard do projeto ativo e selecionar um
modelo 2B/4B/9B/27B seguro para RAM no momento da chamada. O roteador encaminha a complexidade, mas
não escolhe o modelo; prism_infer possui a decisão final usando memória
e adequação de contexto, modelos instalados, RAM ao vivo, direitos e substituições
explícitas do chamador.
O fan-out nativo de agentes do Codex e Gemini é desabilitado durante a conexão. O Codex mantém
um perfil de fallback Terra/baixo de dois threads e um nível se o desenvolvedor reabilitar
explicitamente agentes nativos mais tarde. O Claude Code mantém agentes nativos como um caminho de último
recurso, mas fixa seu modelo ao Sonnet. Cursor e Claude Desktop não expõem um
arquivo de política global de subagente suportado, então eles recebem o fluxo de trabalho idêntico
através das instruções do servidor MCP do Prism. Os limites de segurança prism_infer e
a responsabilidade final de verificação do host permanecem inalterados.
Habilidades de Nível de Assinatura Chegam Antes do Primeiro Lançamento do Host
prism connect agora baixa o manifesto de habilidades autoritativo do Synalux e
materializa pacotes com direito no diretório nativo ~/.agents/skills
antes de o comando sair. O Codex, portanto, vê o conjunto de habilidades atual em seu
primeiro lançamento em vez de exigir um segundo reinício. O Prism reverifica o mesmo
snapshot na inicialização do MCP, no carregamento da sessão e a cada cinco minutos — a entrega
de habilidades nunca depende de um gancho de ciclo de vida do host.
No primeiro turno do usuário, a habilidade nativa do Prism, os metadados do MCP e as instruções
gerenciadas do host solicitam uma chamada session_bootstrap({}). O Prism então usa o
nome do desenvolvedor do dashboard, Carregamento Automático de Projetos e a configuração rápida, padrão ou
profunda. A resposta permanece focada em saudação e estado da sessão porque as habilidades
de nível já estão presentes no diretório de habilidades nativas do host.
O MCP sem ganchos pode fornecer e priorizar esse bloco pronto para exibição, mas o modelo do host ainda possui a mensagem final do assistente e pode resumi-la. O Prism não reivindica uma saudação verbatim determinística em superfícies de chat de terceiros; isso exigiria um gancho de ciclo de vida do host, lançador, extensão ou painel de propriedade do Prism. O carregamento de contexto em si permanece completo mesmo quando um host encurta a resposta visível.
Contas gratuitas recebem apenas o pacote público prism-startup sem ganchos; o servidor
MCP ainda fornece um contrato de segurança e evidência compacto e não proprietário. Contas
pagas autenticadas recebem os pacotes comportamentais e de engenharia protegidos mais o conjunto
de roteamento assinado atual. O evidence-first-protocol pago
mantém a codificação comum leve: uma reprodução
correlacionada é suficiente para iniciar uma edição, enquanto a aceitação estrita começa apenas
antes de uma reivindicação de conclusão, push ou lançamento e inspeciona apenas os artefatos exatos
usados como prova. Atualizações instalam pacotes recém-atribuídos; downgrades verificados
removem apenas pacotes de propriedade do Prism, preservando habilidades locais e conflitos
modificados localmente.
Ao atualizar uma instalação mais antiga do Claude Code, prism connect remove apenas
as ações exatas de gancho de inicialização, sincronização de habilidades, handoff e deriva de propriedade do Prism do
bootstrap legado. Também remove as seções de inicialização legadas reconhecidas do Prism de
~/CLAUDE.md, preserva todas as outras instruções e instala um
bloco nativo pequeno marcado por propriedade que seleciona session_bootstrap({}) no
primeiro turno. Ganchos de usuário, seções de instrução personalizadas e correspondências próximas permanecem
intactos; habilidades nativas e lembretes do lado do servidor preservam esses recursos do Prism
sem depender de ganchos de ciclo de vida do host. No Claude Code e Codex,
a conexão também registra o script prism-route duas vezes: em cada prompt
(roteamento de habilidades no meio da sessão) e em SessionStart correspondido a compact apenas
(digestão do piso protegido pós-compactação). Como os hosts não expõem nenhum
callback nativo de fim de sessão, o handoff no desligamento é orientado por instruções em vez de um
evento de ciclo de vida garantido.
Após o registro nativo do usuário do Claude Code ser bem-sucedido, o mesmo comando padrão ou
--refresh verifica o .mcp.json mais próximo do diretório atual
até o diretório inicial. Ele remove apenas a entrada legada exata
prism-mcp { "command": "npx", "args": ["-y", "prism-mcp-server"] }
que de outra forma sombrearia o registro do usuário. Entradas personalizadas do Prism e
seus campos adicionais, além de servidores não relacionados, são preservados; arquivos malformados
falham ruidosamente sem alterações. --dry-run relata a migração reconhecida
sem alterar o arquivo.
O que há de novo na v20.2.1
Armazenamento de Memória Ciente de Assinatura
prism connect agora carrega um PRISM_STORAGE=auto|local|synalux|supabase explícito
em cada registro de host gerenciado e rejeita valores inválidos antes de alterar um
arquivo de configuração. Em auto, um nível gratuito confirmado pelo portal usa SQLite local, enquanto
Standard, Advanced e Enterprise usam memória em nuvem Synalux. Se a resolução
de direitos não estiver disponível, o Prism falha fechado em vez de dividir o histórico entre
backends. O armazenamento permanece independente do roteamento de modelo local-primeiro.
O que há de novo na v20.2.0
Um Comando Conecta Todos os Hosts Suportados
Instale o Prism globalmente e execute prism connect. Ele detecta Claude Code, Claude
Desktop no macOS, Windows e Linux (beta), Cursor, Gemini CLI e Codex, então registra com segurança o
servidor do pacote instalado. Entradas personalizadas existentes são intocadas;
--dry-run pré-visualiza alterações e --refresh atualiza apenas entradas gerenciadas pelo Prism.
O que há de novo na v20.1.0
Todo Resultado de Inferência Agora é Observável
prism_infer ganha um contrato de falha: passe escalation: "report" e cada chamada retorna um gate_outcome estruturado — success, degraded (saída com falha de gate servida mesmo assim, explicitamente sinalizada) ou refused (tipado, com motivo, em vez de um erro lançado). Saída degradada não pode mais ser servida silenciosamente.
Prompts Grandes Funcionam Localmente
Prompts com mais de 4000 caracteres eram recusados de forma genérica quando a nuvem estava desligada. Agora o texto completo recebe uma varredura determinística de palavras-chave reservadas, além de uma classificação de excertos cabeça+meio+cauda — prompts grandes e limpos são servidos localmente com um marcador de auditoria UNCERTAIN_LENGTH distinto. O tratamento clínico/reservado permanece inalterado (e seu piso de palavras-chave ficou mais forte).
Sem Mais Truncamento Silencioso
Os limites de contexto por nível agora correspondem aos Modelfiles ativos (27b/9b são modelos de 4096 tokens; 4b/2b são 32768 — a tabela antiga estava invertida). Níveis que não comportam seu prompt são pulados com um motivo visível de ctx_insufficient; se nada couber, você recebe o prompt completo na nuvem ou um erro explícito — nunca uma resposta calculada a partir de um prompt truncado silenciosamente.
Saiba Sob Qual Plano Você Está Realmente Rodando
Os direitos de uso carregam um campo source: portal (real), unconfigured (grátis por design) ou fallback_free (portal inacessível — limites gratuitos ASSUMIDOS). Passe strict_entitlements: true para falhar de forma explícita em vez de rodar degradado.
O Que Há de Novo na v20.0.8
verify_behavior Funciona Novamente
A ferramenta verify_behavior travava em toda chamada (-32602 expected object, received string) — o handler retornava uma string simples em vez de um objeto MCP CallToolResult. Corrigido, com testes de regressão de contrato e fail-closed para que o gate de segurança nunca mais quebre silenciosamente. Se você está na 20.0.6/20.0.7, atualize.
Da v20.0.7: Segurança de Conteúdo Reservado, Autenticação de Skills, Métricas de Delegação
Conteúdo clínico reservado agora é Claude-ou-recusa (nunca servido por um modelo menor do que aquele que o recusou), a entrega de skills ganhou um fallback de autenticação JWT (skills de nível pago agora alcançam máquinas usando apenas PRISM_SYNALUX_API_KEY), e toda chamada de prism_infer é registrada em um livro-razão persistente de infer_metrics. Detalhes completos em CHANGELOG.md.
O Que Há de Novo na v20.0.5
Delegação Local-First — 15 Categorias, Taxa Medida
A skill local-inference-first cobre 15 categorias de gatilho rígido (geração de código, regex, conversão de formato, sumarização, documentação, consulta factual, classificação, comandos de shell, geração de config e mais). Blocos de código colados agora disparam delegação independentemente da formulação da pergunta. Taxa de delegação medida: 30-35% em sessões de engenharia, 40-60% em sessões de transformação/conteúdo. A taxa depende da mistura de prompts, não da skill — os instrumentos agora se autovalidam com nonDelegatedCount para evitar tautologias de conjuntos curados.
Repetição Somente-Pensamento (v20.0.4)
Modelos Qwen 3.5 (9B/27B) com pensamento habilitado podiam queimar todos os tokens em blocos <think> e retornar conteúdo vazio, causando uma cascata para 4B. Agora detecta respostas somente-pensamento e repete o mesmo nível com pensamento desabilitado — preservando a qualidade do modelo em vez de cair para um modelo menor.
O Que Há de Novo na v20.0.3
Resiliência de Modelo Frio na Camada 1
(Como enviado em uma versão anterior; o contrato atual é o cabeçalho de src/utils/layer1.ts.) O classificador de categorias reservadas tenta novamente uma vez com um timeout maior em falha de modelo frio, depois cai para um backstop determinístico de palavras-chave; texto limpo por palavras-chave é servido localmente. Prompts muito longos (>4K caracteres) recebem o piso de palavras-chave de texto completo, além de uma leitura de excertos cabeça+meio+cauda e um marcador distinto UNCERTAIN_LENGTH — o preenchimento de prompt não pode forçar o ramo ERROR. Isso elimina o problema de recusa de inicialização a frio sem enfraquecer o gate de segurança.
Backstop de Palavras-Chave para Conteúdo Reservado
Quando o classificador LLM falha (timeout, injeção, pressão de recursos), um piso determinístico de regex captura vocabulário reservado (contenção, isolamento, automutilação, suicídio, overdose, desescalada de crise, etc.), incluindo formas flexionadas e verbais. Bloqueia ataques de preenchimento de prompt e injeção de classificador no caminho ERROR.
Texto de Segurança de Fonte Única
A declaração de segurança no campo instructions do servidor MCP agora importa de boundaries.ts — uma fonte de verdade em vez de duas cópias mantidas manualmente. A versão dos limites foi atualizada para v3 com uma decisão explícita de entrega documentada no código.
Gate de Segurança de Categoria Reservada — Todos os Níveis (v20.0.2)
O classificador semântico da Camada 1 agora roda para todo usuário, não apenas níveis pagos. Conteúdo clínico reservado é recusado no nível gratuito quando a nuvem está indisponível — fail-closed.
Deduplicação de Livro-Razão (v20.0.2)
session_save_ledger deduplica entradas idênticas dentro de uma janela de 5 minutos.
Script de Evidência (v20.0.2)
scripts/generate-evidence.sh regenera todos os 5 arquivos de evidência com asserções embutidas. Execute bash scripts/generate-evidence.sh para verificar o pipeline completo.
O Que Há de Novo na v20.0.0
Licença: AGPL-3.0 → Apache-2.0
Prism MCP agora é Apache-2.0. A arquitetura de cliente fino significa que todo valor proprietário (resolução de skills, gating de níveis, cobrança, inferência em nuvem) vive no lado do servidor — o cliente aberto não carrega nenhum fosso a proteger. Apache-2.0 remove o atrito de adoção empresarial que AGPL causava.
Arquitetura de Cliente Fino
Roteamento de skills, gerenciamento de orçamento e resolução de conteúdo foram movidos para o lado do servidor no portal Synalux. O cliente MCP agora é um chamador de API fino — mais simples, menor e portátil em qualquer host (Claude Code, Gemini, Cursor, scripts autônomos). Fallback offline lê a última resposta bem-sucedida do SQLite local.
Adaptador Voyage AI em Sala Limpa
O adaptador de embeddings Voyage AI foi reimplementado de forma independente a partir da documentação da API Voyage para garantir 100% de copyright de propriedade do projeto. Modelo padrão atualizado para voyage-3.5. Veja PROVENANCE.md para detalhes.
Detecção de Deriva no Lado do Servidor
A detecção de deriva de sessão (GATE 5) não requer mais hooks do Claude Code. O timer roda no lado do servidor por conversa, aproveitando cada resposta de ferramenta MCP. Funciona para qualquer host.
Requisito de CLA
Contribuições externas agora exigem a assinatura do CLA Individual. A verificação de CLA é bloqueante para merge no branch main.
Início Rápido
O nível gratuito não precisa de conta, chave de API ou nuvem. Instale o Prism e registre-o com cada host MCP suportado já instalado na sua máquina:
npm install --global prism-mcp-server
prism connect
prism connect detecta Claude Code, Claude Desktop (macOS/Windows/Linux), Cursor,
Gemini CLI e Codex.
Use prism connect --all para mirar todos os cinco, --host <name> para um host, ou
--dry-run para pré-visualizar os arquivos que seriam alterados. Entradas existentes de prism e
prism-mcp nunca são sobrescritas por padrão. --refresh atualiza apenas
uma entrada criada anteriormente pelo Prism; entradas personalizadas permanecem intactas.
Para Claude Code, tanto o comando padrão quanto --refresh também removem a
entrada legada exata de escopo de projeto npx -y prism-mcp-server do
.mcp.json ancestral efetivo após o registro nativo de usuário ser bem-sucedido. Nenhuma entrada de projeto personalizada ou de correspondência aproximada é alterada.
Feche os hosts MCP de destino antes de um registro não-dry-run para que eles não possam
editar sua configuração ao mesmo tempo.
A mesma conexão instala o contrato de orquestração local-first:
| Host | Contenção gerenciada |
|---|---|
| Codex | features.multi_agent=false; um perfil de fallback Terra/low de 2 threads e profundidade 1 é retido para reativação explícita |
| Gemini CLI | experimental.enableAgents=false |
| Claude Code | CLAUDE_CODE_SUBAGENT_MODEL=sonnet; instruções gerenciadas o reservam para fallback de último recurso |
| Cursor | Política canônica entregue por meio de instruções de inicialização MCP |
| Claude Desktop | Política canônica entregue por meio de instruções de inicialização MCP |
Todos os cinco recebem PRISM_AGENT_POLICY=local-first em sua entrada gerenciada do Prism MCP.
Tarefas rotineiras usam o worker local ciente de RAM; fan-out nativo/em segundo plano
não é o fluxo de trabalho padrão. session_task_route fornece uma dica de complexidade;
prism_infer permanece o único dono da seleção de modelo e pensamento e pode
escolher 27B quando seus gates de viabilidade suportarem.
Defina PRISM_STORAGE antes de executar prism connect para preservar uma escolha
explícita de armazenamento nas entradas de host geradas. Isso não altera o roteamento
de modelo local; o armazenamento em nuvem Synalux separadamente exige um direito de
memória em nuvem ativo.
O registro do Codex preserva conteúdo não relacionado de ~/.codex/config.toml, anexa
apenas o bloco marcado do Prism MCP e atualiza apenas as chaves documentadas de
feature/agente local-first. CODEX_HOME é respeitado quando definido e deve já existir,
correspondendo ao próprio contrato do Codex. Reinicie o CLI do Codex, a
extensão do IDE ou o aplicativo de desktop do ChatGPT após conectar.
Reinicie o host conectado e seu agente agora tem memória apoiada por um banco de dados
SQLite local (~/.prism-mcp/data.db). Veja Configuração do IDE
para configuração manual e caminhos específicos de host.
Opcional — frota de modelos local para roteamento de ferramentas offline. Baixe o que couber no seu 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%)
O Prism detecta automaticamente as tags Ollama com namespace (dcostenco/prism-coder:9b) e simples (prism-coder:9b).
Os níveis 2b/4b/9b carregam uma torre de visão e aceitam capturas de tela por meio de
prism_infer({ images: [...] }) — passe caminhos absolutos ou base64. Solicitações de
imagem são recusadas em vez de respondidas às cegas quando nenhum nível (ou o classificador
de segurança da Camada 1) pode realmente ver a imagem, então um modelo somente texto nunca
recebe um prompt sobre uma captura de tela que nunca recebeu. O 27b é somente texto.
O que ele faz
Seu agente de IA esquece tudo entre sessões. O Prism corrige isso — e adiciona verificação, detecção de deriva e coordenação multiagente por cima.
Mind Palace — memória persistente que sobrevive entre sessões
Cada conversa alimenta um armazenamento persistente. A próxima sessão carrega o contexto certo automaticamente — sem reexplicar.
O painel mostra o estado atual do seu projeto, TODOs pendentes, saúde de intenção e um grafo de conhecimento neural — tudo construído automaticamente a partir das sessões do seu agente.
Ele roda em loopback e é protegido por um token local por padrão — execute
prism dashboard para abri-lo sem fazer login. Esta etapa local do navegador não é
um resgate do plano Free.
Solicitações com Host/Origin não confiáveis são recusadas, fechando a exposição
de rebinding de DNS corrigida em GHSA-9cvx-7x8q-3g6m. Veja docs/IDE_SETUP.md
para fixar o token, desabilitá-lo ou configurar Basic Auth / JWKS.
Exportar — leia o registro fora do agente
session_export_memory grava sua memória como arquivos simples que você pode ler,
comparar e commitar. Nada passa por um modelo para produzi-lo.
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 é a superfície para usar quando você quer responder "o agente verificou isso, ou está afirmando que verificou?" — a exportação é um registro que você revisa depois do fato, em um diff ou pull request, em vez de uma visão ao vivo que você precisa abrir. Os mesmos dados estão disponíveis nos botões Export ZIP e Export Vault do painel.
Grafo de Conhecimento — busca semântica + palavras-chave + grafo
Pergunte "o que decidi sobre o fluxo de autenticação no mês passado?" e obtenha uma resposta com citações, combinando similaridade vetorial, busca de texto completo e travessia de grafo.
Histórico de Sessão — trilha de auditoria imutável
Cada sessão é registrada com arquivos alterados, decisões tomadas e TODOs. Pesquise, filtre e reproduza qualquer sessão passada.
Métricas de Inferência — veja para onde seus tokens vão
Cada chamada de prism_infer rastreia qual modelo a tratou (Ollama local vs nuvem) e quantos tokens foram consumidos. Quando você salva uma sessão, o Prism mostra um resumo:
📊 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 é a métrica de roteamento honesta — ela só acumula quando o Ollama local atende a uma chamada que, de outra forma, iria para a inferência em nuvem da Synalux. Uma versão compacta aparece inline a cada 5ª chamada de prism_infer: 📊 local 10 (83%) · cloud 2 (17%) · ~11,570 tok · avg 1,240ms · 11,570 cloud tok saved.
Chamadas locais usam contagens reais de tokens do Ollama (prompt_eval_count / eval_count do Ollama); chamadas em nuvem usam estimativas de char/4. As métricas são rastreadas localmente — sem dependência do portal, sem variáveis de ambiente, funciona offline. Os dados por chamada também são encaminhados ao portal Synalux como análise de melhor esforço (independente da exibição).
Detecção de Desvio de Sessão
Sessões longas de agentes podem se afastar do objetivo original. session_detect_drift compara o trabalho atual com o objetivo declarado e retorna on_track / minor_drift / major_drift para que o agente possa se autocorrigir.
Verificação Comportamental — detecte edições ruins antes que elas aconteçam
Agentes de IA aplicam padrões de listas de verificação sem entender o impacto no mundo real. A ferramenta verify_behavior desafia o agente com um cenário que ele deve responder antes de editar — forçando-o a pensar sobre o que o usuário final experimentará.
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 domínios integrados (cobrança, autenticação, pedidos, clínico, RH e mais). Domínios personalizados por espaço de trabalho no Enterprise. Sem necessidade de hooks — funciona em qualquer cliente MCP.
Viagem no Tempo
Reverta para qualquer estado de sessão anterior. Compare diffs entre versões. Restaure um estado conhecido e bom com um clique.
Roteamento Cognitivo
Três tipos de memória, classificados automaticamente: episódica (o que aconteceu — logs de sessão, decisões), semântica (o que é verdade — fatos, arquitetura) e procedural (como fazer X — fluxos de trabalho, padrões). Quando você pesquisa, o roteador escolhe o armazenamento certo em vez de despejar tudo.
Mente Colmeia Multiagente
Coordene vários agentes de IA trabalhando no mesmo projeto. Cada agente tem sua própria sessão, mas eles compartilham memória através do grafo de conhecimento. O Radar da Mente Colmeia mostra o status, as tarefas e a atividade dos agentes em tempo real.
Busca Neural
Pesquise em todas as memórias com resultados destacados, edição do grafo de conhecimento e métricas de densidade de memória.
Local-first e privacidade
O nível gratuito roda inteiramente na sua máquina. Os níveis pagos adicionam sincronização em nuvem através do portal Synalux, que é o que permite memória entre dispositivos e compartilhamento em equipe.
| Nível local (gratuito) | Nível em nuvem (pago) | |
|---|---|---|
| Armazenamento de memória | SQLite local | Portal Synalux (com suporte a Supabase) |
| Inferência | Modelos Ollama locais | Modelos locais + fallback Gemini 3.6 Flash |
| Chaves de API necessárias | Nenhuma | Chave de assinatura Synalux |
| Pesquisa web / raspagem | Não incluído | Via portal Synalux (chaves do provedor no lado do servidor) |
| O que sai da sua máquina | Nada | Texto de memória, caminhos de arquivo, consultas de pesquisa e prompts/rascunhos de inferência quando o recurso de nuvem é usado, enviados ao portal via TLS. Gravações de memória em nuvem têm identificadores pessoais removidos; inferência e solicitações de rota são transitórias. |
| Funciona offline | ✅ | Recursos locais sim; sincronização/nuvem não |
Manipulação de dados sensíveis. As gravações de memória em nuvem passam por
redação automática (SSNs, datas de nascimento, números de registro médico, números
de telefone, e-mails e identificadores clínicos são removidos antes do
armazenamento). A correção de inferência e rota em nuvem envia a solicitação
via TLS para processamento e não a armazena como memória do Prism. O nível
local (sem chave Synalux) é o isolamento; route_guard: "local" apenas pula a
correção de rota, e cloud_fallback e verify governam os outros dois
canais.
Modelos
A frota prism-coder usa Qwen3.5 para roteamento de ferramentas MCP E inferência geral. Os 9B e 27B são ajustados; os 2B e 4B usam Qwen3.5-4B padrão em diferentes níveis de quantização. O 27B obteve 100% em nossa suíte interna de 115 casos de roteamento de ferramentas e 100% em uma avaliação interna de codificação de 15 problemas, a um custo de inferência de $0. Estas são avaliações autoexecutadas, não submissões ao ranking BFCL.
prism_infer suporta três modos: route (roteamento de ferramentas, rápido), chat (conversa) e code (geração de código). O raciocínio é decidido pelo nível, não pelo modo: um nível que carrega MODEL_TIERS.prefersThinking também carrega um piso de minLocalTokens para que o raciocínio não sobrecarregue a resposta, e apenas esses níveis usam blocos <think> (removidos antes de a resposta ser servida). O 9B usa; o 4B e o 2B não, porque nesses níveis o raciocínio consumia o mesmo orçamento de num_predict que a resposta precisava e retornava uma resposta vazia. Um think: true explícito ainda substitui, para um chamador que dimensionou max_tokens para isso. Se o modelo local falhar em uma verificação de qualidade (vazio, apenas-pensamento ou truncado), os níveis pagos escalam automaticamente para Gemini 3.6 Flash via portal Synalux.
Todo resultado de modo de rota é analisado localmente e verificado contra allowed_tools
antes de chegar ao host. Chamadas malformadas ou não anunciadas tornam-se NO_TOOL.
Com route_guard: "auto" (o padrão), os planos Standard e superiores também enviam
um rascunho bem formado para uma das sete ferramentas treinadas do Prism—ou um
rascunho não anunciado que pode precisar de correção—para a Synalux para correção
determinística autenticada. Ferramentas de host personalizadas anunciadas permanecem
locais. route_guard: "local" desativa apenas essa correção: o fallback de inferência em
nuvem é governado por cloud_fallback, e o verificador de fundamentação é um canal
separado com seu próprio interruptor (verify, ativado por padrão quando
evidence é fornecido). Com todos os três desativados, nenhuma solicitação
carrega seu prompt, rascunho ou evidência; a verificação de direito e a telemetria
ainda contatam o portal e não carregam nenhum deles.
| Modelo | Tag Ollama | Tamanho | Visão | Precisão de roteamento¹ | Função | Nível de roteamento automático |
|---|---|---|---|---|---|---|
| Qwen3.5-4B Q4_K_S | prism-coder:2b | 3,3 GB | ✅ | 100% | No dispositivo / menor RAM (4,5 GiB livres) | Gratuito |
| Qwen3.5-4B Q4_K_M | prism-coder:4b | 3,5 GB | ✅ | 100% | Verificador (5,2 GiB livres) | Gratuito |
| Qwen3.5-9B (LoRA) | prism-coder:9b | 6,7 GB | ✅ | 95,7%² | Roteador padrão / cavalo de batalha (9 GiB livres) | Gratuito |
| Qwen3.5-27B (LoRA) | prism-coder:27b | 16,8 GB | — | 100% | Código complexo / qualidade (21 GiB livres) | Gratuito |
¹ Autoexecutado em uma suíte estreita de 115 casos de seleção de ferramentas MCP, temperature: 0,
medido através do caminho de chamada que prism_infer realmente usa (/api/chat, o
template de cada modelo). Isso diz que esses modelos escolhem a ferramenta certa em nossa própria
avaliação, nada mais — não é uma medida de capacidade geral, nem um resultado de benchmark
independente. Revisões anteriores desta tabela citavam 99,1–100% de um harness que
criava manualmente um prompt ChatML com raw: true, ignorando o template;
esses números descreviam um caminho que nenhum chamador exercita. Avisos completos de
metodologia abaixo.
² O 9B é o único nível que raciocina antes de responder, e é medido com
raciocínio habilitado: 95,7% com pensamento, 83,5% sem. prism_infer define isso
por nível (MODEL_TIERS.prefersThinking), então os chamadores obtêm o caminho de 95,7% por
padrão. O raciocínio custa aproximadamente 600 tokens, que é o motivo pelo qual o 9B também carrega um
piso local de 2.048 tokens.
Visão. As tags 2B/4B/9B incluem uma camada projector separada (0,68–0,92 GB)
e leem imagens; o 27B é somente texto. prism_infer verifica essa camada e
pula um nível sem visão em vez de enviar uma imagem — se perguntado diretamente, um
modelo somente texto ainda responderá com confiança sobre pixels que nunca recebeu.
Exercitado contra os modelos reais em tests/integration/visionScreenshot.test.ts.
Esses níveis controlam a seleção automática de prism_infer, não o próprio Ollama. Qualquer
usuário pode executar qualquer modelo local baixado diretamente através do Ollama em todos os
planos.
Pesos: huggingface.co/dcostenco (GGUF público). A latência depende do tamanho do modelo e do hardware — veja Benchmarks para medi-la em sua própria máquina em vez de confiar em um número impresso.
Cascata
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)
Verificação em Múltiplas Camadas
A saída da rota e as respostas fundamentadas em evidências usam portões separados. Cada nível obtém o analisador de rota local e o registro de ferramentas anunciadas; os planos Standard e superiores podem adicionar a correção de rota determinística privada. A verificação de evidências é opt-in (ou automática quando evidências são fornecidas) e permanece separada da seleção de rota.
| Camada | O quê | Modelo | Custo |
|---|---|---|---|
| L1 | Portão de segurança de crise/médico | Nenhum (regex) | 0 ms |
| L3-Registro | Validação de envelope + aplicação de ferramentas anunciadas (todos os níveis) | Nenhum | 0 ms |
| L3-Rota | Correção de rota determinística autenticada (Standard+) | Nenhum | Latência de rede |
| L3-Tier0 | Fundamentação inteira (associação de conjunto) | Nenhum (determinístico) | 0 ms |
| L3-Tier2 | Verificador NLI (afirmação → ENTAILED/NEUTRAL/CONTRADICTED) | prism-coder:2b | ~200 ms |
| L4 | Juiz de alucinação (opt-out para clínico) | prism-coder:4b | ~500 ms |
Falha fechada no caminho verificado: quando o verificador de fundamentação é executado, tempo limite, ambiguidade ou evidência ausente resulta em recusa, não em passagem. Se a correção de rota paga não estiver disponível, o registro local ainda bloqueia chamadas malformadas e não anunciadas e relata uma rota preservada permitida como degradada.
Benchmarks
Os números de benchmark publicados são resumos concisos de avaliação determinística interna. Avaliadores, casos exaustivos, matrizes exatas de roteamento de nível e saídas brutas de modelo permanecem no repositório de engenharia privado e não estão incluídos no pacote npm ou na árvore de código-fonte público.
Avaliação de roteamento. Em uma suíte estreita de seleção de ferramentas, a frota alcançou resultados quase saturados em três sementes. Isso mede a confiabilidade de roteamento MCP offline, não a capacidade geral do modelo.
| Modelo | Precisão de roteamento | Notas |
|---|---|---|
| prism-coder:2b (Q4_K_S) | 100% | O 2B foi requantizado quando a visão foi lançada; o antigo 99,1% era Q3_K_M |
| prism-coder:4b | 100% | |
| prism-coder:9b | 95,7% com raciocínio | 83,5% sem — o único nível onde isso difere |
| prism-coder:27b | 100% | |
| Claude (fronteira, mesma avaliação) | ~98% | Mais forte em todos os lugares fora desta tarefa estreita |
Medido através de /api/chat com o template de cada modelo — o caminho
que prism_infer usa. temperature: 0, então as três sementes apenas reordenam
a ordem dos casos e não podem discordar; revisões anteriores citavam esse acordo como
confirmação, o que nunca foi.
Uplift de memória (LoCoMo-Plus, autopublicado). Um benchmark separado de diálogo de contexto longo (dcostenco/Locomo-Plus) mede o quanto a memória estruturada ajuda um modelo base a reter contexto de vários dias. Os resultados mostram grandes ganhos quando um modelo é emparelhado com a memória do Prism versus rodar cru. Observe que este benchmark é escrito, executado e julgado por LLM por este projeto — trate-o como uma demonstração reproduzível, não um resultado independente de terceiros, e execute-o você mesmo com os comandos nesse repositório.
Avaliação de geração de código. Em uma pequena verificação de execução determinística de julho de 2026, o 9B local passou em 2/3 tarefas; o 27B local e o Gemini 3.6 Flash cada um passou em 3/3. Este é um sinal de regressão autopublicado, não um ranking independente ou uma afirmação de equivalência ampla de modelo.
Escalação em Nuvem (cloud_fallback)
O Prism sempre tenta primeiro um modelo local elegível. Se o portão de qualidade detectar uma resposta vazia, truncada, apenas-pensamento ou em loop, ou a tela de segurança considerar a solicitação incerta ou reservada, um plano pago escala a solicitação através do Gemini 3.6 Flash. O roteamento do nível gratuito permanece local e relata o resultado sem fazer uma chamada em nuvem.
A flag segue o plano. Deixe-a não definida e seu plano decide: planos pagos
escalam, planos gratuitos nunca o fazem. Passe false para proibir o fallback de inferência em nuvem
para uma chamada, o que as regras de delegação clínica fazem para rascunho; passe true
para solicitá-lo, o que ainda requer um plano com nuvem. Uma solicitação que carrega
uma imagem nunca é escalada; capturas de tela permanecem neste dispositivo.
Por que Prism Coder
Seus dados locais permanecem no seu dispositivo. Memória, modelos locais e a verificação de respostas são executados na sua máquina, sem necessidade de conta. Os dados saem dela apenas quando você ativa um recurso de nuvem, e somente o que esse recurso precisa; consulte Local-first e privacidade.
- Grátis sem conta, sem limite no tamanho do modelo local.
- Memória e modelos em um único servidor MCP: memória persistente, um grafo de conhecimento e roteamento automático para modelos locais Ollama, com respostas em nuvem apenas quando seu plano e configurações permitirem.
- Respostas verificadas: uma resposta local multi-turno é verificada no seu dispositivo antes de ser entregue.
Como se compara
Preços da página de preços de cada fornecedor, verificados em 26/09/2026. Os planos mudam com frequência; siga os links para os termos atuais. A tabela compara apenas os planos publicados; não é uma afirmação de que um produto não possui um recurso não listado.
| Produto | O que é | Grátis | Individual | Equipe, por assento |
|---|---|---|---|---|
| Prism Coder | Memória local e roteamento de modelos (MCP), nuvem opcional | Tudo local, sem conta | Pro $15/mês | $20, mínimo de 2 assentos |
| GitHub Copilot | Assistente de codificação | Limitado | Pro $10, Pro+ $39, Max $100 | Business $19, Enterprise $39 |
| Cursor | Editor de código com IA | Hobby, limitado | Pro $20 | Teams $40 |
| Windsurf | Editor de código com IA | Plano gratuito | Pro $20, Max $200 | Teams $40 |
| Claude | Assistente; Claude Code a partir do Pro | Grátis (sem Claude Code) | Pro $20, Max a partir de $100 | Team $25 ($20 cobrado anualmente) |
| Amazon Q Developer | Assistente de codificação | 50 solicitações agênticas por mês | Pro $19 por usuário | -- |
| Ollama | Runtime de modelo local, modelos em nuvem | Modelos locais, créditos iniciais de nuvem | Pro $20 ($60 em créditos de nuvem), Max $100 | Team $500/mês, usuários ilimitados |
| Mem0 | API de memória | 10.000 adições, 1.000 recuperações por mês | Starter $19; memória em grafo a partir do Pro $249 | -- |
| Supermemory | API de memória | $5 em créditos por mês | Pro $19 (3 assentos), Max $100 | -- |
| Zep | Memória (grafo de conhecimento) | 10.000 créditos por mês | Flex $125 | -- |
| Pieces | Memória de desenvolvedor no dispositivo | Nenhum (teste de 7 dias) | Pro $18.99 | Enterprise $22.99 |
| MemPalace | Memória local de código aberto (MIT) | Grátis | -- | -- |
Planos
Tudo o que é executado na sua máquina é gratuito, sem conta e sem limite no modelo local. Uma conta Synalux gratuita adiciona o que precisa da Synalux; Pro e Team adicionam recursos de nuvem e limites mais altos.
| Grátis (sem conta) | Conta gratuita | Pro $15/mês | Team $20/assento/mês | |
|---|---|---|---|---|
Modelos locais via Ollama (roteamento automático prism_infer) | até 27b | até 27b | até 27b | até 27b |
| Memória local, grafo de conhecimento, painel, ferramentas MCP | ✅ | ✅ | ✅ | ✅ |
prism_infer multi-turno, com verificação de resposta no dispositivo | -- | 12 turnos / 32k caracteres | 12 turnos / 32k caracteres | 20 turnos / 64k caracteres |
| Respostas em nuvem (Gemini 3.6 Flash; conversas de conta gratuita: 3.5 Flash-Lite) | -- | 20/dia | 1.000/mês (500 no teste; máx. 200/dia) | 1.500/mês por assento (máx. 200/dia) |
| Confirmação em nuvem de uma resposta local (em uma cópia pseudonimizada) | -- | -- | ✅ | ✅ |
| Verificador de fundamentação (verificação factual de saída de IA; conta como resposta em nuvem) | -- | -- | ✅ | ✅ |
| Busca em nuvem | -- | -- | 1.000/mês (máx. 150/dia) | 1.500/mês por assento (máx. 150/dia) |
| Sincronização de memória (nuvem) | -- | -- | ✅ | ✅ |
| Biblioteca completa de habilidades, super-habilidades, roteamento de agentes, habilidades de conta e equipe | -- | -- | ✅ | ✅ |
| Assentos | 1 | 1 | 1 | 2 ou mais |
O Pro começa com um teste de 14 dias. Nenhum cartão é necessário para começar; adicione os dados de pagamento antes do término do teste para continuar, ou a assinatura é cancelada automaticamente e o Prism Free permanece disponível. Veja o prazo exato em ⚙ Conta e Configurações → Conta em prism dashboard. Uma confirmação em nuvem conta como uma das respostas em nuvem do dia. Para iniciar um plano Team: entre em contato com vendas.
Como os agentes usam
O Prism expõe mais de 40 ferramentas MCP. O loop central de memória:
| Ferramenta | O que faz |
|---|---|
session_bootstrap | Saudação de primeiro turno sem hook e contexto configurado no painel |
session_load_context | Recarregamento explícito do projeto ou fallback de inicialização de servidor mais antigo |
session_save_ledger | Anexar uma entrada de log de sessão imutável |
session_save_handoff | Salvar estado ativo para a próxima sessão |
knowledge_search | Busca semântica + por palavras-chave em todas as memórias |
query_memory_natural | Perguntas e respostas com prioridade de memória, com fallback fundamentado em fontes ativas em planos pagos |
session_detect_drift | Detectar quando uma sessão se desviou de seu objetivo |
verify_behavior | Desafio de cenário pré-edição — detectar mudanças ruins antes que aconteçam |
knowledge_ingest | Ensinar ao Prism um código ou documento |
prism_infer | Inferência local-first (modos rotear/conversar/código, raciocínio, escalonamento para nuvem) |
inference_metrics | Delegação de sessão ou estatísticas locais/nuvem do painel MCP + VS Code persistido |
local_savings | Volume de tokens de serviço local mantido fora do seu modelo em nuvem, todo o tempo / 30 dias / sessão |
query_memory_natural — memória primeiro, fontes atuais quando necessário
Faça uma pergunta em linguagem natural em vez de escolher ferramentas separadas de memória, busca, raspagem e inferência. O Prism busca primeiro sua memória acumulada do projeto. Se não houver evidência útil, os planos pagos executam uma busca Synalux limitada (Firecrawl, fundamentação do Google Search Gemini 3.6, depois fallback legado Brave), resolvem e preservam as URLs das fontes, raspam a página principal e pedem a um modelo local Prism Coder seguro para RAM que responda com base nessa evidência. O verificador Gemini 3.6 de nível pago verifica o rascunho antes de ser entregue. Conteúdo clínico reservado ou incerto nunca entra no caminho local fundamentado na web; ele segue o limite de segurança de nuvem-ou-recusa do Prism.
prism_infer — inferência local-first com escalonamento para nuvem
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",
})
Multi-turno: por que importa e por que é um recurso pago
Uma única chamada prism_infer não tem memória. O host faz uma pergunta, o modelo local responde, e a próxima chamada começa do zero: "agora adicione um timeout a isso" não significa nada para um modelo que nunca viu "isso". Sem histórico, o host ou reafirma todo o contexto em cada prompt (tokens, e a resposta se desvia) ou desiste da delegação local e faz o acompanhamento ele mesmo na nuvem. Com messages, o host devolve os turnos que aceitou e o modelo local continua o tópico a $0, o que torna a delegação local útil para trabalho real em vez de trechos de uma única vez.
É pago porque não pode ser executado sem a Synalux por trás:
- Os limites são fornecidos pelo portal, por plano. Quantos turnos e quantos caracteres uma conversa pode carregar é um direito que seu plano retorna, não um número que o cliente decide. Sem portal, sem política, e a chamada é recusada como
multi_turn_not_in_plan. - Turnos ambíguos vão para a nuvem Synalux. Cada turno é verificado quanto à segurança no dispositivo, sozinho e em contexto. Um turno que a verificação considera incerto nunca é servido pelo modelo local; ele vai para a nuvem quando o plano permite, e é recusado caso contrário. O Free não tem nuvem, então a única resposta honesta para o gratuito é nenhum histórico.
- Nada é armazenado. O Prism limita, verifica, conta e encaminha os turnos que o host envia, e não mantém nenhum deles.
Sem multi-turno (plano gratuito, ou sem `messages`): cada chamada começa fria
// 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)
Com multi-turno (plano pago): o tópico continua localmente, e a verificação 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 em 20.21.14 através do handler real, no 9b local com nuvem desligada:
- Cada acompanhamento benigno que chegou ao 9b local com sua conversa anexada foi respondido corretamente. Sem a conversa, a maioria das respostas foi inventada.
- A verificação no dispositivo ainda recusa muitos acompanhamentos benignos: 11 de 26 em nossos testes. Cada recusa nomeia seu motivo. Reduzir essas recusas falsas é o trabalho atual.
- Cada sonda multi-turno reservada foi recusada antes de qualquer geração (11 de 11).
| Modo | Raciocínio | Modelo | Caso de uso |
|---|---|---|---|
route | Desligado (rápido) — exceto um nível que raciocina melhor, ex. 9B | 9B padrão | Roteamento de ferramentas MCP |
chat | Por nível: ligado para 9B, desligado para 4B/2B | 27B preferido | Conversa, raciocínio |
code | Por nível: ligado para 9B, desligado para 4B/2B | 27B preferido | Geração de código, depuração |
Raciocínio é uma propriedade de nível, não de modo. Níveis com prefersThinking também declaram um piso de minLocalTokens que reserva orçamento para a resposta; níveis sem ele gastam toda a permissão de num_predict dentro de <think> e não retornam nada. Passe think explicitamente para substituir em qualquer direção.
Assinaturas TypeScript completas estão em src/tools/; arquitetura em docs/ARCHITECTURE.md.
inference_metrics — veja seu uso de modelo local sob demanda
Chame inference_metrics a qualquer momento no meio da sessão para ver quantas chamadas prism_infer foram executadas localmente vs. nuvem. Use period: "all" para importar atomicamente o spool do painel VS Code Synalux e incluir sua taxa de serviço local nos totais 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
O mesmo bloco também aparece automaticamente nas respostas de session_save_ledger e session_save_handoff no final da sessão.
Nota: A visualização de sessão padrão rastreia a delegação prism_infer deste processo MCP. A visualização de todo o tempo combina chamadas MCP persistidas com inferência do painel VS Code Synalux. Nenhuma visualização inclui o gasto de tokens do próprio host; use o relatório de uso nativo desse host quando disponível.
local_savings — o que o serviço local realmente deslocou
inference_metrics relata contadores brutos. local_savings responde à pergunta por trás deles: quanto trabalho nunca chegou ao seu modelo em nuvem. Chame a ferramenta em qualquer host, ou execute prism savings de um terminal — --period all|month|week|session, --days N para qualquer janela personalizada (ex. --days 90 para um trimestre), e --json para saída legível 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 que tokens e não dinheiro. O Prism relata volume de tokens e nunca um valor em moeda, porque não pode produzir um honestamente: as taxas publicadas mudam e uma tabela de preços agrupada estaria errada com o tempo; o prism nunca observa qual modelo seu host teria usado, e essa escolha sozinha é uma variação de múltiplas vezes nos mesmos tokens; e a maioria dos usuários está em planos fixos onde um valor em moeda não significa nada. Tokens são a única unidade que o prism mediu por si mesmo. Se você conhece sua própria taxa efetiva, multiplique — a divisão é impressa exatamente por esse motivo.
Acompanhamentos. Chamadas que carregaram sua conversa (messages) têm sua própria linha:
- quantas o modelo local respondeu, e quantas dessas o 9b respondeu;
- quantas a verificação no dispositivo recusou, e em qual estágio (o acompanhamento lido sozinho, um turno anterior lido sozinho, ou os turnos lidos juntos);
- quantas foram para a nuvem.
Um acompanhamento recusado voltou ao seu host em vez de ser respondido localmente, então esta linha mostra quanto do seu trabalho de acompanhamento o serviço local realmente assumiu. Recusas porque seu plano não inclui histórico multi-turno, ou o histórico está acima do limite, são contadas em sua própria linha. Elas são registradas apenas quando o host solicita um relatório (escalation: "report"); caso contrário, falham antes que qualquer coisa seja registrada. A linha aparece para as visualizações week, month, all e --days, que leem o registro durável.
Chamadas recusadas são excluídas, a parcela do playground do painel do VS Code é divulgada separadamente, e as fontes conhecidas de subcontagem são listadas inline em vez de ficarem implícitas — portanto, o título durável (week/month/all/--days) é um piso medido, e não um número que apenas parece preciso. Os números são por máquina: cada máquina reporta seu próprio registro local.
Consolidação da equipe (pago). Em planos pagos, o prism savings --sync-enable ativa esta máquina para a sincronização de economia: uma vez por sessão, o Prism envia contadores diários — contagens de chamadas e totais de tokens, nunca prompts, conclusões, nomes de projetos ou saída do modelo (o payload do upload é um conjunto fechado de campos; o servidor rejeita qualquer outra coisa). O prism savings --team (ou a ferramenta local_savings com scope: "team") então mostra a consolidação no seu workspace: total de tokens mantidos fora dos modelos em nuvem, parcela por membro, contagens de dispositivos. Membros que não ativaram simplesmente não são contados, então o número da equipe é um piso. A sincronização está desativada por padrão, o --sync-disable a interrompe, e a sincronização mais profunda de conteúdo de sessão (handoffs) é um canal separado com criptografia de ponta a ponta — os dois não são deliberadamente unificados, porque um blob E2E não pode ser agregado e um canal de contadores nunca deve carregar conteúdo. A visualização session é a única exceção: em acertos de cache KV, ela estima os tokens de prompt enviados a partir do texto (o registro conta o 0 medido em vez disso), então é marcada como (est.) e informa isso sempre que ocorre.
Delegação para modelos locais (padrão)
O Prism roteia trabalho limitado qualificado — classificação em massa, extração de campos, formatação mecânica, geração de testes e tarefas semelhantes — para modelos Ollama locais antes de qualquer subagente nativo do host. O agente verifica gate_outcome, valida o resultado e continua no thread atual do host quando o worker local está indisponível, recusado ou degradado.
Passe a memória do projeto quando a subtarefa depender de trabalho anterior:
{
"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"
}
Omita context_depth para usar a configuração do painel. Desative o alternador de Roteamento de Tarefas do painel ou defina PRISM_TASK_ROUTER_ENABLED=false para uma desativação explícita.
Salvaguardas:
- Local por padrão — uma desativação explícita do operador é preservada
- Nunca delega: código/texto que vai para o usuário, lógica de segurança/proteção, planejamento/raciocínio, qualquer coisa em que uma queda silenciosa de qualidade não seja óbvia
- Sempre verifica: verifica
quality_gate_failedeused_cloudantes de confiar na saída local
Como o Prism sobrevive à compactação de contexto
A janela de contexto do LLM é tratada como espaço temporário efêmero; o estado durável vive no armazenamento persistente (SQLite localmente, o portal na nuvem). Cada sessão começa com uma chamada obrigatória sem argumentos session_bootstrap, para que o Prism aplique a configuração de projeto e rápido/padrão/profundo do painel antes que o agente escreva uma resposta. Quando um projeto excede um limite (padrão de 50 entradas), o session_compact_ledger resume entradas antigas em um resumo, arquiva suavemente os originais e os vincula no grafo. Veja 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 — teste de navegador local
O pacote npm inclui o executor de navegador Python/Playwright do Prism; nenhum aplicativo Prism Browser separado ou DMG é necessário. Ele adiciona uma CLI estável voltada para agentes em torno do Playwright com perfis nomeados reutilizáveis, sessões de pipe/REPL com múltiplas ações, logs de auditoria locais editados e scripts de pré-carregamento protegidos para aplicativos locais. Use o modo pipe ou REPL quando várias ações precisarem compartilhar uma única sessão de página:
printf 'open http://127.0.0.1:3000\nwait-for #app\nread-dom #app\n' | \
prism browser --headless --local-only pipe
Aplicativos locais podem carregar auxiliares de teste repetíveis de pré-navegação com --inject ./tests/browser-init.js. Injeção personalizada requer --local-only; navegação pública e solicitações fora do loopback são rejeitadas nesse modo. Instale o runtime local uma vez com pip3 install playwright playwright-stealth e python3 -m playwright install chromium.
Use o Playwright puro para suítes autorais que precisam de suas APIs completas de asserção, rastreamento, fixtures e workers paralelos. Use prism browser quando um agente de IA precisar de uma sessão de navegador local pequena, persistente e auditável por meio de uma CLI consistente. Os patches de compatibilidade são de melhor esforço; não são uma garantia de bypass de CAPTCHA. Veja Teste de navegador local do Prism para a superfície de comandos, modelo de segurança e casos de aceitação verificados.
prism search — busca semântica de código
prism review — revisão de código com IA com verificações de segurança e privacidade
prism scan — scanner de segurança para segredos, Dockerfiles, licenças
Companheiros
O Prism funciona junto com essas ferramentas — use a que se adequar ao seu fluxo de trabalho.
IDE Web — Prism Coder
Abra synalux.ai/coder, faça login, conecte o GitHub e importe um repositório ao qual você tenha acesso. Selecione uma branch, abra um arquivo, edite e salve de volta no GitHub.
- Editor Monaco — múltiplas abas, visualização dividida, realce de sintaxe e atalhos de teclado familiares do VS Code.
- Edição no GitHub — seleção de branch, salvamento de arquivos, histórico e proteção contra conflitos. Se um arquivo mudar remotamente, um salvamento conflitante mantém seu rascunho local para recuperação. Renomeações binárias preservam bytes, e caminhos Unicode são suportados.
- Modo Agente de IA — descreva uma tarefa, revise as alterações de arquivo propostas, aplique as alterações selecionadas e salve em uma branch de agente isolada. O rollback descarta essa branch e retorna ao seu trabalho anterior.
- Live Share — inicie uma sessão e compartilhe o convite com membros do repositório para edições sincronizadas e cursores remotos rotulados. A sinalização de primeira parte está habilitada no IDE hospedado.
- Node.js e terminal no navegador — o WebContainer executa scripts de pacote e pré-visualizações quando o navegador suporta seu runtime. O PTY de servidor opcional e o depurador Node.js exigem um servidor de desenvolvimento conectado.
- Tarefas e diagnósticos — um executor
tasks.jsone um painel de Problemas para diagnósticos do Monaco; strings de interface localizadas estão disponíveis em 12 idiomas.
Sessão de produção, 8 de setembro de 2026. As capturas de tela a seguir foram obtidas do IDE ao vivo usando um repositório de teste privado. A sessão exercitou importação/salvamento do GitHub, recuperação de conflitos, renomeação binária, arquivos Unicode, revisão/aplicação/salvamento/rollback do Agente e texto e cursores do Live Share em ambas as direções.
Revise uma proposta do Agente antes de aplicá-la. O diff abaixo propõe uma nova função add(a, b). As alterações selecionadas foram então aplicadas e o arquivo exato foi salvo na branch do agente; o rollback foi verificado depois.

Mantenha seu rascunho quando uma edição remota conflitar. A barra de status relata o conflito enquanto a edição local não salva permanece no editor. A recuperação do rascunho também foi verificada após recarregar.

Veja as edições e cursores dos colaboradores. O host recebe a edição e o cursor do convidado na primeira captura. O convidado recebe a edição de retorno e o cursor do host na segunda. Essas capturas mostram duas abas do Safari usando a mesma conta autorizada; conexões de usuários separados e entre dispositivos não foram cobertas por esta execução.


Requisitos de runtime. Chrome ou Edge é recomendado para instalação de pacotes WebContainer, testes e pré-visualizações; veja Suporte de navegador do WebContainer. A edição no Safari e os fluxos de trabalho mostrados acima foram exercitados, mas a instalação do npm ainda falhou nesta sessão do Safari. Edição bem-sucedida não estabelece execução de código bem-sucedida. A execução de testes e verificação de tipos do Agente também depende do runtime. A IA em nuvem requer o plano aplicável e o serviço configurado; o Ollama local requer uma conexão explícita.
Extensão VS Code — Synalux
IA com memória aumentada dentro do VS Code com recursos de gerenciamento de prática clínica. Instale pelo marketplace:
code --install-extension synalux-ai.synalux
Chat de IA, entrada de voz, gerador de notas SOAP, colaboração em equipe e videochamadas — tudo dentro do VS Code. Roteia pelo Ollama local por padrão; nuvem em níveis pagos.
Detalhes dos recursos
- IA: Participante de chat (
@synalux), pipeline multiagente, entrada de voz, troca de modelos, 10 tons - Clínico: Gerador de notas SOAP, acesso baseado em funções, assinatura de documentos
- Colaboração: Chat em equipe, DMs, videochamadas, quadro de clientes, construtor visual, DevContainers
- Privacidade: Ollama local por padrão. O
preferLocal=truetenta local primeiro.
Prism AAC
Aplicativo de comunicação para usuários não falantes, alimentado pela frota prism-coder no dispositivo para previsão de frases. macOS / iOS / web.
Veja github.com/dcostenco/prism-aac
Git Hooks (Portátil)
Hooks de segurança de pré-commit e pré-push que funcionam com qualquer editor, qualquer ferramenta de IA e CLI direta. Sem dependência do 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 | O que verifica | Modo |
|---|---|---|
pre-commit | Código morto, serviços órfãos, código de andaime, autenticação ausente | PRECOMMIT_MODE=advisory|block|off |
pre-push | Auditoria de segurança com 19 regras (SSRF, injeção de SQL, segredos, IDOR, etc.) | PREPUSH_MODE=advisory|block|off |
O modo padrão é advisory (avisar, mas permitir). Defina *_MODE=block para aplicação rígida. Os hooks procuram scripts de auditoria completos no repositório primeiro (hooks/lib/), depois fallback ~/.claude/hooks/, e então verificações inline mínimas.
Self-hosting (Enterprise)
Execute a pilha completa de modelos em seu próprio hardware — sem nuvem, soberania total de dados.
Requisitos: Mac M2 Pro+ (48 GB recomendado) ou Linux + GPU NVIDIA, além de Ollama.
ollama pull dcostenco/prism-coder:9b # default router
export LOCAL_LLM_URL=http://localhost:11434
O roteamento self-hosted permanece local: 9b → 4b em desktop/servidor e 2b em
mobile/iPhone, com 27B disponível quando instalado e seguro para RAM. Níveis
pagos hospedados pela Synalux podem usar o Gemini 3.6 Flash como fallback de nuvem. Para iOS ou outra
máquina na mesma rede, execute OLLAMA_HOST=0.0.0.0 ollama serve e aponte
LOCAL_LLM_URL para o IP do host.
Referência de configuração
| Variável | Propósito | Padrão |
|---|---|---|
PRISM_STORAGE | local / synalux / supabase / auto | auto |
PRISM_SYNALUX_API_KEY | Chave do portal do nível pago (synalux_sk_...) | -- (local se não definido) |
LOCAL_LLM_URL | Endpoint do Ollama | http://localhost:11434 |
PRISM_FORCE_LOCAL | Forçar SQLite local independentemente das credenciais | false |
TELEMETRY_WRITE_TOKEN | Token de análise do portal (opcional — a exibição de métricas funciona sem ele) | -- |
Com nenhuma variável definida, o Prism executa totalmente local. Com uma assinatura ativa de memória em nuvem, defina PRISM_SYNALUX_API_KEY (e deixe PRISM_STORAGE=auto) para usar o backend Synalux; um nível gratuito confirmado pelo portal permanece no SQLite local.
Testes
npm test # full suite (vitest) — 95 files, 2841 tests
npm test -- --coverage # coverage report
A cobertura abrange recuperação HRR, ingestão de conhecimento, a cascata de inferência e o verificador de fundamentação, métricas de inferência, allowlist de telemetria, portão de delegação, compactação, o seletor de modelos e round-trips de armazenamento.
Migração: local para nuvem
Para mover o histórico do nível gratuito para o portal 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
Ele lê ~/.prism-mcp/data.db e faz POST das entradas para o portal. As entradas do registro são somente anexação e de-duplicadas no servidor; handoffs usam última escrita vence por projeto. Reexecutar no mesmo banco de dados é seguro. Esta é uma migração única, não um daemon de sincronização — depois dela, defina PRISM_STORAGE=synalux (ou deixe em auto).
Licença e níveis
Este repositório (o cliente MCP Prism) é licenciado sob Apache-2.0.
Gratuito (sem conta)
| Recurso | Detalhes |
|---|---|
| Inferência local | O uso direto do Ollama é irrestrito; o roteamento automático prism_infer seleciona até 27B, tanto quanto a memória da sua máquina permitir |
| Memória de sessão | Sessões persistentes, handoffs, registro — tudo em SQLite local |
| Busca de conhecimento | Busca semântica no histórico de sessões |
| Skills | Todas as skills disponíveis localmente (execute sync-skills.sh para popular) |
| Detecção de deriva | Lembretes GATE 5 no servidor |
Conta gratuita (login Synalux, $0)
Tudo no plano Free, mais:
| Recurso | Detalhes |
|---|---|
Multiturno prism_infer | Histórico de conversa mantido entre chamadas; cada resposta local é verificada no seu dispositivo antes de ser exibida |
| Respostas na nuvem | 20 por dia do Gemini quando uma resposta local não pode ser usada: 3.5 Flash-Lite em uma conversa, 3.6 Flash para um prompt único |
Faça login em prism dashboard em Conta.
Pro ($15/mês) e Team ($20/assento/mês, mínimo de 2 assentos)
Tudo na conta gratuita, mais:
| Recurso | Detalhes |
|---|---|
| Respostas na nuvem | 1.000 por mês (Pro; 500 durante o teste de 14 dias) ou 1.500 por mês por assento (Team), no máximo 200 por dia, do Gemini 3.6 Flash; uma confirmação na nuvem conta como uma |
| Confirmação de resposta | Uma resposta local que passou na verificação no dispositivo também é confirmada pela Synalux, em uma cópia com nomes, datas e outros identificadores substituídos no seu dispositivo |
| Roteamento de habilidades | O portal resolve quais habilidades carregar com base no seu projeto e prompt |
| Memória entre dispositivos | Sincronização na nuvem Supabase — sessões sobrevivem entre máquinas |
| Verificador de fundamentação | Verificação NLI L3 nas saídas do modelo |
| Recursos de equipe | Hivemind multiagente, colaboração em workspace, habilidades de conta e equipe |
Os planos pagos adicionam roteamento inteligente — o portal Synalux determina quais habilidades são relevantes para o seu projeto e prompt atuais, para que seu agente obtenha conhecimento especializado (padrões de stripe, protocolos de treinamento, padrões clínicos) em vez de carregar tudo. Usuários gratuitos com o repositório podem executar sync-skills.sh para popular todas as habilidades localmente; o roteamento pago adiciona seleção ciente do projeto e do prompt.
- Contribuições exigem assinatura do CLA.
- "Prism" e "Synalux" são nomes comerciais da Synalux LLC; a licença Apache não concede direitos de marca registrada (ver §6 da licença).
Mudança de licença (v20)
A partir desta versão, o prism-mcp foi relicenciado de AGPL-3.0 para Apache-2.0. Versões anteriores permanecem sob AGPL-3.0. Forks existentes mantêm todos os direitos recebidos sob a licença original.
| Produto | Licença |
|---|---|
| prism-mcp-server (este repositório) | Apache-2.0 |
| Extensão VS Code (synalux-ai.synalux) | BSL-1.1 |
| Web IDE (synalux.ai/coder) | Termos de Serviço da Synalux |
| Prism AAC | Apache-2.0 |
Este repositório é licenciado sob Apache-2.0. Recursos de nuvem (inferência hospedada, memória entre dispositivos, recursos de equipe) são fornecidos pelo serviço de nuvem da Synalux sob termos separados.
© 2026 Synalux, LLC.