Product Launch · XiaoHu Explains

HKU's HKUDS Open-Sources AI Tutor DeepTutor — 20K GitHub Stars in 111 Days

The paper's own tests show a 10.8% lift in personalization and a 29.4% lift in reasoning ability — fully open-source under Apache 2.0
One-Minute Overview
  • DeepTutor, the personalized learning tool open-sourced by the University of Hong Kong's Data Intelligence Lab (HKUDS), launched on 2025-12-29. It's fully open-source under Apache 2.0, and the authors state there is currently no paid online product of any kind.
  • Within 111 days of launch (as of 2026-04-19), it broke 20K stars on GitHub and trended on both the Trendshift daily and weekly charts.
  • Chat, Partners, Co-Writer, Book, Knowledge, Memory, and every other module share the same agent loop with interconnected context — switching modes only changes the goal for this turn, while the underlying engine stays the same the whole time.
  • The accompanying paper introduces a hybrid personalization engine (static knowledge grounding + dynamic personal memory), which lifts personalization metrics by an average of 10.8% on the TutorBench evaluation spanning five major disciplines and 270 tasks.
  • With the entire personalization engine disabled, the same "investigate, solve, write" scaffolding still lifted general agentic reasoning by an average of 29.4% across five backbone models on five public benchmarks.
Disclosure: DeepTutor was built by the HKU HKUDS team. The information here comes from its official GitHub repo (Apache 2.0) and the team's own published paper. Star counts, the version timeline, evaluation scores, and improvement figures all come from the project's and paper's own reporting — the paper's tutoring-quality scores were generated by an AI student simulator. What follows is a plain restatement of the mechanism and the data.
1Who Built It · How Big It Got

An HKU Team Open-Sourced an AI Tutor — and People Are Actually Using It

The University of Hong Kong's Data Intelligence Lab (HKUDS) released the open-source learning tool DeepTutor on December 29, 2025, and in the first half of 2026 published a research paper laying out its technical mechanisms.

It's a full learning toolkit you run on your own computer or server, built around a single idea: remembering how you learn. It's completely open-source (Apache 2.0 license), and the authors put it plainly in the README: there is currently no paid online product of any kind.
📌

Why this isn't just another routine open-source release: it broke 20K GitHub stars within 111 days of launch and trended on both the Trendshift daily and weekly charts; the project is fully open-source under Apache 2.0, with no paid product; and it's backed by an arXiv paper offering verifiable data from an evaluation spanning five major disciplines and 270 tasks.

DeepTutor home overview, Chat workspace, sidebar listing all feature panels
DeepTutor home overview: the Chat workspace sits in the center, with every feature panel lined up in the left sidebar. Image from the official HKUDS repo.
20K+
GitHub stars within 111 days of launch (as of 2026-04-19)
111 days
Time from launch to breaking 20K stars
~200K lines
Code volume of the agent-native architecture rewrite on 2026-04-04
3 commands
pip install, init, start — and the full app is running locally

The project is led by Bingxi Zhao at HKUDS (advised by Chao Huang, director of HKU's Data Intelligence Lab), built with the community. Its ecosystem also reuses several of the lab's own open-source projects: LightRAG (the retrieval engine), nanobot (an ultra-lightweight agent engine used early on), AutoAgent, and AI-Researcher.

2One Engine

One Brain, Eight Learning Modes — What You Switch Is Just the Goal

DeepTutor's core design: chatting, solving problems, generating questions, researching, visualizing, and mastery practice all run on the same agent loop. What you switch is what you want to do this turn — the underlying engine and context stay the same the whole time.

ChatQ&A conversation
PartnersPersistent companion
My AgentsConsult other agents
Co-WriterCollaborative writing
BookTurn into a living book
KnowledgeKnowledge base
Learning SpaceSkills & personas
MemoryAuditable memory
↓ All eight panels run on ↓
The same agent loop + interconnected learning contextKnowledge bases, books, drafts, notebooks, question banks, persona settings, and memory travel with the learner — every workflow can call on them, so you never have to redo work in siloed tools.
DeepTutor system architecture diagram
Official system architecture diagram: the feature panels on top share the underlying agent runtime and shared context. Image from the official HKUDS repo.
3Core Mechanism One

How Chat Becomes a Full Tutoring Session: It Thinks First, and Asks You Back When Unsure

Chat is the default entry point, where most work begins. A single conversation thread can hold a normal chat, call tools, "ground" its answers against a selected knowledge base, read attachments, generate images, consult other agents, write to a notebook, and carry the same context across many turns.

Core Mechanism

Its loop is deliberately kept simple: the model thinks turn by turn, calls tools when needed, observes the results, and finally gives an answer that calls no more tools. The key is a special tool called ask_user: instead of guessing when it's unsure, the agent can pause this turn, throw out a structured clarifying question, and wait for your answer before continuing.

Think turn by turn
Call tools
search / reason / draw…
Observe results
When unsure,
ask_user asks you back
Give the final answer
DeepTutor chat agent loop diagram
Official Chat agent loop diagram: think, act, observe, until an answer is reached; ask_user hands control back to you whenever it's unsure. Image from the official HKUDS repo.

Toggleable tools include brainstorm, web_search, paper_search, reason (deep reasoning), and geogebra_analysis (math plotting analysis); once a generation model is configured, imagegen and videogen are also available. Chat is also the jumping-off point into its other capabilities: Quiz (question generation), Research (cited reports), Visualize (chart animations), Solve (detailed reasoning), and Mastery Path (study planning) all branch off from here.

What It Remembers, What It Forgets: Two Clearly Separated Kinds of Context

Sticky session context

Persists across turns

Sub-agents, knowledge bases, personas, models, and voice — pinned to the input toolbar, staying in effect for the whole conversation.

One-off references

This turn only

Files, chat history, books, notebooks, question banks, imported agents — pulled in temporarily from the "+" menu, serving only the current turn's question.

4Core Mechanism Two · The Signature Feature

How It Gets to Know You So Well: Every Layer of Memory Is Clickable

DeepTutor's personalization doesn't rely on some vector database hidden in the backend — it's a three-layer memory system backed by files, one you can read, edit, and audit. Because every conclusion at one layer cites evidence from the layer below it, any line in your profile can be clicked all the way back to the original event. The diagram below is clickable: click a layer to see what it actually stores, and where it came from.

Click any layer above to see what it stores and which layer it cites ↓
L3 synthesis: a single conclusion that guides the next tutoring session
"This student keeps getting stuck on problems that need multi-step chain reasoning. Build up the scaffolding step by step — don't just hand over the conclusion."
↳ This conclusion cites summaries from two panels in L2 (click L2 above to see)
L2 summaries: facts accumulated by each panel
Chat panel: in the last 3 calculus sessions, got the chain-rule derivative wrong 2 times.
Quiz panel: 3 out of 5 related practice problems wrong, all on "which layer to differentiate first."
↳ Every summary in turn cites the original records in L1 (click L1 above to see)
L1 raw traces: an event stream that drops nothing
14:22 Student asks "why multiply by 3 here" → the solver calls the reason tool → the student answers wrong → ask_user follows up with "which do you think is the outer function" → the student answers… (the full conversation and every tool output are preserved step by step)
↳ This is the bedrock evidence — the two layers above are distilled from it, layer by layer

The official docs split this memory into three layers: L1 is a workspace mirror plus an append-only event trace; L2 is the curated facts from each panel; L3 is the cross-panel synthesis. Because L2 cites L1 and L3 cites L2, anything in your profile can be traced back through the chain to its source. The product's Memory Graph draws out the whole pyramid: L3 synthesis at the center, L2 in the middle ring, and L1 traces on the outer ring.

DeepTutor memory overview interface
Memory overview: readable, organizable, auditable.
DeepTutor three-layer memory graph
Three-layer memory graph: any conclusion can be traced back to the original event.

Both images above are from the official HKUDS repo.

5The Rest of the Modules, Quickly

Companionship, Writing, Book-Making, Research: the Remaining Modules in One Pass

The modules below are secondary but genuinely useful. They all run on the same brain — covered briefly here, each with an official screenshot.

Partners: A Persistent Companion With a Persona and a Phone Number

Partners are persistent companions with their own personas, model strategies, resource libraries, memory, and channels. Every message coming in from the web or an IM platform becomes a normal conversation turn in that partner's dedicated workspace. The channel layer is config-driven, connecting to 15 entry points including Feishu, Telegram, Slack, Discord, DingTalk, WeCom, WhatsApp, and Teams. A partner can also be consulted as a sub-agent from a regular chat — that's "My Agents": you can connect live to a local Claude Code or Codex instance, or import your existing conversation history into a searchable, resumable, named agent.

DeepTutor Partners workspace overview
Partners workspace overview. Image from the official HKUDS repo.
Click to see the Partners architecture diagram
DeepTutor Partners architecture diagram
Partners architecture: inbound messages are uniformly converted into conversation turns in the partner's workspace. Image from the official HKUDS repo.

Co-Writer: Select a Passage and Let It Rewrite — Nothing Lands Until You Approve

A split-pane Markdown writing space with live rendered preview (including math formulas and charts). Its core is "surgical editing": select a passage and have it rewritten, expanded, or condensed. The editing agent can back its changes with knowledge-base or web evidence, showing every edit as an accept-or-reject diff — nothing actually gets written into the document until you click approve.

DeepTutor Co-Writer workspace overview
Co-Writer workspace overview. Image from the official HKUDS repo.

Book: Turn Your Material Into a "Living Book"

Book turns your selected sources into an interactive living book — a reading environment built from typed blocks. When creating one, it first gives you a chapter outline to review, rather than dumping a black-box finished product on you. Each chapter compiles into blocks — text, callouts, quizzes, flashcards, timelines, code, charts, interactive components, animations, concept maps — and every page has its own Page Chat. Blocks can be individually inserted, moved, regenerated, or swapped for another type, without rewriting the whole chapter.

DeepTutor book library overview
Book library overview. Image from the official HKUDS repo.
Book quiz block example
Quiz block
Manim animation block example in a book
Manim animation block
Interactive component block example in a book
Interactive component block

Knowledge Center: You Pick the Retrieval Engine

A knowledge base is the document collection behind RAG (looking things up before answering), grounding Chat, writing, books, and Partner conversations. What's distinctive is that you can choose the retrieval engine: LlamaIndex (the default — local vector plus keyword), PageIndex (with page-level citations), GraphRAG and LightRAG (knowledge-graph retrieval), or you can link an Obsidian vault directly and let the tutor read and write to it in place. Each knowledge base is bound to one engine, and re-indexing keeps the old version around instead of breaking the one currently in use.

DeepTutor Knowledge Center overview
Knowledge Center overview. Image from the official HKUDS repo.

Learning Space: Skills, Personas, and Reusable Context

This is the resource library and personalization layer. It stores chat history, notebooks, and question banks (every saved question keeps your answer, the reference answer, and the explanation), along with mastery paths, personas (behavioral presets like "companion," "research assistant," "teacher"), and skills (SKILL.md playbooks the model reads on demand). You don't have to write every skill yourself — you can pull one straight from the EduHub community catalog.

DeepTutor Learning Space overview
Learning Space overview. Image from the official HKUDS repo.
6How to Install It · How It Gets Called

Three Commands to Run — and Other AIs Can Call It as a Tool

The smoothest path is a PyPI install: it sets up a complete local web app plus a CLI tool, no need to clone the code. Requires Python 3.11+ and Node.js 20+.

Three commands: install the full web app + CLI locally
pip install -U deeptutor
deeptutor init
deeptutor start
# open 127.0.0.1:3782
Or run the full app with one Docker command
docker run --rm --name deeptutor \
  -p 127.0.0.1:3782:3782 \
  -v deeptutor-data:/app/data \
  ghcr.io/hkuds/deeptutor:latest

There are four installation paths in total: PyPI (above), source (for modifying code), Docker (a single container running the full app), and CLI-only (for headless servers, agent harnesses, or scenarios like Claude Code / Codex — no web interface). Authentication is off by default and it runs single-user by default; once multi-user is enabled, the first person to register becomes the admin, and everyone else gets an isolated workspace and a redacted settings page that never exposes raw API keys. Configuration is plain JSON / YAML throughout.

It's Not Just for People — It's for Other Agents Too

The DeepTutor CLI has two modes: an interactive REPL (deeptutor chat), and structured JSON output for other agents (add --format json, streamed as NDJSON turn by turn). It runs "headless-safe": with no terminal present, an ask_user pause auto-resolves with an empty reply instead of hanging. The repo root ships with a roughly 150-line SKILL.md handoff document that Claude Code, Codex, and OpenCode recognize automatically — one read tells them how the whole system works, and deeptutor run can be wrapped as a tool inside a LangChain or AutoGen loop.

Search and install a community skill from EduHub
deeptutor skill search "socratic tutor"
deeptutor skill install socratic-tutor

Every skill imported from EduHub passes through the same security gate: a registry safety check, defensive archive extraction, stripping out any "always" field in the skill (a downloaded skill can't force itself into every system prompt), and writing its provenance to .hub-lock.json for auditing.

7The Paper Spells Out the Mechanism · Core

How These Features Twist Into One Rope: a Paper Lays Out the Mechanism Behind It

The pile of modules above can look like a list of features. What actually keeps them from scattering apart — what turns them into a system that gets to know you better the more you use it — is a paper the HKUDS team published alongside the release: "DeepTutor: Towards Agentic Personalized Tutoring." It answers one specific question: why can a weakness diagnosed during tutoring directly determine what question comes next, and why does performance on that question in turn improve the next explanation?

Hybrid Personalization Engine

The paper couples two things into a closed loop: Static Knowledge Grounding (SKG) handles "is what's being taught correct, and does it have curriculum backing?"; Dynamic Personal Memory (DPM) handles "does this way of explaining, and this question, actually fit this specific student?" The two divide the labor and complement each other — neither can substitute for the other.

SKG and DPM are the most abstract pair of concepts in this paper — let's first use a comparison card to tell them apart:

SKG · Static Knowledge Grounding

Is the curriculum content correct?

Textbooks and papers are broken into atomic knowledge units; a knowledge graph tracks the relationships between them, a vector index tracks their semantics, and query results from both paths are merged and de-duplicated.

Responsible for making sure what the tutor teaches is grounded and factually correct.

DPM · Dynamic Personal Memory

Does it fit this student?

Its core is the "trace forest": each full tutoring session is recorded as a tree, with nodes split into three layers (session summary, intermediate planning, execution detail); three dedicated memory agents actively retrieve and compare, continuously updating the learner's profile.

Responsible for making sure the depth and style of the explanation fits this particular person.

One-Line Analogy

Like a human tutor who flips through the textbook to make sure the material is correct (SKG), while also flipping through this student's error log to decide how to explain it and what question comes next (DPM).

Trace Forest: A Layered Medical Chart for Every Tutoring Session

The trace forest is DPM's ledger. Each complete tutoring conversation is recorded as a tree: Level 1 stores session-level input and a global summary, Level 2 stores the intermediate planning from task decomposition, and Level 3 stores the finest-grained execution record, including tool outputs, evidence, and verification results. Every node carries a vector encoding, so it can be retrieved by semantic similarity across the whole forest. The system browses it with a toolkit called TraceToolkit, which has only three actions: find similar by semantics (SearchTrace), enumerate filtered by time or topic (ListTraces), and read a node in full along with its ancestor path (ReadNodes).

Analogy

It's like opening a detailed medical chart for every session, written in layers: "chief complaint → diagnostic reasoning → specific exam records." At the next visit, you can pull up the detail at any layer of an old chart, instead of seeing only a line like "this student is so-so at math."

The profile isn't generated by passively summarizing the latest conversation. Every time a new trace comes in, three dedicated memory agents actively query TraceToolkit, comparing the latest behavior against old patterns across sessions, then update three parts of the profile: a summary of session history, an evidence-backed list of recurring points of confusion, and teaching reflections that guide future sessions. Personalization is therefore built on traceable evidence, not some crude "mastery score."

Putting It Together: How the Loop Actually Turns

Put the two together: static knowledge and personal memory are first synthesized into a "personalized context" inside the hybrid personalization engine, then fed into two pipelines at once. Problem-solving tutoring goes through three steps — "investigate first, guide step by step, then write the explanation at the student's level" (beginners get a scaffolded step-by-step derivation, proficient students get a concise summary of just the key insight). Question generation goes through two steps — "map concepts from this student's perspective to pick a question, then have an independent verifier check it's correct." Once the student finishes this round, the result is written back into the trace forest and refreshes the profile.

SKG + DPM
Hybrid Personalization Engine
Problem tutoring
investigate · guide · explain
+
Question generation
select · verify
Student completes it
As soon as the student finishes, this round gets written back into the trace forest and refreshes the learner's profile — so the next tutoring session and the next question both fit this person better. This is what the paper calls the closed tutoring loop.
Tutoring → QuestionsA weakness diagnosed during problem tutoring directly determines what practice question gets generated next.
Questions → TutoringThe student's performance on these practice questions, in turn, refines the profile and improves the next explanation.

Paper authors: Bingxi Zhao, Jiahao Zhang, Xubin Ren, Zirui Guo, Tianzhe Chu, Yi Ma, Chao Huang (The University of Hong Kong, HKUDS). v1 submitted 2026-04-10, v2 on 2026-05-08.

8Tested on 270 Tasks

Does It Actually Deliver: The Results After 270 Tasks

To measure personalized tutoring, the paper built its own student-centered benchmark, TutorBench: college textbooks and papers are indexed into a knowledge base, then 3 student profiles at different levels are constructed for each knowledge base. Each profile is assigned source-grounded knowledge gaps (in three categories — misconceptions, incomplete understanding, missing knowledge), and each profile keeps exactly 3 interactive tasks that pass validation.

30
knowledge bases, spanning five major disciplines: humanities, science, engineering, business, and frontier research
90
student profiles (3 levels per knowledge base)
270
total interactive tutoring tasks
+10.8%
average lift in personalization metrics for DeepTutor over the naive baseline

How It's Scored: An AI Student Takes the Class

The evaluation uses an AI-based student simulator to interact with each system under test: the simulator turns knowledge gaps into first-person statements like "I thought…", asks for a custom practice set after several rounds of tutoring, and the resulting full conversation transcript is scored against a personalization rubric. Scoring covers two groups of five criteria each, on a 1-to-5 scale. Tutoring side: source faithfulness, personalization, applicability, engagement, logical depth. Practice side: relevance, evidence sufficiency, diversity, answer quality, cross-concept coverage. The evaluation covers all 270 tasks, with Gemini-3-Flash driving both the student simulator and each system's backbone, and Claude Sonnet 4.6 acting as the judge.

The Three Dimensions With the Biggest Gains

Engagement how vivid and gripping the explanation is3.89 → 4.81
Naive baseline
DeepTutor
Evidence sufficiency whether generated questions have solid source backing2.46 → 2.96
Naive baseline
DeepTutor
Diversity whether practice questions vary instead of repeating2.83 → 3.44
Naive baseline
DeepTutor

Bar length is scaled against a maximum score of 5.

Five Systems Side by Side

All four baselines share the same retrieval tools and backbone model, differing only in whether they add chain-of-thought, self-refinement, or ReAct-style tool calling. Their scores cluster tightly, which shows that adding these alone isn't enough to catch up with a system that truly adapts to the learner.

SystemTutoring avg.Practice avg.Overall qualityRelative lift
Naive Tutor3.963.103.53
CoT Tutor (chain-of-thought)3.973.063.52-0.28%
Self-Refine Tutor (self-review)4.053.083.57+1.13%
ReAct Tutor (tool loop)3.963.083.52-0.28%
DeepTutor4.393.423.91+10.76%
r=0.82

Human-preference alignment: 45 sessions were stratified-sampled across five domains for blind pairwise comparison; both human reviewers and the AI judge gave DeepTutor the top preference on all ten metrics, and their win rates correlated strongly (Pearson r=0.82, p=0.0038). This shows the AI judge isn't blindly favoring it, but ranking things the way a human would based on the rubric.

0.16 pts

Stable across domains: overall quality differs by only 0.16 points across the five disciplines, so the gain isn't being carried by any single subject.

Taking It Apart: SKG and DPM Each Carry Their Own Weight, Neither Is Dispensable

Ablation experiments remove each component separately to see which metrics collapse:

Remove SKG (static knowledge)

The biggest drop is in "evidence sufficiency," followed by "source faithfulness" and "cross-concept coverage."

In other words, the tutor starts "teaching without grounding."

Remove DPM (personal memory)

The biggest drop is in "personalization" and "relevance."

In other words, the explanations and questions stop fitting this particular student.

Removing both together causes the largest overall drop. This proves SKG and DPM are complementary mechanisms: SKG anchors "what the tutor says," DPM shapes "how it adapts to you" — neither can substitute for or be dropped in favor of the other.

An Unexpected Finding: With Personalization Fully Off, the Scaffolding Alone Still Delivers

The paper also tested one more thing: is DeepTutor's "investigate, solve, write" scaffolding useful only for personalized tutoring, or does it also help with general problem-solving? So the whole hybrid personalization engine (SKG and DPM both disabled) was turned off, leaving only the bare solver, and the improvement in first-attempt accuracy (Pass@1) was measured across five public benchmarks (HLE, GPQA-Diamond, the LiveBench reasoning subset, GAIA, and AA-LCR).

Gemini-3-Flash
+29.24%
Sonnet-4.5
+32.03%
Qwen-3.5-Plus
+25.69%
GPT-5-Mini
+28.51%
Minimax-M2.5
+31.50%

All five backbone models improved, with average relative gains ranging from 25.69% to 32.03%. Personalization, SKG, and DPM were all switched off for this run, so this gain points to the general-purpose value of the "investigate, solve, write" scaffolding itself.

Click to see the per-benchmark jump for each of the five test sets
Backbone modelHLEGPQA-DLiveBenchGAIAAA-LCR
Gemini-3-Flash19.40→30.8081.31→84.8570.00→96.0037.58→47.8863.00→74.67
Sonnet-4.58.40→14.6072.22→73.2364.33→82.0029.09→45.4553.33→54.00
Qwen-3.5-Plus16.80→24.2088.38→87.8869.00→93.0033.94→49.0966.00→69.67
GPT-5-Mini16.46→21.2080.81→80.3071.00→93.0027.27→49.0968.67→71.00
Minimax-M2.514.00→19.4082.83→83.3359.30→73.0023.64→42.4266.00→76.40

HLE uses a fixed 500-question subset, GPQA is the Diamond tier, and LiveBench uses the reasoning subset. Figures are first-attempt accuracy percentages (baseline → with DeepTutor scaffolding).

9Boundaries · What You Can Actually Do Now

The Boundaries the Paper Draws for Itself — and What You Can Use Right Now

The paper doesn't overstate its case. It's explicit about what has been validated and what hasn't been tested.

In the paper's own words: system extensions like the Book Engine and TutorBot (Partners, in the current product) are "architectural instances" — deployment mechanisms for long-term personalized tutoring — not interventions validated by this evaluation. Their effects on retention, engagement, and real learning outcomes require longitudinal human studies. Chat, Book, and Memory are features you can install and use right now, but whether "using it long-term actually helps people learn better" is something the paper itself hasn't tested — that's left for the future. The interactive evaluation relies on an AI student simulator and rubric-based judging, which inherently carries a gap between "controlled simulation" and "real learners"; the multi-stage pipeline also trades higher inference cost for stronger controllability. The paper's recommendation: in real use, treat generated tutoring content as an aid rather than an authority, and verify important claims against trustworthy course materials or a human teacher.

What an Ordinary Person Can Do With It Right Now

Fully open-sourceApache 2.0, with the authors stating there's no paid product — individuals or organizations can deploy it locally without relying on a cloud subscription.
Low barrierThree commands or a single Docker command gets the full web app running.
CallableThe CLI supports structured output and can be called as a tool by other agents like Claude Code and Codex — it's not just a product for end users.
AuditableThe three-layer Memory structure plus the Memory Graph let you trace the source of "why it explained things this way, why it picked this question."
A weakness diagnosed during problem-solving tutoring propagates to the learner's profile and directly determines what question gets generated next; conversely, the student's performance on the generated question refines the profile and improves future explanations. "DeepTutor: Towards Agentic Personalized Tutoring," the paper's description of the "closed tutoring loop"
This article is compiled from the official DeepTutor GitHub repo (HKUDS, the University of Hong Kong's Data Intelligence Lab, Apache 2.0) and the team's paper "DeepTutor: Towards Agentic Personalized Tutoring" (arXiv). Code: github.com/HKUDS/DeepTutor. Docs: deeptutor.info. Latest version: v1.5.0 (2026-07-04). Star counts, the version timeline, evaluation scores, and improvement figures all come from the project's and paper's own reporting; the paper's tutoring-quality evaluation was scored by an AI student simulator. Screenshots in this article are from the official repo.