[{"data":1,"prerenderedAt":2348},["ShallowReactive",2],{"article-\u002Fotimizacao-tokens":3},{"id":4,"title":5,"body":6,"createdAt":2339,"description":2340,"extension":2341,"meta":2342,"navigation":411,"path":2343,"seo":2344,"sitemap":2345,"stem":2346,"__hash__":2347},"articles\u002Fotimizacao-tokens.md","Otimização de Tokens em Agentes de Código: Além do CLAUDE.md",{"type":7,"value":8,"toc":2280},"minimark",[9,14,28,44,47,51,56,63,66,92,107,111,114,135,137,141,145,151,157,161,164,174,179,193,197,211,286,300,322,419,421,425,429,439,443,449,549,552,582,586,593,675,684,686,690,694,697,701,714,719,742,746,749,755,762,764,768,771,878,896,898,902,906,909,923,927,936,1153,1158,1178,1184,1186,1190,1194,1204,1210,1213,1218,1229,1231,1235,1239,1247,1253,1256,1262,1264,1268,1272,1275,1295,1299,1396,1398,1402,1406,1489,1493,1499,1504,1506,1510,1516,1520,1523,1527,1530,1536,1538,1542,1545,1698,1700,1704,1708,1734,1738,1765,1769,1775,1777,1781,1785,1855,1859,1920,1924,2003,2007,2124,2126,2130,2137,2140,2202,2209,2211,2215,2276],[10,11,13],"h2",{"id":12},"introdução","Introdução",[15,16,17,18,22,23,27],"p",{},"A obsessão pela quantidade de contexto é um problema recorrente na adoção de agentes de IA para desenvolvimento. Desenvolvedores frequentemente sentem a necessidade de ",[19,20,21],"em",{},"empurrar"," toda a informação possível para os modelos, acreditando que mais dados resultarão em melhores respostas. Essa intuição é intuitivamente atraente, mas empiricamente falsa. O que os pesquisadores e profissionais de produção descobriram é que ",[24,25,26],"strong",{},"qualidade de contexto supera quantidade de contexto de forma significativa",".",[15,29,30,31,34,35,39,40,43],{},"A realidade é mais nuançada: LLMs funcionam como funções sem estado (",[19,32,33],{},"stateless",") com janelas de contexto finitas. Cada token é precioso, e o modo como você estrutura e entrega a informação determina se o agente mantém foco na tarefa ou se \"se perde\" em contexto irrelevante. Este artigo vai além de simples configurações de ",[36,37,38],"code",{},".cursorrules"," e ",[36,41,42],{},"CLAUDE.md",", explorando estratégias de engenharia de contexto que profissionais usam diariamente com Cursor, Windsurf, Zed e Claude Code.",[45,46],"hr",{},[10,48,50],{"id":49},"_1-o-problema-real-degradação-de-atenção-não-falta-de-dados","1. O Problema Real: Degradação de Atenção, Não Falta de Dados",[52,53,55],"h3",{"id":54},"a-realidade-empírica","A Realidade Empírica",[15,57,58,59,62],{},"Pesquisas recentes em geração de código com LLMs revelam um padrão contraintuitivo: ",[24,60,61],{},"quanto mais tokens você fornece, pior o modelo se comporta"," — até um certo limite onde a qualidade estabiliza ou degrada ainda mais.",[15,64,65],{},"Um caso estudo da Refine AI ilustra isso claramente. Ao tentar melhorar a geração de dashboards e componentes de análise de dados:",[67,68,69,76,82],"ul",{},[70,71,72,75],"li",{},[24,73,74],{},"Iteração 1:"," Incluir toda a documentação da biblioteca, guias de estilo e exemplos. Resultado: 10% de taxa de sucesso, ~100k tokens de entrada.",[70,77,78,81],{},[24,79,80],{},"Iteração 2:"," Tentar estruturar isso em um prompt de três estágios. Resultado: 20% de taxa de sucesso, mas com crescimento paradoxal de tokens para ~500k.",[70,83,84,87,88,91],{},[24,85,86],{},"Iteração 3:"," Arquitetura isolada multi-agente. Resultado: 80% de taxa de sucesso, ",[24,89,90],{},"com redução de 90% no consumo de tokens"," comparado à iteração anterior.",[15,93,94,95,98,99,102,103,106],{},"O ",[19,96,97],{},"insight"," crítico: o modelo não estava falhando por ",[19,100,101],{},"falta"," de informação. Ele estava falhando porque a ",[24,104,105],{},"atenção do modelo estava diluída"," entre contexto relevante e ruído.",[52,108,110],{"id":109},"por-que-isso-acontece","Por Que Isso Acontece?",[15,112,113],{},"LLMs alocam \"poder atencional\" de forma não-uniforme. Quando você fornece 500k tokens de contexto, o modelo:",[115,116,117,123,129],"ol",{},[70,118,119,122],{},[24,120,121],{},"Não consegue processar efetivamente todo o contexto"," — a atenção se degrada uniformemente conforme a quantidade de tokens aumenta.",[70,124,125,128],{},[24,126,127],{},"Prioriza periféricos"," — o modelo tende a prestar mais atenção ao início (system prompt, CLAUDE.md) e final (sua pergunta atual) do que ao meio.",[70,130,131,134],{},[24,132,133],{},"Sofre com \"path-of-least-resistance\""," — prefere gerar respostas genéricas usando padrões comuns em vez de explorar o contexto fornecido.",[45,136],{},[10,138,140],{"id":139},"_2-arquitetura-multi-agente-dividir-para-conquistar","2. Arquitetura Multi-Agente: Dividir para Conquistar",[52,142,144],{"id":143},"o-paradoxo-da-janela-de-contexto","O Paradoxo da Janela de Contexto",[15,146,147,148,27],{},"Esperar por janelas de contexto maiores é uma estratégia equivocada. Mesmo com 200k tokens (Claude 3.5 Opus), 128k-200k (Cursor Max Mode), ou 2M (modelos experimentais), o problema persiste: ",[24,149,150],{},"informação não é problema, foco é",[15,152,153,154,27],{},"A solução estabelecida pela comunidade de produção é ",[24,155,156],{},"separação de responsabilidades através de múltiplos agentes especializados",[52,158,160],{"id":159},"padrão-research-plan-implement-review","Padrão: Research-Plan-Implement-Review",[15,162,163],{},"Ao invés de um único agente fazer tudo (problema que CLAUDE.md tenta resolver), distribua a tarefa:",[165,166,171],"pre",{"className":167,"code":169,"language":170},[168],"language-text","┌──────────────────────┐\n│ Research Agent       │ (Identifica padrões e referências relevantes)\n└──────────┬───────────┘\n           │\n           ↓\n┌──────────────────────┐\n│ Planning Agent       │ (Estrutura abordagem e roadmap)\n└──────────┬───────────┘\n           │\n           ↓\n┌──────────────────────┐\n│ Implementation Agent  │ (Executa com contexto focado)\n└──────────┬───────────┘\n           │\n           ↓\n┌──────────────────────┐\n│ Review Agent        │ (Valida e refina iterativamente)\n└──────────────────────┘\n","text",[36,172,169],{"__ignoreMap":173},"",[15,175,176],{},[24,177,178],{},"Por que funciona:",[67,180,181,184,187,190],{},[70,182,183],{},"Cada agente herda apenas o contexto relevante para sua fase",[70,185,186],{},"O Research Agent não carrega todo o histórico da conversa anterior",[70,188,189],{},"O Implementation Agent recebe uma especificação clara, não um braindump",[70,191,192],{},"O resultado total é melhor (80% vs 10%), mas com 90% menos tokens",[52,194,196],{"id":195},"implementação-em-cursor-20-windsurf-claude-code","Implementação em Cursor 2.0 \u002F Windsurf \u002F Claude Code",[15,198,199,202,203,206,207,210],{},[24,200,201],{},"Cursor 2.0"," (lançado outubro 2025) oferece ",[24,204,205],{},"até 8 agentes paralelos"," via ",[24,208,209],{},"git worktrees"," ou máquinas remotas. Cada agente trabalha isoladamente sem conflitos:",[165,212,216],{"className":213,"code":214,"language":215,"meta":173,"style":173},"language-bash shiki shiki-themes github-light laserwave","# Cursor 2.0 cria automaticamente worktrees isoladas\ncursor-agent-1: feature-backend (Composer model)\ncursor-agent-2: feature-frontend (Composer model)\ncursor-agent-3: tests-e2e (GPT-4 Codex)\n# Você compara resultados e escolhe o melhor\n","bash",[36,217,218,227,248,263,280],{"__ignoreMap":173},[219,220,223],"span",{"class":221,"line":222},"line",1,[219,224,226],{"class":225},"sZYUP","# Cursor 2.0 cria automaticamente worktrees isoladas\n",[219,228,230,234,238,242,245],{"class":221,"line":229},2,[219,231,233],{"class":232},"syaLL","cursor-agent-1:",[219,235,237],{"class":236},"sZ1wT"," feature-backend",[219,239,241],{"class":240},"sWm_A"," (Composer ",[219,243,244],{"class":236},"model",[219,246,247],{"class":240},")\n",[219,249,251,254,257,259,261],{"class":221,"line":250},3,[219,252,253],{"class":232},"cursor-agent-2:",[219,255,256],{"class":236}," feature-frontend",[219,258,241],{"class":240},[219,260,244],{"class":236},[219,262,247],{"class":240},[219,264,266,269,272,275,278],{"class":221,"line":265},4,[219,267,268],{"class":232},"cursor-agent-3:",[219,270,271],{"class":236}," tests-e2e",[219,273,274],{"class":240}," (GPT-4 ",[219,276,277],{"class":236},"Codex",[219,279,247],{"class":240},[219,281,283],{"class":221,"line":282},5,[219,284,285],{"class":225},"# Você compara resultados e escolhe o melhor\n",[15,287,288,291,292,295,296,299],{},[24,289,290],{},"Windsurf"," implementa ",[24,293,294],{},"Cascade 2.0"," (em desenvolvimento) com padrão \"um agente escreve, outro revisa e marca\". Cada um tem contexto separado e pode executar até 20 chamadas de ferramenta (",[19,297,298],{},"tool calls",") em sequência sem intervenção manual.",[15,301,302,305,306,309,310,313,314,317,318,321],{},[24,303,304],{},"Claude Code"," oferece ",[24,307,308],{},"Sub-agents"," (native desde agosto 2025) — especializações com seus próprios ",[24,311,312],{},"system prompts",", ",[24,315,316],{},"permissões de ferramentas",", e ",[24,319,320],{},"janela de contexto isolada",". Exemplo estrutura:",[165,323,327],{"className":324,"code":325,"language":326,"meta":173,"style":173},"language-yaml shiki shiki-themes github-light laserwave","# .claude\u002Fagents\u002Fcode-reviewer.md\n---\nname: code-reviewer\ndescription: Analisa código para padrões, segurança e performance\ntools:\n  - grep\n  - file-read\nmodel: haiku  # Use modelo mais rápido\u002Fbarato para tarefas focadas\n---\n\nVocê é um revisor de código sênior especializado em...\n","yaml",[36,328,329,334,340,353,363,371,380,388,401,406,413],{"__ignoreMap":173},[219,330,331],{"class":221,"line":222},[219,332,333],{"class":225},"# .claude\u002Fagents\u002Fcode-reviewer.md\n",[219,335,336],{"class":221,"line":229},[219,337,339],{"class":338},"sU85Z","---\n",[219,341,342,346,350],{"class":221,"line":250},[219,343,345],{"class":344},"swsWu","name",[219,347,349],{"class":348},"spK93",":",[219,351,352],{"class":236}," code-reviewer\n",[219,354,355,358,360],{"class":221,"line":265},[219,356,357],{"class":344},"description",[219,359,349],{"class":348},[219,361,362],{"class":236}," Analisa código para padrões, segurança e performance\n",[219,364,365,368],{"class":221,"line":282},[219,366,367],{"class":344},"tools",[219,369,370],{"class":348},":\n",[219,372,374,377],{"class":221,"line":373},6,[219,375,376],{"class":348},"  -",[219,378,379],{"class":236}," grep\n",[219,381,383,385],{"class":221,"line":382},7,[219,384,376],{"class":348},[219,386,387],{"class":236}," file-read\n",[219,389,391,393,395,398],{"class":221,"line":390},8,[219,392,244],{"class":344},[219,394,349],{"class":348},[219,396,397],{"class":236}," haiku",[219,399,400],{"class":225},"  # Use modelo mais rápido\u002Fbarato para tarefas focadas\n",[219,402,404],{"class":221,"line":403},9,[219,405,339],{"class":338},[219,407,409],{"class":221,"line":408},10,[219,410,412],{"emptyLinePlaceholder":411},true,"\n",[219,414,416],{"class":221,"line":415},11,[219,417,418],{"class":236},"Você é um revisor de código sênior especializado em...\n",[45,420],{},[10,422,424],{"id":423},"_3-compressão-contextual-intencional","3. Compressão Contextual Intencional",[52,426,428],{"id":427},"o-problema-com-auto-compactação","O Problema com Auto-Compactação",[15,430,431,432,435,436,27],{},"Claude Code resume automaticamente a 95% da janela. Cursor trunca internamente para \"manter performance\". Nenhuma ferramenta oferece controle explícito sobre ",[19,433,434],{},"o que"," é preservado e ",[19,437,438],{},"por quê",[52,440,442],{"id":441},"estratégia-notas-estruturadas-com-decisões-explícitas","Estratégia: Notas Estruturadas com Decisões Explícitas",[15,444,445,446,349],{},"Em vez de deixar o agente resumir automaticamente, ",[24,447,448],{},"você define o que é importante antes",[165,450,454],{"className":451,"code":452,"language":453,"meta":173,"style":173},"language-markdown shiki shiki-themes github-light laserwave","# Status do Projeto - Sprint 24\n\n## Decisões Arquiteturais (✗ mude só com justificativa explícita)\n- **Usar FastAPI + SQLAlchemy** — motivo: suporte a async nativo, comunidade ativa\n- **Banco de dados: PostgreSQL 14+** — motivo: JSONB, full-text search, constraints avançados\n- **Autenticação: JWT com refresh tokens** — motivo: stateless, ideal para escala horizontal\n\n## Bugs Resolvidos\n- ✓ N+1 queries em endpoint \u002Fusers (eager loading adicionado)\n- ✓ Memory leak em WebSocket cleanup (implementar context manager)\n\n## Bugs em Andamento\n- 🔴 CRÍTICO: Timeout em relatórios com >100k linhas (otimizar query, adicionar paginação)\n- 🟡 MÉDIO: Validação insuficiente em upload de arquivos (adicionar sanitização)\n\n## Contexto Técnico Recente\n- Alterado schema de `profiles` para incluir `last_sync_at` (migration #47)\n- Implementado paginação no endpoint GET \u002Freports (20-100 itens\u002Fpágina)\n","markdown",[36,455,456,461,465,470,475,480,485,489,494,499,504,508,514,520,526,531,537,543],{"__ignoreMap":173},[219,457,458],{"class":221,"line":222},[219,459,460],{},"# Status do Projeto - Sprint 24\n",[219,462,463],{"class":221,"line":229},[219,464,412],{"emptyLinePlaceholder":411},[219,466,467],{"class":221,"line":250},[219,468,469],{},"## Decisões Arquiteturais (✗ mude só com justificativa explícita)\n",[219,471,472],{"class":221,"line":265},[219,473,474],{},"- **Usar FastAPI + SQLAlchemy** — motivo: suporte a async nativo, comunidade ativa\n",[219,476,477],{"class":221,"line":282},[219,478,479],{},"- **Banco de dados: PostgreSQL 14+** — motivo: JSONB, full-text search, constraints avançados\n",[219,481,482],{"class":221,"line":373},[219,483,484],{},"- **Autenticação: JWT com refresh tokens** — motivo: stateless, ideal para escala horizontal\n",[219,486,487],{"class":221,"line":382},[219,488,412],{"emptyLinePlaceholder":411},[219,490,491],{"class":221,"line":390},[219,492,493],{},"## Bugs Resolvidos\n",[219,495,496],{"class":221,"line":403},[219,497,498],{},"- ✓ N+1 queries em endpoint \u002Fusers (eager loading adicionado)\n",[219,500,501],{"class":221,"line":408},[219,502,503],{},"- ✓ Memory leak em WebSocket cleanup (implementar context manager)\n",[219,505,506],{"class":221,"line":415},[219,507,412],{"emptyLinePlaceholder":411},[219,509,511],{"class":221,"line":510},12,[219,512,513],{},"## Bugs em Andamento\n",[219,515,517],{"class":221,"line":516},13,[219,518,519],{},"- 🔴 CRÍTICO: Timeout em relatórios com >100k linhas (otimizar query, adicionar paginação)\n",[219,521,523],{"class":221,"line":522},14,[219,524,525],{},"- 🟡 MÉDIO: Validação insuficiente em upload de arquivos (adicionar sanitização)\n",[219,527,529],{"class":221,"line":528},15,[219,530,412],{"emptyLinePlaceholder":411},[219,532,534],{"class":221,"line":533},16,[219,535,536],{},"## Contexto Técnico Recente\n",[219,538,540],{"class":221,"line":539},17,[219,541,542],{},"- Alterado schema de `profiles` para incluir `last_sync_at` (migration #47)\n",[219,544,546],{"class":221,"line":545},18,[219,547,548],{},"- Implementado paginação no endpoint GET \u002Freports (20-100 itens\u002Fpágina)\n",[15,550,551],{},"Essa abordagem é superior a um resumo automático porque:",[115,553,554,564,570,576],{},[70,555,556,559,560,563],{},[24,557,558],{},"Preserva intenção"," — o agente sabe ",[19,561,562],{},"por que"," cada decisão foi tomada",[70,565,566,569],{},[24,567,568],{},"Facilita busca"," — é fácil procurar \"por que usamos FastAPI?\" sem reler 500 mensagens",[70,571,572,575],{},[24,573,574],{},"Reduz re-explicação"," — novos agentes entendem o contexto sem ambiguidade",[70,577,578,581],{},[24,579,580],{},"Suporta versionamento"," — commit isso no git, rastreie evolução de decisões",[52,583,585],{"id":584},"implementação-prática-em-seus-projetos","Implementação Prática em Seus Projetos",[15,587,588,589,592],{},"Crie um arquivo ",[36,590,591],{},".agent-state\u002Fprogress.md"," no seu repositório:",[165,594,596],{"className":451,"code":595,"language":453,"meta":173,"style":173},"# .agent-state\u002Fprogress.md\n\n## Última Sessão de Agent\n- **Agente Anterior**: ImplementationAgent (FastAPI endpoints)\n- **Tempo Gasto**: 2.5 horas\n- **Completado**: 3 endpoints GET\u002FPOST\u002FPATCH implementados + testes unitários\n- **Status**: 🟢 Pronto para revisão\n\n## Próximos Passos\n1. ReviewAgent: Validar tipo de dados, casos extremos, segurança\n2. TestAgent: Adicionar testes de integração (banco de dados)\n3. DocsAgent: Atualizar Swagger\u002FOpenAPI spec\n\n## Problemas Conhecidos para Próxima Sessão\n- Cache em memória causando inconsistência com dados do banco (pendente debugging)\n- Endpoint POST \u002Fitems ainda não paginado\n",[36,597,598,603,607,612,617,622,627,632,636,641,646,651,656,660,665,670],{"__ignoreMap":173},[219,599,600],{"class":221,"line":222},[219,601,602],{},"# .agent-state\u002Fprogress.md\n",[219,604,605],{"class":221,"line":229},[219,606,412],{"emptyLinePlaceholder":411},[219,608,609],{"class":221,"line":250},[219,610,611],{},"## Última Sessão de Agent\n",[219,613,614],{"class":221,"line":265},[219,615,616],{},"- **Agente Anterior**: ImplementationAgent (FastAPI endpoints)\n",[219,618,619],{"class":221,"line":282},[219,620,621],{},"- **Tempo Gasto**: 2.5 horas\n",[219,623,624],{"class":221,"line":373},[219,625,626],{},"- **Completado**: 3 endpoints GET\u002FPOST\u002FPATCH implementados + testes unitários\n",[219,628,629],{"class":221,"line":382},[219,630,631],{},"- **Status**: 🟢 Pronto para revisão\n",[219,633,634],{"class":221,"line":390},[219,635,412],{"emptyLinePlaceholder":411},[219,637,638],{"class":221,"line":403},[219,639,640],{},"## Próximos Passos\n",[219,642,643],{"class":221,"line":408},[219,644,645],{},"1. ReviewAgent: Validar tipo de dados, casos extremos, segurança\n",[219,647,648],{"class":221,"line":415},[219,649,650],{},"2. TestAgent: Adicionar testes de integração (banco de dados)\n",[219,652,653],{"class":221,"line":510},[219,654,655],{},"3. DocsAgent: Atualizar Swagger\u002FOpenAPI spec\n",[219,657,658],{"class":221,"line":516},[219,659,412],{"emptyLinePlaceholder":411},[219,661,662],{"class":221,"line":522},[219,663,664],{},"## Problemas Conhecidos para Próxima Sessão\n",[219,666,667],{"class":221,"line":528},[219,668,669],{},"- Cache em memória causando inconsistência com dados do banco (pendente debugging)\n",[219,671,672],{"class":221,"line":533},[219,673,674],{},"- Endpoint POST \u002Fitems ainda não paginado\n",[15,676,677,678],{},"Instrua seu agente: ",[24,679,680,681,683],{},"\"Leia ",[36,682,591],{}," antes de começar qualquer tarefa nova e atualize-o antes de terminar.\"",[45,685],{},[10,687,689],{"id":688},"_4-busca-inteligente-e-recuperação-contextual-rag-aprimorado","4. Busca Inteligente e Recuperação Contextual (RAG Aprimorado)",[52,691,693],{"id":692},"o-anti-padrão-anexar-tudo","O Anti-Padrão: \"Anexar Tudo\"",[15,695,696],{},"Muitos desenvolvedores anexam 50 arquivos esperando que o agente \"encontre\" o relevante. Resultado: tokens desperdiçados, atenção diluída, latência aumentada.",[52,698,700],{"id":699},"solução-recuperação-iterativa-sob-demanda","Solução: Recuperação Iterativa sob Demanda",[15,702,703,705,706,709,710,713],{},[24,704,290],{}," usa indexação semântica em ",[24,707,708],{},"Abstract Syntax Tree (AST)"," — não arquivo inteiro, mas blocos semânticos (função, classe, etc). Resultado: ",[24,711,712],{},"3x melhor acurácia de recuperação"," comparado a métodos simples como grep naive.",[15,715,716,718],{},[24,717,201],{}," com Composer model usa busca em três camadas:",[115,720,721,727,736],{},[70,722,723,726],{},[24,724,725],{},"Embeddings semânticos"," — \"qual arquivo provavelmente contém validação de emails?\"",[70,728,729,732,733],{},[24,730,731],{},"Grep para correspondências exatas"," — buscar por ",[36,734,735],{},"email_validator",[70,737,738,741],{},[24,739,740],{},"AST parsing"," — entender estrutura e dependências",[52,743,745],{"id":744},"como-implementar-com-seus-agentes","Como Implementar Com Seus Agentes",[15,747,748],{},"Instrua o agente para explorar de forma proativa:",[165,750,753],{"className":751,"code":752,"language":170},[168],"\"Explore o repositório de forma proativa:\n1. Liste estrutura com depth=2 (tree -L 2)\n2. Identifique arquivos críticos por tamanho\u002Ffrequência\n3. Procure por padrões específicos: \u002F^\\s*class\\s+\\w+.*Exception\u002F\n4. Leia apenas o que é necessário para a tarefa\n5. Se em dúvida sobre padrões, busque exemplos (grep -r 'padrão' --include='*.py')\"\n",[36,754,752],{"__ignoreMap":173},[15,756,757,758,761],{},"Isso mantém a janela de contexto ",[24,759,760],{},"limpa e focada",". O agente não carrega 50 arquivos — carrega 3-4 diretamente relevantes.",[45,763],{},[10,765,767],{"id":766},"_5-sub-agents-vs-slash-commands-vs-skills","5. Sub-Agents vs. Slash Commands vs. Skills",[15,769,770],{},"A confusão entre \"o que usar quando\" é comum. Aqui está a matriz de decisão (baseada em Claude Code stack):",[772,773,774,796],"table",{},[775,776,777],"thead",{},[778,779,780,784,787,790,793],"tr",{},[781,782,783],"th",{},"Recurso",[781,785,786],{},"Quando Usar",[781,788,789],{},"Isolamento",[781,791,792],{},"Automático?",[781,794,795],{},"Exemplo",[797,798,799,821,843,861],"tbody",{},[778,800,801,807,810,813,816],{},[802,803,804],"td",{},[24,805,806],{},"Slash Command",[802,808,809],{},"Workflow manual, repetível",[802,811,812],{},"❌ Não",[802,814,815],{},"❌ Manual",[802,817,818],{},[36,819,820],{},"\u002Frun-tests",[778,822,823,828,831,833,836],{},[802,824,825],{},[24,826,827],{},"Skill",[802,829,830],{},"Ativar automaticamente por contexto",[802,832,812],{},[802,834,835],{},"✅ Automático",[802,837,838,839,842],{},"Detectar arquivo ",[36,840,841],{},"package.json"," → ativar Node.js skill",[778,844,845,850,853,856,858],{},[802,846,847],{},[24,848,849],{},"Sub-agent",[802,851,852],{},"Tarefa isolada, contexto próprio",[802,854,855],{},"✅ Sim (isolado)",[802,857,835],{},[802,859,860],{},"Revisor de código, gerador de testes",[778,862,863,868,871,873,875],{},[802,864,865],{},[24,866,867],{},"Hook",[802,869,870],{},"Reagir a eventos do ciclo de vida",[802,872,812],{},[802,874,835],{},[802,876,877],{},"Ao salvar arquivo, executar linter",[15,879,880,883,884,887,888,891,892,895],{},[24,881,882],{},"Paradigma \"Divide & Conquer\"",": Use ",[24,885,886],{},"sub-agents"," para paralelização real, ",[24,889,890],{},"slash commands"," para workflows manuais frequentes, ",[24,893,894],{},"skills"," para detecção automática de contexto.",[45,897],{},[10,899,901],{"id":900},"_6-gerenciamento-de-estado-com-mcps-model-context-protocol","6. Gerenciamento de Estado com MCPs (Model Context Protocol)",[52,903,905],{"id":904},"o-problema-com-contexto-efêmero","O Problema com Contexto Efêmero",[15,907,908],{},"Cada nova sessão\u002Fconversa é um reset. Você perde:",[67,910,911,914,917,920],{},[70,912,913],{},"Decisões arquiteturais prévias",[70,915,916],{},"Padrões que funcionaram",[70,918,919],{},"Bugs conhecidos",[70,921,922],{},"Contexto acumulado do projeto",[52,924,926],{"id":925},"solução-mcps-como-memória-persistente","Solução: MCPs como Memória Persistente",[15,928,929,932,933,349],{},[24,930,931],{},"MCPs"," (protocolo padronizado para integração de ferramentas) permitem ao agente ",[24,934,935],{},"acessar dados estruturados sem carregar no contexto",[165,937,941],{"className":938,"code":939,"language":940,"meta":173,"style":173},"language-json shiki shiki-themes github-light laserwave","{\n  \"name\": \"project-state-mcp\",\n  \"description\": \"Acesso a estado persistente do projeto\",\n  \"tools\": [\n    {\n      \"name\": \"get_architecture_decisions\",\n      \"description\": \"Retorna decisões arquiteturais com justificativas\"\n    },\n    {\n      \"name\": \"get_known_issues\",\n      \"description\": \"Bugs conhecidos e resoluções anteriores\"\n    },\n    {\n      \"name\": \"get_approved_patterns\",\n      \"description\": \"Padrões de código aprovados no projeto\"\n    }\n  ]\n}\n","json",[36,942,943,948,974,993,1006,1011,1031,1049,1054,1058,1077,1094,1098,1102,1121,1138,1143,1148],{"__ignoreMap":173},[219,944,945],{"class":221,"line":222},[219,946,947],{"class":348},"{\n",[219,949,950,954,957,960,962,966,969,971],{"class":221,"line":229},[219,951,953],{"class":952},"s5Aia","  \"",[219,955,345],{"class":956},"sET0r",[219,958,959],{"class":952},"\"",[219,961,349],{"class":348},[219,963,965],{"class":964},"sOSeT"," \"",[219,967,968],{"class":236},"project-state-mcp",[219,970,959],{"class":964},[219,972,973],{"class":348},",\n",[219,975,976,978,980,982,984,986,989,991],{"class":221,"line":250},[219,977,953],{"class":952},[219,979,357],{"class":956},[219,981,959],{"class":952},[219,983,349],{"class":348},[219,985,965],{"class":964},[219,987,988],{"class":236},"Acesso a estado persistente do projeto",[219,990,959],{"class":964},[219,992,973],{"class":348},[219,994,995,997,999,1001,1003],{"class":221,"line":265},[219,996,953],{"class":952},[219,998,367],{"class":956},[219,1000,959],{"class":952},[219,1002,349],{"class":348},[219,1004,1005],{"class":348}," [\n",[219,1007,1008],{"class":221,"line":282},[219,1009,1010],{"class":348},"    {\n",[219,1012,1013,1016,1018,1020,1022,1024,1027,1029],{"class":221,"line":373},[219,1014,1015],{"class":952},"      \"",[219,1017,345],{"class":956},[219,1019,959],{"class":952},[219,1021,349],{"class":348},[219,1023,965],{"class":964},[219,1025,1026],{"class":236},"get_architecture_decisions",[219,1028,959],{"class":964},[219,1030,973],{"class":348},[219,1032,1033,1035,1037,1039,1041,1043,1046],{"class":221,"line":382},[219,1034,1015],{"class":952},[219,1036,357],{"class":956},[219,1038,959],{"class":952},[219,1040,349],{"class":348},[219,1042,965],{"class":964},[219,1044,1045],{"class":236},"Retorna decisões arquiteturais com justificativas",[219,1047,1048],{"class":964},"\"\n",[219,1050,1051],{"class":221,"line":390},[219,1052,1053],{"class":348},"    },\n",[219,1055,1056],{"class":221,"line":403},[219,1057,1010],{"class":348},[219,1059,1060,1062,1064,1066,1068,1070,1073,1075],{"class":221,"line":408},[219,1061,1015],{"class":952},[219,1063,345],{"class":956},[219,1065,959],{"class":952},[219,1067,349],{"class":348},[219,1069,965],{"class":964},[219,1071,1072],{"class":236},"get_known_issues",[219,1074,959],{"class":964},[219,1076,973],{"class":348},[219,1078,1079,1081,1083,1085,1087,1089,1092],{"class":221,"line":415},[219,1080,1015],{"class":952},[219,1082,357],{"class":956},[219,1084,959],{"class":952},[219,1086,349],{"class":348},[219,1088,965],{"class":964},[219,1090,1091],{"class":236},"Bugs conhecidos e resoluções anteriores",[219,1093,1048],{"class":964},[219,1095,1096],{"class":221,"line":510},[219,1097,1053],{"class":348},[219,1099,1100],{"class":221,"line":516},[219,1101,1010],{"class":348},[219,1103,1104,1106,1108,1110,1112,1114,1117,1119],{"class":221,"line":522},[219,1105,1015],{"class":952},[219,1107,345],{"class":956},[219,1109,959],{"class":952},[219,1111,349],{"class":348},[219,1113,965],{"class":964},[219,1115,1116],{"class":236},"get_approved_patterns",[219,1118,959],{"class":964},[219,1120,973],{"class":348},[219,1122,1123,1125,1127,1129,1131,1133,1136],{"class":221,"line":528},[219,1124,1015],{"class":952},[219,1126,357],{"class":956},[219,1128,959],{"class":952},[219,1130,349],{"class":348},[219,1132,965],{"class":964},[219,1134,1135],{"class":236},"Padrões de código aprovados no projeto",[219,1137,1048],{"class":964},[219,1139,1140],{"class":221,"line":533},[219,1141,1142],{"class":348},"    }\n",[219,1144,1145],{"class":221,"line":539},[219,1146,1147],{"class":348},"  ]\n",[219,1149,1150],{"class":221,"line":545},[219,1151,1152],{"class":348},"}\n",[15,1154,1155],{},[24,1156,1157],{},"Exemplos de MCPs em Produção (Dezembro 2025):",[67,1159,1160,1166,1172],{},[70,1161,1162,1165],{},[24,1163,1164],{},"Serena MCP"," — toolkit completo para agentes de código (busca semântica, edição inteligente). Integra com Claude Code e funciona com sub-agents",[70,1167,1168,1171],{},[24,1169,1170],{},"Google Cloud Security MCP"," — conecta SOC personas com runbooks de segurança",[70,1173,1174,1177],{},[24,1175,1176],{},"Shortcut MCP"," — integra gerenciamento de projetos com contexto de agentes",[15,1179,1180,1183],{},[24,1181,1182],{},"Benefício",": O agente não precisa reler tudo novamente — acessa via chamada de ferramenta, economizando 60-80% de tokens.",[45,1185],{},[10,1187,1189],{"id":1188},"_7-novidade-agentes-paralelos-em-cursor-20","7. Novidade: Agentes Paralelos em Cursor 2.0",[52,1191,1193],{"id":1192},"o-que-mudou-outubro-2025","O Que Mudou (Outubro 2025)",[15,1195,1196,1197,1200,1201,1203],{},"Cursor 2.0 introduziu ",[24,1198,1199],{},"até 8 agentes simultâneos"," usando ",[24,1202,209],{}," ou máquinas remotas:",[165,1205,1208],{"className":1206,"code":1207,"language":170},[168],"Agente 1 (Composer model, worktree-1): Backend refactoring\nAgente 2 (Composer model, worktree-2): Frontend components\nAgente 3 (GPT-4 Codex, worktree-3): Testes E2E\n",[36,1209,1207],{"__ignoreMap":173},[15,1211,1212],{},"Cada worktree é um clone isolado da mesma repo — mudanças não conflitam. Você compara os 3 resultados e escolhe o melhor.",[15,1214,1215],{},[24,1216,1217],{},"Implicação prática:",[67,1219,1220,1223,1226],{},[70,1221,1222],{},"Tarefas complexas resolvidas 2-3x mais rápido",[70,1224,1225],{},"Comparação de resultados para hard problems (múltiplos modelos tentando a mesma coisa)",[70,1227,1228],{},"Git worktrees gerenciadas automaticamente pelo Cursor",[45,1230],{},[10,1232,1234],{"id":1233},"_8-windsurf-cascade-indexação-semântica","8. Windsurf Cascade: Indexação Semântica",[52,1236,1238],{"id":1237},"como-funciona-dezembro-2025","Como Funciona (Dezembro 2025)",[15,1240,1241,1243,1244,349],{},[24,1242,290],{}," pré-escaneia seu repositório inteiro e cria um ",[24,1245,1246],{},"índice semântico em AST",[165,1248,1251],{"className":1249,"code":1250,"language":170},[168],"Seu código:\n├── auth\u002F\n│   ├── login.py     → [função login, classe AuthService, imports]\n│   ├── jwt.py       → [função encode_token, função decode_token]\n├── models\u002F\n│   ├── user.py      → [classe User, validadores]\n│   ├── schema.py    → [Pydantic BaseModel subclasses]\n\nÍndice semântico de Windsurf:\n- Entity: \"login\" (function) → arquivo: auth\u002Flogin.py:15\n- Entity: \"AuthService\" (class) → arquivo: auth\u002Flogin.py:42\n- Dependency: AuthService → jwt.encode_token\n- Dependency: User model → schema.py\n",[36,1252,1250],{"__ignoreMap":173},[15,1254,1255],{},"Quando você pede \"refatore a autenticação para usar JWT\", Cascade entende a estrutura sem ler arquivo inteiro.",[15,1257,1258,1261],{},[24,1259,1260],{},"Vantagem sobre grep",": Contexto estrutural, não apenas strings.",[45,1263],{},[10,1265,1267],{"id":1266},"_9-compressão-intencional-vs-auto-compactação","9. Compressão Intencional vs. Auto-Compactação",[52,1269,1271],{"id":1270},"padrões-de-falha-em-compressão-automática","Padrões de Falha em Compressão Automática",[15,1273,1274],{},"Pesquisa de Stanford (2024) identifica 3 padrões onde compressão automática falha:",[115,1276,1277,1283,1289],{},[70,1278,1279,1282],{},[24,1280,1281],{},"\"Lost by the boundary\""," — informação crítica no limite entre chunks é perdida",[70,1284,1285,1288],{},[24,1286,1287],{},"\"Lost if surprise\""," — informações inesperadas\u002Foutliers são descartadas",[70,1290,1291,1294],{},[24,1292,1293],{},"\"Lost along the way\""," — dados no meio do contexto sofrem degradação",[52,1296,1298],{"id":1297},"estratégia-compressão-controlada-com-ranks-explícitos","Estratégia: Compressão Controlada com Ranks Explícitos",[165,1300,1302],{"className":451,"code":1301,"language":453,"meta":173,"style":173},"# Compressão Manual - Sessão #47\n\n## Preservar (Crítico - nunca descartar)\n- Decisão: Usar Row-Level Security no PostgreSQL\n- Motivo: Requisito de segurança para dados multi-tenant\n- Arquivo de referência: `docs\u002Fsecurity-design.md`\n- Prioridade: 🔴 CRÍTICO\n\n## Preservar (Importante - se houver espaço)\n- Padrão de retentativa exponencial com jitter\n- Motivo: Prevenir thundering herd em rate limiting\n\n## Descartar (Já resolvido, sem relevância futura)\n- Discussões sobre escolha de ORM (resolvida com SQLAlchemy, sem alternativas)\n- Debugging de sintaxe Python (problema isolado)\n\n## Nova Janela de Contexto\n- Começar nova sessão com CLAUDE.md + progress.md + arquivo de decisões\n- Sub-agent de \"implementation\" receberá apenas o spec focado\n",[36,1303,1304,1309,1313,1318,1323,1328,1333,1338,1342,1347,1352,1357,1361,1366,1371,1376,1380,1385,1390],{"__ignoreMap":173},[219,1305,1306],{"class":221,"line":222},[219,1307,1308],{},"# Compressão Manual - Sessão #47\n",[219,1310,1311],{"class":221,"line":229},[219,1312,412],{"emptyLinePlaceholder":411},[219,1314,1315],{"class":221,"line":250},[219,1316,1317],{},"## Preservar (Crítico - nunca descartar)\n",[219,1319,1320],{"class":221,"line":265},[219,1321,1322],{},"- Decisão: Usar Row-Level Security no PostgreSQL\n",[219,1324,1325],{"class":221,"line":282},[219,1326,1327],{},"- Motivo: Requisito de segurança para dados multi-tenant\n",[219,1329,1330],{"class":221,"line":373},[219,1331,1332],{},"- Arquivo de referência: `docs\u002Fsecurity-design.md`\n",[219,1334,1335],{"class":221,"line":382},[219,1336,1337],{},"- Prioridade: 🔴 CRÍTICO\n",[219,1339,1340],{"class":221,"line":390},[219,1341,412],{"emptyLinePlaceholder":411},[219,1343,1344],{"class":221,"line":403},[219,1345,1346],{},"## Preservar (Importante - se houver espaço)\n",[219,1348,1349],{"class":221,"line":408},[219,1350,1351],{},"- Padrão de retentativa exponencial com jitter\n",[219,1353,1354],{"class":221,"line":415},[219,1355,1356],{},"- Motivo: Prevenir thundering herd em rate limiting\n",[219,1358,1359],{"class":221,"line":510},[219,1360,412],{"emptyLinePlaceholder":411},[219,1362,1363],{"class":221,"line":516},[219,1364,1365],{},"## Descartar (Já resolvido, sem relevância futura)\n",[219,1367,1368],{"class":221,"line":522},[219,1369,1370],{},"- Discussões sobre escolha de ORM (resolvida com SQLAlchemy, sem alternativas)\n",[219,1372,1373],{"class":221,"line":528},[219,1374,1375],{},"- Debugging de sintaxe Python (problema isolado)\n",[219,1377,1378],{"class":221,"line":533},[219,1379,412],{"emptyLinePlaceholder":411},[219,1381,1382],{"class":221,"line":539},[219,1383,1384],{},"## Nova Janela de Contexto\n",[219,1386,1387],{"class":221,"line":545},[219,1388,1389],{},"- Começar nova sessão com CLAUDE.md + progress.md + arquivo de decisões\n",[219,1391,1393],{"class":221,"line":1392},19,[219,1394,1395],{},"- Sub-agent de \"implementation\" receberá apenas o spec focado\n",[45,1397],{},[10,1399,1401],{"id":1400},"_10-seleção-de-modelo-o-token-mais-barato-é-o-que-você-não-usa","10. Seleção de Modelo: O Token Mais Barato é o Que Você Não Usa",[52,1403,1405],{"id":1404},"matriz-de-seleção-dezembro-2025","Matriz de Seleção (Dezembro 2025)",[772,1407,1408,1423],{},[775,1409,1410],{},[778,1411,1412,1415,1418,1421],{},[781,1413,1414],{},"Tarefa",[781,1416,1417],{},"Modelo",[781,1419,1420],{},"Tokens",[781,1422,795],{},[797,1424,1425,1441,1457,1473],{},[778,1426,1427,1432,1435,1438],{},[802,1428,1429],{},[24,1430,1431],{},"Análise de logs",[802,1433,1434],{},"Haiku \u002F Sonnet 3.5",[802,1436,1437],{},"10k",[802,1439,1440],{},"Procurar padrão de erro",[778,1442,1443,1448,1451,1454],{},[802,1444,1445],{},[24,1446,1447],{},"Refactoring de módulo",[802,1449,1450],{},"Sonnet 4.0",[802,1452,1453],{},"50-100k",[802,1455,1456],{},"Reorganizar auth service",[778,1458,1459,1464,1467,1470],{},[802,1460,1461],{},[24,1462,1463],{},"Design de arquitetura",[802,1465,1466],{},"Opus \u002F Claude Pro",[802,1468,1469],{},"150k+",[802,1471,1472],{},"Redesenhar escalabilidade",[778,1474,1475,1480,1483,1486],{},[802,1476,1477],{},[24,1478,1479],{},"Otimização de performance",[802,1481,1482],{},"Opus + thinking mode",[802,1484,1485],{},"300k+",[802,1487,1488],{},"Profile e otimize bottleneck",[52,1490,1492],{"id":1491},"anti-padrão","Anti-Padrão",[165,1494,1497],{"className":1495,"code":1496,"language":170},[168],"❌ Usar Opus para TUDO porque \"é o melhor\"\n❌ Usar Haiku para refactoring complexo\n❌ Ativar \"thinking mode\" por padrão\n",[36,1498,1496],{"__ignoreMap":173},[15,1500,1501,1503],{},[24,1502,201],{}," permite seleção automática por tarefa — configure \"Auto\" para tarefas simples, Sonnet para moderadas, Opus raramente.",[45,1505],{},[10,1507,1509],{"id":1508},"_11-o-papel-do-thinking-mode","11. O Papel do Thinking Mode",[15,1511,1512,1513,27],{},"Modelos com raciocínio explícito (\"thinking\") podem resolver problemas complexos, mas ",[24,1514,1515],{},"consomem tokens exponencialmente",[52,1517,1519],{"id":1518},"quando-usar-thinking","Quando Usar Thinking",[15,1521,1522],{},"✅ Decisões arquiteturais críticas (e.g., migração de banco de dados)\n✅ Otimizações de performance complexas (e.g., algoritmo de sorting distribuído)\n✅ Análise de segurança profunda (e.g., auditoria de cryptografia)",[52,1524,1526],{"id":1525},"quando-evitar","Quando Evitar",[15,1528,1529],{},"❌ Refactoring simples\n❌ Correção de typos\n❌ Geração de boilerplate",[15,1531,1532,1535],{},[24,1533,1534],{},"Regra de Ouro",": Thinking mode = 3-5x mais tokens. Use apenas quando qualidade justificar.",[45,1537],{},[10,1539,1541],{"id":1540},"_12-terminologia-e-linguagem-técnica-em-português","12. Terminologia e Linguagem Técnica em Português",[15,1543,1544],{},"Para evitar confusões de tradução direta:",[772,1546,1547,1560],{},[775,1548,1549],{},[778,1550,1551,1554,1557],{},[781,1552,1553],{},"Termo Técnico",[781,1555,1556],{},"Tradução Incorreta",[781,1558,1559],{},"Terminologia Correta",[797,1561,1562,1581,1594,1607,1620,1633,1646,1659,1672,1685],{},[778,1563,1564,1569,1572],{},[802,1565,1566],{},[24,1567,1568],{},"Token dilution",[802,1570,1571],{},"Diluição de token",[802,1573,1574,1577,1578],{},[24,1575,1576],{},"Degradação de atenção"," ou ",[24,1579,1580],{},"poluição contextual",[778,1582,1583,1588,1591],{},[802,1584,1585],{},[24,1586,1587],{},"Context window",[802,1589,1590],{},"Janela de contexto (OK)",[802,1592,1593],{},"Janela de contexto \u002F Limite de contexto",[778,1595,1596,1601,1604],{},[802,1597,1598],{},[24,1599,1600],{},"System prompt",[802,1602,1603],{},"Prompt de sistema (OK)",[802,1605,1606],{},"System prompt \u002F Instrução de sistema",[778,1608,1609,1614,1617],{},[802,1610,1611],{},[24,1612,1613],{},"Tool calling",[802,1615,1616],{},"Chamada de ferramenta (OK)",[802,1618,1619],{},"Chamada de ferramenta \u002F Invocação de ferramenta",[778,1621,1622,1627,1630],{},[802,1623,1624],{},[24,1625,1626],{},"Stateless function",[802,1628,1629],{},"Função sem estado",[802,1631,1632],{},"Função sem memória (mais claro em PT)",[778,1634,1635,1640,1643],{},[802,1636,1637],{},[24,1638,1639],{},"Auto-compact",[802,1641,1642],{},"Auto-compactação (OK)",[802,1644,1645],{},"Compactação automática \u002F Auto-compressão",[778,1647,1648,1653,1656],{},[802,1649,1650],{},[24,1651,1652],{},"Context pollution",[802,1654,1655],{},"Poluição de contexto (OK)",[802,1657,1658],{},"Poluição contextual \u002F Contaminação de contexto",[778,1660,1661,1666,1669],{},[802,1662,1663],{},[24,1664,1665],{},"Embedding",[802,1667,1668],{},"Embedding \u002F Incorporação",[802,1670,1671],{},"Vetor semântico \u002F Representação vetorial",[778,1673,1674,1679,1682],{},[802,1675,1676],{},[24,1677,1678],{},"Retrieval-Augmented Generation (RAG)",[802,1680,1681],{},"Geração aumentada por recuperação",[802,1683,1684],{},"RAG (mantém sigla) \u002F Busca + Geração",[778,1686,1687,1692,1695],{},[802,1688,1689],{},[24,1690,1691],{},"Gist token compression",[802,1693,1694],{},"Compressão de token de essência",[802,1696,1697],{},"Compressão por tokens essenciais \u002F Síntese comprimida",[45,1699],{},[10,1701,1703],{"id":1702},"_13-monitoramento-e-otimização-contínua","13. Monitoramento e Otimização Contínua",[52,1705,1707],{"id":1706},"métricas-que-importam","Métricas que Importam",[115,1709,1710,1716,1722,1728],{},[70,1711,1712,1715],{},[24,1713,1714],{},"Taxa de Sucesso"," — % de tarefas completas na primeira tentativa",[70,1717,1718,1721],{},[24,1719,1720],{},"Tokens por Sucesso"," — quanto custa cada tarefa bem-feita",[70,1723,1724,1727],{},[24,1725,1726],{},"Tempo de Resposta"," — latência total (não linear com tokens)",[70,1729,1730,1733],{},[24,1731,1732],{},"Utilização Contextual"," — % da janela realmente usado",[52,1735,1737],{"id":1736},"ferramentas-de-observabilidade-dezembro-2025","Ferramentas de Observabilidade (Dezembro 2025)",[67,1739,1740,1746,1754,1759],{},[70,1741,1742,1745],{},[24,1743,1744],{},"Cursor",": Veja tokens\u002Fstats em cada operação via UI",[70,1747,1748,1750,1751],{},[24,1749,290],{},": Logs detalhados de retrieval + tokens em ",[36,1752,1753],{},"~\u002F.windsurf\u002Flogs",[70,1755,1756,1758],{},[24,1757,304],{},": Análise retrospectiva de traces via Claude Dashboard",[70,1760,1761,1764],{},[24,1762,1763],{},"Qodo",": Métricas por agent executado",[52,1766,1768],{"id":1767},"pipeline-de-otimização-realista","Pipeline de Otimização Realista",[165,1770,1773],{"className":1771,"code":1772,"language":170},[168],"Semana 1: Medir baseline\n  Métrica: 150k tokens\u002Ftarefa, 60% sucesso\n\nSemana 2: Implementar RAG inteligente\n  Métrica: 80k tokens, 75% sucesso\n\nSemana 3: Adicionar MCPs\n  Métrica: 50k tokens, 85% sucesso\n\nSemana 4: Multi-agent (research-plan-implement)\n  Métrica: 40k tokens, 90% sucesso\n\nSemana 5+: Refinamentos incrementais\n  Métrica: 30k tokens, 92% sucesso\n",[36,1774,1772],{"__ignoreMap":173},[45,1776],{},[10,1778,1780],{"id":1779},"_14-anti-padrões-comuns","14. Anti-Padrões Comuns",[52,1782,1784],{"id":1783},"enviando-tudo-de-uma-vez","❌ Enviando Tudo de Uma Vez",[165,1786,1790],{"className":1787,"code":1788,"language":1789,"meta":173,"style":173},"language-python shiki shiki-themes github-light laserwave","# RUIM\nagent.run(\"\"\"\n    TODO: Refatore o módulo de autenticação.\n    \n    Aqui está TODA a base de código:\n    [500 arquivos anexados]\n    \n    Aqui está a documentação:\n    [50 PDFs]\n\"\"\")\n","python",[36,1791,1792,1797,1814,1819,1824,1829,1834,1838,1843,1848],{"__ignoreMap":173},[219,1793,1794],{"class":221,"line":222},[219,1795,1796],{"class":225},"# RUIM\n",[219,1798,1799,1802,1804,1808,1811],{"class":221,"line":229},[219,1800,1801],{"class":240},"agent",[219,1803,27],{"class":348},[219,1805,1807],{"class":1806},"sjPLu","run",[219,1809,1810],{"class":348},"(",[219,1812,1813],{"class":964},"\"\"\"\n",[219,1815,1816],{"class":221,"line":250},[219,1817,1818],{"class":236},"    TODO: Refatore o módulo de autenticação.\n",[219,1820,1821],{"class":221,"line":265},[219,1822,1823],{"class":236},"    \n",[219,1825,1826],{"class":221,"line":282},[219,1827,1828],{"class":236},"    Aqui está TODA a base de código:\n",[219,1830,1831],{"class":221,"line":373},[219,1832,1833],{"class":236},"    [500 arquivos anexados]\n",[219,1835,1836],{"class":221,"line":382},[219,1837,1823],{"class":236},[219,1839,1840],{"class":221,"line":390},[219,1841,1842],{"class":236},"    Aqui está a documentação:\n",[219,1844,1845],{"class":221,"line":403},[219,1846,1847],{"class":236},"    [50 PDFs]\n",[219,1849,1850,1853],{"class":221,"line":408},[219,1851,1852],{"class":964},"\"\"\"",[219,1854,247],{"class":348},[52,1856,1858],{"id":1857},"recuperação-iterativa","✅ Recuperação Iterativa",[165,1860,1862],{"className":1787,"code":1861,"language":1789,"meta":173,"style":173},"# BOM\nagent.run(\"\"\"\n    TODO: Refatore o módulo de autenticação.\n    \n    Explore:\n    1. Procure por classes com 'Auth' no nome\n    2. Identifique a função entry point\n    3. Mapeie dependências\n    4. Depois, revise estrutura\n\"\"\")\n",[36,1863,1864,1869,1881,1885,1889,1894,1899,1904,1909,1914],{"__ignoreMap":173},[219,1865,1866],{"class":221,"line":222},[219,1867,1868],{"class":225},"# BOM\n",[219,1870,1871,1873,1875,1877,1879],{"class":221,"line":229},[219,1872,1801],{"class":240},[219,1874,27],{"class":348},[219,1876,1807],{"class":1806},[219,1878,1810],{"class":348},[219,1880,1813],{"class":964},[219,1882,1883],{"class":221,"line":250},[219,1884,1818],{"class":236},[219,1886,1887],{"class":221,"line":265},[219,1888,1823],{"class":236},[219,1890,1891],{"class":221,"line":282},[219,1892,1893],{"class":236},"    Explore:\n",[219,1895,1896],{"class":221,"line":373},[219,1897,1898],{"class":236},"    1. Procure por classes com 'Auth' no nome\n",[219,1900,1901],{"class":221,"line":382},[219,1902,1903],{"class":236},"    2. Identifique a função entry point\n",[219,1905,1906],{"class":221,"line":390},[219,1907,1908],{"class":236},"    3. Mapeie dependências\n",[219,1910,1911],{"class":221,"line":403},[219,1912,1913],{"class":236},"    4. Depois, revise estrutura\n",[219,1915,1916,1918],{"class":221,"line":408},[219,1917,1852],{"class":964},[219,1919,247],{"class":348},[52,1921,1923],{"id":1922},"um-agente-fazendo-tudo","❌ Um Agente Fazendo Tudo",[165,1925,1927],{"className":1787,"code":1926,"language":1789,"meta":173,"style":173},"# RUIM - contexto poluído\nagent = create_agent(\n    instructions=\"\"\"\n        Você é um desenvolvedor full-stack que:\n        - Escreve backend em FastAPI\n        - Escreve frontend em React\n        - Faz deploy em Docker\n        - Escreve testes\n        - Documenta tudo\n        - Otimiza performance\n    \"\"\"\n)\n",[36,1928,1929,1934,1949,1959,1964,1969,1974,1979,1984,1989,1994,1999],{"__ignoreMap":173},[219,1930,1931],{"class":221,"line":222},[219,1932,1933],{"class":225},"# RUIM - contexto poluído\n",[219,1935,1936,1939,1943,1946],{"class":221,"line":229},[219,1937,1938],{"class":240},"agent ",[219,1940,1942],{"class":1941},"s8LQa","=",[219,1944,1945],{"class":1806}," create_agent",[219,1947,1948],{"class":348},"(\n",[219,1950,1951,1955,1957],{"class":221,"line":250},[219,1952,1954],{"class":1953},"suxbL","    instructions",[219,1956,1942],{"class":1941},[219,1958,1813],{"class":964},[219,1960,1961],{"class":221,"line":265},[219,1962,1963],{"class":236},"        Você é um desenvolvedor full-stack que:\n",[219,1965,1966],{"class":221,"line":282},[219,1967,1968],{"class":236},"        - Escreve backend em FastAPI\n",[219,1970,1971],{"class":221,"line":373},[219,1972,1973],{"class":236},"        - Escreve frontend em React\n",[219,1975,1976],{"class":221,"line":382},[219,1977,1978],{"class":236},"        - Faz deploy em Docker\n",[219,1980,1981],{"class":221,"line":390},[219,1982,1983],{"class":236},"        - Escreve testes\n",[219,1985,1986],{"class":221,"line":403},[219,1987,1988],{"class":236},"        - Documenta tudo\n",[219,1990,1991],{"class":221,"line":408},[219,1992,1993],{"class":236},"        - Otimiza performance\n",[219,1995,1996],{"class":221,"line":415},[219,1997,1998],{"class":964},"    \"\"\"\n",[219,2000,2001],{"class":221,"line":510},[219,2002,247],{"class":348},[52,2004,2006],{"id":2005},"agentes-especializados","✅ Agentes Especializados",[165,2008,2010],{"className":1787,"code":2009,"language":1789,"meta":173,"style":173},"# BOM - contexto focado\nresearch_agent = SubAgent(instructions=\"Analise a codebase e proponha arquitetura\")\nbackend_agent = SubAgent(instructions=\"Implemente endpoints FastAPI\")\ntest_agent = SubAgent(instructions=\"Escreva testes pytest\")\nreview_agent = SubAgent(instructions=\"Revise código para padrões e segurança\")\n\n# Orquestre manualmente ou deixe Claude Code coordenar\n",[36,2011,2012,2017,2043,2067,2091,2115,2119],{"__ignoreMap":173},[219,2013,2014],{"class":221,"line":222},[219,2015,2016],{"class":225},"# BOM - contexto focado\n",[219,2018,2019,2022,2024,2027,2029,2032,2034,2036,2039,2041],{"class":221,"line":229},[219,2020,2021],{"class":240},"research_agent ",[219,2023,1942],{"class":1941},[219,2025,2026],{"class":1806}," SubAgent",[219,2028,1810],{"class":348},[219,2030,2031],{"class":1953},"instructions",[219,2033,1942],{"class":1941},[219,2035,959],{"class":964},[219,2037,2038],{"class":236},"Analise a codebase e proponha arquitetura",[219,2040,959],{"class":964},[219,2042,247],{"class":348},[219,2044,2045,2048,2050,2052,2054,2056,2058,2060,2063,2065],{"class":221,"line":250},[219,2046,2047],{"class":240},"backend_agent ",[219,2049,1942],{"class":1941},[219,2051,2026],{"class":1806},[219,2053,1810],{"class":348},[219,2055,2031],{"class":1953},[219,2057,1942],{"class":1941},[219,2059,959],{"class":964},[219,2061,2062],{"class":236},"Implemente endpoints FastAPI",[219,2064,959],{"class":964},[219,2066,247],{"class":348},[219,2068,2069,2072,2074,2076,2078,2080,2082,2084,2087,2089],{"class":221,"line":265},[219,2070,2071],{"class":240},"test_agent ",[219,2073,1942],{"class":1941},[219,2075,2026],{"class":1806},[219,2077,1810],{"class":348},[219,2079,2031],{"class":1953},[219,2081,1942],{"class":1941},[219,2083,959],{"class":964},[219,2085,2086],{"class":236},"Escreva testes pytest",[219,2088,959],{"class":964},[219,2090,247],{"class":348},[219,2092,2093,2096,2098,2100,2102,2104,2106,2108,2111,2113],{"class":221,"line":282},[219,2094,2095],{"class":240},"review_agent ",[219,2097,1942],{"class":1941},[219,2099,2026],{"class":1806},[219,2101,1810],{"class":348},[219,2103,2031],{"class":1953},[219,2105,1942],{"class":1941},[219,2107,959],{"class":964},[219,2109,2110],{"class":236},"Revise código para padrões e segurança",[219,2112,959],{"class":964},[219,2114,247],{"class":348},[219,2116,2117],{"class":221,"line":373},[219,2118,412],{"emptyLinePlaceholder":411},[219,2120,2121],{"class":221,"line":382},[219,2122,2123],{"class":225},"# Orquestre manualmente ou deixe Claude Code coordenar\n",[45,2125],{},[10,2127,2129],{"id":2128},"conclusão-tokens-como-recurso-finito","Conclusão: Tokens Como Recurso Finito",[15,2131,2132,2133,2136],{},"A otimização de tokens é fundamentalmente sobre ",[24,2134,2135],{},"tratar tokens como um recurso finito e valioso",", semelhante a memória RAM ou CPU em sistemas tradicionais.",[15,2138,2139],{},"Os princípios aplicados por profissionais de produção em Dezembro de 2025:",[115,2141,2142,2148,2154,2160,2166,2172,2178,2184,2190,2196],{},[70,2143,2144,2147],{},[24,2145,2146],{},"Qualidade > Quantidade"," — contexto focado supera contexto abundante",[70,2149,2150,2153],{},[24,2151,2152],{},"Arquitetura Multi-Agente"," — divida problemas complexos em tarefas especializadas",[70,2155,2156,2159],{},[24,2157,2158],{},"Compressão Intencional"," — controle o que é memorizado, não confie em resumos automáticos",[70,2161,2162,2165],{},[24,2163,2164],{},"Busca Iterativa"," — carregue contexto sob demanda, não tudo de uma vez",[70,2167,2168,2171],{},[24,2169,2170],{},"Seleção Apropriada de Modelo"," — use o modelo certo para cada tarefa",[70,2173,2174,2177],{},[24,2175,2176],{},"Indexação Semântica"," — aproveite AST e embeddings, não grep naive",[70,2179,2180,2183],{},[24,2181,2182],{},"MCPs para Memória"," — acesse estado persistente via ferramentas, não contexto",[70,2185,2186,2189],{},[24,2187,2188],{},"Observabilidade"," — meça e otimize continuamente",[70,2191,2192,2195],{},[24,2193,2194],{},"Sub-agents para Isolamento"," — cada agente especializado, contexto próprio",[70,2197,2198,2201],{},[24,2199,2200],{},"Agentes Paralelos"," — Cursor 2.0 permite 8 agentes simultâneos via git worktrees",[15,2203,2204,2205,2208],{},"Aplicar essas técnicas não é apenas economizar tokens — é construir agentes de IA que ",[24,2206,2207],{},"raciocinam melhor, entregam código de qualidade superior, e custam menos"," no processo.",[45,2210],{},[10,2212,2214],{"id":2213},"referências-técnicas","Referências Técnicas",[67,2216,2217,2223,2229,2235,2240,2246,2251,2257],{},[70,2218,2219,2222],{},[24,2220,2221],{},"Anthropic Engineering",": \"Effective context engineering for AI agents\" (2025)",[70,2224,2225,2228],{},[24,2226,2227],{},"Refine AI Case Study",": \"Quality Code Generation: Multi-Agent Systems and Token Dilution\" (90% token reduction com multi-agent)",[70,2230,2231,2234],{},[24,2232,2233],{},"Cursor 2.0 Release",": \"Introducing Cursor 2.0 and Composer\" (October 2025) — git worktrees, 8 parallel agents",[70,2236,2237,2239],{},[24,2238,290],{},": AST-based semantic indexing, Cascade 2.0 roadmap (code review + benchmarking)",[70,2241,2242,2245],{},[24,2243,2244],{},"Claude Code Documentation",": Sub-agents, MCP protocol extensions, context isolation patterns",[70,2247,2248,2250],{},[24,2249,1164],{},": Semantic code understanding toolkit para code agents (GitHub: oraios\u002Fserena)",[70,2252,2253,2256],{},[24,2254,2255],{},"HumanLayer Blog",": \"Writing a good CLAUDE.md\" (instruction-following research)",[70,2258,2259,370,2262],{},[24,2260,2261],{},"Research Papers",[67,2263,2264,2267,2270,2273],{},[70,2265,2266],{},"\"Self-Organized Agents\" (SoA framework)",[70,2268,2269],{},"\"Chain of Agents\" (CoA framework)",[70,2271,2272],{},"\"Gist Token-based Context Compression\" (Stanford, padrões de falha)",[70,2274,2275],{},"\"LLMLingua: Compressing Prompts for Accelerated Inference\"",[2277,2278,2279],"style",{},"html pre.shiki code .sZYUP, html code.shiki .sZYUP{--shiki-default:#6A737D;--shiki-dark:#91889B}html pre.shiki code .syaLL, html code.shiki .syaLL{--shiki-default:#6F42C1;--shiki-dark:#EB64B9}html pre.shiki code .sZ1wT, html code.shiki .sZ1wT{--shiki-default:#032F62;--shiki-dark:#B4DCE7}html pre.shiki code .sWm_A, html code.shiki .sWm_A{--shiki-default:#24292E;--shiki-dark:#FFFFFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spK93, html code.shiki .spK93{--shiki-default:#24292E;--shiki-dark:#7B6995}html pre.shiki code .s5Aia, html code.shiki .s5Aia{--shiki-default:#005CC5;--shiki-dark:#7B6995}html pre.shiki code .sET0r, html code.shiki .sET0r{--shiki-default:#005CC5;--shiki-dark:#40B4C4}html pre.shiki code .sOSeT, html code.shiki .sOSeT{--shiki-default:#032F62;--shiki-dark:#7B6995}html pre.shiki code .sjPLu, html code.shiki .sjPLu{--shiki-default:#24292E;--shiki-dark:#EB64B9}html pre.shiki code .s8LQa, html code.shiki .s8LQa{--shiki-default:#D73A49;--shiki-dark:#74DFC4}html pre.shiki code .suxbL, html code.shiki .suxbL{--shiki-default:#E36209;--shiki-dark:#40B4C4}html pre.shiki code .sU85Z, html code.shiki .sU85Z{--shiki-default:#6F42C1;--shiki-dark:#FFFFFF}html pre.shiki code .swsWu, html code.shiki .swsWu{--shiki-default:#22863A;--shiki-dark:#74DFC4}",{"title":173,"searchDepth":229,"depth":229,"links":2281},[2282,2283,2287,2292,2297,2302,2303,2307,2310,2313,2317,2321,2325,2326,2331,2337,2338],{"id":12,"depth":229,"text":13},{"id":49,"depth":229,"text":50,"children":2284},[2285,2286],{"id":54,"depth":250,"text":55},{"id":109,"depth":250,"text":110},{"id":139,"depth":229,"text":140,"children":2288},[2289,2290,2291],{"id":143,"depth":250,"text":144},{"id":159,"depth":250,"text":160},{"id":195,"depth":250,"text":196},{"id":423,"depth":229,"text":424,"children":2293},[2294,2295,2296],{"id":427,"depth":250,"text":428},{"id":441,"depth":250,"text":442},{"id":584,"depth":250,"text":585},{"id":688,"depth":229,"text":689,"children":2298},[2299,2300,2301],{"id":692,"depth":250,"text":693},{"id":699,"depth":250,"text":700},{"id":744,"depth":250,"text":745},{"id":766,"depth":229,"text":767},{"id":900,"depth":229,"text":901,"children":2304},[2305,2306],{"id":904,"depth":250,"text":905},{"id":925,"depth":250,"text":926},{"id":1188,"depth":229,"text":1189,"children":2308},[2309],{"id":1192,"depth":250,"text":1193},{"id":1233,"depth":229,"text":1234,"children":2311},[2312],{"id":1237,"depth":250,"text":1238},{"id":1266,"depth":229,"text":1267,"children":2314},[2315,2316],{"id":1270,"depth":250,"text":1271},{"id":1297,"depth":250,"text":1298},{"id":1400,"depth":229,"text":1401,"children":2318},[2319,2320],{"id":1404,"depth":250,"text":1405},{"id":1491,"depth":250,"text":1492},{"id":1508,"depth":229,"text":1509,"children":2322},[2323,2324],{"id":1518,"depth":250,"text":1519},{"id":1525,"depth":250,"text":1526},{"id":1540,"depth":229,"text":1541},{"id":1702,"depth":229,"text":1703,"children":2327},[2328,2329,2330],{"id":1706,"depth":250,"text":1707},{"id":1736,"depth":250,"text":1737},{"id":1767,"depth":250,"text":1768},{"id":1779,"depth":229,"text":1780,"children":2332},[2333,2334,2335,2336],{"id":1783,"depth":250,"text":1784},{"id":1857,"depth":250,"text":1858},{"id":1922,"depth":250,"text":1923},{"id":2005,"depth":250,"text":2006},{"id":2128,"depth":229,"text":2129},{"id":2213,"depth":229,"text":2214},"2025-12-01","Estratégias de engenharia de contexto para maximizar eficiência de tokens. Aprenda como profissionais usam multi-agents, compressão intencional e MCPs com Cursor, Windsurf e Claude Code.","md",{},"\u002Fotimizacao-tokens",{"title":5,"description":2340},{"loc":2343},"otimizacao-tokens","YFikh7VJPRsyR7pU_QivGh_sV4Myl8whO4XJhIU3vnM",1786131719294]