Memória com visão retrospectiva para OpenCode, Cursor e outros agentes de codificação
Memória de projeto que persiste entre sessões.
Cada sessão de agente de codificação começa em branco. A regra de nomenclatura de terça-feira passada e a análise do bug estavam no chat, e o chat desapareceu. A próxima sessão começa em branco, e você explica tudo novamente.
Os comandos abaixo correspondem ao pacote @vectorize-io/hindsight-coding-agents 0.8.4, publicado em 30/10/2026, que depende do @vectorize-io/hindsight-all ^0.10.2. O comportamento do pacote, as taxas da nuvem e a Memory Defense nesta página foram verificados em 03/11/2026. Outras formas de manter fatos entre sessões estão nas páginas de Memória para Sistemas de IA.

Um agente de codificação pode ler o repositório, executar os testes e alterar o código. No entanto, ele ainda não consegue ver uma decisão que nunca foi registrada no arquivo que tem aberto. Suponha que o bug de exportação tenha sido investigado no ano passado: a citação CSV padrão foi tentada e revertida porque o ERP de destino remove zeros à esquerda, e o único formato que funciona é o formato de fórmula de texto do Excel.
A documentação de coding-agents do Hindsight é voltada para esse tipo de decisão, aquela que existe em uma mensagem de commit ou em um chat anterior. O plugin copia mensagens de commits recentes para um banco de memória, grava a sessão de volta conforme você trabalha e mantém cinco páginas para que a próxima sessão possa começar a partir delas. OpenCode, o Cursor CLI, Claude Code e as outras ferramentas listadas pelo pacote compartilham esse banco para um repositório.
O que é o plugin de coding-agents
Uma instalação mais antiga deve continuar se comunicando com o servidor que você já escolheu. hindsight-claude-code, hindsight-cursor-cli e hindsight-codex são os pacotes que este substitui. Se ~/.hindsight/claude-code.json ou ~/.hindsight/codex.json ainda estiver no disco, o install copia a URL da API e o token daquele arquivo, e uma URL vazia ainda significa o daemon local. A ferramenta que você está instalando é lida primeiro, portanto, uma instalação do Codex mantém o servidor do Codex, mesmo quando um arquivo antigo do Claude está ao lado. Cursor CLI, Copilot CLI, OpenCode e Cline nunca gravaram um arquivo de endpoint, portanto, essas instalações não têm um servidor para copiar.
Configurações antigas de recall e retain, bankMission, retainMission e dynamicBankGranularity permanecem para trás. A documentação de coding-agents diz que elas descrevem um pipeline que este pacote substituiu, e reinterpretá-las seria suposição. O que você obtém em vez disso é um banco por repositório, coding-agent::{gitProject}, compartilhado por todas as ferramentas que abrem esse checkout. Para dar a cada ferramenta seu próprio banco novamente, defina o modelo que a documentação diz corresponder aos nomes antigos:
{ "bankIdTemplate": "{harness}::{gitProject}" }
Executar npx @vectorize-io/hindsight-coding-agents install sem um nome de ferramenta imprime a lista e não grava nada. install all é o comando que conecta todas as ferramentas detectadas. update substitui a cópia sob ~/.hindsight/coding-agents e deixa o arquivo de configuração próprio de cada ferramenta intacto. autoUpdate faz essa substituição em segundo plano uma vez por dia; uma liberação que adiciona um novo hook ainda precisa de install, porque a atualização em segundo plano não edita esses arquivos de configuração. Se o Hindsight for uma opção entre vários backends, a comparação de provedores de memória de agentes o alinha ao Honcho, Mem0 e Mnemosyne.
Escolha onde a memória reside
O banco precisa residir em algum lugar antes que uma sessão possa armazenar uma decisão. Em um terminal, o install pergunta uma vez: Hindsight Cloud, um servidor que você já executa, ou um daemon no mesmo computador que o agente de codificação. Um script passa --server. Um install posterior não pergunta novamente e deixa um servidor que você já nomeou intacto, a menos que você passe --server para alterá-lo.
| Modo | O que executa | O que você fornece | O que sai da máquina |
|---|---|---|---|
cloud |
Hindsight Cloud. Base de API padrão https://api.hindsight.vectorize.io |
Um token de API | Prompts, texto git retido pelo plugin e memórias extraídas, enviados para essa API |
self-hosted |
Um servidor Hindsight que você já executa | Sua URL, convencionalmente http://localhost:8888 |
Enviado para essa URL. Uma URL localhost permanece na máquina |
daemon |
Um hindsight-embed local iniciado pelo plugin em 127.0.0.1:9077 |
uv em PATH, e um LLM para extração de fatos |
Os dados do banco permanecem na máquina. A extração ainda chama o LLM fornecido ao daemon |
npx @vectorize-io/hindsight-coding-agents install opencode --server daemon
npx @vectorize-io/hindsight-coding-agents install opencode --server self-hosted --api-url http://localhost:8888
npx @vectorize-io/hindsight-coding-agents install opencode --server cloud --api-token SEU_TOKEN
O daemon vincula 127.0.0.1:9077 e deixa a porta 8888 para um servidor Hindsight que você execute. Se algo já estiver ouvindo na porta 9077, o plugin usa esse processo para todas as ferramentas de codificação e todos os repositórios, e fechar uma sessão o deixa em execução. A primeira inicialização baixa o hindsight-embed e carrega os modelos em segundo plano, porque um hook não pode esperar tanto tempo. Até que a porta responda, aquela sessão não tem memória por uma ou duas voltas, da mesma forma que um servidor Cloud ou self-hosted inacessível deixa uma sessão sem memória.
Linux e Windows instalam o litellm, que a API puxa, de wheels. macOS o compila, porque não há uma wheel macOS, e a compilação precisa de uma toolchain Rust atual do rustup. Transformar um transcrição em memórias ainda precisa de um modelo de chat: HINDSIGHT_API_LLM_PROVIDER se você definir, caso contrário a primeira chave entre OPENAI_API_KEY, ANTHROPIC_API_KEY, GEMINI_API_KEY e GROQ_API_KEY, caso contrário o CLI Claude Code. Qualquer variável HINDSIGHT_API_* é passada para o daemon. O modelo de incorporação, o reclassificador, um servidor local compatível com OpenAI e um backup do banco estão em Hindsight para Hermes Agent. Com serverMode definido para self-hosted, --api-url é a URL base desse servidor.
A página de preços da Vectorize descreve a edição self-hosted como licenciada sob MIT, sem taxa de assento e sem taxa de token. A nuvem fatura cada operação. As taxas estão na última seção.
Conectar o OpenCode
O OpenCode precisa estar instalado antes que o plugin possa se conectar a ele. O guia rápido do OpenCode cobre essa instalação. Em seguida, aponte o plugin para o daemon:
npx @vectorize-io/hindsight-coding-agents install opencode --server daemon
O instalador grava um caminho de plugin no arquivo de usuário ~/.config/opencode/opencode.json, apontando para ~/.hindsight/coding-agents. Isso é separado de um opencode.jsonc de projeto. O OpenCode carrega as ferramentas hindsight_* do caminho e não precisa de um servidor MCP. O OpenCode 2 (npm @opencode/cli, alvo de instalação opencode2) lê o mesmo arquivo. Instalar qualquer um dos CLIs conecta ambos, e desinstalar qualquer um remove a entrada. O OpenCode v1 rejeita o arquivo se ele contiver a chave plugins do v2, portanto, o instalador grava um único caminho e cada CLI carrega seu próprio ponto de entrada do pacote.
No OpenCode 2, a pesquisa somente leitura do repositório é executada por outra ferramenta instalada, porque um plugin v2 não pode definir o agente somente leitura de que a pesquisa precisa, e o aviso de “semeadura” vai para o log do plugin porque um plugin v2 não pode exibir um toast. O recall, as ferramentas hindsight_* e a gravação da sessão de volta funcionam como no v1.
O OpenCode lê ~/.hindsight/coding-agent.json quando o workspace é carregado, portanto, uma alteração nesse arquivo se aplica após você reiniciar o OpenCode. Um novo apiToken é a exceção em todas as ferramentas: o cliente o lê novamente quando o servidor rejeita uma solicitação, portanto, rotacionar a chave não precisa dessa reinicialização.
Para ver se o banco realmente manteve uma decisão, use duas sessões em um repositório onde você esteja disposto a armazenar dados:
- Inicie o OpenCode ali e state uma decisão descartável, como um código de erro público que você não deseja alterar.
- Termine a sessão. O OpenCode grava a transcrição durante a sessão e limpa a última resposta quando fica ocioso.
- Inicie uma nova sessão no mesmo diretório e peça por esse código e pelo local onde foi decidido.
- Peça ao agente para chamar
hindsight_sync_status."synced": truesignifica que a memória semeada pode ser consultada. O mesmo resultado relata o quão fresco é a cópia git e quantos documentos de pesquisa foram recebidos (surveyDocs, de 0 a 4).
Se a segunda sessão não tiver memória do código, procure em ~/.hindsight/coding-agents-logs/. plugin.log é o rastro legível, diag.jsonl registra cada reflect e busca de página, e usage.jsonl registra quais ferramentas hindsight_* a chamada executou. npx @vectorize-io/hindsight-coding-agents stats resume esse arquivo de uso por agente. Quando um reflect estoura o tempo limite ou retorna um 5xx, diag.jsonl registra uma busca nas páginas de conhecimento e, se nenhuma página corresponder, um recall simples de observações. O agente ainda responde. Se esses recursos de contingência também falharem, aquela chamada não terá nada do banco à sua frente.
Conectar o Cursor e os outros agentes
O Cursor se junta ao mesmo banco através de seu CLI. O instalador grava hooks e MCP sob ~/.cursor:
npx @vectorize-io/hindsight-coding-agents install cursor-cli --server daemon
Isso grava hooks em ~/.cursor/hooks.json, um servidor MCP em ~/.cursor/mcp.json e uma habilidade companheira. Cada hook é um processo de vida curta, portanto, uma edição em coding-agent.json se aplica no próximo prompt. O processo MCP lê o arquivo quando inicia, portanto, as ferramentas hindsight_* veem a edição na próxima sessão.
O Claude Code obtém a mesma fiação de hook e MCP nos arquivos do Claude. install claude-code adiciona três hooks em ~/.claude/settings.json, registra MCP para seu usuário através de claude mcp add e instala ~/.claude/skills/hindsight-coding-agent. Essa habilidade é o que o Claude lê quando você diz a ele para armazenar algo no Hindsight. O Codex CLI (install codex) grava três hooks em ~/.codex/hooks.json e um bloco [mcp_servers] em config.toml, e esses hooks executam apenas quando codex_hooks é verdadeiro.
| Ferramenta | Alvo de instalação | Fiação | Como o agente acessa a memória |
|---|---|---|---|
| OpenCode | opencode |
~/.config/opencode/opencode.json |
Ferramentas nativas, sem MCP |
| OpenCode 2 | opencode2 |
Mesmo arquivo que o OpenCode | Ferramentas nativas, sem MCP |
| Cursor CLI | cursor-cli |
~/.cursor/hooks.json, ~/.cursor/mcp.json, habilidade companheira |
Hooks mais MCP |
| Claude Code | claude-code |
Três hooks em ~/.claude/settings.json, MCP de escopo de usuário, habilidade sob ~/.claude/skills/ |
Hooks mais MCP |
| Codex CLI | codex |
~/.codex/hooks.json, [mcp_servers] em config.toml |
Hooks mais MCP |
| pi | pi |
Extensão em ~/.pi/agent/settings.json, habilidade sob ~/.pi/agent/skills |
Ferramentas nativas, sem MCP |
Kilo, Copilot CLI, Cline, Devin CLI e os outros nomes na página de coding-agents usam o mesmo comando install <name>, e eles compartilham o banco de qualquer repositório que você abrir. O Devin CLI não instalará em Node mais antigo que 22.5, porque seus hooks leem o banco de dados da sessão através de node:sqlite. O pi e o Prime Agent também precisam usar esse comando install. pi install npm:@vectorize-io/hindsight-coding-agents fica sem fiação: ambas as ferramentas leem uma chave pi em package.json, e essa chave pode apontar apenas para uma entrada.
Para impedir que o Claude Code grave no banco enquanto o OpenCode ainda o faz, defina disabled para essa ferramenta:
{
"serverMode": "daemon",
"harnesses": {
"claude-code": { "disabled": true }
}
}
O Claude Code então não armazena nada, não recupera nada e não recebe ferramentas Hindsight. retainSessions definido para false, para todas as ferramentas ou para uma delas, para de salvar transcrições e para de importar antigas. O recall, o histórico git e as ferramentas de memória continuam funcionando, então você ainda pode perguntar sobre o que já está armazenado.
Bancos por repositório e páginas de conhecimento
O OpenCode e o Cursor CLI em um único checkout devem lembrar o mesmo projeto. O nome do banco que faz isso é coding-agent::{gitProject}. {gitProject} é o nome do diretório do checkout principal git, de git rev-parse --git-common-dir, portanto, um worktree vinculado usa o mesmo banco que esse checkout. Uma pasta que não é um repositório git assume o nome do diretório onde a sessão começou.
Uma pasta que deve usar um banco diferente vai em mapPathToBank. Você fornece um caminho absoluto, o caminho de correspondência mais longo vence, e listar a raiz do repositório cobre todos os subdiretórios sob ela. Esse mapa sobrescreve tudo o mais, incluindo um bankId fixo. Defina bankId quando todos os diretórios que você abrir devem gravar em um banco que você nomeou. dynamicBankId definido para false mantém a resolução nesse banco estático em vez de bankIdTemplate.
Se o agente cd para um diretório que pertence a outro banco, as chamadas a partir de então são armazenadas no novo banco. As chamadas já salvas permanecem onde foram gravadas. Cada movimento é um aviso em plugin.log.
A primeira vez que você abre um repositório, esse banco não tem nenhuma das decisões passadas do projeto. A sessão copia mensagens de commits recentes, o que é como uma escolha que existe apenas no git se torna algo que a próxima sessão pode recuperar. A cópia está ativada por padrão (autoSeed). Uma gravação completa desse documento mantém os commits mais recentes, entre metade de seedLimit e seedLimit (300). A janela move-se em passos de metade, e o log diz quantos commits mais antigos ela descartou.
gitIngest escolhe quanto dessa história git é armazenado, tanto para a primeira cópia quanto para commits que você fizer depois. "message" armazena mensagens de commit e atualiza o documento quando o HEAD contém um commit que o documento não tem. "full" também armazena a diff de cada commit, mais recente primeiro. "none" deixa o git de fora. Um commit posterior adiciona sua própria mensagem. O documento inteiro é gravado novamente, ainda dentro dessa janela seedLimit, quando o commit salvo não é mais um ancestral do HEAD, quando mais de seedLimit commits são novos, ou quando o servidor não consegue adicionar com segurança.
Mensagens de commit não mostram como o código está organizado agora, portanto, a mesma primeira sessão também pode percorrer a árvore. Essa caminhada é codebaseSurvey, ativada por padrão. A ferramenta de codificação que você está usando executa-a quando seu CLI pode hospedar um agente somente leitura; caso contrário, outra ferramenta instalada executa-a.
No Claude Code, a caminhada é claude -p, e surveyBudgetUsd (padrão 2) para o gasto. Outras ferramentas usam o modelo para o qual já estão apontadas, dentro do próprio sandbox somente leitura. Após 20 commits novos (surveyRefreshCommits) a caminhada executa novamente. Defina isso para 0 e ela executa apenas em um banco que nunca foi pesquisado.
Nota: A caminhada inicia um agente de codificação separado, como OpenCode headless. Essas chamadas vão para o modelo desse agente, portanto,
HINDSIGHT_API_LLM_MAX_CONCURRENTdefinido para"1"não os desacelera. Quando o modelo é um servidor self-hosted já respondendo sua sessão, a pesquisa é uma segunda passagem completa no mesmo servidor. DefinacodebaseSurveyparafalsequando o servidor não puder suportá-la.
A próxima sessão começa a partir de cinco páginas em vez de reler todos os fatos armazenados. Cada página é sintetizada de uma camada de conhecimento, portanto, ela lê apenas os fatos que o extrator roteou para aquela camada.
| Página | O que ela responde | Tag |
|---|---|---|
| Mapa de componentes | Componentes principais, suas responsabilidades e como dependem uns dos outros | knowledge:component |
| Conceitos centrais | Abstrações de domínio e o vocabulário que um desenvolvedor precisa conhecer | knowledge:concept |
| Convenções e padrões | Como este projeto testa, trata erros, nomeia coisas, estrutura código e faz mudanças | knowledge:convention |
| Decisões-chave e racionalidade | Decisões técnicas significativas e por que o projeto o faz daquela maneira | knowledge:decision |
| Iniciativas e melhorias | Principais iniciativas ao longo do tempo, com links para páginas de iniciativas capturadas | knowledge:feature-work |
Um minuto compartilhado dispararia as cinco páginas de uma vez, na mesma pool de trabalhadores que armazena novas memórias, e uma sessão ingerindo ficaria esperando atrás daquela pilha. O agendamento padrão as espalha. pageTriggerCron é H * * * *: cada página recebe seu próprio minuto, hasheado do id do banco e do nome da página, e uma tick sem nada novo é pulada. pageTriggerType definido para auto-refresh reescreve uma página após toda consolidação que produziu novo material. A documentação chama isso de agendamento mais atual e mais caro, uma síntese de modelo por página por consolidação. manual deixa uma página como está até você atualizá-la.
Uma página integrada que você não deseja atualizar é false sob pages. A cópia já armazenada permanece até você excluí-la no plano de controle. source_query substitui a pergunta que a página faz, e o plugin ainda acrescenta a cláusula que mantém as decisões de uma dependência fora da página. Uma página sua vai sob customPages e precisa de sua própria source_query. Um nome desconhecido sob pages é ignorado, com um aviso em plugin.log, para que um erro de digitação não crie uma segunda página vazia. Pedir ao agente para capturar uma iniciativa grava uma página separada, uma por iniciativa, através de hindsight_capture_initiative.
Excluindo o banco no servidor limpa a memória desse repositório. A próxima sessão copia a história git e percorre a árvore novamente. Desinstalar o plugin deixa o banco onde está.
Controles de escopo e privacidade
Abrir um repositório cria um banco para ele, o que é como uma árvore de cliente pode ser armazenada sem você pedir. optInOnly limita a memória a diretórios que você nomeia. Em todos os outros lugares, o plugin não cria banco, não armazena nada e não copia história git, e a ferramenta de codificação comporta-se como se o plugin não estivesse instalado.
{
"optInOnly": true,
"optInPaths": ["~/prj", "~/oss"]
}
Cada entrada é um prefixo de diretório, ~ expande, e cada repositório sob ele ainda recebe seu próprio banco coding-agent::{gitProject}. Um caminho em mapPathToBank também é permitido, porque você já nomeou essa pasta. Um bankId solto não permite nada: ele nomeia um banco, não uma pasta, portanto, com optInOnly ligado, diretórios não nomeados permanecem de fora. O plugin não lê configuração do repositório. O motivo da documentação é que um repositório clonado não deve poder ativar a memória. Qual pasta usa qual banco permanece em mapPathToBank. Qual ferramenta está ligada ou desligada permanece em harnesses. Uma vez que o id do banco é conhecido, regras adicionais para esse repositório único vão em banks:
{
"banks": {
"coding-agent::secret-client": { "disabled": true }
}
}
npx @vectorize-io/hindsight-coding-agents uninstall cursor-cli remove os hooks do Cursor, a entrada MCP e a habilidade que o instalador adicionou. uninstall all faz isso para todas as ferramentas que conectou. Um arquivo que já existiu é copiado para um .hindsight-backup ao lado dele antes do instalador editá-lo. O banco, o banco de dados do daemon e ~/.hindsight/coding-agent.json permanecem.
Um token colado em um chat não deve se tornar uma memória. A Memory Defense é uma varredura de 45 padrões de texto antes de ser armazenada, e ela permanece desligada até que esse banco tenha uma política. redact substitui uma correspondência por um marcador como [REDACTED:github_token] e armazena o resto. block descarta o item correspondente e retorna 422 quando todos os itens na solicitação corresponderam. A política se aplica a armazenamentos posteriores nesse banco. Memórias já armazenadas são deixadas como estão. Essas duas ações são a regra de código aberto sensitive_data.
Quem está autorizado a ligar a varredura é descrito de maneira diferente em dois lugares. O post de empresa de 03/09/2026 diz que o escaneador básico está ligado em todos os planos, e que os detectores extras — um catálogo de 220 ou mais padrões, re-varredura base64, verificações de injeção de prompt e uma tela LLM — são Enterprise. A comparação de preços marca a Memory Defense como apenas Enterprise, com as células self-hosted e Cloud vazias. Verifique aquela linha na página de preços atual antes de contar com um banco Cloud para remover segredos.
manageBankConfig padrão para true, o que permite que o plugin grave as configurações do banco que sua ingestão precisa, e qualquer campo que você coloque em defaultBankConfig. Ele grava um campo apenas onde o banco ainda não define um, portanto, um valor que você define no plano de controle permanece. O modo de extração nas próprias estratégias do plugin é a exceção: ele segue retainExtractionMode em toda sessão. retainContext, enviado com toda gravação de sessão de volta, informa à extração quem disse a frase. O padrão nomeia ambos os interlocutores e pede para o próprio “fixed” ou “passes” do agente serem armazenados como a reivindicação do agente em vez de como fato. Quando uma conclusão é armazenada como se alguém tivesse observado, as maneiras que alimentam a próxima sessão estão em Laços de Memória Auto-Renforçados.
Configurações para desenvolvimento diário
Todas as ferramentas de codificação leem o mesmo arquivo, ~/.hindsight/coding-agent.json, portanto, um limite que você define uma vez se aplica ao OpenCode e ao Cursor. HINDSIGHT_CONFIG move esse arquivo. Ele não cria uma segunda cópia. Para cada configuração, um padrão integrado perde para uma variável de ambiente (HINDSIGHT_API_URL, HINDSIGHT_API_TOKEN ou HINDSIGHT_<FIELD> para outros valores únicos), que perde para o topo do arquivo, depois para harnesses.<name>, depois para paths.<prefix>, depois para banks.<id>. Um valor gravado no arquivo permanece quando você depois define a mesma variável de ambiente. retainTags e optInPaths podem ser uma variável separada por vírgulas. mapPathToBank, harnesses, paths, banks, retainMetadata e recallOptions são lidos apenas do arquivo.
Quando uma sessão está lenta, cara ou lembrando o repositório errado, a alteração é um desses campos. Os padrões são da referência de coding-agents.
| Campo | Padrão | Quando alterar |
|---|---|---|
serverMode |
cloud |
daemon para um banco local, self-hosted para um servidor que você executa |
autoInject |
"reflect" |
"pages" ou "recall" pulam a síntese de início de sessão. "none" não injeta nada; o agente pesquisa páginas e reflete quando elas são muito superficiais |
reflectTimeoutMs |
20000 |
O reflect automático de sessão. Em ferramentas que usam hooks, o instalador define um tempo limite de prompt-hook de 30 segundos, portanto, um valor além de aproximadamente 20 segundos também precisa de o timeout desse hook elevado |
reflectBudget |
"high" |
Orçamento para a ferramenta chamada pelo agente hindsight_reflect. O reflect automático de sessão sempre usa "low" e ignora isso |
recallOptions |
observações, orçamento baixo, max_tokens 2000 |
Mesclado chave por chave. Um banco com consolidação desativada não cresce observações, e o recall padrão volta vazio — defina "types": ["world", "experience"] lá |
retainExtractionMode |
"concise" |
"verbose" puxa mais detalhes. A referência diz que custa várias vezes os tokens, porque cada Stop grava a sessão de volta. "chunks" armazena texto sem extração |
retainTags / retainMetadata |
não definido | Em um banco compartilhado, carimbe project:{gitProject} para que recalls possam filtrar. O id do banco já responde “qual repositório” quando cada repositório tem seu próprio banco |
bankIdTemplate |
coding-agent::{gitProject} |
{harness}::{gitProject} divide agentes. mapPathToBank envia uma árvore de diretórios para um banco nomeado |
codebaseSurvey |
true |
false quando a pesquisa e sua sessão compartilham um modelo self-hosted único. surveyBudgetUsd (padrão 2) limita apenas a receita do Claude |
pageTriggerType |
"cron" |
"auto-refresh" segue toda consolidação. "manual" deixa páginas onde estão |
maxParallelRetains |
10 |
Reduza se a API retornar 429. A referência diz que a API limita rajadas |
Um daemon local que lembra apenas repositórios sob ~/prj, armazena mensagens de commit, deixa a pesquisa de repositório desligada e pede a novos bancos para redigir segredos parece assim:
{
"serverMode": "daemon",
"optInOnly": true,
"optInPaths": ["~/prj"],
"gitIngest": "message",
// codebaseSurvey inicia outro agente de codificação. HINDSIGHT_API_LLM_MAX_CONCURRENT não o limita.
"codebaseSurvey": false,
"retainExtractionMode": "concise",
"autoInject": "reflect",
"defaultBankConfig": {
"memory_defense": {
"enabled": true,
"rules": [{ "on": "sensitive_data", "action": "redact" }]
}
}
}
defaultBankConfig preenche memory_defense apenas em um banco que ainda não o tem, e não faz nada quando manageBankConfig é false. hindsight_diagnose mostra o arquivo como está agora e os valores que o cliente em execução realmente carregou.
Quanto custa e quando um arquivo basta
Uma sessão pode gastar três coisas ao iniciar: um reflect de orçamento baixo no primeiro prompt, uma cópia de mensagens de commits recentes limitada por seedLimit e a caminhada na árvore. Com retainSessions ligado, a transcrição é armazenada conforme a sessão avança. As cinco páginas atualizam em seu próprio minuto da hora quando algo mudou. gitIngest definido para "full" armazena diffs junto com mensagens.
O FAQ de preços da Vectorize lista taxas Cloud sem taxa mensal fixa e sem preço de assento. O FAQ diz que novas contas recebem créditos gratuitos e não publica o montante dos créditos.
| Operação | Preço |
|---|---|
| Retain | $10,00 por milhão de tokens |
| Recall | $0,75 por milhão de tokens |
| Reflect | $0,05 por chamada |
| Iris Extract | $7,50 por milhão de tokens |
| Mental Model Retrieve | $0,25 por milhão de tokens |
| Mental Model Refresh | $0,05 por chamada |
| Armazenamento após 30 dias | $0,25 por milhão de tokens por mês |
Memórias são gratuitas para armazenar pelos primeiros 30 dias. A visão geral da nuvem diz que criar ou atualizar páginas de conhecimento é faturado por chamada, e o FAQ não publica uma linha separada para páginas de conhecimento. Um daemon ou um servidor self-hosted não incurre essas taxas da nuvem. A extração ainda gasta o que o LLM do daemon custa, incluindo uma chave de API na nuvem se essa for a chave que o install encontrou.
A mesma página de documentação relata uma execução AMB sdebench: 61 tarefas de repositório, três execuções cada, com e sem memória. Toda execução resolveu 60–61 das 61 de qualquer maneira. O que se moveu são correções por tarefa e custo por tarefa. A página diz que as figuras de correção reproduzem rótulos que o AMB imprime em seu próprio gráfico, e que o custo é derivado da mesma tabela por execução.
| Agente | Correções por tarefa | Custo por tarefa |
|---|---|---|
| Claude Code | 0,85 → 0,36 | $0,445 → $0,338 |
| Codex CLI | 1,34 → 0,47 | $0,577 → $0,276 |
| opencode | 1,20 → 0,80 | $0,634 → $0,553 |
Sem memória é o número à esquerda. Esses três agentes são toda a tabela que a página imprime.
Uma regra que você deseja revisar junto com o código pertence a AGENTS.md ou CLAUDE.md. Esse arquivo está no repositório quando o daemon está fora, e salvá-lo não armazena o chat. O banco carrega uma decisão que nunca foi escrita lá e que a próxima sessão continua acertando errado. No Hermes, um armazém SQLite local com seus próprios interruptores de retenção é o Mnemosyne.
Fontes
- Coding Agents — alvos de instalação, campos de
coding-agent.json, nomenclatura de bancos, páginas de conhecimento, modo daemon e a tabela sdebench. Pacote npm@vectorize-io/hindsight-coding-agents0.8.4, publicado 30/10/2026. - Preços — taxas de operação na nuvem, a alegação de self-hospedagem gratuita e a linha da matriz de planos para Memory Defense.
- Memory Defense — política
sensitive_datapor banco, redact e block, 45 padrões, desligada até uma política de banco ser definida. Memórias existentes permanecem não escaneadas. - Recursos de empresa, 03/09/2026 — escaneador básico descrito como todos os planos; detectores extras descritos como Enterprise.