챗봇을 넘어서 — 개인 AI 자동화를 두 대의 맥과 하나의 저장소로 짜기
챗봇을 넘어서 — 개인 AI 자동화를 두 대의 맥과 하나의 저장소로 짜기 AI 자동화는 챗봇에 물어보는 게 아니다. 새벽 크론이 결과를 저장소에 넣어 두는 것이다. 두 대의 맥과 git 저장소 하나로 굴린 개인 AI 자동화 3개월 기록. Topics: AI, 자동화, 도구.
AI를 개인 자동화에 쓴다는 건 챗봇에 물어보는 것과 뭐가 다른가?
챗봇은 물어봐야 답한다. 자동화는 묻지 않아도 새벽에 결과가 저장소에 와 있다.
대부분의 사람에게 AI는 채팅창이다. 질문을 넣으면 답이 나오고 창을 닫으면 끝난다. 쓸모는 있지만 매번 내가 시작 버튼을 눌러야 한다. 개인 자동화는 그 반대다. 내가 잠든 사이 정해진 시각에 에이전트가 스스로 돌아 결과물을 만들어 둔다. 나는 아침에 그걸 읽기만 한다.
그래서 3개월째 내 하루는 이렇게 시작한다. 밤새 크론이 뉴스 브리프와 그날의 우선순위를 뽑아 개인 저장소에 넣어 둔다. 나는 노트북을 열고 그걸 받아 읽는다. 물어본 적은 없다.
그래서 뭘 자동으로 시키나?
매일 새벽, 뉴스 브리프·하루 우선순위·업무 리포트·영어 암기 세 문장이 무인 크론으로 만들어져 저장소에 쌓인다.
매일 새벽 몇 가지가 자동으로 만들어진다. 관심 분야 뉴스를 모아 요약한 브리프, 진행 중인 일에서 그날 처리할 여섯 가지를 골라 주는 우선순위 목록, 그리고 업무 리포트. 업무 쪽은 Jira 티켓을 훑어 하루치 요약을 만든다. 하나는 내가 검토하려고, 하나는 CEO에게 보고하려고 둘로 나뉜다. 사소하지만 매일 챙기는 게 하나 더 있다. 영어 공부로 연설 하나를 통째로 외우는 중이라 그 스크립트에서 매일 세 문장씩 뽑아 준다.
공통점은 하나다. 전부 아침에 확인만 하면 되는 형태로 온다. 초안을 사람이 짜는 게 아니라 사람이 검토만 한다. 이게 자동화의 핵심이다. 판단은 손에 남기고 반복은 넘긴다.
그 무인 실행은 어디서 도나 — 노트북을 꺼도?
상시 켜 둔 별도의 맥에서 크론으로 돈다. 대화형 작업은 다른 맥에서 한다.
노트북은 닫으면 잔다. 새벽에 뭔가를 돌리려면 항상 깨어 있는 기계가 따로 있어야 한다. 나는 맥미니 한 대를 상시 전원으로 켜 두고 자동화 호스트로 쓴다. 크론이 정해진 시각에 에이전트를 깨워 브리프와 리포트를 만든다. 다 만들면 저장소에 커밋해 올린다.
내가 앉아서 코드를 짜거나 글을 쓰는 대화형 작업은 작업용 맥북에서 한다. 두 기계는 서로를 직접 보지 않는다. 오직 하나의 git 저장소를 통해 만난다. 맥미니가 밤에 넣어 둔 결과를 아침에 맥북이 받아 오는 식이다.
에이전트는 매번 백지에서 시작하는데 맥락은 어떻게 주나?
저장소를 읽고 쓰게 한다. git으로 묶인 개인 위키가 두 기계의 공유 기억이다.
에이전트는 사람과 달리 어제 무슨 결정을 했는지 기억하지 못한다. 매번 아무것도 모르는 상태로 깨어난다. 그래서 맥락을 파일로 준다. 내 저장소는 지난 글에서 다룬 개인 위키와 PARA 노트가 함께 사는 곳이다. 에이전트는 여기서 필요한 페이지를 읽어 근거로 삼는다.
이 저장소가 자동화의 중심이다. 맥미니의 크론도, 맥북의 대화형 작업도 결국 같은 저장소를 읽고 쓴다. 저장소 하나가 두 기계의 공유 상태이자 공유 기억이다. 새 기계를 붙여도 저장소만 clone하면 같은 맥락 위에서 움직인다.
같은 자동화를 여러 기기에서 어떻게 재사용하나?
절차를 ‘스킬’ 파일로 만들어 git으로 배포한다. 프롬프트를 매번 치지 않는다.
브리프를 만드는 법, 우선순위를 뽑는 법 같은 반복 절차는 한 번 잘 정리해 두면 다음에 또 쓰고 싶어진다. 그걸 매번 다시 치는 대신 파일로 박아 둔다. 나는 이런 절차를 스킬이라는 단위로 만들어 저장소 안에 함께 넣는다.
스킬이 저장소에 있으니 git으로 두 기계에 똑같이 배포된다. 맥미니의 크론이 부르는 스킬과 맥북에서 내가 부르는 스킬이 같은 파일이다. 절차를 한 곳에서 고치면 두 기계가 같이 바뀐다. 프롬프트를 머릿속이나 메모장에 흩어 두지 않는 것, 이게 재사용의 전부다.
에이전트는 하나로 통일하나 — Claude냐 Codex냐?
하나로 안 뭉친다. 무인 크론은 Codex, 대화형은 Claude Code와 Codex를 같이 쓴다.
도구를 하나로 정하고 싶은 유혹이 있다. 그런데 굳이 그럴 이유가 없었다. 새벽에 무인으로 도는 크론은 Codex에 맡긴다. 정해진 절차를 사람 개입 없이 실행하는 데 잘 맞았다. 내가 옆에 붙어서 하는 코딩·글쓰기 같은 대화형 작업은 Claude Code와 Codex를 cmux라는 오케스트레이터로 한 화면에서 같이 돌린다. 한쪽으로 초안을 잡고 다른 쪽에 검토나 무거운 작업을 넘기는 식이다.
지난 글에서 개인 위키가 모든 노트를 대체하지 않았듯 자동화도 도구를 하나로 통일하지 않는다. 무인으로 넘길 일과 손에 쥐고 할 일이 다르고 거기에 맞는 도구가 다를 뿐이다.
이렇게 짜서 실제로 남는 게 뭔가?
효과가 분명했던 것은 새벽 산출물이다. 브리프와 우선순위가 아침에 이미 만들어져 있으니 하루를 뭘 먼저 볼지 고르는 데 쓰던 시간이 사라졌다. 저장소 하나로 묶은 구조도 기대 이상이었다. 기계를 옮겨 다녀도 맥락이 따라온다. 새 기계를 붙이는 비용은 clone 한 번으로 끝난다.
약한 고리는 다른 데 있었다. 크론을 여러 개 엮다 보니 앞 작업이 멈추면 그 결과를 받아 가공하는 뒷 작업이 조용히 건너뛰는 일이 생겼다. 그런 날은 산출물이 비거나 어제 것이 그대로 남는다. git 동기화도 종종 실패했다. 두 기계를 잇는 유일한 통로가 git이라 여기가 막히면 새벽에 만든 결과가 아침 기계로 넘어오지 못한다. 무인 파이프라인의 진짜 리스크는 개별 작업이 아니라 작업 사이의 연결과 동기화였다.
개인 자동화를 다시 짠다면 순서는 이렇게 잡겠다. 어떤 도구를 쓸지부터 고르지 않는다. 무엇을 무인으로 넘기고 무엇을 손에 남길지를 먼저 정한다. 그다음 넘길 일을 스킬로 적고 그걸 항상 깨어 있는 기계에 얹는다. 그리고 작업이 멈추거나 동기화가 실패하면 곧바로 알아채도록 실패를 드러내는 장치를 처음부터 같이 넣는다.
결국 개인 자동화는 도구를 몇 개 붙이는 일이 아니었다. 하루에서 무엇을 손에서 놓을지를 정하는 일이었다. 그렇게 넘긴 일의 결과가 아침마다 저장소에 와 있다. 나는 물어보지 않는다. 확인만 한다.