내 AI 비서 요청을 생활형과 업무형으로 나눠 보기
캐시 · 생활형 AI 비서 만들기 · · 좋아요 0 · 답글 0
연재 생활형 AI 비서 만들기 3/12편
소개
제 클로드 코드 환경의 자동 실행 잡, 스킬, 세션 메시지를 강의가 정의한 생활형 비서 기준으로 갈라 세어, 메시지 2,242건 중 생활 부탁은 0건이고 강의의 일곱 예시 중 이미 하는 일은 뉴스 브리핑 하나라는 것을 확인했습니다. AI 비서를 업무에만 쓰고 있지 않은지 점검해 보고 싶은 분께 권합니다.
1주차 실습은 코덱스를 설치하고, 원샷 프롬프트로 인터뷰를 받아 비서의 기초 문서를 만들고, 깃허브 비공개 저장소에 올리는 순서로 진행됐습니다. 저는 청강생이고 이미 클로드 코드로 개인 프로젝트를 돌리고 있어서, 같은 절차를 한 번 더 밟는 것보다 강의가 정의한 "생활형 비서" 기준으로 제 상태를 재 보는 편이 저에게 더 필요하다고 봤습니다.
스터디장 Wonny는 AI 비서를 이렇게 정의했습니다.
AI 비서는 내가 평소에 모아 놓은 자료들을 가지고 다음 행동을 정리해 주는 비서고요. (…) 내 일상을 이제 얘가 알아서 좀 챙겨 주는 그런 비서.
그리고 비서가 할 수 있는 일로 일곱 가지를 들었습니다. 유치원 일정, 대학원 준비물, 가족에게 공지할 것과 장 볼 것, 반려동물 급식과 산책과 용품, 원하는 기사만 골라 아침마다 브리핑, 여행 계획입니다. 첫 기능은 "평소에 입력할 일이 있었던 것" 중에서 "결과가 분명히 보이는 것"을 고르라고 했습니다.
23기에서 저는 자동 실행 잡이 몇 개인지, 살아 있는지, 결과물이 나오는지를 이미 셌습니다. 이번 스터디의 질문은 다릅니다. 그 비서가 제 생활을 맡고 있는가, 아니면 업무만 맡고 있는가. 잡의 개수는 이미 알고 있으니 그 위에서 생활형과 업무형을 갈라 세기로 했습니다. 질문은 넷이었습니다.
자동으로 돌아가는 것 중 생활형은 몇 개인가
스킬과 에이전트 중 일정, 알림, 메신저를 다루는 것은 몇 개인가
제가 비서에게 보낸 메시지 중 생활 부탁은 몇 건인가
강의의 일곱 예시 중 제 비서가 이미 하는 일은 몇 개인가
참고: 스터디 기준 도구는 코덱스와 헤르메스지만, 스터디장이 클로드 코드는 코덱스와 역할이 같다고 안내해서 저는 클로드 코드 설정을 대상으로 했습니다. 새 설치는 하지 않고 설치 전 상태만 기록했습니다.
진행 방법
사용 도구: Claude Code, Python 3, launchctl, gh CLI
Step 1. 강의 기준의 표 정리
측정 전에 무엇을 생활형으로 볼지 정했습니다. 강의에서 나온 것만 썼습니다.
기준
강의의 표현
제 판정 규칙
생활형 일
일정, 준비물, 가족 공지, 장보기, 반려동물, 뉴스 브리핑, 여행
이 일곱 가지와 그 변형(리마인드, 약 복용, 식단)
업무형 일
강의에 없음
저장소 동기화, 리포트 생성, 코드와 논문 작업, 에이전트 운영
채널
텔레그램으로 보내 준다, 구글 캘린더에 써 준다, 옵시디언에 저장한다
메신저(텔레그램, 카톡, 슬랙, 메일), 캘린더, 알림
Step 2. 자동 실행의 생활형과 업무형 구분
23기에서 배운 대로 crontab과 launchd 두 곳을 다 봤습니다.
crontab -l
# crontab: no crontab for kkkim
launchctl list | grep -E "kkkim|cysjavis|openclaw"
for f in ~/Library/LaunchAgents/com.kkkim.*.plist; do plutil -p "$f"; done
등록돼 있고 launchctl에도 올라온 잡은 7개였습니다. 각 스크립트의 첫 주석으로 용도를 확인했습니다.
잡
출처
주기
하는 일
분류
com.kkkim.autobiox-fetch
자작
매일 22:00
저장소 2개 fetch
업무형
com.kkkim.repos-pull
자작
매일 21:00
클라우드가 커밋한 저장소를 로컬로 pull
업무형
com.kkkim.skills-guard
자작
매일 09:30
스킬 심링크 무결성 점검
운영형
com.cysjavis.cysd
설치 팩
상주
에이전트 데몬
운영형
com.cysjavis.nudge
설치 팩
60초
회신 없는 노드에 회신 요구
운영형
com.cysjavis.unstick
설치 팩
60초
막힌 큐 해소
운영형
ai.openclaw.gateway
설치
상주
오픈클로 게이트웨이
아래에서 따로 봄
자작 3개는 전부 업무형이거나 운영형이고, 생활형은 0개입니다.
오픈클로 게이트웨이는 따로 열어 봤습니다. 반려에이전트 사례글에 "오픈클로와 텔레그램을 쓰지 않고 있다"고 적었는데, 게이트웨이 프로세스가 살아 있었습니다.
launchctl print gui/501/ai.openclaw.gateway | grep -E "state|pid"
# state = running, pid = 741
ps -p 741 -o etime # 04-11:56:08
설정 파일은 비밀값을 가리고 읽었습니다.
항목
값
프로세스 가동 시간
4일 11시간
붙어 있는 채널
슬랙 1개, 회사 프로젝트용 봇
스킬 항목
39개, 활성 0개
그중 생활형 후보(apple-reminders, apple-notes, things-mac, obsidian, goplaces, ordercli 등)
14개, 전부 비활성
설정을 마지막으로 건드린 날
2026-06-09
게이트웨이 로그의 마지막 줄
2026-06-10
살아 있는 상주 프로세스가 하나 있는데, 붙은 채널은 업무용 하나이고 생활형 스킬은 켜진 것이 없습니다. 미리 알림(apple-reminders) 스킬이 있다는 사실을 이번에 처음 알았습니다.
Step 3. 스킬과 에이전트의 채널 처리 여부
23기 함정대로 설치분은 자작에서 뺐습니다. 심링크가 ~/.cys/pack을 가리키면 설치분입니다.
inst = [d for d in skills if d.is_symlink() and ".cys/pack" in os.path.realpath(d)]
own = [d for d in skills if d not in inst and (d/"SKILL.md").exists()]
구분
개수
자작 스킬
39개
설치 스킬
53개
에이전트 정의
30개
세 묶음의 본문에서 캘린더, 텔레그램, 슬랙, 카카오, 메일, 리마인드와 알림, 일정을 정규식으로 찾았습니다.
구분
키워드가 걸린 파일
문맥 확인 후 실제로 채널을 다루는 것
자작 스킬
9 / 39
0
설치 스킬
2 / 53
0
에이전트
4 / 30
0
걸린 15개 파일을 열어 보니 전부 다른 뜻이었습니다. "calendar"는 디자인 시스템의 날짜 선택 UI 컴포넌트, "메일"은 외부 데이터베이스의 로그인 옵션이나 "외부 발송은 승인 뒤에"라는 금지 규칙, "카톡"은 문체 규칙의 적용 대상 목록, "일정"은 프로젝트 일정이었습니다. 일정을 잡아 주거나 메신저로 보내 주는 스킬은 하나도 없습니다.
Step 4. 비서에게 보낸 메시지 속 생활 부탁 집계
클로드 코드는 세션 기록을 ~/.claude/projects/ 아래 .jsonl로 남깁니다. 사용자 역할 메시지만 골라 셌습니다. 도구 실행 결과, 시스템 알림, 스킬 본문 로딩, 이전 세션 요약, 이번 사례글 작업의 지시문은 뺐습니다.
files = list(Path("~/.claude/projects").expanduser().rglob("*.jsonl"))
# 257개, 1,126.7MB. 사용자 메시지 2,423건 → 시스템·스킬·요약 제외 2,242건
처음에는 넓은 키워드로 셌습니다. 메일, 일정, 알려줘, 약속, 카톡, 알림, 출근, 병원, 저녁, 퇴근, 예약, 가족, 브리핑, 리마인드 등 30개입니다.
기준
걸린 메시지
넓은 키워드 30개 중 하나라도 포함
295건 (13%)
이 숫자는 버렸습니다. 상위 키워드의 예문을 보니 "메일" 146건은 업무 메일 회신을 붙여 넣고 검토를 시킨 것이고, "알려줘" 41건은 "이 내용 알려줘"처럼 답을 달라는 말이지 리마인드가 아니었습니다. "출근", "퇴근", "저녁"은 다른 일을 시키면서 시간대를 설명한 문맥이었습니다.
그래서 강의의 일곱 예시에 맞춰 부탁의 형태로 다시 셌습니다. 리마인드나 알림을 설정해 달라, 캘린더나 일정에 등록해 달라, 텔레그램이나 카톡으로 보내 달라, 장보기와 식단과 여행 일정과 병원 예약을 챙겨 달라는 네 가지 정규식입니다.
# 요지. 실제로 돌린 패턴은 변형 어미가 조금 더 많다
STRICT = {
"리마인드/알림 요청": r"리마인드|알림(을)?(설정|해|줘|보내)|알람|잊지 (않게|말게)|까먹지|기억해 둬",
"일정/캘린더 등록": r"캘린더|일정(을|에)? (등록|넣|추가|잡)|약속(을|에)? (잡|등록)",
"메신저로 보내기": r"(텔레그램|카톡|카카오톡|슬랙)(으로|에|로) (보내|올려|전달|알려)",
"생활 심부름": r"장 ?볼|장보기|식단|레시피|여행 (계획|일정)|병원 (예약|일정)|약 먹",
}
기준
걸린 메시지
엄격 정규식 4종 중 하나라도 포함
1건
그중 실제 부탁
0건
걸린 1건은 채용 공고 본문을 붙여 넣은 메시지였고, 공고 안에 "알림"이라는 단어가 들어 있었습니다. 2,242건 중 생활 부탁은 0건입니다.
Step 5. 강의가 쓴 도구의 설치 전 상태
설치는 하지 않고 지금 상태만 봤습니다.
ls /Applications | grep -iE "codex|chatgpt|hermes|obsidian|telegram"
which codex hermes; codex --version
ls ~/.codex/sessions/**/*.jsonl | wc -l
gh repo list kakyungkim --limit 300 --json isPrivate
강의 도구
제 상태
코덱스 데스크톱 앱
없음
코덱스 CLI
0.157.0 설치됨. 세션 53개(5월 13, 6월 18, 7월 1, 8월 17, 9월 4), 작업 폴더는 연구, 교육, 경력 문서 프로젝트이고 생활 관련 폴더는 없음
코덱스 모델 설정
gpt-6-astra. 강의가 "토큰이 와장창 든다"며 피하라고 한 모델
헤르메스 데스크톱
없음
옵시디언
없음
텔레그램 앱
있음
깃허브
로그인됨. 저장소 18개(비공개 5, 공개 13). 비서용 저장소 0개
원샷 프롬프트는 자막에 원문이 없어 인터뷰는 재현하지 않았습니다.
Step 6. 강의의 일곱 예시와의 대조
강의의 예시 하나하나에 제 자동화를 대응시켰습니다.
강의의 예시
제 비서가 하는가
근거
유치원 일정
아니오
해당 없음
대학원 준비물
아니오
일정 관련 잡과 스킬 0
가족에게 공지할 것
아니오
메신저 발송 스킬 0, 관련 메시지 0건
장 볼 것
아니오
장보기 부탁 0건
반려동물 급식, 산책, 용품
아니오
리마인드 잡 0
원하는 기사만 골라 아침마다 브리핑
예, 다만 저녁에
아래
여행 계획
아니오
캘린더 연동 0
뉴스 브리핑은 제 맥이 아닌 GitHub Actions에서 돌고 있습니다.
gh run list -R kakyungkim/econ-radar --limit 8 --json name,conclusion,createdAt
# Telegram Daily Push success 09-27, 09-28, 09-29, 09-30 (매일 10:21 UTC 전후)
gh run list -R kakyungkim/paper-radar --limit 6 --json name,conclusion,createdAt
# Telegram Weekly Push success 08-23 ~ 09-27, 6주 연속
경제 뉴스를 골라 매일 텔레그램으로 보내는 잡이 9월 27일부터 30일까지 매일 성공했고, 논문 피드는 8월 23일부터 6주 연속 성공했습니다. 강의의 "뉴스에서 내가 원하는 기사만 브리핑" 정의에는 맞습니다. 다만 도착 시각이 10:21 UTC, 한국 시각 19시 21분 전후라 강의가 말한 "아침마다"와는 다릅니다. 일곱 예시 중 하나이고, 그 하나도 제 맥을 거치지 않고 클라우드에서 돕니다.
결과와 배운 점
측정 결과
항목
값
crontab
0개
launchd 잡(자작 3, 설치 4)
7개, 그중 생활형 0개
오픈클로 게이트웨이
4일 11시간 가동, 채널 1개(업무용 슬랙), 스킬 39개 중 활성 0개
자작 스킬 39개 중 채널을 다루는 것
0개
설치 스킬 53개, 에이전트 30개 중 채널을 다루는 것
0개
세션 로그 257개(1,126.7MB)의 사용자 메시지
2,242건
그중 넓은 키워드로 걸린 것
295건 (버림)
그중 생활 부탁
0건
강의의 일곱 예시 중 이미 하는 일
1개 (뉴스 브리핑, 클라우드, 19시 도착)
코덱스 데스크톱, 헤르메스, 옵시디언
0 / 0 / 0
코덱스 CLI 세션 53개 중 생활 폴더
0개
배운 점
비서가 없는 것이 아니라 생활을 맡긴 적이 없습니다. 잡 7개, 스킬 92개, 에이전트 30개, 메시지 2,242건이 있는데 생활 쪽은 전부 0입니다. 강의가 첫 기능을 "평소에 입력할 일이 있었던 것"에서 고르라고 했는데, 제 로그에는 그 목록 자체가 없습니다. 입문자와 저의 차이는 도구보다 시킨 일의 종류에 있었습니다.
채널은 있는데 연결이 없습니다. 텔레그램 앱이 설치돼 있고, 슬랙 봇이 붙은 게이트웨이가 4일 넘게 살아 있고, 그 게이트웨이에는 미리 알림 스킬까지 들어 있습니다. 전부 꺼져 있거나 업무 쪽만 봅니다. 스터디장의 로로는 헤르메스, 텔레그램, 옵시디언, 구글 캘린더 네 개를 이어서 하나의 비서가 됐는데, 저는 부품을 따로따로 갖고 있습니다.
하나 있는 생활형은 강의가 말한 시각과 어긋납니다. 경제 뉴스 브리핑은 매일 성공하지만 19시에 옵니다. 강의는 "아침마다 보고"였습니다. 만들 때 아침에 읽을 것인지 생각하지 않고 파이프라인이 끝나는 시각에 맞춰 보냈습니다. 결과가 나에게 닿는 시각도 설계 항목이라는 것을 이번에 알았습니다.
입문 강의가 제 설정의 오류를 하나 찾아냈습니다. 코덱스 모델이 강의가 피하라고 한
gpt-6-astra로 되어 있었습니다. 세션 53개를 그 설정으로 돌렸습니다. 입문 강의라 배울 것이 없다고 여겼다면 이것을 못 봤습니다.
시행착오
넓은 키워드로 센 295건을 그대로 썼으면 "13%가 생활 요청"이라는 반대 결론이 됩니다. 예문을 열어 보니 "메일" 146건은 업무 메일 검토였고 "알려줘"는 답을 달라는 말이었습니다. 단어가 있다는 것과 그 부탁을 했다는 것은 다릅니다. 부탁의 형태로 정규식을 다시 짜자 295가 1이 되고, 그 1도 붙여 넣은 공고 본문이었습니다.
스킬 15개 파일에서 채널 키워드가 걸렸을 때 "채널 다루는 스킬이 15개"라고 쓸 뻔했습니다. 전부 열어 보니 UI 컴포넌트 이름, 로그인 옵션, 문체 규칙, 프로젝트 일정이었습니다. 키워드 집계는 후보를 줄이는 데만 쓰고 판정은 문맥으로 해야 했습니다.
오픈클로 게이트웨이 로그의 마지막 줄이 6월 10일이라 "죽어 있다"고 쓸 뻔했습니다.
launchctl print로 보니 프로세스는 4일 11시간 가동 중이었습니다. 로그가 멈춘 것과 프로세스가 멈춘 것은 다른 사실입니다. 24시간AI서버 스터디의 "살아 있는가, 그 일을 하는가, 결과물이 나왔는가" 세 단계를 여기서도 밟았습니다. 살아 있고, 할 일이 없고, 결과물이 없습니다.
도움 받은 글 (옵션)
생활형 AI 비서 1주차 강의 (Wonny, 복지리): AI 비서의 정의, 비서가 할 수 있는 일의 일곱 예시, 첫 기능을 고르는 세 기준, 로로의 구성(헤르메스, 텔레그램, 옵시디언, 구글 캘린더), 코덱스 모델 설정 안내
24시간 AI 서버 4주차 사례글 (본인): launchd 잡 3개와 GitHub Actions 파이프라인을 "살아 있는가, 그 일을 하는가, 결과물이 나왔는가"로 판정한 글입니다. 이번에는 같은 잡을 생활형과 업무형으로 갈라 봤습니다.
반려에이전트 1주차 사례글 (본인): "오픈클로와 텔레그램을 쓰지 않고 있다"고 적었던 글입니다. 이번에 게이트웨이가 살아 있는 것을 확인해 그 기록을 정정합니다.
태그: #생활형AI비서