이 노트에 대하여

리포지토리별 docs 폴더를 자동 발견하고 통합 검색하는 Denote Silo 동적 관리 시스템을 설명한다. 지식 사일로를 고정된 수동 목록 대신 살아 있는 구조로 운영하는 노트다.

개요

리포지토리 중심의 Denote Silo 자동 관리 시스템입니다.

핵심 기능

  1. 자동 발견: ~/repos/gh/*/docs 디렉토리 자동 인식
  2. 심볼릭 링크 지원: 실제 경로로 resolve
  3. 동적 업데이트: 새 프로젝트 추가 시 자동 인식
  4. 통합 검색: 모든 Silo에서 파일 검색

파일 구조

~/sync/emacs/doomemacs-config/
├── +denote-silo-dynamic.el    # 핵심 구현
├── config.el                   # 로드 설정
└── +keybindings.el            # 키바인딩

설정된 Silo 목록

기본 Silo (고정)

  • ~/claude-memory : AI 메모리 시스템
  • ~/org : 지식베이스
  • ~/org/llmlog : LLM 대화 기록

동적 Silo (자동 발견)

  • ~/repos/gh/GLG-Mono/docs : 폰트 프로젝트
  • ~/repos/gh/hawaii-trip-2025/docs : 여행 계획

사용 방법

키바인딩 (SPC n 접두어)

함수설명
nconsult-notes전체 노트 검색
Gconsult-notes-search전체 노트 grep 검색
sdenote-silo-open-or-createSilo 선택 후 파일 열기
Sdenote-silo-select-commandSilo 선택 후 명령 실행
M-ldenote-silo-list-all모든 Silo 목록 표시
M-rdenote-silo-refreshSilo 목록 새로고침
M-Fdenote-silo-find-file-all모든 Silo에서 파일 찾기
M-cdenote-silo-count-files전체 파일 개수 확인

워크플로우 예시

1. 전체 Silo 확인

M-x denote-silo-list-all

출력 예시:

=== Registered Denote Silos ===
 
Total: 5 directories
 
• claude-memory
  Path: ~/claude-memory/
  Files: 25
 
• org
  Path: ~/org/
  Files: 120
 
• llmlog
  Path: ~/org/llmlog/
  Files: 15
 
• docs (GLG-Mono)
  Path: ~/repos/gh/GLG-Mono/docs/
  Files: 7
 
• docs (hawaii-trip-2025)
  Path: ~/repos/gh/hawaii-trip-2025/docs/
  Files: 0

2. 특정 프로젝트 문서 찾기

SPC n s  ; denote-silo-open-or-create
;; → "GLG-Mono/docs" 선택
;; → 파일 검색 또는 생성

3. 전체 Silo에서 파일 검색

SPC n F  ; denote-silo-find-file-all
;; → 모든 Silo의 파일 목록 표시

4. 새 프로젝트 추가 후 갱신

# 새 프로젝트 생성
mkdir -p ~/repos/gh/new-project/docs
 
# Emacs에서 갱신
SPC n R  ; denote-silo-refresh

기술적 세부사항

자동 발견 알고리즘

(defun denote-silo-discover-repo-docs ()
  "~/repos/gh/*/docs 자동 발견."
  (let ((valid-silos '()))
    (dolist (repos-root denote-silo-repos-roots)
      (dolist (repo-dir (directory-files repos-root t "^[^.]"))
        (let* ((real-repo-dir (file-truename repo-dir))  ; 심볼릭 링크 resolve
               (docs-path (expand-file-name "docs" real-repo-dir)))
          (when (file-directory-p docs-path)
            (push docs-path valid-silos)))))
    (nreverse valid-silos)))

커스터마이징

다른 리포지토리 루트 추가

;; config.el에 추가
(after! denote-silo
  (setq denote-silo-repos-roots
        '("~/repos/gh"
          "~/repos/work"    ; 회사 프로젝트
          "~/repos/3rd")))  ; 외부 오픈소스

기본 Silo 수정

(setq denote-silo-base-directories
      '("~/claude-memory"
        "~/org"
        "~/documents/notes"))

장점

  1. 자동화: 수동 등록 불필요
  2. 확장성: 새 프로젝트 자동 인식
  3. 통합성: 기존 denote-silo + consult-notes 완벽 통합
  4. 유연성: 심볼릭 링크 지원으로 실제 경로 위치 자유

문제 해결

Silo가 인식되지 않을 때

  1. 디렉토리 구조 확인:

    ls -la ~/repos/gh/*/docs
  2. Silo 목록 수동 갱신:

    M-x denote-silo-refresh
  3. 현재 등록된 Silo 확인:

    M-x denote-silo-list-all

심볼릭 링크 문제

심볼릭 링크는 자동으로 실제 경로로 변환됩니다:

# 심볼릭 링크 생성
ln -s /path/to/real/project ~/repos/gh/project-link
 
# Emacs는 실제 경로를 사용
# /path/to/real/project/docs → 자동 인식

향후 계획

  • denote-silo-grep-all 함수 개선 (ripgrep 통합)
  • Silo 통계 대시보드 추가
  • 프로젝트별 태그 자동 추천
  • Git 연동 (최근 커밋 정보 표시)

참고 링크

관련 문서

  • +denote-silo-dynamic.el:1 : 핵심 구현
  • config.el:63 : 로드 설정
  • +keybindings.el:88 : 키바인딩 정의