一个 ZCode 技能:费曼学习法的对话教练。你讲,模型只挑错和追问,直到你真讲通。
费曼学习法的核心是:把知识讲出来,卡住的地方就是没掌握的地方。所以这里角色反转——模型的价值不在讲得多好,而在精确指出你理解里的裂缝,并用问题把你逼到裂缝上。
- 先定位裂缝(不先夸)。引用你原话的短句,判断问题属于哪类:含糊(用了没定义的词)、不准(方向对但机理错、条件缺失、混淆近邻概念)、错(断言不成立)。 你如果用通俗说法绕开了术语,模型会把术语还给你——"你说的'复制一份',正式名字是 Copy-on-Write,请用这个名字再讲一遍"。
- 追问 1–3 个,每个都钉在一个具体裂缝上,三类交替:挖机制(怎么做到的、为什么不换个做法)、探边界(什么情况下不成立、反例)、发散(和 X 什么关系、换成 Y 会怎样)。
- 只给提示不给答案。卡住时指出缺口方位让你重讲;连续卡两次才给骨架,留最后一步让你补。
- 记一行到
.feynman/notes.md,下次讲同一主题先读它。
输出纪律:不复述你已经说对的内容、不写空话夸奖、全文 12 行以内、每轮以问题结尾。
mkdir -p ~/.agents/skills
git clone https://github.com/Zeppeli777/feynman-learning.git ~/.agents/skills/feynman-learning模式是对话级的:开启后整段对话都保持教练模式,直到你说结束。
# 开启(项目目录通常是工作区根目录)
bash ~/.agents/skills/feynman-learning/scripts/feynman.sh start "$PWD"
# 查看状态 / 关闭
bash ~/.agents/skills/feynman-learning/scripts/feynman.sh status "$PWD"
bash ~/.agents/skills/feynman-learning/scripts/feynman.sh stop "$PWD"状态存在 <项目目录>/.feynman/:active 是开关标记,notes.md 是学习记录。
光靠提示词,长对话里模型会跑偏,上下文压缩后甚至会把技能内容丢掉。下面这个 hook 在模式开启期间每轮注入一次纪律(约 350 字节),关闭时完全静默。
在 ~/.zcode/cli/config.json 里加(注意配置文件的 hook 默认关闭,必须显式 "enabled": true):
{
"hooks": {
"enabled": true,
"events": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "bash \"$HOME/.agents/skills/feynman-learning/scripts/feynman.sh\" hook-track \"${ZCODE_PROJECT_DIR}\"",
"timeout": 5
}
]
}
]
}
}
}改完新开一个对话才会生效(配置在会话启动时加载)。
标记文件是工作区级的,不是每个对话一份——因为 shell 里拿不到 session id。代价是:模式开着时,同一工作区里的其他对话也会看到提醒,说一句"结束"就清掉。
用费曼法,我来讲讲 TCP 的三次握手,你听我说完告诉我哪里不对我给你讲一下 reactor 模式,别急着给答案,先问我你问我几个问题,看我到底懂没懂
feynman-learning/
├── SKILL.md ← 技能本体,47 行
└── scripts/
└── feynman.sh ← 会话状态:start / stop / status / hook-track
配套技能:concept-mastery(术语精讲——某个点你确实讲不出来时,用它把那一块讲透)。