成长日志技能
问题所在: 大多数人会写“修复了 X 中的 bug”作为学习日志。这只是一条日记条目,而非学习成果。真正的成长日志提取的是模式,这样你下次就能识别出来。
本技能教授: 如何编写能在不同会话间积累的学习条目。适用于任何笔记系统——Markdown 文件、Notion、Obsidian、纯文本。模板是通用的,可根据你的设置进行调整。
何时激活
- 完成一个复杂任务后(多文件、新功能、架构变更)
- 遭遇失败、犯错或遇到“这比预期难”的时刻后
- 想要回顾一段时间内所学的内容时
何时不要激活: 琐碎的变更(拼写修复、单行调整、无调试的配置值更改)。门槛:这个任务是否涉及调试、重做、回滚或非显而易见的决策? 如果是 → 写一条条目。如果否 → 跳过。
三条规则
规则 1:失败 > 成就
失败在营养密度上高于成功。一个花了 2 小时才找到的 bug 教给你的东西,比三个一次就成功的功能更多。
糟糕:“成功实现了登录流程。”
优秀(Web 开发):“登录流程:会话令牌未持久化,因为 Chrome 128+ 中 cookie 的 SameSite 默认为 Lax。模式:跨域时始终显式设置 SameSite=None; Secure。可识别信号:浏览器升级或跨越源边界后认证中断。”
优秀(数据管道):“CSV 导入在空行上静默失败,因为 pandas.read_csv(dropna=False) 保留了零宽度行,而 len() 将其计为有效。模式:在行数验证前始终执行 df.dropna(how='all', inplace=True)。”
规则 2:伯乐原则
在写新条目之前,先问:“这从根本上与我已记录的某条内容相同吗?”
相同根因、不同症状 → 合并,不要重复。新根因 → 新条目。
如何检查: 在写入之前,用根因的关键词搜索现有条目。如果找到匹配项,将新症状作为附加示例添加到现有条目下,而不是创建重复。
示例:“创建文件后忘记更新输出索引”和“任务后忘记更新技能评分”——相同根因(没有自动捕获触发器)。合并成一个关于“任务后捕获空白”的条目。
规则 3:必须可迁移
每条条目必须回答:“下次面对类似情况,我该做什么不同的事?”
如果你写不出这个句子,说明你还没有提取出模式。
如何从具体事件中提取模式:
- 用一句话说明发生了什么
- 反复问“为什么”直到触及根因(通常 3-5 个为什么)
- 概括:“这属于哪一类问题?”(不是“Chrome 128 bug”,而是“浏览器默认值更改破坏了现有行为”)
- 表述为:“下次我看到 [信号] 时,我将 [采取行动]。”
- 命名该信号:什么具体的可观察现象能告诉你这个模式正在激活?
条目模板
范围: 每条条目对应一个不同的根因。典型长度:4-8 句。如果写起来超过 2 分钟,你就是在叙述事件。如果少于 30 秒,说明你挖得不够深。
## [标题:模式,而非事件]
### 上下文
- 我想要做什么?
- 哪里出错了 / 什么出乎意料地顺利?
### 根因 / 核心洞察
- 底层机制,而不仅仅是症状
### 模式(可迁移)
- 下次遇到 [类似情况] 时,我将 [具体行动]。
- 可识别信号:[什么可观察的现象告诉我这个模式正在激活?]
### 相关
- [条目名称](../path/to/related-entry.md)
条目类型
所有四种类型都使用上述模板。类型决定哪些部分权重最大:
| 类型 | 何时使用 | 重点 | 示例标题 |
|---|---|---|---|
| 失败 | 某些东西损坏、需要调试或需要重做 | 根因 | “配置继承 ≠ 跨会话的行为继承” |
| 方法论 | 工作中出现了可重复的过程 | 上下文 / 模式 | “PPT → 开卷考试学习指南:三层结构” |
| 模式发现 | 关于工具、系统或思考的可复用洞察 | 模式部分 | “PR 描述模板:描述差距,而非功能” |
| 能力变化 | 可衡量的技能提升 | 上下文(前后对比) | “Git:从 clone/push 到独立完成包含 12 次提交的 PR” |
质量检查清单
在定稿成长日志条目之前:
- 标题命名的是模式,而非事件?
- 是否包含一个“下次我将会...”的句子?
- “可识别信号”是否足够具体,以便下次激活模式?
- 写入前是否搜索了现有条目以避免重复?(伯乐原则)
- 根因是否与症状区分开来?
- 相关的记忆是否已建立交叉链接?
- 条目是否在 4-8 句之间?更短 = 太浅;更长 = 在叙述事件。
反模式
- 避免:“修复了支付模块中的 bug”(事件,不是模式)
- 避免:逐字复制 git 提交信息(提交描述了什么发生了变化;日志提取了为什么它重要)
- 避免:每次提交都写一条条目(只有在模式出现时才写)
- 避免:跳过可迁移句子(没有它,就只是日记——这是不可商量的)
- 避免:在不同标题下重复相同的模式(违反伯乐原则——写之前先搜索)
存储
将条目存放在你记笔记的任何地方。常见模式:
- 在
growth-log/目录中的 Markdown 文件(每天一个文件:YYYY-MM-DD.md) - Notion、Obsidian 或你的笔记应用中的专用分区
- 采用一致命名约定的纯文本文件
选择一种约定并坚持下去。可搜索性比格式更重要。
如果你使用 Delivery Gate
delivery-gate Stop 检查会通过文件系统时间戳验证学习文件今天是否被修改过。本技能教授的是写什么——这样 delivery-gate 检查的文件包含的才是有用的模式,而不是空的时间戳。
任务完成 → delivery-gate 检查:今天学习文件是否被触碰过?
→ 过时(无文件被修改):阻止——“你学到了什么?”
→ 新鲜(文件被触碰):通过——本技能确保内容有用
仅有强制而无方法论 → 空条目。仅有方法论而无强制 → 被遗忘的捕获。两者各自都有用;结合在一起则形成闭环。