# DEVONThink PKM 시스템 — Claude Code 작업 가이드 ## 프로젝트 개요 Mac mini M4 Pro(64GB, 4TB) 기반 개인 지식관리(PKM) 시스템. DEVONthink 4를 중앙 허브로, Ollama AI 자동 분류 + 법령 모니터링 + 일일 다이제스트를 자동화한다. ## 핵심 문서 (반드시 먼저 읽을 것) 1. `docs/architecture.md` — 전체 시스템 아키텍처 (DB 구조, 태그, AI, 자동화 전체) 2. `docs/industrial-safety-blueprint.md` — 04_Industrial Safety DB 상세 설계 3. `docs/claude-code-commands.md` — 단계별 작업 지시서 ## 네트워크 환경 ``` Mac mini (운영 서버): - Ollama: http://localhost:11434 - DEVONthink: 로컬 실행 중 - OmniFocus: 로컬 실행 중 Synology NAS (DS1525+): - 도메인: ds1525.hyungi.net - Tailscale IP: 100.101.79.37 - 포트: 15001 - WebDAV: webdav.hyungi.net/Document_Server/DEVONThink/ - MailPlus IMAP: mailplus.hyungi.net:993 (SSL) GPU 서버 (RTX 4070 Ti Super): - 역할: 임베딩(nomic-embed-text), 비전(Qwen2.5-VL-7B), 리랭킹(bge-reranker) - Tailscale IP: 별도 확인 필요 TKSafety: tksafety.technicalkorea.net (설정만, 나중에 활성화) ``` ## 인증 정보 - 위치: `~/.config/pkm/credentials.env` - 템플릿: `./credentials.env.example` - 스크립트에서 python-dotenv로 로딩 ## DEVONthink DB 구조 (13개) ``` 운영 DB (신규 생성 완료): Inbox — 모든 자료 최초 진입점 Archive — 이메일, 채팅 로그 Projects — 진행 중 프로젝트 도메인 DB (기존, 유지): 00_Note_BOX, 01_Philosophie, 02_Language, 03_Engineering, 04_Industrial safety, 05_Programming, 07_General Book, 97_Production drawing, 99_Reference Data, 99_Technicalkorea ``` ## 커스텀 메타데이터 필드 (DEVONthink에 등록 완료) ``` omnifocusTaskID — Single-Line Text — OmniFocus 역링크 sourceURL — URL — 원본 출처 synologyPath — Single-Line Text — NAS 원본 경로 lastAIProcess — Date — 마지막 AI 처리 일시 sourceChannel — Single-Line Text — 유입 경로 (아래 값 중 하나) dataOrigin — Single-Line Text — work 또는 external ``` ## sourceChannel 값 (유입 경로 추적) ``` tksafety — TKSafety API (업무 실적) → dataOrigin = work devonagent — DEVONagent 자동 수집 (뉴스) → dataOrigin = external law_monitor — 법령 API (법령 변경) → dataOrigin = external inbox_route — Inbox → AI 분류 → AI 판별 email — MailPlus 이메일 → AI 판별 web_clip — Web Clipper 스크랩 → dataOrigin = external manual — 직접 추가 → dataOrigin = work (기본) ``` ## AI 모델 구성 ``` Tier 1 (Mac mini, 상시): mlx-community/Qwen3.5-35B-A3B-4bit — 태그 생성, 문서 분류, 요약 → http://localhost:8800/v1/chat/completions (OpenAI 호환 API) → MLX 서버로 실행 중 (Ollama 아님) Tier 2 (Claude API, 필요시): claude-sonnet — 복잡한 분석, 장문 처리 → CLAUDE_API_KEY 사용 Tier 3 (GPU 서버, 특수): nomic-embed-text — 벡터 임베딩 Qwen2.5-VL-7B — 이미지/도면 OCR bge-reranker-v2-m3 — RAG 리랭킹 ``` ## 작업 순서 docs/claude-code-commands.md의 단계를 순서대로 진행: 1. **프로젝트 구조** — README.md, deploy.md 작성 (구조는 이미 생성됨) 2. **Ollama 테스트** — 분류 프롬프트 최적화 → scripts/prompts/에 저장 3. **AppleScript** — auto_classify.scpt, omnifocus_sync.scpt 4. **법령 모니터링** — scripts/law_monitor.py + launchd plist 5. **이메일 수집** — scripts/mailplus_archive.py + launchd plist 6. **Daily Digest** — scripts/pkm_daily_digest.py + launchd plist 7. **DEVONagent 가이드** — docs/devonagent-setup.md (수동 설정 가이드) 8. **테스트** — tests/ + docs/test-report.md ## 코딩 규칙 - Python 3.11+ (Mac mini 기본) - 인증 정보는 반드시 credentials.env에서 로딩 (하드코딩 금지) - AppleScript는 DEVONthink/OmniFocus와 연동 (osascript로 호출) - 로그는 ~/Documents/code/DEVONThink_my\ server/logs/에 저장 - launchd plist는 launchd/ 디렉토리에 생성, Mac mini에서 심볼릭 링크로 등록 - 한글 주석 사용 ## 배포 방법 ``` MacBook Pro (개발) → Gitea push → Mac mini에서 git pull Mac mini에서: cd ~/Documents/code/DEVONThink_my\ server/ git pull source venv/bin/activate pip install -r requirements.txt # launchd 등록은 deploy.md 참조 ``` ## 주의사항 - credentials.env는 git에 올리지 않음 (.gitignore에 포함) - DEVONthink, OmniFocus는 Mac mini에서 GUI로 실행 중이어야 AppleScript 작동 - 법령 API (LAW_OC)는 승인 대기 중 — 스크립트만 만들고 실제 호출은 승인 후 - TKSafety 연동은 설계만 완료, 구현은 나중에 - GPU 서버 Tailscale IP는 별도 확인 후 credentials.env에 추가