Devin은 이제 일급 제공자입니다 — OAuth 로그인, 기본 Cascade 트랜스포트, 튜닝된 프롬프트에서 실행되는 SWE-2가 지원됩니다. 목표는 더 이상 만족할 수 없는 기장 업무에 의해 자동 차단되지 않으며, Windows 세션은 경쟁 상태로 인해 RPC 호스트를 잃지 않고, 모든 저장된 계정은 마침내 인식 가능한 이름을 지정할 수 있습니다. 기본 엔진은 senpi 2026.9.11입니다.
다른 모든 것에 로그인하는 것과 같은 방식으로 Devin에 로그인하세요. 로그인은 Devin의 자체 CLI 인증 흐름을 실행합니다 — PKCE S256, 127.0.0.1:59653의 루프백 콜백, 코드를 사용하기 전에 유효성이 검사된 상태 — 발급된 CLI 토큰은 가정된 수명이 아닌 자체 JWT에서 읽은 만료 시간과 함께 저장되므로 세션은 실제로 만료되는 시점을 알 수 있습니다 (#1601).
Devin 모델은 변환 계층이 아닌 기본 Cascade 프로토콜을 통해 스트림됩니다. devin-agent Connect/protobuf 트랜스포트는 텍스트, 사고, 도구 호출, 사용량 및 중지 이유를 공유 스트림 계약에 직접 매핑합니다. 실패하거나 콘텐츠 필터링된 중지는 조용히 끝나는 턴이 아닌 실제 오류로 표시되며, 자른 턴은 재시도 로직이 "모델이 중지됨"과 "모델이 자려짐"을 구분할 수 있도록 length 중지 이유를 유지합니다. 모델 검색은 저장된 자격 증명으로 인증되며 검색 엔드포인트에 연결할 수 없을 때 번들된 SWE 시드로 폴백되므로, 속도 제한되거나 오프라인 검색은 빈 모델 목록을 남기지 않습니다 (#1604).
SWE-2는 Kimi K3 프롬프트에서 실행됩니다. OMO는 devin/swe-2-low|high|max 및 기본 swe-2를 일반 atlas 지침이 아닌 번들된 Kimi K3 atlas 시스템 프롬프트(이 모델 패밀리가 실제로 튜닝된 프롬프트)로 라우팅합니다. 매칭은 이름 경계에서 발생하므로 swe-1-7과 swe-20은 건드려지지 않으며, SWE-1.x는 기존 프롬프트를 유지합니다 (#8130).
omo는 이제 엔진의 변경 로그 대신 OMO 소유의 변경 로그를 제공하고 렌더링합니다. 지금까지 업데이트 후 공지는 senpi의 변경 로그를 렌더링했으므로 OMO 릴리즈는 엔진 항목을 공지했고 OMO의 자체 작업에 대해서는 아무것도 언급하지 않았습니다. 변경 로그 소스는 이제 모든 런처 페이로드의 일부입니다 — npm 패키지, 컴파일된 바이너리 및 그 계약 핀, 로컬 플러그인 런처 — 렌더러는 소스 격리된 본 버전 추적으로 읽으므로 엔진의 공지와 OMO의 공지는 절대 서로의 "이미 본" 상태를 덮어쓰지 않습니다. senpi 측의 같은 쌍이 브랜드 변경 로그 지원으로 제공되었습니다 (#1583). 이를 통해 포크는 렌더러를 자신의 파일과 작성 버전으로 지정할 수 있습니다.
목표는 더 이상 자신의 감사 때문에 진행되기를 거부하지 않습니다. 목표가 여전히 전달할 수 있는 실시간 재개 채널(모니터, 백그라운드 세션, 분리된 평가 셀, 자식 작업 또는 대기 중인 질문)이 있는 동안 차단됨으로 표시될 수 없다는 규칙 — 그리고 같은 차단기가 3개의 목표 턴을 거칠 때까지가 아닙니다 — 이제 적절한 위치에 있습니다: 목표 계속 프롬프트와 update_goal 도구 설명에 있습니다. 전환 자체는 다시 모델 제어됩니다. update_goal은 blocked 호출이 이유를 갖도록만 강제합니다. create_goal도 마찬가지로 "명시적으로 요청된 경우만"이 아니라 턴을 초과하여 존재하는 작업에 대한 결정 규칙을 갖습니다.
제공자 정책 거부는 루프가 아닌 턴을 종료합니다. 터미널 정책 거부는 이제 성공할 수 없는 자동 복구를 대기열에 넣는 대신 활성 목표를 차단합니다. 비구조화된 Codex 진단(This request was blocked by our safety systems)은 메시지가 Codex 응답 api id를 포함할 때만 신뢰되므로, 같은 문장을 내보내는 다른 제공자 또는 게이트웨이는 일반 제공자 및 시스템 복구를 유지합니다 — api id는 제공되는 모델 카탈로그에 대해 고정되므로 거기서 이름을 바꾸는 것은 보호를 무음으로 무장 해제할 수 없습니다 (#1520, 감사합니다 @rlaope).
ulw-loop의 Codex 목표는 게이트가 아닌 드라이버입니다. ulw-loop 스토리를 완료하는 것은 get_goal이 계획의 목표와 불일치하거나, 일시 중지되었거나 제한된 상태를 보고했거나 완전히 누락된 경우마다 ulw_loop_codex_snapshot_mismatch를 던지고 체크포인트를 거부했습니다. 모두 이제 구체적인 다음 작업 경고입니다 — get_goal 호출, 목표 재개 또는 계획의 목표를 그대로 붙여넣은 create_goal 호출 — 체크포인트가 진행됩니다. checkpoint --status complete는 더 이상 --codex-goal-json이 필요하지 않으며, JSON이나 읽을 수 있는 경로가 아닌 값은 원본 ENOENT 대신 안정적인 ULW_LOOP_CODEX_GOAL_JSON_INVALID로 실패합니다 (#8122).
Windows 세션이 시작되지 않을 수 있는 4가지 별도의 방법이 제거되었습니다. 재사용 프로브는 이제 명명된 파이프 핸드셰이크를 작성하기 전에 소켓 오류 리스너를 등록하므로, 프로브가 진행 중인 동안 유휴 호스트가 제거한 파이프는 "기존 호스트 없음"으로 읽혀지고 호출자는 ENOENT가 이스케이프되어 세션에 실패하는 대신 새로운 것을 시작합니다 (#1593). 소유권 검사는 더 이상 활성 PID에 대한 임시로 비어 있는 프로세스 ID 관찰을 공유 호스트가 죽었다는 증거로 취급하지 않으므로, 임시 Windows CIM 간격은 더 이상 한 호출자가 다른 호출자의 건강한 호스트를 종료하도록 만들 수 없습니다. 감독자는 자신의 내부 소켓 디렉토리를 재귀적으로 생성하고 유효한 것을 재사용하면서 누락된 공개 소켓 시크릿을 프로비저닝하므로, 새 프로필에서 --internal-rpc-host-supervisor를 시작하면 리스너에 도달하는 대신 ENOENT에서 두 번 충돌합니다 (#1370).
그리고 바쁜 컴퓨터는 더 이상 방금 시작한 호스트를 죽이지 않습니다. 모든 Windows ID 프로브는 1초 타임아웃 아래 Get-CimInstance를 사용하여 powershell.exe를 생성합니다. 부하가 높을 때 모든 시도는 타임아웃되고, 이미 살아있고 자신의 파이프에 응답하던 호스트는 started but its process identity stayed unreadable로 거부되었다가 종료되었습니다. 이러한 호스트는 이제 명시적으로 소유권 보호가 없는 pid 파일로 등록됩니다. 레코드는 호스트를 청구하거나 신호를 승인할 수 없으므로 최악의 경우는 건강한 것을 죽이는 대신 다음 시작 시 새로운 호스트입니다 (#1609).
자식이 정말로 시작하지 못한 경우 흔적이 무슨 일이 일어났는지 말합니다. 지속 가능한 task_start_failed 레코드는 이제 rejected_while: alive | exited를 포함합니다: alive는 프롬프트 쓰기가 자식이 여전히 실행 중인 동안 실패했으며 뒤따르는 정리 킬에서 종료 원인이 발명되지 않았음을 의미합니다, exited는 자식이 진정으로 종료되었으며 실제 종료 코드 및 신호가 보존됨을 의미합니다. 이전 레코드는 정리 SIGKILL을 실패로 비난했으므로, 발생하지 않은 충돌로 읽혀졌습니다 (#8114).
저장된 계정의 이름을 지정하세요. /gpt-account rename <id> <display name...>, /claude-account rename <id> <display name...>, 및 /account <provider> rename <id> <display name...>은 저장된 OAuth 계정에 사람이 읽을 수 있는 레이블을 연결하고, clear-name <id>는 제거합니다. 레이블은 상태 표면 및 바닥글에 displayName (id)로 렌더링되지만, 핀, 제거, 새로고침 및 세션 친화성은 불변 id를 계속 사용합니다. 레이블은 NFC 정규화되고 공백이 축소되며 32 터미널 열로 제한되고, 두 레이블이 동일하게 렌더링될 때 거부됩니다 — 비교는 대문자 구분, 호환성 형식, 보이지 않는 코드 포인트 및 키릴 문자 사칭을 접으므로 Work과 Wоrk은 한 제공자에 동시에 존재할 수 없습니다.
다중 계정 풀이 더 이상 서로를 먹지 않습니다. 제공자 소유 로그인 풀은 브라우저 흐름 이전에 가져온 스냅샷으로 덮어쓰지 않고 커밋 시간에 저장된 풀에 병합되므로, 형제 계정의 회전된 새로고침 토큰이나 신선한 속도 제한 블록은 다른 계정의 로그인을 살아남습니다. 관리되는 센티널을 여전히 보유 중인 슬롯은 auth.json을 읽는 순간 치유되고 복구는 한 번 다시 작성되므로, 두 번째 로그인은 더 이상 모든 요청에 대해 친화성이 그곳에 도달하면 하드 오류하는 죽은 login-N 항목을 남길 수 없으며, 구성되지 않은 슬롯 auth 미스는 자격 증명당 분류되므로 한 개의 나쁜 슬롯은 건강한 풀을 막을 수 없습니다 (#1304, 감사합니다 @eddieparc).
Claude SDK 세션은 모든 것을 다시 전송하는 대신 복구합니다. 스트림 시작 타임아웃 후 프롬프트나 도구 집합이 표류한 지속적인 바인딩은 이제 메가바이트의 기록을 새 요청으로 평탄화하지 않고 마지막 어시스턴트 UUID에서 저장된 세션을 포크하며, 타임아웃과 기본 invalid_request 모두 인증되지 않은 게이트웨이 라우트로 하드 홉하는 대신 같은 모델에서 다시 만들어집니다. Lock file is already being held는 미지의 터미널 실패가 아닌 일시적이고 재시도 가능한 것으로 분류됩니다.
$ 스킬 자동 완성은 하이재킹이 아닌 완성처럼 작동합니다. 스킬 힌트는 유효한 프롬프트 경계에서 완성되는 동안 $HOME 및 $1과 같은 리터럴 셸 변수는 건드려지지 않습니다 (#1575). 완성은 다중 라인 초안과 턴이 스트리밍 중인 동안 입력된 후속 입력에서 활성 상태를 유지합니다 (#1590).
사용자 요청 오버레이는 순수 Enter로 응답합니다. Enter는 확인하고 질문 탭을 통해 진행하고, 다중 선택 선택은 확인을 살아남으며, 명시적 제출 탭은 선택적 댓글과 부분 답변을 포함하고, 편집기 포커스 트랩은 사라지며, 부분 답변은 더 이상 댓글을 요구한 후에 보고될 수 있습니다 (#1573).
자른 평가 출력은 완전한 복사본을 유지합니다. 좁은 터미널 열 캡으로 잘린 출력은 이제 복구 가능한 완전 출력 아티팩트를 보존하고, 평가 지침은 호출자에게 큰 텍스트를 제한된 청크로 내보내거나 오프셋 기반 읽기를 통해 내보내고 자림 알림을 전체 결과가 아닌 불완전한 데이터로 취급하도록 지시합니다 (#1600).
원격 카탈로그 새로고침은 제공되는 카탈로그를 다운그레이드할 수 없습니다. 원격 pi.dev 새로고침은 더 이상 정적 모델 카탈로그로 선언된 기능을 낮추거나 대체하지 않습니다: 기존 행과 -fast 변형은 권위 있는 상태로 유지되고, 충돌하는 제공자 또는 모델 필드는 원격 카탈로그 진단 API를 통해 노출되며, 형식이 잘못된 원격 행은 완전히 거부됩니다.
자격 증명 재로드는 하나의 파일 시스템 틱 내에서도 관찰됩니다. 인증 및 캐시된 제공자 설정 재로드 감지는 mtime 대신 파일 콘텐츠 개정 사항에 따라 진행되므로, 같은 타임스탬프 세분성에 도달하는 두 번의 재쓰기가 모두 표시되고 세션은 결정론적으로 새로운 자격 증명을 선택합니다.
DeepSeek V4.1 Flash는 자신의 프리셋을 갖습니다. 게시된 모든 ID 형태가 이를 확인합니다 — deepseek-flash, deepseek-v4.1-flash, deepseek/deepseek-v4.1-flash, deepseek-ai/DeepSeek-V4.1-Flash, Fireworks의 deepseek-v4p1-flash, Venice의 deepseek-v4-1-flash — 공식 제공자가 퇴직한 deepseek-v4-flash 별칭과 함께 이제 V4.1 Flash를 제공합니다. 프리셋은 의도적으로 공유 코어와 평가 라우팅 입장만 포함합니다: V4-Flash 복구 규칙은 더 이상 존재하지 않는 모델의 기록에 대해 작성되었습니다 (#1574).
반복 반영 실패는 매 단계에서 재시도하는 대신 백오프합니다. 실패한 자동 반영은 이제 저널에 연속 실패 횟수를 기록하고 다음 적합성을 지수적으로 밀어냅니다 — 5초, 10초, 20초, 5분 한정 — 따라서 반영 자식을 시작할 수 없는 컴퓨터는 완료된 모든 단계에서 재시도를 태우는 것을 중단하고 원인이 해제되면 자체적으로 복구됩니다 (#8128).
회상 사이드카는 구성 가능합니다. memory.recall은 category(기본값 quick), 이벤트당 문자 제한(tool_args 400, result_head 600, assistant 1500, prompt 4000), sidecar_max_tokens(48000), max_concurrent_wakes(2), 및 tool_budget(8)을 얻으며, 공유 루트, 하네스 또는 프로필 계층, 또는 에이전트당 설정할 수 있습니다 (#8126). 반영과 경쟁하는 대신 자신의 잠금에서 동시 웨이크가 직렬화되도록 아래에 전용 회상 웨이크 리스 도메인이 있습니다 (#8127).
이미지가 많은 /resume은 기록을 다시 파싱하지 않습니다. 재개된 세션은 제거된 주민 문자열당 완전한 JSONL을 한 번씩 다시 파싱했습니다. 이제 하나의 순서 있는 구체화 패스가 기록 내용과 분기 상태를 보존하면서 단일 권위 있는 이력 로드를 수행합니다 (#1407).
이 빌드에 포함된 엔진 릴리즈는 OMO 측이 아닌 위의 모든 항목을 포함하며, 추가:
npm i -g omo-ai@beta
업데이트 후 실행 중인 세션을 다시 시작하세요: 프로세스는 제 위치에서 새 페이로드를 채택할 수 없으며, omo doctor는 여전히 이전 페이로드에서 실행 중인 세션의 이름을 지정합니다.