AI
글 40편 · 학습 노트 1편 포함
-
태스크 계약에는 금지가 아니라 값을 쓴다
사람이 낸 결함 다섯이 전부 계약에서 났고, 그 계약을 어느 검문도 보지 않았다
한 줄로 루프가 낸 결함을 거슬러 올라가 보니, 사람이 낸 결함 다섯이 전부 계약에서 났다. 그리고 그 계약을 어느 검문도 보지 않고 있었다. 루프는 계약을 충실히 따랐고, 계약이 비어 있는 곳에서는 스스로 기본값을 골랐다. 교훈은 한 줄이다 — "X 하지 않는다" 가 아니라 "Y...
-
무인 루프의 최소 뼈대는 세 조각이다
드라이버 · 판정 CLI · 게이트 1 — 이 셋만으로 하룻밤을 돌릴 수 있다
한 줄로 무인 루프의 최소 뼈대는 세 조각이다. 세션을 띄우는 드라이버, 상태를 바꾸는 유일한 입구인 판정 CLI, 기계 검사인 게이트 1. 1편의 원칙을 코드로 옮긴 결과이고, 이 셋만으로 하룻밤을 돌릴 수 있다. 판정 권한이 세션 밖에 있다 세션은 구현과 커밋만 한다. 태스크를...
-
무인 루프의 게이트가 못 잡는 것들
검문은 "주어진 테스트가 통과하는가"만 잰다 — 테스트가 틀렸거나 테스트가 안 보는 곳에서 깨지면 초록이 나온다
한 줄로 검문을 세 겹으로 세워도 뚫리는 자리가 있다. 검문은 “주어진 테스트가 통과하는가” 를 잰다. 테스트 자체가 틀렸거나 테스트가 보지 않는 곳에서 깨졌으면 검문은 초록을 낸다. 그리고 완주는 배포 가능을 뜻하지 않는다 — 태스크 11개가 전부 통과한 뒤 보안 점검에서 공격 ...
-
무인 루프에서 완료 판정은 누가 하나
AI가 "끝났다"고 말해도 안 믿는다 — 완료 도장은 테스트와 git 을 직접 보는 프로그램이 찍는다
한 줄로 사람 없이 밤새 도는 AI 코딩 루프를 업무 프로젝트에서 만들어 운영했다. 핵심은 AI를 믿는 것이 아니라, AI가 “끝났다”고 말해도 믿지 않는 구조다. AI는 일만 하고, 합격 판정은 테스트와 git 을 직접 보는 프로그램이 낸다. 이 글은 7편 연재의 1편으로, 정의...
-
매일 밤 돌리자 구현이 아니라 운영이 깨졌다
권한 우회의 대가, base 브랜치를 안 갈라 날린 482줄, 측정되지 않는 지표가 사람 검문을 없애라고 권한 일
한 줄로 루프를 하룻밤 돌리는 것과 매일 밤 돌리는 것은 다른 일이다. 코드보다 운영이 문제가 된다. 권한 우회의 대가를 무엇이 받치는지, 작업 트리만 갈라서 482줄을 날린 일, 그리고 측정할 데이터가 없는 지표가 매일 아침 “사람 검문을 없애도 된다”고 권했던 일을 적는다. 멈...
-
기획도 루프로 돌렸다 — 물음을 먼저 쓰게 했다
시험 문제를 내는 패스와 답안을 쓰는 패스를 갈랐다. 물음 파일은 읽기 전용이라 답하는 쪽이 문제를 고치지 못한다
한 줄로 코딩 루프를 돌리고 나서 보니, 결함은 사람이 손으로 쓴 태스크 목록과 계약에서 나고 있었다(4편). 그래서 그 둘도 루프가 만들게 했다. 핵심은 시험 문제를 내는 패스와 답안을 쓰는 패스를 가른 것이다. 단, 코딩 루프가 안정된 다음에 했다. 물음을 먼저 쓰고, 답하게 ...
-
거짓 done 다섯 번의 원인이 다 달랐다
머지되지 않았는데 done 이 찍혔다 — 셸·프롬프트·호출·세션·저장소 설정 다섯 층에서 각각
한 줄로 무인 루프가 낼 수 있는 최악의 출력은 실패가 아니라 거짓 완료다. 머지되지 않았는데 done 이 찍혔고, 그 거짓말은 루프의 유일한 기억에 조용히 남는다. 이 사고가 다섯 번 났고 원인은 다섯 번 다 달랐다. 그래서 처방이 “가장 좋은 검사 하나”가 아니라 겹친 검사가 ...
-
codex 리뷰어가 세션이 쓴 .git/config 를 읽고 있었다
GIT_CONFIG_* 로 덮어써도 textconv·filter·gpg.program 이 남아, 오케스트레이터가 diff 를 직접 만들어 넘기도록 바꿨다
한 줄로 AI 구현 세션이 만든 변경은 codex 리뷰어가 검사한다. 그런데 리뷰어가 돌리는 git 이, 검사받는 그 세션이 고칠 수 있는 /loop/work/.git/config 를 그대로 읽고 있었다. 설정 키를 환경변수로 덮어쓰는 것만으로는 textconv·filter·gpg...
-
Claude 자가개선 루프는 65번 중 5번만 반영됐다
반영된 커밋은 전부 전략 수치 조정이었고, 하나는 사람이 정한 손절 하한을 되돌렸다. 그래서 자동매매 봇의 자가개선을 PR 전용으로 바꿨다 (#120)
한 줄로 자동매매 봇에 붙여 둔 자가개선 루프는 65번 돌아서 끝까지 반영된 것이 5번(8%)뿐이었다. 그 5번도 전부 전략 수치를 조정한 커밋이었고, 그중 하나는 사람이 일부러 정한 값을 되돌렸다. 그래서 루프가 직접 배포하지 못하게 하고, 검증을 통과하면 PR만 만들도록 바꿨다...
-
MCP 3종을 전역에서 뺐더니 메모리가 10GB 줄었다
세션마다 하나씩 뜨는 줄 몰랐다
한 줄로 맥미니 메모리가 32GB 중 25.5GB 차 있었다. 범인은 무거운 앱이 아니라 세션마다 하나씩 뜨는 MCP 서버였다. 세션 21개 × MCP 3종. 전역 등록에서 셋을 빼고 서버를 재시작하니 node+claude 가 15.4GB 에서 5.7GB 로 떨어졌다. 그중 MCP...
-
Codex가 짚은 미래 정보 누수로 백테스트가 뒤집혔다
장중 점수를 장 시작 시점에 이미 안 것처럼 계산했다 — 다시 계산하자 코스피 급등 효과는 사라지고 나스닥 +1% 효과는 더 뚜렷해졌다
한 줄로 자동매매 봇의 매수 신호 후보를 백테스트로 비교했다. Codex 교차 검토에서 ‘그날 장중에 나온 점수를 장 시작 시점에 이미 안 것처럼 계산했다’는 지적이 나왔다. 실제로 살 수 있는 시점을 기준으로 다시 계산하자 코스피 급등 다음 날 효과는 사라졌고, 나스닥 +1% 다...
-
Codex 교차 리뷰로 실주문 API 외부 노출을 막았다
자동매매 봇을 두 에이전트에게 라운드 3~9까지 번갈아 리뷰시켰다. 주장 9건은 로그·DB·코드로 반박됐고, 둘 다 '새 항목 없음'이라고 답했을 때 끝냈다
한 줄로 자동매매 봇을 두 AI 에이전트(Codex 와 opencode 세션 ‘Bunny’)에게 번갈아 리뷰시켰다. 지적은 원장에 새 항목만 적고, 각 항목은 근거를 직접 확인해 판정했다. 라운드 3~9를 돌리는 동안 실주문 API(8502)와 DB(5432)가 모든 네트워크 경로...
-
밤새 도는 에이전트 루프는 멈추는 법이 절반이다
Ralph 패턴과 무인 루프의 멈춤 조건
AI 코딩 에이전트를 사람 없이 밤새 돌리는 방법이 있다. 커뮤니티에서 Ralph 라고 부른다. 원리는 단순하다 — 에이전트가 한 번 일을 끝내면 셸이 곧바로 다시 부른다. 그걸 무한 반복한다. while :; do cat PROMPT.md | claude-code ; done 한...
-
MCP 연결이란? — 방향이 있는 연결은 다시 붙여도 같은 문제를 풀지 못한다
Aside 루틴의 402 오류는 자체 크레딧 문제였고, Claude가 브라우저를 조작하던 MCP 연결과는 별개였다
한 줄로 MCP 연결에는 방향이 있다. “A 가 B 를 도구로 부린다”와 “B 가 혼자 돈다”는 완전히 다른 구조이고, 전자를 복구해도 후자의 문제는 풀리지 않는다. 자동화 루틴이 크레딧 부족으로 멈췄을 때 “예전에 붙여뒀던 MCP 를 다시 붙이면 되지 않을까”를 확인해봤고, 답은...
-
문서에 없는 API 를 바이너리에서 꺼냈다
Herdr 소켓 API 로 플러그인 만들기
한 줄로 Herdr 공식 문서의 API 페이지는 엔드포인트를 하나도 적어두지 않았다. server · client · update 세 개와 “CLI 와 소켓 API 는 같은 표면”이라는 한 문장이 전부다. 그런데 herdr api schema --json 을 치면 275KB 가 쏟...
-
폰에서 에이전트를 조종했다
Collie 로 승인 대기를 풀어낸 3일
한 줄로 에이전트를 오래 돌려보면 일하는 시간보다 승인을 기다리는 시간이 길다. 자리를 비우면 그 대기가 전부 멈춤이 된다. Collie 는 그 판에 폰을 붙인다. 밖에서 승인 번호를 누르고, 답을 보내고, /compact 를 친다. 3일 동안 폰에서 문장을 21번 보내고 키를 1...
-
Herdr 는 에이전트의 옆자리를 알아본다
코딩 에이전트를 위한 터미널 멀티플렉서
한 줄로 터미널 판(pane) 안에 무엇이 돌고 있는지를 아는 멀티플렉서다. tmux 는 판을 나눠주고 끝난다. 그 안에서 도는 게 셸인지 에이전트인지, 답을 기다리는 중인지 일하는 중인지는 모른다. Herdr 는 그걸 안다. 그래서 에이전트가 다른 에이전트를 부릴 수 있다. 이 ...
-
내 설정이 4개월 만에 3계층이 됐다
에이전틱 워크플로우를 어떻게 설계했나
에이전틱 워크플로우가 뭔가 AI 에게 매번 지시를 다시 쓰는 대신, 판단 기준과 절차를 미리 파일로 적어두고 그 위에서 일을 시키는 것이다. 대화가 끝나도 파일은 남으므로, 다음 대화는 같은 기준에서 시작한다. “프롬프트를 잘 쓴다”와는 다르다. 프롬프트는 이번 한 번이고, 워크플...
-
도식 3개가 18×18px 로 찌그러졌다
규칙을 어디에 적어야 안 틀리나
한 줄로 규칙은 문서에 잘 쓰는 것보다, 코드가 강제하게 만드는 편이 확실하다. 이 블로그 도식 163개로 확인한 결과다. 층 강제 방식 위반 색 CSS 가 강제 0건 래퍼 문서에만 적음 3건 좌표 코드가 계산 0건 새어 나간 3개가 전부 “문서에만 적어둔” 항목이었다. 이 글은 ...
-
내가 쓴 규칙을 소스로 검증했더니 근거가 틀려 있었다
규칙도 썩는다 앞의 두 글에서 규칙을 어떻게 나누고 어떻게 쌓았는지 썼다. 이번엔 반대다. 쌓아둔 규칙을 다시 읽어보니 틀린 것들이 있었다. 틀린 방식이 세 가지였다. 동작은 맞는데 이유가 틀린 것, 가리키던 대상이 사라진 것, 그리고 숫자를 재본 적이 없는 것. 셋 다 에러가 나...
-
브랜치 하나 따는 데 스킬 10KB 를 쓴다
내가 돌리는 워크플로우 설계
왜 브랜치 따는 데 문서가 필요한가 앞 글에서 설정이 3계층으로 갈린 과정을 썼다. 이번엔 그 위에서 실제로 매일 도는 워크플로우 하나를 처음부터 끝까지 뜯는다. 작업 브랜치를 만들고, 끝나면 PR 을 올려 머지하는 흐름이다. work-start 10,060B, work-finis...
-
끄면 예전으로 돌아갈 수 있나
자동화가 AX로 넘어가는 지점
판별 기준은 하나다 — 끄면 돌아갈 곳이 있나 만든 자동화가 도구인지, 일하는 방식이 바뀐 것인지는 기능 개수로 갈리지 않는다. 그것을 껐을 때 예전 방식으로 돌아갈 수 있으면 도구다. 돌아갈 곳이 없으면 일하는 방식이 바뀐 것이다. AX(AI Transformation)라는 말은...
-
LSP 는 코드를 글자가 아니라 뜻으로 읽는다
에이전트에게 무엇을 주는가
한 줄로 코드를 문자열이 아니라 문법으로 이해하는 도구다. grep 은 비슷한 글자를 찾고, LSP 는 같은 것을 찾는다. 이 차이가 전부다. 문제 — save 를 찾아줘 같은 코드에서 save 를 검색한다고 하자. user.save() // ← 진짜 그 함수 // 나중에 save...
-
훅은 언제 막고 언제 못 막나
하나는 막았고 하나는 0건이었다
훅을 두 번 만들었고 결과가 갈렸다 Claude Code 의 훅(hook)은 특정 시점에 끼어드는 스크립트다. 도구를 부르기 직전, 파일을 저장한 뒤, 세션이 끝날 때 같은 지점에서 돈다. 프롬프트에 적은 규칙과 달리 모델의 협조가 필요 없다 — 코드가 판정하고 코드가 막는다. 그...
-
내 발화 565건을 세어봤다
나는 Claude Code 에 어떻게 말을 거는가
세어볼 수 있게 해둔 것이 있다 매일 23:55 에 그날 Claude 와 나눈 대화를 마크다운으로 떨구는 스크립트를 돌린다. 옵시디언 저장소에 날짜별로 쌓인다. --- tags: [대화기록, 클로드] 날짜: 2026-08-26 대화수: 146 --- # 2026-08-26 (수) ...
-
스킬 24개를 왜 만들었나
직접 만든 16개와 가져온 3개
스킬이 뭔가 특정 상황에서만 읽히는 지침 문서다. CLAUDE.md 와 달리 매 대화에 실리지 않고, 필요할 때만 로드된다. 그래서 평소 비용 없이 상세한 내용을 담을 수 있다. ~/.claude/skills/ 아래 폴더 하나가 스킬 하나이고, 안에 SKILL.md 를 둔다. 지금...
-
Superpowers 는 코드를 쓰기 전에 멈추게 만든다
플러그인이 강제하는 절차
한 줄로 AI 에게 “바로 코딩하지 말고 이 절차를 밟아라” 를 강제하는 플러그인이다. 기능을 더해주는 게 아니라 일하는 순서를 바꾼다. 그래서 설치해도 새 명령어가 늘지 않고, 대신 Claude 가 작업에 들어가는 방식이 달라진다. 만든 사람은 Jesse Vincent(obra)...
-
OMC 는 에이전트 19개를 부린다
oh-my-claudecode 오케스트레이션 층
한 줄로 하나의 요청을 여러 에이전트에게 나눠 실행시키는 플러그인이다. oh-my-claudecode, 줄여서 OMC. MIT 라이선스이고 Yeachan-Heo/oh-my-claudecode 에서 받는다. Superpowers 가 절차를 세운다면 OMC 는 인력을 나눈다. 층이 달...
-
승인 단계를 없애고 탈출구를 남겼다
OMC 자동 실행 규칙
문제 — 좋은 도구인데 안 부른다 OMC 는 에이전트 19개에 일을 나눠 실행시킨다. 파일 여러 개에 걸친 작업에는 확실히 낫다. 그런데 부르려면 키워드를 쳐야 한다. ralph, team, autopilot 같은 것들이다. 나는 그걸 한 번도 안 썼다. 대화 기록 23일치, 발화...
-
MCP 12개, 도구 281개
무엇을 왜 붙였나
MCP 가 뭔가 Model Context Protocol. AI 가 외부 서비스를 도구로 쓰게 해주는 규약이다. 붙이면 Claude 가 Jira 티켓을 만들고, Slack 을 읽고, 브라우저를 조작할 수 있게 된다. 개념 설명은 따로 쓴 글에 있고, 여기서는 내가 실제로 무엇을 붙...
-
CLAUDE.md 에 무엇을 썼나
4개월간 쌓인 규칙 14개
CLAUDE.md 가 뭔가 Claude Code 가 매 대화에 자동으로 실어 보내는 규칙 파일이다. 여기 적어두면 매번 말하지 않아도 지켜진다. 전역(~/.claude/CLAUDE.md) 하나가 있고, 프로젝트마다 따로 둘 수도 있다. 계층 구조는 다른 글에서 다뤘고, 여기서는 전...
-
팀 설정 파일을 내 것처럼 고칠 수 없다
skip-worktree 로 흡수하기
왜 git 에 넣나 맥 4대(회사 2 · 개인 2)를 오간다. 한쪽에서 고친 규칙이 다른 쪽에 없으면 같은 지시를 두 번 해야 한다. 그래서 저장소 하나를 진실 공급원으로 두고 각 머신이 심링크(원본을 가리키는 바로가기 파일)로 그 파일을 본다. ~/.claude/CLAUDE.md...
-
Aside 는 로그인한 채로 브라우저를 조종한다
로그인 상태를 물려받는 AI 브라우저
한 줄로 로그인 세션을 그대로 물고 있는 브라우저를 AI 가 조종하게 해주는 도구다. 일반 브라우저 자동화는 빈 브라우저에서 시작한다. 그래서 사내 관리자 화면 하나 열려면 로그인부터 해야 한다. Aside 는 내가 이미 로그인해둔 브라우저 자체를 조종한다. 인증 단계가 사라진다....
-
스킬 16개를 만들었더니 명령어 모음이 판단 문서가 됐다
셸 래퍼로 시작해 판단 기준을 적게 됐다
첫 스킬은 16줄짜리 셸 래퍼였다 Claude Code 의 스킬(skill)은 특정 상황에서만 읽히는 지침 문서다. 규칙 파일과 달리 매 대화에 실리지 않고, 필요할 때만 로드된다. 계층과 로드 비용 이야기는 1편에 썼다. 지금 24개가 있고 그중 16개를 직접 만들었다. 가장 오...
-
Claude Code 설정을 맥 4대에 나눠 담았다
계층, 플러그인, 그리고 상시 로드 비용
시작은 규칙 파일 하나였다 Claude Code 는 CLAUDE.md 라는 파일에 적어둔 규칙을 매 대화에 실어 보낸다. “테이블 행은 | 로 시작하고 끝낸다” 같은 걸 적어두면 매번 말하지 않아도 지켜진다. 처음엔 이 파일 하나였다. 지금은 이렇게 나뉘어 있다. 계층 줄 수 적용...
-
AI 코드리뷰 봇이 못 잡는 것이 있었다
봇 2종을 파이프라인에 넣고 배운 것
배경 대상: 프론트엔드 저장소 1곳 구성: AI 코드리뷰 두 겹 PR에 자동으로 달리는 Gemini 리뷰 봇 작업 중간에 명시적으로 태우는 code-review 패스 목표: “지적을 받는 것”이 아니라 지적사항을 실제 커밋으로 환류시키기 기간: 약 두 달 두 달 운영 결과 — 봇이...
-
AI 에이전트 72개로 메모리 누수를 감사했다
그 결과를 다시 검증한 이유
문제 오래 켜두는 SPA의 메모리 누수 — 재현부터 어려움 조건: 특정 화면 열고 닫기를 수십 번 반복해야 드러남 그 시점엔 이미 어느 컴포넌트 탓인지 특정하기 어려움 수백 개 컴포넌트를 사람이 하나씩 훑는 건 비현실적 그래서 접근 전환 병렬 에이전트 72개를 띄워 프론트엔드 컴포...
-
AI가 쓴 커밋 메시지가 거짓말을 했다
배경: 커밋의 절반이 AI 협업이다 대상: 같은 백엔드를 공유하는 쌍둥이 Next.js 프론트엔드 기간: 한 달 남짓 집중 작업 커밋 접두사: 압도적으로 fix 국면: 통합테스트 + QA 대응 그 기간의 AI 협업 표기를 집계해 보니, 두 저장소 모두 AI 협업 커밋이 전체의 절반...
-
AI 에게 스펙과 자기검토까지 시켰다
구현은 그 다음이다
커밋 히스토리가 곧 작업 기록이다 기간: 넉 달 커밋마다 어떤 도구로 작업했는지 트레일러를 남겼다 — Made-with: Cursor, Co-Authored-By: Claude <모델> 트레일러를 남긴 덕에 나중에 “이 코드를 어떤 방식으로 짰더라”를 되짚을 수 있었다....
학습 노트
책·강의를 따라 적은 정리 1편. 2026 이전에 쓴 것이다.