{"id":685,"date":"2026-09-04T17:03:14","date_gmt":"2026-09-04T20:03:14","guid":{"rendered":"https:\/\/yellowkode.com\/blog\/covenant-framework-governanca-multi-agente-ia\/"},"modified":"2026-09-04T17:03:14","modified_gmt":"2026-09-04T20:03:14","slug":"covenant-framework-governanca-multi-agente-ia","status":"publish","type":"post","link":"https:\/\/yellowkode.com\/blog\/covenant-framework-governanca-multi-agente-ia\/","title":{"rendered":"Covenant Framework: como funciona a camada de governan\u00e7a para sistemas multi-agente de IA"},"content":{"rendered":"<h2>O que foi lan\u00e7ado<\/h2>\n<p>Um desenvolvedor identificado no GitHub como <code>asalsali<\/code> publicou o <strong>Covenant Framework<\/strong>, um reposit\u00f3rio de c\u00f3digo aberto (edi\u00e7\u00e3o Community) que promete resolver um problema espec\u00edfico de sistemas multi-agente de IA: coordena\u00e7\u00e3o. O projeto foi anunciado no Hacker News sob o t\u00edtulo &#8220;Covenant, a governance framework for multi-agent AI systems&#8221; e est\u00e1 hospedado em <code>github.com\/asalsali\/covenant-framework-community<\/code>. At\u00e9 o momento da publica\u00e7\u00e3o, o reposit\u00f3rio tinha 4 estrelas, o que indica um projeto ainda inicial e pouco testado pela comunidade.<\/p>\n<p>O framework roda dentro do Claude Code (ambiente de linha de comando da Anthropic para agentes de c\u00f3digo) ou do OpenAI Codex CLI, sem depend\u00eancias externas. A proposta central \u00e9 dar estrutura, ciclo de vida e controle de qualidade para quando m\u00faltiplos agentes de IA trabalham juntos em um mesmo projeto.<\/p>\n<h2>Como funciona o mecanismo de governan\u00e7a<\/h2>\n<p>Antes de entrar nos detalhes t\u00e9cnicos, vale entender o problema que o Covenant tenta resolver. Quando voc\u00ea orquestra v\u00e1rios agentes de IA (um pesquisa c\u00f3digo, outro escreve, outro revisa), surgem perguntas que n\u00e3o t\u00eam resposta \u00f3bvia: quem segue quais regras, como os agentes se comunicam entre si, quando param para revisar o pr\u00f3prio trabalho e como o sistema se recupera quando um agente falha ou trava. O Covenant tenta responder essas perguntas com quatro pe\u00e7as: um agente central de interface, um documento de regras imut\u00e1vel, um ciclo de vida com port\u00f5es de verifica\u00e7\u00e3o e um sistema de mem\u00f3ria entre execu\u00e7\u00f5es.<\/p>\n<h3>O Interpreter como \u00fanico ponto de contato<\/h3>\n<p>Voc\u00ea nunca fala diretamente com os agentes que fazem o trabalho pesado. Existe um agente chamado <strong>Interpreter<\/strong> que \u00e9 o \u00fanico que conversa com o usu\u00e1rio. Ele l\u00ea o seu pedido, verifica o estado atual do sistema (o que j\u00e1 foi feito, que agentes existem, que mem\u00f3rias est\u00e3o dispon\u00edveis), prop\u00f5e um plano dizendo quais agentes espec\u00edficos vai acionar, e espera sua aprova\u00e7\u00e3o antes de agir. S\u00f3 depois que voc\u00ea responde algo como &#8220;go&#8221;, os agentes s\u00e3o de fato criados (o termo usado \u00e9 <em>spawn<\/em>), executam suas tarefas, escrevem um relat\u00f3rio de sa\u00edda e s\u00e3o desligados.<\/p>\n<p>Esse padr\u00e3o de &#8220;um agente de interface, v\u00e1rios agentes de execu\u00e7\u00e3o&#8221; n\u00e3o \u00e9 exclusivo do Covenant, mas o projeto formaliza isso como regra arquitetural fixa, n\u00e3o como escolha de implementa\u00e7\u00e3o.<\/p>\n<h3>A Constitution: regras que todo agente herda<\/h3>\n<p>O framework define uma <strong>Constitution<\/strong> com 36 se\u00e7\u00f5es de regras que, segundo a documenta\u00e7\u00e3o, s\u00e3o imut\u00e1veis e herdadas por todo agente criado no sistema. Isso funciona como uma camada de configura\u00e7\u00e3o global que todo agente l\u00ea antes de come\u00e7ar a trabalhar, independente de qual tarefa espec\u00edfica ele vai executar. N\u00e3o h\u00e1, no material dispon\u00edvel, o conte\u00fado detalhado dessas 36 se\u00e7\u00f5es, ent\u00e3o n\u00e3o d\u00e1 para saber com precis\u00e3o o que exatamente elas regulam al\u00e9m do que aparece descrito no ciclo de vida.<\/p>\n<h3>Doze tipos de agentes com pap\u00e9is fixos<\/h3>\n<p>O Covenant define 12 tipos de agentes com fun\u00e7\u00f5es pr\u00e9-definidas: Interpreter, Analyst, Writer, Synthesist, Guardian, Shepherd, Scribe, Stress Tester, Futility Review, Goal Challenge, James e Executor. A ideia \u00e9 que cada tipo tenha um escopo de atua\u00e7\u00e3o claro (por exemplo, um Analyst pesquisa e investiga, um Writer implementa, um Stress Tester tenta quebrar o que foi feito). Isso \u00e9 diferente de frameworks onde voc\u00ea define agentes gen\u00e9ricos e atribui pap\u00e9is via prompt: aqui os pap\u00e9is j\u00e1 v\u00eam modelados na estrutura do sistema.<\/p>\n<h3>O ciclo de vida do agente e os tr\u00eas port\u00f5es<\/h3>\n<p>Todo agente passa por quatro fases: <code>SPAWN<\/code> (cria\u00e7\u00e3o), <code>GENESIS PHASE<\/code>, <code>EXECUTE<\/code> e <code>SHUTDOWN<\/code>. A documenta\u00e7\u00e3o descreve tr\u00eas checkpoints obrigat\u00f3rios (chamados de <em>gates<\/em>) ao longo desse ciclo:<\/p>\n<ul>\n<li><strong>Gate 1, na cria\u00e7\u00e3o:<\/strong> o agente \u00e9 obrigado a ler seu mandato (escopo da tarefa), a Constitution e aprendizados anteriores registrados na mem\u00f3ria do sistema antes de fazer qualquer coisa.<\/li>\n<li><strong>Gate 2, durante a execu\u00e7\u00e3o:<\/strong> o agente precisa trabalhar dentro do escopo definido pelo mandato, sem invadir a \u00e1rea de outro agente que esteja rodando em paralelo.<\/li>\n<li><strong>Gate 3, no desligamento:<\/strong> o agente \u00e9 obrigado a escrever um relat\u00f3rio de sa\u00edda (<em>exit report<\/em>), arquivar esse relat\u00f3rio e notificar a mem\u00f3ria do agente pai antes de encerrar.<\/li>\n<\/ul>\n<p>Vale registrar que essa tabela aparece truncada no README original do projeto, ent\u00e3o essa \u00e9 uma reconstru\u00e7\u00e3o razo\u00e1vel da l\u00f3gica descrita, n\u00e3o uma transcri\u00e7\u00e3o literal.<\/p>\n<h3>Sistema de mem\u00f3ria entre execu\u00e7\u00f5es<\/h3>\n<p>O componente que d\u00e1 continuidade ao sistema \u00e9 o <strong>memory system<\/strong>. Ele \u00e9 composto por exit reports (o relat\u00f3rio que cada agente escreve ao terminar), memos estruturados, uma camada de mem\u00f3ria sem\u00e2ntica e ciclos de consolida\u00e7\u00e3o que, presumivelmente, resumem e comprimem hist\u00f3rico para n\u00e3o acumular contexto infinito. \u00c9 esse mecanismo que permite ao Interpreter, na pr\u00f3xima conversa, saber o que j\u00e1 foi tentado e o que j\u00e1 foi aprendido, sem que o usu\u00e1rio precise repetir contexto.<\/p>\n<h3>Runtime hooks<\/h3>\n<p>A edi\u00e7\u00e3o Community inclui 4 <em>runtime hooks<\/em>: agent gate (controle de quem pode ser criado e quando), token logging (registro de consumo de tokens), shutdown orchestration (coordena\u00e7\u00e3o do encerramento de agentes) e session checks (verifica\u00e7\u00e3o de estado da sess\u00e3o). S\u00e3o pontos de intercepta\u00e7\u00e3o no fluxo de execu\u00e7\u00e3o, o tipo de mecanismo que normalmente voc\u00ea implementaria manualmente num orquestrador multi-agente caseiro.<\/p>\n<h2>O que isso significa na pr\u00e1tica<\/h2>\n<p>A forma mais r\u00e1pida de experimentar, segundo a documenta\u00e7\u00e3o do projeto, \u00e9 via CLI (interface de linha de comando) descrevendo o que voc\u00ea quer:<\/p>\n<pre><code>pip install covenant-cli\ncovenant create \"A research app that searches papers and writes reviews\"<\/code><\/pre>\n<p>Isso gera um projeto completo com c\u00f3digo de agente real, entradas e sa\u00eddas tipadas, relat\u00f3rios de sa\u00edda e heran\u00e7a de mem\u00f3ria j\u00e1 configurados, segundo a descri\u00e7\u00e3o do README.<\/p>\n<p>Para instalar o framework diretamente dentro de um projeto existente com Claude Code:<\/p>\n<pre><code># Novo projeto\ngit clone https:\/\/github.com\/asalsali\/covenant-framework-community.git my-project\ncd my-project && claude\n\n# Projeto existente (Claude Code)\ncurl -sL https:\/\/raw.githubusercontent.com\/asalsali\/covenant-framework-community\/main\/install.sh | bash\n\n# Via npm\nnpm i covenant-framework<\/code><\/pre>\n<p>O fluxo de intera\u00e7\u00e3o descrito no material \u00e9 assim: voc\u00ea escreve um pedido em linguagem natural, o Interpreter responde com um plano dizendo quais agentes vai acionar, e voc\u00ea confirma com um &#8220;go&#8221; antes de qualquer agente ser de fato criado. N\u00e3o h\u00e1 arquivo de configura\u00e7\u00e3o para escrever nem dashboard para montar, pelo menos na proposta do projeto.<\/p>\n<p>O reposit\u00f3rio tamb\u00e9m tem um exemplo m\u00ednimo em <code>examples\/quickstart\/<\/code>, descrito como demonstra\u00e7\u00e3o de governan\u00e7a &#8220;em menos de 30 segundos&#8221;, \u00fatil para quem quer ver o mecanismo funcionando sem montar um projeto real primeiro.<\/p>\n<h2>Onde quebra<\/h2>\n<p>Alguns pontos que limitam onde e como esse framework se aplica hoje:<\/p>\n<ul>\n<li><strong>Depend\u00eancia de ferramentas espec\u00edficas:<\/strong> o Covenant roda dentro do Claude Code ou do OpenAI Codex CLI. Se sua stack de agentes n\u00e3o usa nenhuma dessas duas ferramentas, o framework, na forma descrita, n\u00e3o se aplica diretamente (existe uma integra\u00e7\u00e3o com CrewAI documentada separadamente, mas n\u00e3o detalhada no material dispon\u00edvel).<\/li>\n<li><strong>Licen\u00e7a n\u00e3o \u00e9 uma licen\u00e7a open source padr\u00e3o:<\/strong> o projeto usa a &#8220;Covenant Public License v1.0&#8221;, uma licen\u00e7a customizada, n\u00e3o MIT, Apache ou GPL. Isso importa para quem for usar em produto comercial: vale ler os termos completos antes de assumir que \u00e9 livre para qualquer uso.<\/li>\n<li><strong>Edi\u00e7\u00e3o Community \u00e9 deliberadamente limitada:<\/strong> a tabela de compara\u00e7\u00e3o no pr\u00f3prio README mostra que a edi\u00e7\u00e3o Network (paga, presumivelmente) tem 22 comandos avan\u00e7ados e 7 hooks avan\u00e7ados a mais que a Community. O material n\u00e3o detalha o que s\u00e3o esses comandos e hooks adicionais nem o pre\u00e7o da edi\u00e7\u00e3o Network.<\/li>\n<li><strong>Benchmark sem metodologia audit\u00e1vel no material dispon\u00edvel:<\/strong> o README cita um resultado de 67,4% de sucesso sem retentativa no Terminal-Bench 2.0 (89 tarefas), contra 42% de uma baseline &#8220;ad-hoc&#8221;. N\u00e3o h\u00e1, na p\u00e1gina consultada, link para o benchmark completo, script de reprodu\u00e7\u00e3o ou detalhes de como a baseline foi definida. Isso n\u00e3o invalida o n\u00famero, mas tamb\u00e9m n\u00e3o permite verific\u00e1-lo de forma independente a partir do material fornecido.<\/li>\n<li><strong>Projeto muito recente e pouco adotado:<\/strong> com 4 estrelas no GitHub no momento da publica\u00e7\u00e3o, ainda n\u00e3o h\u00e1 evid\u00eancia de uso em produ\u00e7\u00e3o fora dos exemplos citados pelo pr\u00f3prio autor (como o &#8220;covenant-hedge-fund&#8221;, descrito como projeto de exemplo).<\/li>\n<\/ul>\n<h2>O que n\u00e3o d\u00e1 para afirmar ainda<\/h2>\n<p>N\u00e3o testamos o framework rodando um caso real com m\u00faltiplos agentes em paralelo, ent\u00e3o n\u00e3o d\u00e1 para confirmar se os &#8220;gates&#8221; de fato previnem conflito de escopo na pr\u00e1tica ou se isso depende de o modelo por tr\u00e1s do agente (Claude ou GPT via Codex) seguir instru\u00e7\u00f5es de forma consistente. Tamb\u00e9m n\u00e3o \u00e9 poss\u00edvel afirmar, a partir do material dispon\u00edvel, como o sistema se comporta com um n\u00famero grande de agentes simult\u00e2neos, nem qual \u00e9 a lat\u00eancia ou o custo em tokens adicional que a camada de governan\u00e7a introduz sobre o custo normal de rodar os agentes. O material menciona &#8220;token logging&#8221; como um dos runtime hooks, o que sugere que o pr\u00f3prio projeto reconhece esse como um custo a ser monitorado, mas n\u00e3o fornece n\u00fameros. Por fim, n\u00e3o h\u00e1 no material informa\u00e7\u00e3o suficiente sobre quem mant\u00e9m o projeto al\u00e9m do autor original, nem sobre plano de suporte a longo prazo.<\/p>\n<h2>Como testar isso voc\u00ea mesmo<\/h2>\n<p>O caminho mais direto para experimentar sem comprometer um projeto real \u00e9 instalar o <code>covenant-cli<\/code> em um diret\u00f3rio novo e vazio:<\/p>\n<pre><code>pip install covenant-cli\ncovenant create \"Um app simples que le um arquivo CSV e gera um resumo\"<\/code><\/pre>\n<p>Depois, inspecione a estrutura de pastas gerada (procure pelos exit reports e pelos arquivos de mandato de cada agente) antes de rodar qualquer tarefa mais s\u00e9ria. Se voc\u00ea j\u00e1 usa Claude Code no dia a dia, vale tamb\u00e9m clonar o exemplo de <code>examples\/quickstart\/<\/code> do reposit\u00f3rio e rodar dentro dele, comparando o comportamento com e sem o framework ativo, para ter uma base pr\u00f3pria de compara\u00e7\u00e3o em vez de depender s\u00f3 do n\u00famero de benchmark divulgado.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Entenda o mecanismo do Covenant Framework: ciclo de vida de agentes, Constitution, memory system e como testar essa camada de governan\u00e7a multi-agente.<\/p>\n","protected":false},"author":2,"featured_media":684,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-685","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/yellowkode.com\/blog\/wp-json\/wp\/v2\/posts\/685","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yellowkode.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/yellowkode.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/yellowkode.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/yellowkode.com\/blog\/wp-json\/wp\/v2\/comments?post=685"}],"version-history":[{"count":0,"href":"https:\/\/yellowkode.com\/blog\/wp-json\/wp\/v2\/posts\/685\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/yellowkode.com\/blog\/wp-json\/wp\/v2\/media\/684"}],"wp:attachment":[{"href":"https:\/\/yellowkode.com\/blog\/wp-json\/wp\/v2\/media?parent=685"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/yellowkode.com\/blog\/wp-json\/wp\/v2\/categories?post=685"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/yellowkode.com\/blog\/wp-json\/wp\/v2\/tags?post=685"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}