countTokens, countTokensConservatively, setTokenizerModel, estimateTokens)를 모델 범위의 불변 Tokenizer 인스턴스(agent.tokenizer)로 대체했습니다. tokenizer.countTokens(text, mode?), tokenizer.countMessage(message), 또는 tokenizer.countMessages(messages)를 사용하세요.findCutPoint, prepareBranchEntries, collectShakeRegions, pruneToolOutputs, pruneSupersededToolResults, trimRemoteCompactionInputToContextWindow)를 명시적 Tokenizer 인스턴스를 요구하도록 업데이트했습니다.Tokenizer.checkTokenBudget(text, budget)를 추가하여 전체 토크나이제이션으로 돌아가기 전에 빠른 바이트 경계 검사를 사용해 텍스트가 토큰 제한 범위 내에 맞는지 효율적으로 확인합니다.findTranscriptUsageAnchor, isTranscriptUsageAnchor, estimateTranscriptTokens)을 추가하여 최신 보고된 어시스턴트 턴 사용량으로부터 트랜스크립트 토큰 수를 증분식으로 계산합니다.remotePreserveReusable()을 추가했습니다.Tokenizer는 이제 해결된 카탈로그 Model에서 생성됩니다.createCompactionSummaryMessage는 (summary, tokensBefore, timestamp) 이후의 옵션 객체를 사용하며, CompactionSummaryMessage는 선택적 method와 tokensAfter 표시 메타데이터를 얻었습니다.context_length, max_output_tokens, input_modalities 등)를 추가했습니다.anyOf/oneOf)를 검증할 때 손실성 변환(객체 문자열화 또는 인식되지 않은 키 제거 등)을 적용하는 도구 인자 수정을 수정하여 손상된 도구 호출 및 서브에이전트 페이로드를 방지했습니다.chat_template_kwargs.reasoning_effort를 거부하는 로컬 OpenAI 호환 추론 서버와 통신할 때 발생하는 400 오류를 수정했습니다. reasoning effort 파라미터 폴백 및 호환성 처리를 개선했습니다.tool_choice: "auto"를 생략하여 제공자가 사고를 계속 활성화하도록 했으며, 강제 선택자와 "none" 선택자는 여전히 우선순위를 갖습니다 (#1207).tokenizer 패밀리 필드를 포함하도록 했습니다(Claude, Qwen, DeepSeek, Kimi, GLM 패밀리 지원). 모델 구성에서 명시적 재정의도 지원합니다.cost.longContext)을 추가했습니다. 272K 입력 토큰 이상의 자사 API 가격과 일치합니다.opencode-go/muse-spark-1.2 및 관련 변형에 대한 도구 호출 턴 실패를 수정했습니다. API 전송이 라이브 발견에 적용되고 게이트웨이 우선 OpenCode 모델에 대한 응답 경로가 자동으로 추론되도록 보장했습니다 (#8957)./cleanse(및 omp cleanse) — 세션 내에서 검사/수정 루프를 실행합니다. 실행 중인 검사기, 수정 서브에이전트, 토큰/비용 합계의 라이브 상태 보드가 표시됩니다.omp ps — 데몬 감시 배경 프로세스를 위한 대화형 모니터입니다.composer.shape는 에디터 프레임(둥근 상자, Claude Code 규칙, upstream-pi 규칙, 테두리 없음)을 선택하며, /settings 및 설정 마법사에서 라이브 미리보기를 제공합니다.statusLine.contextLine 게이지(percentage, annotated, embedded)는 컨텍스트 사용량과 압축 경계를 표시합니다.eval 셀은 bash처럼 비동기로 실행되고 자동 배경화될 수 있으며, 구성 가능한 임계값을 갖습니다.extendedContext 설정 — 프리미엄 장기 컨텍스트 가격(Codex 클래스 모델의 272K/1M 계층)이 있는 모델이 확장 윈도우를 사용할지, 아니면 조기에 압축하여 표준 가격으로 유지할지 선택합니다./extended-context — 세션을 떠나지 않고 프리미엄 장기 컨텍스트 윈도우를 전환합니다.compaction.asyncEnabled를 사용하면 모든 압축 모드가 세션이 계속되는 동안 병렬로 압축한 후 결과를 즉시 병합합니다.modelOverrides의 tokenizer 속성으로 프록시 모델의 토크나이저 패밀리를 고정할 수 있습니다.models.yml compat의 qwenTemplateReasoningEffort로 엄격한 로컬 서버에 대해 Qwen 3.8+ reasoning-effort 템플릿 파라미터를 비활성화합니다./settings의 목록 값 에디터에 대한 클릭하여 전환 및 드래그하여 재정렬 기능을 추가했습니다.icon.subscription 및 icon.advisor 심볼 테마 토큰(Nerd Font, Unicode, ASCII)을 추가했습니다.remote-compacted, soft-compacted, handed-off, snap-compacted). 압축 전후 컨텍스트 크기를 표시합니다(예: 256K→20K)./handoff(및 자동 인수인계 압축)는 이제 제자리에서 압축하여 새 세션을 분기하는 대신 세션 컨텍스트를 교체합니다.compaction.methodOrder는 정렬된 선호도 목록을 사용합니다(예: [remote, snap]은 OpenAI와 같은 제공자가 지원하는 원격 압축을 사용하고 다른 곳에서는 snap을 사용). compaction.strategy/compaction.remoteEnabled를 대체합니다./cleanse)를 하나의 제목 있는 둥근 상자 패널 스타일로 통합했습니다./settings 행의 위험 배지 및 경고를 추가했습니다. 외부 사고로 시작합니다./models는 활성 모델을 변경하고 역할을 max로 표시하는 대신 task 같은 기본이 아닌 역할에서 auto 사고를 유지합니다.yield 구조화된 결과는 더 이상 손실성 인자 수정으로 인해 손상되지 않습니다. 약한 호출자를 위한 프롬프트 지원이 개선되었습니다.file_read는 이미지/바이너리 파일에 대해 적절한 이미지 블록 및 직접 보기 URL을 반환합니다.top 내장은 -pid 및 -stats 같은 단일 대시 macOS 플래그를 허용합니다.timeout, diff, find, date, tail, head, rg, stat, truncate, cksum, sleep, which, nohup, kill)를 통한 GNU/BSD 호환성 점검입니다.#[napi] 또는 @Injectable())를 에코하는 한 줄 교체로 인해 주석이 자동으로 중복될 수 있는 문제를 수정했습니다.ClaudeV3, ClaudeV47, ClaudeV5)에 대한 오프라인 countTokens 지원을 추가했습니다. ctok의 고성능 네이티브 포트를 사용합니다.nodeChainAt 네이티브 API를 추가했습니다.grep, rg, sed, cat, head, tail, jq, ls 등)를 개선했습니다. 파이프, 터미널, 라이브 TUI 출력을 위한 대상 인식 라인 버퍼링으로 출력을 점진적으로 스트리밍하면서, 파일 쓰기에 대한 블록 버퍼링을 유지합니다.{ ...; }, (...)) 및 셸 함수 파이프라인 단계를 다른 파이프라인 단계와 함께 동시 실행되도록 업데이트했습니다. 헤드 오브 라인 블로킹과 파이프 버퍼 교착 상태를 방지합니다.bun test 실행에서 실패 세부 정보를 제거하는 문제를 수정했습니다. (fail) 라인, 코드 프레임, error: 어설션, 스택 트레이스를 유지합니다. 인식되지 않은 실패 테스트 형식은 이제 횟수 전용 출력 대신 헤드/테일로 폴백합니다.ComposerStyle 객체 및 getComposerStyle을 통해 Composer 테두리 스타일(box, claude, pi, borderless)을 추가했습니다. 에디터 및 미리보기 전체에서 UI 크롬 기하학 및 렌더링을 통합합니다.Full Changelog: v17.3.8...v17.4.0