{
    "version": "https://jsonfeed.org/version/1",
    "title": "montanari.dev",
    "home_page_url": "https://montanari.dev/knowledge/articles",
    "description": "Engenharia de Sistemas Multiagentes: arquitetura, padrões e implementação.",
    "items": [
        {
            "id": "https://montanari.dev/knowledge/articles/control-planes-para-sistemas-multiagentes",
            "content_html": "<img class=\"articleCover\" src=\"https://montanari.dev/img/og/control-planes-para-sistemas-multiagentes.png\" alt=\"Diagrama abstrato de um control plane coordenando agentes\"><blockquote>\n<p>Placeholder editorial: estrutura preparada para receber a versão aprofundada do artigo.</p>\n</blockquote>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contexto\">Contexto<a href=\"https://montanari.dev/knowledge/articles/control-planes-para-sistemas-multiagentes#contexto\" class=\"hash-link\" aria-label=\"Link direto para Contexto\" title=\"Link direto para Contexto\" translate=\"no\">​</a></h2>\n<p>Sistemas multiagentes acumulam configuração, políticas, ferramentas e estado operacional. Quando esses elementos vivem dentro de cada runtime, a governança se fragmenta.</p>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"arquitetura\">Arquitetura<a href=\"https://montanari.dev/knowledge/articles/control-planes-para-sistemas-multiagentes#arquitetura\" class=\"hash-link\" aria-label=\"Link direto para Arquitetura\" title=\"Link direto para Arquitetura\" translate=\"no\">​</a></h2>\n<!-- -->\n<section class=\"architectureDecision\"><header><span>ADR</span><h3>Separar control plane e data plane</h3><span class=\"statusBadge statusBadge--accepted\">accepted</span></header><p>O control plane governa configuração e políticas; o data plane executa tarefas com baixa latência.</p></section>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"trade-offs\">Trade-offs<a href=\"https://montanari.dev/knowledge/articles/control-planes-para-sistemas-multiagentes#trade-offs\" class=\"hash-link\" aria-label=\"Link direto para Trade-offs\" title=\"Link direto para Trade-offs\" translate=\"no\">​</a></h2>\n<section class=\"tradeoffs\"><h3>Trade-offs</h3><div class=\"tradeoffsGrid\"><div><strong>Vantagens</strong><ul><li>Governança centralizada</li><li>Rollbacks independentes</li><li>Auditoria consistente</li></ul></div><div><strong>Custos e riscos</strong><ul><li>Nova camada operacional</li><li>Consistência eventual</li><li>Contratos adicionais</li></ul></div></div></section>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"próximos-passos\">Próximos passos<a href=\"https://montanari.dev/knowledge/articles/control-planes-para-sistemas-multiagentes#pr%C3%B3ximos-passos\" class=\"hash-link\" aria-label=\"Link direto para Próximos passos\" title=\"Link direto para Próximos passos\" translate=\"no\">​</a></h2>\n<p>Este placeholder será expandido com protocolos, modelo de dados, código e testes de falha.</p>",
            "url": "https://montanari.dev/knowledge/articles/control-planes-para-sistemas-multiagentes",
            "title": "Control planes para sistemas multiagentes",
            "summary": "Separando governança, execução e estado para operar agentes com previsibilidade.",
            "date_modified": "2026-06-01T00:00:00.000Z",
            "author": {
                "name": "Gui",
                "url": "https://montanari.dev/about"
            },
            "tags": [
                "Architecture",
                "Multi-Agent",
                "Control Plane"
            ]
        },
        {
            "id": "https://montanari.dev/knowledge/articles/dspy-otimizacao",
            "content_html": "<img class=\"articleCover\" src=\"https://montanari.dev/img/og/dspy-e-otimizacao-programatica.png\" alt=\"Capa do conteúdo: DSPy e otimização programática\"><h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"programa-métrica-e-otimizador\">Programa, métrica e otimizador<a href=\"https://montanari.dev/knowledge/articles/dspy-otimizacao#programa-m%C3%A9trica-e-otimizador\" class=\"hash-link\" aria-label=\"Link direto para Programa, métrica e otimizador\" title=\"Link direto para Programa, métrica e otimizador\" translate=\"no\">​</a></h2>\n<p>O ganho não vem apenas da sintaxe, mas da separação entre comportamento desejado e mecanismo de busca.</p>",
            "url": "https://montanari.dev/knowledge/articles/dspy-otimizacao",
            "title": "DSPy e otimização programática",
            "summary": "Separando intenção, exemplos e otimização da escrita manual de prompts.",
            "date_modified": "2026-07-14T00:00:00.000Z",
            "author": {
                "name": "Gui",
                "url": "https://montanari.dev/about"
            },
            "tags": [
                "DSPy",
                "Evaluation",
                "Architecture"
            ]
        },
        {
            "id": "https://montanari.dev/knowledge/articles/avaliacao-continua",
            "content_html": "<img class=\"articleCover\" src=\"https://montanari.dev/img/og/avaliacao-continua-em-producao.png\" alt=\"Capa do conteúdo: Avaliação contínua em produção\"><h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"uma-malha-de-avaliação\">Uma malha de avaliação<a href=\"https://montanari.dev/knowledge/articles/avaliacao-continua#uma-malha-de-avalia%C3%A7%C3%A3o\" class=\"hash-link\" aria-label=\"Link direto para Uma malha de avaliação\" title=\"Link direto para Uma malha de avaliação\" translate=\"no\">​</a></h2>\n<p>Conecte testes determinísticos, juízes, revisão humana e métricas de negócio com proveniência comum.</p>\n<figure class=\"benchmark\"><figcaption><span>BENCHMARK</span><strong>Estratégias de avaliação</strong></figcaption><div class=\"benchmarkScroll\"><table><thead><tr><th>Opção</th><th>Cobertura</th><th>Custo</th></tr></thead><tbody><tr class=\"\"><th>Regras</th><td>Baixa</td><td>Baixo</td></tr><tr class=\"isHighlighted\"><th>LLM judge</th><td>Média</td><td>Médio</td></tr><tr class=\"\"><th>Humana</th><td>Alta</td><td>Alto</td></tr></tbody></table></div></figure>",
            "url": "https://montanari.dev/knowledge/articles/avaliacao-continua",
            "title": "Avaliação contínua em produção",
            "summary": "Da suíte offline aos sinais amostrados no runtime.",
            "date_modified": "2026-07-12T00:00:00.000Z",
            "author": {
                "name": "Gui",
                "url": "https://montanari.dev/about"
            },
            "tags": [
                "Evaluation",
                "Observability",
                "Multi-Agent"
            ]
        },
        {
            "id": "https://montanari.dev/knowledge/articles/hitl-como-protocolo",
            "content_html": "<img class=\"articleCover\" src=\"https://montanari.dev/img/og/human-in-the-loop-como-protocolo.png\" alt=\"Capa do conteúdo: Human in the Loop como protocolo\"><h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"a-pausa-é-parte-do-sistema\">A pausa é parte do sistema<a href=\"https://montanari.dev/knowledge/articles/hitl-como-protocolo#a-pausa-%C3%A9-parte-do-sistema\" class=\"hash-link\" aria-label=\"Link direto para A pausa é parte do sistema\" title=\"Link direto para A pausa é parte do sistema\" translate=\"no\">​</a></h2>\n<p>Modele solicitação, expiração, escalonamento e retomada como transições persistidas.</p>",
            "url": "https://montanari.dev/knowledge/articles/hitl-como-protocolo",
            "title": "Human in the Loop como protocolo",
            "summary": "Intervenção humana modelada como estado, contrato e prazo.",
            "date_modified": "2026-07-10T00:00:00.000Z",
            "author": {
                "name": "Gui",
                "url": "https://montanari.dev/about"
            },
            "tags": [
                "Human in the Loop",
                "Multi-Agent",
                "Architecture"
            ]
        },
        {
            "id": "https://montanari.dev/knowledge/articles/eventos-como-memoria-operacional",
            "content_html": "<img class=\"articleCover\" src=\"https://montanari.dev/img/og/eventos-como-memoria-operacional.png\" alt=\"Capa do conteúdo: Eventos como memória operacional\"><h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"eventos-de-decisão\">Eventos de decisão<a href=\"https://montanari.dev/knowledge/articles/eventos-como-memoria-operacional#eventos-de-decis%C3%A3o\" class=\"hash-link\" aria-label=\"Link direto para Eventos de decisão\" title=\"Link direto para Eventos de decisão\" translate=\"no\">​</a></h2>\n<p>O evento deve registrar intenção, evidência, política aplicada, resultado e correlação, sem depender do texto livre do modelo.</p>",
            "url": "https://montanari.dev/knowledge/articles/eventos-como-memoria-operacional",
            "title": "Eventos como memória operacional",
            "summary": "Por que eventos de domínio são melhores que logs para reconstruir decisões.",
            "date_modified": "2026-07-08T00:00:00.000Z",
            "author": {
                "name": "Gui",
                "url": "https://montanari.dev/about"
            },
            "tags": [
                "Event-driven",
                "Observability",
                "Memory"
            ]
        },
        {
            "id": "https://montanari.dev/knowledge/articles/guardrails-em-camadas",
            "content_html": "<img class=\"articleCover\" src=\"https://montanari.dev/img/og/guardrails-em-camadas.png\" alt=\"Capa do conteúdo: Guardrails em camadas\"><h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"modelo-de-defesa\">Modelo de defesa<a href=\"https://montanari.dev/knowledge/articles/guardrails-em-camadas#modelo-de-defesa\" class=\"hash-link\" aria-label=\"Link direto para Modelo de defesa\" title=\"Link direto para Modelo de defesa\" translate=\"no\">​</a></h2>\n<p>Distribua controles entre entrada, planejamento, execução de ferramentas, saída e efeitos externos.</p>",
            "url": "https://montanari.dev/knowledge/articles/guardrails-em-camadas",
            "title": "Guardrails em camadas",
            "summary": "Prevenção, detecção e contenção de falhas em sistemas agentic.",
            "date_modified": "2026-07-06T00:00:00.000Z",
            "author": {
                "name": "Gui",
                "url": "https://montanari.dev/about"
            },
            "tags": [
                "Guardrails",
                "Multi-Agent",
                "Tool Calling"
            ]
        },
        {
            "id": "https://montanari.dev/knowledge/articles/tool-calling-como-contrato",
            "content_html": "<img class=\"articleCover\" src=\"https://montanari.dev/img/og/tool-calling-e-um-contrato-distribuido.png\" alt=\"Capa do conteúdo: Tool calling é um contrato distribuído\"><h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contratos-antes-de-prompts\">Contratos antes de prompts<a href=\"https://montanari.dev/knowledge/articles/tool-calling-como-contrato#contratos-antes-de-prompts\" class=\"hash-link\" aria-label=\"Link direto para Contratos antes de prompts\" title=\"Link direto para Contratos antes de prompts\" translate=\"no\">​</a></h2>\n<p>Uma tool precisa declarar entradas, saídas, autorização, idempotência, timeout e política de retry.</p>\n<aside class=\"mdxCallout mdxCallout--warning\"><div class=\"mdxCalloutMarker\">!</div><div><strong>Atenção</strong><div>Retries automáticos em operações não idempotentes podem duplicar efeitos no mundo real.</div></div></aside>",
            "url": "https://montanari.dev/knowledge/articles/tool-calling-como-contrato",
            "title": "Tool calling é um contrato distribuído",
            "summary": "Schemas, idempotência e limites na execução de ferramentas por agentes.",
            "date_modified": "2026-06-29T00:00:00.000Z",
            "author": {
                "name": "Gui",
                "url": "https://montanari.dev/about"
            },
            "tags": [
                "Tool Calling",
                "Guardrails",
                "Architecture"
            ]
        },
        {
            "id": "https://montanari.dev/knowledge/articles/langgraph-como-runtime",
            "content_html": "<img class=\"articleCover\" src=\"https://montanari.dev/img/og/langgraph-como-runtime-nao-como-desenho.png\" alt=\"Capa do conteúdo: LangGraph como runtime, não como desenho\"><h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"problema\">Problema<a href=\"https://montanari.dev/knowledge/articles/langgraph-como-runtime#problema\" class=\"hash-link\" aria-label=\"Link direto para Problema\" title=\"Link direto para Problema\" translate=\"no\">​</a></h2>\n<p>O valor do grafo aparece quando falhas, retomadas e intervenção humana fazem parte do fluxo.</p>\n<aside class=\"mdxCallout mdxCallout--info\"><div class=\"mdxCalloutMarker\">→</div><div><strong>Dica</strong><div>Modele cada nó como uma transição observável e idempotente sempre que possível.</div></div></aside>",
            "url": "https://montanari.dev/knowledge/articles/langgraph-como-runtime",
            "title": "LangGraph como runtime, não como desenho",
            "summary": "Estado, checkpoints e recuperação em grafos de agentes.",
            "date_modified": "2026-06-22T00:00:00.000Z",
            "author": {
                "name": "Gui",
                "url": "https://montanari.dev/about"
            },
            "tags": [
                "LangGraph",
                "Multi-Agent",
                "Architecture"
            ]
        },
        {
            "id": "https://montanari.dev/knowledge/articles/observabilidade-sistemas-multiagentes",
            "content_html": "<img class=\"articleCover\" src=\"https://montanari.dev/img/og/observabilidade-alem-de-traces.png\" alt=\"Capa do conteúdo: Observabilidade além de traces\"><blockquote>\n<p>Placeholder editorial para uma análise completa de observabilidade agentic.</p>\n</blockquote>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"os-sinais\">Os sinais<a href=\"https://montanari.dev/knowledge/articles/observabilidade-sistemas-multiagentes#os-sinais\" class=\"hash-link\" aria-label=\"Link direto para Os sinais\" title=\"Link direto para Os sinais\" translate=\"no\">​</a></h2>\n<p>Combine traces distribuídos, eventos de decisão, métricas de resultado e avaliações amostradas.</p>\n<aside class=\"mdxCallout mdxCallout--danger\"><div class=\"mdxCalloutMarker\">×</div><div><strong>Anti-pattern</strong><div>Usar o texto integral do prompt como único evento de auditoria mistura dados sensíveis, ruído e ausência de estrutura.</div></div></aside>",
            "url": "https://montanari.dev/knowledge/articles/observabilidade-sistemas-multiagentes",
            "title": "Observabilidade além de traces",
            "summary": "Sinais, avaliações e contratos para explicar decisões de agentes em produção.",
            "date_modified": "2026-06-15T00:00:00.000Z",
            "author": {
                "name": "Gui",
                "url": "https://montanari.dev/about"
            },
            "tags": [
                "Observability",
                "Evaluation",
                "Multi-Agent"
            ]
        },
        {
            "id": "https://montanari.dev/knowledge/articles/memoria-nao-e-contexto",
            "content_html": "<img class=\"articleCover\" src=\"https://montanari.dev/img/og/memoria-nao-e-contexto.png\" alt=\"Capa do conteúdo: Memória não é contexto\"><blockquote>\n<p>Placeholder editorial para o modelo completo de memória.</p>\n</blockquote>\n<h2 class=\"anchor anchorTargetHideOnScrollNavbar_vjPI\" id=\"contexto-e-memória\">Contexto e memória<a href=\"https://montanari.dev/knowledge/articles/memoria-nao-e-contexto#contexto-e-mem%C3%B3ria\" class=\"hash-link\" aria-label=\"Link direto para Contexto e memória\" title=\"Link direto para Contexto e memória\" translate=\"no\">​</a></h2>\n<p>Contexto é uma projeção temporária. Memória possui retenção, proveniência, escopo e políticas de esquecimento.</p>\n<!-- -->\n<aside class=\"mdxCallout mdxCallout--success\"><div class=\"mdxCalloutMarker\">✓</div><div><strong>Best practice</strong><div>Defina o contrato de retenção antes de escolher o mecanismo de armazenamento.</div></div></aside>",
            "url": "https://montanari.dev/knowledge/articles/memoria-nao-e-contexto",
            "title": "Memória não é contexto",
            "summary": "Um modelo prático para memória episódica, semântica e operacional em agentes.",
            "date_modified": "2026-06-08T00:00:00.000Z",
            "author": {
                "name": "Gui",
                "url": "https://montanari.dev/about"
            },
            "tags": [
                "Memory",
                "Multi-Agent",
                "Architecture"
            ]
        }
    ]
}