Codex CLI가 로컬에 저장하는 세션 기록 파일을 살펴본 뒤, 그 기록을 목록으로 보여 주고 선택한 세션을 바로 이어서 열어 주는 데스크톱 세션 매니저를 Rust로 바이브 코딩한 실습 영상입니다. Codex CLI를 막 쓰기 시작해 세션 구조와 실제 개발 흐름을 함께 익히고 싶은 분께 맞습니다. 이전 강의인 세션 사용법에 이어지는 내용입니다.
Codex 세션 파일 들여다보기
지난 강의에서 확인했듯 Codex 세션 정보는 홈 디렉터리의 .codex/sessions 아래에 프롬프트를 실행한 연도와 월별 폴더로 나뉘어, 타임스탬프와 세션 ID가 붙은 파일로 저장됩니다. 확장자가 jsonl인 이 파일을 열어 보면 어떤 종류의 메시지가 오갔는지 한 줄에 하나씩 기록돼 있습니다.
단테가 짚은 주요 항목은 이렇습니다.
- agent_reasoning: 모델이 추론하는 과정에서 남긴 내용입니다.
- token_count: Codex CLI 하단에 표시되는 사용량을 그리기 위한 기록입니다.
- 사용자 메시지: 입력한 텍스트가 payload 안에 객체 형태로 들어가며, 타입은 event_msg로 전달됩니다.
- response_item: 모델이 실제로 출력한 내용으로, payload 안에서 reasoning과 message로 나뉩니다.
추론 과정이 얼마나 자세히 표시되는지는 config.toml의 model_verbosity 설정에 따라 달라집니다. 영상 속 설정은 low여서 짧게 표시됐고, 기본값은 medium입니다. 단테는 추론 과정을 프롬프트 엔지니어링에 활용하지 않는다면 low로 두는 편이 컨텍스트 윈도우를 아끼는 데 유리하다고 설명한 뒤, 실습을 위해 다시 medium으로 돌렸습니다.
요구사항 정리와 첫 프롬프트
세션 파일 구조를 파악한 뒤 만들 프로그램의 요구사항을 정리했습니다.
- 세션 기록은 .codex/sessions에서 읽습니다.
- Mac과 Windows에 관계없이 데스크톱에서 바로 실행돼야 합니다.
- 지금까지 생성한 세션 목록을 보여 주고, 각 세션의 대화 내용을 미리 볼 수 있어야 합니다.
- 목록에서 세션을 선택하면 터미널에서 해당 세션을 이어서 쓰는 Codex CLI가 열려야 합니다.
어떤 언어로 만들지 모르겠다면 Codex에게 먼저 물어봐도 됩니다. Python을 추천받을 수도 있지만 단테는 Rust를 골랐습니다. 새 폴더에서 Codex를 처음 실행하면 권한을 어떻게 줄지 묻는 TUI 화면이 나오는데, 여기서 승인 요청 없이 이 폴더에서 작업하도록 허용하는 첫 번째 옵션을 선택해야 Codex가 매번 묻지 않고 파일을 만들고 고칠 수 있습니다. 이어서 /status로 현재 모델을 확인했습니다. 실제로 보낸 프롬프트는 다음과 같습니다.
다음과 같이 러스트로 작성된 데스크톱 애플리케이션을 만들어 주세요. 맥과 윈도우 환경에서 동일하게 동작해야 합니다. 저장된 코덱스 세션들의 리스트를 보여주고 커서를 통해 각 세션을 이동하고 선택할 수 있어야 합니다. 각 세션에 어떤 대화 내용이 포함되어 있는지 쉽게 볼 수 있어야 합니다.
기다리는 동안 병렬로 작업하기
단테는 CLI로 바이브 코딩을 할 때 작업이 끝날 때까지 손 놓고 기다릴 이유가 없다고 강조합니다. 실행 중에 다음 프롬프트를 미리 써서 큐에 넣어 둘 수 있습니다. 다만 같은 세션 안에서는 앞의 작업이 끝나야 다음 작업이 진행되므로, 병렬로 처리하려면 다른 터미널에서 새 세션을 띄워야 합니다. 영상에서는 왼쪽 터미널에서 앱을 만드는 동안 오른쪽 세션에서 Git 저장소와 README 같은 기본 설정을 진행했습니다.
모델 선택에 대한 조언도 있습니다. 단테는 GPT-5-Codex의 reasoning high를 쓰고 있었고, 작업 진행 중에는 모델을 바꿀 수 없습니다. 그의 경험으로는 low나 medium은 프로그래밍에서 high만큼 도움이 되지 않았기 때문에 처음에는 high를 써 보고, README 작성이나 기본 설정처럼 추론이 많이 필요 없는 작업만 medium으로 돌리라고 권했습니다. 생성된 .gitignore를 확인해 보니 Cargo 관련 빌드 산출물은 들어 있었지만 Cargo.lock 처리가 빠져 있는 것도 눈으로 확인했습니다.
오류를 붙여 넣으며 다듬기
컴파일 중 오류가 나면 그대로 복사해 Codex 터미널에 붙여 넣으면 기존 코드를 바탕으로 수정해 줍니다. 붙여 넣은 내용은 화면에 Pasted Content처럼 짧게 표시되지만 실제로는 전체가 입력되고, 이미지도 크기만 표시될 뿐 실제로 전달됩니다. 컴파일을 기다리는 동안에는 지금까지의 작업을 가이드 문서로 정리하게 했습니다. 나중에 새 세션을 열었을 때 이 문서를 넘겨주면 맥락을 이어갈 수 있고, 같은 목적의 AGENTS.md는 다른 영상에서 다룬다고 예고했습니다.
첫 실행에서 UI는 잘 나왔지만 세션 데이터를 제대로 읽지 못했고, Enter를 눌러도 반응이 없었습니다. 단테는 세션 폴더의 실제 파일을 읽어 표시할 것, 그리고 Enter를 누르면 지난 강의에서 배운 codex resume에 세션 ID를 넘겨 세션을 재개할 것을 요청했고, 파일 경로도 직접 알려 줬습니다. Codex는 스트리밍 JSON 파서와 메시지 정규화 기능을 추가하고 README도 갱신했습니다. cargo run --release로 다시 실행하자 빌드 오류가 났고, 이를 붙여 넣어 고쳤습니다. 다음에는 대화 목록의 한글이 깨지는 문제가 보여, 화면 캡처를 붙여 넣고 한글이 깨진다고만 알려 수정했습니다.
최종적으로 목록에서 세션을 고르고 Enter를 누르면 그 세션 ID로 Codex가 열렸고, 화면의 ID와 실제 세션 ID가 일치하는 것을 확인했습니다. 구현은 프롬프트 한 번으로 거의 완성됐고, 오류 수정은 세 차례였습니다.
정리
- Codex 세션은 ~/.codex/sessions 아래 연·월 폴더에 jsonl 파일로 저장되며, 추론·토큰 사용량·사용자 메시지·응답이 줄 단위로 기록됩니다.
- model_verbosity를 low로 두면 추론 표시가 짧아지고, 기본값은 medium입니다.
- 요구사항을 먼저 문장으로 정리하면 첫 프롬프트 한 번으로 앱의 뼈대를 만들 수 있습니다.
- 긴 작업 중에는 큐에 프롬프트를 쌓거나 별도 세션을 열어 병렬로 진행합니다.
- 컴파일 오류와 화면 캡처를 그대로 붙여 넣는 방식으로 세 번의 수정만에 세션 재개 기능까지 완성했습니다.

