콘텐츠로 이동

아키텍처

모노레포 구조

Panacea/ ├── packages/ │ ├── backend/ # Python Flask — 통합 API + 에이전트 스트리밍 + RAG │ ├── cli/ # TypeScript — anote 터미널 CLI │ ├── vscode/ # TypeScript — VS Code 확장 │ ├── web/ # TypeScript/React — 브라우저 챗봇 앱 │ ├── mobile/ # TypeScript/React Native (Expo) — iOS + Android │ ├── desktop/ # TypeScript/Electron — 개인 데스크탑 앱 │ ├── sdk/ # TypeScript — JS/TS 클라이언트 SDK │ └── docs/ # MkDocs Material — 문서 사이트 ├── docker-compose.yml ├── package.json # npm 작업 공간 └── Makefile

백엔드 아키텍처

Python Flask 백엔드는 모든 서버 측 논리를 처리합니다:

packages/backend/ ├── app.py # Flask 진입점, 라우트 등록 ├── api_endpoints/ │ ├── chat/ # 에이전트 스트리밍 (SSE), 세션 관리 │ ├── documents/ # 업로드, RAG 파이프라인, Q&A │ ├── search/ # 의미 기반 검색 인덱스 쿼리 │ ├── auth/ # JWT, Google OAuth │ ├── user/ # 프로필, 설정 │ └── payments/ # Stripe 웹훅 + 체크아웃 ├── agents/ # LangChain/LangGraph 에이전트 정의 ├── services/ │ ├── rag.py # 문서 청크화 + Chroma 임베딩 │ ├── streaming.py # Claude/OpenAI/Gemini에 대한 SSE 스트리밍 │ └── search.py # TF-IDF 의미 기반 검색 ├── database/ │ ├── db.py # MySQL 연결 + 쿼리 │ └── schema.sql # 데이터베이스 스키마 └── models/ # LLM 제공자 래퍼

데이터 흐름: 에이전트 챗

클라이언트 (CLI / VS Code / 웹 / 모바일) │ POST /api/chat/stream {message, cwd, model} ▼ Flask 백엔드 (app.py → chat/handler.py) │ SSE 스트림 ▼ LLM 제공자 (Anthropic / OpenAI / Gemini / Ollama) │ 도구 호출 ↔ 실행 (읽기/쓰기/편집/Bash/Glob/Grep) ▼ 파일 시스템 (cwd) + Chroma (RAG 컨텍스트)

기술 선택

레이어 기술 이유
백엔드 Python Flask 풍부한 ML/AI 생태계, 기존 에이전트
에이전트 스트리밍 Anthropic Python SDK 네이티브 SSE, 도구 사용
벡터 DB ChromaDB 로컬 우선, 인프라 필요 없음
데이터베이스 MySQL ACID, 기존 스키마
캐시 Redis 세션 + 속도 제한
프론트엔드 React 18 + TypeScript 타입 안전성, 생태계
데스크탑 Electron 크로스 플랫폼, Python 번들
모바일 Expo (React Native) 웹과 코드 공유
CLI Commander.js 성숙, TypeScript 친화적
문서 MkDocs Material 아름답고 빠르며, 마크다운