把一个你想吃透的开源项目,拆成一条"从最小能跑的核心到完整系统"的动手路线。AI 当陪练给提示,而不是替你把代码写完。
Turn a real project you admire into a hands-on path—AI coaches with hints, it doesn't write the code for you.
一个交给 coding agent(Claude Code / Codex / Cursor)安装的 skill,用来更好地"和 AI 一起学项目开发"。
AI 让"查答案"变快了:报错看不懂、API 不会用、想快速了解一个概念,十几秒就能得到还不错的回答。但信息获取变快,不代表理解、内化、形成经验也自动变快。AI 能帮你跨过"查资料"的门槛,却不能替你完成"建立知识结构"和"积累手感"的过程。
更现实的一点是:AI 出现后,新人入行反而变难了。以前新人靠给资深的人打下手、在干活中慢慢上手;现在工程师用 AI 就能快速把想法落地,带实习生的动机没了。但坏处里藏着机会——AI 在"获取知识"上同样强大,问题只是变成了:怎么用 AI 把自己缺的能力快速补齐。
我自己的 research 经验较多,感觉但工程落地积累不够,于是拿"学项目开发"当试验场,想找一套更靠谱的 AI 学习方法。核心思路来自 AI coding:做复杂任务时,一般不会一上来就让 AI 写代码,而是先讨论需求、澄清边界、拆分步骤,再进入实现。学复杂知识,也许可以套同样的流程。 这个 skill 就是这套流程的固化。
Unknown Unknowns · 你不知道自己缺什么 学一个新领域时,最难的往往不是某个具体问题,而是根本不知道这个领域由哪些问题组成。你没有全局地图,就问不出好问题——只能零散地问"这个报错什么意思""这个 API 怎么用",答案拿到了,知识却始终串不成体系。 → 这个 skill 会先扒一遍你的参考项目,反推出"要亲手实现它,需要哪些前置概念和技能",拼成一张知识地图;再拿这张图问你一批具体、可判定的问题(用过没有、口述一句理解、做个小判断题),从回答里主动诊断出你的真实水平——而不是丢给你一张"请填写你会什么"的表格,让本来就不知道自己缺什么的你去自评。
Short-Term Gain, Long-Term Pain · 图省事,欠经验 把实现整段丢给 AI,眼前确实跑通了;但拆解问题、设计结构、读懂报错、定位 bug、权衡取舍这一整套经验被悄悄跳过了。下次遇到同类问题,你还是只能复制上一次的修复方案,独立判断的能力没长出来。 → 在这里 AI 是陪练而不是枪手:先鼓励你自己动手,卡住了给分级提示——先点方向(L1)、再讲关键思路(L2)、必要时才给一段局部骨架(L3),默认不直接把完整答案摆上来;等你自己做出来,再回头复盘"为什么这样有效、还有哪些替代写法和取舍"。
The Curse of Knowledge · 讲解深浅总对不上 AI 有一种"知识的诅咒":它默认自己知道的你也知道,于是跳过关键前提、抛出一堆越级概念;或者反过来,不了解你的底子,花大段篇幅重讲你早就会的东西。信息密度总是不对,听起来要么云里雾里、要么在浪费时间。而好的学习方式应该让新知识从原有的知识体系上长出来。 → 这个 skill 把诊断出的背景沉淀成一份学习画像:记录你已掌握的基础、当前的薄弱点、以及习惯的解释方式。AI 讲解前先读画像,把新知识接到你已有的经验上、并主动点明"哪里和你熟悉的东西不一样";一旦某个薄弱点在实践中被证明已经过关,就把它从"薄弱点"里晋升出去,不再反复讲。
Memory Management · 记忆管理 学一个复杂项目往往跨很多天、很多次对话。可每开一个新会话,背景、学到哪了、踩过哪些坑,都得重新对 AI 讲一遍——这些信息缺一不可,手动维护却又累又容易漏。 → 这个 skill 用一份分层记忆替你记着:稳定背景、极简进度指针、计划、踩坑日志分开存放,新会话开场自动续接、无需你重述;同时给每个文件设大小预算,超了就把冗长的历史蒸馏归档,避免画像无限膨胀、把"当前重点"淹没掉。
假设你想学"个人网站前后端是怎么搭起来的",手上有一个欣赏的开源项目做参照:
- 诊断,而不是让你自报。 AI 先扒一遍参照项目,问你几个具体问题:路由是怎么回事、知不知道请求打到后端后发生了什么、有没有碰过数据库迁移……从回答推断你真实的水平,而不是听你说"我大概会一点"。
- 给你一个能立刻动手的 Step 0。 比如"先起一个只有一个页面、一条
/api/health接口的服务,浏览器能打开、接口能返回 ok"——小到你今晚就能跑通,又是完整链路的最小闭环。 - 一步步长出真实功能。 每个阶段只加一个有意义的能力:加一个真实页面 → 接上数据库 → 加一个表单写入 → 加登录……每一步都连着"最终那个完整网站",不是互不相干的玩具练习。
- 卡住时给提示,不给答案。 表单提交没反应,AI 先问你"数据到后端了吗、你怎么确认的",引导你自己定位,而不是直接甩一段修好的代码。
- 续接进度、讲清动机。 下次打开新对话,它读一眼画像和进度就知道你到哪了;做完一块会告诉你"那个参照项目为什么这么设计、和你的写法差在哪"。
一路下来,你手里不只是一个能跑的网站,更重要的是你能自己把它建出来,还能说清每个设计为什么这么做。
换个项目,流程是一样的。比如你想吃透一个 coding agent:诊断会问你 SSE、async generator、llm基本原理、tool call 协议这些前置概念的掌握度;Step 0 可能是"先跑通一个 30 行的 agent loop——读一条输入、调一次模型、把回复打印出来";之后再一步步长出工具调用、多轮上下文、错误恢复、session管理、权限控制、插件系统、TUI系统……卡住时同样是先给方向而不是代码,做完再讲"Codex / Claude Code 那套工业级实现里为什么要模块化分层、为什么这么设计session的存储数据结构"。参照项目换了,"从最小核心逐步扩展 + 陪练式提示"这套骨架不变。
- 能读懂代码、了解某领域基本原理,但没独立做过工业级 / 复杂项目的人。
- 想学的东西有一个具体的参照项目。
不太适合:纯零基础、只想要"能跑的结果"不想动手的人、以及不需要被"带"的资深工程师。
把本目录作为一个 skill 交给 coding agent 安装即可:个人 skill 放 ~/.cursor/skills/,项目 skill 放 .cursor/skills/。安装后,直接告诉 agent 你想学哪个项目、目标是"读懂 / 能改 / 从零实现",它会带你走上面那套流程。
学习过程中生成的文件(计划、画像、进度、踩坑记录)都只存在你的项目本地
.note/目录里,不会上传到任何公网。
- SKILL.md:交给 agent 的完整操作指令。
- 三份参考文档:diagnosis.md(知识地图 + 定向诊断)、memory.md(分层记忆与压缩)、plan-creation.md(首次运行的完整流程)。