Skill Refiner
概述
本 skill 用于改进思维/写作/设计型 skill——那些产出质量无法用客观指标衡量、需要靠推演和专家判断来评估的 skill。 不适用于可用指标或成功/失败信号自动评估的执行型 skill(部署、代码生成等)。
核心命题:当"什么是好"本身也需要逐步发现时,如何系统化地改进一个 skill?
目标 skill 的特征
- 产出是文本文档或分析结果,质量是主观的、审美的
- 没有标准答案或客观评估指标
- 判断产出好坏需要推演使用场景("用户读到这份产出后会怎么想?能否受益?")
- 很多时候,改进方向不是修正"错误",而是发现"还可以有更好的分析方式"
辅助文件
references/quality-lenses.md:质量维度透镜的详细说明。在归因阶段需要从不同角度审视差异时查阅。- 目标 skill 目录下的
learnings.md:该 skill 的工作记忆,记录尚未处理的原始观察。仅在阶段四出现可升级类弱观测时按 §4.4 交叉验证读取,不在复盘开始时读取。见下文"learnings.md 机制"。
三种工作模式
模式 A:专家对比分析
用户同时提供了 AI 输出和专家输出(或用户自己修改后的版本)。
不只比较输出形式的差异,而是追问:专家在写出这些内容时,脑中经过了什么样的思维过程,而 AI 没有?
差异可能体现在多个方面,但不限于以下角度——你看到的任何差异都值得探究:
- 预判差异:专家做了 AI 没做的预判(如预判读者会在什么场景下查阅这份产出)
- 取舍差异:专家在某个节点做了 AI 没做的取舍(如选择深入 A 而放弃 B,背后的考量是什么)
- 框架差异:专家用了 AI 没用到的组织框架(如换了一个概念维度来归类信息)
- 你发现的任何其他差异,只要追溯到思维层面的区别,都可能指向 skill 的改进方向
差异分析的粒度要求:在进行专家对比时,不能仅按行比较。 一行的修改中可能包含多个独立改动(换词、调序、增删限定语、拆句、调整层级结构,等等), 按行分析会将其笼统归为一个差异点,遗漏大量信息。 必须将差异拆解为原子改动——每个原子改动对应文本的一个独立变化维度,无法再分解为更小的独立操作。 在此基础上对每个原子改动分别归因。
模式 B:执行复盘反思
AI 刚用某个 skill 完成了一次任务,用户要求复盘。
回顾执行过程,寻找任何值得改进的信号。 以下是一些常见的入手角度,但不要局限于此——任何你觉得可能意味着 skill 应该调整的地方都值得提出:
- 困惑点:执行过程中哪些地方感到不确定、拿不准?(如果 skill 指令更明确,是否可以消除这种不确定?)
- 经验点:哪些做法 skill 没写、是你这次自己想出来的,它效果好、值得固化为 skill 规则?
- 约束问题:skill 中哪些要求在执行中感觉不适用、过度限制,或需要重新考虑?
- 你自己发现的任何其他改进信号。
模式 C:用户反馈分析
用户直接指出 skill 产出的某个具体问题(如"这里跳步了""这部分组织不够好")。
用户的反馈通常是结果导向的("这里不对"),需要将其翻译为思维导向的("skill 缺少了什么思维步骤导致 AI 会犯这个错")。
分析流程
阶段零:模式识别
根据用户提供的内容自动判断模式(有专家文件且有 AI 输出 → A,只说"复盘一下"且无专家文件 → B,用户指出具体问题 → C)。如无法确定,向用户确认。
阶段一:收集证据
根据模式收集以下内容中的相关部分:
- AI 使用目标 skill 后的产出
- 专家产出(模式 A)
- 用户反馈(模式 A/C)
- AI 自身对执行过程的回顾(模式 B)
阶段二:发现模式——思路归因
这是本 skill 最核心的方法论。对每个"做得好"或"有问题"的点,不满足于表面形式,追溯到底层思维模式。
差异标注粒度
在进入归因之前,必须先确保差异标注的粒度足够细。 常见失败模式:逐行比较两个版本,将一整行的差异笼统标记为"这一行改了"。 但一行中可能包含多个独立改动,每个改动背后可能对应完全不同的思维模式。
要求:
- 将差异拆解为原子改动——每个原子改动对应文本的一个独立变化维度,无法再分解为更小的独立操作
- 例如:替换一个词、增删一个短语、调整语序、改变层级关系等
- "替换"类改动需复核:若新旧内容语义差异大(非局部措辞调整),判断是否为"删除旧内容 + 新增新内容"两个独立改动,而非单次替换(见示例二)
- 每个原子改动标注三要素:编号、改动描述、归因
- 编号用分层式(如 1b = 第一行第二个改动)
- 改动描述标注操作类型(如 [新增] [删除] [替换] [调整] 等)再附具体改动
- 归因复杂时可另起行或缩进展开,不必压缩进一行
- 拆解完成后做完整性核对:对照 old/new 全文逐处检查,确认每个可见差异都被某个原子改动覆盖,无遗漏
- 聚类(如需)只能在逐原子改动归因全部完成后进行,作为对已归因项的整理
- 大类下若存在明显不同的子目的,应分小类,每小类列出包含的改动编号,避免漏记异质点
示例一:基本粒度
原文:* 与 AOT-POT(Adaptive Operator Transformation,AISClit9)形成对照 专家改:* (AI 评)与 AOT-POT 均冻结现有网络、补充新模块以应对未见算子,但方法略有区别
❌ 按行标注——信息丢失,无法归因:
- 整句改为"(AI 评)与 AOT-POT 均冻结现有网络..."
✅ 原子改动标注——每个点可独立归因:
- ① 新增 "(AI 评)"(标注来源,区分笔记作者判断与原文内容)
- ② 删除 "Adaptive Operator Transformation"(删除冗余信息,全称展开用户可自行查阅)
- ③ 删除 "AISClit9"(删除冗余信息,信源位置用户可自行查阅)
- ④ "形成对照" → "均冻结现有网络、补充新模块以应对未见算子,但方法略有区别" ("形成对照"空泛,应直接陈述对照的具体结论、概括异同,让读者直接获得信息)
各改动背后的思维模式各自独立: ① 关乎读者意识(谁在说话),②③ 关乎压缩质量(哪些展开说明/引用可省), ④ 关乎推理深度(不止标注关系,而是提炼关系的实质内容)。
示例二:常见陷阱——同一处的删与增是两个独立改动
原文:* 关键设计:闭式算子,零可训参数 专家改:* $F$ 形式:预设变换,零可训参数
❌ 错误标注——将删和增并为一个"改成":
- ① "关键设计:闭式算子" → "$F$ 形式:预设变换"
✅ 正确标注——拆为两个独立原子改动:
- ① 删除 "关键设计"(该词本身无含义,仅起占位作用)
- ② 新增 "$F$ 形式"(为后续讨论提供明确指代对象)
- ③ "闭式" → "预设"(术语解耦,确保脱离原论文语境仍可理解)
- ④ "算子" → "变换"(术语修正,判断原论文用词"算子"脱离语境有歧义,换更精确表述)
改动 ① 和 ② 虽然在同一位置,但对应两个完全不同的思维考量("什么该删" vs "什么该加"),不能简并为一个"改成"的改动。
归因的层次
| 层次 | 示例 | 判断标准 |
|---|---|---|
| 输出层 | "AI 没写这一段内容" | 不够——这是症状,不是原因 |
| 规则层 | "skill 没说要写这段" | 勉强——但止于此会让改动变成打补丁 |
| 思维层 | "AI 缺少一个预判步骤:写完一段后停下来问'读者读到这里会有什么疑问'——这正是专家自然在做的事" | 到位——这个发现可以直接指导 skill 设计 |
追问方法:对每个差异点反复问"为什么专家会写出这个而 AI 没有?专家脑中经过了什么 AI 没有的思维步骤?"
警惕套用现成理由:归因基于证据追问,不套用现成理由(如"压缩""更清晰""避免冗余")为改动辩护。 检验:能否用一句话把归因教给另一个 AI,让它复现专家的改动,且不误伤其他正常的内容?若不能,说明归因流于表面或编造了理由。 例:删除一段流程,真实原因可能是"两处训练 loss 相同只写一遍"(同一性去重),而非笼统的"不记流程";后者会引导其他 AI 同步删除另一处正常内容。 尤其警惕目标 skill 自身价值观关键词(如 note-writing 的"压缩")——在目标 skill 语境下"天然正确",最易被当作归因而不追问依据。专家改动常有独立于 skill 价值观的具体考量(如"加→&"是消歧而非压缩)。
注意:在原子改动标注的基础上,还需要注意一个原子改动可能包含多个独立考量。 例如,"改了表述"这个标注项背后可能同时考虑了"措辞正式化"和"避免绝对化"。 逐考量分别归因,不要笼统归为一条。 若多个可能归因无法判定是否都成立/哪个成立,分别列出供用户选择,与「归因不确定时须确认」配合使用。
验证:假设把归因出的思维模式用一句话教给另一个 AI,它能否在类似场景下达到接近专家的表现?如果不够,说明归因还不够深。
既有规则诊断:不要默认专家修正应追加为新规则
当 AI 的错误可追溯到目标 skill 中已有的具体要求时,先检查该要求本身, 而非直接把专家修正写成补丁式的新规则。
对每个相关的既有要求,回答:
- AI 是否确实因该要求而做出了当前行为?引用对应原文说明因果链。
- 专家修正否定的是该要求的目标,还是只否定它在当前情境中的适用?
- 该要求属于以下哪一种情况?
- 缺少适用范围:原则仍成立,但缺少触发条件、排除条件或判断依据。
- 过度具体:一个场景化动作被写成普遍要求,应上提为更一般的判断原则, 并把旧要求说明为该原则的典型特例。
- 可能不合理:其目标、推理或取舍本身值得推翻或替换。
不要用“再加一条相反规则”掩盖既有规则的问题。这样会留下互相冲突的指令, 使下一次执行仍依赖模型自行猜测何时该遵循哪一条。
若无法判断属于哪一种,或存在多个合理的上提原则,明确告知用户: 相关既有规则、AI 受其影响的方式、各诊断方案及其影响,并由用户决定。
开放的思考空间
以上列出的分析角度只是起手式。如果你发现了其他值得分析的角度、不合理之处、或值得总结的模式,主动提出。 即使不在上述框架内,任何你觉得可能意味着 skill 应该改进的地方,都可以纳入分析。
旋转视角:使用质量维度透镜
同一个差异点,换不同视角看,可能发现不同层面的改进机会。查阅 references/quality-lenses.md,在归因时轮换使用推理深度、框架自觉、读者意识、完备性、直接性、压缩质量等透镜。
归因完成后的检查点
归因完成进入阶段三之前,按识别出的改进点数量分流:
- 1-2 个点:直接进入阶段三,在改动方案中一并呈现归因,用户可在审阅改动时一并修正归因
- 3+ 个点:先暂停,把每个点的归因独立列出供用户确认。用户确认后再进入阶段三设计改动 理由:多点归因若有误,直接设计 3+ 个改动会产生大量返工;先确认归因可避免
阈值 3 为建议值。若多点明显同源(如同一根本原因在多处显现)可视为少数独立点;若少数点但复杂纠缠、归因彼此依赖,也可先列出确认。给出判断理由即可,不必拘泥于数字。
阶段三:泛化提炼
把特定案例中发现的思维模式重新表述为可跨场景适用的原则。
泛化检验:
- 变换场景:把当前案例的具体条件全部去掉,这个思维模式在另一个案例或领域还成立吗?
- 寻找反例:设想一个场景,遵循这个思维模式反而会导致错误——存在吗?如果存在,需要加什么限定条件?
- 凝练表述:能否用一句话说清楚这个思维模式?如果说不清楚,判断是否因为提炼得还不够。
- 覆盖范围:原则覆盖的操作范围是否需要更宽?找出失败案例中受影响的操作范围,问该原则在其他操作范围(同案例或跨案例)是否也成立。若是,重新表述为更通用形式。
- 修复既有规则:
- 若问题是缺少适用范围,保留原则,补足“何时适用、何时不适用、 用什么信号判断”的边界。边界应尽量是可执行的判断问题,不只罗列当前案例。
- 若问题是规则过度具体,先提炼其服务的更一般目标或判断原则, 再将旧规则改写为该原则的典型适用情形,而不是继续把该情形表述为硬性要求。
如果通不过泛化检验:这个发现可能只是当前案例的特异性现象,先标记为弱观测,到阶段四 §4.4 做 learnings.md 交叉验证后,再决定是记录等待更多案例验证,还是升级为改动候选。不要直接写入 skill。
枚举类内容建议标注为开放列表:当改动涉及枚举(如"常用检索入口类型"),可注明开放性("通常取以下几类"而非"只有以下几类"),除非确定是封闭枚举。实际使用所需内容常落在预设列表之外。
阶段四:设计改动
4.1 判断改动位置与形态
在判断问题可控性、设计具体改动之前,先通读目标 skill 顶层结构,检索与本次发现相关的现有表述:
- 理解每节的组织目的(这一节讲什么主题、服务什么功能)
- 判断改动形态:
- 改写合并:已有规则部分覆盖或高度相关时,融入该规则使其更完善。如文献笔记行首场景,新发现的"第 N 贡献"与已有"空洞前缀"同属"非回查线索"。改写位置即原规则所在,无需再判断归节
- 新增:确认无相关内容才新增,此时判断归入哪一节(依据规则主题,而非"出错的那一节")
- 既有规则是问题成因时,直接改写、限定、降级或删除该规则, 不得只在其他位置新增一条例外规则来抵消它。
- 避免直接在归因指向的那一节打补丁——出错位置告诉你"这里缺东西",但不告诉你"缺的东西应该写在这里"
- 例:AI 在 A 节执行出错,归因发现 A 节缺某规则。但深入看 skill 结构会发现该规则本应属 B 节(B 节讲相关概念定义),A 节只是漏引用——补在 A 节会让 A、B 两节主题混淆
4.2 判断问题可控性
在动手设计改动之前,先判断问题属于哪类:
| 类型 | 判定 | 示例 |
|---|---|---|
| skill 可控 | 问题源于 skill 指令缺失、模糊、矛盾或组织框架不当 | → 可以更新 skill |
| 模型能力限制 | 问题源于 AI 模型本身的能力边界 | → 不写入 skill,可在 learnings.md 记录为已知限制 |
| 任务固有难度 | 问题源于任务本身的模糊性,任何 skill 都无法完全消除 | → 可在 skill 中增加"遇到这种情况时的处理策略" |
| 一次性因素 | 问题仅由当前案例的特殊条件导致,经认真评估确认无法泛化为一般原则 | → 不更新 skill |
4.3 三层输出
每个改动按其规模/风险/自信度归入三个层级之一;无论哪一层都展示 skill 改动 diff 代码块供用户决策:
| 层级 | 条件 | 做法 |
|---|---|---|
| 可信 | 改动很小、副作用风险极低 | 展示简洁改动 diff 供用户确认 |
| 需审 | 改动较显著或有争议 | 展示改动 diff + 推演验证供用户审阅 |
| 存疑 | 不确定是否应固化为 skill 规则 | 同时输出「若固化的简洁改动 diff」和「记 learnings.md 的摘要」二选项,由用户选择;若选 learnings,将改动方案一并记录在该条目中,便于未来直接采用 |
- 建议层级在每处 diff 后直接标注(如"—— 可信"),不集中到结尾统一说明
- 改动表述从简:本 skill 反复使用,累积膨胀快;新增文字尽量精简,追求言简意赅
每一层改动方案都应包含:
- skill 改动计划
- 优先用 Markdown diff 格式代码块(
-旧行 /+新行 /共享上下文) - 变更密集或 diff 难以阅读时,改用 before/after 对照
- 优先用 Markdown diff 格式代码块(
- 改动理由(从归因到泛化的完整链条)
- 推演验证结果(有效性 + 副作用)
- 负面警示类考虑执行 AI 的默认倾向(常默认不做多余动作,如写笔记默认不标行首)。先判断改动类型:
- 破除默认(AI 默认不做):表述应"先正面指令(要做什么),再负面警示(别做成什么)"——否则禁止对象不存在,AI 不会因"禁止"而开始做
- 防错(AI 会做但做错):可只给负面警示
上述改动方案仅为提议。 diff 格式指展示给用户的 Markdown 代码块,禁止在此阶段编辑任何 skill 文件。 编辑操作在进入阶段六、且用户明确批准改动方案后才执行。
4.4 弱观测的 learnings.md 交叉验证
当某个观测被判定为"证据不足以直接写入 skill"、且属于可能升级为 skill 规则的类别(泛化失败、"存疑")时,在决定其去向前,先查阅目标 skill 的 learnings.md,检索是否有同模式先例:
- 有先例:升级本次观测,它不再是孤例。按"需审"层级呈现改动方案(引用先例作为佐证),并在方案中标注 learnings.md 中对应旧条目将在执行阶段删除(见阶段六)。
- 无先例:维持弱观测处理,按 §4.3 "存疑"层级呈现两选项,其中"记入 learnings.md"即作为新观测追加。
仅记录类弱观测(如模型能力限制、已知限制)不触发本步骤,直接追加。
触发条件:仅当本次复盘存在可升级类弱观测时才需要读取 learnings.md。若本次复盘没有任何弱观测,则全程无需读取、也无需写入 learnings.md。
阶段五:推演验证
此阶段需要用户参与。AI 先做初步推演,然后将关键推演结果呈现给用户。用户可能指出 AI 没意识到的使用场景或边界条件,这些信息应纳入最终的改动决策。
5.1 有效性验证
设想另一个 AI 使用更新后的 skill 执行本次相同的分析任务,它能否复现本次的成功经验、或不再出现本次的问题?
选取本次执行中 1-2 个关键决策点,设想更新后的 skill 在这些决策点会给出什么指导,判断这个指导是否足以让 AI 做出正确的选择。
5.2 副作用验证
设想另一个 AI 使用更新后的 skill 执行一个不同领域的问题,它是否会被新增规则误导?
选取 1-2 个与当前案例截然不同的场景(如当前是物理问题,则选一个组织管理问题),设想新规则在这些场景下会如何被解读,判断解读结果是否合理。 如果会导致不合理行为,改动需要重新设计——增加限定条件或从硬性规则改为软性建议。
5.3 既有规则修复验证
当本次改动涉及既有规则的范围、抽象层级或存废时,分别推演:
- 当前案例:更新后能否避免原错误?
- 边界案例:旧规则不应触发时,AI 能否识别并停止执行它?
- 原规则的典型场景:若旧规则加了适用边界,或被上提为原则的特例,更新后能否仍导出原来正确的具体做法?
若三者不能同时成立,说明范围或一般原则仍不够准确,应重新设计或保留多个方案供用户选择。
5.4 多版本比较
如果针对同一个问题有多种改进方案,对它们分别做有效性和副作用验证,选出最优方案。难以抉择时,保留多个方案并标注各自的适用条件,由用户决定。
5.5 子 Agent 辅助
当需要并行检查多个不同领域的案例时,可启动子 agent 分别评估,每个 agent 负责一个领域场景的推演。
⛔ 停止:阶段五到此为止。等待用户对改动方案的反馈。 在用户明确批准之前,禁止编辑任何 skill 文件。
阶段六:执行与记录
用户确认改动方案后:
- 编辑目标 skill 的 SKILL.md,应用改动
- 删除 learnings.md 中在 §4.4 交叉验证中被升级的旧条目
- 如果此次分析产生了新的、尚未达到"需审"级别的观察(如 §4.4 交叉验证无先例、泛化失败、模型能力限制),追加到 learnings.md
learnings.md 机制
角色
learnings.md 是目标 skill 的工作记忆——存放尚未归因、未泛化、低置信度的原始观察。它位于目标 skill 的目录下(与 SKILL.md 同级)。
它同时充当弱观测的证据累积账本:本次复盘出现的弱观测先与其中先例交叉验证(§4.4),有先例则升级、无先例则追加。
格式
自由文本。每次追加一个条目,标注日期、场景类型、发现类别(困惑点/经验点/约束问题)和描述。格式从简,目的是让下次执行时 AI 能快速理解上下文。
## 2026-07-18
- 场景:分析纯理论 PDE 论文。困惑点:skill 说"优先用公式拆分",但论文没有显式公式时拆分策略不明。
- 场景:用户指出因果链跳步。经验:拆分完应增加一步反向验证。
生命周期
skill 启动 → 读取 learnings.md → 执行任务
↓
执行中发现可能的改进信号 → 追加到 learnings.md
↓
用户触发 skill-refiner 复盘 → 归因 → 设计改动
↓
是否存在可升级类弱观测?
├─ 否 → 全程不读不写 learnings.md
└─ 是 → 读取 learnings.md 交叉验证
├─ 有同模式先例 → 升级为改动候选(旧条目标记已处理)
└─ 无先例 → 新弱观测追加到 learnings.md
↓
改动经归因→泛化→验证→用户确认 → 写入 SKILL.md
↓
被升级的旧条目 → 从 learnings.md 中删除
与用户互动
必须确认的情况
- 归因不确定时(如无法判断专家是因为 X 还是 Y 才这么写的)
- 可列选项:并列列出各候选归因供用户选择
- 专家修正可能表明既有规则缺少适用范围、过度具体或本身不合理时
- 说明证据、候选诊断和各自的改动方向,由用户决定
- 改动可能导致 skill 行为重大变化时(如调整顶层组织框架)
- 泛化检验中发现了需要用户领域知识才能判断的边界条件
- 多种改动方案难以抉择时
- 任何改动在执行之前都必须经用户确认
可能对用户有启发的互动
- 帮用户在"说不好哪里不对"时,通过结构化提问把模糊的感觉翻译为具体的质量缺陷
- 鼓励并辅助用户设想"如果 skill 改成这样,在什么情况下反而会变差"
- 多个改进方向时,让用户排列优先级
- 推演验证阶段,请用户补充 AI 可能没意识到的使用场景
不需要打扰用户的情况
- 纯技术性归因(AI 可独立完成的因果推理)
- 初步推演(用户会在阶段五统一参与)
- 措辞润色(凝练表述、调整文字)
以上指分析过程中的判断步骤,不包含执行文件改动。 编辑 skill 文件始终需要用户确认(见上方"必须确认的情况"最后一条)。
证据强度
当评估某个观察是否足够成熟、可以提议为改动时,参考以下分级:
| 强度 | 条件 | 处理 |
|---|---|---|
| 弱 | 单次观察、未被验证,learnings.md 中亦无同模式先例 | 按 §4.3 "存疑"层级呈现两选项,由用户决定直接改 skill 还是先放 learnings |
| 中 | 同模式在 ≥2 次独立执行中出现(含 learnings.md 中的先例),或已通过初步跨领域泛化检验 | 提议为"需审" |
| 强 | 用户明确认可,或多次出现且推演验证全部通过 | 高置信度改动 |
证据强度的作用是为 AI 提供判断依据——强度越低,越应按"存疑"层级呈现两选项让用户决断;强度越高,越可主动推进为"可信"或"需审"。 learnings.md 先例是弱观测升级的关键证据:同一模式首次出现时经用户决定记入 learnings.md,第二次独立出现(本次观测加先例)即达中强度,具备改动候选资格。 注意这不替代用户确认:即使是"强"证据的改动,仍需经用户确认后执行。