导师MCP——LLMs的自适应学习运行时
将任何LLM转化为 智能导师.Tutor MCP是一个开源软件 主控程序 服务器,为人工智能助手提供持久的学习者状态、认知科学调度、会话记忆、误解、元认知和可审计的教学决策。无题库——LLM生成内容,导师MCP记忆并决定。
告诉法学硕士你想学什么-- *西班牙语旅游*, *转到后端*, *中世纪历史* --运行时会安排整个过程:下一步要学习什么,什么时候复习,什么时候掌握了一个概念,什么时候需要一个提示。下一次对话从学习者已经掌握、遗忘、误解、感受到并明确承诺下一步要做的事情开始。
状态--alpha v0.3.1。 全调节管道(相位FSM+概念/动作选择器+门+阈值解析器)默认开启;淡入淡出控制器是可选的。适用于个人使用、小组和课堂规模(≤200名活跃学习者)。单租户、单节点、SQLite+进程内调度器。
兼容客户端
Claude(网络+桌面+代码)、ChatGPT(开发人员模式)、Le Chat、Gemini Enterprise/CLI。请参阅 客户端设置指南 在......下面
连续性模型
缺少的层不满足。这是连续性。
LLMs可以解释。导师MCP记住并决定。运行时拥有持久的学习者状态和教学决策;法学硕士可以自由地解释、重新构建、提问、生成练习,并从收到的痕迹中巩固叙事记忆。
| 图层 | 存储方式 | 它为导师提供了什么 |
|---|---|---|
| 算法状态 | SQLite域、概念状态、交互、影响、校准、转移、意图 | 域、先决条件、阶段、掌握、保留、能力、审查时间、转移准备、主动误解 |
| 情景记忆 | Markdown sessions/*.md 使用YAML frontmatter | 影响、触及的概念、突出的交流、心理模型观察、实现意图 |
| 叙事状态 | Markdown MEMORY.md, MEMORY_pending.md, concepts/*.md, archives/*.md | 稳定的学习者事实、待定的观察结果、概念笔记、中期轨迹、需要验证的矛盾 |
| 操作员视图 | 教学快照+决策回放 | 为什么选择一项活动,为什么一个概念被搁置,证据是否缺失或嘈杂 |
get_next_activity 将算法信号与 episodic_context:稳定的内存、待定的观察结果、最近的会话、档案、概念笔记和检测到的OLM不一致。LLM收到了足够的上下文,可以对学习者当前的认知状态形成一个简短的假设,但它没有自己的时间表。
运作原理
服务器位于学习者和LLM之间。它干净利落地分割了工作:
| 组件 | 拥有 | 不拥有 |
|---|---|---|
| 确定性引擎——导师MCP | 认知信号、相位控制、证据门、会话历史、Markdown学习者记忆、审计跟踪 | 面向学习者的散文、例子、苏格拉底式措辞 |
| 生成型教练——你的法学硕士 | 内容生成、自然语言指导、口译简报、会话总结、记忆巩固 | 持久掌握状态、复习时间、先决条件 |
从第一个会话开始运行四个循环:
- 学习循环 --每次交换前后,LLM都会呼叫
get_next_activity和record_interaction运行时在每次交互时实时更新BKT掌握、FSRS回忆、IRT能力、Rasch/Elo运动校准、转移证据和误解状态。LLM从不自行选择日程安排。 - 叙事记忆循环 —
record_session_close要求法学硕士提供事实会话跟踪;update_learner_memory存储稳定的内存、待定的观察结果、概念笔记、会话和档案。下一个get_next_activity通话可以使用这些痕迹来避免一般的练习。 - 元认知循环 --影响签到(
record_affect),校准跟踪(calibration_check/record_calibration_result)自主性得分观察学习者与系统的关系。事实的一面镜子展示了巩固的依赖模式——该系统旨在使自己逐渐变得不必要。 - 动机循环 --一个简短的引擎为每个练习选择一个激励角度(里程碑、能力价值、成长心态、情感重构、平台重构、效用价值),并发出 *信号+指令* --从不录制文本。LLM表达了这一点。
智能辅导系统的支柱清晰地映射:
| ITS支柱 | 所有者 |
|---|---|
| 领域模型 (概念图,先决条件) | 导师MCP运行时--KST验证 |
| 学习者模型 (掌握、能力、回忆、转移) | 指导MCP运行时——BKT、IRT、Rasch/Elo、PFA |
| 教学模式 (调度、监管、警报) | 指导MCP运行时——FSRS、证据门、编排器 |
| 界面+内容 | 法学硕士——克劳德/ChatGPT/乐聊/双子座 |
认知科学是僵化的、可衡量的;LLM具有无限的灵活性。他们一起发布了一个ITS,可以在第一天就为任何主题工作,而不需要编辑团队。
快速开始
1.安装或构建
# Latest Linux release (no sudo: set TUTOR_MCP_INSTALL_DIR)
curl -fsSL https://tutor-mcp.dev/install.sh | sh
# Or build from source
go build -o tutor-mcp2.跑步
export JWT_SECRET="$(openssl rand -base64 32)" # required — must be base64
export BASE_URL=https://your.domain # public origin, no trailing slash
./tutor-mcp # listens on :3000 by default验证: curl $BASE_URL/health → {"status":"ok"}.
为了实际使用,请将运行时放在具有TLS的公共反向代理后面——请参阅 操作.mdWeb客户端(Claude.ai、ChatGPT、Le Chat)需要公共HTTPS端点; http://localhost 被其云连接器拒绝。
3.连接客户端
添加 https://your.domain/mcp 作为定制MCP连接器。OAuth 2.1+动态客户端注册的PKCE:无需手动复制客户端ID或密钥。在第一次连接时,客户端打开 /authorize --注册(电子邮件+密码)或登录。后续启动会静默地重用刷新令牌。
| 客户端 | 路径 | 注释 |
|---|---|---|
| Claude.ai | 设置→ 连接器→ + → URL https://your.domain/mcp | Pro、Max、团队、企业 |
| ChatGPT | 设置→ 连接器→ 高级→ 开发者模式→ 创建 | Plus、Pro、团队、企业、教育 |
| 在线聊天 | 连接器→ + 添加连接器→ 自定义MCP | 自动检测OAuth |
| 双子座企业 | GCP控制台→ 自定义MCP服务器数据存储 | StreamableHTTP传输 |
| Gemini CLI | geminicli.com/docs/tools/mcp-server/ | 本地CLI |
| 克劳德代码 (CLI,本地) | .mcp.json 随着 "url": "http://localhost:3000/mcp" | 不需要HTTPS |
MCP工具(35)
所有工具都接受可选 domain_id 适用于多领域学习者;没有它,将使用最近活动的非存档域。
核心学习循环(7)
| 工具 | 目的 |
|---|---|
get_learner_context | 会话开始上下文:活动域、概念状态、近期历史、活动误解 |
get_pending_alerts | 学习+元认知警报需要采取行动 |
get_next_activity | 下一个最佳活动+情景背景+推理请求+导师模式+动机简报+掌握不确定性+转移概况+Rasch/Elo校准 |
record_interaction | 坚持结果,更新BKT/FSRS/IRT/Rasch Elo;跟踪提示、主动性、错误类型、误解、量规证据、解释简报 |
check_mastery | 精通挑战准备:BKT+证据多样性+不确定性+转移状态 |
get_olm_snapshot | 开放式学习者模式:按概念掌握、保留、边缘会员资格 |
get_dashboard_state | 完整的仪表板:进度、保留率、自主性、校准偏差、影响历史 |
域名管理(9)
| 工具 | 目的 |
|---|---|
init_domain | 使用概念图、先决条件、个人目标创建域 |
add_concepts | 添加概念而不重置进度 |
validate_domain_graph | 审计图:周期、孤立、深度、断开连接 |
archive_domain / unarchive_domain / delete_domain | 生命周期 |
set_domain_priority | 为调度权重重新排序域 |
set_goal_relevance / get_goal_relevance | LLM在概念图上分解相关向量(偏置概念选择器)——由 REGULATION_GOAL |
元认知(5)
| 工具 | 目的 |
|---|---|
record_affect | 能量+信心(开始),满意度+难度+意图(结束) |
calibration_check / record_calibration_result | 自我预测(1-5)+偏差更新 |
get_autonomy_metrics | 自主性得分为0-1,包含4个组成部分(主动性、校准、提示独立性、主动审查) |
get_metacognitive_mirror | 当依赖模式在3个以上会话中整合时,会显示事实镜像消息 |
update_learner_profile | 坚持学习者元数据(目标、语言、校准偏差等) |
审核与回放(3)
| 工具 | 目的 |
|---|---|
get_pedagogical_snapshots | 之前/观察/之后/决策追踪 |
get_decision_replay_summary | 离线审计:回放覆盖率、缺少量规、传输差距、JSON问题 |
get_misconceptions | 对状态(活动/已解决)和频率的概念误解 |
转让与谈判(4)
| 工具 | 目的 |
|---|---|
feynman_challenge | 学员解释掌握的概念;LLM检测BKT注射间隙 |
transfer_challenge / record_transfer_result | 结构化探头 near/far/debugging/teaching/creative |
learning_negotiation | 公开系统计划+权衡;学习者可以提出替代方案 |
记忆与会话(5)
| 工具 | 目的 |
|---|---|
update_learner_memory / read_raw_session / get_memory_state | Markdown内存:会话、概念、稳定内存、档案 |
record_session_close | 简要回顾+可选Gollwitzer(如果是)实施意图 |
queue_webhook_message | 排队进行结构化的Discord微调(why_now, learning_gain, open_loop, next_action) |
可用性(1)
| 工具 | 目的 |
|---|---|
get_availability_model | 学习者的时间窗口和会话频率 |
警报引擎
调度器检测到九种警报类型——学习(FORGETTING, PLATEAU, ZPD_DRIFT, OVERLOAD, MASTERY_READY)元认知(DEPENDENCY_INCREASING, CALIBRATION_DIVERGING, AFFECT_NEGATIVE, TRANSFER_BLOCKED).每日除尘,每日频率上限;存档/删除的域会从读取和webhook中过滤出来。
认知科学引擎
由监管协调器组成的纯函数算法在每次交互中运行(engine/orchestrator.go;设计说明 docs/regulation-design/).
| 算法 | 角色 |
|---|---|
| BKT +个性化BKT | 评估每个概念的掌握信心,而不仅仅是学习者今天的回答是否正确;近期历史概况个性化 P(Learn), P(Slip), P(Guess) --从未被LLM调谐过 |
| 部队编制需求研究 | 使用稳定性和难度曲线决定何时恢复概念 |
| 项目反应理论 | 根据反应模式跟踪学习者的能力θ,以便根据当前学习者校准活动难度 |
| 拉西/埃洛 | 保持确定性学习者能力与运动难度信号,暴露于LLM并存储在快照中 |
| 请查收附件 | 权衡每个概念的得失,以预测下一次尝试的可能结果 |
| 韩国标准时间 | 验证先决条件图;盖茨关于祖先掌握的新观念 |
| 结构化转移 | 检查知识是否超越了培训模式 near/far/debugging/teaching/creative 探头 |
这 调节管道 内部以7级链条的形式运行 get_next_activity:阈值解析器→ 目标分解器→ 相位FSM(DIAGNOSTIC ↔ INSTRUCTION ↔ MAINTENANCE) → 概念选择器→ 大门(防重复/会议预算/无边缘逃生)→ 动作选择器→ 淡入淡出控制器。纯功能经过单元测试(~90次测试);SQLite内存+迁移测试涵盖了编排器集成。完整的设计原理 docs/regulation-design/.
配置
启动时读取的环境变量:
| 变量 | 默认值 | 效果 |
|---|---|---|
JWT_SECRET | — *(必填)* | HS256的秘密。必须是有效的base64(启动时拒绝普通字符串)。使用 openssl rand -base64 32 --建议HS256使用32+解码字节。 |
PORT | 3000 | HTTP侦听端口 |
DB_PATH | ./data/runtime.db | SQLite路径 |
BASE_URL | http://localhost:$PORT | 公共来源(没有尾随斜线)。在以下情况下触发HSTS https://. |
LOG_LEVEL | info | debug, info, warn, error |
TRUSTED_PROXY_CIDRS | -- | 可信反向代理的逗号分隔CIDR。 公共代理后面需要 --没有它,每个IP速率限制都会在代理的环回桶下崩溃。 |
MCP_RATE_LIMIT_PER_MIN | 60 | 每IP和每学员上限 /mcp |
MCP_RATE_LIMIT_BURST | 60 | 爆裂余量 |
TUTOR_MCP_MEMORY_ENABLED | on | Markdown学习记忆;集 off 预存合约 |
TUTOR_MCP_MEMORY_ROOT | ~/.tutor-mcp/ | 内存FS根目录 |
REGULATION_THRESHOLD | on | off 恢复到传统分割阈值(BKT 0.85/KST 0.70/Mid 0.80) |
REGULATION_GOAL | on | off 隐藏 set_goal_relevance / get_goal_relevance 并删除目标感知提示部分 |
REGULATION_ACTION / _CONCEPT / _GATE | on | off 仅删除系统提示附录——选择器/门逻辑始终运行 |
REGULATION_FADE | off *(选择加入)* | 严格字面意思 on 启用淡入淡出控制器(冗长度降低+webhook频率+ZPD攻击性+主动审查)。任何其他值都会使其关闭 |
身份验证端点的速率限制为10/min(/authorize, /token),5/min(/register);MCP端点应用上述配置的每个IP和每个学习者上限。
建筑
main.go HTTP + MCP handler + OAuth + scheduler
auth/ OAuth 2.1 + JWT + PKCE + rate limiter
algorithms/ BKT / FSRS / IRT / Rasch-Elo / PFA / KST + thresholds
engine/ Orchestrator + phase FSM + selectors + gate + fade
+ alert / motivation / mirror / replay / OLM
models/ Typed structs (learner, domain, interactions, regulation, …)
db/ SQLite store + schema + idempotent migrations
memory/ Markdown learner memory (stable / pending / sessions / concepts / archives)
tools/ MCP tool handlers + system prompt + rubrics调节引擎是分层的: 纯净 决策组件(phase_fsm.go, concept_selector.go, action_selector.go, gate.go)由A组成 不纯的 编排器(orchestrator.go).同样的分离也适用于元认知(自主、镜像、导师模式)和动机(简要选择)模块。
容量和尺寸
故意地 单租户、单节点 --为自己、一个小团体或一个适度的组织自我托管。SQLite+进程内调度器;没有集群,没有代理,没有外部依赖。
| 个人资料 | 活动/天 | 已注册 | 用例 |
|---|---|---|---|
| 个人 | 1 | 1–5 | 自学 |
| 小群 | 1-10 | 最多30 | 家庭/团队 |
| 教室 | 10-50次 | 最多150次 | 引导式会议 |
| 小型组织 | 50–200 | 高达600 | 持续负载 |
硬性上限约200名同时活跃的学习者 --除此之外,调度器滴答作响,SQLite的串行化写入成为限制。切换到该规模的Postgres+外部化调度器。
闲置占地面积:约30 MB RSS,约15 MB二进制文件,约10 MB初始数据库(+50 KB/主动学习者/月)。在Raspberry Pi 4和每月5欧元的个人使用VPS上进行了测试。
技术栈
教学可靠性
运行时有意将确定性决策与LLM辅导自由分开:运行时拥有状态转换、阈值、图验证、证据门、调度和审计快照;LLM拥有示例、提示、反馈、语气和解释。 record_interaction 接受结构化 rubric_json / rubric_score_json 并将其保存在互动+教学快照中。 get_decision_replay_summary 表面审计质量(缺少量规、传输差距、JSON问题)。静态金牌涵盖了已知的故障模式(假阳性高BKT、缺失量规、缺失转移、干净回放)。
致谢
站在Corbett&Anderson(BKT,1995)、开放空间重复(FSRS)、Lord&Novick(IRT,1968)、Pavlik等人(PFA,2009)、Falmagne&Doignon(KST,2011)、Hidi&Renninger(兴趣阶段,2006)、McClelland/McNaughton/O'Reilly(CLS启发的记忆分层,1995)的肩膀上。
运营·安全·贡献·路线图
- 运营 --备份、还原、脱离主机复制、systemd用户设置: 操作.md.
- 安全 --私人披露渠道和运营商强化清单: 安全.md.不要公开漏洞问题。
- 贡献 --叉,分支从
staging,常规提交,PR中的测试计划: 贡献.md.维持单一作者;小焦点变化最快。
许可证
麻省理工学院 --免费供个人和商业使用,保留版权+许可文本。
