ZENMUX_API_KEY 없이도 실행되도록 수정하여, 새로 발행된 ZenMux 모델(예: anthropic/claude-fable-5-free)이 재생성된 models.json을 기다리지 않고 런타임 models.db 캐시에 자동 업데이트되도록 변경/api/v1/models 엔드포인트를 쿼리하도록 수정하여, 존재하지 않는 /api/anthropic/models 경로를 요청하지 않도록 변경paths 매개변수를 단일 세미콜론 구분 path 문자열 매개변수로 변경grep, glob, ast_grep 도구가 paths 배열 대신 단일 선택적 path 인수를 사용하도록 변경. path는 하나의 경로 또는 세미콜론 구분 목록(src; tests)을 허용하며, 생략하면 워크스페이스 루트(.)를 검색합니다. 다중 경로 검색, 구분 기호 확장 및 내부 URL 스코프는 변경되지 않습니다. (ast_edit는 계속 paths를 사용합니다.)speech.enhanced 설정 추가speech.enhanced 설정 추가: 보조자 출력이 음성 합성 전에 소형/소규모 모델에 의해 자연스러운 음성 산문으로 다시 작성됩니다 — 코드 블록은 한 절 설명이 되고, 링크는 레이블이나 사이트명을 읽고, 숫자와 기호는 자연스럽게 읽히고, 목록은 흐르는 문장이 됩니다. 블록은 펜스 인식 방식으로 다시 작성되고 합쳐집니다(최대 2개의 동시 완료로 제한). 실패하거나 시간이 초과된 다시 쓰기는 기계적 정리로 폴백되어 음성이 모델에서 차단되지 않습니다.afplay를 생성하는 대신 간격 없는 스트리밍 재생 백엔드(ffmpeg AudioToolbox, sox 폴백)를 얻습니다.CNPG, ETL, JWT)가 제목 케이스로 소문자로 변환되는 문제 수정. reconcileTitleCasing(packages/coding-agent/src/tiny/text.ts)이 이제 ALL-CAPS 소스 토큰을 acronyms 테이블에 매핑하고 모델이 제목 케이스 아티팩트(Cnpg)를 생성할 때 복원하면서, 연속 ALL-CAPS 휴리스틱을 통해 외치는 입력(FIX the BUG NOW, ALL ERROR HANDLING)의 복원을 거부합니다. 제목 프롬프트는 또한 모델에 ALL-CAPS 약자를 그대로 보존하도록 지시합니다. (#4220)fetchDynamicModels에서만 오는 확장 프로바이더에 대한 콜드 스타트 --model 해석 수정하여, 세션 시작이 폴백 또는 하드 실패하기 전에 신선한 캐시된 런타임 모델을 사용할 수 있도록 함. (#4216)node_modules를 탐색하는 문제를 플러그인 캐시 무효화까지 결과를 캐싱하여 수정. (#4197)discoverExtensionPaths가 시작 시 등록된 모든 확장 모듈 프로바이더(claude, codex, gemini, opencode)를 호출하고 모든 비네이티브 결과를 폐기하는 문제 수정. 확장 모듈 기능이 이제 providers: ["native"]로 로드되어 세션당 4개의 외부 디렉토리 탐색을 건너뜁니다 — Windows에서 눈에 띄게 개선됨 (#4198)/move 오버레이가 키 입력마다 디렉토리 항목당 fs.statSync를 실행하는 문제 수정. 디렉토리 목록 캐시가 이제 Dirent[]를 저장하고 시스템 호출 없이 항목을 분류하며, 심볼릭 링크 항목에 대해서만 statSync로 폴백함 (#4199)eval 및 셸 스타일 렌더러에 대해 첫 번째 프레임에 고정되어 있는 문제 수정. (#4170)commitPatchToBranchWorktree가 이제 먼저 일반 적용 및 git apply --3way를 시도하고(WIP 측 blob이 HEAD에서 추적되는 경우 에이전트 전용 결과), 임시 작업 트리를 기본 WIP로 시딩하여 델타 패치의 HEAD+WIP 컨텍스트가 일치하도록 폴백한 후 WIP 전용 파일을 되감아서 브랜치 커밋에 유출되지 않도록 합니다. 추적되지 않은 WIP 파일, 스테이징된 새 WIP 파일 및 --3way가 해결할 수 없는 겹침을 포함합니다. (#4136)discoverAgents()가 OMP 확장 패키지 내의 agents/ 하위 디렉토리를 건너뛰는 문제 수정하여, omp plugin install로 설치된 npm 플러그인(예: loom)과 --extension/extensions: 설정 루트에 의해 제공되는 에이전트가 이제 형제 skills/, hooks/, tools/ 디렉토리와 같은 방식으로 로드됩니다. 새 스캔은 listOmpExtensionRoots를 통해 진행되므로 Claude 마켓플레이스 설치는 계속 claude-plugins 프로바이더를 통해 흐르고 중복 계산되지 않습니다. (#3920)ask/resolve에 수렴하지 않고 계획 모드가 행(hang)되는 문제 수정. 계획 모드 결정 적용이 비합성 prompt() 반환에만 실행되었습니다. 계속/깨우기 경로는 agent_end를 통해 정착하고 이를 우회했습니다. 어드바이저 카드와 유휴 IRC가 이제 자율 전환을 깨우지 않고 컨텍스트에 기록되며, ask/resolve 결정이 범위가 정해진 재시도 카운터(프로바이더 중립 required, 두 도구 모두 사용 가능)를 통해 범용 agent_end 터미널 정착에서 적용됩니다. 이는 정해진 횟수만큼 상기시킨 후 강제하고 사용자에게 양보합니다 — 루핑하지 않음, 계획 모드 미수렴을 조용히 끝내지 않음. await:true로 유휴 계획 모드 세션에 보내는 irc send는 대기 시간 초과까지 대기 중인 대신 기존 임시 측 채널 자동 응답을 통해 발신자에게 답변합니다. 큐에 대기 중인 강제 계획 결정은 계속이 건너뛰어지거나 계획 모드가 종료될 때 삭제됩니다. (#3910)some/filter/reduce)를 수행했습니다. 단일 패스가 이제 상태 부울, 바닥글 수 및 요청 합계를 도출하고, 증분 검토 추출은 호출자가 이미 정규화한 수집 데이터를 재사용하여 다시 정규화하지 않습니다.resolveModelRoleValue가 이제 선호도 컨텍스트(모든 사용 가능한 모델 위의 O(n) 모델 순서 맵)를 한 번 구축하고 모든 폴백 패턴에서 재사용합니다. 패턴마다 재구축하는 대신 matchModel이 케이스 폴딩된 패턴을 한 번 들어올리는 대신 각 필터 패스에서 모든 후보에 대해 .toLowerCase() 처리합니다.split("\n")을 통해 할당하는 대신 직접 개행을 계산하고, 해시라인 포매터가 더 이상 동일한 콘텐츠를 두 번 계산하지 않습니다.todo 도구가 활성화되거나 발견 가능할 때만 도구 정확 지침으로 렌더링되지 않고 무조건적으로 사용 불가능한 도구를 호출하도록 에이전트를 지시합니다.process.exit()를 호스트 프로세스 종료 대신 복구 가능한 로드 실패로 처리하는 문제 수정. 사용자 정의 도구가 이제 공유 확장 종료 가드 아래 로드되어 종료되는 도구를 로드 오류로 건너뛰면서 나머지 도구는 계속 로드됩니다 (#1704)EPIPE: broken pipe, write 거부 수정: 스트리밍 플레이어의 stop()이 백엔드 SIGKILL에 대해 대기 없는 FileSink.end()에 대해 경합하고, 세션 중 쓰기는 플러시를 대기하지 않았습니다. 쓰기가 이제 플러시를 대기합니다(죽은 백엔드가 감지되고 청크가 다음 후보 또는 파일별 경로에서 재생됨). stop()은 예상된 분해 거부를 삼킵니다.path 인수를 읽도록 업데이트하며, 기존 기록이 검색 범위를 계속 렌더링하도록 레거시 paths 배열로 폴백합니다.omp stats 대시보드에 도구 탭 추가(/#/tools): 도구별 호출 수, 오류율, 결과/인수 페이로드 크기, 모델별 분석, 시간에 따른 누적 호출 차트. 토큰 및 비용 열은 각 호출 전환의 실제 프로바이더 사용량을 해당 전환의 도구 호출에 균등하게 할당합니다. 기존 데이터베이스는 다음 동기화 시 세션을 한 번 다시 파싱하여 기존 도구 호출을 역채우기합니다.{"paths": packages/foo/*, "i": "…"})이 포함된 도구 호출 실패 시 parseJsonWithRepair 수정. 최종 파싱이 이제 이러한 베어워드를 객체/배열 값 위치의 문자열로 복구하여 , / } / ] / 개행에서 종료합니다. 복구는 실제 구조나 잘못된 데이터를 마스킹할 수 있는 것을 의도적으로 거부합니다 — 잘린 값, " / { / [를 포함하는 토큰 또는 키 같은 : (URL :// 및 Windows :\ 콜론은 리터럴로 유지), 비유한 원자(NaN, Infinity, undefined) — 스트리밍 부분 파싱은 완료되지 않은 베어워드를 커밋하는 대신 롤백합니다.Full Changelog: v16.3.1...v16.3.2