Agent Skills:能力如何封装、发现与按需加载
从一次真实的技术文章任务出发,解释 Agent Skill 怎样把触发条件、执行流程、工具、资料与验证组织成可复用的行为模块。
每次让 Agent 写技术文章,都在 Prompt 里重复一遍写作标准、资料来源、图片风格、审计命令和提交步骤,当然也能工作。问题是规则会散落在对话里:这一篇记得查官方资料,下一篇忘了;正文写完了,构建和页面验收没有做;换一个项目后,同一套要求还要重新解释。
Skill 解决的是这类重复行为的封装。它用一份可发现的元数据、一组执行指令和按需读取的资源,把“遇到某类任务时应该怎样做”放进 Agent 可以加载的能力包。模型仍负责理解当前任务,工具仍负责读写文件和访问外部系统,Skill 则规定怎样组织这些能力,以及怎样证明任务完成。
本文回答一个工程问题:怎样设计一套能被正确发现、只占用必要 Context、可以约束执行并能用真实任务验证的 Agent Skill 系统?
事实层主要来自 OpenAI 的 Build skills 文档、Agent Skills 规范,以及苏雄的《AI Agent 的 Skill 系统设计》。我还会使用这个博客真实采用的技术写作 Skill 作为贯穿案例。OpenAI 与 Agent Skills 规范描述的是当前公开格式和产品行为;文中的门控、评测与团队治理属于基于实际使用总结出的工程方法。
先看结论
Skill 是一份可加载的行为模块。最小形态是一座目录,其中 SKILL.md 用 YAML frontmatter 描述名称与触发范围,用 Markdown 正文规定执行方法。复杂 Skill 还可以附带脚本、参考资料、模板与产品元数据。
Skill 不执行真实动作。搜索代码、修改文件、调用 API 和生成图片仍由工具完成;权限、沙箱与审批仍属于 Harness。Skill 的工作是告诉 Agent 何时选哪些工具、按什么顺序使用、哪些条件没有满足就不能继续,以及用什么证据验收。
Skill 系统的核心约束来自 Context 预算。运行时先保留所有 Skill 的精简元数据,命中任务后才读取完整 SKILL.md,更细的参考文件继续按需加载。发现、指令和资源分成三层,才能让技能库增长而不把每轮模型输入塞满。
好 Skill 不能只靠作者读起来觉得合理。触发准确率、规则遵循率、工具轨迹、产物 diff、构建结果和失败恢复都可以测试。压力场景尤其重要,因为 Agent 最容易在时间紧、上下文长或工具报错时跳过验证。
上图给出本文的坐标:Skill 目录先参与路由,完整正文随后进入 Context,执行阶段再调用工具和资源,最后用外部证据验收。任何一层失败,都应该回到自己的责任边界处理。
一、Skill 处在 Agent 系统的哪一层
讨论 Skill 时,Prompt、工具、Workflow、知识库和 Memory 很容易混在一起。它们会在同一个任务中协作,但解决的问题不同。
| 概念 | 主要内容 | 何时进入运行过程 | 谁负责真实效果 |
|---|---|---|---|
| Prompt | 当前任务的目标、输入和约束 | 本轮调用前 | 模型与 Harness |
| Skill | 某类任务可复用的行为规则与资源 | 匹配任务后加载 | Agent 按规则编排工具,Harness 执行 |
| Tool | 可调用的外部能力 | Agent 产生动作请求时 | 工具实现与执行环境 |
| Workflow | 预先确定的节点、分支和状态迁移 | 流程启动时 | Workflow 引擎 |
| Knowledge / RAG | 可检索的事实、文档和业务资料 | 查询命中后 | 检索系统与数据源 |
| Memory | 跨步骤或跨会话保留的状态 | 写入和召回策略触发时 | 独立的记忆系统 |
一份 pdf-processing Skill 可以规定先检查文件、再选择提取或合并脚本、最后渲染页面验收。真正读取 PDF 的是脚本或 PDF 工具。Skill 里可以引用格式规范,却没有必要变成一座 PDF 知识库。它也可能读取用户偏好,但怎样保存和召回偏好属于 Memory 文章的范围,本文不展开。
Skill 与普通系统提示词的差别
两者最终都可能成为模型输入,差别在生命周期和组织方式。系统提示词通常每轮常驻,适合所有任务都必须遵守的身份、安全规则与交互约定。Skill 只在相关任务中展开,适合 PDF 处理、技术写作、故障排查等局部工作流。
如果一条规则无论做什么都必须生效,它更适合系统层或程序策略。比如“外部发送消息前必须获得批准”,不能因为消息 Skill 没有触发就失效。反过来,把几十种文件格式的详细处理步骤塞进全局提示,会挤占 Context,也会让无关任务受到干扰。
Skill 让长指令获得了地址和边界。运行时知道它叫什么、何时加载、资源在哪里;维护者能给它版本、测试和所有者。单次对话里的长 Prompt 往往缺少这些工程属性。
Skill 与工具的差别
工具提供动作,Skill 提供使用动作的方法。git_diff 可以返回代码差异,技术写作 Skill 会规定修改文章后运行 git diff --check;浏览器可以打开本地页面,Skill 会规定检查标题、两侧目录、代码溢出和图片;apply_patch 可以改文件,Skill 则要求保留用户已有修改。
这个边界也解释了为什么 Skill 不能承担权限控制。Markdown 里写“禁止删除生产数据”只是一条模型指令。真正的禁止需要 Policy、凭据范围和执行环境拒绝相关调用。Skill 可以要求 Agent 先检查权限或请求确认,却不能把文字约束冒充系统边界。
二、运行时怎样发现并加载 Skill
一座技能库通常包含很多能力,而当前任务只需要其中少数。把所有 SKILL.md 全量塞给模型,会让无关规则争夺注意力。公开规范采用渐进披露,把加载过程拆成元数据、完整指令和资源三层。
OpenAI 文档说明,ChatGPT 和 Codex 启动时先看到 Skill 的名称与描述;决定使用后才读取完整 SKILL.md。Codex 的初始 Skill 列表还包含文件路径,并把列表限制在上下文窗口的 2%,无法得知窗口大小时上限为 8,000 个字符。技能过多时,系统会先缩短描述,也可能省略部分 Skill 并给出警告。
这带来一个直接结论:description 是路由索引,正文才是执行程序。把触发条件只写在正文里,运行时在决定是否读取正文时看不到它;把完整步骤写进描述,Agent 又可能只凭摘要开始工作。
显式调用与隐式匹配
OpenAI 文档列出两种入口。用户可以显式点名 Skill,例如在 Codex 中用 $skill-name;运行时也可以根据请求与 description 的匹配结果隐式选择。
显式调用适合用户知道准确能力、希望复现固定流程或正在调试 Skill。隐式匹配降低了使用门槛,但会出现两类路由错误:应该触发却没有触发,以及无关任务误触发。
一条可用的描述至少回答三个问题:Skill 做什么,哪些任务或输入应该触发,哪些相邻任务不属于它。描述要把最重要的触发词放在前面,因为长技能列表可能截断后部内容。
---
name: king-of-water-tech-writing
description: >
Research, write, expand, or review long-form Chinese technical articles for
the king-of-water Astro blog. Use for substantial posts in Agent, AI Coding,
RAG, backend engineering, or project analysis; not for short status updates
or minor typo fixes.
---
这段描述同时给出动作、内容领域和排除项。用户说“写一篇 Agent Skills 长文”时应命中;只让 Agent 改一个错别字时不该加载整套研究、配图与页面验收流程。
路由质量需要单独评测
执行成功率无法替代路由评测。一个优秀 Skill 如果从未被发现,对用户仍然没有价值;一个频繁误触发的 Skill 则会增加 Token 成本,还可能把不相关的硬门控带入任务。
可以准备三组请求测试描述:明确正例、容易混淆的边界例、明确反例。技术写作 Skill 的正例是“写一篇 Transformer 原理长文”,边界例是“评审这篇已有文章的论证”,反例是“告诉我构建是否通过”。每次修改 name 或 description 后重放这组样本,记录召回率、误触发率和用户显式纠正次数。
三、一个 Skill 包里应该放什么
Agent Skills 规范要求目录至少包含 SKILL.md,其中 frontmatter 必须有 name 与 description。scripts/、references/ 和 assets/ 是约定的可选目录。OpenAI 还支持 agents/openai.yaml,用于界面展示、隐式调用策略和工具依赖等产品元数据。
agent-skill/
├── SKILL.md # 发现元数据与核心工作流
├── scripts/ # 可执行、可重复验证的确定性操作
├── references/ # 任务需要时再读取的规范与领域资料
├── assets/ # 模板、图片、样例工程等输出材料
└── agents/
└── openai.yaml # 可选的界面、策略与依赖信息
目录设计的判断标准不是文件类型,而是内容在运行时怎样被使用。核心步骤每次执行都需要,放在 SKILL.md;只对部分分支有用的长资料,放进 references/;需要确定性或会被反复生成的逻辑,放进 scripts/;产物要复制或修改的模板,放进 assets/。
SKILL.md 只保留共同主干
正文加载后会整体进入 Context。Agent Skills 规范建议完整指令少于 5,000 Token,并建议主文件控制在 500 行以内。数字不是质量线,但能提醒作者:一份覆盖十种互不相关任务的 Skill 很可能应该拆分。
主文件适合保存任务边界、输入输出、共同步骤、分支入口、禁止事项、验证条件和需要读取的资源索引。每个章节都应推动 Agent 做决定或行动。产品背景、团队历史和读完也不会改变执行的解释可以删掉。
文件引用应从 Skill 根目录使用相对路径,并尽量保持一层可达。SKILL.md 指向 references/article-standard.md 很清楚;再让后者指向另一座目录的第三个文件,会让加载路径难以观察,也提高缺失引用的概率。
脚本承接确定性
脚本适合两类任务。一类是机械操作,例如初始化目录、解析固定格式、旋转 PDF 和检查 frontmatter;另一类是结果需要稳定复现的验证,例如文章字数审计、链接检查和 Schema 校验。
脚本不会天然变得安全。它仍需要清楚的输入、依赖、退出码和错误信息,并受工作区、网络与权限策略约束。一个 Skill 附带 deploy.sh,不等于 Agent 获得部署权限。工具系统会按真实动作重新判断。
当任务需要开放判断时,硬塞脚本反而会损失能力。文章论证、故障归因和架构选择通常需要模型根据当前证据判断,Skill 可以给出检查框架和反例,不必把所有分支写成条件语句。
Reference 与 Asset 不要互相代替
Reference 是给 Agent 阅读的资料,例如文章标准、数据库 Schema、业务口径和 API 说明。Asset 是制作结果时使用的材料,例如文档模板、字体、图标和示例项目。Agent 可能只需要知道一个模板的路径,并不需要把整个二进制文件放进 Context。
同一条事实只保留一个权威位置。SKILL.md 与 Reference 各复制一份规范,几次修改后就会产生冲突。主文件写“什么时候读”,Reference 保存完整内容,能让维护责任更清楚。
四、把说明写成可执行的行为路径
人类文档经常解释原则,然后依赖读者自行补全操作。Agent 更需要明确的进入条件、动作顺序、分支和完成证据。Skill 的写法接近 Runbook 与程序之间的中间层:仍用自然语言表达,但每一步都能观察。
从真实请求反推工作流
先收集具体请求,再抽象 Skill。创建 PDF Skill 时,至少要看到“合并两份 PDF”“旋转第 8 页”“填写表单并保留可编辑字段”这类输入。它们会暴露不同工具、风险和验收方式。只从“处理 PDF”四个字出发,最后往往得到一份宽泛说明。
对每个样本从零执行一次,记录 Agent 需要的输入、正确工具、容易出错的步骤、产生的副作用、最终产物和验收证据。重复出现的判断进入主流程,确定性动作沉淀为脚本,偶尔需要的领域资料进入 Reference。
这一过程还会暴露拆分边界。若两组任务只有名称相似,却没有共同的输入、工具和验收方法,就不该留在一个 Skill 中。当前清单把 Skills 与 Memory 拆成两篇文章,也是同样的判断:能力加载和跨会话状态有不同的生命周期与故障模型。
自由度取决于任务的脆弱程度
写技术文章允许多种合理结构,Skill 应规定证据标准、必须覆盖的问题和验收步骤,保留表达空间。读取公司指标需要更严格的字段口径与查询模板。文件格式转换若已有稳定脚本,最合适的路径通常是调用脚本,而非让模型每次生成一段新代码。
可以把约束放在四个位置:原则给模型判断空间;模板固定输入输出形状;脚本固定算法;程序策略直接允许或拒绝动作。风险越高、判断越容易被程序确定,约束越应该向后两者移动。
硬门控要能被检查
“建议先运行测试”很容易在 Context 变长后退化为可选项。若测试是交付条件,Skill 应写成可检查的门控:没有测试结果,不得声称完成;测试无法运行时,必须报告具体阻塞和未验证范围。
<HARD-GATE>
提交前必须完成文章审计、站点构建和页面视觉检查。
任一检查失败时,不得提交;先修复失败,或明确请求用户决定是否接受未验证状态。
</HARD-GATE>
这仍是模型层约束,不能替代 CI 的分支保护。最稳妥的组合是 Skill 规定工作流,脚本产生机器可读结果,CI 或 Harness 阻止缺少证据的提交。
五、Skill 怎样与工具、MCP、Hook 和 Subagent 协作
上一章的工具系统文章把 Function Calling、CLI、浏览器、代码执行和 MCP 放进统一执行路径。Skill 位于这些工具之上,负责为某类任务选择路径。
技术写作 Skill 可以要求使用搜索查找官方资料,使用文件工具创建 Markdown,使用视觉工具制作架构图,使用 CLI 运行审计和构建,最后使用浏览器做页面验收。它没有重新实现任何工具,只规定组合方式和证据标准。
MCP Server 可以向 Agent 暴露 GitHub、Docs 或数据库能力,Skill 则描述什么任务需要这些能力,以及调用前后要检查什么。Server 返回的 Tool Annotation 依旧不能成为可信权限结论;Skill 引用某个 MCP 工具,也不能绕过 Host 的授权和审批。
Hook 适合处理不依赖模型判断的横切规则,例如每次文件修改后记录审计、提交前强制格式检查。把所有规则都写进 Skill,会让同一安全要求在多份文件中复制;把所有流程都写进 Hook,又会失去任务语义。通常由 Skill 说明任务路径,Hook 与 Policy 固化跨任务底线。
Subagent 适合隔离长调查和独立验证。Skill 可以定义何时拆分任务、子代理获得哪些材料、结果以什么格式回传。主 Agent 仍要核对证据并整合结果,不能因为“由子代理完成”就跳过验收。
六、用我们正在使用的写作 Skill 走一遍
这篇文章本身提供了一条真实轨迹。用户先提出写 Skill,并补充“可以借助我们经常使用的 Skill 工具来讲”。当前仓库的说明要求:只要新写或大改技术文章,就必须使用 king-of-water-tech-writing。
第一步:发现
运行时最初只需要知道写作 Skill 的名称、描述和路径。用户请求包含“Skill”“文章”和当前博客上下文,匹配到它的适用范围。若请求只是“Skill 是什么,用两句话回答”,则不需要启动长文流程。
同时,任务涉及 Codex 自身的 Skills 行为,因此匹配到 openai-docs。它要求先查找并读取官方文档,避免用过时记忆描述产品。文章还需要图示和最终语言清理,后续分别加载 documd-visuals 与 humanizer。
第二步:读取主指令和必要 Reference
技术写作 Skill 的正文规定先提出研究问题、优先使用一手资料、选择合适文章级别,并要求完成审计、构建和页面检查。只有在规划长文时,才继续读取 references/article-standard.md;没有必要加载它目录下所有资料。
视觉 Skill 也采用相同做法。主文件先按“系统架构、流程、对比”等目标路由,再读取对应 Goal 和一套 Editorial 配色。文章不需要图表分析,所以没有加载折线图、财务报告或地图相关说明。
第三步:执行工具并保留边界
官方资料通过文档页面读取,用户提供的微信正文作为第二来源。文件修改交给补丁工具,SVG 放进站点既有图片目录,审计和构建交给 CLI。每一种工具仍遵守自己的权限与输入规则。
这里能看到 Skill 与 Context Engineering 的关系。Skill 决定哪些资料值得进入当前任务,Context Engineering 还要负责实际内容的取舍、压缩和排序。载入一份 Skill 不代表其中所有资源永久驻留;完成某个分支后,中间输出仍可能被摘要或移出窗口。
第四步:验证
正文完成不等于任务完成。写作 Skill 要求运行文章审计、校验 SVG、执行 Astro 构建、检查 diff,并打开页面查看标题、目录、代码块和图片。最后的提交记录提供可追踪版本。
这条轨迹可以复现,也可以审计:为什么加载某个 Skill,读了哪些 Reference,调用过哪些工具,哪些证据支持“已完成”。如果文章失败,排查也能分层进行:路由没命中、指令含糊、资源缺失、工具失败或验收不足,各自有不同修复位置。
七、验证 Skill 是否真的改变了行为
格式校验只能证明文件可被读取。Agent Skills 规范提供 skills-ref validate ./my-skill 检查 frontmatter 与命名约束;产品或项目还可以使用自己的验证脚本。真正困难的是验证 Agent 在任务压力下是否按 Skill 行动。
测试分成四层
| 层次 | 要回答的问题 | 证据 |
|---|---|---|
| 结构 | Skill 能否被加载,引用与脚本是否存在 | validator、文件检查、脚本退出码 |
| 路由 | 正确任务是否触发,边界任务是否误触发 | 正反例 Prompt 集、触发日志 |
| 行为 | Agent 是否执行关键步骤并遵守门控 | 工具轨迹、检查表、产物 diff |
| 结果 | 最终任务是否成功,成本是否可接受 | 测试、构建、人工评分、Token 与耗时 |
这四层不能互相替代。Skill 能被加载,不代表描述足以路由;路由正确,不代表正文能阻止 Agent 跳步;轨迹合规,也可能产出一篇事实错误的文章。
前向测试不要泄露答案
给测试 Agent 一份真实用户请求、原始输入和可用工具,让它从任务开始执行。不要先告诉它“这个 Skill 会漏掉构建,请检查第六步”,否则测试测到的是提示后的服从性。
一组有区分度的用例应包含正常任务、边界任务和压力任务。压力可以是官方页面打不开、脚本返回非零、Context 已经很长、用户要求立刻提交,或者任务中途补充新约束。观察 Agent 是否报告证据不足,还是为跳过规则找出一段听起来合理的解释。
失败要写成回归用例
某次 Agent 在图片没有渲染时仍提交文章,修复不应止于给 Skill 增加一句“注意检查图片”。保留失败输入和轨迹,把验收规则改成可观察条件,再重放同一用例。若能用脚本识别空 SVG 或坏链接,就把判断移到脚本或 CI。
长期指标可以包括 Skill 触发准确率、关键步骤完成率、首次验收通过率、用户接管次数、每个成功任务的 Token、Reference 实际读取率,以及版本升级后的旧任务回归率。指标用于定位改动方向,不该被压成一个脱离任务难度的总分。
八、组合 Skill 时避免上下文失控
真实任务经常同时命中多个 Skill。本文用到了技术写作、OpenAI 官方资料、视觉表达和语言清理。简单地把四份全文一次性加载,会破坏渐进披露。
组合关系可以分为三种:必需依赖、条件依赖和推荐协作。必需依赖会阻塞当前流程,例如写 OpenAI 产品事实必须先读取官方资料;条件依赖只在文章需要架构图时加载;推荐协作用于提高质量,即使缺失也能降级完成。
Skill 之间应引用稳定名称或由运行时解析能力,避免把另一个 Skill 的绝对安装路径写死。不同客户端的目录、工具名和调用方式会变化,行为契约比平台私有名称更适合作为组合接口。
还要防止循环依赖。A 要求先用 B,B 又要求先用 A,Agent 会重复加载或无法确定入口。运行时可以记录当前调用栈和已激活集合,检测循环;设计层则应抽出两者共同依赖的基础 Skill,或者把一方降为可选 Reference。
缺少依赖时怎样降级
降级策略应写在会遇到缺口的节点上。没有视觉工具时,文章可以保留文字与表格,并明确缺少图示;缺少 PDF 渲染器时,不应声称版式已验收;官方资料无法访问时,可以停止涉及当前产品行为的断言,或请求用户提供正文。
“继续完成”与“假装验证过”是两件事。Skill 应说明哪些能力缺失仍可交付,哪些会让任务失去完成条件。
九、版本、作用域与分发
Skill 会像代码一样演化。触发描述、步骤顺序、脚本参数和验收条件都会改变既有行为,因此需要版本、变更记录和回归集。一次看似轻微的描述扩展,可能让它开始抢占相邻任务。
OpenAI 文档列出了 Codex 的多个本地作用域:仓库目录及其父级的 .agents/skills、用户级目录、管理员位置和系统内置 Skill。仓库 Skill 适合与代码共同版本化的工作流,用户 Skill 适合个人偏好与跨项目方法,管理员 Skill 适合组织统一能力,系统 Skill 提供通用基础功能。
作用域不是简单的覆盖链。OpenAI 文档指出,同名 Skill 不会合并,两份都可能出现在选择器里。团队应使用清楚的名称和所有权,避免用户不知道哪一份正在生效。
本地目录适合开发与项目协作。需要跨团队安装、组合多个 Skill 或同时分发连接器时,OpenAI 建议使用 Plugin。agents/openai.yaml 还可以声明界面名称、图标、默认提示、是否允许隐式调用,以及 MCP 等工具依赖。这里的依赖声明用于发现和安装体验,真实权限仍由 Host 决定。
发布前至少记录以下内容:所有者、适用客户端、运行依赖、外部网络需求、可能产生的副作用、验证命令、已覆盖用例和最近一次回归时间。脚本与模板也要检查许可证和敏感数据,不能因为藏在 Skill 包里就绕过供应链审查。
十、哪些情况不值得创建 Skill
一次性任务通常不需要 Skill。请求不会重复、步骤很短、没有专用资源时,直接 Prompt 成本更低。把每个偏好都建成独立目录,会让路由列表膨胀,也增加命名冲突。
稳定、确定、无需模型判断的流程更适合普通程序或 Workflow。每天固定导出一张报表,如果输入输出和步骤都已确定,用定时任务调用脚本更可靠;Skill 只在需要 Agent 理解临时要求、选择分支或解释异常时有价值。
安全策略也不应只存在于 Skill。数据删除、付款、生产部署和权限变更需要程序化授权与审批。Skill 可以组织确认界面前的准备工作,却不能成为唯一防线。
最后,纯知识集合不一定需要 Skill。大量产品文档更适合知识库与检索系统;只有当这些资料伴随清楚的任务入口、操作方法和验收条件时,才值得包装成能力包。
十一、从零设计一个 Skill 的实用流程
第一步收集五到十个真实请求,其中要有不应该触发的相邻任务。为每个请求写清初始输入、期望产物、可用工具、风险和完成证据。
第二步抽出共同主干,判断哪些环节需要模型判断,哪些可以交给模板、脚本或 Policy。此时先画流程,不急着写长说明。
第三步编写最小 frontmatter 和核心正文。描述负责发现,正文保留输入输出、步骤、门控、资源入口和验收。详细资料按需移到 Reference。
第四步补齐可复用资源。重复生成的确定性代码进入 scripts/,任务中查询的规则进入 references/,产物材料进入 assets/。删除重复内容和无用示例。
第五步运行结构验证和脚本测试,再用原始用户请求做前向测试。保存触发结果、工具轨迹、产物和失败证据。
第六步上线到最小作用域。先放在单个仓库或少量用户中,观察误触发、跳步和 Context 成本;问题稳定后再扩大分发。每个真实失败都进入回归集。
十二、交付检查表
| 检查面 | 需要回答的问题 |
|---|---|
| 目标 | 这份 Skill 是否只负责一类有共同工作流的任务? |
| 发现 | name 和 description 能否覆盖正例、边界例与反例? |
| Context | 哪些内容常驻元数据,哪些激活后读取,哪些继续按需加载? |
| 流程 | 每一步是否有明确输入、动作、分支和输出? |
| 自由度 | 原则、模板、脚本与程序策略是否放在合适层级? |
| 工具 | Skill 是否只编排能力,没有冒充执行与权限边界? |
| 资源 | Script、Reference 与 Asset 是否各司其职且没有重复事实? |
| 门控 | 关键条件未满足时,Agent 是否知道必须停止或请求判断? |
| 失败 | 依赖缺失、工具错误、取消和部分完成怎样报告? |
| 测试 | 是否有路由集、前向任务、压力场景和历史回归? |
| 治理 | 谁维护、怎样版本化、在哪个作用域分发? |
| 验收 | 能否用外部证据证明行为和结果都达标? |
结语
Skill 把一类任务的触发、执行方法、资源入口和验收标准放进同一个可加载单元。它让通用 Agent 在遇到特定任务时获得程序性知识,同时保留模型处理开放问题的空间。
这套机制能否长期工作,取决于几个朴素条件:描述能正确路由,正文只保留共同主干,详细资源按需读取,确定性步骤交给脚本,风险动作继续接受 Harness 控制,所有规则用真实任务验证。满足这些条件后,Skill 才从一份 Markdown 说明变成可维护的行为系统。
参考资料
如果这篇文章对你有帮助