Перейти к содержанию

Архитектура

Структура Monorepo

Panacea/ ├── packages/ │ ├── backend/ # Python Flask — унифицированный API + потоковая передача агента + RAG │ ├── cli/ # TypeScript — терминал CLI anote │ ├── 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 workspaces └── Makefile

Архитектура бэкенда

Бэкенд на Python Flask обрабатывает всю серверную логику:

packages/backend/ ├── app.py # Точка входа Flask, регистрация маршрутов ├── api_endpoints/ │ ├── chat/ # Потоковая передача агента (SSE), управление сессиями │ ├── documents/ # Загрузка, RAG конвейер, Вопросы и ответы │ ├── search/ # Запросы к семантическому индексу поиска │ ├── auth/ # JWT, Google OAuth │ ├── user/ # Профиль, настройки │ └── payments/ # Вебхуки Stripe + оформление заказа ├── agents/ # Определения агентов LangChain/LangGraph ├── services/ │ ├── rag.py # Разбиение документов + встраивания Chroma │ ├── streaming.py # SSE потоковая передача в Claude/OpenAI/Gemini │ └── 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, использование инструментов
Векторная БД ChromaDB Локальный приоритет, не требуется инфраструктура
База данных MySQL ACID, существующая схема
Кэш Redis Управление сессиями + ограничение частоты
Фронтенд React 18 + TypeScript Безопасность типов, экосистема
Настольный Electron Кроссплатформенный, включает Python
Мобильный Expo (React Native) Совместное использование кода с вебом
CLI Commander.js Зрелый, удобный для TypeScript
Документация MkDocs Material Красивый, быстрый, markdown