69 KiB
DeepTutor: Персонализированное Обучение на Базе Агентов
Возможности · Начать · Исследовать · CLI · Экосистема · Сообщество
🤝 Мы приветствуем любые вклады в проект! Голосуйте за элементы дорожной карты или предлагайте новые на странице
Roadmap, а также изучите наше Руководство по участию с описанием стратегии ветвления, стандартов кодирования и инструкций по началу работы.
📰 Новости
- 2026-05-22 🌐 Официальный сайт документации запущен на deeptutor.info — руководства, справочники и туры по возможностям в одном месте.
- 2026-04-19 🎉 20 тысяч звёзд за 111 дней! Благодарим за поддержку на пути к по-настоящему персонализированному интеллектуальному обучению.
- 2026-04-10 📄 Наша статья опубликована на arXiv — прочитайте препринт о дизайне и идеях, лежащих в основе DeepTutor.
- 2026-02-06 🚀 10 тысяч звёзд всего за 39 дней! Огромная благодарность нашему удивительному сообществу.
- 2026-01-01 🎊 С Новым Годом! Присоединяйтесь к нашему Discord, WeChat или Обсуждениям — давайте вместе формировать DeepTutor.
- 2025-12-29 🎓 DeepTutor официально выпущен!
✨ Ключевые возможности
DeepTutor — это агентная учебная рабочая среда, объединяющая репетиторство, решение задач, генерацию викторин, исследования, визуализацию и практику освоения в одной расширяемой системе.
- Единая среда выполнения для всех режимов — Chat, Quiz, Research, Visualize, Solve и Mastery Path работают на одном цикле агента, поэтому вы переключаете цель, а не движок, и контекст перемещается вместе с учащимся.
- Связанный контекст обучения — базы знаний, книги, черновики Co-Writer, блокноты, банки вопросов, персоны и Memory доступны во всех рабочих процессах, а не живут в изолированных инструментах.
- Субагенты и Partners — консультируйте живой Claude Code, Codex или Partner из любого хода (или импортируйте их прошлые разговоры) и запускайте постоянных IM-компаньонов на том же мозге.
- Многодвигательные знания — версионированные RAG-библиотеки на основе LlamaIndex, PageIndex, GraphRAG, LightRAG или связанного хранилища Obsidian с подключаемым разбором документов.
- Расширяемые инструменты и навыки — встроенные инструменты, MCP-серверы, модели генерации изображений / видео / голоса и устанавливаемые навыки сообщества из EduHub.
- Проверяемая память — трассировки L1, сводки поверхностей L2 и синтез L3 делают персонализацию видимой и редактируемой, а Memory Graph прослеживает каждое утверждение до его источника.
🚀 Начало работы
DeepTutor поставляется с четырьмя путями установки. Все они используют одну структуру рабочего пространства: настройки хранятся в data/user/settings/ в директории запуска (или в DEEPTUTOR_HOME / deeptutor start --home, если задано явно). Для полного приложения рекомендуемый процесс: выбрать директорию рабочего пространства → установить → deeptutor init → deeptutor start.
Вариант 1 — Установка из PyPI · полное локальное веб-приложение + CLI, клонирование не требуется
Полное локальное веб-приложение + CLI без необходимости клонирования. Требуется Python 3.11+ и среда выполнения Node.js 20+ в PATH (упакованный автономный сервер Next.js запускается командой deeptutor start).
mkdir -p my-deeptutor && cd my-deeptutor
pip install -U deeptutor
deeptutor init # запрашивает порты + провайдер LLM + необязательное встраивание
deeptutor start # запускает бэкенд + фронтенд; держите терминал открытым
deeptutor init запрашивает порт бэкенда (по умолчанию 8001), порт фронтенда (по умолчанию 3782), провайдер LLM / базовый URL / API-ключ / модель и необязательный провайдер встраивания для базы знаний / RAG.
После deeptutor start откройте URL фронтенда, напечатанный в терминале — по умолчанию http://127.0.0.1:3782. Нажмите Ctrl+C в этом терминале, чтобы остановить бэкенд и фронтенд. Пропустить deeptutor init можно для быстрого пробного запуска; приложение загружается с портами по умолчанию и пустыми настройками модели, которые можно настроить позже в Настройки → Модели.
Вариант 2 — Установка из исходного кода · разработка на основе чекаута
Для разработки на основе чекаута. Используйте Python 3.11+ и Node.js 22 LTS для соответствия CI и Docker.
git clone https://github.com/HKUDS/DeepTutor.git
cd DeepTutor
# Создание venv (macOS/Linux). Windows PowerShell:
# py -3.11 -m venv .venv ; .\.venv\Scripts\Activate.ps1
python3 -m venv .venv && source .venv/bin/activate
python -m pip install --upgrade pip
# Установка зависимостей бэкенда + фронтенда
python -m pip install -e .
( cd web && npm ci --legacy-peer-deps )
deeptutor init
deeptutor start
Установки из исходного кода запускают Next.js в режиме разработки для локальной директории web/; всё остальное (структура конфигурации, порты, остановка с Ctrl+C) соответствует Варианту 1.
Среда Conda (вместо venv)
conda create -n deeptutor python=3.11
conda activate deeptutor
python -m pip install --upgrade pip
Необязательные дополнения при установке — dev / partners / matrix / math-animator
pip install -e ".[dev]" # инструменты тестирования/линтинга
pip install -e ".[partners]" # SDK каналов IM для Партнёров + MCP-клиент
pip install -e ".[matrix]" # канал Matrix без E2EE/libolm
pip install -e ".[matrix-e2e]" # Matrix E2EE; требует libolm
pip install -e ".[math-animator]" # дополнение Manim; требует LaTeX/ffmpeg/системных библиотек
Настройка зависимостей фронтенда и устранение неполадок сервера разработки
Изменение зависимостей фронтенда: запустите npm install --legacy-peer-deps для обновления web/package-lock.json, затем зафиксируйте оба файла web/package.json и web/package-lock.json.
Зависший сервер разработки: если deeptutor start сообщает о существующем фронтенде, который не отвечает, остановите PID, который он печатает. Если процесс Next.js фактически не запущен, файлы блокировки устарели — удалите их и повторите попытку:
rm -f web/.next/dev/lock web/.next/lock
deeptutor start
Вариант 3 — Docker · один автономный контейнер
Один контейнер для полного веб-приложения. Образы в GitHub Container Registry:
ghcr.io/hkuds/deeptutor:latest— стабильный выпускghcr.io/hkuds/deeptutor:pre— предварительный выпуск, когда доступен
Смотрите CONTAINERIZATION.md для развёртываний на podman/rootless/read-only-rootfs и полного руководства по установке.
docker run --rm --name deeptutor \
-p 127.0.0.1:3782:3782 \
-v deeptutor-data:/app/data \
ghcr.io/hkuds/deeptutor:latest
Публиковать нужно только порт
3782. Браузер обращается исключительно к источнику фронтенда; промежуточный слой Next.js (web/proxy.ts) перенаправляет/api/*и/ws/*на бэкенд FastAPI внутри контейнера. Публикация8001(-p 127.0.0.1:8001:8001) необязательна — полезна только при прямом обращении к API через curl или скрипты.
Откройте http://127.0.0.1:3782. Контейнер создаёт /app/data/user/settings/*.json при первом запуске; настройте провайдеров моделей на странице веб-настроек. Конфигурация, API-ключи, логи, файлы рабочего пространства, память и базы знаний сохраняются в томе deeptutor-data.
- Другие порты хоста: измените левую часть каждого маппинга
-p host:container(например,-p 127.0.0.1:8088:3782). Если вы измените порты на стороне контейнера в/app/data/user/settings/system.json, перезапустите и обновите правую часть каждого маппинга. - Фоновый режим: добавьте
-d, затемdocker logs -f deeptutorдля слежения,docker stop deeptutorдля остановки,docker rm deeptutorперед повторным использованием имени. Томdeeptutor-dataсохраняет ваши настройки и рабочее пространство между перезапусками.
Удалённый Docker / обратный прокси: браузер обращается только к источнику фронтенда (:3782); промежуточный слой Next.js внутри контейнера перенаправляет /api/* и /ws/* на бэкенд на стороне сервера. В типичном случае с одним контейнером вы вообще не настраиваете базовый URL API — просто направьте ваш обратный прокси / TLS-терминатор на :3782. Базовый URL API нужен только для разделённого развёртывания (бэкенд в отдельном контейнере/хосте): установите next_public_api_base в data/user/settings/system.json на внутрисетевой адрес, который фронтенд-сервер использует для достижения бэкенда (он читается на стороне сервера, никогда не отправляется браузеру).
{
"next_public_api_base": "http://backend:8001"
}
next_public_api_base_external (и его псевдоним public_api_base) принимаются как запасные варианты с более низким приоритетом. CORS использует источники фронтенда, а не URL API. При отключённой аутентификации DeepTutor разрешает обычные HTTP/HTTPS источники браузера по умолчанию. При включённой аутентификации добавьте точные источники фронтенда:
{
"cors_origins": ["https://deeptutor.example.com"]
}
Подключение к Ollama / LM Studio / llama.cpp / vLLM / Lemonade на хосте
Внутри Docker localhost — это сам контейнер, а не хост-машина. Чтобы обратиться к модельному сервису, запущенному на хосте, используйте шлюз хоста (рекомендуется):
docker run --rm --name deeptutor \
-p 127.0.0.1:3782:3782 -p 127.0.0.1:8001:8001 \
--add-host=host.docker.internal:host-gateway \
-v deeptutor-data:/app/data \
ghcr.io/hkuds/deeptutor:latest
Затем в Настройки → Модели укажите базовый URL провайдера как host.docker.internal:
- Ollama LLM:
http://host.docker.internal:11434/v1 - Ollama embedding:
http://host.docker.internal:11434/api/embed - LM Studio:
http://host.docker.internal:1234/v1 - llama.cpp:
http://host.docker.internal:8080/v1 - Lemonade:
http://host.docker.internal:13305/api/v1
Docker Desktop (macOS/Windows) обычно разрешает host.docker.internal без --add-host. На Linux этот флаг — переносимый способ создания этого имени хоста в современном Docker Engine.
Альтернатива для Linux — сетевой режим хоста: добавьте --network=host и уберите флаги -p. Контейнер напрямую использует сеть хоста, поэтому откройте http://127.0.0.1:3782 (или frontend_port в system.json), а сервисы хоста доступны через обычные localhost-URL, например http://127.0.0.1:11434/v1. Обратите внимание, что хостовый сетевой режим открывает порты контейнера напрямую на хосте и может конфликтовать с существующими сервисами — чтобы оставить их на loopback, установите BACKEND_HOST=127.0.0.1 и FRONTEND_HOST=127.0.0.1 (см. CONTAINERIZATION.md).
Вариант 4 — Только CLI · без веб-интерфейса, из чекаута исходного кода
Когда веб-интерфейс не нужен. Пакет только для CLI устанавливается из чекаута исходного кода, а не из PyPI.
git clone https://github.com/HKUDS/DeepTutor.git
cd DeepTutor
# Создание venv (macOS/Linux). Windows PowerShell:
# py -3.11 -m venv .venv-cli ; .\.venv-cli\Scripts\Activate.ps1
python3 -m venv .venv-cli && source .venv-cli/bin/activate
python -m pip install --upgrade pip
python -m pip install -e ./packaging/deeptutor-cli
deeptutor init --cli
deeptutor chat
deeptutor init --cli использует ту же структуру data/user/settings/, что и полное приложение, но пропускает запросы портов бэкенда/фронтенда и по умолчанию отключает встраивание (выберите Yes, если планируете использовать deeptutor kb … или инструменты RAG). Он всё равно записывает полную структуру среды выполнения (system.json, auth.json, integrations.json, model_catalog.json, main.yaml, agents.yaml) и запрашивает активный провайдер и модель LLM.
Основные команды
deeptutor chat # интерактивный REPL
deeptutor chat --capability deep_solve --tool rag --kb my-kb
deeptutor run chat "Explain Fourier transform"
deeptutor run deep_solve "Solve x^2 = 4" --tool rag --kb my-kb
deeptutor kb create my-kb --doc textbook.pdf
deeptutor memory show
deeptutor config show
Локальная установка deeptutor-cli не включает веб-ресурсы или серверные зависимости. Сохраните чекаут исходного кода — редактируемая установка указывает на него. Чтобы позже добавить веб-приложение, установите пакет PyPI (Вариант 1) и запустите deeptutor init + deeptutor start из того же рабочего пространства.
Песочница выполнения кода (офисные навыки) · запуск сгенерированного моделью кода для docx / pdf / pptx / xlsx
Встроенные офисные навыки — docx / pdf / pptx / xlsx — работают, заставляя модель написать короткий Python-скрипт (python-docx, reportlab, openpyxl, …), запустить его через инструменты exec / code_execution и вернуть URL для скачивания. Эти инструменты монтируются при наличии активного бэкенда песочницы, который активен по умолчанию в каждом варианте развёртывания:
- Локально (Вариант 1 / 2) и Docker (Вариант 3, один контейнер): ограниченная подпроцессная песочница запускает код модели (локально на хосте или внутри контейнера под Docker — контейнер сам является изолирующей границей).
- docker-compose: вместо этого направляется в защищённый сайдкар с минимальными привилегиями (runner sidecar
Dockerfile.runner) черезDEEPTUTOR_SANDBOX_RUNNER_URL— наиболее строгий вариант, используемый автоматически при наличии.
Подпроцессная песочница управляется настройкой sandbox_allow_subprocess в data/user/settings/system.json (по умолчанию true). Запуск сгенерированного моделью кода на вашем хосте — это реальное доверительное решение; установите значение false (или экспортируйте DEEPTUTOR_SANDBOX_ALLOW_SUBPROCESS=0) для отключения выполнения на стороне хоста, ценой того, что офисные навыки больше не смогут создавать файлы.
Справочник конфигурации — файлы конфигурации в data/user/settings/ (JSON/YAML)
Всё в data/user/settings/ — это обычный JSON/YAML. Страница Настройки в браузере является рекомендуемым редактором.
| Файл | Назначение |
|---|---|
model_catalog.json |
Профили провайдеров LLM, встраивания и поиска; API-ключи; активные модели |
system.json |
Порты бэкенда/фронтенда, публичный базовый URL API, CORS, верификация SSL, директория вложений |
auth.json |
Необязательное переключение аутентификации, имя пользователя, хэш пароля, настройки токенов/куки |
integrations.json |
Необязательные настройки интеграции PocketBase и сайдкара |
interface.json |
Язык интерфейса / тема / настройки боковой панели |
main.yaml |
Значения по умолчанию для среды выполнения и внедрение пути |
agents.yaml |
Настройки температуры и токенов для возможностей/инструментов |
Корневой файл .env проекта не читается как файл конфигурации приложения. Для минимальной настройки модели откройте Настройки → Модели, добавьте профиль LLM (базовый URL / API-ключ / имя модели) и сохраните. Добавляйте профиль встраивания только если планируете использовать функции базы знаний / RAG.
📖 Обзор DeepTutor
Начните с основных поверхностей, которые вы будете использовать ежедневно: Chat, Partners, My Agents, Co-Writer, Book, Knowledge Center, Learning Space, Memory и Settings. Затем тур охватывает многопользовательские развёртывания для общих изолированных рабочих пространств.
💬 Чат — Цикл Агента, Который Вы Используете на Практике
Чат — это возможность по умолчанию и место, где начинается большинство работ. Один поток может нормально общаться, вызывать инструменты, опираться на выбранные базы знаний, читать вложения, генерировать изображения, обращаться к субагентам, записывать в блокнот и продолжать с тем же контекстом в последующих ходах.
Цикл намеренно прост: модель думает раундами, вызывает инструменты при необходимости, наблюдает результаты и завершает сообщением без инструментов. ask_user особенный — вместо угадывания агент может приостановить ход, задать структурированный уточняющий вопрос и возобновить работу, когда вы ответите.
Переключаемые пользователем инструменты: brainstorm, web_search, paper_search, reason и geogebra_analysis — плюс imagegen и videogen после настройки соответствующей генеративной модели. Контекстные инструменты, такие как rag, read_source, read_memory, write_memory, read_skill, load_tools, exec, web_fetch, ask_user, list_notebook, write_note, github и consult_subagent, монтируются автоматически, когда ход имеет подходящий контекст.
Контекст бывает двух видов: постоянный контекст сессии (субагент, базы знаний, персонаж, модель, голос) находится на панели инструментов редактора и сохраняется между ходами; одноразовые ссылки (файлы, история чата, книги, блокноты, банк вопросов, импортированные агенты) берутся из меню + для одного хода.
Чат также является точкой запуска более глубоких возможностей: Quiz для генерации вопросов, Research для цитируемых отчётов, Visualize для графиков / диаграмм / анимаций, и — в разделе Дополнительные возможности — Solve для обоснованных рассуждений и Mastery Path для учебных планов.
🤝 Partner — Постоянные Компаньоны на Том Же Мозге
Партнёры — это постоянные компаньоны со своей душой, политикой модели, библиотекой, памятью и каналами. Они не являются отдельным движком бота: каждое входящее веб- или IM-сообщение становится обычным ходом ChatOrchestrator внутри рабочего пространства, ограниченного партнёром. Партнёр — это «чат с личностью и номером телефона».
Каждый партнёр имеет SOUL.md, выбор модели, каналы, политику инструментов и назначенную библиотеку. Базы знаний, навыки и блокноты копируются в data/partners/<id>/workspace/, поэтому те же инструменты RAG, навыков, блокнотов и памяти работают без специальных случаев. Партнёр читает память своего владельца, но пишет только в собственную.
Слой каналов управляется схемой и может подключаться к IM-платформам, таким как Feishu, Telegram, Slack, Discord, DingTalk, QQ/NapCat, WeCom, WhatsApp, Zulip, Mattermost, Matrix, Mochat и Microsoft Teams, в зависимости от установленных дополнений и настроенных учётных данных. Партнёр также может быть подключён как субагент и использован из обычного хода чата — см. Мои Агенты ниже.
🧑🚀 Мои Агенты — Консультация и Импорт Других Агентов
Мои Агенты превращают других агентов в контекст для DeepTutor и делают две разные вещи. Подключите живого агента — Claude Code или Codex CLI на вашей машине, или одного из ваших Партнёров — и обращайтесь к нему изнутри хода чата: DeepTutor фактически запускает другого агента и транслирует его работу в панель Activity через инструмент consult_subagent. Выберите его чипом агента (или введите @) и задайте, сколько раундов может занять обращение.
Импортируйте прошлые разговоры — загрузите существующую историю Claude Code и Codex как именованных, доступных для поиска, возобновляемых агентов. Выберите, за какие дни импортировать; обновление повторно синхронизирует их. Ссылайтесь на импортированный разговор из любого хода чата через + → Мои Агенты, и DeepTutor читает его как транскрипт третьей стороны — это их разговор, а не собственный голос DeepTutor.
✍️ Co-Writer — Редактирование Markdown с Учётом Выделения
Co-Writer — это разделённое рабочее пространство Markdown для отчётов, руководств, заметок и долгосрочных учебных артефактов. Документы автосохраняются и отображают живой предварительный просмотр (математика KaTeX, ограждения диаграмм), и могут быть сохранены обратно в блокноты, когда черновик становится повторно используемым контекстом.
Его определяющая идея — хирургическое редактирование: выберите фрагмент и попросите DeepTutor переписать, расширить или сократить его. Агент редактирования может опираться на базу знаний или веб-данные, ведёт след вызовов инструментов и показывает каждое изменение как diff с принятием/отклонением — так ничто не применяется до вашего одобрения.
📖 Книга — Живые Книги из Ваших Материалов
Книга превращает выбранные источники в интерактивную живую книгу — не статический PDF, а среда чтения, построенная из типизированных блоков. Книга может начинаться с баз знаний, блокнотов, банков вопросов или истории чата; процесс создания предлагает план глав перед генерацией содержания, поэтому вы рассматриваете структуру вместо того, чтобы принимать слепой одноразовый вывод.
Каждая глава компилируется в типизированные блоки — текст, выноски, викторины, флэш-карточки, временные шкалы, код, рисунки, интерактивный HTML, анимации, концептуальные графы, углублённые рассуждения и пользовательские заметки — и каждая страница имеет свой собственный чат. Блоки редактируемы: вставляйте, перемещайте, регенерируйте или меняйте тип блока без переписывания главы. Команды обслуживания deeptutor book health и deeptutor book refresh-fingerprints помогают обнаружить, когда исходные знания расходятся со скомпилированными страницами.
📚 Центр Знаний — Многодвигательные RAG-Библиотеки
Базы знаний — это коллекции документов для RAG, которые обосновывают ходы Chat, редакции Co-Writer, генерацию Book и разговоры с Партнёрами. Отличительной чертой является выбор движков поиска: LlamaIndex (по умолчанию, локальный вектор + BM25), PageIndex (размещённый, поиск с рассуждением с цитатами на уровне страницы), GraphRAG и LightRAG (поиск на основе графа знаний), LightRAG Server (поиск, делегированный внешнему экземпляру LightRAG, подключаемому по HTTP), или связанное хранилище Obsidian, которое репетитор читает и записывает на месте. Каждая KB привязана к одному движку.
При создании KB вы либо создаёте новую (загружаете документы и строите свежий индекс), либо связываете существующую (повторно используете индекс, построенный в другом месте, читаете на месте без переиндексирования). Переиндексирование записывает новую плоскую директорию version-N и сохраняет предыдущие, поэтому рабочий индекс никогда не уничтожается в процессе перестройки. Отдельный документ можно удалить даже из базы в состоянии error — убрав файл, который не удалось разобрать, без полного удаления и пересборки. Разбор документов — только текст, MinerU, Docling, markitdown или PyMuPDF4LLM — выбирается в Настройки → База знаний, с отключёнными по умолчанию загрузками локальных моделей. CLI отражает жизненный цикл командами deeptutor kb list, info, create, add, search, set-default и delete.
🌐 Пространство Обучения — Навыки, Персоны и Многоразовый Контекст
Пространство Обучения — это библиотека и уровень персонализации — место, где живут постоянные вещи. Разговоры и материалы содержат историю чата, блокноты и банк вопросов (каждый сохранённый вопрос хранит ваш ответ, эталонный ответ и объяснение). Персонализация содержит пути мастерства, персонажей (поведенческие пресеты, такие как коллега, исследовательский ассистент, учитель) и навыки (сценарии SKILL.md, которые модель читает по требованию). Всё здесь можно повторно использовать из Chat, Partners, Co-Writer и Book.
Вам не нужно писать каждый навык самостоятельно — Импорт из EduHub просматривает каталог сообщества и загружает навык прямо в вашу библиотеку через шлюз безопасности (см. Экосистема).
🧠 Память — Проверяемая Персонализация
Память — это трёхуровневая система на основе файлов, которую можно читать, курировать и проверять — намеренно не скрытое векторное хранилище. L1 — зеркало рабочего пространства плюс трассировка событий только для добавления (trace/<surface>/<date>.jsonl); L2 — курированные факты на уровне поверхности (L2/<surface>.md); L3 — межповерхностный синтез (L3/<profile|recent|scope|preferences>.md). Поскольку L2 цитирует L1, а L3 цитирует L2, ничто в вашем профиле не является неотчётным.
Граф памяти показывает всю пирамиду — синтез L3 в центре, L2 в среднем кольце, трассировки L1 снаружи — так что вы можете проследить любое синтезированное утверждение обратно до точного исходного события. Память отслеживается по поверхностям chat, notebook, quiz, kb, book, partner и cowriter; бюджеты обновления / аудита / дедупликации консолидатора настраиваются в Настройки → Память.
⚙️ Настройки — Единая Панель Управления
Настройки — это операционная панель управления с живой строкой статуса (Бэкенд, LLM, Встраивание, Поиск) и одной карточкой для каждой области: Внешний вид (тема + язык интерфейса), Сеть (базовый URL API, порты, CORS), Модели (LLM, Встраивание, Поиск, Синтез речи, Распознавание речи, Генерация изображений, Генерация видео), База знаний (движок разбора документов), Чат (инструменты, MCP-серверы, параметры по возможностям), Партнёры и агенты (субагенты, к которым можно обратиться из хода) и Память (бюджеты консолидатора).
Большинство разделов используют поток черновика и применения, поэтому вы можете протестировать провайдера перед подтверждением. В комплект входят четыре темы — Default, Cream, Dark и Glass. Корневые файлы .env проекта намеренно игнорируются; конфигурация среды выполнения хранится в data/user/settings/*.json, если только DEEPTUTOR_HOME или deeptutor start --home не указывает приложению другое место.
👥 Многопользовательский режим — Общие Развёртывания · необязательная аутентификация, изолированные рабочие пространства
Аутентификация отключена по умолчанию — DeepTutor работает в однопользовательском режиме. Включите её, и одно дерево data/ содержит рабочее пространство администратора, изолированные пользовательские рабочие пространства и партнёрские рабочие пространства рядом:
data/
├── user/ # Рабочее пространство администратора + глобальные настройки
├── users/<uid>/ # Пользовательская область: история чата, память, блокноты, KB
├── partners/<id>/workspace/ # Область партнёра (синтетического пользователя)
└── system/ # auth/users.json · grants/<uid>.json · audit/usage.jsonl
Первый зарегистрированный пользователь становится администратором и владеет каталогами моделей, учётными данными провайдеров, общими базами знаний, навыками и грантами для пользователей. Все остальные получают изолированное рабочее пространство и отредактированную страницу Настроек — назначенные администратором модели, KB и навыки отображаются как ограниченные опции только для чтения, а не как сырые API-ключи.
Включение: включите аутентификацию в data/user/settings/auth.json, перезапустите deeptutor start, зарегистрируйте первого администратора по адресу /register, затем добавляйте пользователей из /admin/users и назначайте модели, KB, навыки, Partners, политику инструментов/MCP и доступ к выполнению кода через гранты.
PocketBase остаётся однопользовательской интеграцией — оставьте
integrations.pocketbase_urlпустым для многопользовательских развёртываний, если только вы не подключили внешнее хранилище пользователей.
⌨️ DeepTutor CLI — Интерфейс для Агентов
Один бинарный файл deeptutor, два способа входа: интерактивный REPL для тех, кто живёт в терминале, и структурированный JSON для других агентов, которые управляют DeepTutor как инструментом. Одни и те же возможности, инструменты и базы знаний в любом случае.
Управляйте им самостоятельно
deeptutor chat открывает интерактивный REPL; deeptutor run <capability> "<message>" выполняет один ход и завершается. Оба используют одинаковые флаги --capability, --tool, --kb и --config.
deeptutor chat # интерактивный REPL
deeptutor chat --capability deep_solve --kb my-kb --tool rag
deeptutor run chat "Explain the Fourier transform" --tool rag --kb textbook
deeptutor run deep_research "Survey 2026 papers on RAG" \
--config mode=report --config depth=standard
Всё, что делает веб-приложение, доступно и здесь — базы знаний (kb), сессии (session), партнёры (partner), навыки (skill), блокноты, память и конфигурация. Полный список ниже.
Позвольте агенту управлять им
DeepTutor создан для того, чтобы им управлял другой агент. Добавьте --format json к любой команде run, и каждый ход транслирует NDJSON — одно событие на строку (content, tool_call, tool_result, done, …), каждая строка помечена своим session_id. Запуски безопасны без TTY: пауза ask_user без TTY автоматически разрешается пустым ответом вместо зависания.
# Один запрос, машиночитаемый
deeptutor run deep_solve "Find d/dx[sin(x^2)]" --tool reason --format json
# Цепочка ходов в одной сессии с состоянием — захватите id, повторно используйте его
SID=$(deeptutor run deep_research "Survey 2026 papers on RAG" \
--config mode=report --config depth=standard --format json \
| jq -r 'select(.type=="done").session_id')
deeptutor run deep_question "Quiz me on that survey" --session "$SID" --format json
В репозитории есть корневой SKILL.md — документ передачи на ~150 строк, который знакомит любой использующий инструменты LLM со всей поверхностью за одно чтение. Передайте его Claude Code, Codex или OpenCode (они автоматически подхватывают SKILL.md), или оберните deeptutor run как инструмент в цикл LangChain / AutoGen. Полные рецепты: Agent Handoff.
Справочник команд
| Команда | Описание |
|---|---|
deeptutor init |
Создать или обновить data/user/settings для текущего рабочего пространства |
deeptutor start [--home PATH] |
Запустить бэкенд + фронтенд вместе |
deeptutor serve [--port PORT] |
Запустить только бэкенд FastAPI |
deeptutor run <capability> <message> |
Запустить один ход возможности (chat, deep_solve, deep_question, deep_research, visualize, math_animator, mastery_path); добавьте --format json для вывода NDJSON |
deeptutor chat |
Интерактивный REPL с управлением возможностями, инструментами, KB, блокнотами и историей |
deeptutor partner list/create/start/stop |
Управление партнёрами, подключёнными к IM |
deeptutor kb list/info/create/add/search/set-default/delete |
Управление базами знаний LlamaIndex |
deeptutor skill search/install/list/remove/login/logout/publish/update |
Управление навыками, установка из хабов и публикация своих (eduhub:<slug> по умолчанию, см. Экосистема) |
deeptutor memory show/clear |
Просмотр документов памяти L2/L3 или очистка памяти L1/всей памяти |
deeptutor session list/show/open/rename/delete |
Управление общими сессиями |
deeptutor notebook list/create/show/add-md/replace-md/remove-record |
Управление блокнотами из файлов Markdown |
deeptutor book list/health/refresh-fingerprints |
Просмотр книг и обновление исходных отпечатков |
deeptutor plugin list/info |
Просмотр зарегистрированных инструментов и возможностей |
deeptutor config show |
Вывод сводки конфигурации |
deeptutor provider login <provider> |
Аутентификация провайдера (openai-codex вход через OAuth; github-copilot проверяет существующую сессию аутентификации Copilot) |
Дистрибутив только с CLI
Пакет только с CLI находится в packaging/deeptutor-cli. В этом чекауте установите его из исходного кода:
python -m pip install -e ./packaging/deeptutor-cli
Он ещё не опубликован в PyPI, поэтому основной раздел Начало работы сохраняет путь установки из исходного кода.
🧩 Экосистема — EduHub и Сообщество Навыков
Навыки DeepTutor используют открытый формат Agent-Skills — папку с плейбуком SKILL.md (YAML frontmatter + Markdown) и необязательными справочными файлами. В нём нет ничего специфичного для DeepTutor, поэтому любой реестр, говорящий на этом формате, становится источником для вашей библиотеки. DeepTutor поставляется с EduHub — нашим собственным образовательным реестром навыков — встроенным в качестве хаба по умолчанию.
EduHub — экосистема навыков DeepTutor
EduHub — это хаб сообщества, запущенный DeepTutor для обмена обучающими навыками агентов — сократовские репетиторы, создатели флэш-карточек, обратная связь по эссе, планы экзаменов, объяснители концепций и многое другое. Он встроен в DeepTutor, поэтому настраивать ничего не нужно: голый слаг или префикс eduhub: разрешается в него.
Найти и установить — в браузере откройте Пространство Обучения → Навыки → Импорт из EduHub для просмотра каталога и загрузки навыка прямо в вашу библиотеку. Из терминала:
deeptutor skill search "socratic tutor" # поиск в EduHub (хаб по умолчанию)
deeptutor skill install socratic-tutor # получить → проверить → зарегистрировать
deeptutor skill install eduhub:socratic-tutor@1.2.0 # указать хаб и версию
deeptutor skill list # локальные навыки с их хабовой принадлежностью
Опубликуйте свой — упакуйте SKILL.md и поделитесь им обратно с сообществом:
deeptutor skill login # вход через браузер в EduHub
deeptutor skill publish ./my-skill # интерактивно: выберите трек + теги, затем загрузите
deeptutor skill update # откатиться или выпустить новую версию
EduHub также является отдельным, совместимым с ClawHub реестром, поэтому агенты, отличные от DeepTutor (Claude Code, Codex, …), могут использовать его напрямую через CLI eduhub — npx eduhub install socratic-tutor.
Шлюз безопасности импорта
Независимо от источника, каждый импорт проходит через один шлюз безопасности перед тем, как что-либо коснётся вашего рабочего пространства:
- сначала проверяется вердикт безопасности реестра — отмеченные пакеты отклоняются, если вы не передали
--allow-unverified; - архивы извлекаются защищённо (защита от zip-slip / zip-bomb) за белым списком суффиксов для текста/скриптов, поэтому бинарные файлы никогда не попадают в рабочее пространство;
- frontmatter нормализуется по схеме DeepTutor, и
always:удаляется, поэтому загруженный навык никогда не может принудить себя в каждый системный промпт; - происхождение — хаб, версия, вердикт и время установки — записывается в
.hub-lock.jsonдля аудитов и обновлений.
В многопользовательских развёртываниях установка является исключительно привилегией администратора: новый навык попадает в каталог администратора и остаётся невидимым для других пользователей до тех пор, пока грант не назначит его, поэтому администратор может проверить его перед развёртыванием.
Также совместим с ClawHub
Поскольку DeepTutor использует открытый формат Agent-Skills, ClawHub также работает как первоклассный источник — он встроен рядом с EduHub. Выберите его с префиксом хаба:
deeptutor skill search "git release notes" --hub clawhub
deeptutor skill install clawhub:git-release-notes@1.0.1
Добавляйте дополнительные реестры в settings/skill_hubs.json: запись type: "clawhub" указывает на любой совместимый HTTP API (EduHub и ClawHub оба его поддерживают), type: "command" оборачивает любой CLI получения, который поставляет реестр, а "default" выбирает хаб, используемый для голых слагов. Все они передаются через тот же шлюз импорта.
🌐 Сообщество
📮 Контакты
DeepTutor — это проект с открытым исходным кодом, который ведёт Bingxi Zhao в составе группы HKUDS, и он развивается в полностью открытом формате, создаваясь вместе с сообществом. До сих пор у нас НЕТ платных онлайн-продуктов в каком-либо виде. Не стесняйтесь обращаться по адресу bingxizhao39@gmail.com для обсуждений, идей или сотрудничества.
🙏 Благодарности
Сердечная благодарность Chao Huang, директору Лаборатории интеллектуальных данных @ HKU, и нашим коллегам из HKUDS за их тёплую поддержку — особенно Jiahao Zhang, Zirui Guo и Xubin Ren. Мы также глубоко благодарны сообществу открытого исходного кода: ваши звёзды, вопросы, пул-реквесты и обсуждения каждый день формируют DeepTutor.
DeepTutor также стоит на плечах выдающихся проектов с открытым исходным кодом, которые дали нам инструменты и вдохновение:
| Проект | Роль / Вдохновение |
|---|---|
| LlamaIndex | Конвейер RAG и основа индексирования документов |
| nanobot | Ультралёгкий движок агентов, обеспечивавший оригинальный TutorBot (HKUDS) |
| LightRAG | Простой и быстрый RAG (HKUDS) |
| AutoAgent | Фреймворк агентов без кода (HKUDS) |
| AI-Researcher | Автоматизированный исследовательский конвейер (HKUDS) |
| OpenClaw | Открытый шлюз агентов и экосистема навыков за ClawHub |
| Codex | Агентный CLI кодирования, вдохновивший наш рабочий процесс CLI |
| Claude Code | Агентный CLI кодирования, вдохновивший цикл агента DeepTutor |
| ManimCat | Генерация математической анимации на основе ИИ для Math Animator |
🗺️ Дорожная карта и участие
Мы хотим, чтобы DeepTutor продолжал развиваться и совершенствоваться — и в конечном итоге стал подарком, который мы возвращаем сообществу открытого исходного кода. Наша дорожная карта обновляется непрерывно; голосуйте там за пункты или предлагайте новые. Если вы хотите участвовать, см. Руководство по участию с описанием стратегии ветвления, стандартов кодирования и инструкций по началу работы.
Лицензировано по Apache License 2.0.























