Curso / Lição 3  ·  EN
Lição 03 · A camada de decisão

A Matriz de Fusão

Agora você tem dois sistemas: o motor do Alembic (Lição 1) e o Hermes Agent reconstruído por engenharia reversa (Lição 2). A matriz é a ponte — uma decisão item a item sobre o que fazer com cada capacidade do Hermes. Quatro verbos, uma regra cada.

O método: duas perguntas, uma disposição

A matriz não é uma lista de desejos. Cada capacidade do Hermes passou por duas perguntas, cada uma respondida contra um mapa verificado (não de memória):

A disposição decorre do par. O que não pôde ser confirmado foi marcado como [uncertain] em vez de adivinhado.

Capacidade do Hermes P1: o Alembic já tem? P2: a do Hermes é melhor / inédita? CLONE inédito; portar de perto ADAPT equiv. parcial; reimplementar MERGE superfície afim; combinar nela IGNORE já tão bom, ou fora de escopo
VerboQuando
CLONEInédito no Alembic; portar o design do Hermes de perto, adaptando tipos para @alembic/*.
ADAPTO Alembic tem equivalente parcial / diferente; reimplementar a ideia do Hermes no estilo do Alembic.
MERGEO Alembic já tem superfície afim; dobrar a capacidade do Hermes nela — uma superfície mais rica.
IGNOREO Alembic já faz tão bem ou melhor, ou está fora do escopo da missão. Sempre justificado.

CLONE — os cinco inéditos de alto valor

Estes não têm equivalente no Alembic (o mapa mostra zero ou ocorrências incidentais), então são portados de perto.

CapacidadeFonte no HermesPor que CLONE
Memória em arquivo (snapshot congelado)memory_tool.py §3.2 (1089 LOC)MEMORY.md/USER.md limitados, injetados como snapshot congelado no início da sessão. Fundamental para o ciclo de aprendizado.
Ciclo de aprendizado por auto-revisãobackground_review.py §1.10O mecanismo "auto-aperfeiçoável" principal — a maior lacuna do Alembic. (Entregue como ADAPT; veja o destaque abaixo.)
Curador (ciclo de vida de skills)curator.py + skill_usage.py §3.3active→stale→archived, nunca deleta. Dá controle de qualidade ao ciclo.
Busca / extração webweb_tools.py §3.1 (1377 LOC)HTTP+JSON puro sobre vários backends. Reforça a camada SOURCE do funil.
Clarify (humano no loop)clarify_*.py §3.7Perguntas estruturadas + gateway bloqueante. Vira a superfície de pergunta do portão humano T4.

MERGE — dobrar em uma superfície afim

CapacidadeAlembic hojePor que MERGE
Cliente MCPO Alembic é um servidor MCP, somente-leitura — sem cliente (MCP=8 ocorrências)Adicionar a capacidade de consumir servidores MCP externos. Alto valor; o SDK TS torna isso mais limpo que o original em Python. Estacionado como follow-up, ainda não conectado.
Automação de browser completaencapsula agent-browser somente-leitura (browser=13 ocorrências)Manter somente-leitura como padrão; combinar a superfície de interação atrás de opt-in explícito.
Autoria de skills + telemetriacarrega skills (skill=22 ocorrências) mas sem autoria pelo agenteCombinar create/edit/patch no loop-engineering para que skills criadas pelo agente alimentem o Curador.
Verifier / mixture-of-agentsverifier-panel do council (verifier=19 ocorrências)O quórum de N-lentes + veto do Alembic é o equivalente mais rico do MoA — manter o do Alembic.

ADAPT & IGNORE — o resto, justificado

ADAPT (equivalente parcial → reimplementar): session-search FTS5, skills-hub, conceitos de kanban no swarm, blueprints de cron, transcrição na nuvem, análise de visão.

IGNORE — e a justificativa é a parte interessante:

CapacidadePor que IGNORE
Delegação a subagentes (delegate_tool.py, 3188 LOC)O swarm do Alembic (swarm=63 ocorrências: orquestrador de 3 níveis, lead-worker, com limite de profundidade, fila com dependências) já faz isso nativamente e melhor. Mantém um insight portátil: "a conclusão re-entra como um novo turno, nunca no meio do contexto".
Backends de terminal (6 contextos)A factory do Alembic já entrega docker/podman/no-sandbox + isolamento git-worktree. Redundante.
Computer use, TTS neural local, faster-whisperStacks ML só-Python ou fora da missão distill→venture. Difícil portar, sem valor de missão.
23 adaptadores de plataformas de mensagensO Alembic é um motor interno (ADR-0001), não um gateway de assistente pessoal. Os clientes L4 são API/MCP/CLI/cockpit — não Telegram/WhatsApp.

A pedra angular: por que o ciclo de aprendizado fica acima de tudo

A linha mais importante da matriz

"O Alembic tem um funil de destilação e um portão de validador, mas nenhum ciclo fechado de auto-aperfeiçoamento. O ciclo de aprendizado do Hermes é a peça que falta, e ele compõe com o que o Alembic já tem em vez de substituir."

O funil transforma fontes em Learnings — mas nada realimenta esses learnings de volta ao motor. O Hermes fecha esse ciclo. Duas razões para encaixar tão bem:

Alembic hoje: SOURCE distill (T0–T3) Learnings ⊘ sem realimentação Hermes adiciona: após a run → fork revisor memória + skills durável Fundido: distill → Learnings snapshot memória/skills (com portão)curador mantém limpo próxima run mais esperta
CLONE no papel, ADAPT na entrega. A matriz listou o ciclo de aprendizado como CLONE, mas ele foi entregue como ADAPT (ADR-0018): não há AIAgent em Python para forkar como thread daemon, e auto-escrever burlaria o Validator Gate. Então o revisor propõe e o Validator do Alembic dispõe. Essa nuance é a Lição 4.

1. delegate_tool.py (delegação a subagentes, 3188 LOC) recebe a disposição IGNORE. Por quê?
Correto: c. A matriz cita swarm=63 ocorrências — orquestrador de 3 níveis com lead-worker, limites de profundidade e fila com dependências. IGNORE aqui significa "já tão bom ou melhor", não "fora de escopo". Um insight portátil ainda é mantido: a conclusão re-entra como um novo turno, nunca no meio do contexto.
2. Por que o cliente MCP é um MERGE e não um CLONE?
Correto: b. O Alembic se expõe via MCP (servidor, somente-leitura) mas não consegue consumir servidores MCP externos. O cliente se dobra nessa superfície existente — um MERGE. É de alto valor mas está estacionado como follow-up ainda não conectado.
3. O que torna o ciclo de aprendizado a pedra angular de toda a matriz?
Correto: d. O Alembic destilava em Learnings mas não tinha caminho de volta ao motor. O ciclo adiciona exatamente isso, encaixa na cintura estreita (memória congelada no prompt) e no pipeline de portões (escritas passíveis de portão) — composição, não substituição.

Confusões comuns

"A matriz é uma lista de desejos de features." Não — é tanto uma ferramenta de poda quanto uma lista de construção. Metade do valor está na coluna IGNORE: cada item é uma recusa justificada que mantém o Alembic um motor interno em vez de um gateway de assistente pessoal.
"CLONE significa copiar-colar o Python." Não — CLONE significa portar o design de perto, adaptando aos tipos e invariantes do Alembic (Result, FsPort, Zod). E uma disposição pode mudar entre o plano e a entrega: o ciclo de aprendizado foi de CLONE → ADAPT por razões fundamentadas.