resumate 개발일지 03. Nova 에이전트, 파이프라인, 원격 개발
2026-04-01 | Nova 에이전트 교체, 파이프라인 완성, 그리고 모바일 원격 개발 탐구
오늘 한 일 요약
- Forge 에이전트를 Nova로 교체하고 파이프라인 전체 재구성
- 컨텍스트 동기화 & AI 응답 파싱 엣지 케이스 수정
- Claude Code Remote Control 탐구 → 블로그 정리
Forge → Nova: 왜 바꿨나
처음엔 forge 라는 이름으로 에이전트를 만들었다. "단련"한다는 느낌이 좋아서. 그런데 막상 코딩하다 보니 이름이 프로젝트 분위기와 안 맞았다. Nyx, Paws, Echo가 모두 고양이 계열 감성인데, Forge는 혼자 공장 분위기였다.
그래서 nova로 바꿨다. 별이 폭발할 때 나오는 에너지. 취업 준비생이 면접을 통과하는 순간의 느낌에 더 가깝다고 생각했다.
이름만 바꾼 게 아니라 파이프라인 구조도 손봤다.
이전 (Forge):
사용자 입력 → 단일 에이전트 처리 → 출력
이후 (Nova):
사용자 입력 → Nova 오케스트레이터 → Nyx / Paws / Echo 라우팅 → 출력Nova는 이제 독립 에이전트가 아니라 파이프라인 조율자 역할을 맡는다. 사용자 의도를 파악해서 어떤 캐릭터에게 넘길지 결정한다. 코드로 보면 단순한 if-else처럼 보이지만, 실제론 Claude에게 라우팅 판단을 맡기는 구조다.
파이프라인 구현 중 마주친 엣지 케이스
컨텍스트 동기화 문제
멀티 에이전트 구조에서 대화 히스토리를 어떻게 공유할 것인지가 골치였다.
Nyx가 이미 이력서를 분석했는데, Paws에게 "이 이력서를 기반으로 공고 맞춤 수정해줘"라고 하면 — Paws는 이력서를 모른다.
해결책은 생각보다 단순했다. 세션 컨텍스트 스냅샷을 에이전트 전환 시점에 주입하는 것.
Nyx 대화 히스토리 (요약) → Nova → Paws 프롬프트 prefix에 주입Claude CLI의 -p 플래그로 프롬프트를 직접 넘기는 구조라서, 컨텍스트를 텍스트로 직렬화해서 앞에 붙이면 됐다. 우아하진 않지만 동작한다.
AI 응답 파싱 오류
Claude CLI가 stdout으로 뱉는 JSON stream이 항상 예상대로 나오지 않는다.
정상: {"type":"text","text":"안녕하세요..."}
비정상: 빈 줄, 불완전한 JSON, 혼합 텍스트파싱 로직이 JSON.parse() 하나로 끝나던 게 문제였다. 줄 단위로 파싱하고, 실패하면 버퍼에 쌓았다가 다음 줄과 합쳐서 다시 시도하는 로직을 추가했다.
엣지 케이스 수정이라 코드 줄 수는 얼마 안 됐는데, 찾는 데 시간이 더 걸렸다. 재현이 어려운 종류의 버그였다.
오늘의 여담: 소파에서 코딩하기
오후에 외출할 일이 있었다. 노트북을 들고 나가기 귀찮아서 "Claude Code로 원격 제어가 되나?" 를 찾아봤다.
결론: 된다.
구조
내 맥북 (Claude Code 실행 중)
│
│ 아웃바운드 HTTPS (인바운드 포트 없음)
│
▼
Anthropic 서버
│
▼
스마트폰 / 브라우저claude remote-control 명령 하나로 세션 URL과 QR 코드가 뜬다. 스마트폰으로 스캔하면 그 세션에 접속된다. 맥북에서 돌아가는 Claude Code를 스마트폰이 창문처럼 들여다보는 것.
인바운드 포트를 열지 않는 설계가 인상적이었다. 맥북 → Anthropic API로 아웃바운드만 쓰는 폴링 방식이라서 방화벽 건드릴 필요가 없다.
두 가지 방식의 차이
| Remote Control | Claude Code on the Web | |
|---|---|---|
| 실행 위치 | 내 맥북 | Anthropic 클라우드 VM |
| 로컬 파일 접근 | O | X (GitHub 저장소 기반) |
| 맥북 꺼지면 | 세션 종료 | 계속 실행 |
| 사용 상황 | 잠깐 자리 비울 때 | 오래 걸리는 작업 위임 |
오늘은 Remote Control로 Nova 파이프라인 테스트를 스마트폰에서 지시했다. 실제로 동작하는 걸 보니까 신기했다. 소파에서 맥북에 코드를 짜게 만드는 경험.
현재 상태
완료:
- Nova 에이전트 + 파이프라인 (Forge 대체)
- 컨텍스트 동기화 로직
- AI 응답 파싱 안정화
- Nyx / Paws / Echo 라우팅 기반
남은 것:
- 캐릭터별 시스템 프롬프트 취업 특화
- 이력서 PDF 파싱
- 채용공고 URL 스크래핑
- CharacterBlob 3D 컴포넌트 연결
느낀 점
에이전트 이름을 바꾸는 게 사소해 보이지만, 프로젝트 방향을 다시 생각하게 만든다. Nova로 바꾸면서 "이 에이전트가 무엇을 해야 하는가"를 다시 정의했다. 이름이 설계를 끌고 간다.
그리고 엣지 케이스는 언제나 예상보다 많다. 파싱 로직 하나가 몇 줄밖에 안 됐는데, 그게 없으면 응답의 일부가 조용히 사라진다. 조용한 버그가 제일 위험하다.
다음 일지는 이력서 PDF 파싱 구현하면서 쓸 예정.