FROM THE NOTEBOOK
从答题助手到学习状态机:数学物理导师 Skill 的设计与缺口
拆解七类教学动作、130+ 知识点、五级掌握度与文件优先记忆,并审视依赖、测试、状态一致性和产品化距离。

这个仓库不是一套大模型权重,也不是完整 Web 应用,而是一个面向 Agent 的教学 Skill 包。它试图把“帮我解这道题”扩展成一套持续学习协议:记录学生掌握到哪里、为什么出错、什么时候复习,以及下一轮该解释、训练还是可视化。
封面来自仓库 scripts/plot_template.py 的实际输出。脚本在安装 NumPy、SciPy 与 Matplotlib 后成功运行;系统 Python 初次执行则因缺少 Matplotlib 失败,这恰好暴露了文章后面要讨论的工程边界。
七类动作围绕同一份学习状态
README 将能力归纳为 solve、review、diagnose、train、feynman、visualize、export 七类。仓库中有六个独立模式文件,Feynman 教学法主要写在总 Skill 协议与其他模式的追问环节里,而不是一个单独 modes/feynman.md。
solve不只给答案,而是要求识别已知/未知、列出适用条件、分步推导并追问关键理由。review读取到期知识点,按掌握度和遗忘间隔排序。diagnose从概念混淆、计算失误、公式误用、策略错误与物理直觉缺失五类寻找短板。train逐题调整难度,并把错题重新穿插。feynman要求学生用自己的话解释,Agent 通过边界、反例和追问寻找“会算但不会讲”的空洞。visualize先判断图是否真的有用,再选择函数图、矢量场、3D 曲面、方向场等表达。export将报告、公式表、错题集、复习幻灯片或笔记整理成文件。
这些动作的价值来自共享状态。如果 solve 的错误没有进入 weaknesses,review 就不知道该复习什么;如果一次正确直接把 mastery 提到精通,train 就会过早增加难度。
INTERACTIVE / REVIEW ROUTER
把一次错误路由到下一次学习动作
这是依据仓库规则制作的教学演示,不会修改本地 Skill 数据。先定位混淆概念,再用自己的话解释边界与反例。
- 复习间隔
- 1 天
- 掌握度建议
- 🟥 初识
知识树足够大,但仍是静态目录
knowledge-taxonomy.md 把高等数学分成函数与极限、一元微分、一元积分、空间解析几何、多元微分、多元积分、级数、微分方程八章;大学物理分成质点、刚体、热学、静电、稳恒磁场、电磁感应、振动与波、光学、相对论、量子基础十章,总计 130 多个细分点。
这为标签、弱点归档和复习调度提供了稳定地址,但它不是依赖图。比如“多元函数极值”依赖偏导、全微分与二次型,静态章节列表不会自动阻止 Agent 在前置知识缺失时安排高阶训练。下一步应给知识点增加稳定 ID、prerequisites 与版本号,而不是继续增加更多标题。
五级掌握度与简化间隔复习
学习状态使用五级颜色:初识、理解、应用、熟练、精通。last_review、next_review、streak 与 error_count 由 Agent 维护;掌握度升级必须经过追问检验,不能因为一次答案正确自动跃迁。连续五次复习正确后,弱点才可移入“已解决”。
间隔策略借鉴 Leitner 思路,但实现主要是协议描述,而非独立调度器。文件优先的好处是透明:knowledge-tree.md、weaknesses.md、会话与问题记录都能被人直接阅读;坏处是并发写入、格式漂移和迁移需要额外治理。
文件优先记忆比聊天历史可靠在哪里
仓库建议将用户状态放在 ~/.math-physics-tutor/:个人资料、知识树、薄弱项、每日会话和按知识点归档的问题各有文件。这样换一个 Agent 会话仍能恢复学习轨迹,用户也能检查和备份记录。
但“用 Markdown 保存”不自动等于可靠。当前协议没有 Schema 校验、原子写入、文件锁、版本迁移和损坏恢复;两个 Agent 同时更新 knowledge-tree.md 可能覆盖彼此。产品化时,应把稳定 ID 与机器状态放入版本化 JSON/SQLite,把 Markdown 作为可阅读投影,并保留导入导出。
工具层:可视化与导出已经有实物,但依赖链不闭合
plot_template.py 提供折线、散点、柱状、直方、热图、等高线、箱线、小提琴和 3D 示例;style_presets.py 提供出版样式、色板和期刊尺寸;figure_export.py 检查输出尺寸和 PDF 字体嵌入。可视化模式也明确要求“先回答图是否有用”,这是一个比自动画图更成熟的前置判断。
文档导出部分带有大型 OOXML 编辑器代码和 DOCX 验证接口,但仓库本身没有依赖清单、模板目录与对应 ooxml 包。它更像从更大工具环境中抽取的能力片段,不能据此承诺任意机器开箱生成 DOCX/PPTX。
本地验证结果很清楚:全部 Python 文件可以通过 compileall,但系统环境直接运行绘图示例时报 ModuleNotFoundError: matplotlib;在隔离环境安装 NumPy、SciPy、Matplotlib 后,折线图成功输出 3034×1834 PNG。仓库需要 pyproject.toml 或 requirements、最小支持版本和一条自动 smoke test。
规则写得完整,不等于规则被执行
Skill 的强项是教学协议细致:think-aloud 拦截、追问、错误分类、复习优先级和文件结构都有明确文本。但大多数约束依赖 Agent 遵守自然语言,没有代码层 validator 检查一次会话是否真的更新了状态、是否错误升级 mastery、是否写入了非法知识点。
最低限度的工程闭环应包括:
- 为 profile、knowledge item、weakness、session 建立版本化 Schema;
- 编写纯函数计算 next review 和 mastery transition;
- 用测试覆盖五类错误、连续正确、回退和数据不足;
- 给每种模式建立输入输出契约与黄金样例;
- 将可选的绘图、DOCX、PPTX 依赖拆成 extras,并在缺失时给出明确降级路径。
作为学习笔记系统,它最有潜力的连接
本网站把这篇文章归入“工具”主题,但 Skill 的真正方向仍是个人知识库:一个知识点应能连接到题目、错误、解释、图、复习记录与相关概念。学习笔记现在是独立功能而非分类主题:本地目录经显式同步后生成公开只读页,只有标记 publish: true 的条目进入博客,私人记录不上传。
这种边界比在静态站里伪造一个多人在线 Obsidian 更诚实。写入发生在仅绑定 loopback 的 Blog Studio,发布仍经过 Git、构建与审计;未来若需要双向编辑,还应补齐同步冲突、版本历史和导出。
结论
数学物理导师已经是一份范围清楚、教学判断充分的 Skill 设计:它知道何时不应直接给答案,也知道“正确”与“掌握”之间还差追问和复习。但工程上仍处于协议先行阶段。把状态迁移、调度函数、依赖打包和自动测试补齐之后,它才会从“优秀 Agent 行为说明”成长为可重复运行的个人学习基础设施。
本文采用 CC BY-NC-SA 4.0 许可;转载时请保留作者与原文链接。
