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

  1. 세 도구가 읽을 공통 지시를 한 파일에만 두고 길이를 50줄로 제한했다. 도구마다 지시 파일을 따로 두거나 자동으로 변환해 뿌리는 방식은 버렸다. 이 파일은 세 도구가 매번 통째로 읽는 비용이라, 특정 상황에서만 필요한 지시는 전부 밖으로 뺐다.
  2. 결정을 적는 문서를 새로 만들지 않고, 원래 있던 문서가 다루는 범위만 넓혔다. “이 문서에 번호가 없으면 아직 정해진 게 아니다”라는 한 줄을 규칙으로 못 박는 것이 가장 작은 수정이었다. 정본이 둘이 되면 옛 메모를 확정으로 착각하는 같은 사고가 그대로 되풀이된다.
  3. 놀고 있는 자원을 정리할 때 내가 만든 것만 건드리도록 한정했다. 처음 만든 버전은 이름만 같으면 무조건 껐는데, 실제로 돌려 보니 전혀 다른 곳에 설치된 동명 프로그램이 대상으로 잡혔다. 자기가 만들지 않은 걸 끄는 것은 조건을 더 붙여서 될 문제가 아니라 설계가 틀린 것이다.
  4. 정리 작업은 사람이 일하는 중에는 아무것도 하지 않는다. Xcode나 시뮬레이터 관련 프로그램이 하나라도 켜져 있으면 손대지 않고, 전부 꺼지고 15분이 지난 기기만 끈다. 잘못 껐을 때 잃는 것이 그냥 놔뒀을 때 잃는 것보다 크기 때문이다.
  5. 쓸 모델을 상황에 따라 자동으로 갈아타게 만들지 않았다. 남은 사용량을 보고 알아서 바꾸면 그럴듯하지만 사람이 잡을 손잡이가 없는 자동화라, 번역이나 분류처럼 판단이 필요 없는 일은 늘 같은 모델로 고정했다. 이어서 판단해야 하는 작업도 중간에 모델을 바꾸지 않는다. 정확도를 깨뜨리는 건 모델을 바꾸는 것이 아니라 맥락이 끊기는 것이다.

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에 판정하고, 목록과 실제 파일이 일주일 넘게 어긋나 있으면 그건 형식만 남은 것이므로 버린다. 되돌리는 일이 파일 하나 지우는 걸로 끝나게 설계했기 때문에 그렇게 적을 수 있다.