(초안) 분기된 LLM 대화를 하루 단위로 합치는 스킬
문제
LLM 대화는 수렴보다 분기가 빠르다. 질문 하나가 답을 부르고, 그 답이 새 쓰레드를 만들고, 한 주가 지나면 같은 주제가 기억도 안 나는 세션 다섯 개에 흩어져 있다. 사흘 뒤 같은 질문을 들고 돌아오면, 이미 풀었던 내용을 처음부터 다시 쌓아야 한다. 분기 자체는 효율적이다. 그 분기들이 다시 모이지 않는 게 문제다.
session-log 는 그 병합 단계다. 지금 진행 중인 대화를 읽어서, 결과를 한 곳, 오늘 데일리 노트에 쓴다.
지금 하는 일
두 단계다.
- 데일리 노트는 항상 이어쓰기. 데일리 노트는 주간 노트 안에
### YYMMDD DAY섹션으로 들어간다 (Obsidian Periodic Notes 패턴). 모든 세션은 최소 불릿 1 개를 남기고, 5 Values 태그 (#learn,#build,#share,#grow,#execute) 중 해당하는 걸 붙인다. 활동이 있었으면 습관 수정자 태그 (#english,#exercise,#writing,#sleep,#focus) 도 같이 붙는다. - 영구 문서는 조건부 라우팅. 재사용 가능한 것 (디버깅 패턴, 영어 표현, 미팅 결정, Wiki 한 페이지 분량의 이해) 이 나왔다면 해당 영구 문서로 보낸다. Work 세션은 더 세분화되어 projects, learnings, meetings 가 각자 다른 곳으로 간다.
이 설계의 가치는 어느 한 단계에 있지 않다. 스킬이 나에게 묻지 않는 것 들에 있다. "이거 기록할 가치 있나?", "어느 폴더?", "오늘 이미 썼나?" 이런 질문들이 스킬 내부 휴리스틱 안에서 조용히 처리된다. 나는 그냥 /session-log 만 친다.
flowchart LR
subgraph sessions["하루의 LLM 세션"]
direction TB
S1([CRM API 디버깅]):::session
S2([영어 표현 리뷰]):::session
S3([블로그 초안]):::session
S4([슬랙 메시지 초안]):::session
S5([CELPIP 연습]):::session
end
SL((session-log)):::hub
subgraph daily["데일리 노트 · 항상"]
DN["<b>260421 TUE</b><br/>· CRM API auth #execute #learn<br/>· 영어 표현 7개 #english<br/>· Slack 전달 #share #execute<br/>· CELPIP writing #focus<br/>· 블로그 초안 #build #writing"]:::daily
end
subgraph perm["영구 문서 · 조건부"]
P1["Work/projects/active/crm-api/session-notes.md"]:::perm
P2["Work/learnings/api-auth.md"]:::perm
P3["Wiki/english/expressions.md"]:::perm
end
S1 --> SL
S2 --> SL
S3 --> SL
S4 --> SL
S5 --> SL
SL ==>|"항상"| DN
SL -.->|"조건부"| P1
SL -.-> P2
SL -.-> P3
대표적인 수정 3가지
스킬 두 개에서 하나로
vault-sync 와 session-log 가 같이 있었다. vault-sync 의 스코프는 좁았다. WSL 개발 박스에서 진행한 세션을 Work/ 디렉터리에 한데 정리해 모으는 스킬이었다. 업무 관련 노트가 업무가 진행되는 곳에 남게 하려던 의도였다. session-log 는 나머지 (데일리 노트 포함) 를 담당했다.
문제는 매일 아침에 드러났다. 데일리 노트를 열면 개인 항목만 보였다. Work 불릿들은 vault-sync 를 타고 곧장 Work/ 로 들어가서, 데일리 노트에는 아예 찍히지 않았다. 그런데 데일리 노트는 내가 하루를 시작할 때 가장 먼저 훑어야 하는 곳이다. 오늘 챙겨야 할 모든 것 이 한 곳에 모여 있는 리스트. 그 리스트의 절반이 빠져 있었다.
그래서 vault-sync 를 session-log 로 합쳤다. 스킬 하나, 진입점 하나. 이제 데일리 노트에서 업무와 개인 항목이 나란히 보인다. 영구 라우팅은 여전히 나눠진다 (Work 항목은 Work/ 로, 개인 항목은 Wiki/ 로). 다만 데일리 로그는 둘 다 보여준다.
교훈은 이렇다. 스킬을 저장 경계 (Work 폴더 vs 나머지) 로 쪼개면, 독자 경계 (데일리 노트, 전부를 한 화면에서 보고 싶은 곳) 를 깨뜨릴 수 있다. 데일리 로그는 인덱스다. 그 입력을 쪼개면 한눈에 훑는 감각을 잃는다.
Append 만으로는 부족하다: stale 감지
stale 감지는 비교적 최근에 추가한 기능이다. 긴 프로젝트를 오래 붙잡고 있을 때 이 구멍이 보였다. 매 세션 끝에 session-log 를 돌리면 데일리 노트에 불릿이 깔끔하게 쌓이고, 가끔 새 learnings 파일도 생겼다. 표면 수준의 쓰기는 잘 됐다. 문제는 관련 파일들 (몇 주 동안 계속 고쳐오던 프로젝트 문서, 이번 세션의 결정이 사실상 뒤집어 놓은 Wiki 페이지) 이 거의 안 건드려진 채로 남는다는 점이었다. 조용히 낡아가는 (stale) 문서들 위에 새 기록만 계속 쌓고 있었다.
이것이 문제라고 판단해서 스킬 파일에 명시적으로 써넣었다. 세션을 분석한 뒤, 영향받았을 법한 문서들을 (경로, 키워드, 최종 수정일로) 훑어서 stale 후보를 표시한다. 자동 재작성은 아니다. 이것은 review-gate (사전에 사람이 승인하는 방식) 영역이다. 정식 문서 하나의 잘못된 수정이 이후 모든 검색에 복리로 붙기 때문이다. 스킬은 "이거 stale 해 보이는데 리뷰할까?" 를 제안하고 멈춘다.
교훈은 이렇다. 지식은 append-only (추가만 하고 수정은 안 하는 방식) 가 아니다. 그렇게 취급하는 기록 전용 스킬은 결국 표면 으로 편향된다. 데일리 로그는 신선하게 유지되는데, 그 밑의 깊은 파일들은 조용히 썩어간다.
언어 정책: 영어 기본값, 쉽지만 해상도 높게
스킬 출력은 원래 한국어가 기본값이었다. 일관되고 읽기도 편했는데, 읽기 편한 게 문제였다. 한국어는 나에게 아무 저항 없이 읽혔고, 매일 쓰는 스킬인데도 영어에는 전혀 도움이 안 됐다. 이 스킬 하루에도 몇 번씩 쓴다.
이것은 내 기조와 부딪쳤다. AGENTS.md 는 영어 몰입을 위해 볼트 전체에서 영어를 강제한다. 그런데 session-log 혼자 슬쩍 예외를 만들고 있었다. 그래서 기본값을 뒤집었다. 새 데일리 불릿, learnings 파일, 미팅 요약, 전부 영어로 나온다. 한국어는 좁은 예외일 때만 허용된다. 기존 파일이 이미 한국어거나 (문서 중간에 언어를 바꾸지 않음), 사용자가 --ko 를 붙이거나 (긴급), 파일이 한국어 미팅의 녹취 원본인 경우.
스타일 규칙이 기본값만큼 중요했다. "쉬운 영어" 는 "애매한 영어" 로 미끄러지기 쉽다. 내가 자리 잡은 규칙은 쉽지만 해상도 높게. 정확한 단어가 필요하면 그 단어를 쓰되, 덜 익숙한 용어는 본문 안에서 짧게 풀어준다 (idempotent (same input → same output, safe to retry)). 스킬 프롬프트 자체가 이를 강제하니 출력이 세션 간에도 일관된다.
교훈은 이렇다. 매일 쓰는 도구는 매일 연습 기회다. 뭔가를 늘리고 싶다면, 매일 만지는 도구들이 그 노력을 우회하지 않도록 해야 한다.
아직 자동화하지 않은 것
몇 가지는 일부러 미뤄뒀다.
- stale 문서 자동 재작성. stale 감지는 후보를 수면 위로 올려주고, 승인은 내 몫으로 남겨둔다. 그래야 스킬이 정식 문서에 잘못된 재작성을 조용히 쌓아가지 않는다.
- LLM 이 불릿 품질 평가. 언젠가는 LLM 이 알아서 (백그라운드에서 조용히) 품질 평가를 해주면 좋겠다. 아직은 아니다. 지금은 시끄럽고 장황해 보이는 데일리 로그도 괜찮다. 현재 분량에서는 신호 대 잡음 비율이 맞는다. 분량이 훑어보기 힘들 정도로 커지면, 기록 시점에 걸러내지 말고 사후에 정리하는 쪽으로 갈 것이다. 내가 찾고 싶었던 것을 조용히 버리는 필터는, 훑으면 되는 긴 로그보다 나쁘다.
- 세션 간 요약. session-log 는 한 세션만 다룬다. 집계는
/retro(주간) 와/monthly-retro몫이다. 여러 생명주기를 한 스킬에 담으면 금세 헷갈린다.
볼트 전체 설계와 같은 방향이다. 자율성이 목표지만, 신뢰는 도메인마다 단계적으로 쌓아간다. stale 감지가 이 스킬의 출발점이다. 표시가 충분히 믿을 만해지면, 저위험 파일부터 자동 적용으로 넘어간다. 고위험 문서는 계속 review-gate 로 둘 가능성이 높다.
관련 글
- [초안] LLM이 유지보수할 수 있는 두 번째 뇌 – 볼트 전체 설계에서 session-log 가 어떤 역할을 하는지
- 대화는 분기해도 지식은 병합되어야 한다 – 이 스킬이 풀려고 하는 분기/병합 문제
- Karpathy, "LLM Wiki" gist – session-log 가 단계적으로 접근해가는 자율 편집 패턴