🤝 เรายินดีรับการมีส่วนร่วมทุกรูปแบบ! โหวตรายการ roadmap หรือเสนอรายการใหม่ที่
Roadmapและดู คู่มือการมีส่วนร่วม สำหรับกลยุทธ์ branching มาตรฐานการเขียนโค้ด และวิธีเริ่มต้น
- 2026-05-22 🌐 เว็บไซต์เอกสารอย่างเป็นทางการเปิดตัวแล้วที่ deeptutor.info — คู่มือ การอ้างอิง และ capability tours ทั้งหมดในที่เดียว
- 2026-04-19 🎉 ถึง 20k stars ใน 111 วัน! ขอบคุณสำหรับการสนับสนุนที่มุ่งสู่การสอนพิเศษที่เป็นส่วนตัวและชาญฉลาดอย่างแท้จริง
- 2026-04-10 📄 บทความของเราตอนนี้มีบน arXiv แล้ว! อ่าน preprint เพื่อเรียนรู้เกี่ยวกับการออกแบบและแนวคิดที่อยู่เบื้องหลัง DeepTutor
- 2026-02-06 🚀 ถึง 10k stars ในเพียง 39 วัน! ขอบคุณชุมชนที่น่าเหลือเชื่ออย่างยิ่ง!
- 2026-01-01 🎊 สวัสดีปีใหม่! เข้าร่วม Discord, WeChat หรือ Discussions — มาร่วมกันกำหนดอนาคตของ DeepTutor
- 2025-12-29 🎓 DeepTutor ได้รับการเปิดตัวอย่างเป็นทางการแล้ว!
DeepTutor คือ workspace การเรียนรู้แบบ agent-native ที่เชื่อมต่อการสอนพิเศษ, การแก้ปัญหา, การสร้าง quiz, การวิจัย, การสร้างภาพ และการฝึกความเชี่ยวชาญในระบบที่ขยายได้หนึ่งเดียว
- รันไทม์เดียวสำหรับทุกโหมด — Chat, Ask Questions, Quiz, Research, Visualize, Solve, Course Study, Mastery Path, Immersive Reading และ Immersive Watching ใช้ capability runtime และบริบท session ชุดเดียวกัน โดยยังคงลูปและ pipeline ที่ออกแบบมาเฉพาะสำหรับแต่ละวัตถุประสงค์
- บริบทการเรียนรู้ที่เชื่อมต่อกัน — ฐานความรู้, หนังสือ, ร่าง Co-Writer, สมุดบันทึก, คลังคำถาม, บุคลิกภาพ และ Memory สามารถนำมาใช้ซ้ำในเวิร์กโฟลว์ที่รองรับ โดยอยู่ภายใต้สิทธิ์ของบัญชีและนโยบายการเรียนรู้
- การเรียนรู้ผ่านวิดีโออย่างดื่มด่ำ — วางลิงก์ YouTube เพื่อเล่นวิดีโอแบบ native ที่เพิ่มความเป็นส่วนตัว พร้อมคำบรรยายที่ซิงค์กัน, การสอนพิเศษที่อ้างอิง timestamp และความคืบหน้าที่กลับมาเรียนต่อได้; ผู้ดูแลระบบสามารถเปลี่ยนการเล่นเป็น Invidious instance ที่ self-hosted ได้โดยไม่ต้องสร้างสื่อขึ้นใหม่
- ซับเอเจนต์และ Partners — จาก Chat คุณสามารถปรึกษา agent harness แบบสด (Claude Code, Codex, Antigravity, Kimi, opencode, MiMo, Hermes, OpenClaw หรือ DeepSeek) หรือ Partner, นำเข้าบทสนทนาในอดีต และรันเพื่อนถาวรบน IM ด้วยสมองเดียวกัน
- ความรู้หลายเอ็นจิน — ไลบรารี RAG แบบเวอร์ชันผ่าน LlamaIndex, PageIndex, GraphRAG, LightRAG, LightRAG Server ระยะไกล, WeKnora deployment แบบ self-hosted, ไลบรารี Tencent IMA หรือ MarginNote 4 หรือ Obsidian vault ที่เชื่อมโยง พร้อมการแยกวิเคราะห์เอกสารแบบ pluggable
- เครื่องมือและทักษะที่ขยายได้ — เครื่องมือในตัว, เซิร์ฟเวอร์ MCP, แอป CLI, โมเดลสร้างรูปภาพ/วิดีโอ/เสียง และทักษะชุมชนที่ติดตั้งได้จาก EduHub
- หน่วยความจำที่ตรวจสอบได้ — การติดตาม L1, สรุปพื้นผิว L2 และการสังเคราะห์ L3 ทำให้การปรับแต่งส่วนบุคคลมองเห็นได้และแก้ไขได้; Memory Graph เชื่อมข้อเท็จจริง L2 กับหลักฐาน L1 และการสังเคราะห์ L3 กับพื้นผิวที่มีส่วนร่วม
DeepTutor มีเส้นทางการติดตั้งสี่เส้นทาง ทั้งหมดแชร์ layout workspace เดียว: การตั้งค่าอยู่ใน data/user/settings/ ภายใต้ไดเร็กทอรีที่คุณเปิดตัว (หรือภายใต้ DEEPTUTOR_HOME / deeptutor start --home หากคุณตั้งค่าไว้อย่างชัดเจน) สำหรับแอปเต็มรูปแบบ ขั้นตอนที่แนะนำคือ เลือกไดเร็กทอรี workspace → ติดตั้ง → deeptutor init → deeptutor start
ตัวเลือกที่ 1 — ติดตั้งจาก PyPI · แอป Web local แบบเต็มรูปแบบ + CLI ไม่ต้องโคลน
แอป Web local แบบเต็มรูปแบบ + CLI ไม่ต้องโคลน ต้องการ Python 3.11–3.14 และ runtime Node.js 20+ บน PATH (เซิร์ฟเวอร์ standalone Next.js ที่แพ็คไว้จะถูกเปิดตัวโดย deeptutor start)
mkdir -p my-deeptutor && cd my-deeptutor
pip install -U deeptutor
deeptutor init # prompts for ports + LLM provider + optional embedding/search
deeptutor start # starts backend + frontend; keep the terminal opendeeptutor init จะขอพอร์ต backend (ค่าเริ่มต้น 8001), พอร์ต frontend (ค่าเริ่มต้น 3782), LLM provider / base URL / API key / model, embedding provider แบบเสริมสำหรับ Knowledge Base / RAG และ search provider แบบเสริมสำหรับ Web Search
หลังจาก deeptutor start ให้เปิด URL ของ frontend ที่พิมพ์ใน terminal — ค่าเริ่มต้น http://127.0.0.1:3782 กด Ctrl+C ใน terminal นั้นเพื่อหยุดทั้ง backend และ frontend การข้าม deeptutor init ก็ใช้ได้สำหรับการทดลองอย่างรวดเร็ว แอปจะบูตด้วยพอร์ตเริ่มต้นและการตั้งค่า model ว่าง กำหนดค่าในภายหลังใน Settings → Models
ตัวเลือกที่ 2 — ติดตั้งจากซอร์สโค้ด · พัฒนาจาก checkout
สำหรับการพัฒนาจาก checkout ใช้ Python 3.11–3.14 และ Node.js 22 LTS เพื่อให้ตรงกับ CI และ Docker
git clone https://github.com/HKUDS/DeepTutor.git
cd DeepTutor
# Create a 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
# Install backend + frontend deps
python -m pip install -e .
( cd web && npm ci --legacy-peer-deps )
deeptutor init
deeptutor start --devdeeptutor start จะ build frontend web/ ในเครื่องสำหรับ production ครั้งเดียวแล้วนำมาใช้ซ้ำ; --dev รัน Next.js ด้วย HMR (hot reload) Layout ของ config, พอร์ต และ Ctrl+C ตรงกับตัวเลือกที่ 1
สภาพแวดล้อม Conda (แทน venv)
conda create -n deeptutor python=3.11
conda activate deeptutor
python -m pip install --upgrade pipส่วนเสริมการติดตั้ง — เอ็นจิน RAG / dev / partners / matrix / math-animator
pip install -e ".[rag-lightrag]" # Built-in LightRAG engine (exact supported SDK)
pip install -e ".[graphrag]" # Microsoft GraphRAG engine (Python 3.11–3.13)
pip install -e ".[dev]" # tests/lint tools
pip install -e ".[partners]" # Partner IM channel SDKs
pip install -e ".[video-learning]" # compatibility extra; captions ship in the full/CLI installs
pip install -e ".[matrix]" # Matrix channel without E2EE/libolm
pip install -e ".[matrix-e2e]" # Matrix E2EE; requires libolm
pip install -e ".[math-animator]" # Manim addon; requires LaTeX/ffmpeg/system libsการปรับแก้ dependency ของ frontend และการแก้ปัญหาเซิร์ฟเวอร์ dev
การเปลี่ยน dependency ของ frontend: รัน npm install --legacy-peer-deps เพื่อรีเฟรช web/package-lock.json จากนั้น commit ทั้ง web/package.json และ web/package-lock.json
เซิร์ฟเวอร์ dev ค้าง: หาก deeptutor start --dev รายงาน frontend ที่มีอยู่แต่ไม่ตอบสนอง ให้หยุด PID ที่พิมพ์ออกมา หากไม่มีกระบวนการ Next.js จริง ๆ ที่รันอยู่ ไฟล์ lock จะล้าสมัย — ลบออกแล้วลองใหม่:
rm -f web/.next/dev/lock web/.next/lock
deeptutor start --devตัวเลือกที่ 3 — Docker · container เดียวที่ครบในตัว
Container เดียวสำหรับแอป Web แบบเต็มรูปแบบ ภาพบน GitHub Container Registry:
ghcr.io/hkuds/deeptutor:latest— รุ่นเสถียรล่าสุดghcr.io/hkuds/deeptutor:<version>— รุ่นที่ระบุแบบตรงตัวโดยไม่มีvนำหน้า (เช่น:1.6.3); รุ่นก่อนเผยแพร่จะได้รับเฉพาะแท็กเวอร์ชันของตน
ดู 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จำเป็นต้อง publish เฉพาะ
3782เบราว์เซอร์คุยกับ frontend origin เท่านั้น; Next.js middleware (web/proxy.ts) ส่งต่อ/api/*และ/ws/*ไปยัง FastAPI backend ภายใน container การ publish8001(-p 127.0.0.1:8001:8001) เป็นทางเลือก — มีประโยชน์เฉพาะเมื่อต้องการเรียก API โดยตรงด้วย curl หรือ scripts
เปิด http://127.0.0.1:3782 Container จะสร้าง /app/data/user/settings/*.json เมื่อบูตครั้งแรก กำหนดค่า model providers จากหน้า Web Settings Config, API keys, logs, ไฟล์ workspace, memory และ knowledge bases จะคงอยู่ใน volume deeptutor-data ส่วนเสริมที่เป็นทางเลือกควรอยู่ที่การปรับใช้ ไม่ใช่ใน shell: ตั้งค่า DEEPTUTOR_EXTRAS (และ DEEPTUTOR_APT_PACKAGES สำหรับ system libraries) แล้ว container ทุกตัวที่เริ่มจากมันจะ apply ส่วนเสริมเหล่านั้นซ้ำโดยอัตโนมัติ ในขณะที่ docker exec … pip install จะหายไปเมื่อ compose down ครั้งถัดไป
- พอร์ต host ที่แตกต่าง: เปลี่ยนด้านซ้ายของการ mapping
-p host:containerแต่ละอัน (เช่น-p 127.0.0.1:8088:3782) หากคุณเปลี่ยนพอร์ตฝั่ง container ใน/app/data/user/settings/system.jsonให้รีสตาร์ทและอัปเดตด้านขวาของการ mapping แต่ละอันให้ตรงกัน - แบบ detached: เพิ่ม
-dจากนั้นdocker logs -f deeptutorเพื่อติดตาม,docker stop deeptutorเพื่อหยุด,docker rm deeptutorก่อนนำชื่อมาใช้ซ้ำ Volumedeeptutor-dataจะเก็บการตั้งค่าและ workspace ของคุณข้ามการรีสตาร์ท
Remote Docker / reverse proxy: เบราว์เซอร์คุยกับ frontend origin (:3782) เท่านั้น; Next.js middleware ภายใน container ส่งต่อ /api/* และ /ws/* ไปยัง backend server-side สำหรับกรณี single-container ทั่วไปคุณไม่ต้องกำหนดค่า API base เลย — แค่ชี้ reverse proxy / TLS terminator ไปที่ :3782 คุณต้องการ API base เฉพาะสำหรับ split deployment (backend ใน container/host แยกต่างหาก): ตั้งค่า next_public_api_base ใน data/user/settings/system.json เป็นที่อยู่ in-network ที่ frontend server ใช้เข้าถึง backend (อ่านฝั่ง server ไม่ส่งไปยังเบราว์เซอร์)
{
"next_public_api_base": "http://backend:8001"
}next_public_api_base_external (และ alias public_api_base) ยอมรับเป็น fallback ลำดับความสำคัญต่ำกว่า CORS ใช้ frontend origins ไม่ใช่ API URLs เมื่อปิด auth DeepTutor อนุญาต HTTP/HTTPS browser origins ปกติโดยค่าเริ่มต้น เมื่อเปิด auth ให้เพิ่ม frontend origins ที่แน่นอน:
{
"cors_origins": ["https://deeptutor.example.com"]
}การเชื่อมต่อกับ Ollama / LM Studio / llama.cpp / vLLM / Lemonade บน host
ภายใน Docker, localhost คือ container เอง ไม่ใช่เครื่อง host ของคุณ ในการเข้าถึง model service ที่รันบน host ให้ใช้ host gateway (แนะนำ):
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จากนั้นใน Settings → Models ชี้ Base URL ของ provider ไปที่ 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) มักจะ resolve host.docker.internal ได้โดยไม่ต้องใช้ --add-host บน Linux ตัวเลือกนี้คือวิธีที่ portable ในการสร้าง hostname บน Docker Engine สมัยใหม่
ทางเลือกบน Linux — host networking: เพิ่ม --network=host และลบ flags -p ออก Container จะแชร์ network ของ host โดยตรง เปิด http://127.0.0.1:3782 (หรือ frontend_port ใน system.json) และ services ของ host สามารถเข้าถึงได้ด้วย localhost URLs ปกติ เช่น http://127.0.0.1:11434/v1 โปรดทราบว่า host networking จะเปิดเผยพอร์ต container โดยตรงบน host และอาจขัดแย้งกับ services ที่มีอยู่ — หากต้องการเก็บไว้บน loopback ให้ตั้ง BACKEND_HOST=127.0.0.1 และ FRONTEND_HOST=127.0.0.1 (ดู CONTAINERIZATION.md)
ตัวเลือกที่ 4 — CLI เท่านั้น · ไม่มี Web UI จาก source checkout
เมื่อคุณไม่ต้องการ Web UI แพ็คเกจ CLI-only ติดตั้งจาก source checkout ไม่ใช่จาก PyPI
git clone https://github.com/HKUDS/DeepTutor.git
cd DeepTutor
# Create a 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 แชร์ layout data/user/settings/ เดียวกับแอปเต็มรูปแบบ แต่ข้ามการขอพอร์ต backend/frontend โดยยังมีตัวเลือก Embedding และ Search (เลือก Skip เมื่อไม่ต้องการ), เขียนไฟล์ runtime หลัก (system.json, auth.json, integrations.json, interface.json, model_catalog.json, main.yaml, agents.yaml) และขอ LLM provider และ model ที่ใช้งานอยู่
คำสั่งทั่วไป
deeptutor chat # interactive 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 ในเครื่องไม่มี Web assets หรือ server dependencies เก็บ source checkout ไว้ — การติดตั้งแบบ editable ชี้ไปที่มัน หากต้องการเพิ่มแอป Web ในภายหลัง ให้ติดตั้งแพ็คเกจ PyPI (ตัวเลือกที่ 1) และรัน deeptutor init + deeptutor start จาก workspace เดียวกัน
Sandbox การรันโค้ด (office skills) · รันโค้ดที่ model สร้างสำหรับ docx / pdf / pptx / xlsx
office skills ที่ติดตั้งมา — docx / pdf / pptx / xlsx — ทำงานโดยให้ model เขียน Python script สั้น ๆ (python-docx, reportlab, openpyxl, …), รันผ่านเครื่องมือ exec / code_execution และส่งคืน URL ดาวน์โหลด เครื่องมือเหล่านี้จะ mount เมื่อ sandbox backend ทำงานอยู่ DeepTutor จะเลือก backend ที่แข็งแกร่งที่สุดซึ่งกำหนดค่าไว้ตามลำดับนี้:
- Runner sidecar:
DEEPTUTOR_SANDBOX_RUNNER_URLจะ route การรันไปยังบริการที่มีความปลอดภัยสูงและมีสิทธิ์น้อยที่สุดจากDockerfile.runner - Linux bubblewrap: เมื่อมี
bwrapจะใช้แยก process และไฟล์ออกจากกัน - Restricted subprocess fallback: การติดตั้งแบบ local และ single-container จะใช้วิธีนี้เฉพาะเมื่อได้รับอนุญาต; ภายใต้ Docker ตัว container ยังคงเป็นขอบเขตอีกชั้นหนึ่ง
การตั้งค่า sandbox_allow_subprocess ใน data/user/settings/system.json (ค่าเริ่มต้น true) ควบคุมเฉพาะ fallback สุดท้าย ตั้งเป็น false (หรือ export DEEPTUTOR_SANDBOX_ALLOW_SUBPROCESS=0) เพื่อปฏิเสธการรัน subprocess เมื่อไม่มี runner หรือ bwrap backend; การตั้งค่านี้จะไม่ปิด backend ที่แข็งแกร่งกว่าสองแบบนั้น
เอกสารอ้างอิงการตั้งค่า — ไฟล์การกำหนดค่าภายใต้ data/user/settings/ (JSON/YAML)
ทุกอย่างภายใต้ data/user/settings/ เป็น JSON/YAML ธรรมดา หน้า Settings ในเบราว์เซอร์คือโปรแกรมแก้ไขที่แนะนำ
| ไฟล์ | วัตถุประสงค์ |
|---|---|
model_catalog.json |
การเชื่อมต่อ provider รวมถึงโปรไฟล์ LLM, task, embedding, search, TTS, STT, image และ video, credentials และตัวเลือกที่ใช้งานอยู่ |
system.json |
พอร์ต backend/frontend, public API base, CORS, SSL verification, ไดเร็กทอรีไฟล์แนบ และขีดจำกัดการอัพโหลด/การแยกเนื้อหา |
auth.json |
สวิตช์ auth แบบเสริม, ชื่อผู้ใช้, password hash, การตั้งค่า token/cookie |
integrations.json |
การตั้งค่า PocketBase แบบเสริมและการรวม sidecar |
interface.json |
ความชอบภาษา UI และภาษา output ของ model / ธีม / แถบด้านข้างของ UI |
video_learning.json |
provider การเล่น YouTube/Invidious เริ่มต้น, ต้นทาง Invidious และ transcript adapter แบบเสริม |
main.yaml |
ค่าเริ่มต้นพฤติกรรม runtime และการ inject path |
agents.yaml |
การตั้งค่า temperature และ token ของ capability/tool |
การอ้างอิงของ Web Search จะถูกกรองโดยค่าเริ่มต้น โดยจะแสดงเฉพาะ URL สาธารณะ http/https ที่ไม่มี credentials ฝังอยู่หรือใช้พอร์ตที่ผิดปกติ การปรับใช้สามารถเพิ่มนโยบายโดเมนที่เน้นด้านการศึกษาใน data/user/settings/system.json:
{
"web_search_source_filtering": {
"enabled": true,
"blocked_domains": ["spam.example"],
"trusted_domains": ["edu.cn", "arxiv.org"]
}
}เมื่อ trusted_domains ไม่ว่าง การอ้างอิงจะถูกจำกัดไว้เฉพาะโดเมนเหล่านั้นและ subdomains ของโดเมนดังกล่าว โดย blocked_domains จะมีลำดับความสำคัญเหนือกว่าเสมอ
.env ที่ root ของโปรเจกต์จะ ไม่ ถูกอ่านเป็นไฟล์ config ของแอปพลิเคชัน สำหรับการตั้งค่า model เบื้องต้น เปิด Settings → Models เพิ่มโปรไฟล์ LLM (Base URL / API key / ชื่อ model) และบันทึก เพิ่มโปรไฟล์ embedding เฉพาะเมื่อคุณวางแผนใช้ Knowledge Base / RAG features
โปรไฟล์ LLM และ task-model จะแสดงการตั้งค่า API format เมื่อ provider รองรับหลายตัวเลือก คงค่า Auto ไว้สำหรับการกำหนดเส้นทางและ fallback ตามปกติ หรือเลือก OpenAI Chat Completions, OpenAI Responses หรือ Anthropic Messages; การบังคับใช้ Responses ยังคง fail-closed ฟิลด์ที่บันทึกคือ api_format (auto, openai_chat, openai_responses หรือ anthropic); wire_api เป็นสถานะความเข้ากันได้ที่อนุมานจากค่านี้ การ override ระดับแต่ละโมเดลด้วย Auto / Supported / Not supported ครอบคลุมการเรียกใช้เครื่องมือ, การป้อนภาพ, เอาต์พุต JSON และตัวควบคุมการให้เหตุผล
ถอนการติดตั้งและทำความสะอาด
DeepTutor แยกโค้ดที่ติดตั้งออกจาก runtime workspace โดยค่าเริ่มต้น workspace คือไดเร็กทอรีที่คุณรัน deeptutor init / deeptutor start; --home PATH หรือ DEEPTUTOR_HOME จะ override ค่านี้ ผลลัพธ์ runtime คือไดเร็กทอรี data ภายใน workspace ดังกล่าว ดังนั้นบรรทัดใน startup banner ที่ขึ้นต้นด้วย Workspace: จึงระบุสิ่งที่ต้องทำความสะอาด
-
หยุดแอป กด
Ctrl+Cใน terminal ที่กำลังรันdeeptutor startหรือรันdeeptutor stop [--home PATH]สำหรับ launcher ที่เริ่มด้วย--detach; หยุด Partner ที่กำลังรันอยู่และ detached Docker containers ก่อนลบข้อมูล -
ลบข้อมูล runtime เฉพาะเมื่อคุณต้องการลบ local state ทั้งหมดด้วย ซึ่งรวมถึง settings และ API keys, ประวัติ chat, sessions, Memory, Notebooks, Books, สถานะ Reading, Skills, สถานะ Partners, logs, Knowledge Bases, parse caches, artifacts ที่สร้างขึ้น และ runtime cache ของ frontend ที่แพ็คไว้
ก่อนอื่นให้คัดลอก path
Workspace:ที่ตรงกันจาก startup banner และตรวจสอบว่าdatachild ของ path นั้นคือไดเร็กทอรีข้อมูล DeepTutor ที่ต้องการ สำรองข้อมูลไว้หากอาจต้องใช้ในภายหลัง จากนั้นย้ายไดเร็กทอรีที่ตรงกันนั้นไปยัง Trash/Recycle Bin ของระบบปฏิบัติการ ห้ามรันคำสั่งลบแบบ recursive กับ relative path หรือ environment variable ที่ยัง resolve ไม่สำเร็จ -
ถอนการติดตั้ง package ใช้คำสั่งที่ตรงกับ distribution:
python -m pip uninstall deeptutor python -m pip uninstall deeptutor-cli
หาก virtual environment ถูกสร้างขึ้นสำหรับ DeepTutor เท่านั้น ให้ลบผ่าน environment manager ของคุณ สำหรับการติดตั้งจาก source ให้ deactivate environment, ออกจาก source directory และรัน
git status --shortภายใน checkout ที่ตรงกันนั้น ย้าย checkout ไปยัง Trash/Recycle Bin หลังจากยืนยันแล้วเท่านั้นว่าไม่มีงานที่ไม่เกี่ยวข้องหรือยังไม่ได้ commit -
สำหรับเส้นทาง Docker ให้ตรวจสอบ container และ named volume ที่ตรงกันก่อนลบ การลบ volume จะลบข้อมูลที่ Docker จัดการอย่างถาวร:
docker ps -a --filter name=^/deeptutor$ docker volume inspect deeptutor-data docker rm -f deeptutor docker volume rm deeptutor-data
เริ่มต้นด้วยพื้นผิวหลักที่คุณจะใช้ทุกวัน: Chat, Partners, My Agents, Co-Writer, Book, Knowledge Center, Learning Space, Memory และ Settings จากนั้นจะครอบคลุมการปรับใช้ Multi-User สำหรับ workspace แบบแชร์และแยกส่วน
หากคำตอบทำข้อกำหนดก่อนหน้าหลุดหาย, อ้างหลักฐานที่อ่อน หรือไม่สอดคล้องกับสื่อที่เลือก ให้รวบรวมข้อมูลวินิจฉัยตาม REASONING_SAFETY_CHECKLIST.md ก่อนเปิด issue
💬 Chat — ลูป Agent ที่คุณใช้จริง
Chat คือความสามารถเริ่มต้นและสถานที่ที่งานส่วนใหญ่เริ่มต้น thread เดียวสามารถพูดคุยตามปกติ, เรียกเครื่องมือ, อ้างอิงใน knowledge bases ที่เลือก, อ่านไฟล์แนบ, สร้างรูปภาพ, ปรึกษา subagents, เขียน notebook records และดำเนินการต่อด้วยบริบทเดียวกันตลอด turns
ลูปนั้นเรียบง่ายโดยเจตนา: model คิดในรอบ ๆ, เรียกเครื่องมือเมื่อมีประโยชน์, สังเกตผลลัพธ์ และจบด้วยข้อความที่ไม่มีเครื่องมือ ask_user เป็นพิเศษ — แทนที่จะเดา agent สามารถหยุด turn, ถามคำถามชี้แจงที่มีโครงสร้าง และดำเนินการต่อเมื่อคุณตอบ
เครื่องมือที่ผู้ใช้สลับได้ ได้แก่ brainstorm, web_search, paper_search, reason, และ geogebra_analysis — รวมถึง imagegen และ videogen เมื่อคุณกำหนดค่าโมเดลสร้างที่ตรงกัน เครื่องมือตามบริบทเช่น rag, kb_files, read_source, read_memory, write_memory, read_skill, load_tools, exec, web_fetch, ask_user, list_notebook, write_note, question_bank, github, และ consult_subagent จะ mount อัตโนมัติเมื่อ turn มีบริบทที่ถูกต้อง
บริบทมีสองประเภท: sticky session context (capability, workspace หรือ course, tools, knowledge bases, persona, model และสถานะ Reading / Mastery) คงอยู่ตลอด turns; one-time references (ไฟล์, ประวัติ chat, หนังสือ, ส่วนการอ่าน, notebooks, question bank, imported agents) มาจากเมนู + สำหรับ turn เดียว ปุ่ม voice ทำหน้าที่ถอดเสียงเฉพาะข้อความปัจจุบัน
Home ทำให้ Chat, Ask Questions, Quiz และ Visualize อยู่ห่างเพียงคลิกเดียว; Research, Solve และ Immersive Watching อยู่ภายใต้ More Capabilities Mastery Path และ Immersive Reading เป็น workspace เฉพาะในแถบด้านข้าง; Reading เพิ่ม citations ที่ตรวจสอบแล้วและคลิกได้, citations และ notes ที่บันทึกไว้, การอ่านออกเสียง / คำแนะนำการเรียน / คำศัพท์ / quiz / การแปลที่อ้างอิง source และการบันทึกลง notebook ขณะที่ Course Study มีบริบทที่ผูกกับ course ของตัวเอง
🤝 Partner — เพื่อนถาวรบนสมองเดียวกัน
Partners คือเพื่อนถาวรที่มี soul, นโยบาย model, ห้องสมุด, memory และช่องทางของตัวเอง พวกเขาไม่ใช่เอ็นจิน bot แยกต่างหาก: ทุกข้อความ web หรือ IM ที่เข้ามาจะกลายเป็น turn ปกติของ ChatOrchestrator ภายใน workspace ที่มีขอบเขต partner partner คือ "chat ที่มีบุคลิกภาพและหมายเลขโทรศัพท์"
แต่ละ partner มี SOUL.md, การเลือก model, ช่องทาง, นโยบายเครื่องมือ และห้องสมุดที่กำหนด Knowledge bases, skills และ notebooks ถูกคัดลอกไปยัง data/partners/<id>/workspace/ ดังนั้น RAG, skill, notebook และเครื่องมือ memory เดิมทำงานได้โดยไม่มีกรณีพิเศษ ผู้ใช้ที่ผ่านการยืนยันตัวตนและไม่ใช่ admin จะมี Partner sessions และ relationship memory แบบส่วนตัว ขณะที่ Partner อ่าน personal memory ของพวกเขาแบบ read-only; traffic ของ admin, group และที่ไม่ผูกบัญชีจะใช้ shared Partner scope
ชั้น channel ที่ขับเคลื่อนด้วย schema สามารถเชื่อมต่อกับแพลตฟอร์ม IM ได้แก่ Feishu, Telegram, Slack, Discord, DingTalk, QQ/NapCat, WeCom, WhatsApp, Zulip, Mattermost, Matrix, Mochat และ Microsoft Teams ขึ้นอยู่กับ extras ที่ติดตั้งและ credentials ที่กำหนดค่า partner ยังสามารถเชื่อมต่อเป็น subagent และปรึกษาได้จาก chat turn ปกติ — ดู My Agents ด้านล่าง
เพื่อการตั้งค่าที่รวดเร็วขึ้น หน้า channel ของ Partner สามารถสร้างแอป Feishu/Lark หรือ WeCom AI bot หรือลงชื่อเข้าใช้บัญชี WeChat ส่วนตัว ผ่านการสแกน QR ที่วาดในเบราว์เซอร์แทนที่จะอยู่ใน server log Feishu/Lark จะตรวจจับ account domain และบันทึกผู้ใช้ที่สแกนเป็นผู้ส่งที่ได้รับอนุญาตเริ่มต้น WeCom จะคง allowlist ที่มีอยู่ไว้ และหากไม่มีจะ default เป็นผู้ใช้ทุกคนที่เข้าถึง bot ได้ พร้อมคำเตือน open-access ที่มองเห็นได้ชัดเจน; ฟอร์ม channel แบบ manual ยังคงใช้งานได้หากโปรโตคอลการสแกนของ provider เปลี่ยนไป
🧑🚀 My Agents — ปรึกษาและนำเข้า Agents อื่น ๆ
My Agents เปลี่ยน agent อื่น ๆ ให้กลายเป็นบริบทสำหรับ DeepTutor และทำสองสิ่งที่แตกต่างกัน เชื่อมต่อ agent แบบสด — Claude Code, Codex, Antigravity, Kimi, opencode, MiMo Code, Hermes Agent, OpenClaw หรือ DeepSeek Harness บนเครื่องของคุณ หรือหนึ่งใน Partners ของคุณ — และปรึกษามันจากภายใน chat turn: DeepTutor จริง ๆ รัน agent อื่นและ stream งานเข้าสู่แผง Activity ผ่านเครื่องมือ consult_subagent เลือก agent และขีดจำกัดจำนวนรอบด้วย Agent chip หรือใช้ @ กรองรายการ agent ที่เชื่อมต่อชุดเดียวกัน; การเลือกนี้จะผูกติดกับ session
นำเข้าบทสนทนาในอดีต — นำประวัติ Claude Code และ Codex ที่มีอยู่ของคุณมาเป็น agent ที่มีชื่อ, ค้นหาได้ และสามารถดำเนินการต่อได้ เลือกประวัติ Claude ตาม project / working directory และประวัติ Codex ตามวันที่ในปฏิทิน; การรีเฟรชจะ re-sync ขอบเขตนั้นและดึงบทสนทนาใหม่เข้ามา อ้างอิงรายการหนึ่งจาก Chat turn ผ่าน + → My Agents และ DeepTutor จะอ่านมันเป็น transcript ของบุคคลที่สาม — มันยังคงเป็นบทสนทนา ของพวกเขา ไม่ใช่เสียงของ DeepTutor เอง
✍️ Co-Writer — การร่าง Markdown ที่รับรู้การเลือก
Co-Writer คือ workspace Markdown แบบ split-view สำหรับรายงาน, บทเรียน, บันทึก และ artifacts การเรียนรู้แบบยาว เอกสารบันทึกอัตโนมัติและแสดงตัวอย่างสด (คณิตศาสตร์ KaTeX, diagram fences) และสามารถบันทึกกลับเข้า notebooks เมื่อร่างกลายเป็นบริบทที่นำมาใช้ซ้ำได้ นำเข้า .docx เพื่อเริ่มร่างใหม่ และส่งออกตัวแก้ไขปัจจุบันเป็น Markdown หรือ Word
แนวคิดหลักคือ การแก้ไขแบบผ่าตัด: เลือกช่วงและขอให้ DeepTutor เขียนใหม่, ขยาย หรือย่อ agent การแก้ไขสามารถอ้างอิงการเปลี่ยนแปลงจาก knowledge base หรือหลักฐานเว็บ และเก็บ trace ของ tool calls หาก draft ไม่เปลี่ยนระหว่างทำงาน ผลลัพธ์จะแทนที่ข้อความที่เลือกโดยตรงและยังย้อนกลับได้ด้วย Undo
📖 Book — หนังสือมีชีวิตจากเนื้อหาของคุณ
Book แปลงแหล่งที่มาที่เลือกให้เป็น หนังสือมีชีวิต แบบโต้ตอบ — ไม่ใช่ PDF แบบคงที่ แต่เป็นสภาพแวดล้อมการอ่านที่สร้างจาก typed blocks หนังสือสามารถเริ่มจาก knowledge bases, notebooks, question banks หรือประวัติ chat; ขั้นตอนการสร้างจะเสนอ outline บทก่อนที่จะสร้างเนื้อหา ดังนั้นคุณจะตรวจสอบรูปร่างแทนที่จะยอมรับ output แบบ one-shot ที่มองไม่เห็น
แต่ละบทคอมไพล์เป็น typed blocks ที่แก้ไขได้ — text, callouts, quizzes, flash cards, timelines, code, figures, interactive HTML, animations, concept graphs, deep dives และ user notes — พร้อม Page Chat ของบทนั้นเอง คุณสามารถแทรก, ย้าย, สร้างใหม่, เขียนใหม่ หรือสลับประเภท block ได้; ข้อความบางช่วงที่เลือกไว้จะเข้าสู่กล่องรายการ learning capture สำหรับตรวจทาน ความคืบหน้า, bookmarks, ครั้งที่ทำ quiz, captures และ Page Chat ยังคงเป็นส่วนตัวสำหรับผู้อ่านแต่ละคน แม้หนังสือจาก admin จะถูกแชร์แบบอ่านอย่างเดียวหรือเปิดให้แก้ไขร่วมกัน; การลบหนังสือที่แชร์ยังคงทำได้เฉพาะ admin หนังสือทุกเล่ม export เป็น Markdown ได้, การคอมไพล์ที่ใช้เวลานานหยุดพักและทำต่อได้ และ deeptutor book health / refresh-fingerprints จะตรวจจับความเปลี่ยนแปลงของแหล่งข้อมูล
📚 Knowledge Center — ไลบรารี RAG หลายเอ็นจิน
Knowledge bases คือคอลเลกชันเอกสารที่อยู่เบื้องหลัง RAG — รองรับ Chat turns, Co-Writer edits, Book generation และบทสนทนา Partner สิ่งที่โดดเด่นคือ การเลือกเอ็นจิน retrieval: LlamaIndex (ค่าเริ่มต้น, hybrid vector + BM25 พร้อม cross-encoder reranking แบบเสริม และ FAISS indexes แบบ exact-flat หรือ HNSW), PageIndex (reasoning retrieval พร้อม page-level citations, hosted หรือ self-hosted OSS), GraphRAG และ LightRAG (knowledge-graph retrieval), LightRAG Server (retrieval ที่ offload ไปยัง LightRAG instance ภายนอกที่คุณเชื่อมต่อผ่าน HTTP), WeKnora (retrieval จาก knowledge base ใน deployment แบบ self-hosted ของคุณ โดยไม่มี local index หรือสำเนาเอกสาร), Tencent IMA (ไลบรารีที่คุณคัดสรรใน IMA — ค้นหา เรียกดู และเขียนกลับผ่าน OpenAPI ของมัน), MarginNote 4 (ข้อมูลการเรียนใน MN4 ของคุณ — เอกสาร ข้อความที่คัดไว้ การ์ด mind-map และความเชื่อมโยงระหว่างสิ่งเหล่านั้น — ที่ถูกส่งเข้ามาโดย Add-on ของแอปและนำทางได้ด้วยเครื่องมือเฉพาะ) หรือ Obsidian vault ที่เชื่อมโยง tutor อ่านและเขียนในที่ KB แต่ละอันถูกผูกกับเอ็นจินหนึ่ง
กำลังย้ายไลบรารี Obsidian, Hermes หรือ Markdown ที่มีอยู่ใช่ไหม ดู คู่มือการย้ายข้อมูล Knowledge สำหรับเส้นทางแบบ connected-vault และ indexed-copy
เมื่อสร้าง KB คุณ สร้างใหม่ (อัพโหลดเอกสารและสร้าง index ใหม่) หรือ เชื่อมโยงที่มีอยู่ (นำ index ที่สร้างไว้มาใช้ซ้ำ อ่านในที่โดยไม่ต้อง re-index) KB ยังสามารถติดตาม GitHub repositories (repo, branch, glob) หรือ URL ของเว็บไซต์เอกสาร (จำกัดความลึกในการ crawl และจำนวนหน้า) ได้; การ sync ตามต้องการจะเปรียบเทียบ hash ของเนื้อหาที่เพิ่ม เปลี่ยนแปลง และลบ เพื่อให้เอกสารที่ติดตามทันสมัยอยู่เสมอโดยไม่ต้องอัพโหลดใหม่ การ re-indexing จะเขียน directory version-N ใหม่และเก็บอันก่อนหน้าไว้ ดังนั้น index ที่ทำงานอยู่จะไม่ถูกทำลายระหว่างการสร้างใหม่ สามารถลบเอกสารหนึ่งรายการได้แม้ KB จะอยู่ในสถานะ error — ตัดไฟล์ที่แยกวิเคราะห์ไม่สำเร็จออกโดยไม่ต้องลบและสร้างใหม่ทั้งหมด การแยกวิเคราะห์เอกสาร — Text-only, MinerU, Docling, Tika, markitdown, PyMuPDF4LLM หรือ LiteParse — ถูกเลือกใน Settings → Knowledge Base โดยการดาวน์โหลด local model ปิดโดยค่าเริ่มต้น Docling ยังสามารถรันในโหมด remote กับเซิร์ฟเวอร์ Docling Serve ได้ (ไม่ต้องติดตั้ง local หรือใช้ model ใด ๆ) โดยถูกกำหนดค่าผ่าน Settings → Document Parsing (mode=remote, server base URL และ API key ที่เป็นทางเลือก) หรือผ่าน environment variables DOCLING_MODE / DOCLING_API_BASE_URL / DOCLING_API_TOKEN Tika ทำงานในโหมด remote เท่านั้นและชี้ไปยังเซิร์ฟเวอร์ Apache Tika ที่กำหนดค่าไว้ในหน้านั้น CLI ครอบคลุม lifecycle ด้วย list/info/create/add/search/set-default/delete, คำสั่งเพิ่ม/ลบ source, list-sources และ sync
เอ็นจิน LightRAG ในตัวติดตั้งด้วย pip install 'deeptutor[rag-lightrag]' ส่วนเสริมนั้นมี SDK LightRAG ที่รองรับอยู่ แต่ไม่ได้ติดตั้ง MinerU เลือก MinerU แยกต่างหากใน Document Parsing แล้วกำหนดค่าโหมด cloud ของมันหรือติดตั้ง local CLI เวอร์ชันปัจจุบันเมื่อต้องการการแยกวิเคราะห์แบบมีโครงสร้าง MinerU รองรับ PDF, รูปภาพ raster ทั่วไป, DOCX, PPTX และ XLSX; คำสั่ง magic-pdf แบบ legacy ยังคงรองรับเฉพาะ PDF เท่านั้น Text-only และเอ็นจินแยกวิเคราะห์อื่น ๆ ไม่จำเป็นต้องใช้ MinerU
🌐 Learning Space — Skills, Personas และบริบทที่นำมาใช้ซ้ำได้
Learning Space คือชั้น library, organization และ personalization Conversations & Materials เก็บ Chat History, notebooks — ซึ่ง records สามารถย้ายหรือคัดลอกระหว่าง notebooks และ export เป็น Markdown ได้ — รวมถึง question bank ที่เก็บคำตอบของคุณ, คำตอบอ้างอิง และคำอธิบาย Personalization เก็บ personas, skills (SKILL.md playbooks), MCP Services แบบคลิกเดียว และ CLI Apps จาก catalog CLI-Anything โดยแต่ละรายการมีคู่มือการใช้งานที่โหลดตามต้องการ workspace My Courses ที่แยกออกมาจะจัดกลุ่มบทสนทนาตามวิชาและ tutor threads; asset แต่ละรายการจะแสดงเฉพาะในเวิร์กโฟลว์ที่รองรับเท่านั้น
คุณไม่จำเป็นต้องเขียน skill ทุกอันเอง — นำเข้าจาก EduHub จะเรียกดู catalog ชุมชนและดาวน์โหลด skill ตรงเข้า library ผ่านประตูความปลอดภัย (ดู ระบบนิเวศ)
🧠 Memory — การปรับแต่งส่วนบุคคลที่ตรวจสอบได้
Memory คือระบบไฟล์สามชั้นที่คุณอ่าน, จัดการ และตรวจสอบได้ — โดยเจตนาไม่ใช่ vector store ที่ซ่อนอยู่ L1 คือ workspace mirror พร้อม append-only event trace (trace/<surface>/<date>.jsonl); L2 คือข้อเท็จจริงที่จัดการต่อพื้นผิว (L2/<surface>.md) พร้อมการอ้างอิงถึงเอนทิตี L1; L3 คือการสังเคราะห์ข้ามพื้นผิว (L3/<profile|recent|scope|preferences>.md) ที่บันทึกพื้นผิว L2 ซึ่งมีส่วนร่วม
Memory Graph แสดงพีระมิดทั้งหมด — การสังเคราะห์ L3 ที่ศูนย์กลาง, L2 ในวงกลาง, L1 traces ด้านนอก — พร้อมเส้นเชื่อมหลักฐาน L2 → L1 ที่ตรงตัว และลิงก์ L3 → พื้นผิวที่มีส่วนร่วม Memory ถูกติดตามใน surfaces: chat, notebook, quiz, kb, book, partner และ cowriter; งบประมาณ Update / Audit / Dedup ของ consolidator ปรับได้ใน Settings → Memory
⚙️ Settings — Control Plane เดียว
Settings คือ control plane การดำเนินงาน พร้อม live status strip (สถานะ Backend และ resident memory ที่ใช้งานอยู่ทั่วทั้ง process tree) และตัวนำทางแบบค้นหาได้ที่คงอยู่ตลอด เข้าถึงหน้าใดก็ได้ในคลิกเดียว: Appearance (ธีม, ภาษา UI และภาษา output ของ model, การจัดรูปแบบ code block), Network (API base, ports, CORS), Models (Connections, LLM, Task models, Embedding, Search, Text-to-Speech, Speech-to-Text, Image Generation, Video Generation), Knowledge Base (เอ็นจินการแยกวิเคราะห์เอกสาร), Chat (Video Learning, เครื่องมือที่ค้นหาได้, พารามิเตอร์ต่อความสามารถ, จุดเริ่มต้น, ขีดจำกัดไฟล์แนบ), Partners & Agents (agent harness ในเครื่องเก้ารายการ), Learner profile (อายุ, ระดับชั้น, หลักสูตร, ภาษา, ระดับการอ่าน, รูปแบบการอธิบาย), Guardian (ผู้เรียนที่ได้รับอนุญาต, สื่อ, รายงาน, การรีเซ็ต credentials), Memory (งบประมาณของ consolidator) และ About (การตรวจสอบเวอร์ชันและการอัปเดตอย่างปลอดภัย) connection หนึ่งรายการเก็บ credential ของ vendor เดียวและ mirror มันเข้าสู่ทุกบริการที่ vendor นั้นให้บริการได้ ดังนั้นคุณกรอก key เพียงครั้งเดียวแทนที่จะต้องวางซ้ำในห้าหน้า; task models ปักหมุด model ที่เล็กและเร็วสำหรับงานที่ไม่มีใครร้องขอ — ตั้งชื่อบทสนทนา, เขียนจุดเริ่มต้นของ composer — และจะ resolve กลับไปเป็นค่าเริ่มต้นที่ใช้งานอยู่เมื่อปล่อยว่างไว้
Video Learning ภายใต้ Settings → Chat ใช้ YouTube IFrame Player อย่างเป็นทางการที่เพิ่มความเป็นส่วนตัวเป็นค่าเริ่มต้น หากต้องการให้การเล่นอยู่ในระบบ local ให้ตั้งค่า Invidious API origin ที่ผู้ดูแลระบบจัดการ (ตัวอย่างเช่น http://127.0.0.1:3000), ทดสอบ, เลือก Invidious แล้วบันทึก วิดีโอใหม่หรือวิดีโอที่เปิดอีกครั้งจะใช้ provider ทันทีโดยมี material ID และความคืบหน้าเดิม สื่อ Invidious จะ stream ผ่าน byte-range proxy ของ DeepTutor; upstream URLs จะไม่ถูกเปิดเผยต่อเบราว์เซอร์หรือเก็บไว้บนดิสก์ หาก instance ล้มเหลว DeepTutor จะยังคงออฟไลน์จาก YouTube จนกว่าผู้เรียนจะเลือก fallback ไปยัง native YouTube อย่างชัดเจน การสอนพิเศษจากคำบรรยายสาธารณะเป็นทางเลือก: ติดตั้ง .[video-learning]; การเล่นยังคงทำงานได้หากไม่มี ส่วน Explain here ที่อิง transcript จะถูกปิดใช้งานพร้อมระบุเหตุผล
ส่วนส่วนใหญ่ใช้ draft-and-apply flow เพื่อให้คุณทดสอบ provider ก่อนยืนยัน คุณยังสามารถแค่ถามใน Chat ได้เช่นกัน: ผู้ช่วยจะอ่านการกำหนดค่าปัจจุบัน, ใช้การเปลี่ยนแปลง และบอกว่าจำเป็นต้องรีสตาร์ทหรือ re-index หรือไม่ — โดยทดสอบ model ใหม่ก่อนที่จะยืนยัน จึงไม่สามารถเปลี่ยนตัวเองไปยังสิ่งที่เข้าถึงไม่ได้ API keys จะไม่ผ่านเข้าไปใน model เลย ซึ่งจะเปิดฟอร์มที่ตรงกันให้คุณแทน ธีมสี่แบบมาในกล่อง — Default, Cream, Dark และ Glass ไฟล์ .env ที่ root ของโปรเจกต์ถูกเพิกเฉยโดยเจตนา; การกำหนดค่า runtime อยู่ใน data/user/settings/*.json เว้นแต่ DEEPTUTOR_HOME หรือ deeptutor start --home จะชี้แอปไปที่อื่น
OpenAI Codex OAuth (ทดลอง) การเลือก OpenAI Codex ภายใต้ Models → LLM จะแทนที่ช่อง API key ด้วยการลงชื่อเข้าใช้ผ่านเบราว์เซอร์ที่รันกับแผน ChatGPT ของคุณเอง จึงไม่จำเป็นต้องใช้ OPENAI_API_KEY Tokens อยู่เฉพาะใน data/system/user-secrets/<owner>/private/openai-codex/ — ในการปรับใช้แบบ multi-container ด้วย Compose จะอยู่นอกเหนือทุก tree ที่ exec sandbox สามารถเข้าถึงได้ — และ DeepTutor จะไม่อ่านหรือแก้ไข ~/.codex CLI login ของคุณเลย รายการ model มาจาก catalog แบบสดของบัญชีนั้น; การลงชื่อเข้าใช้จะเผยแพร่โปรไฟล์ แต่จะกลายเป็น model ที่ใช้งานอยู่ก็ต่อเมื่อยังไม่มีการกำหนดค่า LLM ใด ๆ เท่านั้น จึงไม่มีทางเปลี่ยนทิศทางของการปรับใช้โดยที่คุณไม่รู้ตัว เนื่องจาก token อนุญาตให้ใช้แผนของคนคนเดียว โปรไฟล์นี้จึงไม่สามารถแชร์ผ่าน per-user grants ได้ — แต่ละบัญชีต้องลงชื่อเข้าใช้ด้วยตัวเอง รวมถึงผู้ใช้ทั่วไปด้วย: การ์ดของพวกเขาจะอยู่ภายใต้ Models → LLM และ models, catalog และการลงชื่อออกที่ได้จะเป็นส่วนตัวเฉพาะบัญชีนั้นเท่านั้น
การปรับใช้ Docker และ Podman บนเครื่อง local แบบเริ่มต้นใช้ loopback network แยกจากกัน และต้องการสะพานเชื่อมชั่วคราวระหว่างการลงชื่อเข้าใช้ ทำตาม คู่มือสะพานเชื่อม Codex OAuth ชั่วคราวสำหรับเครื่อง local สำหรับคำสั่ง Docker, Compose, Podman และ teardown ที่แน่นอน
สำหรับการปรับใช้แบบ remote localhost ของเบราว์เซอร์และ localhost ของเซิร์ฟเวอร์คือคนละเครื่องกัน ดังนั้น reverse proxy ธรรมดาเพียงอย่างเดียวไม่สามารถส่ง callback แบบ localhost ของเบราว์เซอร์ไปถึงเซิร์ฟเวอร์ได้ ให้ใช้ SSH tunnel เป็นสะพานเชื่อม callback ตัว tunnel จะไปถึงพอร์ต Web ที่เผยแพร่อยู่แล้ว; Next.js จะ rewrite เฉพาะ callback path ที่ตรงเป๊ะไปยัง public callback broker เท่านั้น และ broker จะตรวจสอบ state ก่อนที่จะ route ไปยัง OAuth operation ต้นทาง callback listener ยังคงอยู่ที่ backend loopback พอร์ต 1455 และ 1457 จะไม่ถูกเผยแพร่ และเส้นทางนี้รองรับ Docker bridge network เริ่มต้น
ssh -N -L 1455:127.0.0.1:3782 <ssh-user>@<server-host>หาก DeepTutor รายงาน callback port สำรอง 1457 ให้ใช้:
ssh -N -L 1457:127.0.0.1:3782 <ssh-user>@<server-host>รันเฉพาะคำสั่งเดียวที่ตรงกับ callback port จริงเท่านั้น อย่ารันทั้งสองคำสั่ง 3782 เป็นเพียงพอร์ต Web ตัวอย่าง: มันคือพอร์ต frontend/container ที่กำหนดค่าไว้ซึ่งรายงานเป็น callback_forward_port ค่านั้นไม่ได้รับประกันว่าพอร์ตเดียวกันจะ listen อยู่ที่ 127.0.0.1 ของ SSH host หาก Docker หรือ Podman เผยแพร่พอร์ต host ที่แตกต่างออกไป หรือ reverse proxy listen อยู่ที่พอร์ตอื่น ให้แทนที่เฉพาะพอร์ตปลายทางด้านขวา (3782 ด้านบน) ด้วยพอร์ต Web ที่ listen อยู่จริงที่ 127.0.0.1 ของ SSH host; คงพอร์ต callback ด้านซ้ายไว้เป็น 1455 หรือ 1457 <server-host> คือ SSH host ที่เป็นเจ้าของพอร์ตที่ listen นั้นผ่าน loopback หากเบราว์เซอร์ URL ระบุชื่อ reverse proxy หรือ load balancer ให้แทนที่ด้วย SSH frontend host ที่ถูกต้อง
CLI จะพิมพ์คำสั่ง tunnel ออกมาแล้วพยายามเปิดเบราว์เซอร์ทันที สำหรับการปรับใช้แบบ remote ให้เปิดหน้า authorization ค้างไว้โดยยังไม่กดยืนยัน สร้าง tunnel ที่พิมพ์ออกมาในอีก terminal หนึ่ง แล้วค่อยดำเนินการ authorization ต่อ
การตรวจจับ remote topology มีข้อจำกัดที่ขอบเขต localhost หาก Web เองถูกเข้าถึงผ่าน SSH หรือ IDE localhost forward เบราว์เซอร์จะไม่สามารถบอกได้ว่าเซิร์ฟเวอร์อยู่ remote สำหรับ Web operation ปัจจุบัน ให้เปิดหน้า authorization ของมันค้างไว้โดยยังไม่เสร็จสมบูรณ์ อ่าน redirect_uri ใน authorize URL ของ operation นั้นเพื่อระบุ callback port 1455 หรือ 1457 แล้วสร้าง tunnel ตัวที่สองจากพอร์ต local นั้นไปยังพอร์ต Web จริง หรืออีกทางหนึ่งคือยกเลิก Web operation นั้นแล้วเริ่ม operation ใหม่ด้วย CLI; ผลลัพธ์ของ CLI เป็นของ operation ใหม่และต้องไม่นำไปใช้กับ Web operation เดิม ข้อผิดพลาดเรื่อง quota และความล้มเหลวของ catalog จะถูกรายงานตามจริงและจะไม่ตกกลับไปใช้ provider แบบเสียเงินแทนเด็ดขาด เส้นทาง compatibility นี้ยังอยู่ในขั้นทดลอง: อินเทอร์เฟซต้นทางอาจเปลี่ยนแปลงได้
👥 Multi-User — การปรับใช้แบบแชร์ · auth แบบเสริม, workspace ต่อผู้ใช้แบบแยกส่วน
การยืนยันตัวตน ปิดอยู่โดยค่าเริ่มต้น — DeepTutor ทำงานแบบผู้ใช้คนเดียว เปิดใช้งานและ tree data/ หนึ่งจะโฮสต์ workspace ของ admin, workspace ต่อผู้ใช้แบบแยกส่วน และ workspace ของ partner ไว้ด้วยกัน:
data/
├── user/ # Admin workspace + global settings
├── users/<uid>/ # Per-user scope: chat history, memory, notebooks, KBs
├── partners/<id>/workspace/ # Partner (synthetic-user) scope
├── cli-apps/ # Installed CLI apps, mounted read-only into the sandbox
└── system/ # auth · grants · audit · user-secrets/<owner> (OAuth tokens)
ผู้ใช้คนแรกที่ลงทะเบียนจะกลายเป็น admin และเป็นเจ้าของ model catalogs, provider credentials, shared knowledge bases, skills, หนังสือที่แชร์ซึ่งเป็นต้นฉบับกลาง และ per-user grants ผู้ใช้ local ที่ admin สร้างจะเลือก Standard, Learner หรือ Custom โดย Learner จะล็อก learning capabilities และนโยบายสื่อ, เพิ่ม adaptive profile และรองรับ device credentials ที่เพิกถอนได้พร้อมวันหมดอายุและขีดจำกัดรายวัน; guardians ที่ได้รับอนุญาตสามารถดูรายงาน, อนุมัติสื่อ และรีเซ็ต credentials ได้ ผู้ใช้อื่นจะได้รับ workspace แบบแยกส่วนพร้อมสิทธิ์เข้าถึง models, KBs, skills, Partners และหนังสือที่แชร์แบบมีขอบเขต โดยไม่ได้รับ API keys ดิบ หาก auth.json มี username + password_hash อยู่แล้ว บัญชีนั้นคือ admin: /register จะยังคงปิดอยู่ และบัญชีที่สร้างจาก /admin/users จะเป็น role=user เสมอจนกว่าคุณจะเลื่อนสิทธิ์
เปิดใช้งาน: เปิด auth ใน data/user/settings/auth.json, รีสตาร์ท deeptutor start, ลงทะเบียน admin คนแรกที่ /register จากนั้นเพิ่มผู้ใช้จาก /admin/users และกำหนด models, KBs, skills, Partners, นโยบาย tool/MCP/CLI-app และสิทธิ์การรันโค้ดผ่าน grants; กำหนดค่าหนังสือที่แชร์ในแผง Book access ของผู้ใช้แต่ละคน
PocketBase ยังคงเป็น integration สำหรับผู้ใช้คนเดียว — เว้น
integrations.pocketbase_urlว่างสำหรับการปรับใช้ multi-user เว้นแต่คุณจะเชื่อมต่อ user store ภายนอก
binary deeptutor เดียว, สองวิธีเข้า: REPL แบบโต้ตอบสำหรับคนที่อยู่ใน terminal และ JSON ที่มีโครงสร้างสำหรับ agents อื่น ๆ ที่ขับเคลื่อน DeepTutor เป็นเครื่องมือ ความสามารถ, เครื่องมือ และ knowledge bases เหมือนกันทั้งสองแบบ
ขับเคลื่อนด้วยตัวเอง
deeptutor chat เปิด interactive REPL และเลือกโหมดด้วย --capability; deeptutor run <capability> "<message>" รับ capability เป็น positional argument แรกแล้วออกหลังจากหนึ่ง turn ทั้งสองรองรับ --tool, --kb และ --config
deeptutor chat # interactive 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การจัดการ workspace หลักมีให้ใช้งานที่นี่ด้วย — knowledge bases (kb), sessions (session), partners (partner), skills (skill), notebooks, memory และ config; การจัดระเบียบ course และ session ยังคงอยู่ในแอป Web รายการเต็มอยู่ด้านล่าง
ให้ agent ขับเคลื่อน
DeepTutor ถูกสร้างมาเพื่อ ดำเนินการโดย agent อื่น เพิ่ม --format json ใน run ใด ๆ และแต่ละ turn จะ stream NDJSON — หนึ่ง event ต่อบรรทัด (content, tool_call, tool_result, done, …) ทุกบรรทัดมี session_id กำกับ การรันปลอดภัยสำหรับ headless: การหยุด ask_user ที่ไม่มี TTY จะ auto-resolve ด้วยการตอบกลับว่างแทนที่จะหยุดรอ
# One shot, machine-readable
deeptutor run deep_solve "Find d/dx[sin(x^2)]" --tool reason --format json
# Chain turns in one stateful session — capture the id, reuse it
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 jsonrepo มี root SKILL.md — เอกสาร handover ~200 บรรทัดที่สอน LLM ที่ใช้เครื่องมือใด ๆ ให้รู้จัก surface ทั้งหมดในการอ่านครั้งเดียว ส่งให้ Claude Code, Codex หรือ OpenCode (พวกเขาหยิบ SKILL.md โดยอัตโนมัติ) หรือ wrap deeptutor run เป็นเครื่องมือใน LangChain / AutoGen loop สูตรเต็ม: Agent Handoff
เอกสารอ้างอิงคำสั่ง
| คำสั่ง | คำอธิบาย |
|---|---|
deeptutor init |
สร้างหรืออัพเดต data/user/settings สำหรับ workspace ปัจจุบัน |
deeptutor doctor [--online] |
ตรวจสอบว่า workspace พร้อมเริ่ม session หรือไม่; --online ยังตรวจสอบ model provider ที่กำหนดค่าไว้ด้วย, --format json พิมพ์รายงานออกมา |
deeptutor start [--home PATH] [--dev] [--detach] [--no-browser] |
เปิดตัว backend + frontend ด้วยกัน; เลือก detach หรือปิดการเปิดเบราว์เซอร์ได้ |
deeptutor stop [--home PATH] |
หยุด launcher ที่เริ่มด้วย --detach |
deeptutor serve [--port PORT] |
เริ่มเฉพาะ FastAPI backend |
deeptutor run <capability> <message> |
รัน capability turn เดียว (chat, ask_questions, deep_solve, deep_question, deep_research, visualize, math_animator, mastery_path, immersive_reading, course_study, immersive_watching); เพิ่ม --format json สำหรับ NDJSON output |
deeptutor chat |
Interactive REPL พร้อม capability, tool, KB, notebook และ history controls |
deeptutor partner list/create/start/stop |
จัดการ partners ที่เชื่อมต่อผ่าน IM |
deeptutor kb list/info/create/add/search/set-default/delete/list-sources/sync |
จัดการ knowledge bases และ sync GitHub/web sources ที่ลงทะเบียนไว้ (พร้อมคำสั่งเพิ่ม/ลบ source) |
deeptutor skill search/install/list/remove/login/logout/publish/update |
จัดการทักษะ ติดตั้งจากฮับ และเผยแพร่ของคุณเอง (eduhub:<slug> โดยค่าเริ่มต้น ดู Ecosystem) |
deeptutor memory show/clear |
ตรวจสอบ L2/L3 memory docs หรือล้าง L1/all memory |
deeptutor session list/show/open/rename/delete |
จัดการ shared sessions |
deeptutor notebook list/create/show/add-md/replace-md/remove-record |
จัดการ notebooks จากไฟล์ Markdown |
deeptutor book list/health/refresh-fingerprints |
ตรวจสอบ books และรีเฟรช source fingerprints |
deeptutor plugin list/info |
ตรวจสอบเครื่องมือและ capabilities ที่ลงทะเบียน |
deeptutor config show |
พิมพ์สรุปการกำหนดค่า |
deeptutor provider login <provider> |
Provider auth (OAuth login สำหรับ openai-codex; github-copilot ตรวจสอบ session auth Copilot ที่มีอยู่; codebuddy ตรวจสอบ auth ของ CodeBuddy SDK และเริ่ม login เมื่อจำเป็น) |
การแจกจ่าย CLI เท่านั้น
แพ็คเกจ CLI เท่านั้นอยู่ใน packaging/deeptutor-cli ใน checkout นี้ ติดตั้งจากซอร์ส:
python -m pip install -e ./packaging/deeptutor-cliยังไม่ได้เผยแพร่บน PyPI ดังนั้นส่วน เริ่มต้น หลักจึงคงเส้นทางการติดตั้งจากซอร์สไว้
DeepTutor skills ใช้รูปแบบ Agent-Skills แบบเปิด — โฟลเดอร์ที่มี SKILL.md playbook (YAML frontmatter + Markdown) และไฟล์อ้างอิงแบบเสริม ไม่มีอะไรเกี่ยวกับมันที่เจาะจงสำหรับ DeepTutor ดังนั้น registry ใด ๆ ที่พูด format นี้ก็กลายเป็นแหล่งสำหรับ library ของคุณ DeepTutor มาพร้อมกับ EduHub — registry ทักษะที่เน้นการศึกษาของเรา — เชื่อมต่อเป็นฮับเริ่มต้น
EduHub — ระบบนิเวศทักษะของ DeepTutor
EduHub คือ community hub ที่ DeepTutor เปิดตัวสำหรับแชร์ agent skills เชิงสอน — Socratic tutors, flashcard builders, essay feedback, exam blueprints, concept explainers และอื่น ๆ อีกมาก มันถูกสร้างเข้า DeepTutor ดังนั้นไม่มีอะไรต้องกำหนดค่า: slug เปล่าหรือ prefix eduhub: จะ resolve ไปยังมัน
ค้นหาและติดตั้ง — ในเบราว์เซอร์ เปิด Learning Space → Skills → นำเข้าจาก EduHub เพื่อเรียกดู catalog และดาวน์โหลด skill ตรงเข้า library จาก terminal:
deeptutor skill search "socratic tutor" # search EduHub (the default hub)
deeptutor skill install socratic-tutor # fetch → verify → register
deeptutor skill install eduhub:socratic-tutor@1.2.0 # pin a hub and a version
deeptutor skill list # local skills with their hub provenanceเผยแพร่ของคุณเอง — แพ็ค SKILL.md และแชร์กลับสู่ชุมชน:
deeptutor skill login # browser sign-in to EduHub
deeptutor skill publish ./my-skill # interactive: pick a track + tags, then upload
deeptutor skill update # roll back or release a new versionEduHub ยังเป็น registry แบบ standalone ที่เข้ากันได้กับ ClawHub ดังนั้น agents ที่ไม่ใช่ DeepTutor (Claude Code, Codex, …) สามารถใช้มันโดยตรงผ่าน CLI eduhub — npx eduhub install socratic-tutor
ประตูความปลอดภัยในการนำเข้า
ไม่ว่าแหล่งที่มาจะเป็นอะไร ทุกการนำเข้าจะผ่าน ประตูความปลอดภัยเดียวกัน ก่อนที่อะไรจะแตะ workspace ของคุณ:
- security verdict ของ registry จะถูกตรวจสอบก่อน — แพ็คเกจที่ถูกตั้งค่าสถานะจะถูกปฏิเสธเว้นแต่คุณจะส่ง
--allow-unverified; - archives จะถูก extract อย่างรัดกุมด้วยการตรวจ path traversal, จำนวน entries, ขนาด, อัตราส่วนการบีบอัด, suffix และ symlink; executable bits จะถูกลบออก ขณะที่ไฟล์ไม่มีนามสกุลยังคงได้รับอนุญาต;
- frontmatter จะถูก normalize เป็น schema ของ DeepTutor และ
always:จะถูก ลบออก ดังนั้น skill ที่ดาวน์โหลดมาไม่สามารถบังคับตัวเองเข้าสู่ system prompt ทุกอัน; - provenance — hub, version, verdict และเวลาติดตั้ง — จะถูกเขียนลง
.hub-lock.jsonสำหรับการตรวจสอบและอัพเดต
ในการปรับใช้ multi-user การนำเข้าผ่านเบราว์เซอร์จะลงใน skill layer ของผู้เรียกที่ผ่านการยืนยันตัวตน ขณะที่การติดตั้งผ่าน CLI และ admin console จะลงใน workspace ของ owner/admin; admin skills จะยังถูกซ่อนและเป็นแบบอ่านอย่างเดียวสำหรับผู้ใช้ทั่วไปจนกว่าจะได้รับ grant
รองรับ ClawHub ด้วย
เนื่องจาก DeepTutor พูดรูปแบบ Agent-Skills แบบเปิด ClawHub ทำงานเป็นแหล่งระดับ first-class ด้วย — มันถูกสร้างเข้าพร้อมกับ EduHub เลือกด้วย hub prefix:
deeptutor skill search "git release notes" --hub clawhub
deeptutor skill install clawhub:git-release-notes@1.0.1
deeptutor skill install clawhub:udiedrichsen/stock-analysisเมื่อผู้เผยแพร่หลายรายใช้ slug เดียวกัน ผลการค้นหาจะแสดงผู้เผยแพร่แต่ละรายพร้อม install ref แบบเต็มขอบเขต (clawhub:<ownerHandle>/<slug>)
เพิ่ม registries เพิ่มเติมใน data/user/settings/skill_hubs.json: entry type: "clawhub" ชี้ไปที่ HTTP API ที่เข้ากันได้ใด ๆ (ทั้ง EduHub และ ClawHub พูด API นี้), type: "command" ห่อ CLI ที่ registry ส่งมา และ "default" เลือกฮับที่ใช้สำหรับ slugs เปล่า ทั้งหมดนี้ป้อนข้อมูลผ่านประตูนำเข้าเดียวกัน
ใช้โค้ด: DEEPTUTOR20 — รับส่วนลด $20 สำหรับการสมัครสมาชิก PageIndexครั้งแรกของคุณ!
Bingxi Zhao |
Xingyu Hou |
Jiahao Zhang |
DeepTutor คือโปรเจกต์โอเพนซอร์สที่นำโดย Bingxi Zhao ภายในกลุ่ม HKUDS และพัฒนาใน รูปแบบโอเพนซอร์สอย่างสมบูรณ์ สร้างร่วมกับชุมชน จนถึงปัจจุบัน เรา ไม่มี ผลิตภัณฑ์ออนไลน์แบบชำระเงินในรูปแบบใด ๆ ติดต่อได้ที่ bingxizhao39@gmail.com สำหรับการสนทนา, ไอเดีย หรือการร่วมมือ
ขอบคุณอย่างจริงใจถึง Chao Huang, ผู้อำนวยการ Data Intelligence Lab @ HKU และเพื่อน ๆ ใน HKUDS lab สำหรับการสนับสนุนอย่างอบอุ่น — โดยเฉพาะ Jiahao Zhang, Zirui Guo และ Xubin Ren เรายังขอบคุณอย่างสุดซึ้งถึง ชุมชนโอเพนซอร์ส: stars, issues, pull requests และ discussions ของคุณกำหนดรูปร่าง DeepTutor ทุกวัน
DeepTutor ยังยืนอยู่บนไหล่ของโปรเจกต์โอเพนซอร์สที่โดดเด่นที่ให้ทั้งเครื่องมือและแรงบันดาลใจแก่เรา:
| โปรเจกต์ | บทบาท / แรงบันดาลใจ |
|---|---|
| LlamaIndex | กระดูกสันหลังของ RAG pipeline และการ indexing เอกสาร |
| nanobot | Ultra-lightweight agent engine ที่ขับเคลื่อน TutorBot ดั้งเดิม (HKUDS) |
| LightRAG | RAG ที่ง่ายและเร็ว (HKUDS) |
| AutoAgent | Zero-code agent framework (HKUDS) |
| AI-Researcher | Pipeline การวิจัยอัตโนมัติ (HKUDS) |
| OpenClaw | Open agent gateway และ skill ecosystem เบื้องหลัง ClawHub |
| Codex | Agent-native coding CLI ที่เป็นแรงบันดาลใจให้ CLI workflow ของเรา |
| Claude Code | Agentic coding CLI ที่เป็นแรงบันดาลใจให้ DeepTutor agent loop |
| ManimCat | การสร้าง animation คณิตศาสตร์ที่ขับเคลื่อนด้วย AI สำหรับ Math Animator |
เราต้องการให้ DeepTutor พัฒนาและปรับปรุงต่อเนื่อง — และสุดท้ายกลายเป็นของขวัญที่เรามอบคืนสู่ชุมชนโอเพนซอร์ส roadmap ของเราอัพเดตต่อเนื่อง โหวตรายการที่นั่นหรือเสนอรายการใหม่ หากต้องการมีส่วนร่วม ดู คู่มือการมีส่วนร่วม สำหรับกลยุทธ์ branching มาตรฐานโค้ด และวิธีเริ่มต้น
ได้รับอนุญาตภายใต้ Apache License 2.0























