ctx – Claude Code와 Codex 양쪽에서 동작하는 /resume 로컬 컨텍스트 매니저
Show HN: Ctx – a /resume that works across Claude Code and Codex
TL;DR Highlight
Claude Code와 OpenAI Codex 사이에서 대화 컨텍스트를 정확하게 유지하고 브랜칭할 수 있는 로컬 CLI 도구로, AI 코딩 세션을 끊김 없이 이어가고 싶은 개발자에게 유용하다.
Who Should Read
Claude Code나 Codex를 업무에 활용하는데 세션이 끊기거나 두 AI 툴 사이를 오가는 과정에서 컨텍스트가 날아가는 문제를 겪고 있는 개발자.
Core Mechanics
- ctx는 Claude Code와 OpenAI Codex의 대화 세션을 하나의 'workstream'이라는 단위로 묶어서 관리한다. 각 workstream은 Claude conversation ID와 Codex conversation ID를 함께 바인딩해서 저장한다.
- Exact transcript binding 기능 덕분에 나중에 ctx를 다시 불러올 때 디스크에 가장 최근 저장된 채팅이 아니라, 원래 그 세션과 연결된 정확한 대화 기록을 불러온다. 이걸 'transcript drift'를 막는다고 표현한다.
- Safe branching 기능으로 현재 workstream 상태를 복사해서 새 workstream으로 브랜치할 수 있다. 브랜치 이후에는 소스 workstream과 대화 스트림이 완전히 분리되어 서로 영향을 주지 않는다.
- 저장된 workstream, 세션, 엔트리는 SQLite DB에 인덱싱되어 빠르게 검색할 수 있고, 로컬 브라우저 프론트엔드에서 시각적으로 확인할 수도 있다.
- 핀(pin) 기능으로 특정 엔트리를 항상 컨텍스트에 포함시킬 수 있고, exclude 기능으로 검색은 되지만 모델에 전달되지 않도록 제외할 수도 있다. 필요 없는 항목은 완전 삭제도 가능하다.
- 완전히 로컬 퍼스트 설계로 API 키도 없고 외부 서비스도 없다. 데이터는 평범한 SQLite 파일과 로컬 파일로 저장된다.
- 설치는 git clone 후 ./setup.sh 한 번으로 끝난다. 프로젝트 로컬 DB를 만들고, ~/.contextfun/bin에 ctx shim을 설치하며, Claude와 Codex의 skills 디렉토리에 심볼릭 링크를 연결해준다.
- Claude Code의 /resume 커맨드에서 착안한 도구로, 비슷한 기능을 두 AI 코딩 도구에 걸쳐 통합해서 제공하는 게 핵심 차별점이다.
Evidence
- /resume 기능 자체를 쓴 적이 없다는 댓글이 있었다. 변경사항을 만들고 문서화하면 세션을 새로 시작하지 resume할 일이 없다는 것인데, 이는 ctx가 타겟하는 '장기 작업 컨텍스트 유지' 니즈가 얼마나 일반적인지에 대한 의문을 제기한 것이다.
- 두 provider 간 전환 시 컨텍스트 토큰을 어떻게 처리하는지, 특히 tool/MCP 호출이나 sub-agent 결과 같은 provider별 특수 포맷을 어떻게 '정규화'하는지 묻는 기술적 질문이 있었지만 아직 명확한 답변은 없었다.
- prompt caching이 모델 간 호환이 안 된다는 점을 지적하며, ctx 방식이 다른 하네스(harness)들에 PR을 올리는 것보다 어떤 점에서 더 나은지 묻는 댓글이 있었다. 즉, cross-provider 컨텍스트 공유의 실제 이점에 대한 회의적인 시각이다.
- 여러 커스텀 AI 툴을 만들다 보니 설정을 프로젝트, 환경, OS마다 따로 관리해야 하는 피로감이 크고, Claude가 기기별로 별도 메모리를 가져서 경험이 일관되지 않다는 공감 댓글이 있었다. ctx 같은 단일 하네스 접근법의 필요성을 지지하는 의견이었다.
- workstream을 export/import할 수 있게 해서 컨텍스트를 공유하는 기능이 있으면 좋겠다는 제안이 있었다. 팀 협업 시나리오에서 컨텍스트를 넘겨주는 용도로 유용할 것이라는 맥락이었다.
How to Apply
- Claude Code로 작업하다가 특정 기능을 OpenAI Codex로 테스트해봐야 하는 경우, ctx로 workstream을 만들어두면 두 도구 간 전환 시에도 동일한 작업 컨텍스트를 유지할 수 있다. git clone 후 ./setup.sh 한 번으로 바로 시작 가능하다.
- 장기 프로젝트를 AI 코딩 툴로 진행하다가 실험적인 방향을 시도해보고 싶을 때, ctx의 브랜칭 기능을 이용하면 현재 workstream을 보존한 채 새 브랜치에서 안전하게 실험할 수 있다. 실험이 실패해도 원본 workstream은 그대로 남아있다.
- 여러 AI 세션에서 반복적으로 참조해야 하는 아키텍처 결정이나 설계 문서가 있는 경우, ctx의 pin 기능으로 해당 엔트리를 고정해두면 매번 새로 붙여넣지 않아도 항상 컨텍스트에 포함된다.
- 팀원에게 AI 코딩 세션의 진행 상황을 인계해야 하는 상황이라면, export/import 기능 구현을 기다리거나 SQLite DB 파일 자체를 공유하는 방식으로 workstream을 넘겨줄 수 있는지 검토해볼 수 있다.
Code Example
# 설치
git clone https://github.com/dchu917/ctx.git
cd ctx
./setup.sh
# setup.sh가 하는 일:
# - ./.contextfun/context.db 생성
# - ./ctx.env 작성
# - ~/.contextfun/bin에 repo 기반 ctx shim 설치
# - ~/.claude/skills 와 ~/.codex/skills에 로컬 skills 링크 연결
# 사용 예시 (README 기반)
# Claude Code에서
/ctx save feature-audit
# Codex에서
ctx resume feature-audit
# 브랜치 생성
ctx branch feature-audit feature-audit-v2Terminology
관련 논문
adamsreview: Claude Code용 멀티 에이전트 PR 코드 리뷰 파이프라인
Claude Code에서 최대 7개의 병렬 서브 에이전트가 각각 다른 관점으로 PR을 리뷰하고, 자동 수정까지 해주는 오픈소스 플러그인이다. 기존 /review나 CodeRabbit보다 실제 버그를 더 많이 잡는다고 주장하지만 커뮤니티에서는 복잡도와 실효성에 대한 회의론도 나왔다.
Claude를 User Space IP Stack으로 써서 Ping에 응답시키면 얼마나 빠를까?
Claude Code에게 IP 패킷을 직접 파싱하고 ICMP echo reply를 구성하도록 시켜서 실제로 ping에 응답하게 만든 실험으로, 'Markdown이 곧 코드이고 LLM이 프로세서'라는 아이디어를 네트워크 스택 수준까지 밀어붙인 재미있는 사례다.
AI Agent를 위한 Git: re_gent
AI 코딩 에이전트(Claude Code 등)가 수행한 모든 툴 호출을 자동으로 추적하고, 어떤 프롬프트가 어느 코드 줄을 작성했는지 blame까지 가능한 버전 관리 도구다.
Agent-Native CLI를 위한 설계 원칙 10가지
AI 에이전트가 CLI 도구를 더 잘 사용할 수 있도록 설계하는 원칙들을 정리한 글로, 에이전트가 CLI를 도구로 활용하는 빈도가 높아지면서 이 설계 방식이 실용적으로 중요해지고 있다.
Agent-harness-kit: MCP 기반 멀티 에이전트 워크플로우 오케스트레이션 프레임워크
여러 AI 에이전트가 서로 역할을 나눠 협업할 수 있도록 조율하는 scaffolding 도구로, Vite처럼 설정 없이 빠르게 멀티 에이전트 파이프라인을 구성할 수 있다.
Tilde.run – AI Agent를 위한 트랜잭션 기반 버전 관리 파일시스템 샌드박스
AI 에이전트가 실제 프로덕션 데이터를 건드려도 롤백할 수 있는 격리된 샌드박스 환경을 제공하는 도구로, GitHub/S3/Google Drive를 하나의 버전 관리 파일시스템으로 묶어준다.