<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Governance | The .NET Blog</title><link>https://thedotnetblog.com/ca/tags/governance/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>ca</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Fri, 29 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/ca/tags/governance/index.xml" rel="self" type="application/rss+xml"/><item><title>Construir Agents És la Part Fàcil — Executar-los de Forma Segura És la Part Difícil</title><link>https://thedotnetblog.com/ca/news/emiliano-montesdeoca/maf-agent-governance-toolkit-runtime-policy/</link><pubDate>Fri, 29 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ca/news/emiliano-montesdeoca/maf-agent-governance-toolkit-runtime-policy/</guid><description>Microsoft Agent Framework i Agent Governance Toolkit s'uneixen per aplicar polítiques d'execució, governar les crides a eines i proporcionar registres d'auditoria encadenats amb Merkle — sense tocar els prompts de l'agent.</description><content:encoded>&lt;p&gt;Hi ha un patró en el desenvolupament d&amp;rsquo;agents d&amp;rsquo;IA que he començat a anomenar &amp;ldquo;penediment de demo&amp;rdquo;. L&amp;rsquo;agent funciona molt bé en les demos. Llavors algú pregunta: què passa si crida l&amp;rsquo;eina equivocada? I si accedeix a dades que no hauria? Qui ho ha auditat?&lt;/p&gt;
&lt;p&gt;Microsoft Agent Framework us dóna suport en la construcció i l&amp;rsquo;orquestració. Agent Governance Toolkit (AGT) cobreix la part posterior — governança, aplicació de polítiques i auditabilitat en temps d&amp;rsquo;execució.&lt;/p&gt;
&lt;h2 id="què-fa-realment-cada-projecte"&gt;Què Fa Realment Cada Projecte&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Microsoft Agent Framework (MAF)&lt;/strong&gt; us proporciona el model de programació: fluxos de treball multi-agent, interoperabilitat del protocol A2A, hooks de middleware, memòria i allotjament gestionat a través de Foundry Agent Service. Gestiona la seguretat de contingut a nivell d&amp;rsquo;entrada/sortida del model.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Agent Governance Toolkit (AGT)&lt;/strong&gt; es connecta al mateix pipeline de middleware per governar les &lt;em&gt;accions&lt;/em&gt;. Cada crida a eina, accés a recursos i missatge entre agents s&amp;rsquo;avalua contra la política abans de l&amp;rsquo;execució. Sobrecàrrega de submil·lisegon. Sense sidecars, sense proxies, sense prompts modificats.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Acció Agent --&amp;gt; Verificació Política --&amp;gt; Permetre / Denegar --&amp;gt; Registre Auditoria (&amp;lt; 0.1 ms)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Capes diferents, cobertura completa, un pipeline.&lt;/p&gt;
&lt;h2 id="connectar-se-és-només-afegir-middleware"&gt;Connectar-se És Només Afegir Middleware&lt;/h2&gt;
&lt;p&gt;A Python, AGT s&amp;rsquo;afegeix al mateix paràmetre &lt;code&gt;middleware&lt;/code&gt; que faríeu servir per al registre o els filtres de contingut:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;OpenAIChatClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;gpt-5.3&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Contoso Loan Officer&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;instructions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;You are a governed loan assistant.&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;check_credit_score&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;get_loan_rates&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;approve_small_loan&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;middleware&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;AuditTrailMiddleware&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;audit_log&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;audit_log&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;agent_did&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;loan-agent&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;GovernancePolicyMiddleware&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;evaluator&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;evaluator&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;audit_log&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;audit_log&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;CapabilityGuardMiddleware&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;allowed_tools&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;check_credit_score&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;get_loan_rates&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="n"&gt;RogueDetectionMiddleware&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;detector&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;detector&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;agent_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;loan-agent&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A .NET, el mateix patró via &lt;code&gt;.Use()&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;BuildAIAgent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;gpt-5.3&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;GovernancePolicyMiddleware&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;evaluator&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;CapabilityGuardMiddleware&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;allowedTools&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;AuditTrailMiddleware&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;auditLog&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Mateix agent, mateixa orquestració, mateixes eines. AGT afegeix capacitats de governança sense tocar la lògica de l&amp;rsquo;agent.&lt;/p&gt;
&lt;h2 id="què-obteniu"&gt;Què Obteniu&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GovernancePolicyMiddleware&lt;/strong&gt; — avalua cada acció contra regles de política declaratives&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CapabilityGuardMiddleware&lt;/strong&gt; — llista d&amp;rsquo;autoritzats quines eines un agent té permís de cridar (l&amp;rsquo;eina &lt;code&gt;approve_small_loan&lt;/code&gt; no és a la llista permesa per sobre — deliberadament)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RogueDetectionMiddleware&lt;/strong&gt; — detecta patrons de comportament anòmal en temps d&amp;rsquo;execució&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AuditTrailMiddleware&lt;/strong&gt; — registre d&amp;rsquo;auditoria encadenat amb Merkle perquè cada acció sigui criptogràficament resistent a manipulacions&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L&amp;rsquo;últim importa per al compliment normatiu. Una cadena Merkle significa que si algú modifica el registre, la cadena es trenca. L&amp;rsquo;auditoria és l&amp;rsquo;evidència.&lt;/p&gt;
&lt;h2 id="cinc-escenaris-de-la-indústria"&gt;Cinc Escenaris de la Indústria&lt;/h2&gt;
&lt;p&gt;El repositori AGT inclou cinc escenaris complets de cap a cap: serveis financers (oficial de préstecs), sanitat (dades de pacients), legal (revisió de contractes), govern (serveis al ciutadà) i fabricació (control de qualitat). Cada un combina agents MAF reals amb middleware de governança AGT real.&lt;/p&gt;
&lt;p&gt;No són demos de joguina. Són el tipus d&amp;rsquo;escenaris on realment necessitaríeu governança en producció.&lt;/p&gt;
&lt;h2 id="conclusió"&gt;Conclusió&lt;/h2&gt;
&lt;p&gt;Si esteu construint agents que toquen dades reals, prenen decisions amb conseqüències, o s&amp;rsquo;executen sense supervisió en producció — la governança no és opcional. La combinació MAF + AGT us dóna la pila completa: construïu-lo amb Agent Framework, governeu-lo amb AGT.&lt;/p&gt;
&lt;p&gt;Tots dos projectes són de codi obert. L&amp;rsquo;article original té enllaços als exemples de codi complets.&lt;/p&gt;
&lt;p&gt;Publicació original: &lt;a href="https://devblogs.microsoft.com/agent-framework/governance-at-the-speed-of-agents-microsoft-agent-framework-and-agent-governance-toolkit-better-together/"&gt;Governance at the Speed of Agents: Microsoft Agent Framework and Agent Governance Toolkit, Better Together&lt;/a&gt;&lt;/p&gt;</content:encoded></item></channel></rss>