Files
Bingxi Zhao (Frank)andClaude Opus 5 a7c30a588f release: v1.6.8
Twenty-two community pull requests and the reports behind them. Where
v1.6.7 chased a token budget spent on hidden thinking, this one answers
a different complaint: I did a thing and the app quietly did nothing.

New surfaces: a recycle bin that makes a deleted chat recoverable,
search across the full text of your conversation history, and
`knowledge_frontier` — a tool that reads a knowledge base and goes
looking for what is not in it.

Fixes worth naming: a reasoning model that stops mid-thought now fails
with the counters that prove it rather than an opaque error; deep book
URLs open the book instead of the library; the reading outline tracks
the page again; an EPUB that macOS re-zipped reads as the book it is; a
file whose extraction produced nothing is listed with the reason instead
of skipped in silence; the launcher stops killing a backend that is
merely still starting.

Also in this commit: README prose plus all eleven translations, the
v1.6.8 release notes with v1.6.5 archived past the one-week line, three
duplicate keys removed from the locale files (`Delete permanently` had
two different zh values, and the wrong one was winning), and the mypy
annotation that made every `conn.execute` in the new file library look
like a call on None.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 14:54:16 +08:00

64 KiB
Raw Permalink Blame History

DeepTutor 標誌 DeepTutor

DeepTutor:終身個人化學習導師

Docs — deeptutor.info  Collaborate — work with us

HKUDS%2FDeepTutor | Trendshift  HKUDS%2FDeepTutor | Trendshift  HKUDS%2FDeepTutor | Trendshift

English  简体中文  繁體中文  日本語  Español  Français  Arabic  Русский  Hindi  Português  Thai  Polski

Python 3.11+ Next.js 16 License GitHub release arXiv

Discord Feishu WeChat

主要功能 · 開始使用 · 探索 · CLI · 生態系 · 社群


🤝 我們歡迎任何形式的貢獻! 歡迎在 Roadmap 為規劃項目投票或提出新構想,並參閱貢獻指南,了解分支策略、程式碼規範與參與方式。

📰 最新消息

  • 2026-05-22 🌐 官方文件網站 deeptutor.info 正式上線 — 指南、參考資料與能力導覽集中在同一處。
  • 2026-04-19 🎉 111 天內突破 2 萬顆 Star!感謝大家對真正個人化智慧教學的支持。
  • 2026-04-10 📄 論文已登上 arXiv — 閱讀預印本,了解 DeepTutor 背後的設計與理念。
  • 2026-02-06 🚀 僅 39 天便突破 1 萬顆 Star!衷心感謝傑出的社群。
  • 2026-01-01 🎊 新年快樂!加入我們的 DiscordWeChatDiscussions — 一起塑造 DeepTutor。
  • 2025-12-29 🎓 DeepTutor 正式發布!

主要功能

DeepTutor 是代理程式原生的學習工作區,在同一個可擴充系統中串聯教學、解題、測驗生成、研究、視覺化與精熟練習。

  • 所有模式共用一套執行階段 — Chat、Ask Questions、Quiz、Research、Visualize、Solve、Course Study、Mastery Path、Immersive Reading 與 Immersive Watching 共用同一套能力執行階段與工作階段情境,同時保有針對各自用途設計的迴圈與管線。
  • 相互連結的學習情境 — 知識庫、書籍、Co-Writer 草稿、筆記本、題庫、角色設定與 Memory 可在支援這些內容的工作流程中重複使用,但仍受帳號授權與學習政策限制。
  • 沉浸式影片學習 — 貼上 YouTube 連結,即可使用隱私強化的原生播放、同步字幕、以時間戳為依據的教學,以及可續接的學習進度;管理員也能將播放切換至自架的 Invidious 執行個體,無須重新建立素材。
  • 子代理程式與 Partners — 可從 Chat 諮詢即時代理程式執行框架(Claude Code、Codex、Antigravity、Kimi、opencode、MiMo、Hermes、OpenClaw 或 DeepSeek)或 Partner、匯入過往對話,並讓持續運作的 IM 夥伴共用同一套核心。
  • 多引擎知識系統 — 透過 LlamaIndex、PageIndex、GraphRAG、LightRAG、遠端 LightRAG Server、自架 WeKnora 知識庫、Tencent IMA 或 MarginNote 4 知識庫,或連結的 Obsidian vault 建立版本化 RAG 知識庫,並支援可插拔的文件解析。
  • 可擴充的工具與技能 — 內建工具、MCP 伺服器、CLI 應用程式、影像/影片/語音生成模型,以及可從 EduHub 安裝的社群技能。
  • 可檢視的記憶 — L1 軌跡、L2 介面摘要與 L3 綜整讓個人化內容透明且可編輯;Memory Graph 會將 L2 事實連結至 L1 證據,並將 L3 綜整連結至其貢獻來源介面。

🚀 開始使用

DeepTutor 提供四種安裝方式,皆共用同一套執行環境目錄配置:私有設定會儲存在啟動目錄下的 data/user/settings/(若明確設定 DEEPTUTOR_HOMEdeeptutor start --home,則改儲存在該位置)。完整應用程式的建議流程是:選擇一個執行環境目錄 → 安裝 → deeptutor initdeeptutor start

內容工作區

**內容工作區(Content Workspace**與 DeepTutor 的私有執行環境目錄是分開的。這是代理程式可以讀取的資料夾,凡是代理程式建立的檔案、下載內容、程式碼執行結果、快取與生成的素材,都會放在依回合區分的 outputs/<capability>/<session>/<turn>/ 目錄下。Settings、API key、資料庫、Memory 與內部應用程式狀態則都不在此範圍內。

在未經設定的情況下,內容工作區位於 <執行環境目錄>/data/user/workspace。本機的 PyPI、CLI 與原始碼安裝,皆可在 Settings → Workspace 或以下列指令,選擇任何現有且可讀寫的資料夾:

deeptutor workspace show
deeptutor workspace set /absolute/path/to/my-folder
deeptutor workspace reset

每項能力都能透過內建的 workspace 工具檢視同一個資料夾。模型只會收到 outputs/... 之類的相對路徑;當它使用 workspace_present 時,UI 會顯示一個已驗證身分、可開啟的快照。同一組相對路徑,在一般的 Markdown 連結或圖片中也同樣可用。日後變更來源檔案,並不會改變已呈現的快照。

outputs/ 之外,執行動作一律唯讀。若要將生成的檔案複製到內容工作區中的其他位置,必須針對該確切的來源與目的地,明確以 Allow once 確認。系統沙箱或 Docker runner(若可用)會強制執行此邊界;本機受限制的子處理程序備援方式,則會在 Workspace 設定中顯示為盡力而為(best effort

方式一 — 從 PyPI 安裝 · 完整本機 Web 應用程式+CLI,無須 clone

完整本機 Web 應用程式+CLI,無須 clone。需要 Python 3.113.14,且 PATH 中須有 Node.js 20+ 執行階段(deeptutor start 會啟動套件內的 Next.js standalone 伺服器)。

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 open

deeptutor init 會引導你設定後端連接埠(預設 8001)、前端連接埠(預設 3782)、LLM 供應商/Base URLAPI key/模型、Knowledge BaseRAG 選用的 embedding 供應商,以及 Web Search 選用的搜尋供應商。

執行 deeptutor start 後,開啟終端機顯示的前端 URL;預設為 http://127.0.0.1:3782。在該終端機按下 Ctrl+C,即可同時停止後端與前端。若只是快速試用,也可以略過 deeptutor init;應用程式會以預設連接埠與空白模型設定啟動,之後再到 Settings → Models 設定即可。

方式二 — 從原始碼安裝 · 針對 checkout 進行開發

適合針對原始碼 checkout 進行開發。請使用 Python 3.113.14Node.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 --dev

deeptutor start 會先為本機 web/ 前端建立一次正式環境版本,之後重複使用;--dev 則會以 HMR 執行 Next.js。設定配置、連接埠與 Ctrl+C 停止方式皆與方式一相同。

Conda 環境(取代 venv
conda create -n deeptutor python=3.11
conda activate deeptutor
python -m pip install --upgrade pip
選用的額外安裝項目 — RAG 引擎/devpartnersmatrixmath-animator
pip install -e ".[rag-lightrag]"    # Built-in LightRAG engine (exact supported SDK)
pip install -e ".[graphrag]"        # Microsoft GraphRAG engine (Python 3.113.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
調整前端相依套件與開發伺服器疑難排解

變更前端相依套件: 執行 npm install --legacy-peer-deps 以更新 web/package-lock.json,接著同時提交 web/package.jsonweb/package-lock.json

開發伺服器卡住:deeptutor start --dev 回報已有前端處理程序但該處理程序沒有回應,請停止訊息中顯示的 PID。若實際上並無 Next.js 處理程序執行,代表 lock 檔已過期;移除後再試一次:

rm -f web/.next/dev/lock web/.next/lock
deeptutor start --dev
方式三 — Docker · 單一自足式容器

以單一容器執行完整 Web 應用程式。映像檔位於 GitHub Container Registry

  • ghcr.io/hkuds/deeptutor:latest — 最新穩定版本
  • ghcr.io/hkuds/deeptutor:<version> — 不含開頭 v 的確切版本(例如 :1.6.3);預先發行版本只會提供其版本標籤

如需 podmanrootless/唯讀 rootfs 部署及各安裝方式的完整指南,請參閱 CONTAINERIZATION.md

docker run --rm --name deeptutor \
  -p 127.0.0.1:3782:3782 \
  -v deeptutor-data:/app/data \
  ghcr.io/hkuds/deeptutor:latest

若要在容器啟動時選擇主機端的內容資料夾,請將它掛載到固定的容器路徑,並把 DeepTutor 鎖定到該路徑:

mkdir -p "$PWD/deeptutor-workspace/outputs"
docker run --rm --name deeptutor \
  -p 127.0.0.1:3782:3782 \
  -v deeptutor-data:/app/data \
  -v "$PWD/deeptutor-workspace:/workspace" \
  -e DEEPTUTOR_WORKSPACE_ROOT=/workspace \
  -e DEEPTUTOR_WORKSPACE_ALLOWED_ROOTS=/workspace \
  ghcr.io/hkuds/deeptutor:latest

若使用 Compose,請在執行 python scripts/docker_compose.py up -d 前設定 DEEPTUTOR_WORKSPACE_HOST=/absolute/host/folder;未設定時預設為 ./data/user/workspace。Docker 的路徑於啟動時即已選定,因此會在 Web 設定頁面中顯示為鎖定狀態。

只需要發布 3782 瀏覽器只會與前端 origin 通訊;Next.js middlewareweb/proxy.ts)會將 /api/*/ws/* 轉送到容器內部的 FastAPI 後端。發布 8001-p 127.0.0.1:8001:8001)並非必要;只有在你想直接以 curl 或指令碼呼叫 API 時才方便。

開啟 http://127.0.0.1:3782。容器會在首次啟動時建立 /app/data/user/settings/*.json;請從 Web 設定頁面設定模型供應商。設定、API key、記錄、預設的內容工作區、記憶與知識庫都會保留在 deeptutor-data volume 中;另行掛載的內容工作區則會保留在其主機路徑上。選用的額外套件應設定在部署層級,而不是在 shell 裡:設定 DEEPTUTOR_EXTRAS(系統函式庫則另設 DEEPTUTOR_APT_PACKAGES),由它啟動的每個容器都會重新套用;相較之下,docker exec … pip install 這類做法會在下一次 compose down 時消失。

  • 不同的主機連接埠: 變更各 -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 deeptutordeeptutor-data volume 會在重新啟動後保留私有的執行階段資料與預設的內容工作區;另行掛載的內容工作區則會保留在其主機路徑上。

遠端 Docker/反向代理: 瀏覽器只會與前端 origin:3782)通訊;容器內的 Next.js middleware 會在伺服器端將 /api/*/ws/* 轉送到後端。在常見的單容器情境中,完全不必設定 API base,只要將反向代理/TLS terminator 指向 :3782。只有在拆分部署(後端位於其他容器/主機)時才需要 API base:將 data/user/settings/system.json 中的 next_public_api_base 設為前端伺服器用來連接後端的網路內位址(此值只在伺服器端讀取,不會傳送至瀏覽器)。

{
  "next_public_api_base": "http://backend:8001"
}

next_public_api_base_external(及其別名 public_api_base)可作為優先順序較低的備援值。CORS 使用前端 origin,而不是 API URL。停用驗證時,DeepTutor 預設允許一般 HTTPHTTPS 瀏覽器 origin;啟用驗證時,請加入精確的前端 origin:

{
  "cors_origins": ["https://deeptutor.example.com"]
}
連接主機上的 OllamaLM Studiollama.cppvLLMLemonade

在 Docker 內,localhost 指的是容器本身,而不是主機。若要連接主機上執行的模型服務,請使用 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 指向 host.docker.internal

  • Ollama LLMhttp://host.docker.internal:11434/v1
  • Ollama embeddinghttp://host.docker.internal:11434/api/embed
  • LM Studiohttp://host.docker.internal:1234/v1
  • llama.cpphttp://host.docker.internal:8080/v1
  • Lemonadehttp://host.docker.internal:13305/api/v1

Docker DesktopmacOSWindows)通常不加 --add-host 也能解析 host.docker.internal。在 Linux 上,此旗標是在現代 Docker Engine 建立該主機名稱的可攜方式。

Linux 替代方案 — host networking 加上 --network=host 並移除 -p 旗標。容器會直接共用主機網路,因此請開啟 http://127.0.0.1:3782(或 system.json 中的 frontend_port),並以一般 localhost URL(例如 http://127.0.0.1:11434/v1)連接主機服務。請注意,host networking 會直接在主機上公開容器連接埠,且可能與既有服務衝突;若要讓它們維持在 loopback,請設定 BACKEND_HOST=127.0.0.1FRONTEND_HOST=127.0.0.1(參閱 CONTAINERIZATION.md)。

方式四 — 僅使用 CLI · 無 Web UI,從原始碼 checkout 安裝

適合不需要 Web UI 的情境。僅含 CLI 的套件須從原始碼 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 chat

deeptutor init --cli 與完整應用程式共用相同的 data/user/settings/ 配置,但會略過後端/前端連接埠提示。它仍會提供 Embedding 與 Search 選擇器(不需要時請選擇 Skip)、寫入主要的執行階段檔案(system.jsonauth.jsonintegrations.jsoninterface.jsonmodel_catalog.jsonmain.yamlagents.yaml),並會詢問目前使用的 LLM 供應商與模型。

常用指令
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 資源或伺服器相依套件。請保留原始碼 checkout,因為 editable install 會指向該處。若之後要加入 Web 應用程式,請安裝 PyPI 套件(方式一),並從相同工作區執行 deeptutor initdeeptutor start

程式碼執行沙箱(office skills · 執行模型為 docxpdf/pptxxlsx 產生的程式碼

內建的 office skillsdocxpdfpptxxlsx)會讓模型撰寫一段簡短的 Python 指令碼(python-docxreportlabopenpyxl 等),透過唯一的 exec 工具執行,再提供下載 URL。只要有啟用中的沙箱後端,該工具就會掛載。DeepTutor 會依下列順序選用已設定的最強後端:

  • Runner sidecar DEEPTUTOR_SANDBOX_RUNNER_URL 會將執行工作導向 Dockerfile.runner 所提供、經過強化且採最低權限的服務。
  • Linux bubblewrap 若可使用 bwrap,它會隔離處理程序與檔案。
  • 受限制的子處理程序備援: 本機與單一容器安裝只會在允許時採用此方式;在 Docker 下,容器本身仍是另一層隔離邊界。

data/user/settings/system.json 中的 sandbox_allow_subprocess 設定(預設 true)只控制最後一種備援方式。將其設為 false(或匯出 DEEPTUTOR_SANDBOX_ALLOW_SUBPROCESS=0),即可在沒有 runner 或 bwrap 後端時拒絕子處理程序執行;這不會停用前述較強的後端。

設定參考data/user/settings/ 下的設定檔(JSONYAML

data/user/settings/ 下的內容都是純 JSON/YAML。建議使用瀏覽器中的 Settings 頁面進行編輯。

檔案 用途
model_catalog.json 供應商連線,以及 LLM、任務、embedding、搜尋、TTS、STT、影像與影片設定檔、憑證和目前選用項目
system.json 後端/前端連接埠、公開 API base、CORS、SSL 驗證、附件目錄與上傳/擷取限制
auth.json 選用的驗證開關、使用者名稱、密碼雜湊、token/cookie 設定
integrations.json 選用的 PocketBase 與 sidecar 整合設定
interface.json UI 與模型輸出語言/主題/側邊欄偏好設定
content_workspace.json 內容工作區的資料夾綁定,以及目前使用中的工作區選擇
video_learning.json 預設 YouTubeInvidious 播放供應商、Invidious 來源與選用的逐字稿介面卡
main.yaml 執行階段行為預設值與路徑注入
agents.yaml 能力/工具的 temperature 與 token 設定

Web Search 參考來源預設會經過篩選:只會顯示未內嵌憑證、未使用異常連接埠的公開 httphttps URL。部署環境可以在 data/user/settings/system.json 中加入以教育為導向的網域政策:

{
  "web_search_source_filtering": {
    "enabled": true,
    "blocked_domains": ["spam.example"],
    "trusted_domains": ["edu.cn", "arxiv.org"]
  }
}

trusted_domains 非空時,參考來源只限於這些網域及其子網域;blocked_domains 一律優先。

專案根目錄的 .env 不會被讀取為應用程式設定檔。若只需最基本的模型設定,請開啟 Settings → Models、加入 LLM 設定檔(Base URL/API key/模型名稱)並儲存。只有在打算使用 Knowledge BaseRAG 功能時才需要加入 embedding 設定檔。

當供應商支援選擇時,LLM 與任務模型設定檔會提供 API format 設定。一般路由與備援請保留 Auto,也可以選擇 OpenAI Chat CompletionsOpenAI ResponsesAnthropic Messages;強制使用 Responses 時仍採用失敗即停止(fail-closed)策略。持久化欄位為 api_formatautoopenai_chatopenai_responsesanthropic);wire_api 則是由此衍生出的相容性狀態。每個模型可個別以 AutoSupportedNot supported 覆寫工具呼叫、影像輸入、JSON 輸出與推理控制等能力。

解除安裝與清理

DeepTutor 會將已安裝的程式碼、私有執行環境目錄與選用的內容工作區分開管理。預設情況下,執行環境目錄就是你執行 deeptutor initdeeptutor start 的目錄;--home PATHDEEPTUTOR_HOME 可覆寫此位置。私有應用程式狀態位於該目錄內的 data 子目錄,因此啟動橫幅中以 Workspace: 開頭的那一行,指出的就是這個執行環境位置。若 Settings → Workspace 指向其他資料夾,請另行備份或移除該內容資料夾;解除安裝 DeepTutor 並不會清除它,這是刻意的設計。

  1. 停止應用程式。在執行 deeptutor start 的終端機按下 Ctrl+C;若 launcher 是以 --detach 啟動,請執行 deeptutor stop [--home PATH]。刪除資料前,也請停止所有執行中的 Partner 與 detached Docker 容器。

  2. 只有在你也想清除所有本機狀態時,才移除執行階段資料。這包括設定與 API key、聊天記錄、工作階段、Memory、Notebooks、Books、Reading 狀態、Skills、Partners 狀態、記錄、Knowledge Bases、解析快取、生成的產物,以及套件化前端的執行階段快取。

    請先從啟動橫幅複製完整的 Workspace: 路徑,確認其 data 子目錄確實是預期的 DeepTutor 資料目錄。如日後可能需要其中任何內容,請先備份,再將該確切目錄移至作業系統的垃圾桶。切勿對相對路徑或尚未解析的環境變數執行遞迴刪除命令。

  3. 移除已安裝的套件。請使用與發行版相符的命令:

    python -m pip uninstall deeptutor
    python -m pip uninstall deeptutor-cli
    

    如果虛擬環境只為 DeepTutor 建立,請透過環境管理工具移除。若是從原始碼安裝,請停用環境、離開原始碼目錄,並在該確切 checkout 中執行 git status --short。確認其中沒有不相關或尚未提交的工作後,才可將 checkout 移至垃圾桶。

  4. 若使用 Docker,移除前請檢查確切容器與具名 volume。移除 volume 會永久清除 Docker 管理的資料:

    docker ps -a --filter name=^/deeptutor$
    docker volume inspect deeptutor-data
    docker rm -f deeptutor
    docker volume rm deeptutor-data
    

📖 探索 DeepTutor

先從日常最常使用的主要介面開始:Chat、Partners、My Agents、Co-Writer、Book、Knowledge Center、Learning Space、Memory 與 Settings。導覽最後會介紹用於共享且相互隔離工作區的 Multi-User 部署。

如果回答遺漏先前限制、引用薄弱證據,或與所選素材不一致,請先將診斷資料收集到 REASONING_SAFETY_CHECKLIST.md,再建立 issue。

DeepTutor 首頁 — 側邊欄包含所有功能入口的 Chat 工作區

截圖狀態: 總覽圖已更新到 v1.6.5。下方功能截圖仍是 v1.4.6 參考圖,正在分批替換;請查看截圖清單。它們適合說明工作流,不代表目前精確導覽。

🏗️ 系統架構
DeepTutor 系統架構
💬 Chat — 真正實用的代理程式迴圈

Chat 是預設能力,也是大多數工作的起點。單一對話可以進行一般交談、呼叫工具、根據選定的知識庫建立回答依據、讀取附件、生成影像、諮詢子代理程式、寫入筆記本紀錄,並在各回合之間沿用相同情境。

DeepTutor Chat 工作區

這個迴圈刻意保持簡單:模型分輪思考、在有幫助時呼叫工具、觀察結果,最後以不含工具呼叫的訊息完成回合。ask_user 比較特殊;代理程式不必猜測,而是可以暫停回合、提出結構化的釐清問題,並在你回答後繼續。

DeepTutor Chat 代理程式迴圈

使用者可切換的工具包括 brainstormweb_searchpaper_searchreasongeogebra_analysis;設定對應的生成模型後,還會有 imagegenvideogenragkb_filesknowledge_frontierread_sourceread_memorywrite_memoryread_skillload_toolsexecweb_fetchask_userlist_notebookwrite_notequestion_bankgithubconsult_subagentworkspace_listworkspace_readworkspace_searchworkspace_presentworkspace_export 等情境式工具,會在回合具有相符情境時自動掛載。

情境分成兩類:固定的工作階段情境(能力、工作區或課程、工具、知識庫、角色設定、模型,以及 Reading/Mastery 狀態)會延續到後續回合;單次參照(檔案、聊天記錄、書籍、閱讀章節、筆記本、題庫、匯入的代理程式)則從 + 選單加入,只用於單一回合。語音按鈕只會轉錄目前的訊息。

Home 讓 ChatAsk QuestionsQuizVisualize 一鍵可達;用於建立附引用報告的 Research、提供完整推理解題的 Solve,以及 Immersive Watching,則位於 More Capabilities 之下。Mastery PathImmersive Reading 是側邊欄中的專屬工作區。Reading 新增經驗證且可點擊的引用、已儲存的引文與筆記、以來源為依據的音訊/學習指南/詞彙/測驗/翻譯動作,以及擷取至筆記本的功能;Course Study 則保有自己的課程情境。

🤝 Partner — 共用同一套核心的持續型夥伴
DeepTutor Partners 工作區

Partners 是持續運作的夥伴,各自擁有 soul、模型政策、知識庫、記憶與頻道。它們不是另一套 bot 引擎;每一則從 Web 或 IM 收到的訊息,都會在限定於該 partner 的工作區內成為一般的 ChatOrchestrator 回合。Partner 就像是「擁有個性與電話號碼的聊天」。

DeepTutor Partners 架構

每個 partner 都有 SOUL.md、模型選擇、頻道、工具政策與指派的知識庫。知識庫、技能與筆記本會複製到 data/partners/<id>/workspace/,因此同一套 RAG、skill、notebook 與 memory 工具都能直接運作,無須特殊處理。已驗證的非管理員使用者擁有私有的 Partner 工作階段與關係記憶,而 Partner 只能以唯讀方式讀取其個人記憶;管理員、群組與未繫結流量則使用共享的 Partner 範圍。

各 Partner 的 IM 頻道設定

頻道層由結構描述驅動;依已安裝的額外套件與設定的憑證,可連接飛書、Telegram、Slack、Discord、釘釘、QQNapCat、企業微信、WhatsApp、Zulip、Mattermost、Matrix、Mochat 與 Microsoft Teams 等 IM 平台。Partner 也可以連接成子代理程式,並從一般聊天回合中接受諮詢;請參閱下方的 My Agents

為了更快完成設定,Partner 頻道頁面可直接在瀏覽器中繪製 QR code(而非輸出到伺服器記錄),用來建立飛書/Lark 應用程式或企業微信 AI 機器人,或登入個人微信帳號。飛書/Lark 會偵測帳號網域,並將掃碼使用者存為初始允許發送者。企業微信會保留既有的允許清單,否則預設允許所有能觸及該機器人的使用者,並顯示明顯的開放存取警告;若供應商的掃碼協定有所變更,手動頻道表單仍可使用。

🧑‍🚀 My Agents — 諮詢與匯入其他代理程式
DeepTutor My Agents 工作區

My Agents 會將其他代理程式變成 DeepTutor 的情境,並提供兩項不同功能。連接即時代理程式 — 連接你電腦上的 Claude Code、Codex、Antigravity、Kimi、opencode、MiMo Code、Hermes Agent、OpenClaw 或 DeepSeek Harness,或你的一位 Partner,並從聊天回合內諮詢它。DeepTutor 會實際執行其他代理程式,再透過 consult_subagent 工具將其工作即時串流至 Activity 面板。使用 Agent chip 選取代理程式及其回合上限,或透過 @ 篩選同一份已連接代理程式清單;這項選擇會保留在工作階段中。

即時諮詢 Claude Code 子代理程式

匯入過往對話 — 將現有的 Claude Code 與 Codex 記錄匯入為可命名、搜尋及繼續的代理程式。Claude 記錄依專案/工作目錄選取,Codex 記錄則依日曆日期選取;重新整理時會再次同步該範圍並拉取新對話。你可以在 Chat 回合中透過 + → My Agents 參照其中一段對話;DeepTutor 會將其讀作第三方逐字稿,保留為對方的對話,而不是 DeepTutor 自己的口吻。

✍️ Co-Writer — 能感知選取範圍的 Markdown 寫作
DeepTutor Co-Writer 工作區

Co-Writer 是用於報告、教學文章、筆記與長篇學習作品的分割檢視 Markdown 工作區。文件會自動儲存並呈現即時預覽(KaTeX 數學式、圖解 fences);草稿成為可重複使用的情境後,也能存回筆記本。可匯入 .docx 開新草稿,也可將目前編輯器匯出為 Markdown 或 Word。

Co-Writer 編輯器與即時預覽

它的核心概念是精準編輯:選取一段內容,請 DeepTutor 改寫、擴寫或縮短。編輯代理程式可以知識庫或 Web 證據作為修改依據,並保留工具呼叫軌跡。若代理程式工作期間草稿未發生變更,結果會直接取代所選文字,且仍可使用 Undo 復原。

📖 Book — 從你的素材建立活書
DeepTutor 書籍庫

Book 會將選定來源轉換成互動式活書;它不是靜態 PDF,而是由具型別區塊組成的閱讀環境。書籍可從知識庫、筆記本、題庫或聊天記錄建立;生成內容前,建立流程會先提出章節大綱,讓你審視整體架構,而非直接接受無從確認的單次輸出。

Book 測驗區塊   Book Manim 動畫區塊   Book 互動式元件區塊

每章都會編譯成可編輯的具型別區塊:文字、提示框、測驗、單字卡、時間軸、程式碼、圖表、互動式 HTML、動畫、概念圖、深入探討與使用者筆記,並有自己的 Page Chat。你可以插入、移動、重新生成、重寫區塊或切換其型別;選取的段落會進入可供檢視的學習摘錄收件匣。即使管理員將書籍以唯讀或共同編輯方式共享,每位讀者的進度、書籤、測驗嘗試、學習摘錄與 Page Chat 仍為私有;共享書籍仍只能由管理員刪除。任何書籍皆可匯出為 Markdown,長時間的編譯可暫停並續行,deeptutor book healthrefresh-fingerprints 會標記來源漂移。

📚 Knowledge Center — 多引擎 RAG 知識庫
DeepTutor Knowledge Center

知識庫是 RAG 背後的文件集合,可為 Chat 回合、Co-Writer 編輯、Book 生成與 Partner 對話提供依據。其特色在於可選擇檢索引擎LlamaIndex(預設,混合 vectorBM25,並可選用 cross-encoder reranking 與 exact-flat 或 HNSW FAISS 索引)、PageIndex(可推理的檢索並附頁面層級引用,支援託管式或自架 OSS)、GraphRAGLightRAG(知識圖譜檢索)、LightRAG Server(透過 HTTP 連接的外部 LightRAG 執行個體負責檢索)、WeKnora(從自架部署中的知識庫檢索,無須建立本機索引或複製文件)、Tencent IMA(在 IMA 中整理的知識庫 — 透過其 OpenAPI 進行搜尋、瀏覽與寫回)、MarginNote 4(你的 MN4 學習資料 — 文件、摘錄、思維導圖卡片及彼此之間的連結 — 由該應用程式的 Add-on 推送匯入,並透過專用工具進行導覽),或讓導師就地讀寫的已連結 Obsidian vault。每個知識庫都會繫結至單一引擎。

建立知識庫

要遷移現有的 Obsidian、Hermes 或 Markdown 知識庫嗎?請參閱 Knowledge 遷移指南,了解連結 vault 與索引副本兩種方式。

建立知識庫時,可以選擇建立新的知識庫(上傳文件並建立全新索引),或連結現有知識庫(重複使用在其他位置建立的索引、就地讀取且不重新建立索引)。知識庫也可以追蹤 GitHub repositoriesrepo、branch、glob)或文件網站 URL(限制爬取深度與頁面數量);依需求同步時會以內容雜湊差異識別新增、變更與移除的內容,因此你所追蹤的文件能保持最新,無須重新上傳。重新建立索引時,系統會寫入新的扁平 version-N 目錄並保留先前版本,因此可用索引不會在重建途中遭到破壞。即使知識庫處於 error 狀態,也能移除單一文件;可直接刪除解析失敗的檔案,無須刪除並重建全部內容。文件解析方式(Text-only、MinerU、Docling、Tika、markitdown、PyMuPDF4LLM 或 LiteParse)可在 Settings → Knowledge Base 選擇,預設不下載本機模型。Docling 也可以在**遠端(remote**模式下運作,改連線至 Docling Serve 伺服器(無須本機安裝或下載模型),可透過 Settings → Document Parsing(設定 mode=remote、伺服器基礎 URL 與選用的 API 金鑰)或 DOCLING_MODEDOCLING_API_BASE_URLDOCLING_API_TOKEN 環境變數進行設定。Tika 僅支援遠端模式,會連線至該頁面設定的 Apache Tika 伺服器。CLI 也提供對應的完整生命週期指令:list/info/create/add/search/set-default/delete、來源新增/移除指令、list-sourcessync

內建的 LightRAG 引擎可透過 pip install 'deeptutor[rag-lightrag]' 安裝;此額外套件包含明確支援的 LightRAG SDK,但不會安裝 MinerU。若需要結構化解析,請在 Document Parsing 中另行選擇 MinerU,並設定其雲端模式,或安裝目前的本機 CLI。MinerU 支援 PDF、常見點陣圖格式、DOCX、PPTX 與 XLSX;舊版 magic-pdf 仍僅支援 PDF。Text-only 與其他解析引擎不需要 MinerU。

🌐 Learning Space — 技能、角色設定與可重複使用的情境
DeepTutor Learning Space 中心

Learning Space 是資源庫、組織與個人化層。Conversations & Materials 包含 Chat History、筆記本 — 紀錄可在筆記本之間搬移或複製,並支援匯出為 Markdown — 以及保留你的答案、參考答案與解說的題庫。Personalization 包含角色設定、技能(SKILL.md 操作手冊)、一鍵安裝的 MCP Services,以及來自 CLI-Anything 型錄的 CLI Apps,每個應用程式的使用指南會按需載入。獨立的 My Courses 工作區會依科目歸納對話與導師討論串;每項資產只會出現在支援它的工作流程中。

從 EduHub 匯入技能

你不必自行撰寫每一項技能;Import from EduHub 可瀏覽社群型錄,並透過安全閘道將技能直接下載至技能庫(參閱生態系)。

🧠 Memory — 可檢視的個人化
DeepTutor Memory 總覽

Memory 是以檔案為基礎、可讀取、整理及稽核的三層系統;它刻意不使用隱藏的向量儲存區。L1 是工作區鏡像與僅附加的事件軌跡(trace/<surface>/<date>.jsonl);L2 是各介面整理後的事實(L2/<surface>.md),並附有對 L1 實體的參照;L3 是跨介面的綜整(L3/<profile|recent|scope|preferences>.md),會記錄其貢獻來源 L2 介面。

DeepTutor Memory Graph

Memory Graph 會呈現完整金字塔:L3 綜整位於中央、L2 位於中圈、L1 軌跡則在外圈,並提供精確的 L2 → L1 證據邊與 L3 → 貢獻來源介面連結。Memory 會追蹤 chatnotebookquizkbbook、partner 與 cowriter 等介面;綜整器的 UpdateAuditDedup 預算可在 Settings → Memory 調整。

⚙️ Settings — 統一控制中心
DeepTutor Settings 中心

Settings 是操作控制中心:開頭是即時狀態列(後端健康狀況與常駐記憶體)、介面與模型輸出語言,以及將每項能力評為 blocker、warning 或 suggestion 的 Readiness 矩陣;再往下是常駐顯示、可搜尋的導覽選單,一鍵即可抵達任何頁面:Appearance(主題、程式碼區塊樣式)、NetworkAPI base、連接埠、CORS)、Workspace(代理程式可讀取的資料夾及其共用的 outputs/)、Models(連線、LLM、任務模型、Embedding、Search、Text-to-Speech、Speech-to-Text、Image Generation、Video Generation)、Knowledge Base(文件解析引擎)、ChatVideo Learning、可搜尋工具、各能力參數、起始提示、附件上限)、Partners & Agents(九個本機代理程式執行框架)、Learner profile(年齡、年級、課綱、語言、閱讀程度、解說風格)、Guardian(已授權學習者、教材、報告、憑證重設)、Memory(綜整器預算),以及 About(版本檢查與安全更新)。連線會保存單一供應商憑證,並鏡射至該供應商可提供的每項服務,因此 API key 只需輸入一次,無須分別貼到五個不同頁面;任務模型會為那些沒人特別要求的工作 — 例如替對話命名、撰寫輸入框的起始提示 — 指定一個小巧、快速的模型,若留空則會回退至目前使用中的預設模型。

Video Learning 位於 Settings → Chat,預設使用官方隱私強化版 YouTube IFrame Player。若要讓播放保持在本機,請設定由管理員管理的 Invidious API 來源(例如 http://127.0.0.1:3000)、進行測試、選擇 Invidious 並儲存。新開啟或重新開啟的影片會立即採用該供應商,同時保留相同的素材 ID 與進度。Invidious 媒體會透過 DeepTutor 的 byte-range proxy 串流;上游 URL 不會暴露給瀏覽器,也不會儲存在磁碟上。若該執行個體發生故障,在學習者明確選擇原生 YouTube 備援前,DeepTutor 將維持離線而不連線至 YouTube。公開字幕教學為選用功能:安裝 .[video-learning];未安裝時仍可繼續播放,但以逐字稿為基礎的 Explain here 會停用並顯示原因。

DeepTutor 外觀設定與主題

大多數區段採用草稿後套用的流程,因此可先測試供應商再確認變更。你也可以直接在 Chat 中提出要求:助理會讀取目前設定、套用變更,並告知是否需要重新啟動或重新建立索引 — 在正式套用新模型前先行探測,因此不會把自己切換到無法連線的設定上。API key 絕不會經過模型,助理會改為替你開啟對應的表單。內建四種主題Default、Cream、Dark 與 Glass。系統會刻意忽略專案根目錄的 .env 檔案;除非 DEEPTUTOR_HOMEdeeptutor start --home 將應用程式指向其他位置,否則執行階段設定位於 data/user/settings/*.json

OpenAI Codex OAuth(實驗性功能)。 在 Models → LLM 下選擇 OpenAI Codex 後,API key 欄位會改為透過瀏覽器登入自己的 ChatGPT 方案,因此不需要 OPENAI_API_KEY。Token 只會存放在 data/system/user-secrets/<owner>/private/openai-codex/;在多容器 Compose 部署中,此位置不屬於 exec 沙箱可觸及的任何目錄,而 DeepTutor 絕不會讀取或修改 ~/.codex CLI 登入。模型清單來自該帳號的即時型錄;登入會發布設定檔,但只有在尚未設定 LLM 時,才會將其設為目前使用的模型。由於 token 授權的是個人方案,該設定檔不能透過使用者授權分享;每個帳號(包括一般使用者)都要自行登入。其卡片位於 Models → LLM,產生的模型、型錄與登出狀態也只屬於該帳號。

預設本機 Docker 與 Podman 部署各自使用獨立的 loopback 網路,登入期間需要暫時橋接。請依照暫時性本機 Codex OAuth 橋接指南,使用確切的 Docker、Compose、Podman 與拆除指令。

在遠端部署中,瀏覽器的 localhost 與伺服器的 localhost 是不同電腦,因此單靠一般反向代理,無法將瀏覽器的 localhost callback 傳送到伺服器。請使用 SSH 通道作為 callback 橋接。此通道會連到已發布的 Web 連接埠;Next.js 只將確切的 callback 路徑改寫至公開 callback brokerbroker 驗證 state 後再導向原始 OAuth 操作。Callback listener 仍位於後端 loopback14551457 不會發布;此方式支援預設 Docker bridge 網路。

ssh -N -L 1455:127.0.0.1:3782 <ssh-user>@<server-host>

若 DeepTutor 回報備援 callback 連接埠 1457,請使用:

ssh -N -L 1457:127.0.0.1:3782 <ssh-user>@<server-host>

只執行符合實際 callback 連接埠的那一個指令,絕不可同時執行兩者。3782 只是 Web 連接埠範例;實際值是回報為 callback_forward_port 的已設定前端/容器連接埠。這個值不保證 SSH 主機的 127.0.0.1 上也有相同連接埠正在監聽。若 Docker 或 Podman 發布不同的主機連接埠,或反向代理在其他連接埠監聽,請只將右側目標連接埠(上例中的 3782)換成 SSH 主機 127.0.0.1 上實際監聽的 Web 連接埠;左側 callback 連接埠仍須維持 14551457<server-host> 是其 loopback 擁有該監聽連接埠的 SSH 主機。若瀏覽器 URL 指向反向代理或負載平衡器,請換成正確的 SSH 前端主機。

CLI 會顯示通道指令,接著立即嘗試開啟瀏覽器。在遠端部署上,請保持授權頁面開啟而不要完成操作,在另一個終端機建立顯示的通道後,再繼續授權。

遠端拓撲偵測以 localhost 為界。若 Web 本身是透過 SSH 或 IDE localhost 轉送連線,瀏覽器無法得知伺服器位於遠端。對於目前的 Web 操作,請讓授權頁面保持未完成、讀取該操作授權 URL 中的 redirect_uri 以判斷 callback 連接埠是 14551457,再建立第二條從該本機連接埠連至實際 Web 連接埠的通道。你也可以取消該 Web 操作,改用 CLI 開始新的操作;CLI 輸出屬於新操作,不得用於現有 Web 操作。Quota 錯誤與型錄失敗會原樣回報,絕不會改用付費供應商。這是實驗性相容方式,上游介面日後可能變更。

👥 Multi-User — 共享部署 · 選用驗證、相互隔離的每位使用者工作區

驗證功能預設關閉,DeepTutor 會以單一使用者模式執行。開啟後,一個 data/ 目錄樹便能並列容納管理員工作區、相互隔離的每位使用者工作區,以及 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)

第一位註冊的使用者會成為管理員,並擁有模型型錄、供應商憑證、共享知識庫、技能、作為主版本的共享書籍與每位使用者的授權。管理員建立的本機使用者可選擇 Standard、Learner 或 Custom。Learner 會鎖定學習能力與教材政策、加入可調適的個人檔案,並支援可撤銷、具到期時間與每日上限的裝置憑證;已授權的 Guardians 可檢視報告、核准教材及重設憑證。其他使用者會取得隔離的工作區,以及範圍受限的模型、知識庫、技能、Partners 與共享書籍存取權,而不會收到原始 API key。如果 auth.json 已包含 username + password_hash,該帳號就是管理員:/register 會維持關閉,從 /admin/users 建立的帳號在升級前一律為 role=user

啟用方式:data/user/settings/auth.json 開啟驗證、重新啟動 deeptutor start、到 /register 註冊第一位管理員,接著從 /admin/users 新增使用者,並透過授權指派模型、知識庫、技能、partners、工具/MCP/CLI app 政策與程式碼執行權限;再從每位使用者的 Book access 面板設定共享書籍。

PocketBase 仍是單一使用者整合;除非已連接外部使用者儲存區,否則在多使用者部署中請將 integrations.pocketbase_url 留白。

⌨️ DeepTutor CLI — 代理程式原生介面

一個 deeptutor 執行檔,提供兩種入口:給終端機使用者的互動式 REPL,以及讓其他代理程式驅動 DeepTutor 的結構化 JSON。兩者使用相同的能力、工具與知識庫。

自行操作

deeptutor chat 會開啟互動式 REPL,並以 --capability 選擇模式;deeptutor run <capability> "<message>" 則將能力作為第一個位置引數,執行單一回合後結束。兩者都接受 --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 chat "Find recent work beyond this material" --kb textbook --tool knowledge_frontier
deeptutor run deep_research "Survey 2026 papers on RAG" \
  --config mode=report --config depth=standard

這裡也提供核心工作區管理功能,包括知識庫(kb)、工作階段(session)、partnerspartner)、技能(skill)、筆記本、記憶與設定;課程與工作階段的組織仍在 Web 應用程式中進行。完整清單如下。

讓代理程式操作

DeepTutor 從設計上就能由其他代理程式操作。對任何 run 加上 --format json,每個回合便會以 NDJSON — 每行一個事件contenttool_calltool_resultdone 等)串流,且每行都會標上 session_id。執行流程可安全用於 headless 環境:若 ask_user 在沒有 TTY 的情況下暫停,系統會自動以空白回覆處理,而不會無限等待。

# 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 json

repo 根目錄附有 SKILL.md,這份約 200 行的交接文件能讓任何支援工具呼叫的 LLM 一次掌握完整介面。將它交給 Claude Code、Codex 或 OpenCode(它們會自動讀取 SKILL.md),或在 LangChainAutoGen 迴圈中將 deeptutor run 包裝成工具。完整作法請參閱 Agent Handoff

指令參考
指令 說明
deeptutor init 在目前的執行環境目錄中建立或更新 data/user/settings
deeptutor doctor [--online] 檢查此執行環境是否已就緒可開始工作階段;--online 也會探測目前設定的模型供應商,--format json 會輸出 JSON 格式報告
deeptutor start [--home PATH] [--dev] [--detach] [--no-browser] 同時啟動後端與前端;可選擇 detached 模式或不開啟瀏覽器
deeptutor stop [--home PATH] 停止以 --detach 啟動的 launcher
deeptutor serve [--port PORT] 只啟動 FastAPI 後端
deeptutor workspace show/set/reset 檢視、選擇或還原每位使用者的內容工作區
deeptutor run <capability> <message> 執行單一能力回合(chatask_questionsdeep_solvedeep_questiondeep_researchvisualizemath_animatormastery_pathimmersive_readingcourse_studyimmersive_watching);加上 --format json 可輸出 NDJSON
deeptutor chat 具備能力、工具、知識庫、筆記本與記錄控制的互動式 REPL
deeptutor partner list/create/start/stop 管理連接 IM 的 partners
deeptutor kb list/info/create/add/search/set-default/delete/list-sources/sync 管理知識庫,並同步已註冊的 GitHub/Web 來源(含來源新增/移除指令)
deeptutor skill search/install/list/remove/login/logout/publish/update 管理技能、從 hub 安裝並發布自己的技能(預設為 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 檢視書籍並更新來源 fingerprint
deeptutor plugin list/info 檢視已註冊的工具與能力
deeptutor config show 顯示設定摘要
deeptutor provider login <provider> 供應商驗證(openai-codex OAuth 登入;github-copilot 會驗證既有 Copilot 登入工作階段;codebuddy 會驗證 CodeBuddy SDK 驗證狀態,並在需要時開始登入)
僅含 CLI 的發行套件

僅含 CLI 的套件位於 packaging/deeptutor-cli。在這份 checkout 中,請從原始碼安裝:

python -m pip install -e ./packaging/deeptutor-cli

它尚未發布至 PyPI,因此主要的開始使用章節仍採用從原始碼安裝的方式。

🧩 生態系 — EduHub 與技能社群

DeepTutor 技能採用開放的 Agent-Skills 格式,也就是包含 SKILL.md 操作手冊(YAML frontmatterMarkdown)與選用參考檔案的資料夾。這個格式並非 DeepTutor 專屬,因此任何支援此格式的 registry 都能成為你的知識庫來源。DeepTutor 內建我們以教育為核心的技能 registry EduHub,並將其設為預設 hub。

EduHub — DeepTutor 的技能生態系

EduHub 是 DeepTutor 推出的社群中心,用於分享教學導向的代理程式技能,包括蘇格拉底式導師、單字卡建立工具、文章回饋、考試藍圖、概念解說等。它已整合至 DeepTutor,無須任何設定;只輸入 slug 或加上 eduhub: 前置字串都會解析至此。

尋找並安裝 — 在瀏覽器中開啟 Learning Space → Skills → Import from EduHub,即可瀏覽型錄並將技能直接下載到知識庫。若從終端機操作:

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 version

EduHub 也是獨立且相容於 ClawHub 的 registry,因此不是 DeepTutor 的代理程式(Claude Code、Codex 等)也能直接透過 eduhub CLI 使用:npx eduhub install socratic-tutor

匯入安全閘道

不論來源為何,每次匯入都必須通過相同的安全閘道,才會有任何內容進入工作區:

  • 系統會先檢查 registry 的安全性判定;除非傳入 --allow-unverified,否則會拒絕標記有問題的套件;
  • 壓縮檔會進行防禦性解壓縮,並檢查路徑穿越、項目數量、大小、壓縮率、副檔名與符號連結;可執行位元會被移除,而無副檔名檔案仍允許保留;
  • frontmatter 會正規化成 DeepTutor 的結構描述,並移除 always:,因此下載的技能無法強迫自己進入每一個系統提示;
  • 來源資訊(hub、版本、判定與安裝時間)會寫入 .hub-lock.json,供稽核與更新使用。

在多使用者部署中,瀏覽器匯入會進入已驗證呼叫者的技能層,CLI 與管理員控制台安裝則以擁有者/管理員工作區為目標;管理員技能在授權前會對一般使用者保持隱藏及唯讀。

同時相容於 ClawHub

由於 DeepTutor 支援開放的 Agent-Skills 格式,ClawHub 也是第一級來源,並與 EduHub 一同內建。可透過 hub 前置字串選擇:

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 時,搜尋結果會列出各發布者,並附上完整範圍的安裝參照(clawhub:<ownerHandle>/<slug>)。

可在 data/user/settings/skill_hubs.json 加入更多 registrytype: "clawhub" 項目指向任何相容的 HTTP APIEduHub 與 ClawHub 皆支援);type: "command" 可包裝 registry 提供的任何擷取 CLI"default" 則指定只輸入 slug 時使用的 hub。它們都會通過相同的匯入閘道。

🤝 開放原始碼合作夥伴

PageIndex

代碼 DEEPTUTOR2020 美元折扣,適用於首次 PageIndex 訂閱(新客戶 · StandardProMax

🌐 社群

🔗 維護者

Bingxi Zhao
Bingxi Zhao
Xingyu Hou
Xingyu Hou
Jiahao Zhang
Jiahao Zhang

📮 聯絡方式

DeepTutor 是由 HKUDS 團隊的 Bingxi Zhao 主導的開放原始碼專案,並以完全開放原始碼的形式持續迭代,與社群共同打造。目前我們不提供任何形式的付費線上產品。如欲討論、分享構想或洽談合作,歡迎來信 bingxizhao39@gmail.com

🙏 致謝

衷心感謝香港大學 Data Intelligence Lab 主任 Chao Huang,以及 HKUDS 實驗室夥伴的熱情支持;特別感謝 Jiahao ZhangZirui GuoXubin Ren。我們也深深感謝開放原始碼社群;你們的 stars、issues、pull requests 與 discussions 每一天都在形塑 DeepTutor。

DeepTutor 也站在許多傑出開放原始碼專案的肩膀上;它們同時提供了工具與靈感:

專案 角色/啟發
LlamaIndex RAG 管線與文件索引的骨幹
nanobot 驅動最初 TutorBot 的超輕量代理程式引擎(HKUDS
LightRAG 簡潔且快速的 RAGHKUDS
AutoAgent 零程式碼代理程式框架(HKUDS
AI-Researcher 自動化研究管線(HKUDS
OpenClaw ClawHub 背後的開放代理程式閘道與技能生態系
Codex 啟發 CLI 工作流程的代理程式原生程式設計 CLI
Claude Code 啟發 DeepTutor 代理程式迴圈的代理式程式設計 CLI
ManimCat AI 驅動的 Math Animator 數學動畫生成

🗺️ Roadmap 與貢獻

我們希望 DeepTutor 持續迭代與進步,最終成為回饋開放原始碼社群的一份禮物。我們會持續更新roadmap;歡迎到該處為項目投票或提出新構想。如果你想參與貢獻,請參閱貢獻指南,了解分支策略、程式碼規範與開始方式。

我們希望 DeepTutor 成為送給社群的一份禮物。🎁

貢獻者

Star History Rank

採用 Apache License 2.0 授權。

瀏覽次數