🛡️ /security-research — 새로운 팀 모드 스킬
한 줄의 명령어로 5명의 보안 팀을 가동하세요: 3명의 취약점 헌터(표면, 인증/데이터, 런타임/공급망) + 2명의 PoC 엔지니어가 모두 병렬로 실행됩니다. 모든 발견 사항은 실제 악용 가능성으로 검증됩니다 — 공격 경로 없이는 심각도 평가가 없습니다. CWE 분류 + OWASP WSTG/ASVS 방법론 + CVSS v4.0 점수 산정이 내장되어 있습니다.
/security-research
oh-my-opencode.jsonc에서 team_mode.enabled: true가 필요합니다.
⚡ Parent-Wake 경쟁 조건 수정 — 중복 어시스턴트 스트림 제거
백그라운드 에이전트 완료 엣지가 부모 웨이크 주입을 복제하여 가끔 같은 작업에서 두 번째 어시스턴트 스트림을 시작했습니다. 새로운 parent-wake-dedupe 레이어는 플러시 시간과 프롬프트 비동기 게이트 홀드 둘 다에서 이를 감지하므로, 완료 알림이 이제 정확히 논리적 이벤트당 하나로 축약됩니다. (#4256 / #4019)
🔧 모델 구성 엣지 케이스 복구
모델 해석 문제를 맞닥뜨린 사용자를 위한 세 가지 수정:
- Atlas가 오버라이드를 준수합니다 해석 실패(콜드 캐시, 시스템 기본값 없음) 시에도. Atlas를 조용히 드롭하는 대신 선택한 모델로 등록됩니다. (#4255)
- multimodal-looker가 비전 모델을 신뢰합니다 —
agents.multimodal-looker.model을 임의의 제공자/모델로 설정하면 비전 캐시가 이를 수용하므로 제공자 선언이 필요 없습니다. (#4209)
openai/gpt-5.3-codex가 더 이상 자동 재작성되지 않습니다 — 정규 Codex 강자가 더 이상 실수로 gpt-5.4로 마이그레이션되지 않습니다. (#3777)
🪟 크로스 플랫폼 도구 강화
- OpenCode 번들 ripgrep 재사용 —
~/.cache/opencode/bin/rg가 먼저 프로빙되므로, OpenCode가 이미 가지고 있을 때 ripgrep의 중복 다운로드를 중지합니다. (#3805)
- Windows ast-grep 경로 매칭 고정 — 백슬래시 + UNC 접미사가 이제 dist CLI와 일관되게 매칭됩니다. 회귀 테스트가 이를 고정합니다. (#4220)
- CJK 터미널 헤더 보존 —
oh-my-opencode run 출력의 NFC 정규화가 한글/CJK가 손상되는 것을 방지합니다. (#4170)
✨ TUI 사용성 개선
- 클릭 가능한 서브에이전트 항목 — 늦게 도착하는 세션 ID가 메타데이터 발행 전에 캡처되어 지속적인 스피너 서브에이전트 버그를 수정합니다. (#4252)
look_at이 더 이상 멈추지 않습니다 — 출력이 없는 자식 세션이 120초 타임아웃을 기다리지 않고 allowStableIdleWithoutActivity를 통해 정상 종료됩니다. (#4238)
/stop-continuation이 boulder 완료 후에 존중됩니다 — 명시적으로 중지한 후 더 이상 이탈된 완료 추진이 발생하지 않습니다. (#4149)
- tool-pair-validator가 복구 후 계속됩니다 —
tool_result 블록이 누락된 다중 메시지 대화가 이제 하나의 변환 패스로 영향받는 모든 메시지를 복구합니다. (#4123)
⚠️ 주의 (정리): 최상위 lsp 구성 키 제거됨
oh-my-opencode.jsonc에 lsp: 블록이 있었다면 이것을 읽으세요. 그렇지 않으면 이 섹션을 무시할 수 있습니다.
이 릴리즈의 마이그레이션은 최상위 lsp 구성 키를 명시적으로 제거하고 구성 옆에 타임스탬프가 지정된 .bak 파일을 생성합니다. 서버 정의를 프로젝트 루트 .opencode/lsp.json 으로 이동하세요 — 새 위치이며 lsp MCP 서버(packages/lsp-tools-mcp 기반)에서 사용됩니다.
이것이 단절처럼 보이지만 그렇지 않은 이유: 이 키는 이미 v3.x 이후 Zod 스키마에 의해 조용히 제거되어 왔습니다 — 이 위치의 사용자 정의 LSP 서버는 여러 릴리즈 동안 작동하지 않았습니다. 이 마이그레이션은 손실을 가시화(로그 + .bak 백업 통해)하므로 실제로 복구할 수 있습니다.
서버 복구하기 (1회):
# 1. 이 마이그레이션으로 생성된 가장 최근 백업 찾기
ls -t ~/.config/opencode/oh-my-opencode.jsonc.bak.\* 2>/dev/null | head -1
# 또는 프로젝트에서:
ls -t .opencode/oh-my-opencode.jsonc.bak.\* 2>/dev/null | head -1
# 2. .bak 파일을 열고, `lsp: { ... }` 내용을 프로젝트 루트
# .opencode/lsp.json으로 이 형식으로 복사:
# {
# "$schema": "...",
# "servers": {
# "typescript": { "command": "typescript-language-server", "args": ["--stdio"] }
# }
# }
(#4225 / #4279)
경소 호환성 및 안정성 릴리즈
이 릴리즈는 호환성 관련 동작 변경 및 운영 강화를 포함합니다. 업그레이드하거나 게시하기 전에 아래 요약을 읽으세요.
- 패키지 검출, 플러그인/구성 호환성 및 설치 표면에 걸친 이름 변경 전환 업데이트.
- 위임 작업 계약 및 런타임 등록 동작을 포함한 작업 및 도구 동작 업데이트.
커밋 요약
- 20d67be @EvangelosMoschou이 #4357에서 CLA에 서명했습니다
- 5e2f12f 병합 요청 #4348 Yeachan-Heo/omc-team/you-are-one-of-5-parallel-work/worker-4에서
- 0c14c47 병합 요청 #4350 Yeachan-Heo/omc-team/you-are-one-of-5-parallel-work/worker-3에서
- f390d36 병합 요청 #4352 Yeachan-Heo/fix/atlas-config-model-override-4255에서
- 5451313 병합 요청 #4356 Yeachan-Heo/fix/issue-3805-auto-tools-path에서
- bfc5078 수정: 사용자 구성 multimodal-looker 모델을 비전에 신뢰 (#4209)
- 779e2d2 수정(작업): 늦게 도착하는 sessionId를 캡처하여 TUI 서브에이전트 항목을 클릭 가능하게 (#4252)
- 7d444ee 수정(에이전트): 해석이 undefined를 반환할 때 사용자 atlas 모델을 준수 (#4255)
- 6c691a1 수정(grep): OpenCode 캐시 기반 bin에서 자동 다운로드 rg를 프로빙 (#3805)
- c0a6c66 병합 요청 #4346 code-yeongyu/fix/agent-loop-dedupe-race-4256에서
- b3097e5 수정(백그라운드 에이전트): 중복 부모 웨이크 억제
- 2bfad49 기능(스킬): 보안 연구 오케스트레이션 추가
- 1ecf4f6 @chouzz이 #4312에서 CLA에 서명했습니다
- 01d2196 병합 요청 #4238 islee23520/fix/look-at-status-map-hang에서
- f511b4b 병합 요청 #4263 YOMXXX/fix/gpt-5-3-codex-migration에서
- d06a5d7 병합 요청 #4272 YOMXXX/fix/ast-grep-windows-cli-suffix-test에서
- 9da3009 병합 요청 #4279 MoerAI/fix/migrate-orphan-lsp-config-key에서
- 74db81d 병합 요청 #4285 SpencerJung/fix/issue-4123-tool-pair-retrigger에서
- 6cac80f 병합 요청 #4290 SpencerJung/fix/issue-4170-cjk-agent-header에서
- 12d7d10 병합 요청 #4282 SpencerJung/fix/issue-4149-terminal-continuation-guard에서
- 6062df8 수정(마이그레이션): 'lsp' 마이그레이션 가이드를 자체 포함으로 만들고 오래된 문서 업데이트 (#4279의 codex P2 해결)
- ed4c04e 수정(CLI): CJK 에이전트 헤더 텍스트 보존
- 2856930 수정(tool-pair-validator): 합성 복구 후 계속
- 7dae271 수정(atlas): boulder 완료 후 중지된 계속을 준수
- a7429cc 수정(마이그레이션): 고아 'lsp' 구성 키를 드롭하여 사용자가 LSP가 .opencode/lsp.json으로 이동한 것을 보도록 (#4225 수정)
- ccaf61e 테스트(ast-grep): ast_grep dist CLI 접미사에 대한 Windows 백슬래시 매칭 고정 (#4220)
- d788c3d 수정(마이그레이션): 명시적 gpt-5.3-codex를 gpt-5.4로 재작성 중지 (#3777)
- c4a51be look_at 영구 부재 세션 출력 포함
- b3a195d look_at 상태 맵 대기 멈춤 회피
5명의 커뮤니티 기여자에게 감사합니다:
- @islee23520:
- look_at 상태 맵 대기 멈춤 회피
- look_at 영구 부재 세션 출력 포함
- @YOMXXX:
- 수정(마이그레이션): 명시적 gpt-5.3-codex를 gpt-5.4로 재작성 중지 (#3777)
- 테스트(ast-grep): ast_grep dist CLI 접미사에 대한 Windows 백슬래시 매칭 고정 (#4220)
- @MoerAI:
- 수정(마이그레이션): 고아 'lsp' 구성 키를 드롭하여 사용자가 LSP가 .opencode/lsp.json으로 이동한 것을 보도록 (#4225 수정)
- 수정(마이그레이션): 'lsp' 마이그레이션 가이드를 자체 포함으로 만들고 오래된 문서 업데이트 (#4279의 codex P2 해결)
- @SpencerJung:
- 수정(atlas): boulder 완료 후 중지된 계속을 준수
- 수정(tool-pair-validator): 합성 복구 후 계속
- 수정(CLI): CJK 에이전트 헤더 텍스트 보존
- @Yeachan-Heo:
- 수정(grep): OpenCode 캐시 기반 bin에서 자동 다운로드 rg를 프로빙 (#3805)