打开学习平台,课程、文章、测验、笔记堆了一屏,真正难的问题却很简单:下一步该干什么?一份平铺的资源列表回答不了这个问题——它不知道你的先修课有没有过、弱项在哪、进度到哪、今天还剩多少时间。Study Copilot 想做的,是把这些连接关系变成一条能解释的下一步动作。

它的判断逻辑并不神秘:先取回学习者的图上下文,再决定推荐什么。能推荐主题、生成学习计划、更新进度、记录一次测验尝试、把资源标记为完成、生成练习题。凡是会改动记录的动作,都必须经过明确确认才会执行。

学习图谱里有什么

这套系统把学习数据建模成图,节点包括用户、主题、进度、技能缺口、资源、测验、学习计划以及计划条目。关系则覆盖了进度归属、主题指向、先修关系、资源挂载、测验挂载和计划包含。

推荐之所以能解释,靠的是一段查询:先找到用户进度对应的主题,再筛出候选主题,条件是每一个先修主题的掌握度都达到 0.7 以上,最后按难度排序返回。换句话说,系统不是猜你想学什么,而是先确认你有没有资格学。

从提问到落库,中间隔着一道确认

浏览器调用 FastAPI,代理向仓库层要用户上下文和候选主题,然后形成一个结构化的决策。动作服务先把变更暂存起来,只有拿到批准才真正执行;仓库层再把参数化的 Cypher 查询发给 FalkorDB。检索、决策逻辑、安全边界和持久化被拆成四层,演示版本不需要外部大模型密钥也能跑通。

实际用起来是这样几条路径:

  • 问“我接下来该学什么”,拿到一条基于图谱的推荐;
  • 说“建个学习计划”,然后批准那条待执行动作;
  • 说“更新我的进度”“把这个资源标记为完成”或“记录一次测验尝试”,同样要过确认;
  • 说“生成练习题”,取回推荐主题下挂着的测验。

界面上会把检索到的上下文和动作结果一并展示出来,用户能看见代理为什么给出这条建议,而不是只收到一个结论。

连接数据改变了代理的角色

这套东西跑下来最直接的一条经验是:当数据是连通的,代理的职责就从“生成答案”变成了“基于证据做决策”。先修关系的遍历和关系的检查在图数据库里是自然操作,而确认关卡则为那些会改动学习者记录的动作划出了一条实用的安全边界。

局限也摆在明面上。这个演示用的是确定性的意图路由,待执行动作存在内存里。后续要补的是带认证的用户体系、可持久化的审计事件、更丰富的题目内容,以及一个可选的生产级大模型提供方。

对做学习类产品的人来说,这里值得抄的不是某个模型,而是那个顺序:先查证据,再出建议,改动前先要一句同意。