| name | minimind-learning |
| description | MiniMind 学习助手。自动记录学习笔记,识别 RMSNorm, LayerNorm, RoPE, Attention, LoRA, DPO, PPO, GRPO, SFT, RLHF 等术语。触发词:学习、开始、MiniMind、归一化、位置编码、注意力、训练、微调。 |
| metadata | {"author":"Joye Huang","version":"1.0.0","license":"MIT","tags":"minimind, learning, llm, transformer, training"} |
MiniMind Learning Assistant
自动化学习笔记系统,静默记录你的 MiniMind 学习历程。
When to use
自动激活场景:
-
学习开始时:
- 用户说:"开始今天的学习"、"开始学习"、"今天学什么"
- 用户说:"继续学习"、"学习 MiniMind"
-
讨论 MiniMind 内容时:
- 提问包含:RMSNorm, LayerNorm, RoPE, YaRN, Attention, GQA, SwiGLU, Transformer, LoRA, DPO, PPO, GRPO, SFT, RLHF, RLAIF, MoE
- 问题词:什么是、如何、为什么、怎样、解释、原理
- 遇到问题:报错、错误、失败、Bug
-
显式记录请求:
How to use
1. 初始化检查
首次激活时,确保笔记结构存在:
git rev-parse --show-toplevel
mkdir -p docs/learning_materials
模板位置:~/.claude/skills/minimind-learning/templates/
2. 学习引导模式
当用户说"开始学习"时,主动引导:
👋 欢迎开始今天的 MiniMind 学习!
你想学习哪个模块?
**基础组件**:
1. 归一化技术 - RMSNorm, LayerNorm
2. 位置编码 - RoPE, YaRN
3. 注意力机制 - Attention, GQA
4. 前馈网络 - FeedForward, SwiGLU
**训练技术**:
5. 预训练 - Pretraining
6. 监督微调 - SFT
7. 参数高效微调 - LoRA
8. 强化学习 - DPO, PPO, GRPO
直接告诉我编号或主题名称,我会为你讲解!
(学习过程中我会自动记录笔记到 `docs/` 目录)
3. 触发检测
每次用户消息后,检查是否满足以下任一条件:
Tier 1: 即时触发(立即更新笔记)
TERMS = [
"RMSNorm", "LayerNorm", "BatchNorm", "GroupNorm",
"RoPE", "YaRN", "ALiBi", "位置编码",
"Attention", "注意力", "GQA", "MQA", "FlashAttention",
"FeedForward", "前馈", "SwiGLU", "GELU", "GLU",
"Transformer", "TransformerBlock",
"pretrain", "预训练", "pretraining",
"SFT", "监督微调", "fine-tuning", "微调",
"LoRA", "lora", "LoRA-r", "LoRA-alpha",
"DPO", "PPO", "GRPO", "SPO",
"RLHF", "RLAIF", "强化学习",
"distillation", "蒸馏", "知识蒸馏",
"MiniMind", "MiniMind-Dense", "MiniMind-MoE",
"MoE", "混合专家", "expert routing",
"MiniMind-Reason", "R1",
]
QUESTION_WORDS = ["什么是", "如何", "为什么", "怎样", "解释", "原理", "作用"]
PROBLEM_MARKERS = ["报错", "错误", "失败", "Bug", "不工作", "问题"]
if any(term in user_message for term in TERMS):
trigger_tier_1()
elif any(word in user_message for word in QUESTION_WORDS):
trigger_tier_1()
elif any(marker in user_message for marker in PROBLEM_MARKERS):
trigger_tier_1()
Tier 2: 延迟触发(5秒后批量更新)
if (
conversation_turns >= 3 or
"```python" in assistant_response or
"$" in assistant_response or
len(assistant_response) > 1000 or
"model/" in assistant_response or
"trainer/" in assistant_response
):
trigger_tier_2()
Tier 3: 显式触发(总是更新)
EXPLICIT_KEYWORDS = ["记录", "记下", "保存", "写入笔记", "更新笔记"]
if any(kw in user_message for kw in EXPLICIT_KEYWORDS):
trigger_tier_3()
4. 内容提取
从对话中提取结构化信息:
def extract_question(user_message):
patterns = [
r"^(.*[??])$",
r"^(什么是|如何|为什么)(.*?)([??。]|$)",
r"(.*)(吗|呢)[??。]*$"
]
def extract_concepts(assistant_response):
patterns = [
r"([A-Z\u4e00-\u9fa5]{2,})\s*(是|:)(.*?)([。\n]|$)",
r"\*\*([^*]+)\*\*\s*[::](.*?)([。\n]|$)",
r"###\s+([^\n]+)\n\n([^\n]+)"
]
def extract_problem_solution(conversation):
problem = {
"description": "",
"root_cause": "",
"solution": ""
}
def extract_code_blocks(response):
return re.findall(r"```python\n(.*?)\n```", response, re.DOTALL)
5. 文件更新
更新 learning_log.md:
def update_learning_log(date, topic, tasks, problems, reflections, materials):
"""
格式:
### 2026-02-23: 理解 RoPE 多频率机制
#### ✅ 完成事项
- [x] 理解为什么需要多频率
#### 🐛 遇到的问题
**问题: ...**
- **错误现象**: ...
- **根本原因**: ...
- **解决方案**: ...
#### 💭 个人思考
- **收获**: ...
#### 📝 相关学习材料
- 新增代码: `learning_materials/xxx.py`
"""
if f"### {date}:" in content:
insert_subsection_after_date(date, new_content)
else:
insert_date_section_chronologically(date, new_content)
更新 knowledge_base.md:
def update_knowledge_base(question, answer, details, code_example):
"""
格式:
**Q20: 为什么 RoPE 需要多频率?** [⭐️]
A: 因为单一低频率受浮点数精度限制。
**详细说明**:
- 详细解释1
- 详细解释2
**代码示例**:
```python
# 代码
```
参考代码: `learning_materials/xxx.py`
---
"""
existing_q = re.findall(r"Q(\d+)", content)
next_q = max(existing_q) + 1 if existing_q else 1
category = infer_category(question)
insert_at_category_end(category, qa_entry)
if any(kw in question for kw in ["原理", "为什么", "核心", "本质"]):
mark_with_star(qa_entry)
更新 learning_materials/README.md:
def update_materials_readme(new_file):
"""
格式:
## 位置编码
- **`rope_multi_freq.py`** - 多频率机制验证
- 验证浮点数精度限制
- 对比单频率 vs 多频率
"""
description = extract_file_description(new_file)
category = infer_category_from_filename(new_file)
insert_at_category_end(category, entry)
6. Git 自动化
生成 Commit Message:
def generate_commit_message(changes):
"""
模式: "[动作] [主题] [子主题]"
动作词:
- 学习 (新概念)
- 理解 (深入理解)
- 添加 (代码/材料)
- 解决 (问题)
- 完善 (补充)
"""
primary_term = extract_primary_term(changes.content)
action = identify_action(changes)
sub_topic = extract_sub_topic(changes.content)
message = f"{action} {primary_term}"
if sub_topic:
message += f" {sub_topic}"
return message[:30]
执行 Git 操作:
cd {repo_root}
git add docs/notes.md docs/learning_log.md docs/knowledge_base.md docs/learning_materials/
git commit -m "{generated_message}"
git push origin {current_branch}
错误处理:
def safe_git_push(max_retries=3):
for attempt in range(max_retries):
try:
result = run_git_push(timeout=30)
if result.success:
return True
except TimeoutError:
wait = 2 ** attempt
sleep(wait)
log_warning("Git push 失败,更改已提交到本地")
return False
7. 分类推断
自动推断知识点所属主题:
CATEGORY_KEYWORDS = {
"归一化技术": ["归一化", "Norm", "RMS", "Layer", "Batch", "Group"],
"位置编码": ["位置", "RoPE", "YaRN", "编码", "位置编码", "ALiBi"],
"注意力机制": ["注意力", "Attention", "GQA", "MQA", "FlashAttention"],
"前馈网络": ["前馈", "FeedForward", "SwiGLU", "GLU", "GELU"],
"预训练": ["预训练", "pretrain", "pretraining", "语言模型"],
"监督微调": ["SFT", "微调", "fine-tuning", "监督"],
"参数高效微调": ["LoRA", "lora", "PEFT", "参数高效"],
"人类反馈强化学习": ["DPO", "PPO", "GRPO", "RLHF", "RLAIF", "强化学习"],
"Transformer 架构": ["Transformer", "架构", "模型结构"],
"混合专家模型": ["MoE", "混合专家", "expert", "routing"],
}
def infer_category(text):
for category, keywords in CATEGORY_KEYWORDS.items():
if any(kw in text for kw in keywords):
return category
return "其他"
8. 静默运行原则
不打扰用户:
print("正在更新笔记...")
print("已保存到 learning_log.md")
print("Git 提交成功")
if git_push_failed:
print("💡 提示:更改已保存到本地,推送失败(网络问题)")
专注学习对话:
user: "什么是 RMSNorm?"
assistant: "RMSNorm (Root Mean Square Normalization) 是..."
user: "它和 LayerNorm 有什么区别?"
assistant: "主要区别有三点..."
9. 模板文件
初始化时使用的模板:
~/.claude/skills/minimind-learning/templates/
├── notes.md.template
├── learning_log.md.template
├── knowledge_base.md.template
└── learning_materials_readme.md.template
模板变量替换:
def load_template(template_name):
template_path = Path.home() / ".claude/skills/minimind-learning/templates" / template_name
content = template_path.read_text(encoding="utf-8")
today = datetime.now().strftime("%Y-%m-%d")
content = content.replace("{TODAY}", today)
return content
10. 配置读取(可选)
如果存在 .minimind-learning.json:
config_path = repo_root / ".minimind-learning.json"
if config_path.exists():
config = json.loads(config_path.read_text())
auto_commit = config.get("auto_commit", True)
auto_push = config.get("auto_push", True)
batch_delay = config.get("batch_delay", 5)
notes_dir = config.get("notes_dir", "docs")
mark_important = config.get("mark_important", True)
Best Practices
引导式学习
当用户说"开始学习"时,主动提供学习路径:
📚 MiniMind 推荐学习路径:
**Week 1: 基础组件**
→ Day 1-2: 归一化技术 (RMSNorm)
→ Day 3-4: 位置编码 (RoPE)
→ Day 5-7: 注意力机制 (Attention, GQA)
**Week 2: 完整架构**
→ Day 8-10: Transformer Block
→ Day 11-14: 完整模型实现
**Week 3-4: 训练技术**
→ 预训练 → SFT → LoRA → RLHF
你想从哪里开始?
鼓励实践
检测到代码讨论时,建议创建可执行示例:
💡 要不要创建一个可运行的代码示例?
我可以帮你创建 `learning_materials/rope_basics.py`,
包含完整的 RoPE 实现和可视化。
这样你可以直接运行看效果!
定期总结
检测到学习了多个知识点后,主动总结:
📊 今天学习总结:
✅ 完成事项:
- 理解了 RMSNorm 的原理
- 对比了 RMSNorm vs LayerNorm
- 运行了验证代码
🎯 建议:
明天可以学习 RoPE 位置编码,它和 RMSNorm
一起构成了现代 Transformer 的基础。
(笔记已自动保存到 `docs/learning_log.md`)
Error Handling
仓库检测失败
if not is_minimind_repo():
print("❌ 当前目录不是 MiniMind 仓库")
print("请确保在 MiniMind 目录中使用此 skill")
print("或检查以下文件是否存在:")
print(" - model/model_minimind.py")
print(" - trainer/train_pretrain.py")
return
Git 操作失败
if git_commit_failed:
print("⚠️ Git 提交失败,但笔记已更新")
print("请手动提交:")
print(" cd docs/")
print(" git add .")
print(" git commit -m '学习笔记更新'")
文件冲突
if file_conflict_detected:
print("⚠️ 检测到文件冲突")
print("建议:")
print("1. 手动解决冲突")
print("2. 或运行验证脚本:")
print(" python ~/.claude/skills/minimind-learning/scripts/validate_notes.py --fix-numbering")
Validation
定期提醒用户验证笔记(每 10 个 Q&A 后):
💡 笔记提示:
你已经积累了 10 个问答!建议运行验证脚本:
```bash
python ~/.claude/skills/minimind-learning/scripts/validate_notes.py
这会检查:
## Summary
**这个 skill 的核心行为**:
1. ✅ **静默监听**:每次对话后检查触发条件
2. ✅ **智能提取**:从对话中提取问题、概念、代码
3. ✅ **自动更新**:更新三套笔记文件
4. ✅ **Git 自动化**:生成简洁 commit 并推送
5. ✅ **主动引导**:提供学习路径和建议
**用户体验**:
- 说"开始学习" → 立即得到学习指引
- 自然提问 → 背后自动记录笔记
- 完全静默 → 专注学习,无打扰
- 定期总结 → 巩固学习成果
---
**版本**: 1.0.0
**作者**: Joye Huang
**许可**: MIT