Phantom: 자기만의 컴퓨터를 가지고 스스로 진화하는 AI 동료 에이전트

Phantom 소개

오늘날 대부분의 AI 에이전트는 일회용에 가깝습니다. 채팅 창을 열어 답을 얻고 탭을 닫으면 맥락이 사라지고, 다음에는 다시 처음부터 시작합니다. 매 세션이 언제나 첫날인 셈입니다. 게다가 에이전트가 사용자의 노트북 위에서 돌면, 그것이 만든 대시보드나 도구는 localhost 에 갇혀 다른 사람에게 보여줄 수 없습니다.

Phantom 은 여기에 다른 전제를 둡니다. 에이전트에게 자기만의 컴퓨터를 준다 는 것입니다. 소프트웨어를 설치하고, 데이터베이스를 띄우고, 대시보드를 만들고, 지난주에 들은 내용을 기억하는 전용 머신(VM)을 에이전트가 갖습니다. 사용자의 노트북은 사용자만의 것으로 남고, 에이전트의 작업 공간은 에이전트의 것입니다. Phantom 은 Claude Agent SDK 위에서 동작하며, Slack, 웹 채팅(/chat), 자체 이메일 주소, Telegram, 웹훅 같은 여러 채널로 사용자와 연결됩니다.

Phantom 은 챗봇이 아니라 동료(co-worker)를 지향합니다. 자신의 도구를 직접 만들고, 허락을 구하지 않고 인프라를 구축하며, 매 세션이 끝날 때마다 스스로 설정을 다듬어 사용자의 일에 점점 더 능숙해집니다. 아래에서는 실제 프로덕션 Phantom 이 만든 것들, 자기 진화 방식, 아키텍처와 주요 기능, 그리고 설치 방법을 정리합니다.

Phantom 이 자기 컴퓨터에서 실제로 한 일

원문에 따르면 아래 사례들은 목업이 아니라 프로덕션 Phantom 인스턴스에서 실제로 일어난 일입니다.

  • 바닥부터 분석 플랫폼 구축 : 데이터 분석을 도와달라는 요청을 받은 Phantom 이 자기 VM 에 ClickHouse 를 직접 설치하고, Hacker News 전체 데이터셋(2007–2021년, 2,870만 행)을 적재한 뒤, 인터랙티브 차트가 있는 대시보드와 데이터를 조회하는 REST API 를 만들었습니다. 그리고 그 API 를 MCP 도구로 등록해 이후 세션과 다른 에이전트도 쓸 수 있게 했습니다. 아무도 이걸 만들라고 지시하지 않았고, 분석이 유용하겠다고 스스로 판단해 전체 스택을 세운 것입니다.
  • 자신에게 없던 채널을 스스로 추가 : Phantom 은 Slack · Telegram · 이메일 · 웹훅 채널을 기본 제공하지만 Discord 는 없습니다. "Discord 로도 대화할 수 있나요?" 라는 질문에, Phantom 은 아직 연결되어 있지 않다고 솔직히 답한 뒤 직접 만들겠다고 했습니다. Discord Bot API 를 설명하고, 사용자에게 애플리케이션 생성 절차를 안내하고, 토큰을 안전하게 제출할 매직 링크를 제공한 다음, 토큰이 저장되자 컨테이너를 띄워 Discord 에 실제로 접속했습니다.

  • 자기 인프라 모니터링 : 한 Phantom 은 GitHub 스타 3개짜리 경량 오픈소스 시스템 모니터 Vigil을 발견해 기존 ClickHouse 인스턴스에 통합하고, 30초마다 지표를 옮기는 동기화 파이프라인과 서비스 상태 · 컨테이너 · 네트워크 · 디스크 I/O 를 보여주는 실시간 모니터링 대시보드를 만들었습니다.

Phantom 의 자기 진화 파이프라인

Phantom 의 핵심 차별점은 자기 진화입니다. 1일 차 Phantom 은 일반적이지만, 30일 차 Phantom 은 사용자의 코드베이스, 배포 절차, PR 관례를 알게 됩니다. 매 세션이 끝난 뒤 여섯 단계를 거칩니다.

  1. 관찰(Observe): 대화에서 교정, 선호, 도메인 사실을 추출합니다.
  2. 비평(Critique): 세션 성능을 현재 설정과 비교합니다.
  3. 제안(Generate): 최소한의 targeted 설정 변경안을 제시합니다.
  4. 검증(Validate): constitution, regression, size, drift, safety 다섯 게이트로 검사합니다.
  5. 적용(Apply): 승인된 변경을 반영하고 버전을 올립니다.
  6. 정리(Consolidate): 관찰 내용을 주기적으로 원칙으로 압축합니다.

안전이 중요한 게이트에는 자기 강화 편향(self-enhancement bias)을 피하기 위해 교차 모델 심판을 씁니다. 메인 에이전트가 Opus 로 돌면 심판은 기본적으로 Sonnet 으로 돌립니다. 세 심판의 투표에 소수 거부권(minority veto)이 있어 한 심판만 반대해도 변경이 막힙니다. 모든 버전이 저장되므로 1일 차와 30일 차를 비교하거나 롤백할 수 있습니다.

Phantom 의 아키텍처와 주요 기능

Phantom 은 Bun 프로세스 하나로 실행되며, 여러 채널을 받아들이는 에이전트 런타임, 메모리 시스템, 자기 진화 엔진, MCP 서버, 역할(Role) 시스템으로 구성됩니다. 상태는 Qdrant(Docker)와 SQLite(Bun)에 저장됩니다.

            External Clients
  Claude Code | Dashboard | Other Phantoms
                    |
          MCP (Streamable HTTP)
                    |
+------------------------------------------+
|        PHANTOM (Bun process)             |
|                                          |
|  Channels       Agent Runtime            |
|  Slack          query() + hooks          |
|  Web Chat       Prompt Assembler         |
|  Telegram       base + role + evolved    |
|  Email          + memory context         |
|  Webhook / CLI                           |
|                                          |
|  Memory System  Self-Evolution Engine    |
|  Qdrant         6-step pipeline          |
|  Ollama         5-gate validation        |
|  3 collections  LLM judges (optional)    |
|                                          |
|  MCP Server     Role System              |
|  8 universal    YAML-first roles         |
|  + role tools   Onboarding flow          |
|  + dynamic      Evolution focus          |
+------------------------------------------+
            |                |
       +---------+      +---------+
       | Qdrant  |      | SQLite  |
       | Docker  |      |   Bun   |
       +---------+      +---------+

주요 기능은 다음과 같습니다.

  • 자기만의 컴퓨터 : 에이전트가 전용 머신에서 소프트웨어를 설치하고 24시간 인프라를 운영합니다.
  • 모델 선택(Bring your own model) : Anthropic(기본), Z.AI(GLM-5.1), OpenRouter, Ollama, vLLM, LiteLLM, 그리고 Anthropic Messages API 호환 엔드포인트를 YAML 로 골라 씁니다. 개발팀은 Z.AI 의 GLM 계열이 비슷한 코딩 품질에서 Claude Opus 보다 약 15배 저렴하다고 설명합니다.
  • 영속 메모리 : Qdrant 와 Ollama 임베딩 기반의 3계층 벡터 메모리로, 월요일에 말한 것을 수요일에 다시 씁니다.
  • 동적 도구 : 실행 중에 자신의 MCP 도구를 만들어 등록하며, 재시작 후에도 유지됩니다.
  • 암호화된 시크릿 : 자격증명을 설정 파일에 평문으로 두지 않고 AES-256-GCM 으로 암호화하며, 매직 링크 인증 폼으로 수집합니다.
  • 이메일 정체성 : 모든 Phantom 이 자기 이메일 주소를 가져, Slack 밖의 사람에게도 보고서를 보낼 수 있습니다.
  • MCP 서버 : Claude Code 나 다른 Phantom 이 여기에 연결할 수 있는 API 역할을 합니다.

모델 백엔드 전환은 YAML 두어 줄로 끝납니다.

# phantom.yaml
model: claude-opus-4-7
provider:
  type: zai
  api_key_env: ZAI_API_KEY
  model_mappings:
    sonnet: glm-5.1

Phantom 설치하기

Docker Compose 로 시작하는 방법이 권장됩니다.

curl -fsSL https://raw.githubusercontent.com/ghostwright/phantom/main/docker-compose.user.yaml -o docker-compose.yaml
curl -fsSL https://raw.githubusercontent.com/ghostwright/phantom/main/.env.example -o .env
# .env 편집 - ANTHROPIC_API_KEY, Slack 토큰, OWNER_SLACK_USER_ID 추가
docker compose up -d

메모리를 위한 Qdrant 가 뜨고, Ollama 가 임베딩 모델을 내려받은 뒤 에이전트가 부팅합니다. http://localhost:3100/health 에서 상태를 확인할 수 있습니다. 설치 없이 전용 VM 위에서 바로 쓰고 싶다면, Anthropic API 키만 가져오면 머신을 제공하는 무료 관리형 옵션(ghostwright.dev/phantom)도 있습니다.

한 가지 주의할 점이 있습니다. 기본 docker-compose.yaml 은 샌드박스 코드 실행 등을 위해 /var/run/docker.sock 을 컨테이너에 마운트하는데, 이는 Docker 데몬에 대한 root 에 준하는 접근 을 부여합니다. 개발팀은 이를 의도된 아키텍처 트레이드오프로 설명하며, 개인 워크스테이션이 아닌 전용 머신이나 VM 에서 Phantom 을 돌리라고 권합니다. 자세한 위협 모델은 저장소의 docs/security.md에 정리되어 있습니다.

연결한 뒤에는 Claude Code 에서 MCP 로 Phantom 에 접속할 수 있습니다.

claude mcp add phantom https://your-phantom.ghostwright.dev/mcp \
  --transport http \
  --header "Authorization: Bearer YOUR_TOKEN"

Phantom 의 라이선스

Phantom 은 Apache License 2.0으로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용하고 수정 · 배포할 수 있습니다.

:house: Phantom 공식 홈페이지

:octopus: Phantom 프로젝트 GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! 텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다. :smiley:

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: