Skip to content

fix(codex): follow active conversations after rollback - #139

Open
Yoonwoo-Ha wants to merge 1 commit into
devswha:mainfrom
Yoonwoo-Ha:fix/codex-active-thread
Open

fix(codex): follow active conversations after rollback#139
Yoonwoo-Ha wants to merge 1 commit into
devswha:mainfrom
Yoonwoo-Ha:fix/codex-active-thread

Conversation

@Yoonwoo-Ha

Copy link
Copy Markdown
Contributor

문제

최근 Codex CLI는 TUI별 프로세스가 아니라 공유 app-server가 rollout 파일을 열어 둡니다. 이 상태에서 사용자가 Esc로 이전 시점으로 돌아가 새 분기를 시작하면:

  • TUI 실행 인자에는 처음 연 대화 ID가 계속 남고
  • 실제 답변은 forked_from_id를 가진 새 대화에 기록되어
  • ChatMux가 오래된 부모 대화를 계속 표시할 수 있습니다.

같은 작업 폴더에 Codex 창이 여러 개 있으면 cwd나 최신 생성 시각만으로는 어느 분기인지 안전하게 구분할 수도 없습니다.

변경 내용

  • Codex TUI의 프로세스 세대별 렌더 로그에서 현재 답변의 정규화된 suffix를 읽습니다.
  • 공유 app-server가 실제로 열어 둔 rollout만 후보로 수집합니다.
  • session_meta.forked_from_id 계보가 현재 pane의 기존 대화로 이어지는 후보만 남깁니다.
  • 정확한 tmux socket/session/window/pane/PID 세대를 다시 확인합니다.
  • 현재 pane 화면과 rollout 양쪽에서 답변이 한 후보에만 일치할 때 그 분기로 표시를 전환합니다.
  • 첫 탐색 이후에는 프로세스 세대·렌더 suffix·transcript stat 기반의 제한된 캐시를 사용합니다.

시간창이나 cwd만으로 연결하지 않으며, 모호하거나 파일/DB 형식이 예상과 다르면 기존 연결을 유지하고 실패를 닫힌 상태로 처리합니다.

안전 범위

이 경로는 대화 표시용 추론으로만 유지됩니다. 직접적인 provider identity receipt가 아니므로 observed 권한으로 승격하지 않고, 승인이나 session-addressed 입력 권한도 부여하지 않습니다. Codex 설정·터미널 제목·tmux pane 태그는 변경하지 않습니다.

자원 사용도 다음처럼 제한했습니다.

  • 열린 thread 후보 최대 32개
  • fork 조상 탐색 최대 16단계
  • transcript tail 최대 1 MiB, 최근 메시지 최대 8개
  • 프로세스 로그 최대 256행
  • transcript 캐시 최대 32개

확인

  • 동일 프로젝트에서 동시에 실행 중인 Codex pane 2개가 각각 자신의 활성 Esc 분기로 연결됨
  • 로컬 실제 탐색: 최초 약 99 ms, 캐시 후 약 13 ms
  • 두 활성 분기의 transcript history API에서 기존 메시지와 최신 메시지 로딩 확인
  • 신규 집중 테스트 10개 통과
  • 전체 npm test: 720 tests 통과
  • npm run typecheck, npm run check:core, npm run lint, npm run check:identity, npm run build 통과

npm run verify는 변경하지 않은 upstream package-lock.json의 현재 npm advisory 4건(hono, js-yaml, multer, sharp) 때문에 audit 단계에서 중단됩니다. 이 PR은 의존성 파일을 변경하지 않습니다.

제한 사항

새 분기의 첫 답변이 화면과 transcript를 안전하게 대조할 만큼 충분한 길이가 된 뒤 연결됩니다. 너무 짧거나 여러 후보가 같은 문장을 포함하면 오연결하지 않고 다음 명확한 답변까지 기존 대화를 유지합니다.

@Yoonwoo-Ha Yoonwoo-Ha changed the title fix(codex): Esc 분기 후 활성 대화 자동 추적 fix(codex): follow active conversations after rollback Sep 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants