1. 项目概述:从“知识仓库”到“技能引擎”的进化
在AI Agent(智能体)和知识管理领域,我们常常面临一个核心困境:我们积累了海量的资料、笔记和所谓的“方法论”,但它们大多躺在文档库里“沉睡”。当我们需要解决一个具体问题时,这些知识无法被直接调用、执行和验证。这就像拥有一座藏书丰富的图书馆,却没有一个能立刻帮你写论文、做决策的图书管理员。胖叔蒸馏法(Pangshu Zhengliu Skill)正是为了解决这个痛点而生。它不是一个简单的笔记模板,而是一套将静态知识(无论是来自一本书还是一个人)转化为动态、可执行、可测试、可进化“技能包”的完整工程化流水线。
我最初接触到这个概念,是源于对现有知识蒸馏工具如Cangjie Skill的深度使用与反思。Cangjie提供了很好的框架,但在实际落地时,我发现了八个难以绕开的弊端,比如验证过程的主观性、多提取器之间的冲突、维护成本随着技能数量增长而指数级飙升等。胖叔蒸馏法正是在此基础上,融合了人物蒸馏(Nuwa)的“表达DNA”捕捉能力和自动进化(Darwin)的迭代思想,进行的一次全面升级。它的目标用户非常明确:任何希望将个人或组织的隐性知识、经验方法论体系化、产品化,并最终能被AI Agent或人类高效、可靠使用的知识工作者、团队负责人或AI应用开发者。
简单来说,它要回答的问题是:如何确保你从《原则》这本书里提炼出的“决策技能”,在三个月后、面对一个全新场景时,依然能做出符合瑞·达利欧精神的判断,并且这个技能还能自我优化?接下来,我将拆解这套方法的核心架构、实操细节以及我踩过的坑,让你不仅能理解其原理,更能亲手复现一个属于自己的“技能工厂”。
2. 核心架构解析:三元整合流水线与八大弊端根治
胖叔蒸馏法的底层逻辑是一个清晰的五阶段流水线,但它的精髓在于对原有体系“弊端”的精准手术。理解它解决了什么问题,比单纯记住步骤更重要。我们先回顾一下它宣称解决的八个核心弊端,这能帮你理解每个设计决策背后的“为什么”。
2.1 八大弊端与针对性解决方案
原版Cangjie Skill在理想环境下运行良好,但一旦投入生产级、多技能的管理,问题就暴露出来。胖叔蒸馏法的每一项改进都直指一个具体痛点:
弊端一:三重验证(V1-V3)的主观性漏洞。原版的跨域验证(V1)、预测力验证(V2)和独特性验证(V3)严重依赖操作者的主观判断。比如,什么叫“有意义的结论”?不同的人尺度差异巨大。
- 解决方案:引入V4自我一致性验证。这是最关键的一步。它要求提炼出的技能,其内部结构(R-触发条件、I-具体指令、A-行动模板、E-预期结果、B-边界条件)必须逻辑自洽,不能互相矛盾。例如,一个技能如果触发条件是“当项目预算超标时”,那么其行动模板里就不应该出现“不计成本采购”的选项。这增加了一个客观的、结构化的检查点。
弊端二:五个并行提取器缺乏协调。原版同时从不同角度(如原则、流程、启发式等)提取知识点,但提取出的条目经常高度重复或存在细微冲突,后期去重和合并工作量巨大。
- 解决方案:新增Coordinator协调层。这个协调层不是一个简单的去重工具。它在提取阶段就介入,为每个提取器分配一个“置信度权重”,并实时比对结果。当多个提取器指向同一核心概念时,Coordinator会主动合并,并标记出冲突点,提交给验证阶段裁决,而不是把一堆原始数据扔给下游。
弊端三:诱饵测试的“鸡生蛋”问题。原版用“诱饵”(错误或无关信息)测试技能的辨别力,但如何生成高质量的、不被一眼看穿的“诱饵”本身就是一个难题,形成了一个循环依赖。
- 解决方案:改为边界探测测试。放弃生成“假信息”,转而系统性地探测技能的“边界”。我们设计一系列边界场景(
boundary_probes),比如“输入信息缺失关键参数”、“请求执行一个相似但本质不同的任务”。测试技能在边界上的反应是否符合预期(如拒绝、要求澄清、给出警告)。这更符合实际应用场景,也更容易设计。
- 解决方案:改为边界探测测试。放弃生成“假信息”,转而系统性地探测技能的“边界”。我们设计一系列边界场景(
弊端四:V3独特性验证过于严格,误杀高价值常识。原版会过滤掉那些看似“常识”的要点,但有些高频、高价值的行动原则,恰恰以常识形式存在(如“沟通时要确认对方理解”)。
- 解决方案:增加“应用密度”豁免条件。如果一个知识点在源材料中出现的频率极高(应用密度高),或者它虽然常识,但被作者以独特的方式强调、组合或赋予了新的上下文,那么它可以通过豁免,被视为有价值的“技能化常识”。
弊端五:对源材料格式依赖性强。原方法假设输入是结构良好的文本,对混乱的会议记录、碎片化的推特风暴或音视频转录稿处理乏力。
- 解决方案:源头质量前置评估。在蒸馏开始前,先对源材料进行快速诊断:结构化程度如何?核心论点是否清晰?噪声比例多大?根据评估结果,决定是否需要进行预清洗、摘要或结构化重整,确保流入流水线的“原料”质量达标。
弊端六:维护成本随技能数量指数增长。当你有10个技能时,手动更新或许可行。当有100个时,一个底层原理的更新可能就需要手动修改几十个技能,几乎不可维护。
- 解决方案:内置自动化维护系统。这是工程化的关键。技能之间可以声明依赖关系。当某个基础技能(如“风险评估框架”)更新后,系统能自动通知并指导依赖它的上层技能(如“投资决策技能”、“项目启动技能”)进行适配性检查或更新,极大降低了运营负担。
弊端七:INDEX(技能索引)链接随时过时。技能库中的相互引用是静态链接,一旦某个技能文件被移动、重命名或删除,索引就断裂了。
- 解决方案:变更传播 + 版本锁定机制。一方面,通过自动化维护系统传播变更;另一方面,为技能库引入简单的版本概念或唯一ID引用,替代脆弱的文件路径链接,确保索引的稳定性。
弊端八:技能原子化边界模糊。一个技能应该多“细”粒度?原版缺乏量化标准,导致技能大小不一,有些过于庞大难以执行,有些又过于琐碎。
- 解决方案:触发条件量化标准。强制要求每个技能的触发条件(R)必须是一个可观察、可判断的具体情境或事件。例如,将模糊的“当团队士气低落时”进化为“当连续两次项目复盘会中,超过30%的成员表达消极或迷茫情绪时”。这从定义上就约束了技能的粒度。
2.2 五阶段核心流水线拆解
基于以上改进,整个蒸馏流程被重构为一个更健壮的五阶段流水线:
阶段 0:知识理解与源头质量评估
- 目标:不是直接开干,而是先给“原料”做体检。
- 操作:运行一个快速诊断脚本或提示词,分析源材料的信噪比、结构完整性、核心主题密度。输出一个评估报告,建议是否需要以及如何进行预处理(如:摘要提取、观点聚类、去除冗余例子)。
- 实操心得:千万不要跳过这一步。我曾试图直接蒸馏一场冗长的辩论记录,结果提取器产生了大量重复和矛盾的观点,就是因为没有先梳理出辩论的核心逻辑树。花10分钟做评估,能节省后面2小时的清理工作。
阶段 1:协调提取
- 目标:多视角、去冗余地抓取潜在技能点。
- 操作:五个提取器(如:原则提取器、流程提取器、隐喻提取器、反模式提取器、启发式提取器)并行工作,但它们的输出会实时汇入一个Coordinator。
- Coordinator的工作:
- 文本向量化:将所有提取出的句子或段落转换成向量。
- 聚类与去重:基于向量相似度,将描述同一概念的条目聚类。
- 冲突检测:标记出表述不一致的聚类(例如,一个提取器说“A优先于B”,另一个说“B情况下可忽略A”)。
- 输出初步技能条目清单,并附带置信度标签和冲突标记。
阶段 1.5:四重验证
- 目标:对初步清单进行严格过滤,确保技能点的质量。
- 操作:对每个技能条目依次进行四道关卡检验。这里的关键是将主观标准客观化。
- V1 跨域验证:要求该观点在源材料中,至少在两个不同上下文(如不同章节、针对不同问题)中被提及或佐证。这避免了断章取义。
- V2 预测力验证:给出一个源材料中未直接提及的新场景,测试用该技能点能否推导出一个合理、有意义的结论或行动。这是检验技能泛化能力的关键。
- V3 独特性验证:判断它是“公共常识”还是“独特见解”。这里应用“应用密度豁免”——如果该点在书中反复出现、被特殊强调,即使听起来像常识,也予以保留。
- V4 自我一致性验证(新增):将该技能点初步扩展成 R/I/A/E/B 结构,检查其内在逻辑是否自洽。例如,触发条件(R)是否真能必然引向所述行动(A)?预期结果(E)是否与行动(A)匹配?
- 注意事项:验证顺序很重要。通常按V1 -> V4 -> V2 -> V3进行。V4(自洽性)前置可以尽早淘汰那些逻辑混乱的条目,避免后续无效劳动。
阶段 2:RIA++E 构造
- 目标:将验证通过的“知识点”封装成标准化的“技能包”。
- 操作:为每个点填充完整的技能结构。这里的“++”强调了量化和扩展。
- R (Trigger Condition) - 触发条件:必须按照“弊端八”的解决方案,描述为可量化、可观测的事件。
- I (Instruction) - 具体指令:清晰、无歧义的操作指南。
- A (Action Template) - 行动模板:可复用的代码块、命令模板或对话流程。
- E (Expected Outcome) - 预期结果:描述执行成功后的具体产出和状态变化。
- B (Boundary Conditions) - 边界条件:明确说明该技能在什么情况下不适用(连接“边界探测测试”)。
阶段 3:达尔文进化
- 目标:让技能在使用中迭代优化,而非一成不变。
- 操作:这是将技能投入使用的循环。
- 部署与监控:将技能包加载到你的AI Agent(如OpenClaw)或知识系统中。
- 边界探测测试:定期用预设的边界场景
boundary_probes测试技能,收集其反应。 - 评分与反馈:根据一套量化的评分标准(Rubric),评估技能在真实使用和边界测试中的表现。评分维度可包括:准确率、执行速度、用户满意度、边界清晰度等。
- 迭代更新:根据低分项和反馈,回溯修改技能的 R/I/A/E/B 结构,甚至重新验证其核心知识点,完成一次进化循环。
阶段 4:自动化维护
- 目标:降低技能生态的长期运营成本。
- 操作:通过技能间的依赖声明和变更监听机制,当基础技能更新时,自动触发相关技能的审查和更新建议,形成可管理的技能网络。
3. 实操过程:手把手蒸馏一份会议纪要
理论说得再多,不如亲手做一遍。假设我们要将一次关于“高效代码评审”的团队内部会议纪要,蒸馏成可执行的技能。我们将使用胖叔蒸馏法的简化手动流程来演示。
3.1 阶段0:源头质量评估
原始材料片段:
“老王说:评审时要抓大放小,别纠结缩进。小李补充:对,关键是看逻辑和架构是否合理。小张觉得应该有个检查清单。我提到上次因为没看边界条件出了bug。大家同意以后评审前,作者要先自检一遍。”
评估操作:
- 识别内容类型:非结构化讨论记录。
- 识别核心主题:代码评审的最佳实践。
- 识别噪声:人称代词(老王、我)、口语化表达(“抓大放小”)。
- 评估结论:核心观点明确但分散,需要先进行“观点聚类”预处理。
预处理(观点聚类):
- 观点1:关注重点(逻辑、架构),而非格式(缩进)。 ->核心:评审焦点
- 观点2:使用检查清单确保完整性。 ->核心:评审工具
- 观点3:注意边界条件测试。 ->核心:评审内容
- 观点4:作者预先自检。 ->核心:评审流程
现在,我们得到了四条更结构化的“潜在技能点”。
3.2 阶段1:协调提取与阶段1.5:四重验证
我们对这四点进行验证。这里我们手动模拟Coordinator和验证流程。
| 潜在技能点 | V1跨域验证 (是否在多个语境提及) | V2预测力验证 (能否解决新问题) | V3独特性验证 (是常识吗?) | V4自洽性验证 (逻辑自洽吗?) | 结果 |
|---|---|---|---|---|---|
| 1. 评审焦点:应关注逻辑与架构,而非代码格式。 | 会议中“抓大放小”和“别纠结缩进”是同一语境。未通过。 | 问:面对一个算法复杂但格式工整的PR,如何做?答:优先分析算法效率。通过。 | “关注逻辑”是常识,但“明确反对纠结格式”是具体团队规范。应用密度高,豁免通过。 | 触发条件:进行代码评审时。行动:优先检查…。逻辑一致。通过。 | 有条件通过(V1弱,但V2/V4强,V3豁免) |
| 2. 评审工具:使用标准化检查清单。 | 仅小张一人提出。未通过。 | 问:如何确保不遗漏安全评审?答:检查清单中需包含安全项。通过。 | 使用检查清单是常见实践,非独特见解。未通过。 | 逻辑自洽。通过。 | 不通过(V1弱,V3未过) |
| 3. 评审内容:必须包含边界条件测试用例审查。 | “我”提到历史bug佐证。单一语境,未通过。 | 问:函数输入参数范围很大,如何审?答:重点看对异常值、边界值的处理。通过。 | 审查边界条件是特定经验,非通用常识。通过。 | 触发条件:评审包含函数的代码。行动:检查…。逻辑一致。通过。 | 有条件通过(V1弱,但V2/V3/V4强) |
| 4. 评审流程:作者在提交评审前需进行自检。 | “大家同意”形成共识。单一语境,未通过。 | 问:如何减少低级错误导致的评审轮次?答:作者自检可过滤掉明显错误。通过。 | 要求作者自检是常见流程优化。未通过。 | 逻辑自洽。通过。 | 不通过(V1弱,V3未过) |
实操心得:验证过程是过滤器的核心。你会发现,很多直觉上“有道理”的点,在严格验证下可能站不住脚。像“使用检查清单”这样的好实践,因为缺乏跨语境佐证(V1)和独特性(V3),在这里被过滤了。但这不意味着它没用,而是它可能不适合作为从这个特定会议中蒸馏出的核心技能,它更像一个通用的支持性动作。这迫使我们去寻找更独特、更经过验证的洞察。
3.3 阶段2:RIA++E 构造
我们将通过验证的两点(1和3)构造成技能。
技能1:代码评审焦点管理
- R (触发条件):当启动一次代码评审(Pull Request Review),且变更行数超过50行或涉及核心模块时。
- I (具体指令):优先分析代码变更的业务逻辑正确性、架构合理性、算法效率以及潜在的性能影响。明确将代码风格、缩进格式等静态检查问题标记为低优先级或交由自动化工具处理,除非它们严重影响可读性。
- A (行动模板):
## 评审意见模板(焦点管理版) **【逻辑与架构】** - [ ] 本次变更是否与需求描述一致? - [ ] 新增的模块/函数职责是否单一?与现有架构融合度如何? - [ ] 是否存在更优的算法或数据结构选择?(时间复杂度/空间复杂度分析) **【性能与安全】** - [ ] 是否引入了潜在的性能瓶颈(如循环内查询数据库)? - [ ] 是否有必要的输入验证和错误处理? **【格式与风格】(自动化/次要)** - *注:此部分建议由ESLint/Prettier等工具自动检查,人工仅复核极端情况。* - E (预期结果):评审意见集中在高价值的设计和逻辑问题上,减少在低价值格式问题上的争论,提升评审效率和有效性。
- B (边界条件):不适用于纯样式文件(如CSS)的评审,或团队明确规定的“代码整洁度冲刺”专项评审。
技能2:边界条件测试用例审查
- R (触发条件):当评审的代码包含函数/方法定义,且该函数接受外部输入(参数、用户输入、API响应)时。
- I (具体指令):必须检查该函数对应的单元测试或集成测试是否覆盖了关键的边界条件,包括:无效输入(null, undefined, 空字符串)、极端值(最大值、最小值)、类型错误输入、以及业务逻辑上的边界状态。
- A (行动模板):
# 命令行检查示例 (假设项目使用Jest) # 1. 找到被评审函数对应的测试文件 grep -r "functionName" src/ --include="*.test.js" --include="*.spec.js" # 2. 快速查看测试用例中是否包含以下关键词 echo "检查测试用例是否包含:" echo "- null / undefined / empty input" echo "- edge cases (e.g., MAX_SAFE_INTEGER)" echo "- invalid type" echo "- error state handling" # 人工复核这些用例的逻辑是否正确 - E (预期结果):确保新增代码对异常和边界情况具有鲁棒性,防止因未覆盖边界条件而导致的线上缺陷。
- B (边界条件):不适用于简单的常量定义、配置项修改或纯粹的文本内容更新。
3.4 阶段3:达尔文进化与边界探测
技能构造完成后,不能束之高阁。我们需要设计边界探测测试来验证和打磨它。
为【技能1:代码评审焦点管理】设计边界探测:
{ "boundary_probes": [ { "scenario": "一个PR只修改了README.md文件中的几个错别字。", "expected": "技能应建议‘无需进行深度逻辑评审,仅做简单文案核对即可’,或直接跳过该技能。" }, { "scenario": "团队新规要求本次迭代必须统一代码风格,所有PR必须通过严格的格式检查。", "expected": "技能应能识别此特殊上下文,并调整优先级,将格式检查列为高优先级,同时说明这是由特殊规则触发的例外。" }, { "scenario": "评审者是一名新人,对业务逻辑不熟,但对代码风格很敏感。", "expected": "技能应给出引导性建议,如‘建议先请熟悉业务的同事进行逻辑评审,你可重点关注风格问题作为补充’,而非僵化执行。" } ] }运行这些测试后,我们可能发现技能在“例外情况”处理上不够灵活。于是我们进化技能:在B (边界条件)中更详细地列举例外,或在I (具体指令)开头增加一条:“首先,判断本次评审是否属于以下特殊情况:[列举]。如属于,则按特殊情况流程处理。”
评分Rubric示例:
| 维度 | 评分标准 (1-5分) | 初始得分 | 进化后目标 |
|---|---|---|---|
| 准确性 | 技能建议的行动是否总是正确? | 4 | 4.5 |
| 适用性 | 是否清晰定义了何时用/何时不用? | 3 (边界模糊) | 5 |
| 可执行性 | 行动模板是否可直接操作? | 5 | 5 |
| 用户满意度 | 使用者是否觉得有帮助、不僵化? | 3 (新人场景不佳) | 4 |
通过这种“测试 -> 评分 -> 改进”的循环,技能就像生物一样,不断适应更复杂的环境。
4. 常见问题与排查技巧实录
在实际部署和应用胖叔蒸馏法的过程中,你会遇到一些典型问题。以下是我总结的“避坑指南”。
4.1 问题:提取阶段产出极低,感觉“无技能可提”
- 症状:运行完提取器,得到的潜在技能点列表很短,或者质量很低。
- 排查思路:
- 检查阶段0的评估:是否误判了源材料质量?可能材料本身过于空泛、理论化,缺乏可操作的具体观点。解决方案:更换源材料,或尝试从案例、故事中逆向推导原则(这是Nuwa人物蒸馏的强项)。
- 检查提取器配置:你的提取器提示词(Prompt)是否过于严格或指向性不明?例如,如果只让提取“颠覆性创新原则”,可能会错过很多细微但实用的“效率提升技巧”。解决方案:使用更宽泛、多角度的提取指令,或增加提取器类型(如增加“常见错误提取器”、“隐喻/类比提取器”)。
- 审视Coordinator去重阈值:向量相似度去重的阈值是否设置得太高?过高的阈值会把本应分开的相似但不相同的点合并。解决方案:适当调低相似度阈值,或改为人工审查聚类结果。
4.2 问题:V3独特性验证杀掉了太多“有用常识”
- 症状:很多你觉得很有用的行动指南,在V3验证中被标记为“常识”而过滤。
- 排查思路:
- 确认“应用密度”:回顾源材料,这个“常识”是否被作者反复强调、用不同例子论证、或作为其思想体系的基石?如果是,它符合“高应用密度豁免”。解决方案:在V3验证环节,手动为这些点添加豁免标记。
- 重新定义“独特性”:独特性不一定指观点全球首创。可以定义为“在特定上下文下的特定强调组合”。例如,“沟通要清晰”是常识,但“在远程异步协作中,沟通必须采用结构化模板并附带背景链接”就是一种独特的、可技能化的实践。解决方案:在验证时,引导思考“这个常识在这里是否有特殊的实现形式或附加条件?”将其特殊部分作为技能核心。
4.3 问题:构造的RIA++E技能感觉僵硬,无法应对现实复杂性
- 症状:技能在测试时表现良好,但一到真实复杂场景就失灵,需要人工大量干预。
- 排查思路:
- 检查触发条件(R)是否过于模糊或狭窄:“当遇到问题时”太模糊;“当使用Python的pandas库读取CSV文件第5列失败时”太狭窄。解决方案:将R定义为“当进行[某类任务]且观察到[某个特定现象或状态]时”。例如:“当进行数据清洗任务,且发现某列数据存在大量缺失值或异常格式时”。
- 检查指令(I)和模板(A)是否包含决策分支:好的技能不应是单一路径。它应该包含简单的“if-then”逻辑。解决方案:在I和A中增加条件判断。例如:“如果缺失值比例<5%,则执行策略A(删除或填充);如果>5%,则执行策略B(分析原因并上报)”。
- 边界条件(B)是否充分:技能僵硬往往是因为边界没划清。解决方案:积极开展“边界探测测试”,把每一个遇到的例外场景都沉淀到B中。B部分应该是一个不断增长的、鲜活的列表。
4.4 问题:自动化维护系统难以建立
- 症状:技能间依赖关系复杂,手动维护苦不堪言,但感觉搭建自动化系统工程浩大。
- 排查思路:
- 从简单开始,不要过度设计:初期不需要一个全自动的依赖解析引擎。可以从一个简单的技能元数据文件开始。在每个技能的YAML Frontmatter或一个中央索引
INDEX.md中,用标签声明其依赖的技能ID。# 在技能文件的头部 dependencies: - skill_id: risk_assessment_framework_v2 - skill_id: communication_escalation_protocol_v1 - 建立变更通知流程:当某个技能更新版本时,维护者手动在公告区或日志中发布一条记录。其他技能的维护者定期查看,并根据依赖关系手动检查自己的技能是否需要更新。这已经是半自动化的“通知”机制。
- 利用现有工具:如果你的技能库是用Git管理的,可以利用Git的
submodule或依赖关系管理的思想。甚至可以用简单的脚本扫描技能文件中的dependencies字段,在检测到被依赖技能更新时,自动生成一个待检查的Issue。关键在于将依赖关系显式化、文档化,而不是追求完全无人值守。
- 从简单开始,不要过度设计:初期不需要一个全自动的依赖解析引擎。可以从一个简单的技能元数据文件开始。在每个技能的YAML Frontmatter或一个中央索引
4.5 问题:技能评分(Rubric)主观性强,难以驱动有效进化
- 症状:进化阶段的评分流于形式,分数无法真实反映技能好坏,也不知道如何改进。
- 排查思路:
- 量化评分标准:避免使用“好”、“一般”、“差”这种模糊词。为每个维度定义可观察、可测量的标准。
- 差(1分):技能建议在超过50%的测试场景中导致错误或无效行动。
- 中(3分):技能在大多数(>70%)典型场景中正确,但在边界场景需要人工修正。
- 优(5分):技能在所有预设的典型和边界探测场景中均给出正确且有效的行动建议,并能解释其推理。
- 引入外部数据:不要只依赖设计者的评分。如果技能被AI Agent使用,可以收集它的执行成功率和用户反馈。如果被人使用,可以设置简单的反馈机制(如“本次建议是否有用?”的点赞/点踩)。将客观数据纳入评分。
- 聚焦低分项迭代:进化不是泛泛地“让技能更好”,而是针对性地解决最低分的那个维度。如果“适用性”得分低,就重点优化触发条件(R)和边界条件(B);如果“可执行性”得分低,就细化行动模板(A)。
- 量化评分标准:避免使用“好”、“一般”、“差”这种模糊词。为每个维度定义可观察、可测量的标准。
这套方法最吸引我的地方,在于它将知识管理从“收藏”变成了“锻造”。它承认知识的流动性、情境依赖性和可进化性。你不再是一个被动的知识囤积者,而是一个主动的技能工程师。最大的挑战并非来自工具或流程,而是来自我们自身思维的转变——你是否愿意用如此严谨、甚至略显繁琐的工程化方式,去对待你脑海中的那些“经验”和“直觉”?一旦跨过这个门槛,你会发现,那些曾经模糊不清的“我觉得应该这样”,终于变成了清晰可靠、可传承、可迭代的“我们就这样做”。