Claude Code로 개인 AI 비서 '이든' 만들기 — 사이드바 하나로 일정·메모·블로그를 통합 관리
왜 개인 비서가 필요했나
Claude CLI의 웹 인터페이스인 OpenClaude를 일상적으로 사용하면서, 프로젝트별 코딩 작업 외에도 일정 확인, 리마인더, 메모 관리 같은 개인 업무를 자연어로 처리하고 싶다는 니즈가 생겼습니다. 별도의 앱을 만들기보다는, 이미 매일 쓰고 있는 OpenClaude 안에 개인 비서를 하나 추가하는 방식이 가장 자연스러웠습니다.
핵심 제약 조건은 명확했습니다:
- 서버(tmux-claude, socket-handler) 코드를 변경하지 않을 것
- 최소한의 UI 변경만으로 구현할 것
personalAssistant폴더와CLAUDE.md기반으로 동작할 것
설계 원칙: 폴더 하나가 곧 비서
OpenClaude는 프로젝트 폴더 단위로 Claude CLI 세션을 관리합니다. 이 구조를 그대로 활용하면, personalAssistant라는 폴더를 하나 만드는 것만으로 별도의 비서 프로젝트를 생성할 수 있습니다.
비서의 성격과 기능은 전부 CLAUDE.md 파일에 정의합니다. 서버 로직을 건드리지 않고도 Claude의 시스템 프롬프트를 통해 비서의 행동 양식을 완전히 제어할 수 있는 구조입니다.
personalAssistant/
├── CLAUDE.md # 비서 성격, 기능 정의
├── schedules/ # 일정 데이터 (JSON/마크다운)
├── notes/ # 메모 저장소
└── reminders/ # 리마인더 데이터
CLAUDE.md로 비서의 인격 설계하기
CLAUDE.md는 Claude Code가 프로젝트 폴더에 진입할 때 자동으로 읽는 컨텍스트 파일입니다. 여기에 비서의 이름, 말투, 기능 범위를 정의합니다.
# 개인 비서 이든 (AIDEN)
## 역할
- 마스터의 개인 비서로서 일정, 리마인더, 메모를 관리
- 🎩 이모지와 "마스터" 호칭 사용
- 자연어 대화로 모든 요청 처리
## 데이터 접근
- schedules/ 폴더에서 일정 조회
- notes/ 폴더에 메모 저장/검색
- reminders/ 폴더에서 리마인더 관리
## 기능 범위
- 일정 조회: "이번 주 일정 알려줘"
- 메모 관리: "회의 내용 메모해줘"
- 리마인더: "금요일 3시에 알려줘"
- 블로그 관련 작업 지원
이 구조의 장점은, 비서의 기능을 확장하고 싶을 때 CLAUDE.md만 수정하면 된다는 것입니다. 서버 재배포 없이 비서의 역할을 즉시 변경할 수 있습니다.
프론트엔드: 사이드바에 비서 섹션 추가
서버는 건드리지 않되, 사이드바 UI에는 비서 전용 섹션이 필요합니다. 기존 프로젝트 목록과 분리하여 "이든" 항목을 최상단에 배치했습니다.
변경이 필요한 파일은 두 개뿐이었습니다:
1. useProjects 훅에 비서 감지 로직 추가
// useProjects.ts
const ASSISTANT_DIR = 'personalAssistant';
// 프로젝트 목록에서 personalAssistant 폴더 감지
const hasAssistant = projects.some(
(p) => p.path.endsWith(ASSISTANT_DIR)
);
// 일반 프로젝트 목록에서는 제외
const filteredProjects = projects.filter(
(p) => !p.path.endsWith(ASSISTANT_DIR)
);
2. SidebarProjectList에 비서 아코디언 추가
// SidebarProjectList.tsx
{hasAssistant && (
<div className="assistant-section">
<AssistantAccordion
project={assistantProject}
sessions={assistantSessions}
maxVisibleSessions={1} // 최근 1개 세션만 표시
/>
</div>
)}
핵심 UX 결정은 최근 1개 세션만 표시하는 것이었습니다. 개인 비서는 과거 대화 이력을 탐색할 필요가 거의 없고, 항상 최신 세션에서 이어서 대화하거나 새 세션을 시작하면 됩니다. 이전 세션 목록을 숨기고 "새 세션 시작" 버튼만 남김으로써 인터페이스를 미니멀하게 유지했습니다.
실제 사용 예시: 일정 조회
비서가 실제로 동작하는 모습입니다. schedules/ 폴더에 JSON이나 마크다운으로 일정을 저장해두면, 자연어로 조회할 수 있습니다.
사용자: 이번 주, 다음 주 일정 좀 알려줘.
이든: 마스터, 향후 2주간 일정을 정리해드립니다. 🎩
📅 이번 주 (2월 10일 ~ 16일)
- 2/11 (화) 16:00 - 내용 (자동)
- 2/14 (토) 15:00 - 내용
📅 다음 주 (2월 17일 ~ 23일)
- 2/19 (수) - 내용
- 2/20 (목) - 내용
비서가 요일을 잘못 표기했을 때 바로 지적하면, 같은 세션 안에서 즉시 수정됩니다. 이런 피드백 루프가 자연스럽게 작동하는 것이 대화형 인터페이스의 장점입니다.
이 구조가 작동하는 이유
OpenClaude의 기존 아키텍처를 그대로 활용한 것이 핵심입니다:
| 기존 구조 | 비서에서의 활용 |
|---|---|
| 프로젝트 폴더 단위 세션 | personalAssistant 폴더 = 비서 프로젝트 |
CLAUDE.md 자동 로딩 | 비서 성격·기능 정의 |
| 파일 읽기/쓰기 도구 | 일정·메모·리마인더 CRUD |
| 세션 관리 | 비서 대화 이력 자동 관리 |
서버 변경이 필요 없었던 이유는, Claude Code가 이미 폴더 내 파일을 자유롭게 읽고 쓸 수 있는 에이전트이기 때문입니다. 별도의 API 엔드포인트나 데이터베이스 없이도, 파일 시스템 자체가 비서의 데이터 저장소 역할을 합니다.
핵심 정리
Claude Code 기반 프로젝트에 개인 비서를 추가할 때 기억할 점:
CLAUDE.md가 곧 시스템 프롬프트 — 비서의 성격, 기능 범위, 데이터 접근 방법을 여기에 모두 정의합니다- 폴더 구조가 곧 기능 구조 —
schedules/,notes/,reminders/같은 하위 폴더가 비서의 기능 모듈이 됩니다 - 서버 변경 최소화 — 기존 인프라의 폴더-세션 매핑 구조를 그대로 활용하면 프론트엔드 수정만으로 충분합니다
- 미니멀 UX — 비서 세션은 최근 1개만 표시하고, 과거 이력 탐색보다 즉시 대화에 집중하는 설계가 효과적입니다
- 점진적 확장 — 새 기능이 필요하면 하위 폴더를 추가하고
CLAUDE.md에 설명을 추가하기만 하면 됩니다