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
관련 논문
Anthropic의 오픈소스 AI 기반 취약점 자동 탐지 프레임워크 공개
Anthropic이 Claude를 활용해 코드 취약점을 자율적으로 탐지·트리아지·패치하는 오픈소스 레퍼런스 구현체를 공개했다. 실제 보안팀과의 협업 경험을 바탕으로 만들어진 파이프라인이라 실전 적용성이 높다.
에이전트는 스스로 물러날까? LLM 에이전트의 In-Band Access-Deny 신호 준수 측정
서버가 SSH 배너나 DB NOTICE로 'AI 에이전트는 접근하지 마세요' 신호를 보내면 GPT-4o, Claude Code 같은 LLM 에이전트가 실제로 물러나는지 실험으로 측정했다.
ToolChoiceConfusion: 신뢰할 수 있는 LLM 에이전트를 위한 Causal Minimal Tool Filtering
LLM 에이전트에 도구를 100개 다 보여주지 말고, 지금 당장 필요한 것 1개만 보여주면 성공률은 그대로에 토큰은 90% 절약된다.
AI Agent를 위한 TDD(테스트 주도 개발) Skill 만들기
AI 에이전트가 형편없는 테스트를 작성하는 문제를 해결하기 위해, Kent Beck의 Canon TDD 원칙을 'Skill'로 만들어 에이전트에게 주입하는 방법을 공유한다. 에이전트 코딩에서 테스트 품질을 높이고 싶은 개발자에게 실용적인 접근법을 제시한다.
Paseo – 오픈소스 코딩 에이전트 통합 인터페이스 (모바일/데스크탑/CLI 지원)
Claude Code, Codex, GitHub Copilot 등 여러 코딩 에이전트를 하나의 UI로 제어하는 오픈소스 프로젝트로, 로컬 데몬 방식으로 자기 머신에서 실행하면서 모바일에서도 접근할 수 있다.
AI Agent가 가능하게 한 적응형 Computer Worm
단일 GPU에서 돌아가는 오픈소스 LLM만으로 네트워크를 자율 전파하는 AI 웜을 실제로 구현해서, 이게 이론이 아닌 현실임을 증명했다.