Agent OS
AI 코딩 도구 세 개를 같이 쓰면서 제각각이던 지시와 기록을 한 규칙으로 묶었다. 그 과정에서 내린 판단 22건을 번호를 붙여 남겼다.
개인 · 설계 및 운영26.07 –
Bash · Python · launchd · JSON Schema · Git · Claude Code · Codex CLI
Problem
AI 코딩 도구를 세 개(Claude Code, Codex, Gemini) 같이 쓰기 시작하면서 같은 일을 시켜도 결과가 도구마다 달라졌다. 도구별로 지시를 따로 적어 뒀으니 어느 쪽이 더 나은지 비교할 기준부터 없었다. 더 비쌌던 건 결정이 사라지는 것이었다. “이건 이렇게 하기로 했다”는 판단이 그때그때 메모에 흩어졌고, 확정된 건지 아직 초안인지, 어느 쪽이 최신인지 구분할 방법이 없었다. 2026-07-25에는 도구가 옛 메모를 확정된 결정으로 잘못 인용해 더 나중에 내린 판단을 기각했다. 두 메모는 애초에 서로 다른 얘기를 하고 있었다. 자원도 같은 모양으로 샜다. 2026-07-26, 알림을 띄우는 프로그램 여덟 개가 메모리 83GB를 붙들고 있었다. 컴퓨터에 달린 메모리는 24GB뿐이라 4분 사이 네 번이나 macOS가 앱을 강제로 껐다. 별개로 iOS 시뮬레이터 두 대가 Xcode를 끈 뒤에도 19시간 동안 프로세스 463개를 붙들고 있었다. 만든 쪽이 사라져도 남아 있는 것들인데, 아무도 그걸 자기 몫으로 책임지지 않았고 시간 제한도 없었다.
Decision
- 세 도구가 읽을 공통 지시를 한 파일에만 두고 길이를 50줄로 제한했다. 도구마다 지시 파일을 따로 두거나 자동으로 변환해 뿌리는 방식은 버렸다. 이 파일은 세 도구가 매번 통째로 읽는 비용이라, 특정 상황에서만 필요한 지시는 전부 밖으로 뺐다.
- 결정을 적는 문서를 새로 만들지 않고, 원래 있던 문서가 다루는 범위만 넓혔다. “이 문서에 번호가 없으면 아직 정해진 게 아니다”라는 한 줄을 규칙으로 못 박는 것이 가장 작은 수정이었다. 정본이 둘이 되면 옛 메모를 확정으로 착각하는 같은 사고가 그대로 되풀이된다.
- 놀고 있는 자원을 정리할 때 내가 만든 것만 건드리도록 한정했다. 처음 만든 버전은 이름만 같으면 무조건 껐는데, 실제로 돌려 보니 전혀 다른 곳에 설치된 동명 프로그램이 대상으로 잡혔다. 자기가 만들지 않은 걸 끄는 것은 조건을 더 붙여서 될 문제가 아니라 설계가 틀린 것이다.
- 정리 작업은 사람이 일하는 중에는 아무것도 하지 않는다. Xcode나 시뮬레이터 관련 프로그램이 하나라도 켜져 있으면 손대지 않고, 전부 꺼지고 15분이 지난 기기만 끈다. 잘못 껐을 때 잃는 것이 그냥 놔뒀을 때 잃는 것보다 크기 때문이다.
- 쓸 모델을 상황에 따라 자동으로 갈아타게 만들지 않았다. 남은 사용량을 보고 알아서 바꾸면 그럴듯하지만 사람이 잡을 손잡이가 없는 자동화라, 번역이나 분류처럼 판단이 필요 없는 일은 늘 같은 모델로 고정했다. 이어서 판단해야 하는 작업도 중간에 모델을 바꾸지 않는다. 정확도를 깨뜨리는 건 모델을 바꾸는 것이 아니라 맥락이 끊기는 것이다.
Result
- 기록으로 남긴 판단
- 22건
- 2026-07-15부터 2026-08-04까지. 확정 14건, 시험 중 7건, 실험 1건.
- 메모리 사고 규모
- 83GB · 프로그램 8개
- 2026-07-26. 메모리 24GB 컴퓨터에서 4분 사이 강제 종료가 네 번 났다.
- 직접 만든 명령어
- 39개 → 25개
- 설정 더미에 묻혀 있던 도구 8개를 개발 이력을 살려 각자의 저장소로 꺼낸 결과.
이 시스템이 실제로 남긴 건 문서가 아니라 저장소다. 설정 더미 안에 묻혀 있던 도구 여덟 개가 각자 테스트와 사용 설명서를 갖춘 저장소로 나왔다 — 알림(agent-notify), 지난 대화 검색(asx), 계정 분리(codex-accounts), 안 쓰는 시뮬레이터 정리(simulator-reaper), 그리고 mdview·kman·video-summary·git-ai-commit. 꺼내는 기준은 “쓸모 있어 보인다”가 아니라 만든 결과물이 실제로 쓰이고 있다는 증거였고, 기준에 못 미친 도구는 꺼내지 않고 그대로 뒀다.
숫자로 안 잡히는 결과는 관측이 정직해진 것이다. 문제를 알려 주라고 만들어 둔 장치들이 정작 아무 말도 하지 않고 있었는데, 그게 조용해서 괜찮은 상태로 보였다. 알림 쪽 이야기는 agent-notify에 따로 적었다.
같은 실패가 보안 점검에도 있었다. 지난 점검 보고서 22개를 전부 다시 읽어 보니 “이상 있음”으로 잡힌 11건이 전부 헛짚은 것이었고, 그동안 잡힌 37건 중 20건은 재부팅할 때마다 접속 번호가 바뀌는 애플 기본 프로그램 하나였다. 프로그램을 접속 번호까지 묶어서 구분하던 걸 이름만으로 구분하게 바꾸고, 비교 기준이 저절로 바뀌지 않게 한 뒤, 같은 점검의 첫 실행이 진짜 문제 두 개를 잡았다 — 바깥에서 접속할 수 있는 채로 25시간 방치된 임시 웹 서버, 그리고 백업이 아예 안 되고 있던 것. 늘 아무 일 없다고만 나오는 알림은 알림 자체를 죽인다.
지금은 22건 중 확정이 14건이고 나머지는 시험 중 7건, 실험 1건이다. 실험에는 언제 판정할지와 어떤 조건이면 버릴지를 먼저 적어 둔다 — 경로 규칙은 2026-09-02에 판정하고, 목록과 실제 파일이 일주일 넘게 어긋나 있으면 그건 형식만 남은 것이므로 버린다. 되돌리는 일이 파일 하나 지우는 걸로 끝나게 설계했기 때문에 그렇게 적을 수 있다.