名称: ctx-添加学习记录 描述: “记录学习心得。当发现陷阱、错误或意外行为,且未来会话应当了解时使用。” 允许的工具: Bash(ctx:*)
在 LEARNINGS.md 文件中记录一条学习心得。
记录前
三个问题——如果任一答案为“否”,则不要记录:
- “别人能在5分钟内通过谷歌搜到这个吗?” → 如果是,跳过
- “这是否特定于这个代码库?” → 如果不是,跳过
- “发现它是否付出了真正的努力?” → 如果不是,跳过
学习心得应捕捉原则和启发式方法,而非代码片段。
何时使用
- 发现陷阱或意外行为后
- 当调试会话揭示了根本原因时
- 当发现有助于未来工作的模式时
何时不使用
- 通用编程知识(不特定于此项目)
- 不会再次出现的一次性变通方案
- 代码库中已有文档记录的内容
收集信息
如果用户只提供了标题,请询问:
- “你是在做什么时发现这个的?” → 背景
- “关键见解是什么?” → 教训
- “我们今后应如何处理这种情况?” → 应用
执行
ctx add learning "标题" --context "..." --lesson "..." --application "..."
示例——行为模式:
ctx add learning "智能体忽略重复的钩子输出(重复疲劳)" \
--context "PreToolUse 钩子在每次工具使用时都运行 ctx agent,重复注入相同的上下文数据包。智能体对此充耳不闻,没有遵循约定。" \
--lesson "重复注入会导致智能体忽略输出。冷却期墓碑标记每个窗口只发出一次。回读指令创建的行为门比静默注入更难跳过。" \
--application "在钩子命令中使用 --session \$PPID 来启用冷却期。将上下文注入与回读指令配对使用。"
示例——技术陷阱:
ctx add learning "go:embed 仅适用于同一或子目录中的文件" \
--context "尝试从父目录嵌入文件,出现编译错误" \
--lesson "go:embed 路径相对于源文件,不能使用 .. 来跳出包目录" \
--application "将嵌入文件保存在 internal/assets/ 或子目录中,而非项目根目录"
示例——工作流洞察:
ctx add learning "ctx init 在没有防护的情况下覆盖用户内容" \
--context "提交 a9df9dd 清除了 DECISIONS.md 中的 18 条决策,替换为空模板" \
--lesson "Init 将所有 .context/ 文件视为模板,但首次使用后它们包含用户数据" \
--application "默认跳过现有文件,仅在使用 --force 时覆盖"
质量检查清单
记录前,请确认:
- [ ] 背景解释了发生了什么(不仅仅是学到了什么)
- [ ] 教训是原则,而非代码片段
- [ ] 应用为下次提供了可操作的指导
- [ ] 尚未存在于 LEARNINGS.md 中(先检查)
确认学习心得已添加。