DeepTutor: The Tutor That Hides Its Own Thinking

An open-source tutoring system that can spin up specialist agents, preserve a clean student transcript, and build a lasting memory of what each learner actually knows.

9 min read • View on GitHub • More from HKUDS

A student sits at a clean desk facing one calm tutor figure, while a hidden mechanical workspace fans out behind them into specialist chambers. The image explains DeepTutor’s core idea: one visible tutor, many invisible sub-agents doing the work underneath.
DeepTutor presents one student-facing tutor while routing work through a concealed team of specialist agents.
Key Takeaways

DeepTutor is interesting because it behaves less like a chatbot and more like a small tutoring operating system. The student sees one conversation. Under the hood, the system can call specialist agents, gather evidence, solve sub-problems, and synthesize the result back into a clean reply.

That design choice matters because tutoring is not just question answering. It is sequencing, memory, diagnosis, and sometimes a different representation entirely. DeepTutor is trying to make those layers explicit without forcing the learner to watch the plumbing.

The student sees one tutor. The system runs a team.

The repository centers on a Python backend with a FastAPI delivery layer, a multi-agent runtime, and specialized modules for research, solving, notebooks, and math animation. The shape is familiar at a distance, but the behavior is not. DeepTutor’s auto mode can decide that one turn needs research, another needs a worked solution, and a third needs a visual explanation.

We talked to countless students and kept hearing the same pain points. Existing AI tools are either too fragmented or fail to capture personal learning context effectively.

DeepTutor Team, Project Developers · Discover DeepTutor: The Open-Source AI Learning Assistant

That is the right framing. DeepTutor is not trying to be a single-model answer box. It is trying to be a coordinator for learning work, where each capability can be invoked when the student needs it, not when the UI happens to allow it.

The real trick is not delegation. It is containment.

The most distinctive code path lives in the auto pipeline and its delegation layer. Auto mode analyzes the request, decides whether to answer directly, and if needed, spawns a child context for a specialist agent. The child inherits just enough state to do useful work, while the parent keeps ownership of the student conversation.

DeepTutor’s coordination model is easier to understand as a flow of delegated work than as a single chatbot loop.

The important implementation detail is lineage. Sub-agent events are tagged with metadata such as parent call identifiers, so the system can keep track of who asked whom to do what. That lets DeepTutor show internal activity when it is helpful, but avoid turning the student transcript into a pile of tool chatter.

A close-up of a clean central conversation thread in the foreground, while side threads branch into smaller notebooks and then fold back into a sealed envelope. The image explains how DeepTutor routes internal work outward and returns only the useful result.
DeepTutor forwards internal work through side channels, then seals the result before it reaches the student transcript.

Why the transcript stays clean

A clean transcript is not cosmetic. It changes how the product behaves. If the system persisted every intermediate thought, tool call, and sub-agent detour, the learner would inherit a noisy history that is hard to review, hard to trust, and hard to resume.

System behaviorPlain chatbotDeepTutor
Sub-tasksUsually hidden inside one model callDelegated to specialist agents with lineage
TranscriptMostly whatever the model producedFiltered so internal work does not pollute the student record
ExplainabilityNarrative onlyProcess and result can be separated
PersonalizationOften limited to recent turnsDesigned to persist across sessions
Output typesMostly textText, worked solutions, and math animation

This is the non-pollution invariant in practice. DeepTutor is not just trying to be clever. It is trying to keep the learner’s visible history readable enough that the next session starts with signal, not residue.

Memory is the second product

The memory architecture is the second big idea. Instead of relying on a simple sliding window, DeepTutor organizes memory into layers: short-term context, session-level summaries, and a longer-term learner profile. That is a stronger fit for tutoring because learning is cumulative.

Memory layerWhat it storesWhy it exists
L1Immediate turn contextKeeps the current exchange coherent
L2Session summariesCompresses a study session into something reusable
L3Long-term learner profileTracks what the student knows, forgets, and prefers

The design suggests a more serious product ambition than a transient chat history. DeepTutor wants to remember the student as a learner, not just as a sequence of prompts. That is a meaningful shift if the system can keep its summaries accurate and its profile updates disciplined.

DeepTutor is not only for text

The math animator module shows that the tutoring loop can produce the right form of explanation, not only the right words. Sometimes the best answer is a diagram, a step-by-step derivation, or an animation that makes a proof legible. DeepTutor treats those as first-class outputs, not as decorative extras.

That widens the project’s category. A normal chatbot answers. A tutoring system diagnoses, chooses representation, and teaches. DeepTutor is trying to do all three while keeping the interaction clean.

From lab project to living platform

DeepTutor comes out of HKUDS, the Data Intelligence Laboratory at the University of Hong Kong, and the repository reads like a project built by people who care about systems as much as product surfaces. The codebase is organized, the runtime abstractions are explicit, and the release cadence suggests a team iterating quickly on a fairly ambitious thesis.

We've reached 20k stars after 111 days! Thank you for the incredible support — we're committed to continuous iteration toward truly personalized, intelligent tutoring for everyone.

HKUDS, GitHub Organization · github.com/HKUDS/DeepTutor

The project’s pace matters because it hints at a larger strategy. DeepTutor is not just shipping features. It is tightening a platform model for learning, where orchestration, memory, and modality are all part of the same product shape.

Compared with a chatbot, DeepTutor is building an operating layer

CategoryPlain chatbotTraditional RAG tutorDeepTutor
Handling of sub-tasksWeakBetter retrieval, but still mostly one-shotDelegates to specialist agents
Transcript cleanlinessNoisy by defaultBetter grounded, still chat-centricActively filtered and preserved
Long-term memoryUsually shallowOften document-centricLearner-centric across sessions
Multimodal outputsLimitedUsually text plus citationsText, solutions, and visual explanations
Explainability of processLowModerateHigher because the work can be traced
Personalization over timeMinimalSome retrieval-based adaptationDesigned around a living learner profile

That is the category shift. DeepTutor is not trying to win a chatbot feature checklist. It is trying to become an operating layer for tutoring, where the system manages work, memory, and presentation on behalf of the learner.