💬말로 만드는 AI▶ 유튜브
🗂️ 뒷이야기 · 04

04 단계 옵시디언 '제2 두뇌' — 플랫폼 기록을 노트 폴더에 읽기 전용으로

이 페이지 목차목적만든 순서1 · 안내서를 검토해 Phase 9 로 넣었다 (7/31)2 · 같은 날 플랫폼 안에 지었다 (7/31)3 · 파이스는 먼저 옵시디언의 '모양'만 흉내 냈다 (8/2 ~ 8/6 01:55)4 · 볼트가 '회사 뇌'가 된 45분 (8/6 08:46 ~ 09:31)5 · "미룬다"던 그래프 뷰를 10시간 27분 만에 (8/6 11:00)6 · 플랫폼 → 볼트 읽기 전용 미러링 (8/6 16:03)7 · 폴더 색인을 새로 짰는데 가려진 채 한 주가 갔다 (8/6 16:12)8 · 뒷일 — 볼트와 미러가 조용히 틀렸던 일곱 (8/13 ~ 10/1)💡 설명함정과 배운 것출처

뒷이야기 · 4 / 17단계 · 2026-07-31 ~ 08-06 (뒷일 08-13 ~ 10-01) · 갈래 파이스
이전 단계: 03 SJ FLOW v2 ② — AI 게이트웨이와 AI 비서 1~3기 · 다음 단계: 05 파이스 탄생 — 닷새 만에 뼈대와 안전망

핵심 요약

항목내용
이 단계에서 한 일7월 31일 「옵시디언 제2 두뇌 구축 안내서」를 검토해 세종 플랫폼 로드맵에 Phase 9 로 넣었다. 8월 6일 하루 동안 파이스가 노트 폴더(볼트)를 '회사 뇌'로 삼았다. 볼트를 읽고 쓰고 찾는 도구 여섯 개가 생겼고, 플랫폼 DB 를 읽기 전용으로 노트에 옮기는 미러링이 붙었다.
기간2026-07-31 ~ 08-06. 뒷일(폴더 정리·누락 수리·열쇠 분리)은 08-13 ~ 10-01
규모플랫폼 저장소 7/31 15:14~17:08 커밋 15개 · 파이스 저장소 8/6 볼트·미러 관련 커밋 20개(작성자 PAIS 8 · cwkim83 12) · 미러링 코드 platform_sync.js 248줄
다룬 도구Obsidian(마크다운 노트 앱) · Firestore(플랫폼 DB)를 읽기 전용 서비스 계정으로 · Node 내장 crypto · vis-network(플랫폼 지식 지도) · Cloudflare Vectorize(플랫폼 AI 검색)
결과플랫폼 Phase 9 항목 8개 중 2개 완료(7/31 15:14) → 같은 날 17:08 에 21개 중 15개 완료 · 8/6 08:46~09:31 파이스 도구 41 → 47 · 미러링 첫 실행 노트 68장, 그래프 17 → 85노드(커밋 메시지 값)
공개 범위사내(로그인 뒤) — 🔒 항목은 넣지 않음

한 줄 요약 — 플랫폼은 "옵시디언 대신 플랫폼 안에"로 갔고, 파이스는 진짜 옵시디언 노트 폴더를 뇌로 삼았다. 두 길은 8월 6일 오후, 플랫폼 DB 를 읽기 전용으로 노트에 옮기는 코드 하나로 만났다.

4단계 · 옵시디언 '제2 두뇌'

목적

회사 기억이 형식마다 따로 갇혀 있었다. 일의 기록(프로젝트·NCR·CAR·ITP·WBS)은 세종 플랫폼 DB 에, 자료 파일은 NAS(공유 저장 장치)에, 파이스의 기억은 파이스 안에 있었다. 8월 6일 파이스 로드맵의 조사 대목은 이렇게 적었다. 지식을 평문 마크다운과 [[링크]]로 두면 잠금장치가 없고 그 자체가 기억이 된다. AI 가 .md 파일을 관리하고 옵시디언(노트 앱)은 그걸 보는 창이 된다.

그래서 이 단계의 질문은 둘이었다. 노트 폴더 하나를 파이스의 "회사 뇌"로 삼는다면, 거기에 무엇을 어디까지 읽고 쓰게 할까. 플랫폼 DB 의 기록은 어떻게, 망가뜨릴 위험 없이 넣을까.

만든 순서

1 · 안내서를 검토해 Phase 9 로 넣었다 (7/31)

crazy4eu(cwkim83)가 Gemini 와 상의해 만든 「옵시디언 제2 두뇌 구축 안내」(14쪽)를 검토해 세종 플랫폼 로드맵에 Phase 9 로 넣었다(7/31 15:14). 안내서의 결론은 "옵시디언 같은 외부 툴 대신 플랫폼 안에 넣자"였고, 4단계 계획을 내놓았다.

검토에서 먼저 한 일은 "이미 있는 것" 대조였다. 4단계 중 둘, 곧 Vector DB·RAG 지식 엔진(Cloudflare Vectorize, 워커 v3.2.3)과 웹 상주 AI 위젯은 이미 만들어 쓰고 있었다. 이 둘을 '확인됨'으로 못박아 다시 만들지 않게 했다. 진짜 새 것은 뇌 모양 지식 지도 하나였다. 가능하다고 본 이유는 필요한 관계(프로젝트↔장비↔ITP↔NCR↔CAR, 사람↔부서)가 이미 DB 에 다 있어서였다.

주의점도 같이 적었다. 프로젝트 하나가 WBS 521행이라, 전부 그리면 노드 수천 개의 "털뭉치"가 되어 못 쓴다. 그래서 필터와 "선택 노드의 2단계 이웃만 보이기"를 지도의 전제 조건(9-3)으로 따로 떼었다. 원본 PDF 는 글자가 벡터 외곽선이라 추출이 안 돼서 14쪽을 이미지로 읽었다고 문서에 적혀 있다.

2 · 같은 날 플랫폼 안에 지었다 (7/31)

15:14 첫 커밋부터 17:08 마지막 커밋까지 114분, 커밋 15개. Phase 9 항목은 8개(완료 2)에서 15:19 에 16개로 쪼개졌고(완료 2), 17:08 에는 21개 중 15개가 완료였다.

  • 기록 자동 색인 (15:25~15:45) — NCR·CAR 을 저장하면 AI 가 바로 학습한다. 원칙은 "색인 실패가 저장을 막지 않는다". 남이 올린 문서를 덮어쓰지 못하게 벡터 이름표(id)에 auto:종류:번호 접두를 붙였다. 워커 시험은 28 → 41 → 47개로 늘었다.
  • 회사 지식 지도 (16:07) — 노드 7종(프로젝트·NCR·CAR·회의록·사람·부서·원인). 털뭉치 방지로 처음엔 프로젝트—원인—부서 뼈대만 보이고, 프로젝트를 고를 때만 개별 기록이 펼쳐진다. 읽기 전용이고 전 직원에게 열었다.
  • 살아있는 뇌 (16:31~17:02) — AI 패널 위에 뇌 실루엣과 뉴런 신호를 그렸다. 질문하면 답의 근거가 된 실제 기록이 불을 켠다.

이 길은 옵시디언을 쓰지 않는 쪽이다. 같은 주에 파이스는 반대쪽으로 갔다.

3 · 파이스는 먼저 옵시디언의 '모양'만 흉내 냈다 (8/2 ~ 8/6 01:55)

8월 2일 12:44 에 뇌 배경 화면(neural.js)이 처음 들어갔다. 첫 줄 주석이 "옵시디언 그래프뷰 감성"이다. 그 시점에는 실제 노트와 이어지지 않았다(8/6 11:17 커밋 메시지가 이때 것을 "기존 랜덤 애니메이션"이라 부른다).

8월 6일 00:32 파이스 로드맵(Phase 7 계획)은 남들이 어떻게 하는지 조사한 뒤 결정 둘을 적었다. "볼트는 작업공간 그 자체다. 새 저장소·새 형식을 만들지 않는다." 그리고 "그래프 뷰는 미룬다. 제일 비싸고 제일 안 쓴다." 01:55 에는 파이스 화면에 📓 노트 패널(노트 목록·역링크·[[링크]] 해석)이 붙었다. 서버 코드는 한 줄도 늘리지 않았다.

이때까지 '볼트'는 파이스의 작업공간 폴더였다.

day 0806 · 크게 보기 ↗

4 · 볼트가 '회사 뇌'가 된 45분 (8/6 08:46 ~ 09:31)

08:46 에 작성자 PAIS 커밋으로 설정에 obsidianVault 칸을 만들고 "회사 뇌 연동"이라 적었다. 같은 시각 노트 도구 넷, 곧 목록·읽기·쓰기·검색이 들어갔다. 도구는 41 → 45종이 됐다. 노트 도구 넷은 모두 볼트 폴더 밖으로 나가지 못한다(경로를 볼트 기준으로 풀어 밖이면 거부). 쓰기 도구 설명에는 "원본 자료 폴더는 함부로 덮어쓰지 말 것"을 적었다.

09:31 에 문서 읽기와 폴더 색인 도구 둘이 더 들어와 47종이 됐다. 볼트 연동 도구가 0에서 6으로 늘기까지 45분이었다. 색인 도구가 정의되지 않은 변수를 쓰는 오류는 6분 뒤 작성자 PAIS 커밋으로 고쳐졌다.

이 둘이 절대경로를 받으면서 경계 검사가 빠져 있던 사고는 05단계 「실제 사고」 기록에 있다. 한 가지만 덧붙이면, 노트 읽기·쓰기·검색 도구와 문서 읽기 도구는 8월 16일 연장통 개편(06단계)에서 '늘 쓰는 14개' 안에 들어갔다.

5 · "미룬다"던 그래프 뷰를 10시간 27분 만에 (8/6 11:00)

00:32 에 "미룬다"고 적은 그래프 뷰가 11:00 에 작성자 PAIS 커밋으로 만들어졌다(누가 시켰는지는 git 에 없다). 볼트를 훑어 노트를 점으로, [[링크]]를 선으로 바꾸는 데이터 모듈(71줄)이다. 17분 뒤 뇌 화면이 이 데이터를 그리기 시작했다. 2분마다 갱신하고, 실패하거나 볼트가 비면 예전 무작위 애니메이션으로 떨어진다. 22분 뒤에는 접속 토큰이 빠져 401(인증 실패)로 그 폴백(대체 동작)에 조용히 떨어지는 것도 작성자 PAIS 커밋으로 고쳐졌다.

8월 9일 사람이 로드맵을 "볼트 그래프 뷰는 완료(파이스가 직접 만듦)"로 정정했다. 이후 화면 이야기(코드 그래프, 계기판식 화면, 정지 수리)는 05단계 「HUD·뇌 그래프」 기록에 있다.

배운 것은 하나다. 문서에 "미룬다"고 적어도, 자기 코드를 고칠 수 있는 파이스에게는 그것이 금지가 아니다. 막으려면 문서가 아니라 권한과 시험으로 막아야 한다.

6 · 플랫폼 → 볼트 읽기 전용 미러링 (8/6 16:03)

vault flow · 크게 보기 ↗

cwkim83 이름으로 platform_sync.js(248줄)가 커밋됐다. 플랫폼 DB(Firestore)를 읽어 볼트에 .md 노트로 옮긴다. 정한 것은 넷이다.

  • 열쇠는 서비스 계정으로, 읽기 전용으로. 구글 로그인은 사람이 클릭해야 해서 무인 서버가 못 쓴다. 그래서 기계용 서비스 계정을 쓰고, 역할은 Cloud Datastore 뷰어를 줘서 IAM(권한 관리)이 쓰기를 막게 했다. 코드에서 HTTP 요청 중 쓰기 성격은 토큰 발급 한 곳뿐이었다. 토큰은 서명(RS256)을 내장 crypto 로 직접 만들어 외부 패키지 0 원칙을 지켰다. 키 파일은 저장소에 올라가지 않는 data/ 폴더(gitignore)에 둔다.
  • 읽는 컬렉션은 여섯. 프로젝트·WBS·NCR·CAR·ITP·할일. 첨부 조각(chunk__, dwg_)과 크기가 50,000바이트(약 50KB)를 넘는 문서는 걸렀다. 첨부 파일이 base64(글자로 바꾼 덩어리)로 들어 있어 수백 KB 짜리 "폭탄"이 되기 때문이다.
  • 구조는 링크로. 프로젝트가 중심 노드이고 NCR·CAR·ITP·할일이 [[프로젝트명]]으로 붙는다. [[연도]] 허브로도 묶여 그래프에서 프로젝트별·연도별 무리가 된다. NCR 과 CAR 은 서로 링크한다.
  • 플랫폼 폴더는 통째로 생성물. 실행할 때마다 지우고 다시 만든다(몇 번 돌려도 같은 결과, 멱등). 볼트의 다른 폴더는 건드리지 않는다. 매일 07:20 에 돌고, 새 NCR·CAR·프로젝트가 있을 때만 보고하게 했다.

첫 실행(커밋 메시지 값): 프로젝트 22 · NCR 1 · CAR 8 · ITP 7 · WBS 28 · 할일 1 → 노트 68장, 그래프 17 → 85노드.

7 · 폴더 색인을 새로 짰는데 가려진 채 한 주가 갔다 (8/6 16:12)

작성자 PAIS 커밋(09:31)의 폴더 색인은 파일마다 노트 한 장을 만드는 방식이었다. 16:12 에 cwkim83 이름 커밋(Claude 공동 저자 표시)으로 폴더마다 노트 한 장(하위 4단계, 노트 400장·폴더당 파일 300줄 한도)으로 다시 짰다. 내용은 읽지 않고 이름·크기·날짜 목록만 담는다는 설계였다.

그런데 tools.js 안에 같은 이름의 도구가 두 번 정의돼 있었다. 객체(이름과 값을 묶은 표)에서는 뒤의 정의가 앞을 덮어서, 새 코드는 도구로는 불리지 않았다. 직접 풀어 보니 16:12 커밋 시점에도, 18:59 시점에도 등록된 index_folder 는 옛 파일별 카드 방식이었다. 8월 13일 10:25 "죽은 코드 제거" 커밋이 이걸 발견해 새 코드를 지웠다. 6일 18시간이 지난 뒤였다.

그 사이 16:56 에는 색인 한 번에 볼트가 2,465노드로 불어, 그래프에 무리 필터와 800노드 상한을 넣었다(05단계 6번 기록).

8 · 뒷일 — 볼트와 미러가 조용히 틀렸던 일곱 (8/13 ~ 10/1)

  • 폴더가 둘이었다 (8/13). 플랫폼 폴더가 02_, 03_ 두 개로 68장씩 있어 검색 결과가 두 번씩 나왔다. 코드의 출력 폴더 이름을 먼저 고치고 나서 폴더를 지웠다. 폴더만 지우면 다음 날 07:20 예약이 다시 만들기 때문이다.
  • 부서를 맨 위로 (8/14). 볼트 최상위를 01_AI_Wiki·02_PAIS·03_사람·04_Sejong_Platform과 부서 폴더 05~19 로 정했다. [[링크]]는 경로가 아니라 노트 이름으로 걸려서 폴더를 옮겨도 안 깨진다. 새 공유가 생기면 맨 뒤 번호로 붙인다. 앞 번호를 다시 매기면 링크가 깨진다.
  • 볼트가 117만 장이 됐다 (8/16). 볼트를 한 번 훑는 데 100초가 걸려 파이스가 감시기에게 죽었고, 옵시디언은 켜질 때마다 한참 흰 화면이었다. 옵시디언으로 볼 노트 108장(플랫폼 미러 노트 포함)만 볼트에 두고 NAS 카드 117만 장은 볼트 밖 창고로 옮겼다.
  • NCR 이 13건 빠져 있었다 (8/17). 큰 필드 하나 때문에 문서를 통째로 버리고 있었고, 경고 한 줄 없이 건너뛰었다. 수리 제목이 "NCR 6 → 19"다. 큰 필드만 버리고 문서는 살렸다.
  • 열쇠를 둘로 (9/20). 백업·동기화는 영영 읽기 전용 열쇠, 이관·복원만 쓰기 열쇠를 쓰게 가르고, 쓰기 열쇠가 없으면 읽기 열쇠로 조용히 넘어가지 않고 던지게 했다.
  • 시험 기록이 근거로 꺼내질 뻔했다 (9/25). 9/24 사람 손 시험으로 만든 무효 NCR·CAR 이 볼트 노트로 있었다. 기록은 남기고 색인에서만 뺐다.
  • 두뇌에 맡긴 명령 한 줄이 조용히 죽었다 (10/1). 새벽 02:00 NAS 훑기가 같은 방식(두뇌를 거치는 예약)으로 돌다가 두뇌가 끊긴 밤에 실패 기록도 알림도 없이 '완료'로 적혔다. 그래서 07:20 플랫폼 동기화를 포함해 명령 한 줄짜리 셋을 launchd(맥의 시간 예약)가 직접 돌리게 옮겼다.

💡 설명

  • 옵시디언(Obsidian): 마크다운 글을 폴더에 파일로 쌓아 두고 읽는 노트 앱. 파일은 평문이라 다른 프로그램도 그냥 읽는다.
  • 볼트(vault): 옵시디언이 여는 노트 폴더 하나.
  • [[링크]](위키링크): 노트 이름을 겹대괄호로 감싸면 그 노트로 이어지는 링크. 이름으로 걸려서 폴더를 옮겨도 이어진다.
  • 그래프 뷰: 노트를 점, 링크를 선으로 그린 지도.
  • 미러링: 원본(플랫폼 DB)을 읽어 사본(노트)을 만들되 원본은 건드리지 않는 것.
  • 서비스 계정: 사람이 아니라 프로그램이 쓰는 로그인. 역할로 할 수 있는 일을 정한다.
  • IAM: 구글 클라우드의 권한 관리. "뷰어" 역할은 읽기만 되고 쓰기는 서버가 거부한다.
  • Firestore · 컬렉션: 구글의 문서형 DB. 컬렉션은 같은 종류 문서를 모은 묶음.
  • RAG: 질문과 관련된 자료 조각을 먼저 찾아 모델에게 같이 보여 주는 방식. 조각을 숫자 벡터로 바꿔 찾는 것이 임베딩(의미 색인)이다.
  • 멱등(idempotent): 몇 번을 돌려도 결과가 같은 것. 매번 지우고 다시 만드는 폴더가 그렇다.
  • 폴백(fallback): 원래 길이 안 될 때 대신 가는 길.
  • base64: 파일을 글자로 바꾼 것. 첨부가 문서 안에 들어 있으면 문서가 수백 KB 로 커진다.

함정과 배운 것

  • 문서의 "미룬다"는 파이스를 막지 못한다. 자기수정 도구가 있으면 그날 만든다. 막으려면 권한과 시험이다.
  • 같은 이름의 도구·함수를 두 번 정의하면 뒤가 이기고 앞은 조용히 죽는다. 새로 짠 코드가 한 주간 도구로 안 불린 것도 사람 눈에 안 보인다. 새 구현을 넣으면 실제로 불리는 정의가 어느 쪽인지부터 본다.
  • 문서를 통째로 걸러내는 필터는 숫자를 조용히 줄인다. NCR 이 19건인데 6건만 옮겨지던 것은 오류도 경고도 없었다. 걸러진 개수를 같이 남긴다.
  • 폴더 이름을 코드가 만든다면, 이름은 코드에서 먼저 바꾼다. 폴더부터 지우면 예약이 되살린다.
  • 파일 수천 개를 한 번에 훑는 동기 코드(끝날 때까지 다른 일을 막는 코드)는 서버를 멈춘다. 헬스 체크(살아 있느냐는 물음)가 200 이어도 그렇다. 옵시디언으로 볼 노트와 기계가 대량으로 만든 카드는 위치를 나눈다.
  • 읽기 열쇠와 쓰기 열쇠는 처음부터 가른다. 쓰기 열쇠가 없을 때 읽기 열쇠로 조용히 넘어가지 말고 던진다.
  • 시험으로 만든 기록은 색인에서 뺀다. 검색이 그것을 근거로 꺼낸다.
  • 시간 맞춰 한 줄 명령만 돌리는 일에 두뇌를 끼우지 않는다. 두뇌가 끊기면 조용히 '완료'가 된다(10/1 새벽 NAS 훑기).
  • 작업공간 저장소의 8/6 09:30 백업 커밋 메시지는 "옵시디언 볼트 초기 노트 8개"라고 적었지만, 그 커밋의 변경 파일 21개에는 노트가 없다(볼트는 저장소 밖에 있다). 노트 8개는 확인 못 함.

출처

플랫폼 저장소: 13d9d71 · b29a79e · f1c6955 · e01e998 · e1f5048 · 07e6df9 · 393e186 · 62be4dc · 87c0cbd, PROJECT-HISTORY.md Phase 9.
파이스 저장소: 8415b2d · 7aeb2e6 · 2acc53a · c961262 · 635f11b · 7dcf958 · c38b06e · a7ab0f3 · 6412c8d · 51ce0fd · d0ce8ec · 30e47a2 · 647f000 · 034ffb5 · 9b279c9 · 5b11609 · df0db45 · f393489 · b407b02 · dbbd8f0 · 40a599c · 58ac346 · 3d9096a · 7d205f6.
기억 노트: sejong-platform-sync · platform-write-key · pais-hud-and-graph.


← 03 SJ FLOW v2 ② — AI 게이트웨이와 AI 비서 1~3기 · 05 파이스 탄생 — 닷새 만에 뼈대와 안전망 →