oh-my-agent: daemons Serena compartilhados e loops de retry limitados
Cinco releases do CLI, da 15.0.2 à 15.0.6, saíram nesta semana. O tema é manter agents de longa duração sob controle: menos processos soltos, memória limitada e loops de retry que sabem a hora de parar.
20 commits, 69 arquivos, cerca de 3.700 linhas adicionadas. A maior parte do trabalho foi em como o oh-my-agent gerencia o Serena, o backend de busca de código em que todo agent se apoia.
Novidades
- Runtime gerenciado do Serena: os adapters do Serena, com controle de versão, são instalados junto com um cache de símbolos em SQLite por arquivo. O Python não mantém mais as árvores completas de símbolos do workspace em memória.
oma serena check: novo comando que valida a configuração do Serena e roda checagens de Dart contra o daemon compartilhado, com exit codes que você pode usar em scripts.- Limpeza agendada de daemons: uma tarefa periódica separada encerra os daemons Serena compartilhados que ficaram ociosos. Ela verifica a identidade do processo antes de enviar um sinal a um PID registrado, então um PID reciclado nunca é morto por engano.
- Diagnósticos Dart gerenciados: os diagnósticos de pacote reaproveitam o language server do Dart gerenciado. As revisões do adapter são registradas sempre que um daemon compartilhado inicia ou é substituído.
- Relatório do doctor:
oma doctoragora informa o estado do adapter do Serena, tanto no rodapé do terminal quanto no relatório JSON.
Correções
- Stacks duplicadas do Serena: quando o servidor compartilhado está inacessível, o oma agora reporta a falha de conexão em vez de subir uma stack privada do Serena. Os contextos gerenciados são normalizados antes da consulta ao registry.
- Substituição de daemon sob carga: se a revisão do runtime muda enquanto há clientes conectados, o daemon já carregado é reaproveitado e a substituição espera todos os clientes se desconectarem. Os cenários com daemon ativo, ocupado e com revisão legada estão cobertos por testes.
- Análise Dart antecipada: o Dart agora analisa por padrão ao abrir o arquivo e, quando nenhuma versão está configurada, usa a versão estável do SDK local.
- Retries de orquestração sem limite: os planos são fixados no momento do dispatch, e os retries são contados por linhagem de workflow e objetivo lógico. Falhas de evidência agora são separadas de falhas de produto, e um problema de metadados ausentes recebe um único reparo limitado, sem reiniciar o planejamento do produto.
- Checagens instáveis: o teste de timeout do bridge agora verifica a resposta do bridge protegido em vez do tempo de relógio. O scan de boundaries tenta de novo quando o worker TypeScript encerra por falha transitória.
Melhorias
- Updates mais silenciosos:
oma updatemostra os componentes do Hyperframes que mudaram, deduplica links reparados e termina com um único resumo de versão. Sumiram os totais de arquivos imprecisos e os avisos de rotina. - Limites de módulo mais claros: a validação de config do Serena foi para a camada de I/O compartilhada, então
serena checke o setup não importam mais a fatia de comando do bridge. O comportamento não mudou. - Verificação: a correção das stacks duplicadas foi verificada com 211 testes afetados, type checking, lint, checagem de boundaries e um smoke test de busca de símbolo e definição no Serena 1.7.0 com Dart 3.13.4.
- Docs e testes:
integrations/serena/README.mdfoi expandido, com novos testes em Python para o adapter de Dart, o instalador e o cache de símbolos.
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 passam mais tempo orquestrando do que escrevendo prompts. Na sequência: guardrails mais firmes para execuções longas de orquestração, para que um objetivo travado falhe rápido em vez de ficar em loop.
Texto original (em ingles): https://dev.to/gracefullight/oh-my-agent-shared-serena-daemons-bounded-retry-loops-4g6