Go to file
2025-11-10 03:29:46 +03:00
old/src Bug fixes to render react-flow using esbuild bundler instead of loading from cdn 2025-09-14 19:03:33 +03:00
src Add сaching of files, content of files no longer stored in db, add $ and !$ shoftcuts 2025-11-10 03:29:46 +03:00
.editorconfig Move to ts from js because of problems with import, and make this based on sample plugin 2025-09-12 04:48:23 +03:00
.eslintignore Move to ts from js because of problems with import, and make this based on sample plugin 2025-09-12 04:48:23 +03:00
.eslintrc Move to ts from js because of problems with import, and make this based on sample plugin 2025-09-12 04:48:23 +03:00
.gitignore change view of input+button 2025-09-17 02:22:13 +03:00
.npmrc Move to ts from js because of problems with import, and make this based on sample plugin 2025-09-12 04:48:23 +03:00
.prettierrc Move to ts from js because of problems with import, and make this based on sample plugin 2025-09-12 04:48:23 +03:00
AGENTS.md Move to ts from js because of problems with import, and make this based on sample plugin 2025-09-12 04:48:23 +03:00
esbuild.config.mjs Bug fixes to render react-flow using esbuild bundler instead of loading from cdn 2025-09-14 19:03:33 +03:00
LICENSE Move to ts from js because of problems with import, and make this based on sample plugin 2025-09-12 04:48:23 +03:00
main.js Add сaching of files, content of files no longer stored in db, add $ and !$ shoftcuts 2025-11-10 03:29:46 +03:00
main.ts Add сaching of files, content of files no longer stored in db, add $ and !$ shoftcuts 2025-11-10 03:29:46 +03:00
mainBasic.ts Move to ts from js because of problems with import, and make this based on sample plugin 2025-09-12 04:48:23 +03:00
manifest.json Move to ts from js because of problems with import, and make this based on sample plugin 2025-09-12 04:48:23 +03:00
package-lock.json Add graph options with custom system prompt, make more correct handling for New Chat button 2025-10-19 16:05:05 +03:00
package.json Add graph options with custom system prompt, make more correct handling for New Chat button 2025-10-19 16:05:05 +03:00
README-Basic.md Move to ts from js because of problems with import, and make this based on sample plugin 2025-09-12 04:48:23 +03:00
Readme.md Initial commit for llm-agent-plugin 2025-09-12 00:39:44 +03:00
styles.css Add сaching of files, content of files no longer stored in db, add $ and !$ shoftcuts 2025-11-10 03:29:46 +03:00
tsconfig.json Bug fixes to render react-flow using esbuild bundler instead of loading from cdn 2025-09-14 19:03:33 +03:00
version-bump.mjs Move to ts from js because of problems with import, and make this based on sample plugin 2025-09-12 04:48:23 +03:00
versions.json Move to ts from js because of problems with import, and make this based on sample plugin 2025-09-12 04:48:23 +03:00

Запрос

Хочу перенести всё это в 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:

    cd llm-agent-backend
    
  2. Активируйте виртуальное окружение:

    # Windows
    env\Scripts\activate
    
    # Linux/macOS
    source env/bin/activate
    
  3. Установите зависимости:

    pip install -r requirements.txt
    
  4. Запустите backend сервер:

    python run.py
    

    Backend будет доступен на http://localhost:5000

2. Установка плагина в Obsidian

  1. Автоматическая установка (если плагин уже находится в правильной папке):

    • Откройте Obsidian с этим хранилищем
    • Перейдите в Настройки → Плагины сообщества
    • Включите "Небезопасные плагины" (если требуется)
    • Найдите "LLM Agent" в списке установленных плагинов
    • Включите плагин
  2. Ручная установка (если нужно скопировать файлы):

    # Убедитесь, что файлы плагина находятся в:
    .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. Найдите строку:
    const DEFAULT_SETTINGS = {
        apiBaseUrl: 'http://localhost:5000/api'
    };
    
  3. Измените URL на нужный

LLM модели

Конфигурация моделей находится в backend/llm-agent-backend/app/llm_client.py:

MODELS = {
    "gemini-2.5-flash": {
        "apiBase": "https://your-api-endpoint.com",
        "apiKey": "your-api-key",
        # ...
    }
}

Устранение неполадок

Backend не запускается

  1. Проверьте, что виртуальное окружение активировано
  2. Убедитесь, что все зависимости установлены:
    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:

"""
Точка входа для запуска 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 пакета

Быстрый старт:

  1. Запуск backend:

    cd backend/llm-agent-backend
    env\Scripts\activate  # Windows
    python run.py
    
  2. Запуск Obsidian:

    • Откройте хранилище в Obsidian
    • Включите плагин "LLM Agent" в настройках
    • Нажмите иконку 🧠 в левой панели
  3. Проверка работы:

    • В правой панели должна появиться история диалогов
    • В центре - область для графа
    • Отправьте сообщение /help для проверки

Важно: Backend должен быть запущен перед использованием плагина. При первом запуске может потребоваться установка дополнительных зависимостей.