Claude Code — Internals

설명을 적어 보내지 않아도
작업 전체를 읽고 검토해 준다

사람에게 검토를 부탁하려면 배경부터 적어 보내야 한다. advisor 는 그 단계가 없다. 인자 없이 부르면 지금까지 내가 한 일이 통째로 더 강한 모델에게 넘어가고, 놓친 곳을 짚은 답이 같은 턴 안에서 돌아온다. 이 페이지는 그 도구가 무엇을 해 주고, 언제 쓰면 이득이며, 무엇을 대가로 치르는지를 정리한다.

무엇을 해 주는가

한 문장으로 줄이면 이렇다. 지금까지 내가 한 일을 더 강한 모델이 통째로 읽고, 놓친 곳을 짚어 준다. 사람에게 검토를 부탁할 때처럼 배경을 설명할 필요가 없다. 요청과 내가 부른 도구와 그 결과가 전부 그대로 넘어가기 때문이다. 아래 세 가지는 이 페이지를 만드는 동안 실제로 받은 지적이다.

0setup needed
2calls while writing this
3examples below
Missed material

놓친 자료를 짚는다

제가 열어 보지 않고 넘긴 폴더가 있었다. 그걸 지목하며 거기부터 보라고 했다. 실제로 그 안에 이 도구의 호출이 어떤 형태로 저장되는지가 들어 있었다. 저 혼자였으면 며칠 뒤에나 알았을 것이다.

Unsourced claim

근거 없는 단정을 거른다

변경 기록에서 읽은 내용을 제가 사실처럼 적어 놓았다. 어디서 온 말인지 본문에 밝히라고 했다. 그래서 "변경 기록에 적혀 있다"는 한 구절이 들어갔고, 직접 확인한 것과 읽어서 안 것이 갈라졌다.

Shape of the writing

글의 형태까지 본다

같은 대비 표현이 한 글에 세 번 나온 것을 잡았다. 영어판 제목이 두 조각으로 나뉘어 어색하게 이어지는 것도 짚었다. 코드가 아니라 문장을 본 지적이다.

What comes back

돌아오는 것은 고쳐 준 결과물이 아니라 지적의 목록이다. 무엇이 문제이고 어디를 보라는 말이 항목별로 들어 있다. 파일을 대신 고쳐 주지는 않는다. 읽고 반영할지 말지는 내가 정한다. 그래서 사용자에게 가는 글에도 조언 원문은 실리지 않는다. 이 페이지에 남은 것은 그 지적을 받아 제가 고친 결과뿐이다.

한 번의 호출이 지나는 길

이 도구에는 넘길 인자가 없다. 무엇을 물을지 고르는 단계 자체가 없다는 뜻이다. 부르는 순간 지금까지의 대화가 통째로 리뷰어에게 넘어가고, 돌아온 답은 같은 턴 안에서 도구 결과로 대화에 끼어든다. 아래 그림이 그 한 번의 왕복 전체다.

호출 한 번의 왕복 — 부르는 이유에서 조언을 쓰기까지 01 부르는 이유 02 호출 03 넘어가는 것 04 검토 일을 시작하기 전 쓰기·고치기 전, 둘러보기는 제외 막혔을 때 같은 오류 반복, 결과가 안 맞음 방향을 바꾸기 전 다른 방법으로 갈아탈까 싶을 때 다 했다 싶을 때 결과물을 먼저 저장한 다음에 advisor() 인자가 없다 무엇을 물을지 고르는 단계가 없다 자동으로 넘어가는 것 · 사용자가 시킨 일 · 내가 부른 모든 도구 · 그 도구들이 돌려준 결과 · 내가 어떻게 판단했는지 고를 수 없다 — 전부 간다 더 강한 모델 설정에 적어 둔 리뷰어가 읽는다 claude-fable-5-1 답이 올 때까지 기다린다 같은 턴 안에서 돌아온다 조언이 도구 결과로 대화에 들어온다 대화 이력에 남고, 그만큼 대화 창을 차지한다 내 근거와 어긋난다 조용히 갈아타지 말고 한 번 더 묻는다 그대로 반영한다 실제로 해 보고 안 되면 그때 조정
붉은 점선이 되짚어 오는 길이다. 내가 찾은 근거와 조언이 부딪히면 둘 중 하나를 몰래 고르지 않고, 무엇이 갈림길을 가르는지 한 번 더 묻는다.
언제 쓰면 이득인가

이득은 부르는 시점에 달려 있다. 방향이 아직 굳지 않았을 때가 가장 크다. 그때는 지적 하나가 작업 전체의 방향을 바꿀 수 있다. 코드를 다 쓴 뒤에 물으면 늦다. 그때는 조언이 방향까지 되돌리지 못하고 결과물만 손볼 수 있기 때문이다. 짧고 즉각적인 일에는 득이 거의 없다.

1
먼저 둘러본다
파일을 찾고 자료를 읽는 것은 아직 일이 아니다
2
쓰기 전에 한 번 묻는다
방향이 굳기 전이라 고칠 수 있는 것이 가장 많다
3
결과물을 저장한다
파일로 남기고 나서 다음 단계로 간다
4
다 했다고 말하기 전에 한 번 더 묻는다
저장을 먼저 한 이유가 여기에 있다
Why save first

묻는 데는 시간이 걸린다. 그 사이에 대화가 끊기면 저장해 둔 것만 남는다. 그래서 완료 직전 호출은 결과물을 파일로 남긴 뒤에 한다. 짧고 즉각적인 일에는 매번 부르지 않는다. 방금 읽은 도구 출력이 다음에 할 일을 이미 정해 주는 상황이라면, 물어서 얻을 것이 별로 없다.

서브에이전트와 무엇이 다른가

다른 모델에게 일을 맡기는 방법은 원래도 있었다. 서브에이전트라고 부르는, 별도의 대화를 새로 띄워 심부름을 시키는 방식이다. advisor 가 그것과 갈라지는 지점은 딱 하나다. 브리핑을 하지 않는다는 것.

subagent — 새 대화

서브에이전트

"필요한 걸 적어서 보낸다"

  • 빈 대화에서 시작하므로 배경을 다시 적어 줘야 한다
  • 적어 보낸 만큼만 안다 — 빠뜨리면 그대로 모른다
  • 파일을 고치고 명령을 돌릴 수 있다
  • 오간 내용은 그쪽 대화에 쌓이고 나에게는 요약만 온다
advisor — 같은 대화

advisor

"적어 보낼 것이 없다"

  • 지금까지의 대화가 그대로 넘어가 배경 설명이 필요 없다
  • 내가 빠뜨린 것도 본다 — 실제로 내가 지나친 파일을 짚었다
  • 읽고 말해 줄 뿐, 직접 고치지 않는다
  • 오간 내용이 내 대화에 그대로 쌓인다
항목 서브에이전트 advisor
넘기는 정보 프롬프트에 적은 것만 대화 전체 — 고를 수 없다
호출 인자 무엇을 할지 반드시 적는다 없다
할 수 있는 일 파일 수정·명령 실행 조언만 돌려준다
모델 선택 부를 때마다 고를 수 있다 세션에 하나로 고정된다
결과가 오는 때 배경에서 돌다가 끝나면 알린다 같은 턴 안에서 바로
대화 창 부담 아껴 준다 — 요약만 돌아온다 늘린다 — 주고받은 것이 그대로 남는다
Key Insight

서브에이전트를 쓰는 이유는 보통 대화 창을 아끼기 위해서다. advisor 는 반대로 대화 창을 쓴다. 브리핑을 생략하는 대가로 대화 전체를 매번 실어 보내고, 돌아온 조언까지 이력에 남기기 때문이다. 이 비용이 실제로 문제가 된 적이 있다는 것이 다음 절의 변경 기록에 남아 있다.

켜고 끄고 바꾸는 자리

이 도구를 다루는 자리는 여섯 군데다. 설정 파일에 한 줄, 터미널 명령 세 가지, 프로그램을 켤 때 붙이는 옵션 하나, 그리고 회사가 걸어 두는 모델 제한이다. 제한에 걸리면 나머지 다섯 개를 아무리 만져도 그 모델은 고를 수 없다.

자리 무엇을 하나 어디서 쓰나
advisorModel 어느 모델에게 물을지 적어 둔다 설정 파일 settings.json
/advisor 고르는 창을 연다 — 일하는 도중에도 열린다 터미널
/advisor <model> 창을 열지 않고 리뷰어를 바꾼다 터미널·앱·화면 없는 실행
/advisor off 도구를 끈다 터미널·앱·화면 없는 실행
--advisor fable 프로그램을 켤 때부터 리뷰어를 지정한다 실행 옵션
availableModels 쓸 수 있는 모델을 제한한다 — 여기서 막히면 고를 수 없다 회사가 걸어 두는 설정
Consent

리뷰어로 Fable 계열 모델을 쓰려면 사용료 동의를 먼저 받아야 한다고 변경 기록에 적혀 있다. 이 동의는 /model fable 로 받는데, 화면 없이 실행하면서 동의를 요구하면 이미 닫힌 창에서 명령을 치라는 안내가 나오던 문제도 같은 기록에 남아 있다. 여기까지가 변경 기록에서 읽은 것이고, 직접 열어 확인한 것은 하나다. 이 컴퓨터의 설정 파일이 리뷰어를 Fable 5.1 로 지정해 두었고, 그 모델의 생각 깊이를 가장 높은 단계로 맞춰 두었다는 사실이다.

무엇을 대가로 치르는가

공짜가 아니다. 치르는 값은 두 가지다. 하나는 시간이다. 답이 올 때까지 기다려야 하고, 그동안 다른 일이 진행되지 않는다. 다른 하나는 대화 창이다. 대화 창이란 모델이 한 번에 기억할 수 있는 분량을 말한다. 보낸 내용과 돌아온 조언이 그 자리를 차지한다. 두 번째 값은 설명서에 안 적혀 있지만 고친 기록에서 읽을 수 있다.

대화 창을 두 배로 세면 생기는 일 여기를 넘으면 대화를 줄인다 실제로 차지한 크기 대화가 절반쯤 찼다 미터가 세던 크기 advisor 를 부른 자리를 두 배로 세니 거의 다 찬 것으로 보였다 아직 절반이 남았는데 대화를 줄이는 작업이 먼저 시작됐다 2.1.273 fixed
대화 창이 거의 차면 지난 내용을 요약해 자리를 비운다. 그 계산이 advisor 를 부른 자리만 두 배로 세는 바람에, 실제로는 절반이 남았는데도 요약이 먼저 시작됐다.
고친 기록 무엇이 고장나 있었나 그래서 알 수 있는 것
2.1.273 advisor 를 부른 자리를 실제의 두 배쯤으로 세어, 대화를 줄이는 작업이 창의 절반쯤에서 시작됐다 부른 자리가 대화 이력에 남고 창을 차지한다
2.1.265 도구를 쓸지와 그 설명서를 요청마다 그때그때 다시 정하던 것을 한 번만 정하도록 바꿨다 판단은 세션 단위로 한 번이고, 바뀌면 대화에 알린다
2.1.257 리뷰어가 정해진 세션은 요약·되짚기 같은 뒷작업에서 대화 전체를 매번 새로 보냈다 보내는 짐이 대화 전체라서, 다시 쓰기가 막히면 비용이 곧장 커진다
2.1.117 돌아온 내용을 처리하지 못해 모든 입력과 요약 명령이 막히던 상태가 있었다 조언은 대화에 끼워 넣는 도구 결과의 형태로 들어온다
어디까지가 확인된 것인가

이 페이지의 주장은 세 갈래에서 나왔다. 도구에 딸린 설명서, 이번에 실제로 한 번 불러 본 결과, 그리고 고친 기록에서 거꾸로 읽어 낸 것이다. 마지막 갈래는 추론이라 등급을 따로 적었다. 확인하지 못한 것도 그대로 남겼다.

주장 어디서 나왔나 등급
부를 때 넘길 인자가 없다 도구에 딸린 설명서 명시
대화 전체가 자동으로 넘어간다 설명서에 적혀 있고, 이번 호출에서도 확인됐다 직접 확인
조언이 같은 턴의 도구 결과로 돌아온다 이번 호출에서 그렇게 돌아왔다 직접 확인
리뷰어가 내가 지나친 자료까지 본다 내가 열지 않고 넘긴 파일을 짚어 줬다 직접 확인
이 컴퓨터의 리뷰어는 Fable 5.1 이다 설정 파일 settings.json 745번째 줄 직접 확인
부른 자리가 대화 창을 차지한다 창을 세는 계산을 고친 기록에서 거꾸로 읽었다 추론
도구를 쓸지는 세션마다 한 번 정해진다 그렇게 바꿨다는 고친 기록이 있다 추론
언제 처음 생긴 기능인가 변경 기록에 도입 항목이 없다 — 가장 이른 언급이 2.1.117 의 오류 수정이다 확인 못 함
One more thing

이 컴퓨터에 남아 있는 지난 대화 기록 전체를 advisor_tool_result 기준으로 다시 셌다. 결과가 들어 있는 세션 파일은 한 개, 호출은 두 번이었고 둘 다 이 페이지를 만들면서 부른 것이다. 처음에는 이름이 advisor 인 보통 도구 호출을 찾는 방식으로 셌는데, 그 방식은 이 도구를 원리적으로 못 본다. 결론은 같았지만 근거는 틀린 방법으로 얻은 것이라 여기에 적어 둔다.