Files
hyungi_document_server/docs/claude-code-commands.md
Hyungi Ahn bec9579a8a chore: 프로젝트 구조 + 설계 문서 초기 커밋
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 11:22:04 +09:00

10 KiB

Claude Code 실행 명령어 — PKM 시스템 구축

작업 위치: MacBook Pro ~/Documents/code/DEVONThink_my server/ Claude Code를 이 디렉토리에서 실행 완성 후 Gitea에 push → Mac mini에서 pull

개발/배포 흐름:
MacBook Pro (Claude Code)
  ~/Documents/code/DEVONThink_my server/
  → 스크립트/설정 파일 작성
  → git commit & push
          │
          ▼
  Gitea (Synology NAS)
          │
          ▼
  Mac mini (git pull → 실행)

0단계: 프로젝트 구조 생성 + credentials.env 복사

Claude Code 실행 전에 먼저:

# MacBook Pro에서
cd ~/Documents/code/DEVONThink_my\ server/

# credentials.env를 프로젝트에 복사 (gitignore 필수!)
cp ~/.config/pkm/credentials.env ./credentials.env.example
# example은 값을 비운 템플릿용, 실제 파일은 Mac mini에서 직접 생성

# Mac mini에서 (SSH 접속 후)
mkdir -p ~/.config/pkm
nano ~/.config/pkm/credentials.env
# → 실제 인증 정보 입력
chmod 600 ~/.config/pkm/credentials.env

1단계: 프로젝트 구조 + requirements.txt

이 프로젝트의 디렉토리 구조를 만들고 기본 설정 파일들을 생성해줘.
작업 디렉토리: 현재 디렉토리 (~/Documents/code/DEVONThink_my server/)

프로젝트 구조:
./
├── README.md                 ← 프로젝트 설명
├── requirements.txt          ← Python 패키지 목록
├── .gitignore                ← credentials.env, venv, logs, __pycache__ 등 제외
├── credentials.env.example   ← 인증 정보 템플릿 (값은 비움)
├── scripts/
│   ├── law_monitor.py
│   ├── mailplus_archive.py
│   ├── pkm_daily_digest.py
│   ├── embed_to_chroma.py
│   └── prompts/
│       └── classify_document.txt
├── applescript/
│   ├── auto_classify.scpt
│   └── omnifocus_sync.scpt
├── launchd/
│   ├── net.hyungi.pkm.law-monitor.plist
│   ├── net.hyungi.pkm.mailplus.plist
│   └── net.hyungi.pkm.daily-digest.plist
├── docs/
│   ├── devonagent-setup.md
│   └── deploy.md             ← Mac mini 배포 방법
└── tests/
    └── test_classify.py

requirements.txt에 넣을 패키지:
- chromadb
- requests
- python-dotenv
- schedule
- markdown

.gitignore에 반드시 포함:
- credentials.env
- venv/
- logs/
- __pycache__/
- *.pyc
- .DS_Store

deploy.md에는 Mac mini에서의 설치 절차 작성:
1. git pull
2. python3 -m venv venv && source venv/bin/activate
3. pip install -r requirements.txt
4. credentials.env는 ~/.config/pkm/credentials.env에 별도 관리
5. launchd plist 심볼릭 링크 등록 방법

네트워크 환경:
- NAS 도메인: ds1525.hyungi.net (Tailscale: 100.101.79.37, 포트: 15001)
- MailPlus: mailplus.hyungi.net:993 (IMAP SSL)
- WebDAV: webdav.hyungi.net/Document_Server/DEVONThink/
- TKSafety: tksafety.technicalkorea.net (나중에 활성화)

2단계: Ollama 모델 확인 + 분류 프롬프트 테스트

Ollama가 정상 동작하는지 확인하고, PKM 문서 분류용 프롬프트를 테스트해줘.

1. ollama list로 현재 모델 확인
2. qwen3.5:35b-a3b 계열 모델이 있는지 확인 (없으면 알려줘)
3. 테스트 프롬프트 실행 — 아래 내용으로 분류 테스트:

테스트 문서: "산업안전보건법 시행규칙 일부개정령안 입법예고 - 고용노동부는 위험성평가에 관한 지침을 개정하여..."

기대 응답 JSON:
{
  "tags": ["위험성평가", "법령개정", "고용노동부"],
  "domain_db": "04_Industrial safety",
  "sub_group": "10_Legislation/Notice",
  "sourceChannel": "inbox_route",
  "dataOrigin": "external"
}

도메인 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

sourceChannel 값: tksafety, devonagent, law_monitor, inbox_route, email, web_clip, manual
dataOrigin 값: work (자사 업무), external (외부 참고)

프롬프트를 최적화해서 ~/Documents/code/DEVONThink_my server/scripts/prompts/ 디렉토리에 저장해줘.

3단계: DEVONthink Smart Rule + AppleScript 배포

DEVONthink 4 Smart Rule용 AppleScript 모듈들을 만들어줘.
Mac mini에서 DEVONthink가 실행 중이야.

모듈 A: Ollama 연동 자동 분류 (~/Documents/code/DEVONThink_my server/applescript/auto_classify.scpt)
- DEVONthink Inbox DB에 새 문서가 들어오면 실행
- Ollama qwen3.5 35B에 문서 텍스트 전송
- 응답에서 tags, domain_db, sub_group, sourceChannel, dataOrigin 파싱
- DEVONthink 태그 설정 + 커스텀 메타데이터(sourceChannel, dataOrigin, lastAIProcess) 설정
- 해당 도메인 DB의 하위 그룹으로 문서 이동
- GPU 서버(Tailscale IP)로 벡터 임베딩 비동기 전송

모듈 B: OmniFocus 연동 (~/Documents/code/DEVONThink_my server/applescript/omnifocus_sync.scpt)
- Projects DB에 새 문서 추가 시 TODO 패턴 감지
- OmniFocus에 작업 생성 (DEVONthink 링크 포함)
- 커스텀 메타데이터에 omnifocusTaskID 저장

프롬프트 파일 위치: ~/Documents/code/DEVONThink_my server/scripts/prompts/
인증 정보: ~/.config/pkm/credentials.env
GPU 서버 Tailscale IP는 별도 확인 필요 (나중에 추가)

4단계: 법령 모니터링 스크립트

한국 법령 변경 모니터링 스크립트를 만들어줘.

스크립트: ~/Documents/code/DEVONThink_my server/scripts/law_monitor.py
인증: ~/.config/pkm/credentials.env의 LAW_OC 값 사용
API: open.law.go.kr OpenAPI

기능:
1. 산업안전보건법, 중대재해처벌법, 관련 시행령/시행규칙/고시 변경 추적
2. 변경 감지 시:
   - 법령 본문(XML) 다운로드 → ~/Documents/code/DEVONThink_my server/data/laws/에 저장
   - DEVONthink 04_Industrial Safety/10_Legislation/ 하위에 자동 임포트 (AppleScript 호출)
   - 커스텀 메타데이터: sourceChannel=law_monitor, dataOrigin=external
   - 로그: ~/Documents/code/DEVONThink_my server/logs/law_monitor.log
3. launchd plist 생성: 매일 07:00 실행
   ~/Documents/code/DEVONThink_my server/launchd/net.hyungi.pkm.law-monitor.plist
   → ~/Library/LaunchAgents/에 심볼릭 링크

※ 법령 API 승인 대기중이라 스크립트만 만들고 실제 테스트는 승인 후에
※ 해외 법령(US OSHA, JP, EU)은 나중에 추가 예정

5단계: MailPlus → DEVONthink 이메일 수집

MailPlus 이메일을 DEVONthink Archive DB로 자동 수집하는 스크립트를 만들어줘.

스크립트: ~/Documents/code/DEVONThink_my server/scripts/mailplus_archive.py
인증: ~/.config/pkm/credentials.env

접속 정보:
- IMAP 서버: mailplus.hyungi.net:993 (SSL)
- 계정: hyungi

기능:
1. IMAP으로 MailPlus 접속
2. 마지막 동기화 이후 새 메일 가져오기
3. DEVONthink Archive DB에 임포트 (AppleScript 호출)
4. 커스텀 메타데이터: sourceChannel=email
5. 안전 관련 키워드 감지 시 dataOrigin 자동 판별

launchd: 매일 07:00 + 18:00 실행
~/Documents/code/DEVONThink_my server/launchd/net.hyungi.pkm.mailplus.plist

6단계: Daily Digest 시스템

PKM 일일 다이제스트를 자동 생성하는 스크립트를 만들어줘.

스크립트: ~/Documents/code/DEVONThink_my server/scripts/pkm_daily_digest.py
인증: ~/.config/pkm/credentials.env

기능:
1. DEVONthink에서 오늘 추가/수정된 문서 집계 (AppleScript로 쿼리)
   - DB별 신규 건수
   - sourceChannel별 구분
2. law_monitor 로그에서 법령 변경 건 파싱
3. OmniFocus 오늘 완료/추가/기한초과 집계 (AppleScript)
4. 상위 뉴스 3건 요약 (Ollama 35B 호출)
5. MD 파일 생성 → DEVONthink 00_Note_BOX/Daily_Digest/에 저장
   파일명: YYYY-MM-DD_digest.md
6. OmniFocus 액션 자동 생성 (법령변경, overdue, Inbox 미처리 등)
7. 90일 지난 다이제스트 → 90_Archive 이동 (Smart Rule 대체)

launchd: 매일 20:00 실행
~/Documents/code/DEVONThink_my server/launchd/net.hyungi.pkm.daily-digest.plist

※ Synology Chat 웹훅 알림은 나중에 추가 (CHAT_WEBHOOK_URL 설정 후)

7단계: DEVONagent 검색 세트 (수동 가이드)

DEVONagent Pro에서 안전 분야 자동 검색 세트를 설정하는 가이드를 만들어줘.

총 9개 검색 세트 (7 안전 + 2 기술):
1. 국내 산업안전 뉴스 (kosha, moel, safetynews 등)
2. 국내 중대재해 뉴스
3. KOSHA 가이드/지침
4. 국내 산업안전 학술/논문
5. US OSHA / Safety+Health Magazine
6. JP 厚生労働省 / 安全衛生
7. EU-OSHA
8. 기술 뉴스 (AI/서버/네트워크)
9. 프로그래밍 기술 동향

각 세트별로:
- 검색 키워드/연산자
- 사이트 제한
- 스케줄 (매일/주간)
- 수량 제한 (주간 합계 50~85건 수준)
- 결과 → DEVONthink Inbox로 전송 설정 방법

이건 DEVONagent GUI에서 수동 설정해야 하니까,
단계별 가이드 문서를 ~/Documents/code/DEVONThink_my server/docs/devonagent-setup.md로 만들어줘.

8단계: 전체 테스트

PKM 시스템 전체 End-to-End 테스트를 진행해줘.

테스트 항목:
1. Ollama 분류 테스트 — 5종 문서(법령, 뉴스, 논문, 메모, 이메일) 분류 정확도
2. DEVONthink Smart Rule — Inbox에 테스트 문서 추가 → 자동 분류 확인
3. sourceChannel/dataOrigin 메타데이터가 정상 설정되는지
4. OmniFocus 연동 — TODO 패턴 문서 → 작업 자동 생성
5. MailPlus IMAP 접속 테스트
6. launchd 스케줄 등록 확인 (launchctl list | grep pkm)
7. Daily Digest 수동 실행 테스트

각 항목 pass/fail 리포트를 ~/Documents/code/DEVONThink_my server/docs/test-report.md로 저장해줘.

참고: 네트워크 환경

Mac mini 접속: SSH (MacBook Pro → Mac mini)
NAS 도메인: ds1525.hyungi.net (Tailscale: 100.101.79.37, 포트: 15001)
MailPlus: mailplus.hyungi.net:993 (IMAP SSL)
WebDAV: webdav.hyungi.net/Document_Server/DEVONThink/
TKSafety: tksafety.technicalkorea.net (나중에 활성화)
내부 네트워크: Tailscale VPN 연결됨