대니
danny's blog@dannywon_dev
발행 10 · 대기 36

1인 개발자. 클로드 코드를 팀처럼 굴린다. 매일 겪은 것만 쓴다.

AI 팀 꾸리기 09/108

매번 다시 물었다 — 문서가 아니라 화면이 답해야 하는 것

터미널에 AI 세션을 세 개, 많으면 다섯여섯 개 띄워놓고 일해본 사람이면 이 망설임을 알 것이다. 체크포인트도 돌렸고 커밋 푸시까지 끝냈는데, 창을 닫으려는 순간 손이 멈춘다. 이 세션 메모리 저장됐나. 문서는 반영됐나. 안 됐으면 어떡하지.

8월 3일에 이 말을 그대로 적었다.

"체크포인트를 돌리고 커밋 푸시까지 끝낸 경우에 세션을 종료해도 되는지 헷갈려. 이 세션 메모리, 문서, 모두 저장됐나? 안 됐으면 어떡하지? 하고 이미 다 저장했는데도 또 물어보는 일이 계속 발생함."

정리 절차를 담당하는 스킬 파일을 열어봤다. 맨 아래에 이미 이렇게 적혀 있었다.

"커밋까지 완료된 뒤엔 세션을 종료하거나 컨텍스트를 압축해도 안전하다 — 결과물은 파일·git·메모리에 남아 다음에 이어갈 수 있다."

답은 이미 문서에 있었다. 내가 쓴 문장이고 틀린 내용도 아니었다. 그런데 아무 역할도 못 하고 있었다. 창을 다섯 개 띄워놓은 사람에게 필요한 건 "일반적으로 안전하다" 가 아니라 "지금 이 창이 안전한가" 였고, 그건 문서가 대답할 수 있는 종류의 질문이 아니다.

터미널 아래쪽에 상태 표시줄이 이미 있었다. 폴더·모델·컨텍스트 사용량·사용 한도가 뜬다. 거기에 한 줄을 더 붙였다.

세션 종료 ✅ 가능    ·   내 작업 7개 저장됨 · 체크포인트 12분 전
세션 종료 🔴 불가능   ·   커밋 안 함 6 (.claude) · 체크포인트 안 함

「이 폴더」로 판정하면 신호가 죽는다

처음 떠오른 구현은 단순했다. 지금 폴더 git 상태를 보고, 커밋 안 한 게 없고 푸시까지 됐으면 초록. 열 줄이면 된다.

그런데 이 환경에선 한 폴더를 세션 둘이 동시에 무는 게 정상이다. 창 두 개가 같은 저장소를 열어놓고 서로 다른 작업을 한다. 그러면 내 쪽 일이 다 끝났어도 옆 창이 파일을 고치는 중이라 내 신호등이 빨개진다. 그리고 몇 번 그러고 나면 사람은 빨간불을 무시하기 시작한다. 안전장치가 잡음이 되는 순간 그건 이미 죽은 것이다.

판정 범위를 「이 세션이 직접 고친 파일」 로 좁혔다. 대화 기록에서 파일을 쓴 기록만 뽑고, 그 파일들이 커밋·푸시됐는지만 본다. 남이 만든 변경은 맨 뒤에 회색으로 다른 변경 2 라고만 붙인다. 알려주되 판정에는 넣지 않는다.

기록 파일이 수십 MB까지 자라기 때문에 매번 전부 읽으면 느리다. 읽은 위치를 저장해두고 새로 늘어난 부분만 파싱하게 했다. 측정해보니 30밀리초였다.

숫자는 맞았는데 뜻이 틀렸다

만들어서 띄웠더니 커밋 안 함 6 이 떴다. 곧바로 이렇게 물었다.

"지금 커밋할 거 체크해보니까 1개밖에 없는데? 왜 커밋 안 함 6으로 나오지?"

git 도구를 열어보니 정말 1개였다. 신호등은 6이라고 하고 있었다.

둘 다 맞았다. 그 1개는 노트 저장소 것이고, 6개는 설정 저장소(~/.claude) 것이었다. 그날 작업이 설정 쪽이었으니 6이 맞다. 문제는 화면에 저장소 이름이 없었다는 점이다.

이 환경에선 노트 폴더에 앉은 채로 다른 저장소를 고치는 일이 흔하다. 그래서 판정 대상은 자연히 「내가 고친 파일이 실제로 들어 있는 모든 저장소」가 되는데, 이름을 안 붙이면 읽는 사람은 당연히 지금 열어놓은 폴더 얘기로 읽는다.

괄호를 붙였다. 커밋 안 함 6 (.claude). 여러 곳에 걸치면 커밋 안 함 7 (.claude 6 · 노트 1). 숫자가 맞다고 정보가 전달되는 게 아니었다. 어디 숫자인지가 빠지면 틀린 정보와 같다.

만든 안전장치가 첫 사용에서 거짓말을 했다

정리 작업이 끝나면 「여기까지 정리됨」 도장을 찍고, 신호등이 그걸 읽어 시각을 표시한다. 도장 파일 이름은 현재 폴더 경로로 만든다.

첫 실사용에서 바로 틀렸다. 커밋도 푸시도 다 끝냈는데 화면엔 체크포인트 이후 변경 이 남아 있었다.

원인은 한 글자짜리였다. 커밋하려고 cd 로 설정 폴더에 들어간 상태에서 도장을 찍었더니 그 폴더 이름으로 저장됐다. 신호등은 세션 폴더 기준으로 찾으니 영영 못 만난다.

고친 방식이 중요하다. "cd 한 뒤에 찍지 말 것" 이라고 주의를 적는 건 이 글이 말하는 실패를 그대로 반복하는 것이다. 적어둔 규칙은 그 순간에 안 켜진다. 대신 둘을 넣었다. ① 커밋할 때 cd 대신 폴더를 인자로 주는 방식(git -C)을 쓰게 해서 함정 자체를 안 만들고, ② 도장을 찍은 직후 파일 이름을 출력해 그 자리에서 눈으로 확인하게 했다.

그리고 경고를 써넣은 직후에 또 밟았다. 같은 날 다음 정리 작업에서 도장이 또 엉뚱한 곳에 찍혔다. 이번엔 블로그 저장소 폴더 이름으로. 앞선 조회 명령에서 폴더를 옮겼고, 셸 작업 폴더가 명령 호출 사이에 그대로 유지된다는 걸 계산에 안 넣었다.

주의 문구를 그 파일에 직접 써넣은 지 몇 분 만이었다. 내가 쓴 경고를, 내가, 읽은 상태에서 밟았다.

그래서 고친 방식을 다시 고쳤다. 현재 폴더를 읽어오는 방식을 아예 버리고, 작업 폴더 경로를 직접 박아 넣게 했다. 틀릴 수 있는 자리를 없애는 쪽이, 틀리지 말라고 적어두는 쪽보다 언제나 낫다.

형식을 고르는 문제가 아니었다

신호등을 만든 뒤엔 정리 작업이 끝났을 때 내놓는 보고 형식이 도마에 올랐다. 뭔가 구조화된 규칙이 있으면 좋겠는데 가능한가 싶었다.

형식 세 가지가 나왔다. 라벨 정렬 / 표 / 3줄 압축. 고르려는데 클로드가 페르소나를 만들어 의견을 들어보자고 했다. 읽는 사람이 한 명뿐인데 페르소나 리뷰가 되나 싶었는데, 「맥락이 다른 같은 사람」 으로 잡으니 말이 됐다. 세션 다섯 개 돌리다 이 창으로 돌아온 사람. 새벽 2시에 끄고 자려는 사람. 사흘 뒤에 돌아와 "그때 뭐 했더라" 하는 사람. 폰으로 이어받아 좁은 화면을 보는 사람. "이거 왜 매번 이렇게 길어?" 하는 사람.

다섯 중 넷이 형식이 아니라 순서에서 걸렸다.

  • 마감이 여덟 번째 줄에 있었다. 「위험·시한은 맨 앞에」라는 규칙을 내가 직접 써놨는데, 『⏰ 마감 하나 짚는다』라는 소제목을 달아 아래쪽에 놓고는 지켰다고 여기고 있었다. 새벽에 초록불만 보고 끄는 사람은 그걸 못 본다.
  • 「무슨 구간이었나」를 담을 칸이 아예 없었다. 칸이 전부 산출물(메모리 몇 건·문서 몇 개·커밋 몇 개)이라, 사흘 뒤에 읽으면 "그래서 뭘 한 날이지" 가 어디에도 없다.
  • 커밋 해시를 적고 있었다. 그건 내가 일했다는 증빙이지 사람 기억 단서가 아니다.

덤으로 하나 더 걸렸다. 추천하려던 「라벨 정렬」안은 미리보기에선 깔끔했는데, 실제 화면은 마크다운이라 연속된 공백이 한 칸으로 접혀 정렬이 통째로 무너진다. 미리보기 상자가 고정폭 글꼴이라 멀쩡해 보였을 뿐이다.

그래서 뭘 바꿨나

  • 상태 표시줄에 4번째 줄 신설세션 종료 ✅ 가능 / 🔴 불가능. 판정은 「이 세션이 고친 파일」만, 숫자에는 저장소 이름을 붙인다. 다른 세션이 푸시하면 따라 갱신되게 30초 주기도 걸었다.
  • 정리 스킬에 도장 절차와 보고 규격 고정 — 판정 → 시한 → 한 것 → 저장한 것(표) → 정할 것. 「한 것」 칸을 새로 만들었고, 개수만 나열하는 걸 금지했다. "메모리 2건" 은 내가 일한 양이지 읽는 사람이 알아야 할 내용이 아니다.
  • 「맨 앞」 정의를 못 박았다 — 두 번째 줄까지다. 소제목을 달아 아래에 놓으면 형식만 갖춘 것이지 맨 앞이 아니다.
  • 페르소나 리뷰에 케이스 추가 — 독자가 한 명인 물건은 「맥락이 다른 그 사람」으로 뽑는다.

이번에 고친 것 중 새로 알아낸 사실은 하나도 없다. 세션을 꺼도 파일이 안 사라진다는 것도, 커밋하면 안전하다는 것도, 시한은 맨 앞에 둬야 한다는 것도 전부 이미 문서에 적혀 있었다. 그런데도 같은 질문이 매번 돌아왔다. 문서는 찾아가서 읽어야 하고, 그러려면 "내가 지금 이걸 확인해야 한다" 는 걸 먼저 알아야 한다. 뭘 모르는지 모르는 상태에서는 문서가 켜지지 않는다.

판정 한 줄을 얻었다. 적어두는 것으로 될 일인가, 그 순간 눈에 보여야 할 일인가. 후자인데 문서로 적어두면 해결한 게 아니라 해결했다고 믿게 되는 것이라 더 나쁘다.

← 목록으로