一个技能接管:同职能 Agent 技能冲突与单文件修复
One Skill Takes Over: Clashing Agent Skills and a One-File Fix
七模型同任务并排时规则遵循61%到62%;Claude Opus 5.5文件的可达成规则96%到99%。
- 两个同任务 Agent Skill 会同时装上,多数规则可以一起遵守。已有测量里智能体按需打开文件,且只给一边打分。要问的是:两份文件都在上下文中时,模型合并兼容规则,还是跟随一个、丢掉另一个。
- 自建 SKILLCLASH:16 对同任务技能,每边六条规则和一个示例,代码检查四类规则。两份文件放进系统提示词,指定 primary 后按十条可达成规则打分。比较加指令,以及把两边合并成一份带示例的 meta-skill。
- 七模型单独时规则遵循93%到99%,同任务并排为61%到62%,输出多为takeover。优先级指令未找回丢掉的一边。同时应用只在两个强模型上找回,交互规则仍常坏。Claude Opus 5.5合并文件的可达成规则为96%到99%。
- 作者称逐步合并取决于规则标注,只有一个合并者标得好。保存前检查合并结果、标注存疑时退回plain merge,尚未测试。真实技能需要评审模型或手写检查。实验覆盖七个模型与16个自建任务,强模型上feedback loop标为not run。
- 被测模型
- Qwen3-4BQwen2.5-7BMistral-7BLlama-3.1-8BPhi-4-miniQwen3-235BGPT-4.1
- 基准
- SKILLCLASH
- 指标
- rules followedtakeoverachievable rules followedfully correct
研究者构建 SkillClash 基准,用 16 对同职能 Agent 技能文件测试冲突行为,单个技能加载时模型遵守其 93% 到 99% 的规则,两个同职能技能同时加载时降到 61% 到 62%,多数输出中一个技能的规则被全部保留、另一个全部丢弃。作者称技能内的示例是主因,把两份文件末尾都换成同时遵循两个技能的示例后,接管率在六个模型上降到 1% 到 15%。优先级指令在任何模型上都无法挽回被丢弃的技能,而 Claude Opus 5.5 编写的单份合并技能文件让七个模型遵守 96% 到 99% 的可达规则。实验覆盖 5 个家族的 7 个模型,从 4B 开源模型到 Qwen3-235B 和 GPT-4.1,代码与数据已公开;在三个小模型上,激活引导能改变哪个技能胜出,但不能让模型同时遵循两者。
推荐理由论文量化了同职能技能同时加载时模型只保留其中一个的倾向,并给出以合并技能文件加正确示例作修复的做法,可供维护技能库的团队参考。
深度解读
这篇论文试图解决什么问题?
两个同任务技能都在上下文时,模型常整份跟随其中一个并丢掉另一个。
两个同任务技能的文件都在上下文中时,模型是合并兼容规则,还是跟随一个并丢掉另一个。
- 场景:Agent Skill 是带 SKILL.md 的小文件夹,告诉编程智能体如何做一类事,例如写 commit message、审代码或写 API 文档。技能来自多个作者并排安装,没有机制阻止两个同任务技能同时生效。作者称有的规则冲突,但多数可以一起遵守。
- 已有测量的缺口:Yan 等人在 Claude Code 里安装公开的同任务技能对,第二个技能大约每五次运行夺走第一次中的一次;修复是用 hook 挡住竞争技能。作者称该设定里智能体按需打开文件,损失多来自从未打开第一个技能的运行,而且只给第一个技能打分。
- 留下的问题:两份文件都已在上下文里时模型做什么;修复能否保住两边的规则,而不是挡住其中一个。作者把一种输出称为 takeover:只属于一个技能的规则全部被遵守,只属于另一个技能的规则全部被丢掉。
- 本文给出的东西:基准 SKILLCLASH,16 对为该基准构造的同任务技能,代码检查每条规则,参考输出标出可达成的最好结果。Figure 1 中 Qwen3-4B 在两技能都加载时遵循 B 的六条规则,A 只剩 shared 那一条;换成一份合并文件后,该输出遵循全部十条可达成规则。
有哪些相关研究?
作者把本文与 Yan 等人的按需打开文件、以及按任务成功打分的技能合并工作区分开。
Agent Skill 如何失效
- 多技能收益:Li 等人(2026)的 SkillsBench 里,精选技能提高任务通过率,使用四个及以上技能的任务收益更小;冲突指导被提出为一种可能原因。
- 公开技能与选错技能:论文写 Han 等人(2026)在真实软件工程任务上看到多数公开技能收益很小或没有;Dong 等人(2026)写单个已加载技能就可能让智能体漏掉或填错要求的部分;Song 与 Wei(2026)写大型技能库里的损害大多来自选错技能或没选中技能。
- 同任务冲突:Yan 等人(2026)按要求逐条测量并排安装的同任务技能让已安装技能损失了什么,修复是挡住竞争技能。作者写出与该工作的三点不同:两个文件都在上下文中,两边都对照已知最好输出打分,所测修复保留两个技能。
冲突指令
- 权限更高的指令:Wallace 等人(2024)用 instruction hierarchy 训练模型遵循两条冲突指令里权限更高的一条。
- 声明的优先级:Geng 等人(2026)写模型常常不执行已声明的优先级,简单格式规则之间也如此。作者称本文的优先级指令以同样方式失败。
- 更早的模式:Camassa 与 Shiller(2026)写对话里更早给出的模式可以压过显式指令。作者称本文里每个技能中的 worked example 起这个作用。作者还称,这些工作比的是一条指令对另一条;本文比的是两份地位相同的完整技能文件,丢掉的内容大多并不与任何规则冲突。
合并与改写技能
- 按任务分数:SkillOps(Pu 等人,2026)合并正文相同的技能。SkillSmith(Wei 等人,2026)用任务分数估计两个检索到的技能是互相帮助还是互相伤害,那些技能做的是不同的事。SkillComposer(Zhang 等人,2026)把两个相似技能改写成一个更一般的技能,用任务通过率评判。
- 约束编译:SkillFusion(Huang 等人,2026)把同时加载技能里的约束对标成硬冲突、软冲突或冗余,编译成一个文件,并在任务成功上超过拼接和一次改写。作者称这是与本文修复最接近的工作。
- 反思式改写:GEPA(Agrawal 等人,2026)根据失败运行及其反馈改写提示词。SkillOpt(Yang 等人,2026)在验证门下编辑一份技能文档。Kozyrev 等人(2026)写,在仓库技能上二者的收益无法与逐次运行的噪声分开。
基线与基准
- 对照条件:两技能同时加载、优先级指令、「apply both」、代码写成的 rule union、上述风格的 feedback loop,以及模型自己的 plain merge 与 step-by-step merge。评测用自建 SKILLCLASH,不是公开技能库。
作者称,上述合并工作按任务成功或合并文件本身打分;本文对每个输出按两个源技能的规则、对照已知最好输出打分,从而看到每种修复保住什么、丢掉什么。作者称合并能起作用,靠的是正确的规则对标注,以及一个同时遵循两个技能的正确示例。
论文如何解决这个问题?
SKILLCLASH 用代码检查四类规则;找回两边规则的是带正确双技能示例的一份合并文件。
整体做法是构建基准 SKILLCLASH,把两份技能文件都放进上下文并两边打分,再比较加指令与合成一份 meta-skill。
任务、技能与四类规则
- 16 个任务:commit message、pull request、SQL、incident report、Python 函数、support reply、changelog、JSON 错误体、code review、测试用例说明、standup、bug report、Dockerfile、接口文档、on-call alert、user story(Appendix A)。
- 一对技能:每个任务有 A、B 两个 SKILL.md,各六条规则加一个只遵循该技能的示例。技能为基准而造,不从公开仓库收集,以便控制规则如何相互作用。
- 四类关系(相对另一技能,Figure 1):contradictory,不能同时满足,每边一条;shared,要求相同,每边一条;entangled,可以同时满足但要小心安排,每边一条;exclusive,另一边不触及,每边三条。与 IFEval 一样,用小程序检查每条规则。
- 标签复核:一位未写技能、未见标签的合作者标出全部 16 对 contradictory 和 16 对 shared,且没有多标。entangled 更难看见:16 对里 8 对标为 entangled,4 对标为 contradictory,4 对未列出。作者称被标成 contradictory 的对里,一条要精确位置、另一条只要附近位置,排好就能同时成立;未列出的是长度和格式限制。
什么算遵守
- 十二条不能全满足,因为 contradictory 不能同时成立。每对指定一个 primary,其矛盾侧为正确侧;每对两个方向各跑一遍。作者称这是唯一应当输掉的地方。
- 正确输出遵循十条不同规则:primary 的六条,加上另一技能的三条 exclusive 和一条 entangled。shared 与 primary 要求相同,不重复计数。
- 每个 primary 有一份参考输出,同一套代码确认它遵循全部十条。Figure 1 那一对的两份参考输出只在首行不同。跑模型前还有自测:每个示例遵循自己的规则,矛盾对和 entangled 对在示例上成立(Appendix A)。
- takeover 不同于 primary:它还丢掉另一技能并不与任何规则冲突的 exclusive 规则。
指标与放入上下文的方式
- rules followed:一个技能六条规则里被遵守的比例。takeover:一边三条 exclusive 全遵守、另一边全丢掉。achievable rules followed:十条里被遵守的比例;只遵循 primary 为 60%。fully correct:十条全遵守。作者称后一指标更严:平均遵守了多数可达成规则,仍可能很少有输出十条全中。
- 两份文件放在系统提示词里,提示词要求遵循每个已加载技能里适用于该请求的每条规则,从而去掉「选不选打开哪个文件」。也测过把两份文件放在用户消息里。用户轮次只要求给出该类文本。
两类修复怎么建
- 加指令:priority 说冲突时 primary 优先,否则仍遵守全部已加载规则。「apply both」说两个技能互补,两边每条规则都要进同一输出,只有不能同时成立时 primary 的规则赢。
- rule union:代码把两边规则抄进一个文件、分成两个标题,不带示例,并加一行说明冲突时哪边赢,不经过模型。
- feedback loop:GEPA 与 SkillOpt 风格。六轮,每轮在三条练习请求上运行,列出打破的规则,让模型改写文件,只有遵守的规则变多才保留。Qwen3-4B 既回答练习请求也改写文件。模型每任务提出 16 条练习请求,保留 12 条,六条给反馈、六条选最终文件(Appendix A)。
- 模型合并:plain merge 让模型写成一份替代两者的 SKILL.md,冲突时 primary 的规则赢,并带一个示例。step-by-step 先列规则、给相互作用的对做标注、为每个 entangled 对写一条合并规则、其余规则逐字复制。七个模型各自为自己合并。Claude Opus 5.5 只看技能文件,其文件交给全部七个模型。
激活里的方向
- 在 Qwen3-4B、Qwen2.5-7B、Llama-3.1-8B 上,取最后一枚 prompt token、模型还没开始写之前的激活,训练线性探针,预测先列出的技能还是后列出的技能会赢。
- steering 在模型读提示词和生成时,把一个固定向量加到某一层的输出上,方向朝向没有 steering 时输掉的技能。一般方向用其余 15 个任务上「先列出的赢」减去「后列出的赢」。层和强度在每任务四条请求上选择,另四条上报告(Appendix E)。作者称这是机制检验,不是修复。
论文做了哪些实验?
同任务并排时七模型规则遵循为61%到62%;Claude Opus 5.5文件上可达成规则为96%到99%。
实验设置
- 被测模型:Qwen3-4B、Qwen2.5-7B、Mistral-7B(Appendix A 写 Mistral-7B-v0.3)、Llama-3.1-8B、Phi-4-mini、Qwen3-235B(qwen/qwen3-235b-a22b-2507)、GPT-4.1(openai/gpt-4.1)。作者称来自五个系列。Claude Opus 5.5 只写合并文件。
- 数据:SKILLCLASH,16 个自建任务,每任务 8 条请求,两种加载顺序,两个 primary。GPT-4.1 每任务跑其中 4 条。
- 解码:开源模型贪心;两个 API 模型经 OpenRouter、温度 0。
- 条件:单技能、无关技能、两同任务技能、priority、「apply both」、rule union、feedback loop、各模型 plain / step-by-step merge、Claude 的合并文件。
- 指标:代码检查,论文未报告 LLM 评审。rules followed 为六条规则的比例;takeover 为 exclusive 三条全有对全无;achievable rules followed 为十条的比例,只跟 primary 为 60%;fully correct 为十条全中。
- 统计:单位是 16 个任务。95% bootstrap 区间按任务,比较按任务配对。
主结果
下表为可达成规则遵循比例(%)。两技能、apply both、rule union、Claude 列分别对应 Table 1–3 的 Both skills loaded、「Apply both」instruction、Rule union + priority line(主文的 rule union)、Step-by-step merge by Claude Opus 5.5。GPT-4.1 每任务 4 条请求。
表格较宽,可左右滑动
模型 两技能 apply both rule union Claude 逐步 Qwen3-4B 58.1% 69.5% 78.6% 98.4% Qwen2.5-7B 58.6% 73.1% 73.2% 96.7% Mistral-7B 60.3% 78.1% 74.6% 96.8% Llama-3.1-8B 59.1% 72.0% 79.4% 98.6% Phi-4-mini 59.9% 69.3% 65.9% 95.9% Qwen3-235B 59.6% 87.6% 85.7% 99.0% GPT-4.1 58.9% 88.6% 89.7% 99.4% - 规则遵循不是上表的分母:Figure 2a 里同任务并排时,六条规则的遵循比例为 61%、61%、62%、61%、62%、62%、61%(顺序同图:Qwen3-4B 到 GPT-4.1)。摘要写单独加载为 93% 到 99%。作者称无关技能不改变结果。五条总能成立的规则上,降幅仍为 28 到 35 个百分点(Section 4)。
- 全有或全无:作者称输出很少是混合。Table 1–3 中两技能同时加载的 takeover 为 45%(Mistral-7B)到 78%(Qwen3-4B)。被丢掉的 exclusive 规则并不与另一技能冲突。
- 指令与合并文件:作者称优先级指令在任何模型上都没有找回丢掉的技能(Table 1–3:可达成规则 61.5% 到 70.6%,takeover 36% 到 82%;正文写 62% 到 71%)。「apply both」在 Table 2 的两个强模型上 takeover 为 0,但两条 entangled 同时遵守为 38% 和 32%,完全正确为 22% 和 21%;作者称 primary 保住矛盾侧为 59% 和 73%(Section 5,与该句并列)。作者称只有 Claude 的文件在每个模型上都接近上限;该条件在 Table 1–3 的 takeover 均为 0。正文把可达成规则概括为 96% 到 99%,表中最低点是 Phi-4-mini 的 95.9%。
示例如何驱动 takeover
- 去掉示例:五个开源模型加 Qwen3-235B 上,有示例时 takeover 为 45% 到 78%,去掉两边示例后为 7% 到 41%(Section 4,Appendix C)。六个模型上,两份完整文件放进一个文件且保留示例,takeover 仍为 34% 到 73%。只留一个技能的示例时,该技能赢得 67% 到 93% 的 takeover;作者称唯一例外是 Phi-4-mini,几乎每次都跟随后列出的技能。
- 同一个双技能示例:六个被测模型上,每个文件以 Claude 合并文件里那个同时遵循两技能的示例结尾时,takeover 降到 1% 到 15%,可达成规则为 90% 到 96%,且没有合并成一个文件。两个强模型上,完全正确输出从 1% 升到 76% 和 60%,「apply both」只有 22% 和 21%(Section 4;Table 2 为 76 与 60、takeover 1 与 15)。
- 没有冲突也会互相妨碍:作者称即便交互规则都去掉,Qwen3-4B、Qwen2.5-7B、Phi-4-mini、Qwen3-235B 完整遵守两边 exclusive 规则的比例,仍比单技能运行的预测低 24 到 33 个百分点,区间不含 0(Appendix C)。SQL 上每个模型 takeover 至多 19%(Section 4;Table 7 最高为 Phi-4-mini 的 19%)。至少 75% takeover 的任务为 5 到 12 个(共 16)。先列出的技能赢得 takeover 的比例:Llama-3.1-8B 74%、GPT-4.1 77%、Qwen2.5-7B 24%、Phi-4-mini 3%。
合并文件里什么在起作用
- 示例占增益的大头:作者称去掉 Claude 文件中的示例,四个有该次运行的开源模型少 9 到 25 个百分点可达成规则,两个强模型大约少 2 个;六个模型上完全正确输出少 14 到 52 个百分点(Section 5,Figure 3c)。把该示例加到代码写的 rule union,六个模型上升 9 到 24 个百分点,都落在 Claude 完整文件的 8 个百分点以内。GPT-4.1 上,rule union 的完全正确输出从 30% 到 89%(Table 2)。来源技能自己的示例加回去则相反:作者称少 0 到 14 个百分点,takeover 回到 32% 到 55%。
- 示例必须正确:Figure 5 按「示例满足全部可达成规则」的比例排列合并者,图下为 0%、9%、12%、16%、31%、53%、94%(Mistral-7B 到 Claude Opus 5.5)。Table 4 的分数为 0/32、3/32、4/32、5/32、2/32、10/32、17/32、30/32(含 Phi-4-mini 的 2/32)。作者称正确示例增加 12 到 17 个百分点,不正确的增加很少或没有增加。作者称同一任务和 primary 下,别的合并者写的正确示例与 Claude 的帮助相差在 1 个百分点以内(三个 reader)。
- 标注不对,逐步合并就不更好:Claude Opus 5.5 把 48 对交互规则全部标对,且没有多报,32/32 个文件每条规则都处理对(Table 4)。七个自合并模型正确标注 2 到 39 对,并报告 8 到 61 对并不交互的规则对,至多 14/32 个文件全对。无此类错误时,作者给出 step-by-step 对 plain 为 96% 对 96%(Qwen3-235B)和 94% 对 96%(GPT-4.1);有一处错误时为 84% 对 94% 和 88% 对 94%,未写明后两组属于哪两个合并者。换成正确标签后,Qwen3-4B 的逐步合并在七个模型上增加 8 到 10 个百分点(Table 5 为 +8.1 到 +9.6)。
激活方向与公开摘要
- 探针:对见过的技能对,猜该对的常见胜者已对 96% 到 99% 的 takeover 输出正确;Table 8 对新请求的基线为 96.5%、98.9%、97.1%。对没见过的对,作者称没能在三个模型上显示探针优于总是猜先列出的技能,并称 16 个留出对使这个检验偏弱。
- steering:作者称一般方向翻转 38% 到 49% 的 takeover,同层同强度随机方向翻转 0% 到 3%。Table 9 里 best for flipping 的翻转为 48.8%、48.1%、37.7%,对应随机对照为 2.9%、0%、0%(Qwen3-4B、Qwen2.5-7B、Llama-3.1-8B)。作者称两边都被遵守的情况在任一模型上至多 13%;Table 9 中该格最高为 13,且 Llama-3.1-8B 的一条随机对照也为 13。Qwen3-4B 上更强的 steering 会破坏文本。Figure 6 的留出请求为每模型 89 到 100 条,且无 steering 时都是 takeover。
- 公开摘要:作者重分析 Yan 等人的公开运行摘要,Claude Code 里同时用到两个技能的运行,相对只装技能 A 的配对运行,只由 A 提出的要求少满足约 8 个百分点(Section 7,Appendix F)。作者称这是观察性的,效应小于本文基准,但方向一致。Figure 7 注明哪些技能被用到并未随机化。
其他消融与分析
- 两文件放在用户消息而非系统提示词:六个模型上规则遵循降 32 到 37 个百分点(不含 Mistral-7B;Section 4)。
- 无示例时,一个文件相对两个文件:Table 5 为 +12.5、+9.6、+6.9、+17.9、+5.6、+14.8 个百分点;Phi-4-mini 的区间 [−1.2, 11.4] 含负值。
- feedback loop:Table 5,Qwen3-4B 上 rule union 循环后相对循环前 +13.8 个百分点,Llama-3.1-8B 读同一批文件 +9.7;挑起冲突的练习请求相对普通请求为 −0.2 与 −0.9,区间含 0。Figure 4 的该行是 92 / 89,强模型标为 not run。
- Qwen3-4B 作读者时,plain merge 的可达成规则为 79.3%、87.0%、93.9%、92.5%、97.7%(写作者依次为 Qwen3-4B、Llama-3.1-8B、Qwen3-235B、GPT-4.1、Claude;Table 1)。作者正文写 79、87、94、92 和 98。
- 只保留「有技能才遵守、无技能不遵守」的规则(162 到 174 / 192)时,七模型 takeover 为 52.1% 到 84.4%(Appendix A)。
- 模型给自己做 plain merge 的可达成规则,作者写 71% 到 95%;Table 5 中 Claude 文件相对各模型自己的 plain merge 高 4.7 到 24.8 个百分点,作者正文写 5 到 25。
有什么可以进一步探索的点?
作者称逐步合并取决于规则标注,且只有一个合并者标对;两处修补尚未测试。
作者指出的局限与后续方向
- 标注决定逐步合并(Section 7):step-by-step merge 取决于给规则对做标注,只有一个合并者标得足够好。
- 保存前检查尚未测试(Section 7):在保存前用源规则检查每条合并后的规则和示例。作者称这看起来便宜,但仍待测试。
- 标注存疑时退回尚未测试(Section 7):标注有疑问时改用 plain merge。作者称同样尚未测试。
- 真实技能没有规则检查器(Section 7):在真实技能上检查一次合并,需要评审模型或手写检查,因为真实技能不带规则检查器。
实验覆盖范围
- 被测读者为 Qwen3-4B、Qwen2.5-7B、Mistral-7B、Llama-3.1-8B、Phi-4-mini、Qwen3-235B、GPT-4.1,作者称来自五个系列;开源模型贪心解码,API 模型温度 0。GPT-4.1 每任务使用 8 条请求中的 4 条(Appendix A)。
- SKILLCLASH 为 16 个自建任务、每任务 8 条请求、两种加载顺序、两个 primary;每条规则由代码检查。一位未见标签的合作者复核了 16 对规则关系(Section 3)。
- 修复条件包括优先级指令、「apply both」、代码 rule union、由 Qwen3-4B 运行且由其与 Llama-3.1-8B 阅读的 feedback loop、七个模型各自的 plain 与 step-by-step merge,以及只看技能文件的 Claude Opus 5.5(Section 5,Figure 4)。
- 线性探针与 activation steering 在 Qwen3-4B、Qwen2.5-7B、Llama-3.1-8B 上进行;层和强度在每任务 4 条请求上选择,另 4 条上报告。Figure 6 的留出请求为每模型 89 到 100 条,且无 steering 时都以 takeover 结束(Appendix E)。
- 区间为按 16 个任务的 95% bootstrap,比较按任务配对。Figure 4 将强模型上的 feedback loop 标为 not run。Table 2、Table 3 中部分条件以「–」出现、没有数字。主指标由代码判定;论文未报告另用 LLM 给这些输出打分,也未报告温度 0 之外的重复采样。Appendix F 是对 Yan 等人公开运行摘要的再分析。
总结一下论文的主要内容
同任务技能并排时常出现 takeover;带正确双技能示例的合并文件让七模型守住可达成规则。
SKILLCLASH 用来看编程智能体在两份同任务技能都进入上下文后,会合并规则还是丢掉一边。
- 技能并排安装时,多数规则可以一起遵守,但没有机制阻止两个同任务技能同时生效。Yan 等人已经量过同任务技能互相取代,但其智能体按需打开文件,且只给一边打分。
- 16 对技能为这个基准而造。每边六条规则,关系分为 contradictory、shared、entangled、exclusive。指定 primary 后可达成十条;代码检查输出,参考输出确认这十条能同时达到。takeover 指一边的 exclusive 规则全遵守、另一边全丢掉。
- 七个模型上,单独加载时规则遵循为 93% 到 99%,同任务技能并排时为 61% 到 62%,45% 到 78% 的输出是 takeover。作者称技能里的 worked example 驱动了其中大部分;六个模型上,每个文件改成同一个双技能示例后,takeover 降到 1% 到 15%。
- 优先级指令没有找回丢掉的技能。「apply both」只在 Qwen3-235B 与 GPT-4.1 上使 takeover 为 0,完全正确输出为 22% 与 21%(Table 2)。Claude Opus 5.5 的逐步合并文件在七个模型上 takeover 为 0;正文写可达成规则为 96% 到 99%,Table 3 中 Phi-4-mini 为 95.9%。
- 作者称该文件相对两边规则清单的增益,大多来自末尾那个同时遵循两个技能的正确示例;示例不正确就增加很少或没有增加。作者称谁来写合并,比逐步流程本身更重要,因为逐步合并好不好取决于标注对不对。
- 作者称 takeover 发生在两份文件都已加载之后,改进技能选择因此解决不了;挡住一个技能会放弃它的规则。作者称每个模型上更高的结果,来自用手头最强的模型合并一次:文件以一个正确的双技能示例结尾,并且不要复制来源技能自己的示例。