实测:Skill文件超过6KB,模型输出失败率翻倍

28次实验发现编码Agent的skill文件超过6KB会显著推高空输出率,自然膨胀的9.2KB文件失败率达50%。
文章基于28次受控实验,揭示编码Agent的skill文件存在6KB的实用上限。实验固定任务与输出预算(16,000 tokens),仅改变文件大小,发现6KB以下零空输出,6KB以上空输出率约25%,而自然膨胀的9.2KB文件失败率高达50%。失效机制是文件抬高输出侧思考量,挤占回答预算,而非文件本身有bug。11.2KB尺寸点零失败,提示有组织的内容可能部分抵消体积,但尚未验证。体积主要杀死产出率而非正确性。作者建议将6KB作为预算上限,优先去重,并对弱模型收紧预算。
给编码 Agent 写 skill 文件(无论叫 SKILL.md、AGENTS.md 还是 rules)有一个很少有人讨论的上限:6KB。这是一个团队跑了 28 次实验后得出的结论,本文拆解它的数据、机制和边界。

事故的起点:一个“不算 bug”的文件
实验的灵感来自一次意外。在一项不相关的测试中,一个由模型一次性生成的 9,211 字节 skill 文件,让较弱的模型在测试驱动里连续六次返回空响应。团队把输出预算提高到 16,000 tokens 再跑,两次里仍有一次为空。
文件本身没有 bug,它只是太长了。模型把输出预算全部花在“思考这份指令”上,真正用于回答的额度被挤没了。六连空不是小概率事件,而是一份自然膨胀文件在 50% 失败率下的正常表现。
为了让结论可复现,团队做了这次定量实验:固定任务、固定系统提示、固定 max_tokens = 16,000、不对空输出重试,唯一变量是 skill 文件大小。
实验设计:只改变一个变量
任务是从发票批次中提取信息,skill 文件里埋了三条私有约定:价格以美分为单位需换算成美元、6% 的通道费、一条免税行项目单独列出。评分用确定性正则匹配这三条约定,不引入裁判模型。
做法是从一个 2,761 字节的精简版出发,用 54 个真实冗余块(重复章节、重述规则、模型自己常写的仪式化样板话)把它逐步填充到不同目标大小,共 7 个尺寸点,每点重复 4 次,合计 28 次执行。实验前先写下证伪条件:如果空输出率和 token 消耗不随文件增大而上升,那么 9.2KB 事故只是一次巧合。
单位说明值得单独讲。用字节计量是因为编辑器里看到的就是字节数;英文大约每 token 4 个字符,所以 6KB 约等于 1,500 tokens 的指令文本。文件作为输入进入提示,但它会抬高输出侧的思考量,而这部分思考量正是撞上 16,000 上限的东西。输入侧也不免费:Agent 循环每一轮都要重读整个对话,常驻的每一 KB 都在每次请求中重复计费。作者团队审计过一条生产流水线,工作量没变,日 token 消耗却从 1.1 亿涨到 5 亿以上,其中仅 skill 目录就在每条系统提示中悄悄占到了 161KB。
输出 token 上限(max_tokens)与思考链的关系:在支持推理的模型(如 DeepSeek广告、Claude 的 extended thinking)中,模型返回的 token 流分为两部分——可见的回答和不可见的思考过程(chain-of-thought)。max_tokens 限制的是这两者的总和。当 skill 文件很长时,模型在生成回答前需要"消化"指令,思考部分的 token 消耗会显著上升;一旦思考链占满预算,模型就没有余量输出最终答案,API 返回空内容或截断。这解释了实验中"空输出"的本质:不是模型拒绝回答,而是预算在推理阶段就被耗尽。因此,文件大小通过影响思考量间接作用于输出成功率,而非直接决定正确性。
Agent 循环中的重复计费:与单轮问答不同,编码 Agent 通常以多轮循环方式工作——每一轮都要把完整对话历史(包括系统提示中的 skill 文件)重新发送给模型。这意味着 skill 文件的每一 KB 会在每次请求中被重复计费,且随着循环轮次增加,成本呈线性放大。实验中提到的"日 token 消耗从 1.1 亿涨到 5 亿"正是这一机制的结果:文件本身不大,但乘以每轮请求的次数后,常驻开销变得惊人。因此,精简 skill 文件不仅降低单次失败风险,也直接削减生产环境的持续成本。
数据说了什么
七个尺寸点的结果分成明显的两段。
- 2.8KB:空输出率 0%,平均输出 9,096 tokens,约定命中 4/4。
- 4.1KB:空输出率 0%,平均输出 7,913 tokens,约定命中 4/4。
- 6.1KB:空输出率 25%,平均输出 13,598 tokens,约定命中 3/4。
- 8.0KB:空输出率 25%,平均输出 11,769 tokens,约定命中 2/4。
- 9.5KB:空输出率 25%,平均输出 15,469 tokens,约定命中 3/4。
- 11.2KB:空输出率 0%,平均输出 9,927 tokens,约定命中 4/4。
- 自然膨胀的 9.2KB:空输出率 50%,平均输出 14,766 tokens,约定命中 2/4。
6KB 以下,消耗稳定在 8–9K tokens,离 16,000 的上限很远,八次执行没有一次空输出。6KB 以上,消耗被推到 12K–15.5K 的区间,四分之一的执行死在那里。9.5KB 那一点平均 15,469 tokens,几乎贴着上限,四次里两次只是因为思考链恰好更短才活下来。
这带来一个反直觉的细节:会不会崩溃,取决于推理长度的方差,而不是你能控制的东西。
五条比“越大越糟”更精确的规则
规则一:6KB 以下是安全区。 2.8KB 和 4.1KB 共八次执行,零空输出,消耗远离上限。
规则二:6KB 以上进入风险区。 失效不是文件大小的单调函数,而是“消耗贴近输出上限的程度”的函数。贴近上限时,存活靠运气。
规则三:11.2KB 那一点打破了单调性。 它零空输出,消耗回落到 9,927,而且包含全部 54 个冗余块,其中包括自然文件自带的结构化章节。团队的工作假设是:有组织的内容能部分抵消纯粹的体积。这一点尚未验证,保留它是为了避免删掉反例、把结论说得比数据更漂亮。
规则四:自然膨胀是最毒的一种。 同样的尺寸级别,自然膨胀的 9.2KB 文件失败率 50%,人工填充的 9.5KB 只有 25%。重复和啰嗦比字节数伤害更大。这也反过来解释了最初的事故。
规则五:体积杀死的是产出,不是正确性。 只要模型真的产出了结果,各尺寸点的约定命中率都接近满分。长文件首先回答的问题不是“模型会不会遵循它”,而是“模型会不会开口”。
悬崖效应与方差依赖:实验中 6KB 以上空输出率并非随文件大小线性上升,而是呈现"悬崖式"跳变——消耗一旦接近 max_tokens 上限,模型是否崩溃取决于思考链长度的随机波动。具体来说,同一文件在不同执行中,模型生成的推理步骤数可能略有差异;当某次推理恰好较短时,剩余预算足以输出答案,执行成功;反之则空输出。这解释了为何 9.5KB 尺寸点四次中有两次存活:不是文件"有时安全",而是推理长度的方差决定了哪次撞线。因此,6KB 阈值本质上是"为思考链留出足够余量"的经验边界,而非文件大小的物理极限。
落地到自己的 skill 文件
团队目前对自己维护的 skill 文件、AGENTS.md 和长系统提示执行三条规则:
把 6KB 当作预算上限。 不是风格建议,而是可执行区间。他们的生成流水线把 6–9KB 视为风险区(观测到 25% 失败),9KB 以上视为高风险,审计步骤会拦下越线的文件。
先删重复,再删内容。 自然膨胀文件的问题不是说得太多,而是把每件事说了两遍。去重带来的安全收益,比删减规则更大。
模型越弱,预算越紧。 实验用 DeepSeek V4.1-Flash 作为执行模型,而弱模型恰恰是悬崖效应最明显的地方:强模型燃烧预算更从容,同一个文件可能伤一个模型而不伤另一个。
诊断工具则简单得过分:wc -c 就够了。
边界与尚未验证的部分
这项测量有明确的适用范围:单一任务(发票提取)、单一模型家族、每个尺寸点 4 次重复,所以“25%”的 95% 置信区间很宽,算法填充也不完全等同于手写膨胀。11.2KB 的反例还需要一个直接测试:固定字节数,只改变结构,比较有组织的填充与啰嗦的填充。
整轮梯度实验的 API 费用是 2.55 元人民币,约 0.36 美元。作者的建议是:先复现,再下结论。把它当作一个有明确机制的测量起点,而不是放之四海皆准的常数。但“模型什么也没返回,是因为它把全部预算花在读你的指令上”这个失效模式,值得今天就用你手里现有的文件检查一遍。
背后的工具 Skill Forge 已开源,以 MCP 服务器、提示包和可安装 skill 三种形态发布。
相关推荐

OpenAI与Shield合作:Astra智能体如何革新IT故障修复
OpenAI与Shield合作推出Astra智能体,可自动登录电脑和遗留系统,实时修复IT故障,比传统模型快35%到40%,仅在需要人类判断时引入人工。

iPhone Duo续航实测:一天一充跑不掉,大屏是耗电元凶
iPhone Duo续航实测:重度使用一天需至少充电一次,6.5小时亮屏约剩30%电量。大屏展开频率是耗电关键,MagSafe电池背夹可救场,长期衰减同样值得关注。

Kimi K3.1 Pro开源发布:2.8万亿参数逼近Opus
Moonshot发布开源MoE模型Kimi K3.1 Pro,2.8万亿总参数、1040亿激活参数,Terminal Bench 4.0仅落后Opus 5.5不到1分,单任务成本约三分之一,API价格减半,开源权重11月4日开放。