文章摘要
文章介绍了统一上下文的AI终身学习系统DeepTutor。它定位为“终身个性化辅导系统”,整合聊天、研究等多种功能到本地工作台。其架构清晰,学习资料可跨功能复用。该系统在GitHub获34K+ Star,采用Apache - 2.0许可。还介绍了其核心的Agent Loop,以及Partners、My Agents等功能模块,满足不同学习场景需求。

AGENT LEARNING NOTES 2026.08.11

DeepTutor 不只是 AI 家教 · Agent 学习操作系统

统一 Agent Loop、RAG、Skills、外部 Agent 与三层长期记忆,一次讲清这套开源学习工作台。

DEEPTUTOR

34K+ Star · Apache-2.0 · 本地优先

ARCHITECTURE FIELD GUIDE

很多 AI 学习产品的结构都很熟悉:上传资料,打开聊天框,然后围绕文档问答。DeepTutor 想做得更深一层。它把聊天、研究、解题、测验、写作、知识库、外部 Agent 与长期记忆放进同一个本地工作台,让一次学习任务可以继续变成笔记、报告、题库,甚至一本可交互的书。

截至 2026 年 8 月 11 日,DeepTutor 在 GitHub 获得 34,181 Star、4,385 Fork,采用 Apache-2.0 许可证,主要后端语言为 Python,Web 端基于 Next.js 16 与 React 19。当前发布版本为 v1.5.11。

这篇文章不把 DeepTutor 当成“功能很多的 AI 家教”来介绍,而是从它的运行主干出发,看看这套系统怎样组织 Agent、工具、知识与记忆,以及它适合什么人、不适合什么人。


01

PART

一、DeepTutor 到底是什么

DEEPTUTOR FIELD NOTES

DeepTutor 给自己的定位是“终身个性化辅导系统”。从产品表面看,它包含九个主要区域:Chat、Partners、My Agents、Co-Writer、Book、Knowledge Center、Learning Space、Memory 与 Settings。

这些页面并非九套互不相干的应用。代码中可以看到一条清晰主线:入口先把会话、附件、Persona、知识库、Skills 与记忆组装成统一上下文,再由 Agent Loop 判断是否调用工具或进入特定能力。Partner 的网页消息和 IM 消息也会回到同一套 ChatOrchestrator,而不是另建一个机器人内核。

官方架构图把系统分为五层:入口、运行编排、Agent 原生核心、服务,以及数据与配置。CLI、WebSocket API、REST API 和 Python SDK 都能进入相同运行时;上层的 Chat、Auto、Deep Solve、Deep Research、Visualize 与 Mastery Path,则通过能力与工具机制复用底层服务。


这种架构带来一个重要结果:学习资料不会只停留在某个问答页面里。同一个知识库可以支撑聊天、研究、协同写作、Book 与 Partner;同一段会话也可以被放进后续任务,继续生成测验、笔记或章节。


02

PART

二、统一 Agent Loop 是整套产品的主干

DEEPTUTOR FIELD NOTES

Chat 是 DeepTutor 最常用的入口。用户可以直接对话,也可以在输入区挂载知识库、文件、Persona、外部 Agent 和一次性引用。会话中的模型、知识库、Persona、语音与子 Agent 属于粘性上下文,会跨轮保留;从加号菜单临时加入的文件、历史对话、Book、Notebook 或题库,只影响当前一轮。

核心循环并不神秘:模型先思考,再决定直接回复还是调用工具;工具结果返回后继续观察和判断,直到输出一个不再调用工具的最终消息。ask_user 是一个特殊工具。当任务缺少条件时,Agent 可以暂停并提出结构化问题,等用户补充后再恢复,而不是自行猜测。

DeepTutor 把工具分成两类。一类由用户主动开关,例如头脑风暴、网页搜索、论文搜索、推理与 GeoGebra 分析;图像和视频生成则需要先配置对应模型。另一类根据上下文自动挂载,包括 RAG、知识库文件、来源读取、Memory 读写、Skill 读取、MCP 工具加载、代码执行、网页抓取、Notebook、GitHub 查询与子 Agent 咨询。

从一次任务的角度看,完整链路如下:

内置能力并不只有聊天。当前代码注册了 Chat、Deep Solve、Deep Question、Deep Research、Math Animator、Visualize 与 Mastery Path;另有 Solve、Mastery、Obsidian、Subagent 与 Explore Context 等 Loop Capability,根据当前上下文加入工具表面。某些能力会使用独占工具集,避免无关工具干扰本轮任务。

这使 DeepTutor 更接近一个学习任务运行时:普通问答是默认路径,复杂任务则进入研究、解题、出题、可视化或学习路径,并且仍能访问统一上下文。


03

PART

三、Partners:把长期伙伴接入网页和 IM

DEEPTUTOR FIELD NOTES

Partners 是带有独立人格与工作区的长期伙伴。每个 Partner 可以配置自己的 Soul、模型策略、知识库、Skills、Notebook、Memory 与消息渠道。它读取所有者允许访问的记忆,但写入自己的 Partner 记忆,从而避免多个角色把长期状态混在一起。

Partner 并没有另起炉灶。外部消息经过 Channel Adapter 归一化后,进入 Partner Runtime,再调用共享的 UnifiedContext、ChatOrchestrator、AgenticChatPipeline、ToolRegistry 与 StreamBus。换句话说,Partner 是带人格、渠道和独立作用域的 DeepTutor Chat。

通道层采用自动发现机制:内置通道从 Python 包中扫描,外部通道可以通过 entry point 注册;内置实现优先,插件不能覆盖同名内置通道。项目当前提供多种连接器,但实际可用性取决于安装的可选依赖、平台凭证与网络环境。

这部分最适合需要“长期角色 + 多入口”的场景,例如研究助理、课程陪练或团队知识助手。不过,它也意味着部署者要承担渠道凭证、消息平台限制和长期运行维护,不能把“支持通道”理解成开箱即用的托管服务。


04

PART

四、My Agents:让专业编码 Agent 进入学习上下文

DEEPTUTOR FIELD NOTES

My Agents 解决两类问题。

第一类是连接正在运行的 Agent。DeepTutor 可以在当前机器上调用多种专业编码工具,并将执行过程流式展示在 Activity 面板中。用户可以限制咨询轮数,避免子 Agent 无边界运行。

第二类是导入历史对话。用户可以选择日期,把已有的外部编码会话同步成可搜索、可恢复的外部记录。它们在 DeepTutor 中仍被标识为第三方内容,不会被伪装成 DeepTutor 自己生成的对话。

这项设计很实用:学习和工作并不总能分开。阅读代码、验证公式、检索论文或生成实验脚本时,专业编码 Agent 可以成为当前学习任务的一部分,而不是在多个窗口之间反复复制上下文。


05

PART

五、Co-Writer:可审阅的局部编辑而非一键生成

DEEPTUTOR FIELD NOTES

Co-Writer 是左右分栏的 Markdown 工作区,支持自动保存、实时预览、数学公式和图表围栏。稿件成熟后,还可以回存到 Notebook,成为下一轮学习或研究的材料。

它最值得注意的不是全文生成,而是选区编辑。用户选中一段文字后,可以要求重写、扩写或压缩;编辑 Agent 可以引用知识库或网页证据,展示工具调用轨迹,并用差异视图让用户逐项接受或拒绝。

这比直接覆盖全文更适合课程笔记、研究报告和长文。Agent 提供修改建议,最终决定仍留在用户手里。


06

PART

六、Book:把材料编译成可交互的 Living Book

DEEPTUTOR FIELD NOTES

Book 的输入可以来自知识库、Notebook、题库或聊天历史。系统先提出章节大纲,让用户确认结构,再生成内容。最终产物不是一个静态 PDF,而是由多种类型化区块组成的阅读环境。

区块类型覆盖正文、提示、测验、闪卡、时间线、代码、图形、交互 HTML、动画、概念图、深入阅读与用户笔记。每个页面还有独立的 Page Chat。用户可以插入、移动、重新生成区块,或者切换区块类型,而不必重写整个章节。

项目还提供 deeptutor book health 与 deeptutor book refresh-fingerprints,用于检查来源知识是否已经和编译后的页面发生漂移。这个细节说明 Book 被设计成可维护的知识产品,而不是一次性生成物。


07

PART

七、Knowledge Center:一个入口,多种 RAG 路线

DEEPTUTOR FIELD NOTES

Knowledge Center 为 Chat、Co-Writer、Book 与 Partners 提供检索依据。DeepTutor 没有把所有文档锁进同一种向量数据库,而是让每个知识库绑定一种检索引擎。

当前产品界面和配置覆盖多种检索方案:

•

LlamaIndex:默认本地方案,组合向量检索与 BM25;大知识库可使用 FAISS。

•

PageIndex:托管式推理检索,强调页级引用。

•

GraphRAG 与 LightRAG:面向知识图谱检索,属于较重的可选依赖。

•

LightRAG Server:通过 HTTP 连接外部 LightRAG 服务。

•

Tencent IMA:查询已经在 IMA 中维护的知识库。

•

Obsidian:链接现有 Vault,并在原位置读写。

•

Linked Index:复用外部已经建立的索引,不重新摄取文档。

创建知识库时,可以上传文档建立新索引,也可以链接已有索引。重建索引会写入新的 version-N 目录并保留旧版本,避免在重建中破坏一个仍可工作的索引。若单个文档解析失败,也可以只删除该文档,不必重建整个知识库。

文档解析支持纯文本、MinerU、Docling、markitdown 与 PyMuPDF4LLM。这里要注意工程成本:GraphRAG、LightRAG、MinerU 和多模态解析并非同等轻量,部分能力需要额外依赖、模型下载或外部服务。想要最短部署链路,可以先从默认 LlamaIndex 与文本解析开始。


08

PART

八、Learning Space:把可复用能力集中管理

DEEPTUTOR FIELD NOTES

Learning Space 是 DeepTutor 的个人资料与复用层。它分成两组内容:一组是会话、Notebook 和题库等学习材料;另一组是 Mastery Path、Persona、Skills、MCP Services 与 CLI Apps 等个性化能力。

Skill 采用 SKILL.md 形式,Agent 在需要时读取,而不是把所有说明一次性塞进系统提示词。用户可以自己编写,也可以从社区目录导入。导入过程经过安全门,但第三方 Skill 仍然需要人工检查其说明、依赖与可执行范围。

MCP Services 与 CLI Apps 扩展了 Agent 能调用的外部能力。项目文档列出多种 CLI 工具,但实际调用仍受安装状态、使用说明、沙箱和用户授权约束。这里的价值不在数量,而在于把扩展能力放入统一管理面板,并按任务动态加载。


09

PART

九、Memory:可读、可查、带引用的三层长期记忆

DEEPTUTOR FIELD NOTES

DeepTutor 的 Memory 没有把个人状态藏在不可见的向量库里,而是使用文件化的三层结构:

•

L1:工作区镜像与按场景、日期记录的追加式事件轨迹。

•

L2:按 Chat、Notebook、Quiz、Knowledge、Book、Partner 与 Co-Writer 等场景整理的事实。

•

L3:跨场景形成的 Profile、Recent、Scope 与 Preferences 综合。

Memory 文档采用 Markdown 保存。L2/L3 中的事实通过脚注引用上游来源,每条记录还有稳定 ID,支持更新、审计、去重、删除和引用合并。代码默认要求引用存在,并丢弃无效引用;更新与审计预算、去重轮数、分块大小和重叠比例都能在设置中调整。

Memory Graph 把 L3 放在中心、L2 放在中间层、L1 轨迹放在外圈。它的意义不是让图谱看起来复杂,而是允许用户从一条综合判断追溯到场景事实,再回到原始事件。

这套记忆设计的代价也很直接:整理、审计与去重会消耗模型调用;如果来源质量差,长期记忆只会更稳定地保留错误。因此“可检查”很重要,自动沉淀不能取代人工校正。


10

PART

十、Settings、多用户与安全边界

DEEPTUTOR FIELD NOTES

Settings 是模型、网络、知识库解析、Chat 工具、Partners、Agents 与 Memory 的统一控制面。界面带有后端健康状态和进程树内存占用,模型配置支持连通性验证后再应用。项目默认提供多套外观。

DeepTutor 默认是单用户模式,认证关闭。开启多用户后,管理员工作区、普通用户工作区、Partner 工作区与系统目录分开保存。普通用户通过 Grant 获得模型、知识库、Skills、Partners、工具、MCP、CLI Apps 与代码执行权限。

代码中的安全策略有几个值得留意的细节:

•

非管理员的 MCP 与 CLI App 默认拒绝,只有管理员明确授权后才能使用。

•

Grant 只保存逻辑 ID,并拒绝敏感字段。

•

OAuth 密钥放在指定目录,该分支不暴露给执行沙箱。

•

Sandbox Service 先检查后端健康与隔离等级,再执行命令,并按用户限制并发与分钟调用次数。

•

exec_enabled=true 只有在系统级隔离能够真正区分用户时才会生效。

这些机制说明项目已经认真处理多用户风险,但它仍不是“开启认证就自动安全”的托管平台。部署者需要正确配置沙箱、网络边界、网关转发、平台凭证与资源授权,并持续跟进版本更新。


11

PART

十一、安装方式与最低成本起步

DEEPTUTOR FIELD NOTES

最简单的安装方式是 PyPI:

. . . bash

pip install -U deeptutor

deeptutor start

默认 Web 地址为 http://127.0.0.1:3782。当前 Python 包要求 Python 3.11 至 3.13;从源码开发 Web 前端还需要 Node.js 22 LTS。项目同时提供 Docker、Podman、源码安装与 CLI-only 路线。

CLI 既能给人使用,也能被其他 Agent 调用。deeptutor chat 打开交互式 REPL;deeptutor run <capability> <message> --format json 则以 NDJSON 输出内容、工具调用、工具结果与完成事件,并带上 session ID,便于串联多轮任务。

一个比较稳妥的起步顺序是:

01

先配置一个 LLM,使用 Chat 验证基础运行链路。

02

再配置 Embedding,建立一个默认 LlamaIndex 知识库。

03

确认引用与索引重建正常后,再开启 Memory。

04

需要代码执行时再配置沙箱,不要让命令静默落到宿主机。

05

最后再接入 Partners、MCP、CLI Apps、GraphRAG 或多用户部署。

这样做的好处是每一步都能单独验证,出现问题时也更容易定位。


12

PART

十二、它的优势、代价与适用场景

DEEPTUTOR FIELD NOTES

主要优势

•

上下文真正复用。 Chat、写作、Book、知识库与 Partner 共用同一套上下文和工具,不必反复复制材料。

•

长期状态可检查。 三层 Memory 使用 Markdown 与来源引用,用户能看见系统记住了什么。

•

扩展面完整。 Skills、MCP、CLI Apps、外部 Agent、IM 通道与多种 RAG 引擎都有明确入口。

•

人和 Agent 都能调用。 Web、CLI、REST、WebSocket 与 Python SDK 覆盖交互和自动化场景。

•

本地优先且许可证宽松。 Apache-2.0 适合个人研究、团队改造和二次开发。

需要接受的代价

•

功能面很大,模型、Embedding、检索引擎、解析器、沙箱与 IM 通道会形成明显的配置成本。

•

部分高级能力依赖额外组件或外部服务,不能仅凭界面入口判断已经可用。

•

多用户、OAuth、代码执行与第三方扩展增加了治理责任,尤其需要关注最小授权和密钥隔离。

•

记忆整理、Deep Research、Book 编译与多 Agent 调用会放大 Token、计算与等待时间。

•

项目更新频繁,适合愿意跟随版本演进并自行验证的用户,不适合把它当成无需维护的成品 SaaS。

更适合谁

•

希望把个人研究、课程学习、笔记和写作放进同一环境的重度知识工作者。

•

需要本地部署、可审计记忆与自有知识库的开发者或研究团队。

•

想把专业编码工具纳入学习流程的 Agent 用户。

•

愿意自己配置模型、检索和沙箱,并对数据与成本负责的人。

如果需求只是对几份 PDF 做临时问答,DeepTutor 可能过重;一个轻量 RAG 工具会更快。它真正有吸引力的场景,是你希望同一个系统陪伴数月甚至数年,并且学习结果能够不断回流、重组和再利用。


13

PART

结语

DEEPTUTOR FIELD NOTES

DeepTutor 最有价值的地方,不是列出多少个页面或工具,而是把这些能力放在一条连续的任务链中:问题进入统一上下文,Agent 调用检索和工具,结果变成答案、测验、文章或 Book,最后又回到 Notebook、Knowledge 与 Memory。

这条链路一旦跑通,AI 家教就不再只是“回答我现在的问题”,而开始参与知识的长期组织。代价也同样清楚:系统越长期、越可扩展,配置、权限、成本与维护就越不能省略。

对愿意承担这些工程工作的用户来说,DeepTutor 是一个值得研究的开源样本。它展示了 AI 学习产品从聊天界面走向 Agent 工作台时,架构上需要补齐哪些部分。

以上内容不代表本平台立场,仅供读者参考