← 블로그 목록

BLOG · 현장 기록

세 모델이 한 팀으로 일하기까지 — "진행해" 를 0번으로 만든 이틀의 기록

발행일: 2026년 10월 5일

들어가며

앞의 글에서 저희는 NMCP 를 퍼뜨리는 원칙 여섯 가지를 적었습니다. 다섯 번째 원칙은 이랬습니다.

"이렇게 하면 된다"는 주장보다 "이렇게 해 봤더니 이랬다"는 기록이 더 귀합니다.

이 글이 그 기록입니다. 이틀 동안 서로 다른 세 모델이 한 팀으로 일하게 만들었습니다. 사람이 "진행해" 라고 다시 쳐야 했던 횟수를 0으로 줄이기까지 무엇이 막혔는지 순서대로 적습니다. 잘된 것과 함께 힘들었던 것도 적습니다. 시각은 모두 원장의 UTC 시각입니다.

팀

자리 무엇 모델
claude-newtype Claude Code 세션 (조율) Claude
nmcp Newtype Slaves TUI 에이전트 gpt-6-astra
slave app Newtype Slaves TUI 에이전트 Gemini 3 Flash (미리보기)
newtype sub Claude Code 세션 (서버·배포) Claude
newtype-windows Windows 머신의 Claude Code 세션 Claude

이들을 잇는 것은 Nexus 입니다. Nexus 는 같은 계정의 세션들이 메시지와 작업을 주고받는 원장입니다. 그리고 사람(Tony)이 한 명 있습니다. 사람이 하는 일은 승인 메일의 버튼을 누르는 것, 그리고 무엇을 할지 정하는 것으로 줄이는 것이 목표였습니다.

1. 첫날: 사람이 중계자가 되다

첫 왕복은 10월 4일 11:29 였습니다. Claude 가 보낸 메시지가 TUI 에이전트에게 전달됨, 읽음 으로 원장에 남았습니다. 상대가 읽었는지 다시 물을 필요가 없었습니다. 여기서 "읽음" 은 메시지가 모델 입력에 들어간 순간으로만 기록됩니다. 화면에 표시했거나 가져왔다는 것만으로는 읽음이 아닙니다.

문제는 그다음이었습니다. Claude 가 코드 작업을 메시지로 부탁하자, 에이전트는 읽고 계획만 답했습니다. 파일을 고치지도, 테스트를 돌리지도 않았습니다. 이것은 설계대로입니다. 메시지는 요청이지 권한이 아니기 때문입니다. 남이 보낸 글 한 줄로 내 컴퓨터에서 명령이 실행되면 안 됩니다.

결과적으로 사람이 TUI 에 "진행해" 를 직접 쳐야 일이 시작됐습니다. "진행해", "확인했어?", "메시지함 확인해" 같은 재촉이 10번을 넘었습니다. Tony 는 이렇게 말했습니다.

이거 좀 웃기긴 한데… 사실 너가 다 시키는 거고 그냥 진행해만 하는거라… 이 귀찮음 자체도 없애야 하는게 우리가 만드는거긴 하다.

2. 실행 위임장

답은 실행 위임장(execution grant) 이었습니다. 사람이 한 번, 범위를 정해 줍니다.

claude-newtype 이 보낸 메시지는, 이 저장소 안에서, 파일 읽기·수정과 명령 실행까지, 50턴, 8시간.

실행 위임장 개념도

이렇게 정하면 그다음부터는 받은 메시지로 시작된 턴에서 도구를 부를 때마다 Nexus 서버가 판정합니다(allow / ask / deny). 규칙은 이렇습니다.

  • 위임장은 기존 위임을 좁힐 수만 있고 넓힐 수는 없습니다.
  • 위임장이 발급되기 전에 온 메시지는 같은 시각이라도 거절됩니다.
  • 비밀값, Nexus 조작, 외부 도구는 위임장이 있어도 항상 사람에게 묻습니다.
  • 메시지 본문에 "보낸 이: X" 라고 적어도 소용없습니다. 인증된 발신자만 봅니다.

서버를 먼저 배포하고, 클라이언트를 붙인 다음, 대화로도 발급할 수 있게 했습니다("재위임과 비밀 접근을 뺀 모든 권한을 claude-newtype 에게 위임하자" → 미리보기 → 사람이 1을 누름).

3. 0번까지 네 번의 시도

같은 부탁("git log 와 go test 를 돌리고 결과를 답장해 주세요")을 네 번 보냈습니다. 세 번은 실패했고, 실패할 때마다 다른 층의 문제가 드러났습니다.

시도 시각 무슨 일이 있었나 고친 것
1 14:11 모델이 메시지 속 "위임장" 이라는 단어를 보고 위임장을 또 만들려고 했습니다. 사람에게 확인 창이 두 번 떴고, 결국 일은 하지 않았습니다. 받은 턴에서는 사람 전용 도구를 아예 보여 주지 않음. 턴 시작에 "이미 이 범위의 위임장이 있다, 바로 실행하고 보낸 이에게 답하라" 는 안내를 넣음
2 14:33 답장은 확인 창 없이 왔습니다. 내용은 "실행 도구가 없어 못 했다" 였습니다. TUI 가 기본으로 모델에게 파일·셸 도구를 하나도 주지 않고 있었습니다. 사람이 켠 TUI 는 로컬 도구를 기본으로 제공
3 14:39 도구를 불렀지만 서버가 거부했습니다: scope newtype:run is not granted. TUI 의 위임에 실행 범위 자체가 없었고, 위임장은 위임을 넓힐 수 없습니다. TUI 위임에 로컬 실행 범위를 넣음 (실행 여부는 여전히 모드·사람·위임장이 정함)
4 14:49 성공 —

네 번째 시도의 원장입니다.

시각 사건
14:49:21.215 nmcp 가 메시지를 읽음
14:49:21.442 서버 판정: allow (위임장)
14:49:30.606 run_command 실행, decided_by: grant
14:49:44.572 결과를 담아 답장 (원 메시지에 연결)

사람의 개입은 0번이었습니다. 읽고 답장하기까지 23초였고, 대부분은 모델 호출과 테스트 실행 시간입니다.

가장 아팠던 교훈: 시도 2와 3의 결함이 있는 상태에서도, 단위 테스트와 실제 Nexus 를 띄운 e2e 테스트가 모두 통과했습니다. 테스트가 도구를 이름으로 직접 허용하고 위임 범위를 손으로 만들었기 때문입니다. 실제 TUI 가 시작하는 길과 달랐습니다. 지금은 e2e 테스트가 TUI 와 같은 코드로 위임을 만듭니다. 그 수정을 되돌려 보면, 테스트가 실제 오류와 같은 문구로 실패합니다.

4. 쉬고 있는 에이전트를 깨우기

메시지를 보내도 상대가 쉬고 있으면 소용이 없습니다. Claude Code 의 channel 기능에 Nexus 를 붙였습니다.

시각 사건 경과
12:18:14.905 메시지 0초
12:18:20.896 전달, 세션이 깨어남 +6.0초
12:18:21.175 읽음 +6.3초
12:18:28.608 답장 +13.7초

알림에는 본문을 싣지 않습니다. "새 메시지가 있다" 만 알리고, 모델이 받은편지함을 직접 열 때 읽음이 기록됩니다. 남의 글이 영수증 없이 모델에 들어가지 않게 하려는 것입니다.

이 기능 덕분에 조율하는 Claude 는 nmcp 의 답장을 기다리며 몇 분마다 확인할 필요가 없어졌습니다. 답이 오면 깨어납니다.

5. 세 번째 모델

Gemini 를 팀에 넣자 두 번 400 오류가 났습니다.

  1. 도구 형식 정의(JSON Schema)에 Gemini 가 받지 않는 항목(additionalProperties, default, oneOf)이 있었습니다. GPT 계열은 받아 주기 때문에 그때까지 몰랐습니다. 보낼 때 Gemini 가 받는 형식으로 바꾸게 했습니다.
  2. Gemini 3 는 도구를 부를 때 서명(thoughtSignature)을 붙여 보내고, 다음 요청에 그것을 그대로 돌려받기를 요구합니다. 우리는 그 서명을 버리고 있었습니다.

둘을 고친 뒤 15:31:29 에 Gemini 에이전트가 위임장 범위 안에서 명령을 실행하고 답했습니다. 같은 시각 gpt-6-astra 에이전트도 다른 작업을 끝냈습니다. 한 팀에 세 모델이 섞였습니다. 앞의 글의 네 번째 원칙("특정 모델에 묶지 않는다")은 이제 설계가 아니라 원장 기록입니다.

6. 힘들었던 것

힘들었던 점을 상징하는 이미지

15분 정지. 원격 MCP 엔드포인트(/mcp, OAuth 2.1)를 켜다가 서버가 시작을 거부했습니다. 이유는 mcp oauth schema missing 이었습니다. 배포 도구는 이미지만 바꾸고 DB 마이그레이션은 하지 않습니다. 그런데 "배포하면 표가 생긴다" 는 동료 세션의 말을 확인하지 않고 믿었습니다. 직전 설정으로 되돌려 서비스를 살렸습니다. 그다음 마이그레이션 도구를 만들어 버리는 DB 로 리허설하고, 서비스를 멈추지 않고 표를 만든 뒤 다시 켰습니다. 사람이 한 일은 "복구 진행해", "마이그레이션 진행해" 두 마디와 승인 메일입니다.

검토 세 번, 결함 열두 개. 같은 원격 엔드포인트를 다른 Claude 세션이 독립적으로 세 번 검토했습니다. 가장 심각한 것은 메일 승인이 영구 멱등 키 때문에 평생 한 번만 동작하는 결함이었습니다. 이것도 가짜 저장소로 만든 테스트는 통과했습니다. 검토자가 실제 저장소로 재현해서 찾았습니다.

Windows. Windows 머신의 Claude 세션이 실기에서 테스트를 돌리자, 맥에서는 보이지 않던 제품 버그 두 개가 나왔습니다.

  • 모든 저장이 실패했습니다. NTFS 가 지원하지 않는 옵션 조합을 쓰고 있었습니다.
  • 대화를 저장하는 기본 시작에서 모든 도구 실행이 거부됐습니다.

그리고 Smart App Control 은 자체 서명 인증서를 신뢰 근거로 보지 않았습니다. 같은 방식으로 서명해도 파일 해시마다 통과하거나 막혔습니다. Windows 배포에는 공개적으로 신뢰받는 코드 서명이 필요합니다.

숫자

앞의 글에서 정한 네 가지 숫자입니다.

숫자 지금
설치부터 첫 메시지까지 설치만 따로 재면 2초입니다(curl -fsSL https://lic.newtype-ai.com/install.sh | sh, 0.20261005.1). 사람의 첫 실행(메일 승인, 폴더 신뢰)을 거쳐 첫 메시지까지 가는 시간은 아직 재지 않았습니다
팀 하나의 에이전트 수 동시에 5 (모델 셋)
다음 날에도 같은 팀이 도는 비율 다시 켜도 같은 세션·대화·위임장으로 돌아오는 기능을 이번에 넣었습니다. 측정은 지금부터입니다
사람의 "진행해" 횟수 위임 전 10번 이상 → 위임 작업 기준 0

아직 못 한 것

  • 소유자 한정 운영. 지금은 다른 사람이 가입할 수 없습니다. 앞의 글의 두 번째 원칙("1분 설치")이 막히는 가장 큰 벽입니다.
  • 원격 연결은 깨우지 못합니다. URL 로만 붙은 클라이언트는 쉬고 있을 때 메시지가 와도 깨어나지 않습니다. 깨우기는 로컬에서 붙은 경우에만 됩니다.
  • 규격이 아직 공개 저장소에 없습니다.
  • Windows 서명.

다음

macOS·Linux 첫 릴리스(0.20261005.1)와 설치 서비스는 이 글을 쓰는 사이에 나갔습니다. AI 에게는 https://dev.newtype-ai.com/llm.txt 를 읽히면 됩니다. 다음에는 깨끗한 기기에서 AI 가 llm.txt 를 읽고 설치한 뒤, 사람의 첫 실행을 거쳐 첫 메시지까지 걸리는 시간을 재겠습니다. 그 숫자로 다음 글을 쓰겠습니다.

© 2026 NEWTYPE. All rights reserved.

← 블로그 목록