모델 프로필을 선택하면 체인을 직접 구성할 필요가 없고, 큐레이션된 에이전트는 신화 인물이 아닌 그들의 역할로 명명되며, 네이티브 워크플로우는 세션 전환을 유지하고, Mac이 더 이상 아무것도 생성하지 못하게 만들 수 있는 프로세스 누수가 해결되었습니다. 내부 엔진은 senpi 2026.9.10-2입니다.
작업의 종류를 말하면 OMO가 모델을 선택합니다. omo.json에 model_profiles(폴백 체인의 레코드)와 model_profile(활성 프로필)이 추가되었으며, 세션 시작 시 MAIN 세션 모델을 선택하는 세 개의 기본 제공 프로필이 있습니다:
claude-fable-5-1 -> claude-opus-5 -> kimi-k3 -> glm-5.3gpt-5.6-luna-fast -> deepseek-v4-flash -> claude-haiku-4-5gpt-6-astra -> gpt-5.6-sol라이브 레지스트리가 실제로 제공할 수 있는 첫 번째 단계가 우선되며, 적용된 공지에서는 선택된 모델과 건너뛴 단계들을 명시합니다. model_profile은 리터럴 provider/model 핀도 허용하며, 고유한 프로필을 정의하거나 기본 제공 프로필을 오버라이드할 수 있습니다.
방해하지 않습니다. 기본적으로 활성 프로필이 없습니다. 프로필은 새로운 세션이나 시작 세션일 때만 세션 스코프 모델 설정자를 통해 세션 시작 시 적용되며, 절대 하네스 설정을 작성하지 않습니다. 명시적 --model, 스코프 모델, 핀된 값 또는 재개된 세션은 방해받지 않습니다. 프로필은 설정 참조와 에이전트-모델-매칭 가이드에 문서화되었으며, omo.dev는 이제 모델 스토리를 동일한 방식으로 설명합니다.
metis는 plan-consultant이고, momus는 plan-reviewer입니다. omo-senpi 런타임, 그 기능, 설정 키, 텔레메트리, 제공되는 ultrawork 지시문은 모두 역할로 표현됩니다: 주 에이전트(세션 모델), plan-consultant, plan-reviewer, explore, librarian, Ultrawork Planner 페르소나 및 카테고리 목록입니다. 문서, 다섯 개 로케일의 README 및 omo.dev는 동일한 릴리즈에서 다시 키 매핑되었습니다.
이전 ID는 정확히 한 릴리즈 동안만 작동합니다. subagent_type: "metis" | "momus", DAG 경로, 팀 멤버 사양 및 omo.json agents.metis|momus / allowed_subagents 항목은 모두 단일 별칭 모듈을 통해 정규화되며, 레거시 ID를 허용하는 모든 진입점은 이제 사용 중지 공지를 출력합니다 — 태스크 시작, DAG lint, 팀 멤버 검증 및 설정-시작 경고입니다. 정규 ID만 유지되므로 DAG 지문과 텔레메트리는 절대 이전 이름을 전달하지 않습니다. 플랜 전문 자료는 review.momus에서 review.plan_reviewer로 이동합니다. 별칭은 다음 태그된 릴리즈에서 제거되므로 지금이 아닌 나중에 설정을 업데이트하세요.
텔레메트리를 쿼리하는 경우 이는 호환성이 변경되는 경우입니다. delegation_started.name과 delegation_completed.agent_type은 새 ID를 보고하므로 metis 또는 momus를 필터링하는 대시보드는 새 이벤트와 일치하지 않습니다. 리포 게이트는 이제 관리되는 표면에 사용 중지된 이름이 다시 나타나면 CI를 실패시킵니다. OpenCode 및 Codex 에디션은 자체 에이전트 ID를 유지합니다. boulder라는 이름의 것은 변경되지 않았습니다.
공유 호스트는 더 이상 머신의 프로세스 테이블을 채우지 않습니다. 메모리 락 프로토콜은 PID 재사용을 감지하기 위해 프로세스 시작 시간의 지문을 기록하며, macOS에서는 모든 체크에서 /bin/ps를 생성하여 이를 해결했습니다 — 모든 락 레코드, 모든 리플렉션 및 팩트 예약, 모든 오래된 락 복구입니다. 오래 실행되는 공유 RPC 호스트는 이러한 자식 프로세스를 절대 회수하지 않으므로 posix_spawn이 EAGAIN으로 머신 전체에서 실패할 때까지 정의되지 않은 항목으로 누적됩니다: 한 워크스테이션이 9,750개의 좀비가 있는 10,981개의 프로세스 테이블 항목에 도달했으며, 그 중 9,386개는 ps였고 그 후 셸과 일반 도구는 더 이상 시작할 수 없었습니다. 이제 libproc이 in-process에서 값을 가져오므로 임베딩 호스트가 SIGCHLD를 처리하는 방식에 관계없이 누수할 자식이 없습니다. 죽은 PID는 포크 없는 활동성 프로브에서 먼저 거부되므로 오래된 락 복구도 더 이상 포크되지 않으며, ID는 형식화된 로컬 시간이 아닌 epoch로 기록되어 타임존 종속 불일치도 제거합니다. 이전 락 레코드는 호환성이 유지되므로 업그레이드는 활성 소유자의 락을 절대 빼앗지 않습니다.
메모리 자식은 더 이상 타인의 패키지 루트를 상속하지 않습니다. 리플렉션 및 드림 자식 프로세스는 시작 후 약 6초의 1/10 정도 후에 테마 자산에서 ENOENT로 인해 죽었으며, 상태 알림은 작동할 수 없는 힌트와 함께 모든 세션을 반복했습니다. 자식은 종종 OMO_PACKAGE_DIR / SENPI_PACKAGE_DIR / PI_PACKAGE_DIR을 내보낸 엔진과 다른 senpi 설치이며, 그 상속된 루트를 자신의 루트로 읽었습니다. 이러한 변수는 이제 해석된 런처가 실제로 그들이 명명하는 루트 내에 있지 않으면 삭제되며, 양쪽 모두 정규화되어 심볼릭 링크된 설치도 여전히 올바르게 비교되고, 필터는 리플렉션 생성 페이로드, 모델 사전 비행 프로브 및 people-ask 러너를 다룹니다. 의도적 재배치는 여전히 작동합니다. 업데이트 힌트는 다시 정직합니다: SENPI_BIN은 사전 생성 해석 실패에만 제공되며, 시작한 후 충돌한 자식은 런처가 삭제하는 변수 대신 자체 로그를 가리킵니다.
리플렉션 상태 알림은 이 세션을 설명하며 기록이 아닙니다. 세션을 공유 메모리 ID에 바인딩하면 새 세션이 아무것도 사용하지 않아도 해당 ID의 이전 실패 스트릭을 재생할 수 있었습니다. 알림은 이제 에지 트리거되며 — 실패하지 않은 완료를 사용하는 바인드는 자동 모드입니다 — 완료 레코드는 런처 출처를 포함하므로 공지는 실제로 실패한 런타임, 다를 때 현재 런타임 및 스트릭이 걸친 런타임 수를 명시합니다. 해당 메타데이터 없는 레거시 레코드는 여전히 렌더링됩니다.
Kibitzer는 더 이상 실패하지 않은 것을 실패라고 하지 않습니다. 넛지 도구를 통해서만 응답하고 자동으로 중지되는 판단자는 빈 응답 복구로 오류로 정산되었습니다. 넛지 결과는 이제 항목 한도에 도달하면 턴을 끝내고, 정산된 빈 응답 오류는 넛지가 허용되었을 때 완료로, 없었을 때 빈 것으로 계산됩니다. 실행 디렉토리 아티팩트는 입력이 아닌 감시 가능한 출력이므로 실패한 쓰기는 경고하고 세션 생성 오류로 실패하지 않고 계속됩니다. 누락된 페르소나 자산은 persona_unavailable로 보고되며 파일 이름을 명시합니다. 태스크 런타임은 페르소나와 함께 등록 시 초기화되며, 실패한 가져오기는 캐시되지 않으므로 복구된 트리는 복구됩니다.
네이티브 워크플로우는 세션 전환을 유지합니다. 세션 전환은 종료로 일시 중지할 수 있기 전에 거부 가능한 사전 전환 후크에서 활성 DAG를 취소하곤 했으며, 복구는 같은 프로세스가 보유한 명시적으로 해제된 리스까지 거부했습니다. 은퇴는 커밋된 종료로 이동하며, 이는 스케줄러 안정화를 기다린 후 일시 중지를 유지하고 자식 세션을 일시 중단합니다. 단일 샷 일시 중단은 in-flight 승인 및 저널 전달을 드레인하지만 자식 레코드를 취소하지 않습니다. 해제된 자체 리스는 활성 자체 청구 및 활성 외부 소유자가 보호된 상태로 유지되는 동안 회수될 수 있습니다. 동일한 호스트 프로세스에서 세션으로 돌아가면 실행이 재개되고, 완료된 출력이 재사용되며, 실행 중인 자식의 ID가 유지되고, 보류 중인 종속이 정확히 한 번 허용됩니다. /session을 열거나 /resume를 열고 취소하면 절대 teardown이 발생하지 않았으며 지금도 그렇지 않습니다. 명시적 워크플로우 취소는 파괴적으로 유지됩니다.
기본 제공 Claude 작업은 먼저 구독을 시도합니다. 14개의 모든 기본 제공 Claude 단계 — 9개 카테고리 단계 및 5개 기본 제공 에이전트 단계 — 이제 senpi의 Claude Pro/Max 레인을 측정된 제공자보다 먼저 나열합니다. 해당 레인에 로그인된 머신이 마켓플레이스 키도 보유하고 있으면 위임된 모든 Claude 턴에 토큰당 지불했습니다. 단계 제공자 순서가 순위이고 구독 레인이 목록에 없었기 때문입니다. 관련하여, 두 제공자가 동일한 모델 ID를 노출할 때 동점은 단계 자체의 제공자 순서로 끊어지고 더 짧은 모델 ID로 끝납니다. 제공자 이름 길이는 더 이상 결정하지 않습니다. 구독 레인 부재 시 해석은 이전과 바이트 동일합니다.
첫 프롬프트 전에 죽은 자식은 이제 이유를 말합니다. 태스크 레코드는 시작되지 않은 자식에 대해 status=error만 수행했습니다. 분류기의 세부 정보가 레코드에 도달하기 전에 한 문장으로 축소되었기 때문입니다. 그 축소는 의도적입니다 — 메시지는 신뢰할 수 없는 자식 stderr이고 내구성 로그 수정은 값이 아닌 키 이름과 일치합니다 — 따라서 텍스트를 유지하는 대신 레코드는 이제 닫힌 열거 및 숫자를 수행합니다: 실패 종류, 그리고 자식이 실제 종료에 도달했을 때 종료 종류, 코드 및 신호입니다. 이는 크래시를 생성 오류에서 구별하고 킬에서 구별합니다. 런타임 폴백 시작 경로는 동일한 팩트를 기록하며, 이전에는 완전히 생략했습니다.
Windows: 컴파일된 엔진이 자신을 시작합니다. 실행 중인 프로세스가 엔진을 포함할 때 해석은 해당 실행 파일을 반환합니다 — 하지만 Windows에서 .exe로 끝나지 않는 후보는 npm shim으로 읽었으며, 컴파일된 단일 파일 바이너리는 무엇이든 명명될 수 있습니다. shim 판독기는 인접한 엔트리 스크립트를 찾지 못했으며, 실행 중인 버전 및 포함된 자산과 일치하도록 보장된 유일한 후보를 버렸으며, 엔트리 스크립트를 추측하기 위해 폴스루했습니다. 실행 중인 컴파일된 실행 파일은 이제 직접 반환되며 절대 재해석되지 않습니다. shim 판독기는 여전히 PATH 및 형제 후보를 처리합니다.
대기 완료는 세션 재로드를 유지합니다. 유휴 주입 조정자의 지연된 플러시는 재로드 후에 발생할 수 있으며 확장 런타임을 무효화하고 프로세스를 오래된 세대 throw로 가져갑니다. 조정자 은퇴는 이제 그 타이머를 취소하고 대기 항목을 명시적으로 실패하며, 태스크 레이어는 실패한 공지 epoch를 롤백하고 재시도 경로로 다시 들어가며, 제조자는 작업을 드롭하는 대신 거부를 처리합니다.
플랜 계속은 성공만 계속합니다. ulw-loop 및 ulw-execute 후크는 계속하는 턴의 결과를 무시했으므로 오류가 발생했거나 중단되었거나 호스트 재시도 소유이거나 거부된 턴을 재제출할 수 있었습니다. 두 제조자는 이제 턴 끝에서 레코드하고 재시도, 압축 또는 대기 계속이 따르지 않음을 보장하는 정산 에지에서 결정하며, 실패를 건너뛰고 계속 슬롯을 사용하지 않고 이유를 로깅합니다. 성공적 계속, 한계 및 중복 제거는 변경 없음이며, 오류를 단순히 논의하는 일반 어시스턴트 산문은 여전히 계속됩니다.
Kimi For Coding 세션은 자신을 Kimi 클라이언트로 식별합니다. Kimi Code 엔드포인트는 제품 User-Agent 플러스 6개 헤더의 X-Msh-* 디바이스 세트 — 플랫폼, 버전, 디바이스 이름, 디바이스 모델, OS 버전 및 설치별 디바이스 ID — 를 통해 클라이언트를 인식합니다. 공식 Kimi 클라이언트는 디바이스 인증, 토큰 폴링, 토큰 새로 고침 및 모든 요청에서 이를 보냅니다. senpi는 아무것도 보내지 않았으므로 구독 세션은 Kimi bearer 토큰을 보유한 익명 Anthropic 프로토콜 클라이언트로 제시했습니다. OAuth 구독 경로는 이제 네 가지 요청 경로 모두에서 전체 세트를 보내며, 인쇄 가능한 ASCII 새니타이제이션 값 및 에이전트 디렉토리 아래에 유지된 디바이스 ID는 해당 디렉토리에 쓸 수 없을 때 throw하는 대신 프로세스별 ID로 저하됩니다. API 키 경로는 의도적으로 건드려지지 않습니다: 클라이언트 세션이 아닌 플랫폼 키로 인증합니다.
수동 계속 바로 가기는 더 이상 메시지로 표시되지 않습니다. 이미 메시지가 있는 세션에 제출된 단순 .는 항상 의도했던 숨겨진 계속이며, TUI에서 아무것도 표시되지 않습니다.
추론 경고는 이를 보증하는 수준에서 발생합니다. GPT-6 Astra의 높은 추론 경고는 이제 max에서만 나타나고, GPT-5.6 Sol 수준은 함께 문서화됩니다.
Claude 구독 재개는 더 안정적입니다. 완료된 재개 쿼리는 더 이상 abort 리스너가 연결된 상태로 유지되지 않으므로 재연결이 정상 쿼리를 닫지 않으며, 재개된 쿼리는 완료 요청 정리 전에 고정됩니다.
거부된 모델 전환은 보이며 작동하지 않습니다. 세션이 모델 전환을 거부할 때 거부는 자동 적용되거나 자동 드롭되지 않고 기록됩니다.
npm i -g omo-ai@beta