HKUDS/DeepTutor

DeepTutor 是一套個人化學習助理,把多 agent 協作、RAG 檢索與學習工作區整合成一個前後端應用。它同時提供網頁介面與 CLI,並能用 Docker 或 Podman Compose 部署,資料統一放在 ./data 底下。跟單純的聊天式學習工具相比,它把知識庫、練習題、閱讀與寫作流程拆成可組合的模組,也支援外掛與 MCP 擴充。
其他 AI 工具Python★ 47,574

專案簡介

以上內容由 AI 根據官方 README 整理,未經實測;指令以官方文件為準。

原始描述

DeepTutor: Lifelong Personalized Tutoring. https://deeptutor.info/.

主要功能

  • 多 agent 協作搭配 RAG 的學習流程
  • CLI 介面,可直接在終端機操作
  • Docker 與 Podman Compose 部署,含 GHCR 預建映像
  • 以資料夾為單位的學習工作區與知識庫
  • 內建 LightRAG 與多種文件解析引擎可選
  • 提供 MCP 與外掛機制擴充工具能力

系統需求

  • Python 3.11 以上(pyproject.toml 標示 >=3.11,<3.15)
  • Podman 4.1+(rootless)或 Docker 搭配 Compose
  • Node.js 22(Dockerfile 建置前端使用)

安裝方式

  1. 複製環境變數範本,再依需要編輯連接埠

    cp .env.example .env
  2. 以 Podman Compose 啟動服務

    podman compose -f compose.yaml up -d
  3. 以 Docker Compose 建置並啟動正式環境

    python scripts/docker_compose.py up -d

快速開始

podman compose -f compose.yaml up -d

設定教學

Docker 部署前要先準備 .env(可從 .env.example 複製)調整主機連接埠,模型供應商則在啟動後於網頁 Settings 或 data/user/settings/model_catalog.json 設定。

環境變數

變數用途必填範例/預設值
HOST_PORT_BACKENDPodman Compose 對外綁定的後端連接埠。否8001
HOST_PORT_FRONTENDPodman Compose 對外綁定的前端連接埠。否3782
HOST_PORT_POCKETBASEPodman Compose 對外綁定的 PocketBase 連接埠。否8090
TZ傳入後端與前端的時區設定。否UTC
DEEPTUTOR_WORKSPACE_HOST指定要掛載到容器內 /workspace 的主機資料夾。否./data/user/workspace
DEEPTUTOR_DOCKER_BACKEND_PORTCompose 部署時後端容器與主機對應的連接埠。否8001
DEEPTUTOR_DOCKER_FRONTEND_PORTCompose 部署時前端容器與主機對應的連接埠。否3782
DEEPTUTOR_DOCKER_POCKETBASE_PORTCompose 部署時 PocketBase 對外連接埠。否8090
DEEPTUTOR_SANDBOX_RUNNER_URL把不受信任的 shell 執行導向 sandbox-runner sidecar。否http://sandbox-runner:8900
DEEPTUTOR_WORKSPACE_ROOT容器內工作區根目錄路徑。否/workspace
DEEPTUTOR_WORKSPACE_ALLOWED_ROOTS允許存取的工作區根目錄清單。否/workspace
DEEPTUTOR_EXTRAS啟動時額外安裝的 optional extras,以逗號分隔。否—
DEEPTUTOR_APT_PACKAGES啟動時額外安裝的 apt 套件,以逗號分隔。否—
PUIDUnraid/NAS 綁定掛載時,把容器使用者對應到主機擁有者。否99
PGIDUnraid/NAS 綁定掛載時,把容器群組對應到主機擁有者。否100

主要設定檔

  • .env.example — 複製為 .env 後調整主機端對外綁定的連接埠(8001/3782/8090)與時區。
  • compose.yaml — Podman Compose 部署定義,服務、磁碟區與唯讀 rootfs 設定都在這裡。
  • docker-compose.yml — Docker Compose 主要編排檔,含 deeptutor、redis、pocketbase 與 sandbox-runner。
  • docker-compose.ghcr.yml — 直接拉取 GHCR 預建映像的部署檔,可在此釘選映像版本。
  • docker-compose.dev.yml — 開發用覆寫檔,掛載原始碼以啟用前後端熱重載。
  • pyproject.toml — Python 套件與 optional extras 定義,決定要安裝哪些模組。

設定內容整理自 repository 內的設定檔與文件,未經實測;變數名稱與指令以官方檔案為準。

適合用途

  • 想把教材、PDF 與網頁整理成可問答知識庫的學習者
  • 需要在終端機用 CLI 跑學習流程的開發者
  • 想自架服務、把資料留在自己伺服器的團隊
  • 要接本機 Ollama 或 LM Studio 模型來做教學應用的使用者

常見問題

預設會用到哪些連接埠?

前端預設 3782、後端 8001,PocketBase 是 8090。這些值可用 DEEPTUTOR_DOCKER_FRONTEND_PORT、DEEPTUTOR_DOCKER_BACKEND_PORT、DEEPTUTOR_DOCKER_POCKETBASE_PORT 覆寫。

資料存在哪裡?

主要資料都在 ./data 底下,compose 檔把它掛到容器的 /app/data。內容工作區另外掛到 /workspace,可用 DEEPTUTOR_WORKSPACE_HOST 指定主機資料夾。

用 docker exec 裝的套件為什麼重啟後就不見?

在容器內用 docker exec 安裝的套件不會留到下次 compose down,要在 compose 檔的環境變數宣告 DEEPTUTOR_EXTRAS 或 DEEPTUTOR_APT_PACKAGES,讓每次啟動重新套用。

部署到遠端伺服器時 API 位址要怎麼設?

在本機用 Docker 時留空即可,預設的 http://localhost:8001 就能通。部署在遠端伺服器時要把 next_public_api_base_external 設成伺服器的 IP 或主機名稱,否則瀏覽器會去連自己電腦的 localhost。

一定要裝 PocketBase 嗎?

PocketBase 是選用的認證與儲存 sidecar,把 integrations.pocketbase_url 設成 http://pocketbase:8090 才會啟用;留空則走 SQLite 的單使用者模式。

要接本機的 Ollama 或 LM Studio 該怎麼填位址?

在 provider 的 base_url 欄位要用 host.docker.internal,不能用 localhost。設定位置在 data/user/settings/model_catalog.json 或網頁 Settings。

公開標籤

ai-agentsai-tutorclawbotcli-tooldeepresearchinteractive-learninglearningmulti-agent-systemsrag
Stars 等欄位只是 GitHub 快照,不保證品質、安全性或商用適用性。