oh-my-agent: 이제 스킬이 스스로의 효용성을 측정하고 최적화합니다
요약
oh-my-agent가 스킬의 효용성을 스스로 측정하고 최적화하는 새로운 기능을 출시했습니다. eval-to-opt 루프를 통해 스킬 라이브러리의 성능을 검증하고, 부정적 전이를 방지하며 자동으로 스킬을 개선합니다.
핵심 포인트
- oma skills eval을 통한 스킬 유용성(utilityLift) 측정
- oma skills opt를 활용한 스킬 자동 작성 및 최적화
- 부정적 전이(Negative-transfer) 방지 샘플링 기능
- 스케일링 법칙 감사 및 블랙홀 스킬 탐지 기능
- 비디오 생성 및 모바일/제품 인텔리전스 워크플로우 지원
대부분의 스킬 라이브러리는 점진적으로 축적되며 성장합니다. 유용해 보이는 SKILL.md를 추가하면, 그것이 도움이 되는지 해가 되는지 아무도 증명할 수 없기에 영원히 남게 됩니다. 이번 주 oh-my-agent는 그 간극을 메웠습니다: oma skills eval은 스킬을 로드하는 것이 실제로 홀드아웃 태스크 (held-out task) 결과물을 개선하는지 측정하며, oma skills opt는 그 수치를 높이기 위해 스킬을 다시 작성합니다. 194개의 커밋이 반영되었고 CLI 버전은 8.41.0이지만, 주의를 기울여야 할 부분은 바로 eval-to-opt 루프입니다.
새로운 기능
-
oma skills eval: 홀드아웃 태스크에서utilityLift(대조군 vs 기준군)를 측정합니다.--mock은 기록된 롤아웃 (rollouts)을 결정론적으로 재생하며,--live는 태스크당 두 개의 읽기 전용 에이전트 암 (agentic arms)을 생성하고,--record는 롤아웃을 캡처합니다. 기본 검사기는judge(LLM이 루브릭에 따라 출력을 채점)이며,assert및regex는 선택 사항인 결정론적 검사입니다. -
oma skills opt: 최적화 LLM이SKILL.md에 대해 제한된 범위 내의 추가/삭제/교체 편집을 제안하고, eval을 통해 각 후보의 점수를 다시 매기며, 홀드아웃 검증에서의 상승폭이 부정적 전이 (negative-transfer) 퇴보 없이 엄격하게 개선될 때만 수용합니다 (SkillOpt, arXiv:2605.23904).--dry-run이 기본값이며,--apply는.bak백업과 함께 원자적 임시 파일 생성 후 이름 변경 (atomic temp+rename) 방식으로 기록합니다. -
부정적 전이 샘플링 (Negative-transfer sampling):
--neg-transfer는 하나의 스킬을 로드하는 것이 다른 스킬의 eval 세트에 포함된 관련 없는 동일 도메인 태스크를 퇴보시키는지 확인합니다. -
스케일링 법칙 감사 체크 (Scaling-law audit checks):
oma skills audit은 이제 블랙홀 스킬 (지나치게 일반적인 라우팅 하이재커)을 표시하고, 보정된 라이브러리 크기 라우팅 감쇠 (routing-decay) 임계값을 넘어서면 경고를 보냅니다 (Chen et al., arXiv:2605.16508). -
oma-video스킬 및/video워크플로우: 내레이션, 비주얼, 자막 및 포함된 Remotion 컴포지터를 구성하는 핵심 선택형 3단계 생성 (9:16 쇼츠, 16:9 설명 영상, 모든 URL의 데모 캡처) 기능을 제공합니다. 모든 프로바이더 (provider)는 결정론적 폴백 (fallback)으로 전환되므로, API 키가 전혀 없어도 실행을 완료할 수 있습니다. -
oma-mobile내 Swift 네이티브 iOS:swift-ios변체 (SwiftUI +@Observable, Appleswift-openapi-generator, App/Core/Features/Shared 레이아웃)./stack-set은 이제 Swift, Flutter, React Native를 감지하여 해결된 스킬 (skill)로 라우팅합니다;oma verify mobile은 스택 매니페스트 (stack manifest)에 따라swift build/swift test를 실행합니다. -
oma intel: GitHub README, 릴리스 (releases), 이슈 (issues)를 수집하고, 적대적 다중 렌즈 리뷰 게이트 (adversarial multi-lens review gate)를 실행하며, 출력물을 PRD와 격차 보고서 (gap report)로 분리하는 로컬 우선 제품 인텔리전스 파이프라인 (local-first product intelligence pipeline)입니다. -
세 가지 새로운 런타임 (runtimes): Kiro CLI, Pi (Earendil, 프로세스 내
.pi/extensions를 통해 제공), 그리고.agents/hooks.json을 통한 완전한 Antigravity (agy) 훅 (hook) 통합.
수정 사항
runAction의 위치 피연산자 (positional operands) 덮어쓰기 문제: 병합된 옵션 객체 (options object)가args[0]를 덮어씌우는 문제가 있었습니다. 이로 인해oma state:emit decision.made '{...}'실행 시 kind가{category:"main",...}로 기록되었고,state:verify는 항상 결정(decision)이 누락되었다고 보고했습니다. 이제 옵션이 위치(position)로 대체되어 피연산자가 보존됩니다.--yes플래그가 핸들러에 전달되지 않던 문제: 래퍼 (wrapper)가command.opts()(전역적으로 파싱된 플래그를 누락함)를 전달하여,oma skills eval --live --yes를 실행해도 비용 미리보기 프롬프트에서 여전히 차단되었습니다.optsWithGlobals()로 전환하여, CI 환경에서도 라이브 스킬 평가 (live skill-eval)를 실행할 수 있게 되었습니다.- AgentMemory가 프로젝트 디렉터리로 유출되는 문제: iii 엔진이 실행된 현재 작업 디렉터리 (cwd) 상대 경로인
./data/저장소를 해당 프로젝트에 작성했습니다. 이제 데몬 (daemon)의 cwd는~/.agentmemory로 고정되며,daemon stop은agentmemory stop을 호출하여 고립된 엔진이 3111 포트를 계속 점유하지 않도록 합니다. - 키가 없는 마켓 소스들의 무음 403 오류: 익명 Reddit
search.json과 Bluesky의 공개 검색 엔드포인트(endpoint) 모두 403 오류를 반환하여 기본 소스 중 두 개가 누락되었습니다. 이제 Reddit은 pullpush.io를 통해, Bluesky는api.bsky.app을 통해 라우팅되어, 키가 없는 기본 커버리지가 2/4에서 4/4로 증가했습니다. - agy 헤드리스 (headless) stdout이 비어있던 문제: Antigravity는 비-TTY (non-TTY) 환경에서
--print실행 시 stdout으로 아무것도 내보내지 않아, 생성된 서브 에이전트 (subagent) 캡처가 빈 상태였습니다.
이제 서브 에이전트 (subagent)는 PTY (script(1)) 하에서 실행되어 그 출력이 캡처됩니다.
개선 사항
- 워크플로 (Workflows) 직접 심볼릭 링크 연결: 각 워크플로 파일은 자체적인
name+disable-model-invocation프론트매터 (frontmatter)를 포함하며,.agents/workflows/<wf>.md에 직접 심볼릭 링크 (symlinking)를 걸어 노출됩니다. 이를 통해 18개의 커밋된 래퍼 스킬 (wrapper skills)을 제거하였고,pdf/oma-pdf감사 (audit) 상의 오탐 (false positive) 문제를 해결했습니다. 실제 스킬 수는 현재 30개입니다. harvest.ts분리: 1,400라인에 달하던 마켓 하베스트 (market harvest) 파일이 엔드포인트 (endpoints) / 노멀라이저 (normalizers) / 소스 (sources) 모듈로 분리되었으며, 약 400라인의fetchSource조건문이 소스 핸들러 레지스트리 (source-handler registry)로 변경되었습니다. 공개 파사드 (public facade)는 변경되지 않았습니다.- Print 스타일시트의 캐스케이드 (cascade) 충돌 해결: 슬라이드 PDF 내보내기 시, 강제로 우선순위를 높이는 대신 충돌의 근본 원인(작성자 스타일 이후에 생성되는 범위 제한된
#slide-NN리셋)을 수정하여 불필요한!important오버라이드 (overrides)를 제거했습니다. 남은 유일한!important는prefers-reduced-motion웹 접근성 (a11y) 리셋뿐입니다. - 경로 및 해싱 (hashing) 중앙 집중화: 설치 (install), 상태 (state), 요약 (recap) 단계가 이제
.agents경로 상수를 공유하며, 매니페스트 (manifest) 체크섬 (checksums)을 위해 전체 SHA-256 방식을 사용하도록 통일되었습니다. - 기본 노력 수준을 xhigh에서 high로 하향: 설치 시 Claude 설정 및 Anthropic 자동 기본값에 대해 적용됩니다. 기존의 더 높은 설정값들은 그대로 유지됩니다.
설치 (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는 스킬 라이브러리를 잡동사니 서랍이 아닌, 측정 가능한 자산으로 취급하는 팀을 위해 구축되었습니다. 다음 단계는 oma skills opt로 승인된 편집 사항을 평가 피스처 (eval fixtures)를 통해 다시 피드백하여, 매 릴리스마다 라이브러리가 스스로 튜닝되도록 하는 것입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기