🤝 Zapraszamy do wszelkich form współpracy! Głosuj na elementy planu działania lub proponuj nowe w
Roadmap, a szczegóły dotyczące strategii gałęzi, standardów kodowania i sposobu rozpoczęcia pracy znajdziesz w naszym Przewodniku dla współtwórców.
- 2026-05-22 🌐 Oficjalna strona dokumentacji dostępna na deeptutor.info — przewodniki, odniesienia i wycieczki po możliwościach w jednym miejscu.
- 2026-04-19 🎉 20 tys. gwiazdek w 111 dni! Dziękujemy za wsparcie na drodze do prawdziwie spersonalizowanych, inteligentnych korepetycji.
- 2026-04-10 📄 Nasz artykuł jest już dostępny na arXiv — przeczytaj preprint, aby dowiedzieć się więcej o projekcie i pomysłach stojących za DeepTutor.
- 2026-02-06 🚀 10 tys. gwiazdek w zaledwie 39 dni! Ogromne podziękowania dla naszej niesamowitej społeczności.
- 2026-01-01 🎊 Szczęśliwego Nowego Roku! Dołącz do naszego Discorda, WeChat lub Dyskusji — razem kształtujmy przyszłość DeepTutor.
- 2025-12-29 🎓 DeepTutor jest oficjalnie wydany!
DeepTutor to natywne dla agentów środowisko nauki, które łączy korepetycje, rozwiązywanie problemów, generowanie quizów, badania, wizualizacje i ćwiczenia opanowania wiedzy w jednym rozszerzalnym systemie.
- Jedno środowisko dla wszystkich trybów — Chat, Quiz, Research, Visualize, Solve i Mastery Path działają na tej samej pętli agenta, więc zmieniasz cel, a nie silnik, a kontekst podąża za uczącym się.
- Połączony kontekst uczenia się — bazy wiedzy, książki, szkice Co-Writer, notatniki, banki pytań, persony i Memory są dostępne we wszystkich przepływach pracy zamiast żyć w izolowanych narzędziach.
- Subagenty i Partners — konsultuj działającego Claude Code, Codex lub Partner z dowolnej tury (lub importuj ich poprzednie konwersacje) i uruchamiaj stałych towarzyszy IM na tym samym mózgu.
- Wielosilnikowa wiedza — wersjonowane biblioteki RAG z LlamaIndex, PageIndex, GraphRAG, LightRAG lub podłączonym vault Obsidian, z podłączalnym parsowaniem dokumentów.
- Rozszerzalne narzędzia i umiejętności — wbudowane narzędzia, serwery MCP, modele generowania obrazów / wideo / głosu oraz instalowalne umiejętności społecznościowe z EduHub.
- Inspektowalna pamięć — ślady L1, podsumowania powierzchni L2 i synteza L3 sprawiają, że personalizacja jest widoczna i edytowalna, a Memory Graph śledzi każde twierdzenie z powrotem do jego dowodów.
DeepTutor oferuje cztery ścieżki instalacji. Wszystkie współdzielą jeden układ obszaru roboczego: ustawienia żyją w data/user/settings/ pod katalogiem, z którego uruchamiasz (lub pod DEEPTUTOR_HOME / deeptutor start --home jeśli ustawisz je jawnie). Dla pełnej aplikacji zalecany przepływ to wybierz katalog obszaru roboczego → zainstaluj → deeptutor init → deeptutor start.
Opcja 1 — Instalacja z PyPI · pełna lokalna aplikacja Web + CLI, bez potrzeby klonowania
Pełna lokalna aplikacja Web + CLI, bez potrzeby klonowania. Wymaga Python 3.11+ i środowiska uruchomieniowego Node.js 20+ na PATH (spakowany serwer standalone Next.js jest uruchamiany przez deeptutor start).
mkdir -p my-deeptutor && cd my-deeptutor
pip install -U deeptutor
deeptutor init # pyta o porty + dostawcę LLM + opcjonalne osadzanie
deeptutor start # uruchamia backend + frontend; utrzymuj terminal otwartydeeptutor init pyta o port backendu (domyślnie 8001), port frontendu (domyślnie 3782), dostawcę LLM / bazowy URL / klucz API / model i opcjonalnego dostawcę osadzania dla Bazy wiedzy / RAG.
Po deeptutor start otwórz adres URL frontendu wydrukowany w terminalu — domyślnie http://127.0.0.1:3782. Naciśnij Ctrl+C w tym terminalu, aby zatrzymać backend i frontend. Pominięcie deeptutor init jest dobre dla szybkiego testu; aplikacja uruchamia się z domyślnymi portami i pustymi ustawieniami modelu, skonfiguruj je później w Settings → Models.
Opcja 2 — Instalacja ze źródeł · programowanie przy użyciu kodu źródłowego
Do programowania przy użyciu kodu źródłowego. Użyj Python 3.11+ i Node.js 22 LTS, aby dopasować do CI i Dockera.
git clone https://github.com/HKUDS/DeepTutor.git
cd DeepTutor
# Utwórz 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
# Zainstaluj zależności backendu + frontendu
python -m pip install -e .
( cd web && npm ci --legacy-peer-deps )
deeptutor init
deeptutor startInstalacje ze źródeł uruchamiają Next.js w trybie deweloperskim względem lokalnego katalogu web/; wszystko inne (układ konfiguracji, porty, zatrzymanie za pomocą Ctrl+C) odpowiada Opcji 1.
Środowisko Conda (zamiast venv)
conda create -n deeptutor python=3.11
conda activate deeptutor
python -m pip install --upgrade pipOpcjonalne dodatki instalacyjne — dev / partners / matrix / math-animator
pip install -e ".[dev]" # narzędzia testów/lint
pip install -e ".[partners]" # SDK kanałów IM Partners + klient MCP
pip install -e ".[matrix]" # kanał Matrix bez E2EE/libolm
pip install -e ".[matrix-e2e]" # Matrix E2EE; wymaga libolm
pip install -e ".[math-animator]" # addon Manim; wymaga LaTeX/ffmpeg/bibliotek systemowychDostosowania zależności frontendowych i rozwiązywanie problemów z serwerem deweloperskim
Zmiana zależności frontendowych: uruchom npm install --legacy-peer-deps, aby odświeżyć web/package-lock.json, a następnie zatwierdź zarówno web/package.json, jak i web/package-lock.json.
Zablokowany serwer deweloperski: jeśli deeptutor start zgłasza istniejący frontend, który nie odpowiada, zatrzymaj PID, który wydrukuje. Jeśli żaden proces Next.js nie jest uruchomiony, pliki blokady są przestarzałe — usuń je i spróbuj ponownie:
rm -f web/.next/dev/lock web/.next/lock
deeptutor startOpcja 3 — Docker · jeden samodzielny kontener
Jeden kontener dla pełnej aplikacji Web. Obrazy w GitHub Container Registry:
ghcr.io/hkuds/deeptutor:latest— stabilne wydanieghcr.io/hkuds/deeptutor:pre— wersja wstępna, gdy dostępna
Zobacz CONTAINERIZATION.md w celu uzyskania informacji o wdrożeniach podman/rootless/read-only-rootfs i pełnym przewodniku per-instalacja.
docker run --rm --name deeptutor \
-p 127.0.0.1:3782:3782 \
-v deeptutor-data:/app/data \
ghcr.io/hkuds/deeptutor:latestTylko
3782musi być opublikowane. Przeglądarka komunikuje się wyłącznie z serwerem frontendu; middleware Next.js (web/proxy.ts) przekazuje/api/*i/ws/*do backendu FastAPI wewnątrz kontenera. Opublikowanie8001(-p 127.0.0.1:8001:8001) jest opcjonalne — przydatne tylko do bezpośredniego uderzania w API z curl lub skryptów.
Otwórz http://127.0.0.1:3782. Kontener tworzy /app/data/user/settings/*.json przy pierwszym uruchomieniu; skonfiguruj dostawców modeli ze strony Web Settings. Konfiguracja, klucze API, dzienniki, pliki obszaru roboczego, pamięć i bazy wiedzy są przechowywane w woluminie deeptutor-data.
- Różne porty hosta: zmień lewą stronę każdego mapowania
-p host:kontener(np.-p 127.0.0.1:8088:3782). Jeśli zmienisz porty po stronie kontenera w/app/data/user/settings/system.json, uruchom ponownie i zaktualizuj prawą stronę każdego mapowania, aby pasowała. - Odłączony: dodaj
-d, następniedocker logs -f deeptutor, aby śledzić,docker stop deeptutor, aby zatrzymać,docker rm deeptutorprzed ponownym użyciem nazwy. Wolumindeeptutor-dataprzechowuje ustawienia i obszar roboczy między restartami.
Zdalny Docker / odwrotne proxy: przeglądarka komunikuje się wyłącznie z serwerem frontendu (:3782); middleware Next.js wewnątrz kontenera przekazuje /api/* i /ws/* do serwera backendu po stronie serwera. W typowym przypadku jednego kontenera nie konfigurujesz w ogóle bazowego adresu API — po prostu skieruj swój reverse proxy / terminator TLS na :3782. Bazowy adres API jest potrzebny tylko dla wdrożenia rozdzielonego (backend w osobnym kontenerze/hoście): ustaw next_public_api_base w data/user/settings/system.json na adres sieciowy, którego serwer frontendu używa do osiągnięcia backendu (jest czytany po stronie serwera, nigdy nie wysyłany do przeglądarki).
{
"next_public_api_base": "http://backend:8001"
}next_public_api_base_external (i jego alias public_api_base) są akceptowane jako fallbacki o niższym priorytecie. CORS używa źródeł frontendu, a nie adresów URL API. Przy wyłączonym uwierzytelnianiu DeepTutor domyślnie zezwala na normalne źródła przeglądarki HTTP/HTTPS. Przy włączonym uwierzytelnianiu dodaj dokładne źródła frontendu:
{
"cors_origins": ["https://deeptutor.example.com"]
}Łączenie z Ollama / LM Studio / llama.cpp / vLLM / Lemonade na hoście
Wewnątrz Dockera localhost to sam kontener, a nie maszyna hosta. Aby dotrzeć do usługi modelu działającej na hoście, użyj bramy hosta (zalecane):
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:latestNastępnie w Settings → Models wskaż bazowy URL dostawcy na 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) zazwyczaj rozwiązuje host.docker.internal bez --add-host. Na Linuksie flaga jest przenośnym sposobem tworzenia tej nazwy hosta w nowoczesnym Docker Engine.
Alternatywa dla Linuksa — sieć hosta: dodaj --network=host i usuń flagi -p. Kontener bezpośrednio współdzieli sieć hosta, więc otwórz http://127.0.0.1:3782 (lub frontend_port w system.json), a usługi hosta są dostępne pod normalnymi adresami URL localhost jak http://127.0.0.1:11434/v1. Pamiętaj, że sieciowanie hosta bezpośrednio ujawnia porty kontenera na hoście i może powodować konflikty z istniejącymi usługami — aby utrzymać je na loopback, ustaw BACKEND_HOST=127.0.0.1 i FRONTEND_HOST=127.0.0.1 (patrz CONTAINERIZATION.md).
Opcja 4 — Tylko CLI · bez interfejsu webowego, z kodu źródłowego
Gdy nie potrzebujesz interfejsu webowego. Pakiet tylko CLI jest instalowany ze źródłowego kodu, a nie z PyPI.
git clone https://github.com/HKUDS/DeepTutor.git
cd DeepTutor
# Utwórz 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 chatdeeptutor init --cli współdzieli ten sam układ data/user/settings/ co pełna aplikacja, ale pomija monity o porty backendu/frontendu i domyślnie wyłącza osadzanie (wybierz Yes jeśli planujesz używać deeptutor kb … lub narzędzi RAG). Nadal zapisuje kompletny układ środowiska uruchomieniowego (system.json, auth.json, integrations.json, model_catalog.json, main.yaml, agents.yaml) i nadal pyta o aktywnego dostawcę LLM i model.
Typowe polecenia
deeptutor chat # interaktywny 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 showLokalna instalacja deeptutor-cli nie zawiera zasobów webowych ani zależności serwera. Zachowaj kod źródłowy — instalacja edytowalna wskazuje na niego. Aby dodać aplikację Web później, zainstaluj pakiet PyPI (Opcja 1) i uruchom deeptutor init + deeptutor start z tego samego obszaru roboczego.
Piaskownica wykonania kodu (umiejętności biurowe) · uruchamianie kodu generowanego przez model dla docx / pdf / pptx / xlsx
Wbudowane umiejętności biurowe — docx / pdf / pptx / xlsx — działają, sprawiając że model pisze krótki skrypt Python (python-docx, reportlab, openpyxl, …), uruchamia go przez narzędzia exec / code_execution i zwraca adres URL do pobrania. Te narzędzia montują się za każdym razem, gdy backend piaskownicy jest aktywny, co ma miejsce domyślnie w każdym kształcie wdrożenia:
- Lokalne (Opcja 1 / 2) i Docker (Opcja 3, pojedynczy kontener): ograniczona piaskownica podprocesu uruchamia kod modelu (lokalnie na hoście lub wewnątrz kontenera pod Dockerem — kontener będący własną granicą izolacji).
- docker-compose: zamiast tego kierowany do utwardzonego, o najmniejszych uprawnieniach sidecar runner (
Dockerfile.runner) przezDEEPTUTOR_SANDBOX_RUNNER_URL— najsilniejsza postawa, automatycznie preferowana gdy jest obecna.
Piaskownica podprocesu jest kontrolowana przez ustawienie sandbox_allow_subprocess w data/user/settings/system.json (domyślnie true). Uruchamianie kodu generowanego przez model na twoim hoście to prawdziwa decyzja dotycząca zaufania — ustaw na false (lub eksportuj DEEPTUTOR_SANDBOX_ALLOW_SUBPROCESS=0), aby wyłączyć wykonanie po stronie hosta kosztem tego, że umiejętności biurowe nie będą mogły produkować plików.
Odniesienie do konfiguracji — pliki konfiguracyjne w data/user/settings/ (JSON/YAML)
Wszystko w data/user/settings/ to zwykły JSON/YAML. Strona Settings w przeglądarce jest zalecanym edytorem.
| Plik | Cel |
|---|---|
model_catalog.json |
Profile dostawców LLM, osadzania i wyszukiwania; klucze API; aktywne modele |
system.json |
Porty backendu/frontendu, publiczna baza API, CORS, weryfikacja SSL, katalog załączników |
auth.json |
Opcjonalny przełącznik uwierzytelniania, nazwa użytkownika, hash hasła, ustawienia tokena/cookie |
integrations.json |
Opcjonalne ustawienia PocketBase i integracji sidecar |
interface.json |
Preferencje języka / motywu / paska bocznego interfejsu użytkownika |
main.yaml |
Domyślne zachowanie środowiska uruchomieniowego i wstrzykiwanie ścieżek |
agents.yaml |
Ustawienia temperatury i tokenów możliwości/narzędzi |
Plik .env w katalogu głównym projektu nie jest czytany jako plik konfiguracyjny aplikacji. Dla minimalnej konfiguracji modelu otwórz Settings → Models, dodaj profil LLM (bazowy URL / klucz API / nazwa modelu) i zapisz. Dodaj profil osadzania tylko jeśli planujesz korzystać z funkcji Bazy wiedzy / RAG.
Zacznij od głównych powierzchni, których będziesz używać na co dzień: Chat, Partners, My Agents, Co-Writer, Book, Knowledge Center, Learning Space, Memory i Settings. Wycieczka obejmuje następnie wdrożenia dla wielu użytkowników dla współdzielonych, izolowanych obszarów roboczych.
💬 Chat — Pętla agenta, z której naprawdę korzystasz
Chat to domyślna możliwość i miejsce, gdzie zaczyna się większość pracy. Jeden wątek może rozmawiać normalnie, wywoływać narzędzia, opierać się na wybranych bazach wiedzy, czytać załączniki, generować obrazy, konsultować subagentów, pisać rekordy notatnika i kontynuować z tym samym kontekstem przez tury.
Pętla jest celowo prosta: model myśli w rundach, wywołuje narzędzia gdy są przydatne, obserwuje wyniki i kończy wiadomością bez narzędzi. ask_user jest wyjątkowy — zamiast zgadywać, agent może wstrzymać turę, zadać ustrukturyzowane pytanie wyjaśniające i wznowić po odpowiedzi.
Narzędzia przełączalne przez użytkownika to brainstorm, web_search, paper_search, reason i geogebra_analysis — plus imagegen i videogen po skonfigurowaniu odpowiedniego modelu generowania. Narzędzia kontekstowe takie jak rag, read_source, read_memory, write_memory, read_skill, load_tools, exec, web_fetch, ask_user, list_notebook, write_note, github i consult_subagent montują się automatycznie gdy tura ma odpowiedni kontekst.
Kontekst dzieli się na dwa rodzaje: trwały kontekst sesji (subagent, bazy wiedzy, persona, model, głos) żyje na pasku narzędziowym kompozytora i jest zachowany przez tury; jednorazowe odwołania (pliki, historia czatu, książki, notatniki, bank pytań, zaimportowani agenci) pochodzą z menu + dla jednej tury.
Chat jest również punktem startowym dla głębszych możliwości: Quiz do generowania pytań, Research do cytowanych raportów, Visualize do wykresów / diagramów / animacji i — w sekcji More Capabilities — Solve do wypracowanego rozumowania i Mastery Path do przepływów planu nauki.
🤝 Partner — Stali towarzysze na tym samym mózgu
Partners to stali towarzysze z własną duszą, polityką modelu, biblioteką, pamięcią i kanałami. Nie są osobnym silnikiem bota: każda przychodząca wiadomość webowa lub IM staje się normalną turą ChatOrchestrator wewnątrz obszaru roboczego z zakresem partnera. Partner to „czat który ma osobowość i numer telefonu."
Każdy partner ma SOUL.md, wybór modelu, kanały, politykę narzędzi i przypisaną bibliotekę. Bazy wiedzy, umiejętności i notatniki są kopiowane do data/partners/<id>/workspace/, więc te same narzędzia RAG, umiejętności, notatnika i pamięci działają bez specjalnych przypadków. Partner czyta pamięć swojego właściciela, ale zapisuje tylko do własnej.
Warstwa kanałów jest sterowana schematem i może łączyć się z platformami IM takimi jak Feishu, Telegram, Slack, Discord, DingTalk, QQ/NapCat, WeCom, WhatsApp, Zulip, Mattermost, Matrix, Mochat i Microsoft Teams w zależności od zainstalowanych dodatków i skonfigurowanych danych uwierzytelniających. Partner może być również podłączony jako subagent i konsultowany z normalnej tury czatu — patrz My Agents poniżej.
🧑🚀 My Agents — Konsultuj i importuj innych agentów
My Agents zamienia innych agentów w kontekst dla DeepTutor i wykonuje dwie odrębne rzeczy. Połącz żywego agenta — Claude Code lub Codex CLI na twoim komputerze, lub jednego z twoich Partners — i konsultuj go z wnętrza tury czatu: DeepTutor faktycznie uruchamia drugiego agenta i strumieniuje jego pracę do panelu Activity przez narzędzie consult_subagent. Wybierz go chipem Agent (lub wpisz @) i ustaw ile rund może trwać konsultacja.
Importuj poprzednie konwersacje — przynieś swoją istniejącą historię Claude Code i Codex jako nazwane, przeszukiwalne, wznawialne agenty. Wybierz które dni importować; odświeżanie ponownie synchronizuje je. Odwołaj się do zaimportowanej konwersacji z dowolnej tury czatu przez + → My Agents, a DeepTutor czyta ją jako transkrypt osoby trzeciej — pozostaje ich konwersacją, nie własnym głosem DeepTutor.
✍️ Co-Writer — Edycja Markdown z uwzględnieniem zaznaczenia
Co-Writer to obszar roboczy Markdown z podzielonym widokiem dla raportów, samouczków, notatek i długich artefaktów uczenia się. Dokumenty są automatycznie zapisywane, renderują podgląd na żywo (matematyka KaTeX, schematy), i mogą być zapisane z powrotem do notatników gdy szkic staje się kontekstem wielokrotnego użytku.
Jego wyróżniającym pomysłem jest precyzyjna edycja: zaznacz fragment i poproś DeepTutor o przepisanie, rozszerzenie lub skrócenie. Agent edycji może ugruntować zmianę w bazie wiedzy lub dowodach webowych, zachowuje ślad swoich wywołań narzędzi i pokazuje każdą zmianę jako diff akceptuj/odrzuć — więc nic nie ląduje dopóki tego nie zatwierdzisz.
📖 Book — Żywe książki z twoich materiałów
Book zamienia wybrane źródła w interaktywną żywą książkę — nie statyczny PDF, ale środowisko czytelnicze zbudowane z typowanych bloków. Książka może zaczynać się od baz wiedzy, notatników, banków pytań lub historii czatu; przepływ tworzenia proponuje konspekt rozdziałów przed wygenerowaniem treści, więc przeglądasz kształt zamiast akceptować ślepe jednorazowe wyjście.
Każdy rozdział kompiluje się do typowanych bloków — tekst, callouts, quizy, fiszki, osie czasu, kod, figury, interaktywny HTML, animacje, grafy konceptów, dogłębne analizy i notatki użytkownika — a każda strona ma swój własny Page Chat. Bloki są edytowalne: wstawiaj, przenoś, regeneruj lub zmieniaj typ bloku bez przepisywania rozdziału. Polecenia konserwacyjne takie jak deeptutor book health i deeptutor book refresh-fingerprints pomagają wykryć kiedy wiedza źródłowa odbiega od skompilowanych stron.
📚 Knowledge Center — Wielosilnikowe biblioteki RAG
Bazy wiedzy to kolekcje dokumentów za RAG — ugruntowują tury Chat, edycje Co-Writer, generowanie Book i konwersacje Partner. Wyróżnikiem jest wybór silnika wyszukiwania: LlamaIndex (domyślny, lokalny wektor + BM25), PageIndex (hostowany, wyszukiwanie z rozumowaniem z cytowaniami na poziomie strony), GraphRAG i LightRAG (wyszukiwanie oparte na grafach wiedzy), LightRAG Server (wyszukiwanie odciążone do zewnętrznej instancji LightRAG którą łączysz przez HTTP) lub podłączony vault Obsidian który tutor czyta i zapisuje w miejscu. Każda KB jest powiązana z jednym silnikiem.
Tworząc KB, albo tworzysz nową (przesyłasz dokumenty i budujesz świeży indeks) albo łączysz istniejącą (ponownie używasz indeksu zbudowanego gdzie indziej, czytasz w miejscu bez ponownego indeksowania). Ponowne indeksowanie zapisuje nowy płaski katalog version-N i zachowuje poprzednie, więc działający indeks nigdy nie jest niszczony w trakcie przebudowy. Pojedynczy dokument można usunąć nawet z bazy w stanie błędu — usuwając plik, który nie sparsował się poprawnie, bez pełnego usuwania i przebudowy. Parsowanie dokumentów — Tylko tekst, MinerU, Docling, markitdown lub PyMuPDF4LLM — jest wybierane w Settings → Knowledge Base, z domyślnie wyłączonymi pobieraniami lokalnego modelu. CLI odzwierciedla cykl życia za pomocą deeptutor kb list, info, create, add, search, set-default i delete.
🌐 Learning Space — Umiejętności, persony i kontekst wielokrotnego użytku
Learning Space to biblioteka i warstwa personalizacji — miejsce gdzie żyją rzeczy, które się zachowują. Conversations & Materials przechowuje historię czatu, notatniki i bank pytań (każde zapisane pytanie zachowuje twoją odpowiedź, odpowiedź referencyjną i wyjaśnienie). Personalization przechowuje ścieżki opanowania, persony (presety zachowań takie jak peer, research-assistant, teacher) i umiejętności (podręczniki SKILL.md które model czyta na żądanie). Wszystko tutaj można ponownie używać z Chat, Partners, Co-Writer i Book.
Nie musisz pisać każdej umiejętności samodzielnie — Import from EduHub przegląda katalog społecznościowy i pobiera umiejętność bezpośrednio do twojej biblioteki przez bramę bezpieczeństwa (patrz Ekosystem).
🧠 Memory — Inspektowalna personalizacja
Memory to system trzywarstwowy oparty na plikach, który możesz czytać, selekcjonować i audytować — celowo nie ukryty magazyn wektorowy. L1 to lustro obszaru roboczego plus dołączany ślad zdarzeń (trace/<surface>/<date>.jsonl); L2 to wyselekcjonowane fakty per-powierzchnia (L2/<surface>.md); L3 to synteza między-powierzchniowa (L3/<profile|recent|scope|preferences>.md). Ponieważ L2 cytuje L1, a L3 cytuje L2, nic w twoim profilu nie jest nierozliczalne.
Memory Graph pokazuje całą piramidę — synteza L3 w centrum, L2 w środkowym pierścieniu, ślady L1 na zewnątrz — więc możesz śledzić każde zsyntetyzowane twierdzenie z powrotem do dokładnego surowego zdarzenia za nim. Memory jest śledzone przez powierzchnie chat, notebook, quiz, kb, book, partner i cowriter; budżety Update / Audit / Dedup konsolidatora są dostosowywane w Settings → Memory.
⚙️ Settings — Jedna płaszczyzna kontroli
Settings to operacyjna płaszczyzna kontroli z paskiem statusu na żywo (Backend, LLM, Embedding, Search) i jedną kartą na obszar: Appearance (motyw + język UI), Network (baza API, porty, CORS), Models (LLM, Embedding, Search, Text-to-Speech, Speech-to-Text, Image Generation, Video Generation), Knowledge Base (silnik parsowania dokumentów), Chat (narzędzia, serwery MCP, parametry per-możliwość), Partners & Agents (subagenty które możesz konsultować z tury) i Memory (budżety konsolidatora).
Większość sekcji używa przepływu szkic-i-zastosuj, więc możesz testować dostawcę przed jego zatwierdzeniem. Cztery motywy dostarczane w zestawie — Default, Cream, Dark i Glass. Pliki .env katalogu głównego projektu są celowo ignorowane; konfiguracja środowiska uruchomieniowego żyje pod data/user/settings/*.json chyba że DEEPTUTOR_HOME lub deeptutor start --home wskaże aplikację gdzie indziej.
👥 Multi-User — Wdrożenia współdzielone · opcjonalne uwierzytelnianie, izolowane obszary robocze per-użytkownik
Uwierzytelnianie jest domyślnie wyłączone — DeepTutor działa jednoosobowo. Włącz je a jedno drzewo data/ obsługuje obszar roboczy administratora, izolowane obszary robocze per-użytkownik i obszary robocze partnerów obok siebie:
data/
├── user/ # Obszar roboczy administratora + globalne ustawienia
├── users/<uid>/ # Zakres per-użytkownik: historia czatu, pamięć, notatniki, KB
├── partners/<id>/workspace/ # Zakres partnera (użytkownika syntetycznego)
└── system/ # auth/users.json · grants/<uid>.json · audit/usage.jsonl
Pierwszy zarejestrowany użytkownik staje się administratorem i jest właścicielem katalogów modeli, danych uwierzytelniających dostawców, współdzielonych baz wiedzy, umiejętności i uprawnień per-użytkownik. Wszyscy pozostali otrzymują izolowany obszar roboczy i zredagowaną stronę Settings — przypisane przez administratora modele, KB i umiejętności pojawiają się jako ograniczone, tylko do odczytu opcje, nigdy jako surowe klucze API.
Włącz: włącz uwierzytelnianie w data/user/settings/auth.json, uruchom ponownie deeptutor start, zarejestruj pierwszego administratora pod /register, następnie dodaj użytkowników z /admin/users i przypisz modele, KB, umiejętności, Partners, politykę narzędzi/MCP i dostęp do wykonania kodu przez uprawnienia.
PocketBase pozostaje integracją jednoosobową — zostaw
integrations.pocketbase_urlpuste dla wdrożeń wieloużytkownikowych chyba że podłączyłeś zewnętrzny magazyn użytkowników.
Jeden plik binarny deeptutor, dwa sposoby wejścia: interaktywny REPL dla osób żyjących w terminalu i strukturalny JSON dla innych agentów które prowadzą DeepTutor jako narzędzie. Te same możliwości, narzędzia i bazy wiedzy w obu przypadkach.
Prowadź sam
deeptutor chat otwiera interaktywny REPL; deeptutor run <capability> "<message>" uruchamia jedną turę i wychodzi. Oba używają tych samych flag --capability, --tool, --kb i --config.
deeptutor chat # interaktywny 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=standardWszystko co robi aplikacja Web jest tu dostępne — bazy wiedzy (kb), sesje (session), partnerzy (partner), umiejętności (skill), notatniki, pamięć i konfiguracja. Pełna lista poniżej.
Niech agent prowadzi
DeepTutor jest zbudowany aby być obsługiwany przez innego agenta. Dodaj --format json do dowolnego run a każda tura strumieniuje NDJSON — jedno zdarzenie na linię (content, tool_call, tool_result, done, …), każda linia oznaczona swoim session_id. Uruchomienia są bezpieczne bez TTY: pauza ask_user bez TTY automatycznie rozwiązuje się pustą odpowiedzią zamiast zawieszać.
# Jednorazowo, czytelne maszynowo
deeptutor run deep_solve "Find d/dx[sin(x^2)]" --tool reason --format json
# Łącz tury w jednej sesji stanowej — przechwyć id, ponownie użyj
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 jsonRepozytorium zawiera główny SKILL.md — około 150-liniowy dokument przekazania który uczy każdy LLM używający narzędzi całej powierzchni w jednym czytaniu. Przekaż go Claude Code, Codex lub OpenCode (automatycznie pobierają SKILL.md) lub opakuj deeptutor run jako narzędzie w pętli LangChain / AutoGen. Pełne przepisy: Agent Handoff.
Odniesienie do poleceń
| Polecenie | Opis |
|---|---|
deeptutor init |
Utwórz lub zaktualizuj data/user/settings dla bieżącego obszaru roboczego |
deeptutor start [--home PATH] |
Uruchom backend + frontend razem |
deeptutor serve [--port PORT] |
Uruchom tylko backend FastAPI |
deeptutor run <capability> <message> |
Uruchom jedną turę możliwości (chat, deep_solve, deep_question, deep_research, visualize, math_animator, mastery_path); dodaj --format json dla wyjścia NDJSON |
deeptutor chat |
Interaktywny REPL z kontrolkami możliwości, narzędzia, KB, notatnika i historii |
deeptutor partner list/create/start/stop |
Zarządzaj partnerami połączonymi przez IM |
deeptutor kb list/info/create/add/search/set-default/delete |
Zarządzaj bazami wiedzy LlamaIndex |
deeptutor skill search/install/list/remove/login/logout/publish/update |
Zarządzaj umiejętnościami, instaluj z hubów i publikuj własne (eduhub:<slug> domyślnie, patrz Ekosystem) |
deeptutor memory show/clear |
Inspekcjonuj dokumenty pamięci L2/L3 lub wyczyść pamięć L1/wszystko |
deeptutor session list/show/open/rename/delete |
Zarządzaj współdzielonymi sesjami |
deeptutor notebook list/create/show/add-md/replace-md/remove-record |
Zarządzaj notatnikami z plików Markdown |
deeptutor book list/health/refresh-fingerprints |
Inspekcjonuj książki i odświeżaj odciski źródeł |
deeptutor plugin list/info |
Inspekcjonuj zarejestrowane narzędzia i możliwości |
deeptutor config show |
Wydrukuj podsumowanie konfiguracji |
deeptutor provider login <provider> |
Uwierzytelnianie dostawcy (openai-codex logowanie OAuth; github-copilot weryfikuje istniejącą sesję auth Copilot) |
Dystrybucja tylko CLI
Pakiet tylko CLI żyje w packaging/deeptutor-cli. W tym kodzie źródłowym zainstaluj go ze źródła:
python -m pip install -e ./packaging/deeptutor-cliNie jest jeszcze opublikowany na PyPI, więc główna sekcja Pierwsze kroki zachowuje ścieżkę instalacji ze źródła.
Umiejętności DeepTutor używają otwartego formatu Agent-Skills — folder z podręcznikiem SKILL.md (frontmatter YAML + Markdown) i opcjonalnymi plikami referencyjnymi. Nic w tym nie jest specyficzne dla DeepTutor, więc każdy rejestr który mówi w tym formacie staje się źródłem dla twojej biblioteki. DeepTutor jest dostarczany z EduHub — naszym własnym rejestrem umiejętności skupionym na edukacji — podłączonym jako domyślny hub.
EduHub — Ekosystem umiejętności DeepTutor
EduHub to hub społecznościowy który DeepTutor uruchomił do dzielenia się umiejętnościami agentów zorientowanymi na nauczanie — tutorzy sokratejscy, kreatory fiszek, informacje zwrotne na eseje, plany egzaminów, objaśniacze konceptów i więcej. Jest wbudowany w DeepTutor, więc nie ma nic do konfigurowania: gołe slug lub prefiks eduhub: rozwiązuje do niego.
Znajdź i zainstaluj — w przeglądarce otwórz Learning Space → Skills → Import from EduHub aby przeglądać katalog i pobrać umiejętność bezpośrednio do swojej biblioteki. Z terminala:
deeptutor skill search "socratic tutor" # wyszukaj EduHub (domyślny hub)
deeptutor skill install socratic-tutor # pobierz → weryfikuj → zarejestruj
deeptutor skill install eduhub:socratic-tutor@1.2.0 # przypnij hub i wersję
deeptutor skill list # lokalne umiejętności z proweniencją hubuOpublikuj własną — spakuj SKILL.md i podziel się ze społecznością:
deeptutor skill login # logowanie przeglądarki do EduHub
deeptutor skill publish ./my-skill # interaktywne: wybierz ścieżkę + tagi, następnie prześlij
deeptutor skill update # wycofaj lub wydaj nową wersjęEduHub jest również samodzielnym, kompatybilnym z ClawHub rejestrem, więc agenty które nie są DeepTutorem (Claude Code, Codex, …) mogą używać go bezpośrednio przez CLI eduhub — npx eduhub install socratic-tutor.
Brama bezpieczeństwa importu
Niezależnie od źródła, każdy import przechodzi przez tę samą bramę bezpieczeństwa zanim cokolwiek dotknie twojego obszaru roboczego:
- werdykt bezpieczeństwa rejestru jest sprawdzany jako pierwszy — oznaczone pakiety są odrzucane chyba że przekażesz
--allow-unverified; - archiwa są ekstraktowane defensywnie (ochrona przed zip-slip / zip-bomb) za białą listą sufiksów tekst/skrypt, więc pliki binarne nigdy nie lądują w obszarze roboczym;
- frontmatter jest normalizowany do schematu DeepTutor a
always:jest usuwane, więc pobrana umiejętność nigdy nie może wymusić się do każdego systemowego promptu; - proweniencja — hub, wersja, werdykt i czas instalacji — jest zapisywana do
.hub-lock.jsondla audytów i aktualizacji.
W wdrożeniach wieloużytkownikowych, instalowanie jest tylko dla administratorów: nowa umiejętność ląduje w katalogu administratora i pozostaje niewidoczna dla innych użytkowników dopóki uprawnienie jej nie przypisze, więc administrator może ją sprawdzić przed wdrożeniem.
Kompatybilność z ClawHub
Ponieważ DeepTutor mówi otwartym formatem Agent-Skills, ClawHub działa również jako pierwszorzędne źródło — jest wbudowany obok EduHub. Wybierz go z prefiksem hubu:
deeptutor skill search "git release notes" --hub clawhub
deeptutor skill install clawhub:git-release-notes@1.0.1Dodaj więcej rejestrów w settings/skill_hubs.json: wpis type: "clawhub" wskazuje na dowolne kompatybilne HTTP API (EduHub i ClawHub oba je mówią), type: "command" opakowuje dowolny CLI pobierania który rejestr dostarcza i "default" wybiera hub używany dla gołych slugów. Wszystkie zasilają tę samą bramę importu.
DeepTutor to projekt open-source prowadzony przez Bingxi Zhao w ramach Grupy HKUDS, i iteruje w w pełni open-source formie, budowany razem ze społecznością. Do tej pory NIE mamy żadnych płatnych produktów online jakiegokolwiek rodzaju. Zapraszamy do kontaktu pod adresem bingxizhao39@gmail.com w sprawie dyskusji, pomysłów lub współpracy.
Serdeczne podziękowania dla Chao Huang, dyrektora Data Intelligence Lab @ HKU, i naszych współpracowników z HKUDS za ciepłe wsparcie — szczególnie Jiahao Zhang, Zirui Guo i Xubin Ren. Jesteśmy również głęboko wdzięczni społeczności open-source: wasze gwiazdki, zgłoszenia, pull requesty i dyskusje kształtują DeepTutor każdego dnia.
DeepTutor stoi również na ramionach wybitnych projektów open-source które dostarczyły nam zarówno narzędzia jak i inspirację:
| Projekt | Rola / Inspiracja |
|---|---|
| LlamaIndex | Kręgosłup potoku RAG i indeksowania dokumentów |
| nanobot | Ultralekki silnik agenta który zasilał oryginalny TutorBot (HKUDS) |
| LightRAG | Prosty i szybki RAG (HKUDS) |
| AutoAgent | Framework agentów bez kodu (HKUDS) |
| AI-Researcher | Zautomatyzowany potok badań naukowych (HKUDS) |
| OpenClaw | Otwarta brama agentów i ekosystem umiejętności za ClawHub |
| Codex | Natywny dla agentów CLI kodowania który zainspirował nasz przepływ pracy CLI |
| Claude Code | Agentowy CLI kodowania który zainspirował pętlę agenta DeepTutor |
| ManimCat | Generowanie animacji matematycznych sterowane AI dla Math Animator |
Chcemy aby DeepTutor stale iterował i się rozwijał — a ostatecznie stał się prezentem który oddajemy społeczności open-source. Nasz plan działania jest aktualizowany na bieżąco; głosuj na elementy tam lub proponuj nowe. Jeśli chcesz współtworzyć, zapoznaj się z Przewodnikiem dla współtwórców po strategię gałęzi, standardy kodowania i sposób rozpoczęcia.
Licencjonowany na podstawie Apache License 2.0.























