Skip to content

Pandyo/PandyOffice

Repository files navigation

PandyOffice

AI 직원들이 진짜 사무실처럼 일하는 로컬 오피스 시뮬레이터

PandyOffice는 Obsidian 볼트를 지식 베이스로 삼아, 로컬 LLM(Ollama) 으로 직원과 대화하고 Claude Code CLI 로 코드 수정 작업을 맡기는 데스크톱 앱입니다. 팀을 만들고 직원을 배치하면, 각 직원이 자기 역할(SOUL)과 팀 지식(BRAIN)을 가지고 질문에 답하거나 격리된 브랜치에서 코드를 고칩니다.

회사 평면도


한눈에 보기

항목 내용
프론트엔드 Vite + React (:5173)
백엔드 Express, ESM (:3001)
대화 모델 Ollama qwen2.5:1.5b-instruct-q4_K_M (로컬)
임베딩 모델 Ollama bge-m3
코드 작업 Claude Code CLI (격리 브랜치)
지식 베이스 Obsidian 볼트 (마크다운)

직원을 클릭하면 대화가 열리고, 볼트에 쌓인 노트를 근거로 답합니다. 코드 작업을 부여하면 Claude Code CLI가 ai/work/… 전용 브랜치에서만 움직이고 main 은 건드리지 않습니다. 모든 데이터는 여러분의 Obsidian 볼트 안에 평범한 마크다운과 JSON으로 저장되므로, 앱을 끄더라도 내용은 그대로 남습니다.

주의

  • 백엔드는 자동 리로드가 없습니다. server/ 아래 파일을 고쳤다면 npm run dev 를 다시 실행하세요.
  • 코드 작업은 자동으로 merge / push 하지 않습니다. 결과는 사람이 직접 checkout 해서 검토합니다.

요구 사항

  • Node.js 18 이상
  • Ollama (로컬 LLM 실행)
  • Claude Code CLI (코드 수정 작업을 쓸 경우)
  • Obsidian 볼트 하나 (없으면 빈 폴더로 시작해도 됩니다)

빠른 시작

# 1. 의존성 설치
npm install

# 2. Ollama 모델 풀
ollama pull qwen2.5:1.5b-instruct-q4_K_M
ollama pull bge-m3

# 3. 환경 변수 (.env)
#   OBSIDIAN_VAULT_PATH=/path/to/your/vault
#   PORT=3001

# 4. 개발 서버 실행 (프론트 :5173 + 백엔드 :3001 동시 기동)
npm run dev

브라우저에서 http://localhost:5173 을 열면 회사 평면도가 나타납니다.

환경 변수

변수 기본값 설명
OBSIDIAN_VAULT_PATH ~/Documents/obsidian Obsidian 볼트 경로
PORT 3001 백엔드 포트
OLLAMA_MODEL_MAIN qwen2.5:1.5b-instruct-q4_K_M 대화 모델 교체용

Notion 토큰은 환경 변수가 아니라 앱 안의 소스 탭에서 팀별로 저장됩니다(암호화 파일).


화면 흐름

회사 평면도  →  팀 방 내부  →  팀 관리 탭
 (팀 클릭)     (직원 클릭→대화)   (직원 / 작업 / 소스 / 기록 / 그래프 / 기억)

방을 클릭하면 정사각형 사무실 안으로 들어가, 책상에 앉은 직원을 만나게 됩니다. 직원을 클릭하면 그 자리에서 대화창이 열립니다.

방 내부


주요 기능

팀 만들기 · 방 꾸미기

팀을 만들 때 아이콘과 방 디자인을 고릅니다. 기본 나무 바닥, 16종 프리셋 사진(Room1~16.png), 또는 직접 올린 사진을 방 배경으로 쓸 수 있고, 평면도와 방 내부 양쪽에 똑같이 적용됩니다.

새 팀 만들기

AI 직원

직원마다 SOUL.md(역할·성격)와 팀 공용 BRAIN.md(지식 베이스)를 가집니다. 아바타는 기본 판다 이미지 또는 업로드한 사진을 씁니다.

직원 탭

RAG 대화

질문을 던지면 bge-m3 로 볼트 청크를 임베딩·검색해 Top-K 근거를 모으고, Ollama가 그 위에서 답합니다. 최근 4턴까지 맥락을 유지하며, 답변을 초안으로 제출해 승인함으로 보낼 수 있습니다.

코드 작업 (칸반)

직원에게 코드 수정 작업을 배정하면 Claude Code CLI가 ai/work/… 격리 브랜치에서 실행합니다. 진행 로그와 git diff를 실시간으로 보고, 대기 → 진행 → 검토 → 완료 칸반으로 흐름을 관리합니다. main 은 절대 건드리지 않고, 자동 push도 없습니다.

작업 칸반

소스 연동

  • Notion — 토큰을 암호화 저장하고 페이지 URL을 등록하면 자식 페이지까지 재귀 동기화합니다.
  • GitHub 로컬 레포 — 경로를 등록하면 README/.md 를 미러링해 그래프와 RAG에 반영합니다.

지식 그래프

볼트 마크다운을 스캔해 위키링크 + 시맨틱 엣지로 force-graph를 그립니다. 노드를 클릭하면 노트 미리보기와 RAG 대화가 열립니다.

승인함 · 기억 · 기록

  • 승인함 — 문서 초안과 코드 작업을 한곳에서 검토 / 승인 / 변경 요청 / 반려합니다.
  • 누적 기억 — 결정 사항·용어를 추가하면 LLM이 요약해 이후 대화 맥락에 주입합니다.
  • 기록 — 최근 작업을 요약한 회의록을 카테고리·날짜로 모아 봅니다.

데이터 저장 구조

모든 데이터는 볼트 안에 평범한 파일로 저장됩니다.

{OBSIDIAN_VAULT_PATH}/
└─ {팀이름}/
   ├─ team.json          # 팀 메타 (이름, 아이콘, 방 디자인, 직원, 소스)
   ├─ BRAIN.md           # 팀 지식 베이스
   ├─ notes/             # 직접 작성한 노트
   ├─ notion/            # Notion 동기화 결과
   ├─ github/            # 레포 README 미러
   ├─ agents/{직원id}/
   │  ├─ SOUL.md         # 직원 역할·성격 지침
   │  └─ memory.json     # 누적 기억
   ├─ tasks.json         # 작업 목록 & 상태
   ├─ approvals.json     # 승인 목록
   └─ meeting-logs/      # 기록 (.md)

안전 원칙

  • 코드 작업은 전용 브랜치(ai/work/…)에서만 실행 — main 미접촉
  • 작업 완료 후 자동 merge / push 없음 — 사람이 직접 검토
  • Notion 토큰은 헤더로만 전달, 로그·에러에 노출 안 함
  • 레포 등록 해제는 목록에서 제거만, 실제 git 폴더는 삭제하지 않음
  • 이미지 data URL은 약 3MB 상한과 형식 검증을 거침

하드웨어 참고

로컬 16GB 머신 기준입니다.

  • 대화 모델 qwen2.5:1.5b-instruct-q4_K_Mkeep_alive: 30m 으로 상주합니다.
  • qwen3 같은 대용량 모델은 메모리 부족으로 권장하지 않습니다. OLLAMA_MODEL_MAIN 으로 교체할 수 있습니다.
  • 코드 수정은 Claude Code CLI가 처리하므로 로컬 GPU가 필요 없습니다.

About

This is an Office where you can manage AI employees.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors