Inicio / Trilha 4 / Modulo 4.7
MODULO 4.7 EXERCICIO FINAL

Integrar Agentes (Exercicio Final)

Exercicio pratico final da Trilha 4: construir um sistema multiagente completo com skills, MCP e memoria funcionando juntos.

6
Topicos
~60
Minutos
Avanc
Avancado
Prat
Pratica

Este e o exercicio final da Trilha 4. Tudo que voce aprendeu nos modulos anteriores (agentes, skills, MCP, memoria, orquestracao) converge aqui. O objetivo: construir um sistema multiagente funcional, integrado e demonstravel. Ao completar este exercicio, voce tera um artefato concreto para incluir no seu portfolio e uma base solida para os agentes do seu SaaS.

1

Revisao: Agentes + Skills + MCP + Memoria

Recap dos conceitos, diagrama de arquitetura, como as pecas se conectam

Antes de construir, vamos rever como todos os componentes se encaixam num sistema coerente. Cada peca que voce aprendeu nos modulos 4.1 a 4.6 tem um papel especifico na arquitetura final. O diagrama abaixo mostra o fluxo completo de uma mensagem do usuario passando por todas as camadas.

Arquitetura Completa do Sistema

                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚     Usuario (Telegram,   β”‚
                    β”‚     Web, API)            β”‚
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚
                                β–Ό
                    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                    β”‚   Router / Dispatcher    β”‚  ← Classifica intencao
                    β”‚   (LLM leve ou regras)   β”‚    e roteia pro agente certo
                    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚
                 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                 β–Ό              β–Ό              β–Ό
          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
          β”‚  Agent A   β”‚ β”‚  Agent B   β”‚ β”‚  Agent C   β”‚
          β”‚ (Research) β”‚ β”‚ (Writer)   β”‚ β”‚ (Code)     β”‚
          β”‚            β”‚ β”‚            β”‚ β”‚            β”‚
          β”‚ Tools:     β”‚ β”‚ Tools:     β”‚ β”‚ Tools:     β”‚
          β”‚ - search   β”‚ β”‚ - write    β”‚ β”‚ - exec     β”‚
          β”‚ - scrape   β”‚ β”‚ - format   β”‚ β”‚ - test     β”‚
          β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜
                 β”‚              β”‚              β”‚
                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                β”‚
                 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                 β–Ό              β–Ό              β–Ό
          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
          β”‚ MCP Server β”‚ β”‚  Memory    β”‚ β”‚  Skills    β”‚
          β”‚ (GitHub,   β”‚ β”‚ (SQLite,   β”‚ β”‚ (JSON      β”‚
          β”‚  FS, DB)   β”‚ β”‚  Vector)   β”‚ β”‚  Schema)   β”‚
          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Agentes (4.1 - 4.2)

LLM + system prompt + loop ReAct. Cada agente tem um papel, um set de tools e um escopo de atuacao. O orquestrador coordena multiplos agentes.

Skills e Tools (4.3 - 4.4)

Funcoes com JSON Schema que o LLM pode chamar. Skills sao pacotes de tools + logica. Function calling e o mecanismo de execucao.

MCP (4.5)

Protocolo padrao para conectar agentes a dados e ferramentas externas. Host/Client/Server. Resources, tools e prompts expostos de forma uniforme.

Memoria (4.6)

Short/long-term, episodica, semantica. SQLite ou vector store. Compactacao de conversas longas. Isolamento por tenant. Handoff estruturado.

πŸ’‘ Dica

Se algum conceito nao esta claro, volte ao modulo correspondente antes de prosseguir. Este exercicio integra tudo. Tentar implementar sem entender os fundamentos vai gerar frustacao. Dedicar 10 minutos revisando agora economiza 1 hora debugando depois.

2

Definir Agentes do seu SaaS

Escolha 2-3 agentes, defina roles, tools, memoria e protocolo de comunicacao

O primeiro passo e decidir quais agentes seu SaaS precisa. Nao tente fazer tudo de uma vez. Escolha 2-3 agentes que cobrem as funcoes mais criticas do seu produto. Cada agente precisa de um papel claro, um set de tools definido, estrategia de memoria e um protocolo de comunicacao com os outros agentes.

Template de Definicao de Agente

Preencha este template para cada agente do seu sistema. Seja especifico: quanto mais claro o papel, melhor o agente funciona.

// Definicao de um agente
interface AgentDefinition {
  id: string              // Ex: 'research-agent'
  name: string            // Ex: 'Agente de Pesquisa'
  role: string            // 1 frase descrevendo o que ele faz
  model: string           // Ex: 'claude-sonnet-4-20250514', 'gpt-4o', 'qwen2.5:14b'

  systemPrompt: string    // Prompt que define personalidade e restricoes

  tools: ToolDefinition[] // Quais tools esse agente pode usar
  mcpServers: string[]    // Quais MCP servers tem acesso

  memory: {
    shortTerm: boolean    // Mantem historico da conversa atual?
    longTerm: boolean     // Persiste preferencias entre sessoes?
    knowledge: boolean    // Acessa knowledge base?
  }

  communication: {
    canReceiveFrom: string[]  // Quais agentes podem delegar pra ele
    canDelegateTo: string[]   // Pra quais agentes ele pode delegar
    handoffFormat: 'structured' | 'summary' | 'full'
  }

  constraints: {
    maxIterations: number   // Limite do loop ReAct
    timeout: number         // Timeout em ms
    requiresApproval: boolean // Precisa de confirmacao humana?
  }
}

Exemplo: 3 Agentes para SaaS de Content

Agent 1: Research Agent

Pesquisa informacoes na web, coleta dados, analisa concorrentes. Usa tools de web search e scraping.

web_search scrape_url analyze_data Modelo: GPT-4o-mini (rapido, barato)
Agent 2: Writer Agent

Gera conteudo baseado nos dados da pesquisa. Escreve artigos, posts, emails. Acessa memoria de preferencias de tom e estilo.

write_file format_markdown check_grammar Modelo: Claude Sonnet (criativo, preciso)
Agent 3: Review Agent

Revisa output do Writer. Checa fatos, consistencia, tom. Aprova ou devolve com feedback especifico.

fact_check score_quality suggest_edits Modelo: GPT-4o (bom em avaliacao)

Fazer

  • Definir cada agente com uma responsabilidade unica e clara
  • Escolher modelos diferentes por custo e capacidade de cada role
  • Documentar o fluxo de comunicacao entre agentes antes de codar

Evitar

  • Criar mais de 3 agentes no primeiro prototipo
  • Agentes com responsabilidades sobrepostas (ambiguidade no routing)
  • Usar o mesmo modelo caro para todos os agentes
3

Implementar Router/Dispatcher

Receber input, classificar intencao, despachar para o agente correto

O Router e o cerebro do sistema: recebe a mensagem do usuario, decide qual agente deve processar e despacha com o contexto correto. Pode ser tao simples quanto keywords (se contem "pesquisa" vai pro Research Agent) ou tao sofisticado quanto um LLM classifier. A abordagem certa depende da variedade de inputs que seu SaaS recebe.

Abordagem 1: Router por Regras (Simples)

Rapido, previsivel, sem custo de tokens. Ideal para comeco e quando as categorias sao bem definidas.

function routeMessage(message: string): string {
  const lower = message.toLowerCase()

  // Comandos explicitos (maior prioridade)
  if (lower.startsWith('/research')) return 'research-agent'
  if (lower.startsWith('/write'))    return 'writer-agent'
  if (lower.startsWith('/review'))   return 'review-agent'

  // Keywords
  const researchKeywords = ['pesquise', 'busque', 'encontre', 'dados sobre']
  const writeKeywords = ['escreva', 'crie', 'gere', 'redija', 'artigo']
  const reviewKeywords = ['revise', 'avalie', 'corrija', 'feedback']

  if (researchKeywords.some(k => lower.includes(k))) return 'research-agent'
  if (writeKeywords.some(k => lower.includes(k)))    return 'writer-agent'
  if (reviewKeywords.some(k => lower.includes(k)))   return 'review-agent'

  // Fallback: agente padrao
  return 'writer-agent'
}

Abordagem 2: Router com LLM Classifier

Mais flexivel, entende nuances, nao depende de keywords exatas. Custa tokens mas classifica melhor. Use um modelo leve e rapido.

async function routeWithLLM(message: string): Promise<string> {
  const classification = await llm.chat({
    model: 'qwen2.5:14b',  // Modelo local, rapido, gratis
    messages: [{
      role: 'system',
      content: `Classifique a mensagem do usuario em UMA das categorias:
- research: usuario quer encontrar informacoes, dados, analises
- write: usuario quer criar conteudo, texto, documentacao
- review: usuario quer avaliar, corrigir ou melhorar algo existente

Responda APENAS com o nome da categoria, nada mais.`
    }, {
      role: 'user',
      content: message
    }],
    temperature: 0  // Deterministico
  })

  const agentMap: Record<string, string> = {
    'research': 'research-agent',
    'write': 'writer-agent',
    'review': 'review-agent'
  }

  const category = classification.trim().toLowerCase()
  return agentMap[category] || 'writer-agent'  // Fallback
}

Abordagem 3: Hibrida (Recomendada)

Comandos explicitos primeiro (sem custo), LLM classifier para mensagens ambiguas. O melhor dos dois mundos.

async function routeHybrid(message: string): Promise<string> {
  // 1. Comandos explicitos (zero custo, alta confianca)
  if (message.startsWith('/')) {
    const command = message.split(' ')[0].toLowerCase()
    const commandMap: Record<string, string> = {
      '/research': 'research-agent',
      '/write': 'writer-agent',
      '/review': 'review-agent'
    }
    if (commandMap[command]) return commandMap[command]
  }

  // 2. Keywords de alta confianca
  const rulesResult = routeByKeywords(message)
  if (rulesResult.confidence > 0.8) return rulesResult.agent

  // 3. LLM classifier para casos ambiguos
  return routeWithLLM(message)
}

πŸ’‘ Dica

Logue cada decisao de routing: qual mensagem, qual agente foi escolhido, qual metodo decidiu (regra, keyword ou LLM). Isso permite analisar depois onde o router erra e melhorar. Um CSV simples com timestamp, mensagem, agente_escolhido, metodo ja e suficiente.

Fazer

  • Sempre ter um fallback agent para mensagens nao classificaveis
  • Testar o router com 20+ mensagens variadas antes de integrar
  • Usar temperature 0 no LLM classifier para respostas deterministicas

Evitar

  • Usar Claude Opus para classificacao (caro e lento para isso)
  • Router que retorna erro em vez de fallback
  • Classificacao com multiplas categorias possiveis (sem desempate)
4

Conectar Skills e MCP Servers

Wirar skills dos modulos anteriores, conectar MCP, testar tool calling end-to-end

Com agentes definidos e router funcionando, agora voce precisa conectar as ferramentas reais. As skills que voce criou no modulo 4.4 e o MCP Server do modulo 4.5 precisam ser registrados nos agentes corretos. O objetivo: quando o LLM decide chamar uma tool, a execucao acontece de verdade e o resultado volta pro agente.

Registrar Tools nos Agentes

Cada agente recebe apenas as tools que faz sentido para seu papel. Nao registre todas as tools em todos os agentes.

// Registro de tools por agente
const agents = {
  'research-agent': {
    model: 'gpt-4o-mini',
    systemPrompt: researchPrompt,
    tools: [
      webSearchTool,      // Busca na web
      scrapeUrlTool,      // Extrai conteudo de URL
      analyzeDataTool     // Analisa dados coletados
    ]
  },
  'writer-agent': {
    model: 'claude-sonnet-4-20250514',
    systemPrompt: writerPrompt,
    tools: [
      writeFileTool,      // Escreve arquivo no filesystem
      formatMarkdownTool, // Formata em markdown
      readFileTool        // Le arquivo existente (via MCP)
    ]
  },
  'review-agent': {
    model: 'gpt-4o',
    systemPrompt: reviewPrompt,
    tools: [
      factCheckTool,      // Verifica fatos online
      scoreQualityTool,   // Da nota de qualidade
      suggestEditsTool    // Sugere edicoes especificas
    ]
  }
}

// Executar agente com suas tools
async function runAgent(agentId: string, input: string) {
  const agent = agents[agentId]
  const response = await llm.chat({
    model: agent.model,
    messages: [
      { role: 'system', content: agent.systemPrompt },
      { role: 'user', content: input }
    ],
    tools: agent.tools.map(t => t.schema)  // JSON Schemas
  })

  // Se o LLM pediu tool call, executar
  if (response.tool_calls) {
    for (const call of response.tool_calls) {
      const tool = agent.tools.find(t => t.name === call.function.name)
      const result = await tool.execute(call.function.arguments)
      // Retornar resultado ao LLM para continuar
    }
  }
}

Conectar MCP Servers

Os MCP Servers rodam como processos separados. Seu agente se conecta via Client e usa as tools/resources expostas pelo Server.

import { Client } from '@modelcontextprotocol/sdk/client/index.js'
import { StdioClientTransport } from
  '@modelcontextprotocol/sdk/client/stdio.js'

// Conectar ao MCP Server de filesystem
const transport = new StdioClientTransport({
  command: 'npx',
  args: ['-y', '@modelcontextprotocol/server-filesystem',
         '/home/user/projetos']
})

const mcpClient = new Client({ name: 'my-saas', version: '1.0' })
await mcpClient.connect(transport)

// Listar tools disponiveis
const { tools } = await mcpClient.listTools()
console.log('MCP tools:', tools.map(t => t.name))
// ['read_file', 'write_file', 'list_directory', ...]

// Usar uma tool do MCP
const result = await mcpClient.callTool({
  name: 'read_file',
  arguments: { path: '/home/user/projetos/meu-saas/README.md' }
})

// Combinar tools locais + MCP tools no agente
const allTools = [...localTools, ...mcpTools]

Teste Isolado de Tool Calling

Antes de integrar tudo, teste cada tool individualmente. Crie um script de teste simples:

// test-tools.ts - Teste individual de cada tool
async function testTools() {
  console.log('=== Testando web_search ===')
  const searchResult = await webSearchTool.execute({
    query: 'MCP Model Context Protocol'
  })
  console.log('Resultado:', searchResult.slice(0, 200))
  assert(searchResult.length > 0, 'web_search deve retornar resultados')

  console.log('=== Testando write_file (MCP) ===')
  const writeResult = await mcpClient.callTool({
    name: 'write_file',
    arguments: {
      path: '/tmp/test-output.md',
      content: '# Teste\nConteudo de teste.'
    }
  })
  assert(writeResult.content, 'write_file deve confirmar escrita')

  console.log('=== Testando score_quality ===')
  const scoreResult = await scoreQualityTool.execute({
    text: 'Este e um artigo de teste sobre inteligencia artificial.'
  })
  assert(scoreResult.score >= 0 && scoreResult.score <= 10)

  console.log('Todos os testes passaram!')
}

testTools().catch(console.error)

πŸ’‘ Dica

Se uma tool falha no teste isolado, nao integre no agente. Debugar uma tool dentro de um loop ReAct multiagente e 10x mais dificil do que debugar isolada. Cada tool deve ter um teste unitario que rode em menos de 5 segundos.

Fazer

  • Testar cada tool isolada antes de registrar no agente
  • Registrar apenas tools relevantes em cada agente (principio do minimo privilegio)
  • Tratar erros de tool execution gracefully (nao crashar o agente)

Evitar

  • Registrar 10+ tools num unico agente (LLM confunde)
  • Tools que modificam dados sem confirmacao em producao
  • Pular teste do MCP Server (problemas de conexao sao comuns)
5

Testar Fluxo Completo

End-to-end: mensagem entra, router classifica, agente executa, memoria atualiza, resposta sai

Agora que cada peca funciona isolada, e hora de testar o fluxo completo end-to-end. Uma mensagem do usuario entra, passa pelo router, chega no agente correto, o agente usa tools, a memoria e atualizada, e a resposta volta. Este e o momento da verdade: tudo precisa funcionar junto, na ordem certa, sem perder dados no caminho.

O Fluxo Completo

1. Input

Usuario envia mensagem

2. Route

Router classifica e despacha

3. Execute

Agente processa com tools

4. Memory

Atualiza memoria

5. Handoff

Se multi-step, passa pro proximo agente

6. Response

Resposta final ao usuario

async function processMessage(userId: string, message: string) {
  const startTime = Date.now()
  const memory = new MemoryManager(db, userId)

  // 1. Carregar contexto do usuario
  const context = await memory.loadForPrompt()

  // 2. Classificar e rotear
  const agentId = await routeHybrid(message)
  console.log(`[ROUTE] "${message}" -> ${agentId}`)

  // 3. Executar agente com tools + contexto
  const agent = agents[agentId]
  const response = await runAgentLoop(agent, message, context)
  console.log(`[EXECUTE] ${agentId} completed in ${Date.now()-startTime}ms`)

  // 4. Atualizar memoria
  await memory.saveMessages([
    { role: 'user', content: message },
    { role: 'assistant', content: response.text }
  ])

  // 5. Extrair fatos para long-term memory
  const facts = await memory.extractFacts([
    { role: 'user', content: message },
    { role: 'assistant', content: response.text }
  ])
  if (facts.length > 0) {
    for (const fact of facts) {
      await memory.addKnowledge(fact.content, fact.type)
    }
  }

  // 6. Compactar se necessario
  await memory.compactIfNeeded()

  // 7. Retornar resposta
  console.log(`[DONE] Total: ${Date.now()-startTime}ms, ` +
    `tokens: ${response.tokensUsed}`)
  return response.text
}

Cenarios de Teste

Teste estes cenarios sistematicamente. Cada um valida uma parte diferente do sistema.

Cenario 1: Routing correto

Envie 10 mensagens diferentes e verifique que cada uma foi pro agente correto. Inclua casos ambiguos.

"Pesquise tendencias de SaaS em 2026" -> research-agent? "Me ajude a escrever um post" -> writer-agent?

Cenario 2: Tool execution

Envie mensagem que force o agente a usar uma tool. Verifique que a tool foi chamada e o resultado integrado na resposta.

"Pesquise e salve os resultados em /tmp/pesquisa.md" -> web_search + write_file

Cenario 3: Memoria persiste

Diga sua preferencia na sessao 1, feche, abra sessao 2 e verifique que o agente lembra.

Sessao 1: "Prefiro respostas curtas" | Sessao 2: "Me explique MCP" -> resposta deve ser curta

Cenario 4: Handoff entre agentes

Envie tarefa que requer 2 agentes em sequencia. Verifique que o contexto foi passado corretamente.

"Pesquise sobre MCP e escreva um artigo" -> research-agent passa resultados pro writer-agent

Cenario 5: Isolamento multi-tenant

Envie mensagens como 2 usuarios diferentes. Verifique que memorias nao vazam entre eles.

User A: "Sou dev Python" | User B: "Quais sao minhas preferencias?" -> nao deve mencionar Python

⚠️ Debugging Multiagentes

Quando algo falha num sistema multiagente, o bug pode estar em qualquer camada: router, agente, tool, memoria ou handoff. Logue tudo: cada decisao do router, cada tool call, cada handoff, cada escrita de memoria. Sem logs, voce vai passar horas tentando reproduzir problemas intermitentes.

Fazer

  • Testar cada cenario individualmente antes de combinΓ‘-los
  • Logar tempo de execucao de cada etapa (router, agent, tools)
  • Incluir cenario de erro (tool falha, agente timeout)
  • Medir custo total por request (tokens de todas as chamadas)

Evitar

  • Testar so o "happy path" (cenarios de erro sao onde bugs vivem)
  • Ignorar latencia acumulada (5 chamadas de LLM = 10-30 segundos)
  • Declarar "funciona" apos 1 teste (teste com pelo menos 10 inputs variados)
  • Esquecer de testar isolamento entre usuarios
6

Exercicio: Demo de Agentes Integrados

Full working demo: 2+ agentes, 3+ skills, MCP conectado, memoria persistindo

Este e o entregavel final da Trilha 4. Construa um sistema multiagente funcional e grave um walkthrough demonstrando que tudo funciona. Nao precisa ser perfeito. Precisa funcionar end-to-end: usuario envia mensagem, sistema processa com agentes, tools e memoria, e retorna uma resposta util.

O walkthrough e importante porque te forca a explicar o que construiu. Se voce nao consegue explicar como funciona, provavelmente nao entendeu o suficiente. A gravacao pode ser um Loom de 5 minutos ou ate um video de terminal com asciinema.

Requisitos Minimos da Demo

1

2+ Agentes com roles distintos

Cada agente com system prompt especifico, model definido e set de tools proprio. Demonstre que cada um faz algo diferente e complementar.

2

3+ Skills funcionais

Pelo menos 3 tools com JSON Schema registradas e funcionando via function calling. Mostre o LLM decidindo chamar a tool e o resultado sendo usado.

3

MCP Server conectado

Pelo menos 1 MCP Server rodando e sendo usado por um agente. Mostre o agente lendo ou escrevendo via MCP (filesystem, GitHub ou outro).

4

Memoria persistindo entre sessoes

Demonstre: diga uma preferencia na sessao 1, feche, abra sessao 2, e o agente lembra. Pode ser SQLite, markdown ou qualquer storage.

5

Router funcional

Mostre mensagens diferentes sendo roteadas para agentes diferentes. Demonstre que o router classifica corretamente pelo menos 3 tipos de input.

6

Walkthrough gravado

Video de 3-5 minutos mostrando o sistema em acao. Explique a arquitetura brevemente e demonstre cada feature. Loom, asciinema ou screen recording.

Estrutura do Projeto Final

meu-saas-agentes/
  src/
    agents/
      research.ts        // Agente de pesquisa + tools
      writer.ts          // Agente de escrita + tools
      review.ts          // Agente de revisao + tools (opcional)
    skills/
      web-search.ts      // Tool: busca web
      file-ops.ts        // Tool: operacoes de arquivo
      data-analysis.ts   // Tool: analise de dados
    memory/
      manager.ts         // MemoryManager unificado
      conversation.ts    // Historico de conversas
      preferences.ts     // Preferencias do usuario
      knowledge.ts       // Knowledge base
    router.ts            // Classificacao e dispatch
    orchestrator.ts      // Coordenacao entre agentes
    main.ts              // Entry point
  mcp-config.json        // Config dos MCP Servers
  schema.sql             // DDL das tabelas
  test-scenarios.ts      // Testes end-to-end
  .env                   // API keys
  README.md              // Como rodar o projeto

Checklist Final de Validacao

πŸ’‘ Dica

Use Vibe Coding para acelerar: descreva cada modulo com um prompt detalhado, gere o codigo, revise e itere. O Claude Code ou Copilot podem gerar 80% do scaffold em minutos. Seu trabalho e validar, conectar as pecas e garantir que funciona end-to-end. Este exercicio e sobre entender a arquitetura, nao sobre digitar mais rapido.

πŸ† Bonus (Para ir Alem)

Dashboard de monitoramento: Pagina web mostrando status dos agentes, ultimas requests, custo por agente e latencia media.

Processamento paralelo: Dois agentes executando ao mesmo tempo (Research busca enquanto Writer prepara template).

Human-in-the-loop: Agente para e pede confirmacao antes de acoes criticas (publicar, deletar, enviar email).

Multi-model routing: Cada agente usa modelo diferente otimizado pro seu role. Mostre comparacao de custo.

Fazer

  • Construir incremental: router primeiro, depois 1 agente, depois o segundo
  • Gravar o walkthrough mostrando o terminal/logs (transparencia)
  • Incluir README explicando como rodar o projeto
  • Celebrar o resultado: voce construiu um sistema multiagente funcional

Evitar

  • Tentar fazer tudo de uma vez (construa peca por peca)
  • Pular o walkthrough (a explicacao consolida o aprendizado)
  • Copiar codigo sem entender o que faz (o objetivo e aprender o padrao)
  • Desistir no primeiro erro: debug e parte do processo

πŸ“‹ Resumo do Modulo 4.7

1.

Revisao completa: agentes, skills, MCP e memoria se conectam num sistema coerente com fluxo definido.

2.

Definicao de agentes: 2-3 agentes com roles claros, models otimizados por custo e tools especificas por funcao.

3.

Router hibrido: comandos + keywords + LLM classifier. Fallback sempre. Logs de toda decisao.

4.

Skills + MCP: tools registradas por agente, MCP Server conectado, teste isolado antes de integrar.

5.

Teste end-to-end: 5 cenarios sistematicos cobrindo routing, tools, memoria, handoff e isolamento.

6.

Demo final: sistema funcional com 2+ agentes, 3+ skills, MCP, memoria e walkthrough gravado.

🎯

Trilha 4 Completa!

Voce dominou agentes de IA, multiagentes, skills, MCP, memoria e orquestracao. Na proxima trilha, vamos criar assistentes pessoais e sistemas multi-bot em producao.

Seguir para Trilha 5: Assistentes e Multibots
Modulo 4.6: Memoria Trilha 5: Assistentes e Multibots