Pitch: Como coloquei em produção um ecossistema de 76 módulos (v3.0.8) em par com agentes de IA usando Memory-Driven Development (e por que virei o gargalo humano)
Fala pessoal do TabNews!
Tenho mais de 20 anos de estrada como arquiteto de software e desenvolvedor backend. Nos últimos 14 meses, decidi testar no limite real de produção o que um único arquiteto consegue construir operando uma força de trabalho de agentes de IA — não para criar um "MVP de fim de semana", mas um ecossistema completo em produção real.
Na última sexta-feira (16/10), concluímos o cutover definitivo da versão v3.0.8 do Conn2Flow (conn2flow.com), somando 76 módulos em produção (35 no core open-source MIT + 41 na camada comercial Pro/Cloud), com provisionamento automático de servidores, checkout multi-moeda e sincronização full-duplex entre produção e ambiente de desenvolvimento.
E hoje quero compartilhar um efeito colateral curioso que aconteceu nessa reta final: os agentes ficaram tão rápidos e precisos que eu (o único humano no loop) deixei de dar conta de revisar e homologar tudo sozinho.
Aqui está a arquitetura exata que usamos para chegar nesse ponto sem transformar o código em espaguete e sem queimar milhares de dólares em tokens.
1. Da Engenharia de Prompts para o Memory-Driven Development (MDD)
No começo, caí na mesma armadilha que quase todo mundo: acreditar que janelas de contexto de 1 milhão de tokens resolveriam tudo. Jogava dezenas de arquivos no prompt e pedia para o LLM implementar uma feature.
O resultado sempre batia em três muros:
- Lost in the Middle: O modelo esquecia invariantes de segurança e contratos de banco definidos no meio do contexto.
- Contaminação de Padrões: O agente lia um script legado e replicava o padrão antigo em módulos novos.
- Explosão de Latência e Custo: Cada ajuste virava uma requisição pesada e lenta.
A virada aconteceu quando invertemos a lógica: quem deve carregar a cognição não é a janela de contexto do modelo, é o próprio repositório.
Estruturamos o que chamamos de MDD (Memory-Driven Development), dividido em 4 camadas dentro da pasta memory/:
- Camada 1 (Episódica): Requisições (
human-requests/), lotes de implementação (implementation/), validações e revisões (human-reviews/). - Camada 2 (Semântica / Normativa): Os 5 documentos raiz canônicos (
00-baseline-architecture.mda04-memory-engineering-execution.md) e o log de decisões (DECISION-LOG.md). - Camada 3 (Procedural): Um catálogo de 45 Skills modulares (
.gemini/skills/, sincronizadas deterministicamente para Claude Code, Cursor, Codex e GitHub Copilot viasync-skills.cjs). Cada vez que um modelo errava uma regra de negócio ou armadilha do PHP/MySQL, cristalizávamos o aprendizado em uma skill. - Camada 4 (Raw / Sináptica): Notas de trabalho ativas com poda rigorosa.
2. Shallow Indexing (<5KB) e a Trava Tripla (Arquiteto ➔ Executor ➔ Revisor)
Para impedir que os agentes leiam 500 arquivos à toa, implementamos Shallow Indexing e a Regra dos 10:
- Toda pasta de governança possui um
index.mdderivado automaticamente via CLI (php cli/c2f.php memory:indexoumdd index) com menos de 5KB. - O documento roteador raiz (
00-baseline-architecture.md) tem teto estrito de 30KB, e a memória ativa de execução nunca passa de 50KB (usando arquivamento dual emarchive/original/earchive/compacted/). - Com isso, modelos médios e rápidos executam com precisão de Staff Engineer porque leem o mapa em milissegundos e abrem cirurgicamente apenas os 2 ou 3 arquivos daquela fatia atômica.
Além disso, nenhum agente faz merge do próprio trabalho. Operamos com a Trava Tripla (ARCH-015):
- Arquiteto: Define o contrato normativo e limites de escopo na
req-XXX.md. - Executor: Implementa a fatia, roda PHPUnit / Vitest / Playwright e emite um recibo verificável (
completions/-receipt.json). - Revisor Independente: Audita segurança, regressões e conformidade contra a spec, gerando uma ficha enxuta em
memory/human-reviews/rev-XXX.mdcom parecerRECOMMEND-APPROVALouRECOMMEND-REVISIONpara a assinatura final do humano.
3. Versionamento Full-Duplex (Live System <=> Dev Environment) e Updates Blindados
Em CMSs e plataformas web tradicionais, o conteúdo visual e as configurações moram num blob opaco no banco de dados. Se alguém edita uma página em produção, o repositório Git fica desatualizado.
No Conn2Flow v3.0.8, tudo é um recurso versionado:
- Páginas, layouts, templates Tailwind CSS v4, schemas e prompts de IA vivem como arquivos no Git, são compilados para o MariaDB e cacheados.
- Se uma alteração acontece via painel ou IA, o pipeline inverso (
$ c2f resources:sync) extrai do banco de volta para o Git mantendo diffs limpos. - No motor de atualização (
v3.0.5av3.0.8), resolvemos os problemas clássicos de updates em produção: elevação dewait_timeoutpor sessão (8h) no MySQL para evitar2006 MySQL server has gone awayem migrações longas, detecção de processos órfãos nodeploy.lockviaposix_kill($pid, 0)(mesmo sob restrição deopen_basedir), snapshot automático, health check HTTP e rollback instantâneo em caso de falha.
4. O Que Está Aberto para a Comunidade (e Onde Preciso de Braço!)
Como mencionei no início, a velocidade dos agentes criou um gargalo curioso: o sistema está imenso e preciso formar mais desenvolvedores que dominem essa arquitetura (tanto para construírem suas próprias "Software Houses de 1 Homem Só" quanto para atuarem comigo na revisão de lotes e entrega de projetos de clientes).
Para quem quiser inspecionar o código, testar ou caminhar junto:
- Framework MDD e as 45 Skills (Open Source): https://github.com/otavioserra/conn2flow-ai-workspace
- Core do Conn2Flow v3.0.8 (Open Source MIT — PHP 8.2+, CLI
c2f, Tailwind v4): https://github.com/otavioserra/conn2flow - Plataforma Cloud Zero-Touch & Turma Beta da Mentoria "1-Man Software House": https://conn2flow.com/pt-br/pro/ (onde ensino esse fluxo completo ao vivo e de onde vou puxar os primeiros devs certificados para demandas pagas de revisão e implementação).
Como vocês têm organizado a memória e a revisão de código dos agentes de IA nos projetos de vocês? Já bateram nesse gargalo onde revisar o código gerado consome mais tempo do que escrever? Bora trocar ideia nos comentários!