oh-my-agent: runs que falham viram testes de regressão de skills
Uma run de agent que falhava terminava com um log e um dar de ombros. Nesta semana o oh-my-agent fechou esse ciclo: uma falha pode ser capturada como incidente, promovida a fixture de uma skill e entregue a um otimizador que edita a skill sob um orçamento de dispatches. Foram 131 commits, e a CLI saiu da versão 14.7.11 para a 14.13.1.
O que mudou
- Captura e promoção de incidentes:
oma harness incident scanlista runs com falha, bloqueadas ou parciais que nenhum incidente referencia.oma harness incident promotederiva uma fixture de regressão para a skill que o agent usou e só a admite se ela reprovar o output de falha registrado.oma harness feedback --scan-runsencadeia captura, promoção e otimização. Runs finalizadas agora guardam os últimos 64 KiB do log do runner, para que a fixture seja validada contra o que o agent realmente disse. - Evolução de skills com orçamento:
oma skill optimizesó aceita uma edição quando nem o split de validação nem o de treino regridem e pelo menos um melhora.constitution.budget.max_dispatches_per_runagora é aplicado: a chamada que estouraria o limite é recusada e a promoção fica bloqueada. Toda edição aplicada registra sua linhagem, eoma skill promotionseoma skill rollbackleem esse registro. - Meta-otimização:
oma skill meta-optimizetrata o próprio prompt do otimizador como candidato. A promoção exige um intervalo de 95% por bootstrap pareado (com seed) acima de zero e pelo menos três pares. O primeiro procedimento adotado superou o atual em 0.27 na média, com intervalo [0.04, 0.54], e acrescentou três regras de grounding para edições propostas de skills. - Eval de roteamento:
oma skill eval --routingmostra ao modelo a descrição de todas as skills instaladas e registra se ele escolhe a skill alvo, uma vizinha ou nenhuma. Isso separa "o corpo da skill ajuda" de "a skill é selecionada". - Guard de code intelligence: um hook PreToolUse nega Grep, Glob e buscas recursivas no shell (
rg,grep -r,find -name,git grep) enquanto houver um provider configurado. A mensagem de negação indica qual ferramenta do Serena usar.OMA_CI_ALLOW_NATIVE=1é a saída de emergência, eproviders.code_intelligence_guard: offdesativa o guard. - Avisos no início da sessão: o snapshot de estado agora anuncia promoções de skills e procedimentos uma única vez, em uma linha por promoção, com a edição e os ganhos.
oma doctorganhou uma nota de Evolution. - Relatórios para o Orca: agents filhos disparados pelo oma reportam seu ciclo de vida ao Orca. O Qwen ganhou definições nativas de agent.
O que foi corrigido
- O job semanal de cross-post falhava em toda execução depois que
model_presetpassou paraauto. Oclaude --output-format jsonencapsula a resposta em um envelope, erunAgentdevolvia esse envelope cru. Agora ele extrai o caminhoresponse_jqconfigurado e cai para o stdout bruto nos vendors que não têm um. - Jobs do SO registrados antes da renomeação do comando continuavam chamando
oma schedule:run <id>e falhavam a cada disparo, enquantoschedule listos mostrava como sincronizados. A grafia antiga agora é aceita quando o SO a invoca, a detecção de drift ganhou o estadostale, eoma schedule synceoma updatereescrevem os registros desatualizados. cd $HOME && oma link claudetratava o HOME como um projeto e reescrevia os comandos de hook globais do Claude.linkeupdateagora recusam o modo projeto a partir do HOME (#788).- O judge de skills lia PASS/FAIL do envelope cru do Claude, onde
"failed":0aparecia antes do veredito, então todo veredito virava FAIL. Agora as saídas são extraídas do envelope antes da pontuação, e as gravações antigas são descartadas. --repeats 3virava NaN porque umparseIntpuro recebia o valor anterior como radix. Valores de opções variádicas (--skill a b) não disparam mais o guard de posicional solto.- Projetos sincronizados antes da v11 ainda rodavam o próprio Serena a cada sessão. A migration 029 reescreve esses launchers para a entrada compartilhada
oma bridge, na forma nativa de cada vendor. oma updaterespeita uma lista explícita de vendors em vez de detectar a partir dos diretórios do projeto.
O que melhorou
- Uma época de otimização com quatro candidatos levava quarenta minutos porque cada arm e cada judge rodavam em série. Os dispatches reais agora passam por um pool limitado (
OMA_SKILL_EVAL_CONCURRENCY, padrão 4), e a meta-otimização sobrepõe as runs internas entre skills (OMA_META_CONCURRENCY, até 4). O timeout por dispatch é de 180s, com uma nova tentativa em caso de timeout. - As fixtures testam o que o corpo da skill afirma. O conjunto do oma-debug foi reescrito depois que a primeira versão marcou 89% sem a skill. As doze novas marcam 25% de baseline e 100% com a skill. O oma-refactor foi de 16.7% para 100% do mesmo jeito. oma-docs, oma-scm e oma-qa também têm, cada uma, doze fixtures alinhadas ao corpo da skill.
- A primeira edição verificada pelo loop entrou no oma-docs: held-in de 55.6% para 77.8%, com a validação held-out inalterada em 100%.
- O custo ficou visível. As runs reportam chamadas de modelo por melhoria verificada, então um procedimento que ganha mais gastando mais aparece como tal.
- O Gortex saiu e a code intelligence voltou para a bridge do Serena. Ele saturava a CPU reaplicando patches em um índice de 4 GB e não expunha nenhum limite.
- Os arquivos de skills e de prompts compartilhados foram enxugados para cortar regras incondicionais de preflight, pontuação e aprovação. Os guias de incidentes saíram nos 11 locales da documentação.
Instalação
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.ps1 | iex
Links
O oh-my-agent é feito para times que orquestram mais do que escrevem prompts. O próximo passo é rodar o loop de feedback em agendamento sobre runs reais de projetos, para que as edições de skills cheguem com a evidência anexada.
Texto original (em ingles): https://dev.to/gracefullight/oh-my-agent-failed-runs-now-turn-into-skill-regression-tests-572m