Replies: 2 comments
|
今天,我把 DeepTutor 已有的 API 包装成 MCP 服务,并接入了 ChatGPT、Poke 这样的外部 MCP 客户端。看到 DeepTutor 的学习系统出现在它自己的 Web 界面之外,我很兴奋。那一刻,陪我学习的 Tutor 似乎终于能和 DeepTutor 对我学习情况的了解连接起来了。 接着,Poke 搜索了 DeepTutor 的向量知识库。它从我本地索引的教学材料中找到了有用内容;以我的体验,这些内容通常很难通过面向互联网的 AI 搜索找到。材料和我正在学的内容相符,Poke 也把它讲得很好。那一刻,几块拼图似乎接上了:外部 Tutor 可以使用 DeepTutor 特化的学习资源,同时陪我学习。 问题出现在我们尝试把学习结果写回 DeepTutor 时。在和 Tutor 学完一个 Mastery Path 知识点后,Poke 通过现有的掌握度操作写入了它的判断。但 DeepTutor 页面上显示的是“已由你标记为掌握”,测评证据却没有变化。同一页面显示,定量门槛是 90%,当前掌握度为 45%,记忆可提取度为 25%,已经遗忘 3 次,最近 5 次作答只有 2 次正确。 我意识到,MCP 底层调用的 API 似乎把调用者理解成了学习者本人。但在这个例子里,发起 API 调用的是 Poke,它表达的是 Tutor 对学习情况的判断,并不是我在 DeepTutor 界面里亲自做出的操作。由于后端按“这是学习者本人发起的操作”来处理,最后才显示成“已由你标记为掌握”。API 和学习者模型没有清楚地区分外部 Tutor 的判断、学习者本人的声明,以及系统根据测评证据作出的推断。 这也暴露出一个更大的限制:我做的 MCP 只是包装 DeepTutor 已有的 API,并没有让外部 Agent 获得与 DeepTutor 内置 Chat 等效的能力。Agent 可以读取一部分学习数据、调用一部分操作,但内置 Chat 所拥有的能力、上下文和效果,还不能作为一个完整、等效的体验交给外部 Agent 使用。而当学习对话发生在 DeepTutor 之外时,学习者提出的问题、错误尝试、犹豫、自我纠正、暴露出的误解、收到的提示和反馈,也都留在 ChatGPT 或 Poke 里。学习者原本的表达很重要:“可能是……不对,也许……”这类犹豫和自我修正,可能会被摘要抹掉。 我和 ChatGPT 讨论过把这些互动保存到 DeepTutor Notebook,但那只是让 Notebook 代替它原本并非为之设计的对话历史和学习证据系统。这是一种绕行办法,不是最终目标。 我真正希望的是:DeepTutor 能通过稳定的 API 和 MCP,把内置 Chat 的辅导能力交给外部 AI Agent 使用。DeepTutor 内置 Chat 能使用的学习资源、能力、上下文和操作,外部 Agent 也应该能够调用相应的 DeepTutor 能力,并获得地位和学习效果等效的体验。外部 Agent 负责对话,并顺畅接入用户已有的工作流;DeepTutor 仍然是学习系统,提供特化能力、维护学习者模型,并正确记录学习过程和证据来源。 这样,用户在 DeepTutor 内置 Chat 不够稳定时,可以替换它,或者暂时绕开它;同时还能在自己已经使用的 AI 工具中继续使用 DeepTutor 的学习能力。要做到这一点,仅仅包装今天已有的接口并不够:API 和内部概念需要能区分外部 Agent 与学习者本人,保留产生学习状态更新的互动过程,并把学习者自我报告、Tutor 判断和系统推断分别记录。 让外部 AI Agent 一等地、等效地使用 DeepTutor 内置 Chat 的辅导能力,是否符合项目的发展方向?如果符合,需要怎样调整 API 和内部模型才能实现? |
|
My MCP is open source in my repo DeepTutor-MCP 我的MCP实现开源于我的仓库DeepTutor-MCP |
Uh oh!
There was an error while loading. Please reload this page.
Today I wrapped APIs already provided by DeepTutor in an MCP server and connected it to external MCP clients, including ChatGPT and Poke. I was excited to see DeepTutor’s learning system become available in conversations outside its own Web UI. It felt as if the tutor I was learning with could connect to DeepTutor’s understanding of my learning.
Then Poke searched DeepTutor’s vector knowledge base. It retrieved useful passages from my locally indexed teaching materials that, in my experience, are generally hard to find through internet-based AI searches. The material matched what I study, and Poke used it to teach me very well. For a moment, the pieces seemed to fit: an external tutor could use DeepTutor’s specialized learning resources while helping me learn.
The problem appeared when we tried to write a learning result back. After a Mastery Path point had been worked through with the tutor, Poke’s judgment was recorded through the available mastery operation. In DeepTutor, the point appeared as “marked as mastered by you,” while the assessment evidence remained unchanged. The same screen showed a 90% target, 45% mastery, 25% retrievability, three lapses, and only two correct answers out of the last five.
I realized that the API exposed through MCP appears to model its caller as the learner. In this case, however, Poke was the client making the API call, and the action represented Poke’s tutoring judgment—not an action I had taken in DeepTutor’s own interface. Because the backend treated the API operation as if I had initiated it, the resulting state said “marked as mastered by you.” The API and learner model had no clear way to distinguish an external tutor’s assessment from my own declaration or the system’s assessment evidence.
This exposed a broader limitation. My MCP server wraps APIs DeepTutor already provides; it does not make the external Agent equivalent to DeepTutor’s own Chat. The Agent can retrieve some learning data and call some operations, but the built-in Chat’s capabilities, context, and effects are not yet available to it as a complete, equivalent experience. And when the learning conversation happens outside DeepTutor, the learner’s questions, wrong attempts, uncertainty, self-corrections, misconceptions, hints, and feedback remain in ChatGPT or Poke. The learner’s original wording matters: “maybe… no, perhaps…” can show uncertainty and self-correction that a summary would erase.
We considered saving those interactions in DeepTutor Notebook, but that would make Notebook stand in for conversation history and learning evidence it was not designed to hold. It is a workaround, not the goal.
What I hope for is more specific: DeepTutor should support handing its built-in Chat capabilities to an external AI Agent through stable APIs and MCP. If DeepTutor’s own Chat can use a learning resource, capability, context, or operation, an external Agent should be able to use the corresponding DeepTutor capability with equivalent standing and learning effect. The external Agent would provide the conversation and fit into the user’s existing workflow; DeepTutor would remain the learning system that supplies its specialized capabilities, maintains the learner model, and records learning activity with correct provenance.
This would give users a way to replace—or, for now, temporarily bypass—DeepTutor’s built-in Chat when it is not reliable enough, while continuing to use DeepTutor’s learning capabilities from the AI tools they already use. It would require more than an MCP wrapper around today’s endpoints: the APIs and internal concepts would need to represent external agents as distinct actors, preserve the learning interaction that led to an update, and keep learner self-reports, tutor assessments, and system inferences separate.
Would first-class, functionally equivalent access to DeepTutor’s built-in Chat capabilities from external AI Agents fit the project’s direction? If so, what API and internal model changes would make that possible?
All reactions