회사 세컨 브레인을 DB에 넣는 기능을 만드느라 2주를 쓰고 나서야, 제 세컨 브레인은 그냥 MD 파일 폴더면 된다는 걸 알았습니다. 지금은 그 폴더를 Obsidian으로 보면서 쓰고, 에이전트는 파일을 바로 읽고 바로 고칩니다.
이 시리즈는 제가 쓰는 세컨 브레인(Second Brain) O2B를 하나씩 풀어서 설명합니다. 1편은 가장 밑바닥, 왜 Obsidian과 MD 파일이었는지입니다.
Notion에서 Obsidian으로 옮긴 이유
원래는 Notion을 썼습니다. 그때는 Notion에 AI가 들어오기 전이었어요. Notion에 있는 문서를 AI에게 시키려면 내용을 복사해서 붙여넣는 일을 제가 계속 해야 했고, 문서에 표가 있으면 그걸 또 따로 옮겨서 손봐야 했습니다.
Obsidian으로 바꾸자 그 수고가 사라졌습니다. AI에게 “파일 여기 있으니 읽어” 하면 바로 읽고, 바로 고치고, 고친 결과를 저는 그 자리에서 봅니다. 사람과 AI가 같은 파일을 보고 있기 때문입니다. 이 구조는 옵시디언 + 깃허브 가이드에서 자세히 썼으니 여기서는 줄입니다.
2주를 들여 만든 DB가 회사에서 멈췄습니다
파일을 사람과 AI가 같이 보는 문제는 Obsidian으로 풀렸는데, 에이전트 기억 쪽에서는 길을 잘못 들었습니다. 에이전트 메모리 회고에 쓴 대로, 그때 저는 에이전트 기억을 모으는 플랫폼 모넷을 만들고 있었습니다. 마침 회사 팀 리더가 에이전트가 정리한 MD 문서를 사람이 검토하고 Git으로 공유하는 세컨 브레인을 소개했고, 생각보다 효과적이었어요. 그런데 저는 그 MD를 모넷의 DB 메모리로 바꿔 넣는 기능을 2주 동안 만들었습니다. 집에서는 대략 동작했지만, 회사에서 리더의 저장소를 연결하니 연결 뒤로는 동작하는 게 하나도 없었습니다.
원인은 끝내 정확히 찾지 못했습니다. 다만 에이전트가 바로 읽을 수 있는 파일이 이미 있는데, 제가 그 사이에 DB 층을 하나 더 얹었다는 건 분명했습니다. 모넷에 쌓인 내용을 사람이 열어서 확인하기도 쉽지 않았고요.
그때 필요한 게 무엇인지 알았습니다. 사람과 에이전트가 같이 보고 고치는 공유 두뇌였습니다. 모넷은 에이전트 혼자만의 브레인에 가까웠습니다.
그래서 첫 요구사항을 파일로 정했습니다
제 세컨 브레인 O2B의 첫 요구사항은 이 경험에서 나왔습니다. 오래 남길 내용은 사람이 소유한 파일에 두고, 형식은 Markdown으로 한다는 것입니다. 여기서 세 가지가 따라 나왔습니다.
- 사람이 파일을 고치면 그게 바로 정답입니다. DB나 에이전트 메모리를 따로 고칠 일이 없습니다.
- 검색, 인덱스, 임베딩은 편의 도구고, 없어지면 파일에서 다시 만들면 됩니다.
- 에이전트나 모델, 런타임이 사라져도 두뇌는 읽히고 쓸모 있어야 합니다.
세컨 브레인이 MD여서 좋은 점
MD는 어디서든 열립니다. 그냥 텍스트라서 Obsidian이 아니어도 돼요. VS Code, 터미널, GitHub 웹, 폰의 아무 편집기에서나 열리고, 도구를 바꿀 때 내보내기 작업도 필요 없습니다.
에이전트가 읽고 고치는 데 문턱이 없습니다. 에이전트는 cat으로 읽고 grep으로 찾고 파일을 열어서 고칩니다. API를 열어 줄 필요도 따로 내보낼 필요도 없고요.
구조를 늘릴 여지도 있습니다. 폴더로 나누고, 파일 맨 위에 프론트매터(제목, 날짜, 상태 같은 속성을 적는 칸)를 붙이고, 링크로 문서를 잇는 것까지 전부 같은 파일 안에서 되거든요. 구조는 필요한 곳에만 쓰면 되고, 처음부터 전체를 설계할 필요가 없습니다.
Obsidian은 창일 뿐입니다
Obsidian은 링크와 백링크로 문서를 오가고, 폴더 트리를 보고, 검색할 수 있어서 쓰기 편합니다. 그래도 거기에 기대지는 않습니다. 역할은 이렇게 나눠 놨어요.
Markdown은 내용을 담는 원천입니다. Obsidian은 사람이 보는 창이라서 없어져도 폴더는 남습니다. Git은 이력을 남기고 기계 사이로 파일을 옮깁니다.
만들기 전에 걸린 것 셋
O2B를 만들기 전에 Git 15건, Obsidian 9건짜리 점검을 돌렸습니다(Git 2.39.5, Obsidian 1.13.7). 탐색, 검색, 링크, 이름 바꾸기, 바깥에서 수정하기는 저장소 경계를 넘어서도 통과했어요. 걸린 건 세 가지였습니다.
- 부모 저장소를 클론해도 그 안의 독립 저장소는 따라오지 않아서, 배포할 때 가져올 저장소 목록을 따로 적어야 합니다.
- 심볼릭 링크는 가리키는 파일의 내용을 옮겨 주지 않습니다.
- 이름이 같은 노트가 둘이면 Obsidian 링크가 하나로 풀리니, 모호하면 경로까지 적어야 합니다.
이 점검이 확인하지 못한 것도 있어요. 접근 권한 분리, 동시에 쓸 때 내용이 깨지지 않는지, 백업에서의 복구는 아직 검증하지 못했습니다.
시작하려면
- 폴더를 하나 만들고 Obsidian에서 볼트로 엽니다. 방법은 가이드에 있습니다.
- 그 폴더에서
git init을 하고 첫 커밋을 만듭니다. - 첫 파일
BRAIN.md를 만듭니다. 안에 무엇을 적는지는 다음 편에서 다룹니다.
에이전트도 모델도 도구도 계속 바뀝니다. 지금 쓰는 세컨 브레인에서 폴더 하나만 남기고 전부 지워도 읽을 수 있는지 한번 물어보세요.