成长日志技能
问题: 大多数人在学习日志中写“修复了X中的Bug”。那是日记条目,不是学习工件。真正的成长日志提取出模式,以便下次能识别。
本技能教授: 如何撰写可在各次会话间累积的学习条目。适用于任何笔记系统——Markdown文件、Notion、Obsidian、纯文本。模板通用;请适配你的环境。
何时激活
- 完成复杂任务后(多文件、新功能、架构变更)
- 遇到失败、错误或“比预期更困难”的时刻后
- 想回顾一段时间内的所学内容时
何时不应激活: 琐碎变更(错别字修复、单行调整、无需调试的配置值更改)。阈值是:这个任务是否涉及调试、重做、回滚或非显而易见的决策? 如果是→写条目。如果否→跳过。
三条规则
规则 1:失败 > 成就
失败的营养密度高于成功。一个花了2小时找到的Bug,比3个一次成功的功能教会你更多。
错误: “成功实现了登录流程。”
正确(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:从克隆/推送到具有12次提交的独立PR” |
质量检查清单
在最终确定成长日志条目之前:
- 标题是命名了模式,而不是事件?
- 有“下次我将……”的句子?
- “可识别信号”足够具体,能在下次触发该模式?
- 我在写之前搜索了现有条目以查找重复?(伯乐原则)
- 根本原因与症状区分开了?
- 相关的记忆被交叉引用了?
- 条目长度为4-8句话?更短=太浅;更长=叙述事件。
反模式
- 避免:“修复了支付模块中的Bug”(事件,非模式)
- 避免:逐字复制Git提交消息(提交描述更改了什么;日志提取为什么重要)
- 避免:为每次提交都写条目(仅当模式出现时)
- 避免:跳过可迁移句子(没有它,就只是日记——这是不可妥协的)
- 避免:在不同标题下重复同一模式(违反伯乐原则——写之前先搜索)
存储
将条目存放在你记笔记的任何地方。常见模式:
growth-log/目录中的Markdown文件(每个文件对应一天:YYYY-MM-DD.md)- Notion、Obsidian或你的笔记应用中的专用部分
- 具有一致命名约定的纯文本文件
选择一种约定并坚持使用。可搜索性比格式更重要。
如果你使用交付门控
delivery-gate的停止钩子通过文件系统时间戳检查今天是否修改了学习文件。本技能教授写什么——这样交付门控检查的文件实际上包含有用的模式,而不是空的时间戳。
任务完成 → 交付门控检查:今天学习文件是否被触碰?
→ 过期(无文件修改):阻塞——“你学到了什么?”
→ 新鲜(文件被触碰):通过——本技能确保内容有用
只有强制而没有方法论→空条目。只有方法论而没有强制→被遗忘的捕获。每个独立有用;一起使用则形成闭环。