OpenCode의 agent-browser 프로바이더 및 내장 스킬이 제거되었습니다.
browser_automation_engine.provider: "agent-browser"를 포함하는 설정은 이제
스키마 검증에 실패합니다. oh-my-opencode doctor는 거부된 값을 보고하고
"use the built-in browser path: Bun.WebView / playwright-core scripts"라고 표시합니다.
프로젝트 및 프로필 레이어를 포함하여 활성 [opencode] 블록에서 오래된 오버라이드를 제거하세요. 브라우저 작업은 in-process Bun.WebView
또는 로컬 Chrome에 대한 playwright-core 스크립트를 사용합니다. 이러한 스크립트 경로는
새로운 프로바이더 enum 값이 아닙니다. 유지되는 프로바이더 선택 항목은
playwright, dev-browser, 및 playwright-cli입니다.
동시 질문 큐 대신 서로 덮어쓰지 않음. 두 개의 비동기 질문이 경쟁하던 것이 두 번째가 첫 번째를 대체했지만 이제 큐에 대기합니다. 위젯은 +N more를 표시하고, alt+down은 빈 작성기에서 순환하며, 각 요청은 자신의 초안과 자신의 유휴 마감 시간을 유지합니다. 답변도 더 빨라졌습니다 — 빈 작성기의 숫자가 표시된 질문에 답변하고, 단일 선택 질문이 해당 숫자로 제출되며, /answer는 특정 요청을 나열하거나 열고, 입력한 텍스트는 ↳ reply to <header> 레이블이 있는 하나의 요청에 바인딩됩니다. 답변되었거나, 댓글이 달렸거나, 무시되었거나, 시간이 초과된 질문은 클릭하여 확장할 수 있는 ↳ <header>: <answer> 칩으로 축소됩니다.
질문이 자신을 발표합니다. 질문이 대기 중일 때 ? <header> 레이어가 터미널 제목으로 들어가고, 일회성 벨이 울리며(askUser.bell, 기본값 활성화), ask-user:asked 버스 이벤트 및 일치하는 ask-user-asked Notification 훅이 발동되고, herdr:blocked는 활성/비활성 쌍을 얻습니다. 재연결 재생 및 수화는 조용합니다.
번들된 리소스는 자신의 출처 범위를 가집니다. 내장 및 번들된 확장은 모든 런타임에서 system 범위로 확인되고, resources_discover는 { path, scope } 항목을 수락하며, "pi": { "system": true }를 선언하는 명령줄 패키지는 CLI 우선 순위를 통해 해당 범위를 유지합니다. 간결한 시작 배너는 [Skills], [Extensions], [Prompts] 및 [Themes]에서 시스템 리소스를 제외하므로 표시되는 것은 추가한 것입니다. Ctrl+O 또는 --verbose는 프로젝트, 사용자 및 경로 그룹 뒤의 system 그룹을 표시합니다.
확장 저자용. ctx.steeringSignal은 도구 실행 중에 읽을 수 있으므로 확장은 작업을 취소하거나 메시지를 소비하지 않고 대기 중인 조종 신호를 알 수 있습니다. PI_SESSION_CWD 및 PI_GOAL_STORE_FILE은 커널 및 셸 자식에 도달하며, 상속된 오래된 값이 삭제됩니다. @code-yeongyu/senpi/bun-runtime은 독립 실행형 Bun 소비자를 위해 프로바이더 및 OAuth를 동기적으로, 격리 당 한 번씩 등록합니다.
grep은 실제 검색 엔진이 다시 되었습니다. 네이티브 senpi-grep 애드온은 순서 있는 병렬 처리, 제한된 읽기 및 취소를 사용하여 트리를 탐색합니다. ripgrep은 폴백으로 남아있으며, SENPI_GREP_ENGINE=auto|native|rg는 두 엔진 중에서 선택합니다. mode는 content, count 또는 files을 선택하고, limit 및 skip은 파일에 대해 페이지를 나누며, path는 파일, 디렉토리, 배열 또는 <file>:L1-L2 선택자를 받고, glob은 ! 제외를 수락합니다. 모든 결과는 [grep: matches=2 files=2 searched=42 elapsedMs=8 engine=native nextSkip=none] 바닥글로 끝나고 구조화된 일치 및 페이지 매김이 있는 details v1을 포함하며, TUI, HTML 내보내기 및 eval 위젯은 파일 아래에서 일치를 그룹화합니다.
tool_search가 더 이상 왕복을 비용으로 들이지 않았습니다. 이제 부작용이 없습니다. 매개변수 스키마가 있는 최대 5개의 일치하는 지연된 도구를 나열하고 아무것도 활성화하지 않으므로 "NEXT 차례에서 호출 가능" 대기가 없어졌고 도구 이름을 지정하면 첫 번째 호출에서 활성화됩니다. 결과는 쿼리 용어 적용 범위 및 상대 점수 한계에 의해 제어되므로 부수적인 단어 일치가 더 이상 관련 없는 도구를 끌어오지 않으며, bash 또는 monitor 이름을 지정하는 쿼리는 "No tools matched" 대신 해당 도구의 리디렉션 힌트로 응답합니다. generate_image는 같은 문을 뒤로 이동했고 더 이상 모든 요청에 대략 1K 토큰 스키마를 배송하지 않습니다.
배경 프로세스는 그들을 시작한 세션과 함께 죽습니다. bash 도구는 마지막 자식이 종료될 때까지 명령의 프로세스 그룹을 소유하므로 sleep 30 & 또는 nohup server &는 고아로 남겨지는 대신 종료 정리에 의해 종료됩니다. Eval 셀은 생성한 것에 대해 동일한 작업을 수행합니다. JavaScript 셀이 정착하거나, 중단되거나, 시간 초과될 때, 자식 및 그 자식들은 SIGTERM을 받고 셀이 분리된 프로세스를 요청하지 않는 한 유예 후 SIGKILL을 받습니다. Python 커널은 종료 시 프로세스 그룹을 정리하고, 부모 사망 감시자는 커널을 호스트와 함께 종료합니다. 내부적으로 PTY 레이어는 세션 중지, 레지스트리 정리 및 분리된 정리에서 무시된 SIGTERM을 SIGKILL로 상향 조정합니다.
보류 중인 질문은 tmux 내부를 포함하여 클릭 가능합니다. 옵션을 클릭하여 답변하고, 자신의 것을 입력하며, 요청 사이를 순환하거나, 질문 탭을 확장하고, 일반 및 전체 화면 모드 모두에서 수행합니다. 새 terminal.mouse 설정은 기본값으로 whilePending이므로 마우스는 질문이 대기 중일 때만 캡처됩니다. off는 캡처를 비활성화하고 always는 활성 상태를 유지합니다. tmux의 짧은 시작 질문 블록은 개인 커서 쿼리가 돌아오지 않아 클릭을 삼켰지만, 프레임은 이제 두 개의 안정적인 창 커서 판독에서 보정되고 750ms로 제한됩니다.
senpi는 herdr에 자신의 상태를 보고합니다. 내장 리포터는 질문이나 호스트 대화가 대기 중일 때 창을 질문의 레이블로 차단된 것으로 표시하고, 차례, 부에이전트 및 모니터 중에 작동 상태를 유지하며, 정착 시 유휴 상태를 복원합니다. herdr의 관리되는 통합과 공존하고 사용자 저작 herdr-* 리포터를 위해 물러섭니다.
webfetch가 브라우저 에뮬레이터를 버렸습니다. LinkeDOM이 jsdom을 불활성 HTML 변환으로 대체하여 판독기 출력과 생략된 문서 태그를 그대로 유지하고, 최종 응답 URL에 대해 상대 기사 링크 및 이미지를 확인하며, CSS 및 XHR 컴파일 자산을 폐기합니다(이전 파서에만 배송됨).
컴파일된 바이너리는 TypeScript 확장을 기본적으로 로드합니다. jiti는 더 이상 Bun 바이너리에 포함되지 않습니다. 확장은 네이티브 런타임 모듈을 통해 로드되므로 호스트 모듈 ID가 유지되고 새로 고침에서 새로운 종속성 그래프를 얻습니다. 계산된 임포트 및 요구는 생성을 공유하고, 사용되지 않은 그래프는 회수할 수 있으며, 네이티브 데이터 임포트는 Bun의 로더를 유지하고, 파서 오류는 원본 위치를 유지합니다. Node 런타임은 jiti 옵션을 유지합니다.
Devin 레인은 아무것도 하지 않은 사고 수준을 제공하는 것을 중단했습니다. Cascade의 채팅 프로토콜에는 요청 측 사고 필드가 없으며, SWE-2 노력은 레인 uid로 선택되므로 /efforts 및 /reasoning 선택자와 바닥글 사고 접미사는 아무것도 하지 않은 제어였습니다. 스트리밍된 사고 출력은 여전히 렌더링됩니다. 레인을 선택하는 것이 유일한 노력 제어입니다.
더 작은 TUI 수정. 다중 선택 옵션에서 Enter 키를 눌러 옵션 1을 포함하여 해당 선택을 토글하고 자동으로 건너뛰지 않습니다. 맨 /btw는 패널을 해제하거나 비행 중인 부 쿼리를 취소하며, Escape는 kitty 키보드 프로토콜에서 이에 도달합니다. /btw는 더 이상 질문을 두 번 표시하지 않습니다. 모든 Tip: 줄은 그 위에 빈 줄을 얻으므로 그 이전 블록의 일부로 읽기를 멈춥니다.
발행은 잠금 파일이 말하는 것을 준비합니다. 압축된 tarball은 이제 개발자의 패키지 관리자가 node_modules에 한 것이 무엇이든 publish-deps.lock.json을 반영합니다. 중첩된 매니페스트 항목은 버전 일치 복사본의 매니페스트 경로에서 준비되고, npm의 작업 영역-로컬 배치는 최상위 슬롯을 유지하며, 매니페스트가 더 이상 나열하지 않는 패키지는 제거됩니다. bun-hoisted 설치에서 준비된 tarball은 구식 entities@8 옆에 htmlparser2@10을 배송했으며, 엔진을 컴파일하면 No matching export ... for import "fromCodePoint"에서 실패했습니다.
RPC 세션 종료는 이제 정렬되었습니다. close_session 승인 및 session_closed 이벤트(워커 실패 터미널 포함)는 세션 레지스트리가 항목을 삭제한 후에만 나갑니다. 직후 list_sessions이 발행되면 닫힌 세션을 반환하지 않습니다. 파일 시스템 감시자는 종료와 함께 취소되고, 모든 disposer는 프로세스 종료 전에 조인되며, 재진입 종료는 해당 조인을 공유하고 실패 종료 코드를 유지하고, 비지속적 RPC 프로브는 감시자를 시작하지 않습니다.
RPC 호스트 감시자는 더 이상 ps를 생성하지 않습니다. ppid 폴백은 감시자가 살아있는 동안 250ms마다 ps -o lstart=를 실행했으며, 오래된 공유 호스트는 수천 개의 ps 자식을 쌓아올렸고, 그들을 수집하지 못하는 런타임의 좀비입니다. 죽은 감시자는 자신의 부모에 의해 수집되고 호스트는 재부모화되므로, 자유 kill(pid, 0) 더하기 ppid 비교는 자식 프로세스 없이 손실을 볼 수 있습니다.
일시 중지된 모니터는 비용이 없습니다. 일시 중지된 파일 감시는 250ms 폴 타이머를 완전히 지워서, stat 또는 SHA-256 다이제스트 작업 없이, 그리고 재개는 일시 중지 중에 수행한 변경이 여전히 발동하도록 하는 즉시 확인을 실행합니다. 세션 출력 라인 버퍼는 64KiB로 제한되므로 줄 바꿈이 없는 스트림은 더 이상 모니터의 보유된 꼬리를 제한 없이 증가시킬 수 없습니다.
Eval 셀은 긴 세션에서 메모리를 독점하는 것을 멈춥니다. 정착한 분리된 셀은 라이브 레지스트리를 32항목 스냅숏 저장소로 남기고, 여기서 peek, stop 및 최근 셀에 대한 터미널 상태 대기는 여전히 작동합니다. JS 커널의 소비되지 않은 도구 호출 큐는 256으로 제한되고 중단, 재설정, 종료 및 충돌에서 지워집니다(하위 프로세스 커널도 이미 그렇게 했습니다). 셀당 디스플레이 버퍼는 8개 이미지, 24MB 및 64개 JSON 출력으로 제한되며 생략 메모가 있습니다. 분리되고 완료된 eval 카드는 정적으로 렌더링되고 고정된 경과 시간을 표시하며, 라이브 티커는 행 렌더링이 중지되면 60개의 유휴 틱 후에 중지되고 다음 렌더에서 다시 무장되므로 성적표 재구성 및 세션 전환은 더 이상 간격을 쌓아올리지 않습니다.
독립 실행형 바이너리는 codemode를 한 번 배송합니다. 컴파일된 바이너리는 두 번째 포함된 복사본 대신 준비된 온디스크 패키지에서 codemode를 로드합니다. 사이드카는 JS 파서 종속성을 포함하고 bun-1-4 스킬을 유지합니다.
다중 일 세션은 상태 티커에서 더 이상 고정되지 않습니다. 작업 중/재시도 애니메이션 케이던스를 결정하는 것이 모든 틱에서 전체 세션 파일을 재파싱했으며, 이는 긴, 압축 정리 세션에서 UI를 주기적으로 고정했습니다. 이제 항목이 도착할 때 SessionManager가 유지하는 O(1) 항목 수를 읽습니다.
Cursor CLI OAuth는 더 이상 모든 시작에서 프로브하지 않습니다. 시작 cursor-agent models 프로브는 레인이 사용 가능할 때만(비활성화되지 않음, cursor-agent 설치됨, 계정 바운드) 그 계정의 HOME 내부에서만 실행되며, 모든 cursor-agent 생성은 상속된 process.env 대신 동일한 명시적 환경 허용 목록을 얻습니다. 따라서 밀폐된 또는 SSH 시작 세션은 CLI의 macOS 키체인 사전 점검을 절대 트립하지 않으며, 이는 이전에 콘솔에서 차단 "Keychain Not Found" 대화로 표면화되었습니다.
omo.dev는 에이전트 하네스가 무엇인지 이미 알지 못하는 사람들을 위해 재구축되었습니다. 이 사이트는 OmO 브랜드, 하나의 설치 경로, 영어 및 한국어의 2026-09-14 선언문을 포함하며, 연구-투-데크 시나리오에서 나란히 실행되는 Kibitzer 루프와 메인 루프를 보여주는 랜딩 페이지가 있습니다. Open Graph 카드는 라이브 GitHub 별 개수가 있는 Figma 브랜드 파일에서 렌더링됩니다. 다운로드 통계는 이제 모두 또는 아무것도 아니며 omo-ai를 계산하므로 부분 레지스트리 응답은 더 이상 조용히 너무 낮은 숫자를 발행하지 않습니다. Lark는 메시징 플랫폼에 조인하고, 아직 배송되지 않은 것들은 그렇게 말하며, 한국어 복사본은 한국 독자가 있을 줄에서 줄을 끊습니다.
주식 시작의 25,048 프롬프트 토큰 중 16,497개는 도구 스키마였습니다. 거의 아무도 호출하지 않는 것들은 이제 검색 노출로 등록하고 모델이 이름을 지을 때 활성화됩니다. team_create 및 team_delete (951 토큰), 세 개의 ast-grep MCP 도구 (2,029), mcp_grep_app_searchGitHub (713), 두 개의 context7 도구 (1,006) 및 omo_agent_toolkit (851). 30일 샘플에서 각각은 세션의 0.1%에서 1.6% 사이에 나타납니다. 그들을 필요로 하는 스킬은 그들을 이름 지으므로, ast-grep 스킬은 세 개의 MCP 도구를 이름 지으며, ulw-loop 스킬은 omo_agent_toolkit을 이름 짓고, team_*은 ulw 및 hyperplan 스킬에서 이름 지어집니다.
메모리 공지는 더 이상 존재하지 않는 도구를 찾는 모델을 보내지 않습니다. 이전에는 이전 메시지가 "회수 메모리에 저장된다"고 말했으며, 샘플된 90개의 tool_search 호출 중 33개가 그 표현이 암시한 회수 도구를 찾고 있었습니다. 회수는 수동적입니다 — Kibitzer는 자체적으로 <recalled-memory>를 주입합니다 — 따라서 공지는 이제 관련 메모리가 자동으로 도착하고 호출할 것이 없다고 말합니다.
에이전트는 자기 인식 블록을 유지합니다. system/self-aware.md는 반영-소유 자기 관찰의 반영 블록으로 시드되며, 페르소나 옆에 투영되고 영혼으로 병합되지 않습니다. 그것은 반영이 작성하는 것이지 세션의 것이 아닙니다.
system/boundaries.md는 당신의 것입니다. 사용자 소유의 영혼 블록입니다. 당신이 실제로 하지 말아야 할 것에 대해 말한 것만 그것에 들어가고, 당신이 말한 대로 인용됩니다. 페르소나는 더 이상 일반적인 system/*.md 줄을 광고하지 않습니다. 대신 경계 계약을 가리킵니다.
반영은 요약을 전달하고 서로를 먹는 것을 멈춥니다. 완료된 반영은 출처와 읽은 것에 대한 상대 링크가 있는 요약을 반환하고, 요약 읽기는 탄력적 파일 시스템 경로를 통해 진행되므로 일시적인 읽기 오류는 더 이상 전달을 삼키지 않습니다. 조정은 시작 ID 구도 불일치에 대해 라이브 반영 실행을 더 이상 종료하지 않습니다. 고아 반영 워크트리는 정소되고, 이미 도착한 반영은 정리가 실패할 때 병합된 상태로 유지됩니다.
유휴 자식은 제거되지 않고 주차됩니다. 유휴 상태로 전환된 거주자는 메시지가 도착할 때 일시 중지되고 재개되어 아무것도 없이 버려지고 재구성되는 대신입니다. 유휴 공원 보유는 구성 가능하고, 팀 생생함이 공원을 생존하며, 승인이 지속되지 않은 배치는 유지됩니다.
ulw-loop 계획 저장소는 충돌한 기록기를 생존합니다. .state.lock은 잠금 소유자가 없는 잠금 대기 대신 리스로 재요청되고, 계획 및 감사 상태는 불변 커밋 로그에 도착하며, 잘못된 레거시 계획은 강제 재생성될 수 있고, 널로 정규화되는 세션 ID는 문에서 거부됩니다.
브라우저 레인은 Playwright 및 eval 커널입니다. agent-browser 및 npx playwright 지침은 배송된 스킬에서 제거되었습니다. 로컬 Chrome 템플릿은 playwright-core를 사용하고, WebView 예제는 eval 커널에서 작성된 대로 실행되며, ultimate-browsing은 ulw-research 컴패니언 스킬로 로드됩니다.
계획 컨설턴트는 Fable 5.1 max에서 실행됩니다. 계획 컨설턴트 체인은 보호된 모델 코어 미러를 가진 Fable 5.1 max로 시작하고, qwen3.7-plus는 유틸리티 런그로 조인하며, 모든 내장 OpenAI 런그는 openai-codex를 통해 라우팅됩니다.
Windows 및 RPC 강화. omo-senpi 어댑터의 Windows 호환성 경쟁은 없으며, 네이티브 RPC 표면은 불완전한 패치 대상 및 형식이 잘못된 스트림 이벤트를 거부하고, 그 직렬화 기능을 설치하는 postinstall 보호는 엔진의 새 createRpcShutdown 항목을 수용합니다(이전 보호는 2026.9.15 이후에 구축된 모든 senpi를 거부했습니다). css-tree 사이드카 삼중쌍은 엔진이 실제로 배송할 때만 임베드됩니다.
더 조용한 시작. omo-senpi는 자신을 시스템 패키지로 선언하므로 그 스킬 및 확장은 간결한 시작 배너를 남기고 확장된 보기에만 나타납니다. 메모리 저장소 스킬은 범위 항목을 수용하는 엔진에서 사용자 범위로 고정됩니다.
분량 관계로 이후 내용은 번역에서 제외했습니다. 전체 내용은 위 원문 링크에서 확인하세요.