ghostwriter
무엇인가
GhostWriter는 소스 파일을 AST 단위로 축약해 실패 지점과 무관한 함수·클래스 본문을 자리표시자로 대체한 뒤 에이전트에게 넘기는 규칙 묶음이다. 규율하는 영역은 "무엇을 읽을 것인가"이며, 디버깅·대형 파일 분석·특정 라인 수정 상황에서 에이전트가 파일 전체를 컨텍스트에 적재하지 않도록 읽기 범위를 좁힌다.
어떻게 동작하나
Codex 쪽은 저장소에 포함된 플러그인/스킬로 붙고, 에이전트는 분석이나 편집 전에 `ghostwriter prune <file> --line <n> --stdout --silent`를 호출한다. Gemini CLI는 이 저장소의 확장 메타데이터를 통해 같은 도구를 자동으로 쓴다. 축약 결과에서 대상 라인이 속한 블록은 원문이 유지되고 나머지 함수·클래스 본문은 `[Ghosted]` 주석으로 대체되며, 클래스·메서드 시그니처와 파일 구조는 남는다.
무엇과 다른가
프롬프트에 "관련 부분만 보라"고 적는 방식은 모델이 관련 범위를 스스로 추정해야 하고 파일을 이미 읽은 뒤에는 효과가 없다. CLAUDE.md·AGENTS.md 같은 규칙 파일은 상시 규칙을 주입하지만 파일 내용 자체를 줄이지 않는다. GhostWriter는 읽기 이전 단계에서 파일을 결정적으로 축약하는 외부 도구 호출을 스킬에 묶어, 규칙이 아니라 입력 크기를 통제한다.
어떻게 쓰나
Codex에서는 저장소에 포함된 플러그인/스킬을 설치 대상에 한 번 넣으면 이후 해당 대상의 모든 세션에서 계속 쓰인다. Gemini CLI에서는 확장으로 설치한다. 첫 사용은 스택 트레이스 기반 오류 수정 요청, 대형 모듈의 로직 분석 요청, 특정 라인 지점 수정 요청에서 자동으로 발동한다.
전제와 한계
대상은 Codex와 Gemini CLI 워크플로이며 Claude Code·Cursor용 배선은 README에 없다. 자동 오류 위치 탐지는 터미널 스택 트레이스나 시스템 클립보드 입력에 의존하므로 그 입력이 없으면 대상 라인을 직접 지정해야 한다. AST 기반 도구이지만 지원 언어 목록은 README에 명시되지 않았고, 축약은 컨텍스트 절감만 담당하며 오류 자체를 수정하지는 않는다.
유사 도구
- Empryo코드베이스를 tree-sitter로 심볼 그래프로 파싱해 두고, 문자열 패치 대신 AST 연산으로 코드를 고치는 데스크톱 AI 코딩 에이전트다.
- graphify코드베이스와 문서·SQL·PDF를 tree-sitter AST로 파싱해 질의 가능한 지식 그래프로 바꾸는 CLI다. 임베딩 없이 그래프를 순회하며 모든 엣지에 출처 태그를 붙인다.
- agents하나의 Markdown 소스에서 Claude Code, Codex, Cursor, Copilot 등 여러 코딩 하네스용 플러그인·에이전트·스킬을 생성해 배포하는 마켓플레이스다.
- abtopClaude Code·Codex CLI·OpenCode 세션의 토큰·컨텍스트 창·레이트 리밋·포트를 로컬 상태에서 읽어 실시간으로 보여주는 Rust TUI다.