v4.5.0 — 퍼블리시 안전성 및 내부 리팩터
이 릴리즈는 런타임 안전성(폴백 루프, 부모 웨이크 스톨, 퍼블리시 페이로드)을 강화하고, 모든 에이전트/모드 프롬프트를 버전이 지정된 마크다운으로 분리하는 오래 진행 중이던 prompts-core 리팩터를 완성합니다.
🛡️ 퍼블리시 안전성 강화
프로덕션 영향 사전 퍼블리시 간격을 줄이는 세 가지 가드레일:
- runtime-fallback은 4xx 오류에서
isRetryable: true를 더 이상 신뢰하지 않습니다. 제공자가 401/403/404를 재시도 가능으로 잘못 태그했다면, 구성된 모든 폴백 모델이 무한 루프에 빠질 것입니다. 신호는 이제 상태 코드가 없는 경우, 5xx, 구성된 retry_on_errors 목록, 그리고 {408, 425, 429}로 제한됩니다.
- parent-wake는 두 번째 고착 상태를 벗어납니다. 어시스턴트의 텍스트 스트림이 보류 중인 도구 호출이 없이 메시지 중간에 끊겼을 때, parent-wake는 무한정 지연되고 백그라운드 에이전트 완료는 부모에 도달하지 못했습니다. 이제 경계가 있는 이스케이프 경로가
toolCallDeferMaxMs 후에 발송합니다.
- npm 페이로드는 내부 전용 자산을 차단합니다. 퍼블리시된 점(dot) 디렉터리당 중첩된
.npmignore + 새로운 script/package-layout-exclusion.test.ts 영구 가드. .opencode/skills/에 __draft-foo/SKILL.md를 추가하면 CI가 npm에 배포되기 전에 실패합니다.
🔁 Ralph-Loop 활성도
ralph-loop을 위한 세 가지 독립적인 고착 상태 이스케이프:
- Oracle 발송 대기는 이제 시간 제한이 있습니다(30분 하드 상한). 이전에는 충돌하거나 OOM으로 종료된 oracle 세션이 루프를 영구적으로 동결시켰습니다.
- 루프는 최신 어시스턴트 턴이 영(0) 모델 진행을 만들었을 때 자동 중지됩니다(토큰 개수 모두 영(0) AND 어시스턴트 컨텐츠 없음).
- 이중 발화 경쟁 수정은 더 이상 완료되지 않은 진행 중인 oracle 발송을 무시하지 않습니다.
📞 백그라운드 에이전트 전달
네 가지 수정이 하나의 결과로 수렴 — 완료 알림이 통과됩니다:
- 디바운스된 활성 부모 웨이크 플러시(버스트 완료 시 더 이상 천둥의 무리 없음).
- 완료 웨이크는 활성 부모 턴 중에 전달되며 더 이상 자동으로 버려지지 않습니다.
- 발송된 부모 웨이크 실패는 격리되므로 하나의 실패가 연쇄적으로 발생하지 않습니다.
- Atlas 하위 에이전트는 제공자 사용 한도 오류 시 재시도됩니다(더 이상 막힌 실행 없음).
👥 팀 모드 UX
- 리더는 이제 읽지 않은 메일박스 메시지에서 웨이크됩니다 (#4464). 유휴 리드는 더 이상 워커 핑을 놓치지 않습니다.
- 모델 오버라이드는 팀 모드 경계를 통해 보존됩니다.
- 리드는 자체 주도권으로 팀을 종료합니다 — 더 이상 세션/메일박스/멤버 턴 예산을 소진하는 잔존 팀 없음.
🧠 Prompts-Core 마이그레이션 (50+ 커밋, 사용자 대면 API 변경 없음)
모든 에이전트 및 모드 프롬프트는 이제 packages/prompts-core/의 버전이 지정된 마크다운에 있습니다:
- Atlas: 5가지 변형(기본 / GPT / Gemini / Kimi / Opus-4.7)
- Prometheus: 전체 프롬프트 + 변형 표
- Ultrawork: 4가지 변형(기본 / GPT / Gemini / planner)
- 모드 프롬프트: search / analyze / team / hyperplan
함께하는 dist-bundle 테스트는 빌드된 번들을 스캔하여 고유한 프롬프트 서명을 찾습니다. 마크다운 인라인을 자동으로 회귀시키는 향후 Bun 업그레이드는 첫 에이전트 로드에서 설치를 끊는 대신 CI에서 크게 실패할 것입니다.
🔧 Continuation + Validators
fix(continuation): 프롬프트를 발송하기 전에 등록된 에이전트 이름을 확인합니다(#4417) — "Atlas - Plan Executor"와 같은 표시 이름을 사용할 때 빈 문자열 버그를 수정합니다.
fix(prompt-async-gate): 런타임 타입 오류 시 객체 형식 경로 재시도(#4417).
fix(thinking-block-validator): 중복 thinking 앞에 붙이기 회피(#4374) — 이중 thinking 스트림 경쟁을 제거합니다.
🩺 Doctor + Help JSON Schemas
oh-my-opencode doctor, sandbox, status, 그리고 acp는 이제 도움말 출력을 위한 JSON 스키마를 노출합니다 — 셸 완성, 구조화된 CLI 내부 검사, 그리고 --help 일관성을 활성화합니다.
🏗️ 내부 패키지 레이어링
워크스페이스가 9개의 퍼블리시된 패키지로 분할됩니다: utils / model-core / prompts-core / rules-engine / agents-md-core / ast-grep-core / comment-checker-core / hashline-core / boulder-state. 내부 정리 — 플러그인 API에 대한 호환성 손상 없음.
🌐 Web
- 마케팅 사이트 정규 도메인이 omo.dev로 마이그레이션되었습니다.
- README 번역이 ja / ko / ru / zh-cn에 대해 새로고침되었습니다.
🙏 리뷰어 노트
이 릴리즈는 퍼블리시 논쟁 소용돌이 하이퍼울트라논쟁으로 제한되었습니다 — 6개의 적대적 카테고리 멤버 에이전트(quick / unspecified-low / unspecified-high / deep / ultrabrain / artistry)가 3라운드에 걸쳐 103 커밋 변경 집합을 교차 공격했습니다. 식별된 3가지 필수 수정 차단기 — runtime-fallback 부울 가드, parent-wake 고착 이스케이프, npm 페이로드 제외 — 모두 이 릴리즈에 포함되었습니다.
마이너 호환성 및 안정성 릴리즈
이 릴리즈는 호환성 대면 동작 변경 및 운영 강화를 포함합니다. 업그레이드 또는 퍼블리시하기 전에 아래 요약을 읽으십시오.
- 패키지 감지, 플러그인/구성 호환성, 그리고 설치 표면 전체의 이름 변경 전환 업데이트.
- 생략된 구성이 런타임 경로 전체에서 일관되게 동작하도록 작업 시스템 기본 동작 정렬.
- 설치 및 퍼블리시 워크플로우 강화, 더 안전한 릴리스 순서 지정 및 패키지/설치 수정 포함.
커밋 요약
- 52ba125 Merge branch 'fix/pre-publish-blockers-v4.5.0'
- 8e28e29 fix(package): block internal-only assets from publish payload
- 5c0cc0d @Hungdoan565 has signed the CLA in #4492
- ec552bc fix(ralph-loop): stop loop when latest assistant turn made no model progress
- 9810bad docs(publish-skill): pin Jobdori bot ID in Discord release commands
- 91aa915 @fcmfcm01 has signed the CLA in #4482
- be2ed2b Merge pull request #4479 from code-yeongyu/fix-4470-momus-cancels-main
- 3b421c6 fix(background-agent): isolate dispatched parent wake failures
- b03e08b Merge pull request #4478 from code-yeongyu/fix-4164-bg-reminder-timing
- e1fde71 Merge pull request #4477 from code-yeongyu/fix-4374-dual-thinking-streams
- ec7ce51 fix(background-agent): debounce active parent wake flushes
- 6a56144 fix(background-agent): deliver completion wakes during active parent turns
- e443e86 fix(thinking-block-validator): avoid duplicate thinking prepends
- 037d017 Merge pull request #4476 from code-yeongyu/fix-4464-team-leader-wake
- 3e09910 @2wndrhs has signed the CLA in #4475
- 58025f9 fix(team-mode): wake leaders on unread mailbox messages (#4464)
- 759b566 Merge pull request #4474 from code-yeongyu/fix-4441-omo-evidence-ignore
- 3e11594 chore(repo): untrack .omo/evidence and .omo/notepads per .gitignore
- dc05074 @hanakokoizumi has signed the CLA in #4467
- 939f2b8 @SoShymKing has signed the CLA in #4469
- 03eb9ff Merge pull request #4465 from code-yeongyu/fix-4417-atlas-path-and-start-work
- 28efc4e fix(continuation): resolve registered agent name before dispatching prompt (#4417)
- a5cee76 fix(prompt-async-gate): retry object-form path on runtime type error (#4417)
- c25c338 Merge pull request #4454 from code-yeongyu/fix-4448-npm-pack-dot-dirs
- 94d9d93 Merge pull request #4453 from code-yeongyu/fix-4419-atlas-subagent-fallback
- 0d0be43 Merge pull request #4452 from code-yeongyu/fix-4449-tool-execute-after-stall
- 9c56bf2 test(script): typecheck package layout regression
- 72119b3 fix(package): ship dot-directory command assets
- f57532c fix(tool-execute-after): narrow metadata warning tools
- dc845a8 chore(web): migrate canonical domain to omo.dev
- 6551f38 fix(background-agent): retry Atlas subagents on usage limits
- 767f5a6 fix(model-core): retry OpenAI usage_limit_reached fallbacks
- 6343feb Merge pull request #4450 from code-yeongyu/fix-4447-subagent-task-deny
- 4a68db0 fix(tool-execute-after): gate metadata recovery warnings
- 75d1ff4 fix(plugin-handlers): deny task for read-only subagents
- 9be97de Merge pull request #4435 from code-yeongyu/fix/issue-4429-team-mode-model-override
- 9fd52cb feat(help): #689 acp help JSON schema
- eed88e4 feat(help): #689 acp help JSON schema
- bab9caa feat(help): #688 sandbox help JSON schema
- 1fdb88a feat(help): #688 sandbox help JSON schema
- 2c6c42f feat(help): #687 status help JSON schema
- 36e394a feat(help): #687 status help JSON schema
- a73e4db feat(help): #686 doctor help JSON schema
- 21713dc fix(agents): preserve model overrides with team mode
- 776da68 feat(help): #686 doctor help JSON schema
- ce4b11b fix(cli): add explicit helpOption configuration for consistent help-flag ordering