본문으로 건너뛰기

[7/7] Hermes가 새 Markdown 문서를 만드는 Digital Garden 완성하기

· 약 5분

이 글은 실제 Abulafium 구축 이력(2026-10-09 기준)을 바탕으로 다시 작성한 공개용 실습 매뉴얼입니다. [실제 검증]은 구축 과정에서 성공을 확인한 상태, [재현 절차]는 이를 일반화한 실행 순서, [확인 필요]는 실제 소스·대시보드를 추가 확인해야 하는 사항입니다. 명령어의 <USER>, <REPO_URL> 등은 자신의 환경으로 변경하세요.

완성 목표​

Hermes가 Obsidian의 garden/을 읽고, 기존 강의노트·블로그 원고를 훼손하지 않도록 inbox/에만 새 Markdown을 생성한다. 생성 파일이 Syncthing을 통해 노트북에 나타나는지 끝까지 검증한다.

사전 조건: 5편의 Hermes Gateway·Dashboard가 실행 중이고 6편의 Garden 양방향 동기화가 완료되어야 한다.

1. 읽기 전용으로 시작한 이유 [실제 검증]​

초기 Hermes 마운트는 다음 한 줄이었다.

- /mnt/c/works/abulafium/garden:/workspace/garden:ro

이 상태로 Garden Markdown을 읽는 데 성공했다. 그러나 Hermes에 자료 수집·메일 요약·보고서 작성을 맡기려면 결과물을 파일로 보존해야 했다. 전체 Garden을 쓰기 가능하게 열면 기존 원고 덮어쓰기가 걱정되어 inbox/만 예외적으로 쓰기 허용하는 구조로 변경했다.

2. 적용한 Docker Compose [실제 검증]​

/home/<USER>/docker/hermes/compose.yaml을 다음과 같이 수정한다. 실제 구성의 경로를 일반화한 예시이며 자신 환경에 맞게 <USER> 및 Windows 드라이브 경로를 바꾼다.

services:
hermes:
image: nousresearch/hermes-agent:latest
container_name: hermes
restart: unless-stopped
command: gateway run
environment:
HERMES_DASHBOARD: "1"
volumes:
- /home/<USER>/.hermes:/opt/data
- /mnt/c/works/abulafium/garden:/workspace/garden:ro
- /mnt/c/works/abulafium/garden/inbox:/workspace/garden/inbox:rw
ports:
- "127.0.0.1:8642:8642"
- "127.0.0.1:9119:9119"

중첩 마운트: 상위 /workspace/garden은 읽기 전용이지만 /workspace/garden/inbox에는 동일 호스트 하위 폴더를 다시 읽기·쓰기로 바인드했다. 이 방식의 파일 시스템 동작은 테스트로 확인됐다. AI의 모든 행동을 제한하는 완전한 샌드박스 정책을 뜻하지는 않는다.

3. 적용 순서 [실제 검증]​

# 변경 전 설정을 별도로 백업
cp "$HOME/docker/hermes/compose.yaml" "$HOME/docker/hermes/compose.yaml.bak"
# 파일을 편집한 뒤 구문 검증
docker compose -f "$HOME/docker/hermes/compose.yaml" config --quiet
cd "$HOME/docker/hermes"
docker compose up -d --force-recreate hermes
docker compose ps

구축 당시 up -d --force-recreate hermes 후 정상 실행을 확인했다. Compose 파일을 재생성하기 전에는 기존 /home/<USER>/.hermes 데이터 마운트가 유지되는지 확인한다.

4. 권한 테스트: 컨테이너 명령으로 파일 만들기 [실제 검증]​

docker exec hermes sh -c 'echo "# Hermes 문서 생성 테스트" > /workspace/garden/inbox/hermes-test.md'
cat /mnt/c/works/abulafium/garden/inbox/hermes-test.md

PC 호스트 파일에서 동일 텍스트가 출력되고, 노트북 Obsidian에도 hermes-test.md가 나타났다. 이 테스트는 컨테이너의 파일 쓰기 권한을 확인한 것이지 AI 에이전트가 직접 작업했다고 확인하는 테스트는 아니다.

5. 실제 Hermes Agent에게 요청 [실제 검증]​

Hermes 채팅에 다음과 같이 요청했다.

/workspace/garden/inbox/에 hermes-first-note.md 파일을 생성해 줘.
제목은 '# Hermes의 첫 번째 노트', 현재 날짜와
'이 문서는 Hermes Agent가 직접 작성했습니다.'라는 문장을 포함해 줘.

Hermes가 python3 -c 스크립트 실행 승인을 요청했다.

approval required · script execution via -e/-c flag
1. Allow once
2. Allow this session
3. Always allow
4. Deny

당시에는 2. Allow this session을 권장했고, 실제 Markdown 파일이 생성됐음을 확인했다. 매번 승인하기 번거롭더라도 3. Always allow를 무턱대고 선택해서 임의 스크립트 실행을 포괄적으로 허용하는 것은 피한다.

[미구현] 안전한 파일 쓰기 작업만 세밀하게 자동 승인하고 위험 명령을 차단하는 별도 Hermes 승인 정책은 아직 구성·검증되지 않았다.

6. 문서 생성 운영 규칙 [권장 정책 / 자동화 미검증]​

AI에 지시할 때는 최소한 다음을 고정한다.

  1. 모든 신규 결과는 /workspace/garden/inbox/에 새 파일로만 작성한다.
  2. 같은 이름의 기존 파일이 있으면 덮어쓰기 전에 확인한다.
  3. 제목·작성일·작업 목적·원자료 출처·확인해야 할 사실을 Markdown에 포함한다.
  4. 기존 garden/blog/, lectures/, courses/ 문서의 수정·이동·삭제는 승인 전 하지 않는다.
  5. 사람이 검토한 문서만 정식 폴더로 이동하고 Commit·Push한다.

예시 파일 이름: 2026-10-09-ai-industry-research.md. 실제 운영의 날짜와 분야는 작업 내용에 맞게 정한다.

7. GitHub와 출판: Syncthing 이후 무엇이 달라지는가​

Hermes → inbox/ 새 Markdown 작성
→ Syncthing으로 노트북 Obsidian에 표시
→ 사용자 검토·수정·분류
→ Git 변경 내용 확인
→ Commit·Push
→ Cloudflare Workers Builds
→ 공개 대상만 Docusaurus에서 게시

중요: Syncthing은 파일만 복제하므로 모든 기기의 Git 상태가 동일하다고 생각하면 안 된다. Git을 사용하는 출판 담당 기기를 하나로 정하는 정책을 추천한다. 실제 담당 기기는 아직 확정되지 않았다. 다중 장치에서 자동 Pull·자동 Commit을 무분별하게 같이 사용하지 않는다.

8. 아직 만들지 않은 기능을 구별한다​

기능상태
Garden 전체 읽기[실제 검증]
inbox/에 새 Markdown 쓰기[실제 검증]
파일의 Obsidian 양방향 표시[실제 검증]
이메일 요약 자동 저장[미구현]
자료 수집·정기 요약 자동 실행[미구현]
memos/·research/에 직접 저장[미구현: 쓰기 권한 미부여]
파일 생성만 자동 승인하는 세밀한 정책[미구현]
Windows 재부팅 뒤 전체 무인 재가동[확인 필요]

9. 정기 점검과 복구 명령​

# 컨테이너
cd "$HOME/docker/hermes" && docker compose ps
cd "$HOME/docker/syncthing" && docker compose ps
# 로그
docker logs --tail=100 hermes
docker logs --tail=100 syncthing
# 볼륨 확인
docker inspect hermes --format '{{range .Mounts}}{{println .Source "->" .Destination .RW}}{{end}}'
# Git 상태 확인(WSL2에서 Windows 저장소)
cd /mnt/c/works/abulafium && git status -sb

복구를 위해 꼭 백업할 곳: GitHub 저장소 외에도 미Push Garden 파일, Hermes ~/.hermes/, Syncthing 설정 디렉터리(장치 인증서 포함), Docker Compose 파일 및 Cloudflare 계정의 비밀 설정 정보를 별도로 안전하게 백업한다. Syncthing만으로는 삭제·오염으로부터 복구할 백업이 보장되지 않는다.

최종 검증 체크리스트​

  • Hermes 채팅에서 Garden 기존 문서 읽기
  • 지정된 inbox/에 새 파일 작성
  • 노트북 Obsidian에서 작성 결과 확인
  • 기존 문서는 쓰기 허용되지 않는지 테스트 환경에서 점검
  • 파일 생성 관련 승인 정책 이해
  • Git Push는 검토 후 수행, 비공개 파일 게시 제외 검증
  • Syncthing 설정 및 Hermes 상태 정기 백업