hyungi dd0d7833f6 feat: DEVONthink 전체 문서 배치 임베딩 스크립트
- batch_embed.py: 9,000+ 문서 배치 임베딩
  - DB별 순차 처리, 500건씩 AppleScript 배치 텍스트 추출
  - GPU bge-m3 배치 임베딩 (32건/호출)
  - Qdrant 배치 upsert (100건/호출)
  - --sync: 삭제된 문서 Qdrant 정리 (고아 포인트 제거)
  - --force: 전체 재임베딩
  - --db: 특정 DB만 처리
  - GPU 헬스체크 + Qdrant UUID 중복 스킵
  - 페이로드: uuid, title, db_name, text_preview, embedded_at

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 16:41:19 +09:00

DEVONThink PKM System

Mac mini M4 Pro 기반 개인 지식관리(PKM) 자동화 시스템

시스템 구성

┌─────────────────── Mac mini M4 Pro (허브) ───────────────────┐
│                                                                │
│  DEVONthink 4 ◄── DEVONagent Pro                              │
│  (13개 DB)         (자동 검색)                                  │
│       │                                                        │
│  ┌────┴─────── 자동화 레이어 ────────────────────────┐        │
│  │  auto_classify.scpt   법령 모니터링   이메일 수집    │        │
│  │  omnifocus_sync.scpt  일일 다이제스트  PKM API      │        │
│  └──────────────────────────────────────────────────┘        │
│       │                                                        │
│  OmniFocus 4          MLX Qwen3.5-35B-A3B (AI 분류/번역)      │
│  (작업 관리)            localhost:8800                          │
│                                                                │
└──────────────────────────┬─────────────────────────────────────┘
                           │ Tailscale VPN
          ┌────────────────┼────────────────┐
┌─────────▼──────────┐         ┌────────────▼─────────────┐
│ Synology DS1525+   │         │ GPU 서버 (RTX 4070 Ti S) │
│ Gitea · MailPlus   │         │ 임베딩 · OCR · 리랭킹     │
│ WebDAV 동기화       │         │ Plex                     │
└────────────────────┘         └──────────────────────────┘

핵심 기능

AI 자동 분류 — DEVONthink Inbox에 들어온 문서를 MLX Qwen3.5가 분석하여 13개 DB 중 적합한 곳으로 자동 이동, 태그와 메타데이터를 자동 부여

법령 모니터링 — 산업안전보건법, 중대재해처벌법 등 7개 한국 법령 + US OSHA, JP 厚労省, EU-OSHA 해외 법령 변경을 매일 자동 추적

이메일 아카이브 — Synology MailPlus에서 IMAP으로 이메일을 수집하여 DEVONthink Archive DB에 자동 보관

일일 다이제스트 — DEVONthink 변화, OmniFocus 진행 상황, 법령 변경 등을 종합한 일일 보고서 자동 생성

OmniFocus 연동 — Projects DB의 TODO 패턴을 감지하여 OmniFocus에 작업 자동 생성, DEVONthink 역링크 포함

REST API — DEVONthink/OmniFocus 상태를 HTTP로 조회 (내부 모니터링용)

디렉토리 구조

scripts/               Python 스크립트
  pkm_utils.py           공통 유틸 (로깅, 인증, LLM 호출)
  law_monitor.py         법령 변경 모니터링 (한국+US/JP/EU)
  mailplus_archive.py    MailPlus 이메일 수집
  pkm_daily_digest.py    일일 다이제스트 생성
  pkm_api_server.py      REST API 서버 (Flask, 포트 9900)
  embed_to_chroma.py     ChromaDB 벡터 임베딩
  prompts/               AI 프롬프트 템플릿

applescript/           DEVONthink/OmniFocus 연동
  auto_classify.scpt     Inbox 자동 분류 Smart Rule
  omnifocus_sync.scpt    OmniFocus 작업 생성 Smart Rule

launchd/               macOS 스케줄 실행
  net.hyungi.pkm.law-monitor.plist    매일 07:00
  net.hyungi.pkm.mailplus.plist       매일 07:00, 18:00
  net.hyungi.pkm.daily-digest.plist   매일 20:00

docs/                  문서
  architecture.md        시스템 아키텍처
  deploy.md              배포 가이드 + 트러블슈팅
  claude-code-commands.md  개발 작업 지시서
  dev-roadmap.md         개발 로드맵
  devonagent-setup.md    DEVONagent 검색 세트 가이드
  industrial-safety-blueprint.md  산업안전 DB 설계

data/                  데이터
  laws/                  수집된 법령 문서
  law_last_check.json    마지막 확인 시점

tests/                 테스트
  test_classify.py       AI 분류 정확도 테스트

빠른 시작

# Mac mini에서
git clone https://git.hyungi.net/hyungi/devonthink_home.git "DEVONThink_my server"
cd "DEVONThink_my server"
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt

# 인증 정보 설정
mkdir -p ~/.config/pkm
cp credentials.env.example ~/.config/pkm/credentials.env
nano ~/.config/pkm/credentials.env  # 실제 값 입력
chmod 600 ~/.config/pkm/credentials.env

자세한 배포 방법은 docs/deploy.md 참조

실행 환경

구성 요소 요구사항
macOS 14+ (Sonoma)
Python 3.11+
DEVONthink 4.x, GUI 실행 중
OmniFocus 4.x, GUI 실행 중
MLX 서버 Qwen3.5-35B-A3B, localhost:8800
Tailscale NAS/GPU 서버 접근용

개발

개발 흐름:
MacBook Pro (또는 Cowork) → git push → Gitea (NAS) → Mac mini에서 git pull

개발 현황과 다음 작업은 docs/dev-roadmap.md 참조

Description
No description provided
Readme 940 KiB
Languages
Python 57%
Svelte 31.8%
HTML 5.2%
TypeScript 2.4%
JavaScript 1.8%
Other 1.8%