shake 압축 프리미티브(collectShakeRegions, applyShakeRegion, applyShakeRegions, summarizeShakeRegions, DEFAULT_SHAKE_CONFIG, AGGRESSIVE_SHAKE_CONFIG 및 ShakeRegion/ShakeConfig/ShakeSummaryItem/ShakeSummaryComplete/ProtectedToolMatcher 타입)를 @oh-my-pi/pi-agent-core/compaction 아래에 추가했습니다. 이는 무거운 컨텍스트 영역(전체 도구 호출 결과 및 큰 펜스/XML 블록)을 감지하고 자리표시자로 생략하거나 주입된 완성 백엔드를 통해 추출적으로 압축합니다(LLM 요약 컷포인트 없음). 압축기는 제공자에 구속되지 않으며, 호출자가 이를 로컬 온디바이스 모델에 연결합니다. 순수 감지/변이; I/O 없음.read에 대한 도구 출력 가지치기 및 shake 보호를 수정했습니다: 일반 파일/URL 읽기는 이제 압축에 적합하며, path가 skill://로 시작하는 read 호출은 네이티브 skill 결과처럼 보호됩니다.response.output_item.done을 통한 최종화는 이제 권위 있는 전체 인수를 지속된 어시스턴트 메시지 블록에 다시 작성하므로, 후행 response.function_call_arguments.done 없이 최종화된 도구 호출은 더 이상 오래된/빈({}) 인수를 유지하지 않습니다. (#1507)+1.5k 및 +2m과 같은 예산을 활성화하여 소수 및 k/m 접미사 턴 예산 지시문에 대한 지원을 추가했습니다.+Nk 지시문을 우선하도록 eval 예산 해석을 변경했습니다.agent() eval 옵션 agent_type/agentType, model, context, label을 추가했으며, JS 및 Python eval 셀에서 schema가 제공될 때 구조화된 JSON을 반환합니다.agent() 호출을 위한 라이브 Task-도구 스타일 진행률 트리를 추가했습니다(노트북(코드 셀) 상자 아래 그려짐). 각 서브에이전트는 상태 라인(아이콘 · id · 도구 수 · 컨텍스트 · 비용, 완료 시 지속 시간)으로 표시되며 실행 중 현재 도구/의도를 표시하고 셀의 최종 결과가 아닌 실행 중 업데이트됩니다. 진행률 이벤트는 서브에이전트 id별로 병합되어 지속된 이벤트 목록이 많은 스로틀된 틱에 걸쳐 제한됩니다.agent()를 추가했습니다. JS eval은 서브에이전트 호출 오케스트레이션을 위해 제한된 parallel() 및 pipeline() 헬퍼도 얻었습니다.workflow 매직 키워드(미러 orchestrate/ultrathink)를 추가했습니다: 독립 단어는 에디터에서 황색→녹색으로 빛나며 모델이 eval(agent/parallel/pipeline)에서 결정론적 다중 서브에이전트 팬아웃을 작성하도록 안내하는 숨겨진 공지를 추가합니다. 일치는 공백으로 구분되며 대소문자를 구분합니다(소문자만). 단수 및 복수 모두 트리거되지만, 대문자 형식, workflowed 같은 변형, workflow.ts 같은 경로 내장 발생은 트리거되지 않습니다.eval 런타임에 parallel() 및 pipeline()을 추가했습니다(동기식 agent() 브리지 위의 스레드 풀), JS 헬퍼를 미러링합니다: 제한된 풀(기본값 4, 최대 16), 입력 순서 보존, 모든 pipeline 단계 사이의 배리어, agent()이 워커 스레드 내에서 작동하도록 하는 contextvar 전파.log(), phase() 및 budget 객체를 두 eval 런타임(Python 및 JS)에 추가했습니다. log/phase는 진행률/단계 상태 라인을 방출합니다. budget.total/budget.spent()/budget.remaining()/budget.hard는 실제 턴당 출력 토큰 예산을 노출합니다. 사용자 메시지의 +Nk 지시문은 권고 예산을 설정합니다(모델은 budget.remaining()을 통해 자체 제한). +Nk!(또는 활성 Goal Mode 예산)는 도달 시 추가 eval agent() 생성을 차단하는 하드 상한값으로 만듭니다. budget.spent()는 주 루프 및 모든 eval 생성 서브에이전트에서 이번 턴에 지출된 출력 토큰을 집계합니다.omp:// 루트 포함)에 대한 검색 지원을 추가했으며, 파일 시스템 경로와 함께 메모리 내 내부 리소스를 검색 대상으로 해석 및 스캔합니다.search는 omp://가 지정되었을 때 여러 내부 문서와 일치할 수 있습니다.~/.omp/agent/rules에 저장하고, 라이브로 등록하는 /omfg <complaint> 슬래시 명령을 추가했습니다./shake 슬래시 명령과 shake / shake-summary 압축 전략을 추가했습니다. 이는 LLM 요약 대신 기계적으로 무거운 콘텐츠를 떨어뜨려 컨텍스트를 줄입니다. /shake(별칭 /shake elide)는 무거운 도구 호출 결과와 큰 펜스/XML 블록을 제거하고, 원본을 세션 아티팩트로 오프로드하고, 복구 가능한 artifact://<id> 자리표시자를 남깁니다. /shake summary는 로컬 온디바이스 모델(providers.shakeSummaryModel, 기본값 qwen3-1.7b)로 동일한 영역을 압축하고 모델을 사용할 수 없을 때 지역별로 생략으로 폴백합니다. /shake images는 이미지 블록을 제거합니다. 자동 유지 관리는 shake / shake-summary 전략(16k 보호 윈도우)을 준수합니다. 컨텍스트 오버플로우 시 아무것도 회수하지 않는 shake는 컨텍스트 전체 요약으로 폴백합니다./shake summary 및 shake-summary 압축 전략에서 사용되는 로컬 온디바이스 모델을 선택하는 providers.shakeSummaryModel 설정을 추가했습니다. 온디바이스에서 완전히 실행되며(첫 사용 시 다운로드) 원격/클라우드 LLM을 호출하지 않습니다.timeout을 하드 벽시계 마감에서 비활동(유휴) 예산으로 변경했습니다: 셀은 이제 전체 윈도우가 진행률 신호 없이 지나간 후에만 중단되며, 모든 상태 이벤트(예: agent() 진행률 스냅샷, log()/phase(), 도구 브리지 활동)는 워치독을 다시 시작합니다. 진행률을 계속 보고하는 긴 agent()/parallel() 팬아웃은 더 이상 실행 중 타임아웃되지 않습니다(이전에는 서브에이전트가 활발히 진행 중일 때도 커널이 고정 마감에서 종료됨). 원시 print/stdout은 워치독을 재설정하지 않으므로 순수 계산 폭주 루프는 제한됩니다. 타임아웃은 전적으로 중단 신호에 의해 구동되므로 런타임은 경쟁하는 고정 타이머를 시작하지 않습니다.+Nk 지시문을 일치하도록 턴 예산 파싱을 수정했으므로, version 1.2.3, c++, +500kfoo 같은 값은 더 이상 예산 규칙을 트리거하지 않습니다.?가 /hotkeys를 열기 대신 리터럴 물음표를 삽입하도록 했습니다. 단축키 참조를 위해 /hotkeys를 명시적으로 사용하세요.search 출력을 변경하여 그룹화된 결과 및 details.files에서 전체 가상 및 내부 URL 경로를 보존하도록 하여 파일 기본 이름으로 축소하지 않도록 했습니다./omfg를 변경하여 최대 3번의 생성 시도와 검증 피드백을 실행하고 초안이 어시스턴트 기록과 일치하지 않을 때만 저장을 요청하도록 했습니다./omfg를 변경하여 생성/검증/저장 상태가 있는 라이브 초안 패널을 표시하고 Esc로 활성 규칙 요청을 취소하도록 했습니다.~/.omp/agent/keybindings.yml을 사용하도록 했으며, 레거시 keybindings.json에서 자동 마이그레이션하고 keybindings.yaml 계속 지원합니다.mnemosyne에서 mnemopi로 변경했습니다. 기존 설정은 로드 시 자동으로 마이그레이션됩니다: memory.backend: mnemosyne은 mnemopi가 되고 mnemosyne.* 설정 블록은 mnemopi.*로 이름이 변경됩니다(명시적 mnemopi 블록이 이미 존재할 때는 건너뜀).ultrathink/orchestrate/workflow 매직 키워드를 변경하여 마크다운을 인식하도록 했습니다: 독립 단어는 이제 렌더링된 사용자 메시지 버블에서도 빛나며(라이브 에디터와 일치), 글로우나 숨겨진 스티어링 공지는 키워드가 펜스 코드 블록, 인라인 `code` 스팬 또는 XML/HTML 섹션 내부에 있을 때 트리거되지 않습니다./drop-images 슬래시 명령을 제거했습니다. 동일한 dropImages() 경로를 통해 세션에서 모든 이미지를 제거하는 /shake images를 사용하세요.agent() 완료 상태 방출을 수정했으므로 마지막 라이브 진행률 스냅샷이 도구 수 및 비용과 같은 누적된 서브에이전트 메트릭을 보존하도록 했습니다.agent()를 수정하여 서브에이전트를 시작하기 전에 계획 모드, 생성 허용 목록, 비활성 에이전트 확인을 시행하도록 했습니다.agent() 호출을 수정했습니다.--model, /model, 모델 선택기 선택, 프로그래밍 변경)을 수정하여 더 이상 지속된 modelRoles.default를 덮어쓰지 않도록 했습니다. 모델 선택기의 명시적 "기본값으로 설정" 작업 및 설정 변경만 기본값을 지속합니다.search를 수정하여 가상 내부 URL 대상에서 라인 범위 접미사를 준수하도록 했으므로 요청된 범위 외부의 일치가 더 이상 반환되지 않습니다.search를 수정하여 소스 파일 없는 내부 URL을 처리하도록 했으므로 Path not found를 잘못 보고하지 않고 가상 콘텐츠에서 일치를 반환합니다./omfg 파싱을 수정하여 펜스 또는 노이즈가 많은 모델 출력을 허용하고, 생성된 규칙 이름을 정규화하고, 저장하기 전에 유효하지 않은 regex 조건을 거부하도록 했습니다.auto로 돌아가는 대신 해당 수준을 복원합니다.--spawn-peer <value>)가 초기 프롬프트로 누출되는 것을 수정했습니다: 확장 플래그 세트가 알려지면 argv가 다시 파싱되어 플래그 값이 메시지 또는 @file 인수로 변환되지 않고 소비됩니다. 등록된 플래그는 동일하게 명명된 기본 제공 플래그를 숨기므로, 충돌하는 플래그(예: 계획 모드의 --plan)는 기본 제공 플래그의 의미 대신 확장의 의미로 파싱됩니다(그렇지 않으면 다음 메시지를 소비하고 기본 제공 필드를 손상시킬 수 있음). 확장 플래그 및 @file 인수는 세션이 생성되기 전에 해석되므로, 읽을 수 없는 초기 @file은 정크 세션/터미널 흔적을 남기지 않고 종료됩니다. (#1503)truncateToWidth 통해) 모든 VT/ANSI 이스케이프를 제거합니다(stripVTControlCharacters 통해) SGR 전용 regex 및 코드 포인트 substring 대신, 따라서 넓은 글리프, OSC 하이퍼링크, 비 SGR 시퀀스는 더 이상 라인을 오버플로우할 수 없습니다.setEagerNativeScrollbackRebuild)에 TUI의 즉시 네이티브 스크롤백 재구성을 활성화하므로 화면 밖 재렌더링이 깔끔하게 히스토리를 재구성합니다(꼬리로의 스냅은 도구 중간에 수용 가능). 배경 실행 도구 및 일반 어시스턴트 텍스트 스트리밍은 비 얀크 지연을 유지합니다. 모드는 각 턴 시작에 재설정됩니다.Float32Array 벡터를 반환하도록 했으므로 embed 및 embedQuery는 이제 float32 행을 캐시하고 방출합니다.unknown 대신 단일 타입 EmbeddingOutput(AsyncIterable<number[][]>)으로 변경했습니다(fastembed의 embed()와 일치하도록). 따라서 EmbeddingProvider.embed와 provider 런타임 옵션은 비동기 배치로 임베딩 행렬을 스트림합니다(async *embed(texts) { yield texts.map(embedOne); }).fastembed에 대한 로컬 모델 캐시 디렉토리 해석을 변경하여 하드코딩된 ~/.hermes/cache/fastembed 경로 대신 getFastembedCacheDir을 사용하도록 했습니다.omp 바이너리가 fastembed 및 onnxruntime-node를 Bun의 정적 컴파일러에 도달할 수 있게 유지하면서 지연 런타임 로드를 보존하여 로컬 Mnemopi 임베딩을 잃는 것을 수정했습니다.SelectListLayoutOptions에 overflowSearch를 추가했습니다.SelectList 선택기에 퍼지 유형 필터 검색을 추가했으며, 검색 상태 및 결과 개수가 포함됩니다.TUI.setEagerNativeScrollbackRebuild(enabled) — 활성화되면 라이브 렌더 프레임은 뷰포트 위치를 관찰할 수 없을 때도(POSIX) 화면 밖/구조적 변경 시 네이티브 스크롤백을 재구성합니다(비파괴적 리페인트 지연 대신). 안티 얀크 보장과 깔끔한 중복 없는 히스토리를 절충합니다. 위 영역이 활발히 다시 레이아웃되는 윈도우용입니다(예: 결과가 계속 스트리밍되는 도구). 알려진 스크롤된 뷰포트를 보고하는 터미널은 여전히 연기합니다.SelectList에 대한 대화형 검색 필터링을 비활성화했습니다. 레이아웃 옵션에 overflowSearch: false를 전달하여 비활성화했습니다.분량 관계로 이후 내용은 번역에서 제외했습니다. 전체 내용은 위 원문 링크에서 확인하세요.