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.