/dgclaw:aprender: 将成功流程转化为技能
技能是一份写好的步骤说明,我在开始工作前阅读它。它确保我不依赖记忆:那些花了一小时讨论才理顺的流程,变成一份配方,下次我只需五分钟就能照做。
以下三条规则适用于所有情况:
- 技能只在你同意后才创建。 我会提出建议,解释为什么值得创建,然后等待你的确认。没有回复不算同意。
- 我只建议一次。 如果你拒绝或没有回复,我会记录下来,不再坚持。
- 秘密绝不写进技能。 密码、令牌、密钥、卡号:技能只说明从哪里获取("密钥在面板的保险箱里"),绝不包含具体值。
何时值得提出建议
当同时满足以下四个条件时,提出建议:
- 流程包含至少三个步骤,而不仅仅是一个回答。例如:查询央行的利率、重新计算、更新文件并发送 PDF。
- 可以重复使用:步骤相同,只是主题、月份或客户变了。
- 用户很可能再次提出类似请求。 信号:"每个月一次"、"再来一次"、"和上次一样",这是用户工作中的周期性交付,或者这是我们第二次做类似的事情。
- 最终成功了。 用户认可了结果或将结果投入了使用。
同时确认尚未存在对应的技能:运行 ls .claude/skills/ 并检查 memory/skills-aprendidas.md。
何时不建议
- 一次性任务,不会再出现(比如"帮我写这封给物业经理的邮件")。
- 只有一个或两个步骤。不需要为我已经能一次完成的事情编写配方。
- 流程依赖于只对当时有效的决策。
- 对话以未解决问题结束,或者用户正赶时间或生气。此时,将建议留到晚间反思中(它会记录在"我想和用户谈谈"中)。
- 用户已经拒绝过这个相同的技能(记录在
memory/skills-aprendidas.md中)。
晚间计数器:memory/skills-candidatas.md
并非每次重复都会立即被发现。第二次重复由晚间反思发现:它重新阅读当天的记录,查找我按多步骤脚本手动完成的工作,并为每个任务记录一行:
- <任务描述,一行> | 次数: N | 日期: DD/MM, DD/MM | 技能会做什么
如果任务已经存在于文件中,则只增加次数和日期,不创建新行。当某个候选任务达到 2 次(或者如果脚本超过 5 步且用户表示会重复,则为 1 次),反思将其放入"我想和用户谈谈"中:《今天我再次手动完成了 X;你想把它转化为技能吗?》每晚最多一个建议,我会在下次对话中按下方的方式提出。在计数之前,我会确认该技能是否已经存在:如果存在但我没有使用,那是我忘记的错误,这会记入日志,而非计数器。
如何提问
在交付结果后,用一条简短、独立的消息提出:
我们完成了这个完整流程:<流程简述,包含步骤数>。你想让我把它转化为一个技能,以便下次可以照做吗?我推荐的原因是:<具体理由,如"你说过这是每月一次的"、"花了一小时才搞定格式">。
只问一句,不要列出选项,也不要施加压力。如果用户问什么是技能:"这是我为自己写的一份配方,包含步骤和你今天教我的注意事项。"
同意后:编写技能
-
名称: 简短,使用中文,小写,用连字符连接(如
每月销售报告、核对央行利率)。确认该文件夹不存在。 -
位置:
/workspace/.claude/skills/<名称>/SKILL.md。绝不要放在插件的文件夹中,因为插件每次更新都会替换。 -
文件格式:
--- name: <名称> description: <功能描述,使用第三人称> 当用户需要时触发:用户所说的触发短语及可能的变体(如"做月报"、"更新利率"),或触发此技能的情况。如果容易混淆,应说明本技能不做的事情。 --- # <标题> 用途,两行说明。于 <YYYY-MM-DD> 从用户处习得。 ## 开始前我需要什么 - <输入项,如果请求中未包含则需要询问> ## 步骤 1. <具体的步骤,包含实际使用的文件、来源或命令> 2. ... ## 交付前我确认的内容 - <用户今天要求或纠正的内容> ## 交付方式 - <格式:PDF、页面、简短消息;文件保存位置> ## 已发生的陷阱 - <YYYY-MM-DD> <错误及正确做法>description是让技能在恰当时候被记住的关键:使用用户说的词汇,而不是我的。路径相对于工作区。最多约 150 行;如果需要更多,可以在/workspace/.claude/skills/<名称>/references/中创建辅助文件。 -
注册到
memory/skills-aprendidas.md(如果不存在则创建),每个技能一行:- **<名称>** (创建于 YYYY-MM-DD): <功能>。源于 DD/MM 关于 <主题> 的对话。拒绝也记录在此:
- (拒绝于 YYYY-MM-DD) <流程>:用户选择不创建技能。 -
告知用户,一行:"好了,技能 <名称> 已创建。下次只需说 <触发短语> 即可。" 如果新技能没有立即出现在我的技能列表中,它将在下一次会话中生效;在此之前,我会在执行任务前直接读取
SKILL.md。
当用户纠正我创建的技能的输出时
如果我按照自己编写的技能完成任务,用户纠正了某些内容("不,图表应该在表格之前"、"正确的来源是财政部"):
- 首先修正工作。用户需要结果。
- 更新
SKILL.md:修正出错的步骤,并在"已发生的陷阱"中添加一行,包含日期。 - 在
memory/skills-aprendidas.md中更新该技能的行:改进于 YYYY-MM-DD: <内容> - 用一行告知用户:"已记录在技能 <名称> 中:下次我会直接做<正确做法>。"
仅针对单次情况的纠正("今天不包含图表")不修改技能。如有疑问,我会问:"这只是今天的要求还是以后都这样?"
我绝不做的事
- 未经用户明确同意创建或删除技能。
- 修改插件的技能(
/dgclaw:*):它们不属于我,每次更新都会恢复。 - 在技能中编写违反我的规则(
LAWS.md)或用户禁止的规则。