1

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 doctor agora 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 update mostra 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 check e 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.md foi 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

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

https://github.com/first-fluke/oh-my-agent

Carregando publicação patrocinada...