## Запрос Хочу перенести всё это в Obsidian, сделав его плагином (для личного пользования). ПРи этом в средней колонке, где граф отображаетс яштатный обсидиана или замтеки - тм будет react-flow граф с историей взаимдействия (деревом диалогов), где можно быстро будет попросить сгенерировать картинки и одновременно сразу нагенерить в разных ветках , например, локации и персонажей нескольких для НРИ (однорвременно запустить друг за другом запросы в разных ветках и пусть обрабатываются) впараллельно, я на графе всё увижу). А сам чат чтобы вёлся справа в колонк, гнде теги , бэклинки, проперти или Copilot помощник из известного плагина. сначала скажи можно ли перенести и чтобы бы ты посоветовал (пока без кода), может , предлоишь что-то улучшить? Да, граф в пространстве, где новые заметки открываются, он просто открывается там, в новом табе, где новые заметикти открываются ли графы обсидианы. Сделай перенос. Пусть бэкенд, как есть, а фронт перенеси полностью # LLM Agent для Obsidian Плагин Obsidian для работы с LLM агентом, включающий граф диалогов и интерфейс чата с поддержкой слеш-команд. ## Структура проекта ``` ttrpg-obsidian-vault/ ├── .obsidian/ │ └── plugins/ │ └── llm-agent-plugin/ │ ├── main.js │ ├── manifest.json │ ├── styles.css │ └── src/ │ ├── views/ │ │ ├── GraphView.js │ │ └── ChatView.js │ ├── components/ │ │ ├── ChatPanel.js │ │ ├── CommandInput.js │ │ ├── GraphPanel.js │ │ └── HistoryPanel.js │ └── utils/ │ └── EventBus.js ├── llm-agent-backend/ # Backend на Python │ ├── env/ # Виртуальное окружение Python │ ├── app/ # Код приложения │ │ ├── api.py │ │ ├── workflows.py │ │ └── ... │ ├── requirements.txt │ └── run.py # Точка входа └── env/ ``` ## Установка и запуск ### 1. Настройка Backend 1. Перейдите в папку backend: ```bash cd llm-agent-backend ``` 2. Активируйте виртуальное окружение: ```bash # Windows env\Scripts\activate # Linux/macOS source env/bin/activate ``` 3. Установите зависимости: ```bash pip install -r requirements.txt ``` 4. Запустите backend сервер: ```bash python run.py ``` Backend будет доступен на `http://localhost:5000` ### 2. Установка плагина в Obsidian 1. **Автоматическая установка (если плагин уже находится в правильной папке):** - Откройте Obsidian с этим хранилищем - Перейдите в Настройки → Плагины сообщества - Включите "Небезопасные плагины" (если требуется) - Найдите "LLM Agent" в списке установленных плагинов - Включите плагин 2. **Ручная установка (если нужно скопировать файлы):** ```bash # Убедитесь, что файлы плагина находятся в: .obsidian/plugins/llm-agent-plugin/ ├── main.js ├── manifest.json ├── styles.css └── src/ ``` ### 3. Использование 1. **Запуск интерфейса:** - Нажмите иконку 🧠 в левой панели Obsidian - Или используйте команду "Открыть граф диалогов LLM Agent" (Ctrl+P) 2. **Доступные слеш-команды:** - `/help` - Список доступных команд - `/imagine [промпт]` - Генерация изображений - `/analyze [url] [промпт]` - Анализ изображения - `/subtitles_meet` - Получение субтитров Google Meet - `/subtitles_teams` - Получение субтитров MS Teams - `/summarize` - Суммаризация истории диалога - `/chat` - Обычный диалог с LLM 3. **Работа с графом:** - Граф отображается в центральной области Obsidian - Чат и история - в правой боковой панели - Кликайте по узлам графа для навигации по веткам диалога - Используйте "Новый чат" для создания нового диалога ## Конфигурация ### Backend API URL По умолчанию плагин использует `http://localhost:5000/api`. Для изменения: 1. Откройте файл `.obsidian/plugins/llm-agent-plugin/main.js` 2. Найдите строку: ```javascript const DEFAULT_SETTINGS = { apiBaseUrl: 'http://localhost:5000/api' }; ``` 3. Измените URL на нужный ### LLM модели Конфигурация моделей находится в `backend/llm-agent-backend/app/llm_client.py`: ```python MODELS = { "gemini-2.5-flash": { "apiBase": "https://your-api-endpoint.com", "apiKey": "your-api-key", # ... } } ``` ## Устранение неполадок ### Backend не запускается 1. Проверьте, что виртуальное окружение активировано 2. Убедитесь, что все зависимости установлены: ```bash pip install flask flask-cors langgraph langchain-core requests ``` 3. Проверьте порт 5000 - он должен быть свободен ### Плагин не появляется в Obsidian 1. Убедитесь, что файлы находятся в правильной папке: ``` .obsidian/plugins/llm-agent-plugin/main.js ``` 2. Проверьте, что включены "Плагины сообщества" в настройках 3. Перезапустите Obsidian ### Ошибки подключения к API 1. Убедитесь, что backend запущен на порту 5000 2. Проверьте консоль разработчика в Obsidian (Ctrl+Shift+I) 3. Проверьте настройки CORS в `backend/llm-agent-backend/app/api.py` ### Граф не отображается 1. Текущая версия использует упрощенную визуализацию 2. Для полноценного React Flow потребуется дополнительная настройка bundler'а ## Разработка ### Структура кода плагина - `main.js` - Основной класс плагина - `src/views/` - Views для Obsidian (GraphView, ChatView) - `src/components/` - React-like компоненты - `src/utils/` - Утилиты (EventBus) ### Отладка 1. Откройте консоль разработчика в Obsidian (Ctrl+Shift+I) 2. Логи плагина доступны в консоли 3. Backend логи выводятся в терминал где запущен сервер ### Добавление новых команд 1. Добавьте команду в `backend/llm-agent-backend/app/nodes.py` в `CommandManager` 2. Создайте соответствующий узел обработки 3. Обновите маршрутизацию в `workflows.py` ## API Documentation ### Основные эндпоинты - `POST /api/chat` - Отправка сообщения - `GET /api/graphs` - Список всех графов - `GET /api/graphs/{id}` - Данные конкретного графа - `DELETE /api/graphs/{id}` - Удаление графа - `GET /api/messages/{graph_id}/{node_id}` - Сообщения от корня до узла ## Лицензия Для личного использования. ``` **`backend/llm-agent-backend/requirements.txt`:** ```txt flask==2.3.3 flask-cors==4.0.0 langgraph==0.0.40 langchain-core==0.1.45 requests==2.31.0 sqlite3 openai==1.3.0 ``` **`backend/llm-agent-backend/run.py`:** ```python """ Точка входа для запуска LLM Agent backend сервера. Запускает Flask приложение с настройками для разработки. """ import os import sys # Добавляем папку app в Python path sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'app')) from api import app2 if __name__ == "__main__": print("🚀 Запуск LLM Agent Backend сервера...") print("📍 API будет доступно на: http://localhost:5000/api") print("📊 Список графов: http://localhost:5000/api/graphs") print("💬 Чат эндпоинт: http://localhost:5000/api/chat") print("\n⚠️ Для остановки нажмите Ctrl+C\n") app2.run( debug=True, port=5000, host='localhost' ) ``` **`backend/llm-agent-backend/app/__init__.py`:** ```python # Пустой файл для создания Python пакета ``` ## Быстрый старт: 1. **Запуск backend:** ```bash cd backend/llm-agent-backend env\Scripts\activate # Windows python run.py ``` 2. **Запуск Obsidian:** - Откройте хранилище в Obsidian - Включите плагин "LLM Agent" в настройках - Нажмите иконку 🧠 в левой панели 3. **Проверка работы:** - В правой панели должна появиться история диалогов - В центре - область для графа - Отправьте сообщение `/help` для проверки **Важно:** Backend должен быть запущен перед использованием плагина. При первом запуске может потребоваться установка дополнительных зависимостей.