| name | kaoyan-math-notes |
| description | This skill handles note generation and updates for 考研数学 (Chinese graduate entrance math exam) preparation. Use it when users want to generate exam-oriented study notes from existing materials, update notes based on feedback, or create structured learning content with LaTeX formatting. |
| version | 1.0.0 |
考研数学笔记生成更新技能 (Kaoyan Math Notes)
📁 详细代码实现见 code.md
技能概述
本技能专注于考研数学笔记的生成和更新,帮助用户:
- 基于现成笔记生成考研学习笔记:将用户的原始笔记转化为考研导向的学习材料
- 根据反馈更新笔记:根据用户的学习反馈动态更新笔记内容
- LaTeX格式强制:所有数学公式必须使用LaTeX格式
- 已有笔记保护机制:不覆盖已有内容的增量创建
核心特色:
- ⚠️ LaTeX格式强制要求
- 个性化学习轨迹记录("我的理解记录")
- 错误模式追踪("我的错误类型")
- 与kaoyan-math-core集成,支持MemOS持久化
触发条件
触发此技能当:
笔记生成相关:
- "生成考研数学笔记" + 提供笔记
- "帮我整理成考研笔记" + 数学内容
- "生成学习笔记" + 考研数学上下文
笔记更新相关:
- "我对XX不理解" + 之前有笔记
- "更新数学笔记"、"补充数学笔记"
- "听课时不理解XX"
- "这个知识点不太明白"
不触发此技能当:
- 查询知识点结构 → 使用 kaoyan-math-structure
- MemOS配置/欠账检查 → 使用 kaoyan-math-core
笔记生成规范
内容生成来源
生成笔记内容时,必须参考以下资料:
-
高数资料目录: /Users/zhqznc/Documents/高数资料/
- 函数极限与连续:
函数极限与连续/函数极限与连续.md
- 其他章节按目录结构查找
-
生成优先级:
- 首选:用户提供的文件夹下的README.md(如果存在且有内容)中的内容
- 次选:高数资料中的内容
- 最后:AI 通用知识补充
-
内容规范:
- 定义、定理必须来自高数资料
- 例题优先使用高数资料中的例题
- 考试重点标注与高数资料一致
源笔记优先与必背/速查专项规则 ⚠️
处理用户已有章节笔记、截图、图片或要求更新“必背/速查/自测”类文件时,必须先按源笔记主线抽取,再压缩重排:
- 先读源笔记:先读取用户给出的章节笔记、当前笔记来源链接或图片/截图内容,不要先用 AI 另写一套表达。
- 抽取顺序:按“源笔记原句/公式/步骤 → 精简压缩 → 必要补充”的顺序处理。
- 保持主方法:如果源笔记或原图已有主方法,必须把该方法放主位;其他可行方法只能写成“备用方法/补充理解”,不能覆盖原资料主线。
- 必背/速查只保留高价值内容:优先保留定义、公式、性质、口诀、易错点、做题步骤、来源链接;长推导和完整例题留在源章节。
- 结构识别型知识不能只剩公式:先判断知识点是“纯公式型”还是“结构识别型”。结构识别型必须保留最小识别模板、做题启动步骤和必要图示/读图结论。
- 补充需标明边界:源笔记缺少模板、启动步骤或图示时可以补充,但补充内容必须与源笔记主线一致。
Markdown/LaTeX 写入验证清单 ⚠️
写入或替换含大量 LaTeX、反斜杠、代码块、表格的 Markdown 时,必须执行:
- 优先使用 Python raw string、占位符替换或
chr(92) 生成反斜杠;避免普通三引号字符串、复杂 inline printf 或未加引号 heredoc。
- 提取含中文括号、引号或特殊符号的标题/段落时,优先用 Python 读取文件并按标题边界定位,不用脆弱的 shell 引号拼接。
- 写入后立刻扫描控制字符,只允许换行、回车和制表符:
bad = [(i, b) for i, b in enumerate(path.read_bytes()) if b < 32 and b not in (9, 10, 13)]
assert not bad
- 回读目标段落,重点检查
\\begin、\\boxed、\\theta、\\lambda、\\rvert、cases 换行符和表格中的 LaTeX 管道符。
- 若发现转义污染,先修复并重新扫描;不得把受污染的笔记留给下一轮。
已有笔记保护机制 ⚠️
强制规则:生成笔记时,必须遵守以下保护机制:
- 检查现有文件:生成前先检查目标路径是否已有笔记文件
- 禁止覆盖:如果文件已存在且有内容,不得覆盖或修改
- 增量创建:只为缺失的知识点创建新文件
- 提示用户:发现已有笔记时,明确告知用户哪些已存在、哪些将新建
def check_existing_notes(target_path, knowledge_points):
"""检查已有笔记,返回待创建列表"""
existing = []
to_create = []
for kp in knowledge_points:
file_path = f"{target_path}/{kp}.md"
if os.path.exists(file_path) and has_content(file_path):
existing.append(kp)
else:
to_create.append(kp)
return {
"existing": existing,
"to_create": to_create
}
数学公式格式标准 ⚠️ [强制要求]
所有数学公式必须使用 LaTeX 格式,以确保在 Obsidian 中正确渲染。
内联公式
使用单个美元符号 $...$
示例:设函数 $f(x)$ 在点 $x_0$ 处可导
独立公式行
使用双美元符号 $$...$$
示例:
$$
\lim_{x \to x_0} \frac{f(x) - f(x_0)}{x - x_0} = f'(x_0)
$$
特殊符号 LaTeX 映射表
| 数学符号 | LaTeX 代码 | 说明 |
|---|
| $\alpha, \beta, \gamma$ | \alpha, \beta, \gamma | 希腊字母 |
| $\infty$ | \infty | 无穷大 |
| $\int$ | \int | 积分号 |
| $\sum$ | \sum | 求和 |
| $\leq, \geq$ | \leq, \geq | 不等号 |
| $\neq$ | \neq | 不等于 |
| $\approx$ | \approx | 约等于 |
| $\lim_{x \to x_0}$ | \lim_{x \to x_0} | 极限 |
| $\frac{a}{b}$ | \frac{a}{b} | 分数 |
| $f'(x)$ | f'(x) | 一阶导数 |
| $f''(x)$ | f''(x) | 二阶导数 |
AI 生成约束
生成笔记时:
- 自动检测公式并转换为 LaTeX
- 验证LaTeX 语法正确性
- 提供预览确保渲染正确
- 优先使用内联公式
$...$ 对于行内表达式
- 独立公式行使用
$$...$$ 对于重要公式
核心功能
功能1:基于现成笔记生成考研学习笔记
输入:
- 用户现成的数学笔记(文本或文件)
- 目标模块信息(高数/线代/概率 + 具体章节)
- 目标考试类型(数一/数二/数三)
处理:
- 解析现成笔记,提取知识点
- 补充考研导向内容:
- 考试重点标注
- 常考题型
- 易错点
- 解题技巧
- 典型例题
- 生成结构化学习笔记
输出:
- 保存为 Markdown/Obsidian 笔记文件
- 提供笔记预览
功能2:根据反馈更新笔记
输入:
- 已有笔记文件路径
- 用户反馈:
- 理解困难的地方
- 听课时不理解的地方
- 希望补充的内容
处理:
- 分析理解障碍
- 为什么不理解?(概念抽象/逻辑跳跃/缺乏直观解释)
- 在笔记中定位对应知识点
- 优化表达方式
- 添加辅助内容
- 标注易错点
- 记录思维过程
- 在"我的理解记录"中记录用户的原始理解
- 在"我的错误类型"中标注个性化错误模式
输出:
用户工作流
1. 用户提供现成数学笔记 + 模块信息
↓
2. AI 基于现成笔记生成考研导向学习笔记
↓
3. 用户学习笔记 + 听课
↓
4. 用户反馈理解问题/听课不理解的地方
↓
5. AI 分析反馈 + 更新笔记
↓
6. 循环步骤3-5
知识点模板
---
知识点: [知识点名称]
模块: [所属模块]
考试类型: 数一/数二/数三
考试频率: ⭐⭐⭐⭐⭐
学习状态: 待学习/进行中/已完成
tags: [标签1, 标签2, ...]
---
# [知识点名称]
## 原始定义
[来自用户现成笔记的定义内容]
## 直观理解 💡
[新增:直观解释、类比、几何意义]
## 定理条件 ⚠️
[新增:充要条件、适用范围]
## 考试重点 ⭐
[新增:考试频率、题型分布]
## 典型题型
[新增:常考题目类型]
## 解题方法
[新增:解题步骤、技巧]
## 易错点 ⚠️
[新增:常见错误、思维误区]
## 我的理解记录 🧠
### 初始理解
- 我一开始以为……
- 我之前的理解是……
### 误区记录
- 我误以为……
- ❌ 为什么会这样想:(条件/经验/直觉)
- ✅ 正确的理解应该是……
### 学习进展
- 听课后我发现……
- 做题时我注意到……
### 未解疑问
- 我仍然不清楚的是……
- 希望进一步了解……
## 我的错误类型 📌
### 条件遗漏 ⚠️
- [ ] 经常忘记……条件
- [ ] 例子:……
### 方法误选 ⚠️
- [ ] 总是想用……方法,但实际应该用……
- [ ] 原因分析:
### 推导跳步 ⚠️
- [ ] 经常跳过……步骤
- [ ] 导致……
### 计算失误 ⚠️
- [x] 经常算错……
- [ ] 提醒:……
## 例题
> [!example] 例1
> **题目**:...
> **分析**:...
> **解答**:...
> **评注**:...
## 相关知识点 📚
### 前置知识
- [[知识点1]] - 说明
- [[知识点2]] - 说明
### 常考组合
- [[知识点3]] - 结合使用说明
### 跨章节应用 ⚠️
- 与[[其他章节知识点]]的结合
## 补充说明 📝
<!-- UPDATE: YYYY-MM-DD 用户反馈不理解XX -->
[根据用户反馈动态添加的内容]
<!-- END UPDATE -->
更新标记
<!-- UPDATE: 2025-XX-XX 用户反馈不理解XX -->
[补充内容]
<!-- END UPDATE -->
关键组件
1. 知识点定位器
- 根据用户反馈找到对应知识点
- 模糊匹配(用户说的"那个函数"→识别为具体函数)
2. 理解障碍分析器
- 分析反馈内容
- 分类:概念抽象/逻辑跳跃/缺乏例题/条件不清
- 生成补充策略
3. 表达优化器
4. 例题生成器
文件组织结构
考研数学笔记/
├── 📑 索引.md # MOC (Map of Content),链接所有知识点
├── 📊 学习进度.md # Dashboard 显示所有知识点状态
│
├── 高数-极限/
│ ├── 极限定义.md
│ ├── 等价无穷小.md
│ ├── 洛必达法则.md
│ └── 泰勒公式.md
│
├── 高数-导数/
│ ├── 导数定义.md
│ ├── 中值定理.md
│ ├── 极值问题.md
│ └── 凹凸性.md
│
├── 高数-积分/
│ ├── 不定积分.md
│ ├── 定积分.md
│ └── 积分应用.md
│
├── 线代/
│ ├── 矩阵运算.md
│ ├── 行列式.md
│ ├── 线性方程组.md
│ ├── 特征值.md
│ └── 二次型.md
│
└── 概率/
├── 随机变量.md
├── 常用分布.md
└── 数字特征.md
验证标准
- ✅ 能正确解析用户现成笔记
- ✅ 能识别知识点结构并按知识点分文件
- ✅ 生成的笔记包含 Obsidian 格式(properties、tags、callouts、wikilinks)
- ✅ 生成的笔记包含考研导向内容(考试重点、题型、易错点)
- ✅ 能根据用户反馈定位对应的知识点文件
- ✅ 能正确更新笔记文件并添加更新标记
- ✅ 所有数学公式使用LaTeX格式(
$...$或$$...$$)
- ✅ 特殊符号正确转换为LaTeX代码
- ✅ 触发条件准确(不会误触发)
- ✅ 已有笔记保护机制正常工作
限制条件
- 需要用户提供现成笔记或文件路径
- 需要明确模块信息(高数/线代/概率)
- 笔记更新需要提供之前的笔记文件路径
- 触发条件明确要求"考研"上下文
技能集成
依赖技能
| 技能 | 用途 |
|---|
| kaoyan-math-core | 保存错误记录、获取个性化提醒 |
| kaoyan-math-structure | 获取知识点结构、目录模板 |
| obsidian-markdown | 创建Obsidian笔记 |
创建日期: 2026-03-10
版本: 1.0.0