VIBE IN PUBLIC_

Cache de contexto no vibe coding: guarde o estado fora da conversa

Guilherme Saraiva tirou o estado do jogo de dentro do histórico da LLM: Codex, bestiário e jornal em 2 níveis, com a linha curta no prompt e a ficha do taverneiro guardada atrás.

Guarde o estado do produto em arquivo, fora da conversa, e deixe o motor buscar lá só o que o turno pede. Na chamada sobe a linha curta, "converso com o taverneiro". Quem é o taverneiro, qual é a ficha dele, o que ele faz e o que ele não faz fica atrás, e só entra na chamada no turno em que o jogador fala com ele.

Guilherme Saraiva desenhou isso ao vivo, com a conta de quanto custa jogar aberta na tela, enquanto construía em público o sistema de RPG com IA que ele pretende vender por assinatura, e disse por que estava mexendo nisso agora:

porque isso vai reduzir esse custo de cash que a gente tem aqui, porque isso vai matar nossa operação

O cache, do jeito que ele define, é o histórico inteiro voltando a cada chamada

A legenda da live grafa "cash", e a palavra é dele, com sentido próprio:

Cash é quando a LLM tem que buscar no histórico da história e tudo que aconteceu, tudo que foi falado, regras, detalhes, essas coisas

O que já foi narrado e as regras combinadas voltam junto no turno seguinte, porque o mestre precisa lembrar de tudo. "isso aumenta muito os custos", ele resume, e coloca o item entre "uma das coisas que mais consomem dinheiro quando a gente tá codando".

Ele estende a conta para fora do jogo dele: "Todo mundo que tá desenvolvendo o SAS com base em IA tá morrendo pelo custo". E mostra onde a coisa estoura na assinatura, que tem preço fixo enquanto o consumo não tem teto:

se o cara for considerado uma baleia e ele jogar 1500 turnos por mês no modelo atual, ele vai consumir R$ 32 e o nosso plano médio custa R$ 29,90, ou seja, eu vou sair no prejuízo

Trocar de modelo mexe no preço do token. O que você põe dentro da chamada mexe na quantidade, e essa parte continua rendendo depois da próxima troca de modelo.

O Codex, o bestiário e o jornal tiram o estado da conversa

A troca que ele descreveu é montar um sistema em que a LLM "busque essas informações listadas em algum lugar", em vez de depender do que está pendurado no histórico. O "algum lugar" tem nome e formato:

um Codex, um bestiário, um diário, um jornal de eventos e de monstros e de missões e tudo. E lá é de onde o mestre vai buscar.

Ao dizer Codex ele parou no meio da frase para avisar que não era o Codex que tem o mesmo nome e é ferramenta de IA. O dele é o compêndio do jogo, o termo que a mesa de RPG usa desde antes de a IA existir.

Cada um desses arquivos guarda um pedaço do mundo que muda devagar e que o motor consulta por endereço. O bestiário responde como é o monstro que apareceu, o diário responde o que já foi jogado, e nenhum dos dois precisa estar aberto na frente da LLM enquanto o jogador atravessa a taverna. O histórico da partida cresce a cada turno, e a ficha do bestiário tem o mesmo tamanho no primeiro turno e na última sessão.

O jornal tem 2 níveis, e o de baixo quase nunca sobe

O desenho funciona porque o mesmo conteúdo existe em 2 profundidades. O jornal que o jogador enxerga traz missão, aliados, NPCs que conheceu e inventário, e ele é "superficial, mas ele é funcional", porque "só tem o que é a missão, o que é para fazer". Atrás dele mora outro com "as mesmas coisas replicadas, só que com mais profundidade de conteúdo".

O taverneiro mostra onde passa o corte. Na tela do motor entra a linha rasa, e a ficha fica atrás dela:

converso com o taverneiro e atrás dele tá escrito quem é o taverneiro

O que ele faz, o que ele não faz e o resto da ficha ficam guardados até o jogador puxar conversa. O objetivo é declarado: "pra gente não consumir esse cash gigantesco". O nível de cima viaja em todo turno, e o de baixo só viaja no turno em que o jogador entra na taverna.

Como reduzir o cache de contexto no vibe coding

Abra a última chamada que o seu produto de vibe coding mandou para a LLM e marque o que está ali só porque não tinha outro lugar para guardar. Costuma ser a conversa inteira mais a descrição de cada entidade que apareceu uma vez e nunca mais voltou.

Cada bloco marcado vira arquivo ou tabela com endereço. Depois escreva a versão de uma linha de cada um, que é o que fica no prompt: o nome, o que é, e o que o sistema faz quando o usuário toca nele. O resto vira uma busca, e a busca só acontece no turno que precisa dela. Isso aparece também em vibe coding no modo de planejamento para economizar contexto. Vale ver como isso terminou em vibe coding para o subagente nao compactar o contexto do pai.

O preço disso é manter os 2 níveis alinhados, porque passam a existir dois lugares dizendo quem é o taverneiro. Em compensação, o custo por turno para de subir junto com o tamanho da sessão, e é o usuário que mais joga que estava puxando a fatura para cima. Mas tem um corte anterior: se você conseguir separar qual parte precisa de modelo caro e qual parte só decide regra, você descola ainda mais da conta.

Mudar a arquitetura por causa do que a planilha de custo mostrou, e mudar antes de ter o primeiro assinante, é o tipo de decisão que o vibe coding cobra de quem vai cobrar mensalidade. Vale ver como isso aparece também em vibe coding para vencer o perfeccionismo.

Dá para assistir à live e ouvir o trecho inteiro, com a definição de cash e a ficha do taverneiro escondida atrás da linha curta.