← 返回文章列表

功能越多,项目为什么可能越不可信:TeachFlow 的能力采纳边界

复盘 TeachFlow 参考 DeepTutor 与 edulab 时,为什么只采纳窄能力、保留本地事实权威,而不复制第二套产品。

返回 TeachFlow 项目总览

当我第一次研究 DeepTutor 和 edulab 时,最直接的冲动是“把优秀能力都接进来”。DeepTutor 有完整的能力路由、知识库、研究与解题工作区;edulab 能把数学问题变成可交互课程页,并用 SymPy 让答案、步骤和画面共享精确计算来源。它们都比一个单点示例更完整。

但对 TeachFlow 来说,整仓移植会带来一个更难解释的问题:最终到底是谁拥有课堂、课程、学生证据与教师决定?

参考项目不是零成本零件

外部项目提供的不只是某个函数,还包含自己的页面、会话、存储、运行时、权限假设和升级节奏。DeepTutor 官方仓库当前描述的是一个覆盖 Chat、Quiz、Research、Visualize、Solve、Course Study、Mastery Path 等多种模式的统一能力运行时;edulab 则把题目规范化、SymPy 精确计算、数据驱动模板和自校验组合成完整交付页。

如果把这些系统整体嵌入 TeachFlow,就会出现“两条河”:

  • 一条河保存 TeachFlow 的 Lesson / Scene / Publication / LearningEvidence
  • 另一条河保存外部运行时的会话、内容块、知识库或生成页面;
  • 教师在两个界面间判断;
  • 失败恢复和版本升级需要跨越两套状态;
  • 外部模型输出可能绕过 TeachFlow 的人工准入与事实权威。

决策:迁移能力,不迁移权威

TeachFlow 最终采用“窄适配”的方式:从参考项目吸收可独立验证的机制,让输出回到已有领域对象。

外部能力进入 TeachFlow 的采纳边界

edulab 方向最典型。项目没有嵌入整页 HTML、CLI、题型注册器和模板运行时,而是引入最小 analytic_kernel.py 与 SymPy 计算路径:Next.js API 负责输入校验和协议适配,React/SVG 消费结构化结果。这样,精确计算成为 TeachFlow 的一种能力,而不是第二个产品入口。

DeepTutor 方向则更多吸收“能力与工具分层”“模型—工具—观察—再生成”和引用保留的思想。生成结果必须落回 TeachFlow 既有的课程、场景、内容块和教材引用合同;Agent 不能因为来自更强的外部运行时,就直接拥有掌握度、知识图发布或教师审核权。

一个能力进入项目要过五道门

我后来把采纳判断固定为五个问题:

  1. 用户任务:它解决的是教师或学生的哪个真实任务?
  2. 最小输入输出:能否用稳定 DTO 或纯函数边界表达?
  3. 事实权威:结果写回哪个已有对象,谁批准?
  4. 失败隔离:外部模型、Python 或服务不可用时,哪条基础链仍能继续?
  5. 停止条件:什么证据不足时必须停止扩展?

这套问题也解释了为什么“功能越多”可能越不可信。如果新增能力无法回答权威归属和失败语义,它只是扩大了演示面积。

开源许可不是架构许可

edulab 使用 Apache-2.0 许可,意味着可以在遵守许可条件的前提下使用和修改代码;但许可证并不会替你解决领域归属、接口稳定、供应链更新或产品一致性。DeepTutor 的功能面和运行时也在持续演进,因此任何比较都应固定访问日期、版本或提交,不能把某天的 README 当成永久合同。

在 TeachFlow 中,外部来源被分成三种状态:

  • 已采纳:例如最小 SymPy 计算内核与结构化渲染方法;
  • 仅参考:例如完整 Capability/Tool 组织方式;
  • 明确不采纳或冻结:第二套前端、第二套会话存储、复杂多 Agent 运行时。

代价与收益

窄适配会失去“直接获得整个上游产品”的速度,也要求自己维护 DTO、兼容和测试。但它换来了更清晰的项目叙事:TeachFlow 拥有教学业务事实,外部能力只在被授权的范围内计算、检索或生成。

这不是否定上游项目。恰恰相反,只有先承认上游是完整产品,才不会把它误当作一段可以随意剪贴的代码。

常见问题与设计边界

为什么不做微服务,把两个项目都保留下来?
拆成服务仍然不能自动解决事实权威。若两个服务都能更新课程或学情,网络边界只会把双写问题藏得更深。先定义唯一写入者,再决定部署形态。

你怎么证明不是“借鉴概念、自己重写”?
对实际采用的代码应保留许可证、来源文件和本地适配边界;对只吸收的方法应明确写成参考,不宣称复用实现。TeachFlow 的 python/analytic_kernel.py 已在文件头记录来源和许可。

什么时候应该整体采用外部系统?
当外部系统本身就是用户要使用的主产品,并且身份、数据、升级与运维责任都愿意交给它时。TeachFlow 当前不是这个前提。

参考资料

结论

TeachFlow 与其他项目的关系不是“谁替代谁”,而是“谁拥有什么”。外部项目贡献能力与启发,TeachFlow 保留教学事实、工作流和人工决定。项目真正的成熟度,不体现在接入了多少仓库,而体现在每次接入之后权威边界仍然清楚。

← 返回文章列表