본문으로 건너뛰기
피드

Wake: 터미널 히스토리를 Claude Code에 연결해주는 도구

devops 약 5분
vote
0
댓글
북마크

터미널 세션을 녹화해서 Claude Code가 개발자의 작업 컨텍스트를 자동으로 파악하게 해주는 Rust 기반 도구. PTY+Shell Hook 하이브리드 아키텍처로 모든 출력을 캡처하고, MCP를 통해 Claude에 계층적 검색을 제공함.

  • 1

    PTY 래퍼 + Shell Hook 하이브리드로 명령 프레이밍과 전체 출력 모두 캡처

  • 2

    MCP 통합으로 Claude Code가 터미널 히스토리를 직접 조회 가능

  • 3

    계층적 검색: 메타데이터+요약 먼저, 필요시 전체 출력 — 토큰 효율적

  • 4

    로컬 LLM(Qwen3-0.6B)으로 명령 출력 자동 요약, API 호출 없음

  • 5

    Rust + tokio + portable-pty로 구현, 21일 자동 세션 정리

  • Wake는 터미널 세션을 녹화해서 Claude Code가 "내가 뭘 했는지" 볼 수 있게 해주는 도구임. 에러 메시지를 복붙하거나 "X도 해보고 Y도 해봤는데 안 됐어"라고 설명하는 대신, AI가 그냥 알고 있는 상태가 되는 거임

PTY + Shell Hook 하이브리드 아키텍처

  • 터미널 활동 캡처에 두 가지 접근이 있었음:
    • Shell Hook만 쓰는 방법: zsh/bash의 preexec/precmd 훅으로 입력한 명령과 종료 코드만 알 수 있음. 하지만 stdout/stderr는 셸을 바이패스해서 터미널로 직행하기 때문에 "무슨 일이 일어났는지"는 모름
    • PTY 래퍼: 사용자 셸을 pseudo-terminal 안에서 실행하고 중간에서 모든 바이트를 관찰. 사용자 경험은 동일하지만 모든 걸 캡처함
  • Wake는 둘 다 씀. Shell Hook이 프레이밍(명령 시작/끝/종료코드)을, PTY가 콘텐츠(실제 출력)를 담당. 훅은 Unix 소켓으로 메인 프로세스와 통신
sequenceDiagram
    participant 사용자 as 사용자 셸
    participant PTY as PTY 레이어
    participant 훅 as Shell Hook
    participant 소켓 as Unix 소켓
    participant DB as SQLite

    사용자->>PTY: 명령 입력
    훅->>소켓: "명령 X 시작"
    PTY->>PTY: 출력 바이트 버퍼링
    사용자->>PTY: 명령 완료
    훅->>소켓: "명령 X 종료 (exit code)"
    PTY->>DB: 명령 + 출력 저장

구현 디테일

  • Rust로 구현, portable-pty로 크로스플랫폼 PTY 처리, 메인 루프는 tokio 비동기
  • 시그널 처리가 생각보다 중요함: SIGWINCH(터미널 리사이즈)를 자식에게 포워딩해야 하고, SIGINT/SIGTSTP도 제대로 처리해야 ctrl-c, ctrl-z가 정상 작동
  • 출력은 두 버전으로 저장: ANSI 이스케이프 코드 포함 raw 바이트 + AI용 plaintext 스트립 버전
  • 5MB 이상 출력은 기본 truncate (설정 변경 가능). npm install 전체 로그를 컨텍스트 윈도우에 넣을 필요는 없으니까

MCP 통합 — 핵심 가치

  • Claude Code의 MCP(Model Context Protocol)를 통해 도구 노출:
    • wake_list_commands → 가벼운 메타데이터 (명령, 종료코드, 출력 크기, 요약)
    • wake_get_output → 특정 명령의 전체 출력
    • wake_search → 전체 히스토리 검색
  • 계층적 검색(tiered retrieval)이 핵심 설계: 먼저 메타데이터+요약을 보여주고, Claude가 관련 있다고 판단한 것만 전체 출력을 가져옴. 토큰 낭비 방지

로컬 LLM 요약

  • v0.6.0부터 llama.cpp + Qwen3-0.6B (~380MB)로 로컬 LLM 요약이 기본 활성화됨
  • 명령 완료 시 자동으로 요약 생성. "테스트 3개 실패: auth timeout, null pointer, missing mock" 같은 식으로 Claude가 전체 출력 안 봐도 맥락을 파악할 수 있게 해줌
  • CPU만으로 동작, API 호출 없음 — 터미널 히스토리가 로컬을 떠나지 않음

중요

> 설치 한 줄 (curl ... | sh), 초기화 한 줄 (eval "$(wake init zsh)"), MCP 연결 한 줄 (claude mcp add ... wake-mcp)로 세팅 가능. 21일 지난 세션은 자동 정리됨

AI 코딩 어시스턴트의 가장 큰 약점 중 하나가 '개발자가 이전에 뭘 했는지 모르는 것'인데, 이걸 터미널 레벨에서 해결하는 깔끔한 접근. MCP의 실용적 활용 사례로도 인상적.

댓글

댓글

댓글을 불러오는 중...

devops

포드가 AI 데이터센터 붐 수혜주로 뜬 이유는 자동차가 아니라 ESS였다

포드의 에너지 저장 사업이 AI 데이터센터 건설 붐을 타고 새 성장축으로 주목받고 있어. 전기차 수요 둔화로 남는 배터리 생산능력을 데이터센터·전력망용 ESS로 돌리는 전략이고, EDF 북미 사업체에 2028년부터 연간 4기가와트시 규모 공급 계약까지 체결했어.

devops

클라우드 빅3 차별화 논쟁, 정작 컴퓨트·스토리지는 거의 범용재가 됐다는 얘기

클라우드 업체들은 인공지능, 데이터베이스, 전용 서비스로 차별화를 강조하지만, 대부분의 기업 워크로드는 여전히 컴퓨트와 스토리지 위에서 돌아간다는 주장이다. AWS, 애저, 구글 클라우드의 핵심 인프라는 성숙도가 높아져 실질 역량 차이가 줄었고, 아키텍트는 브랜드보다 워크로드 적합성·비용·거버넌스·운영 정합성을 봐야 한다는 내용이다.

devops

DynIP, RFC 2136·IPv6·DNSSEC 지원하는 동적 DNS 서비스 공개

DynIP는 홈랩, 엣지 라우터, 인프라 팀을 겨냥한 동적 DNS(DDNS) 서비스다. 60초 안팎의 전파, RFC 2136 TSIG 기반 라우터 업데이트, 개인 도메인 연결, IPv6와 DNSSEC 지원을 핵심 기능으로 내세운다.

devops

깃허브 액션, 내부 데이터베이스 마이그레이션 여파로 4시간 지연

깃허브에서 2026년 5월 12일 13:41부터 17:43 협정세계시까지 일부 서비스 처리 지연이 발생했음. 내부 데이터베이스 마이그레이션으로 복제 지연이 생겼고, 작업 큐에 쌓이는 요청을 처리할 워커가 부족해진 게 원인이었음.

devops

AI 강국 경쟁, 결국 전기와 데이터센터 싸움으로 간다

AI 경쟁의 핵심이 모델과 반도체만이 아니라 안정적인 전력 확보로 이동하고 있다는 분석이야. 글로벌 데이터센터 전력 사용량은 2024년 400TWh에서 2030년 800TWh, 2050년 3500TWh 이상으로 커질 전망이고, 한국도 AI 데이터센터와 에너지 전략을 같이 설계해야 하는 상황이야.