oh-my-agent: 공유된 Serena 데몬, 제한된 재시도 루프
요약
oh-my-agent가 CLI 릴리스를 통해 장기 실행 에이전트의 안정성을 대폭 개선했습니다. 주요 업데이트는 공유 데몬 관리와 메모리 사용량 최적화에 초점을 맞추었으며, Serena 백엔드 관리를 강화하여 프로세스 누수 및 재활용 PID 문제를 해결했습니다.
핵심 포인트
- 공유 Serena 데몬을 통해 에이전트의 안정성을 높였습니다.
- 메모리 사용량을 줄이고 예측 가능한 재시도 루프를 구현했습니다.
- 관리형 Serena 런타임으로 버전별 격리와 자원 관리가 강화되었습니다.
이번 주에 15.0.2부터 15.0.6까지 총 다섯 개의 CLI 릴리스가 배포되었습니다. 주요 테마는 안정적으로 작동하는 장기 실행 에이전트입니다: 떠도는 프로세스 감소, 제한된 메모리 사용량, 그리고 언제 멈춰야 할지 아는 재시도 루프를 구현했습니다.
20개의 커밋, 69개의 파일, 약 3,700줄의 코드가 추가되었습니다. 이 중 대부분은 oh-my-agent가 모든 에이전트가 의존하는 코드 검색 백엔드인 Serena를 관리하는 방식에 할애되었습니다.
새로운 기능 (What's new)
- 관리형 Serena 런타임: 버전별로 격리된(version-gated) Serena 어댑터가 파일별 SQLite 심볼 캐시와 함께 설치됩니다. Python은 더 이상 전체 작업 공간의 심볼 트리(symbol trees)를 메모리에 유지하지 않습니다.
oma serena check: Serena 설정을 검증하고 공유 데몬에 대해 Dart 검사를 실행하는 새로운 명령어입니다. 스크립팅에 사용할 수 있는 종료 코드(exit codes)를 제공합니다.- 예정된 데몬 정리: 별도의 주기적 작업이 유휴 상태의 공유 Serena 데몬을 회수합니다. 이 작업은 프로세스 ID(PID)가 등록된 PID를 신호 보내기 전에 프로세스 정체성을 검증하므로, 재활용된 PID가 실수로 종료되는 것을 방지합니다.
- 관리형 Dart 진단: 패키지 진단 기능이 관리형 Dart 언어 서버를 재사용합니다. 공유 데몬이 시작되거나 교체될 때마다 어댑터 개정판(Adapter revisions)이 추적됩니다.
- Doctor 보고서:
oma doctor가 이제 터미널 하단과 JSON 보고서 모두에 Serena 어댑터 상태를 보고합니다.
수정된 내용 (What's fixed)
수정된 내용 (What's fixed)
- 중복 Serena 스택: 공유 서버에 연결할 수 없을 때, oma는 이제 사설 Serena 스택을 생성하는 대신 연결 실패를 보고합니다. 관리 컨텍스트(Managed contexts)는 레지스트리 조회 전에 정규화됩니다.
- 부하 상태에서의 데몬 교체: 클라이언트가 연결된 상태에서 런타임 리비전이 변경되면, 로드된 데몬을 재사용하고 교체 작업은 모든 클라이언트가 연결 해제될 때까지 대기합니다. 활성(Active), 바쁜(Busy), 레거시 리비전 케이스는 테스트로 커버됩니다.
- 즉각적인 Dart 분석: Dart는 이제 파일 열림 시 기본적으로 분석을 수행하며, 구성된 버전이 없을 때는 로컬 안정화 SDK 버전을 사용합니다.
- 무한정 오케스트레이션 재시도: 플랜은 전송될 때 고정(pinned)되며, 재시도는 워크플로우 계보와 논리적 목표에 의해 계산됩니다. 증거 실패는 이제 제품 실패와 분리되었으며, 누락된 메타데이터 문제는 제품 계획을 다시 시작하지 않고 하나의 제한된 수리로 해결됩니다.
- 불안정한 검사: 브릿지 타임아웃 테스트는 벽 시간(wall time) 대신 보호된 브릿지의 응답을 단언합니다. 경계 스캔 재시도는 일시적인 TypeScript 워커 종료를 처리합니다.
개선된 점 (What's better)
- 조용한 업데이트:
oma update는 변경된 Hyperframes 컴포넌트를 표시하고, 복구된 링크를 중복 제거하며, 하나의 버전 요약으로 마무리됩니다. 부정확한 파일 총계와 일상적인 알림은 사라졌습니다. - 더 깔끔한 모듈 경계: Serena 설정 검증이 공유 I/O 계층으로 이동하여,
serena check및 설정 작업이 더 이상 브릿지 커맨드 슬라이스를 가져오지 않습니다. 동작 방식은 변경되지 않았습니다. - 검증: 중복 서버 수정 사항은 211개의 영향을 받는 테스트, 타입 검사(type checking), 린트(lint), 경계 검사(boundary checks) 및 Dart 3.13.4를 사용한 Serena 1.7.0의 심볼 및 정의 조회 스모크 테스트로 확인되었습니다.
- 문서 및 테스트:
integrations/serena/README.md가 확장되었으며, Dart 어댑터, 설치 프로그램(installer), 심볼 캐시를 위한 새로운 Python 테스트가 추가되었습니다.
설치 (Installation)
# 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
링크
oh-my-agent는 프롬프트(prompt)를 입력하는 것 이상으로 오케스트레이션(orchestrate)을 수행하는 팀을 위해 구축되었습니다. 다음 목표는 장시간 실행되는 오케스트레이션(orchestration) 실행에 더 엄격한 가드레일(guardrails)을 적용하여, 막힌 목표가 루프를 반복하기보다 빠르게 실패하도록 하는 것입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기