CodexQA

Industry & PracticeResearch & Benchmarks

27 个场景跑四轮:阿里云用视图裁剪给 Skill 省 token

CodexQA 团队5 min read

SkillFS 把 38 个 Skill 收进当前视图。27 个场景各跑四轮:kimi-2.5 平均 token 从 174167 降到 136942,省 21.37%;qwen3.5-plus 只省 0.94%。扫描只落成 current、fallback、hidden,Linux 以外还不能挂。

In this piece

Skill 一多,Agent 每一轮都要把几十份说明读一遍,只为挑出两三个真正要用的。阿里云社区在 2026 年 10 月 10 日由 Peng Yuanhong 写的 SkillFS,把这件事收成文件系统上的治理,而不是再加一段提示词。SkillFS 是 ANOLISA 运行时里管 Skill 的一层。ANOLISA 从省 token、增强运行时、可观测和安全四个方向给 Agent 打底。SkillFS 是基于 FUSE 的虚拟文件系统,FUSE 就是在用户态实现文件系统。它把磁盘上的 Skill 目录变成 /skills/<skill> 这个入口,再按视图、安全策略和生命周期决定 Agent 实际看得到什么。

1. 入口要同时回答三件事

一个任务会用到好几个 Skill,组合每次不同。写代码不必挂搜索引擎,做数据分析不必挂 PDF。现在常见做法是全部挂上。Skill 更新、损坏或被改过,也很难说清 Agent 此刻跑的是哪一版。上下文有限,全塞进去既费 token,也让它选错工具。

缺的是治理层。稳定入口要回答:这个任务该看见哪些 Skill;这个 Skill 可不可信;出了问题有没有退路。普通目录挂载答不了这三问。

/skills/<skill> 不随版本、扫描状态或安装流程改变。按任务裁剪的视图只露出当前需要的 Skill。有风险的可以藏起来,或退回一份可信快照。ls、cp、mv、vim、chmod 在挂载点上仍能用。安全策略走扩展接口,不必改 SkillFS 本身。

2. 视图把几十个 Skill 收成当前任务那几个

默认运行视图 /skills/<skill> 是 Agent 每天用的稳定入口,只暴露当前视图配置里的 Skill,也是它唯一需要知道的路径。发现视图 /skills/skill-discover 放已激活但默认不加载的 Skill,需要时再去探。安装候选进 /.skillfs-inbox/<skill>,决定通过之前进不了运行视图。.staging、.certified、.quarantine、.archive 是留给后续状态机的保留命名空间,普通视图里看不见。

视图由 skillfs-views.toml 驱动。按类别组织,例如代码、搜索、媒体、写作,配置决定当前任务看见哪一组。Agent 的 readdir 只返回当前视图里的 Skill,其余安静地待在发现视图。无关 Skill 更少,token 更少,选错工具的机会也更低。几十个 Skill 里当前只要五个时,视图裁剪让它不用搜遍每份说明。

3. 27 个场景、38 个 Skill、每个场景四轮

基准是 27 个测试场景、38 个 Skill,分成内容、分析、运维、Agent、知识五类。覆盖三种模式:单类执行、多 Skill 协作、以及自主跨视图切换。每个场景跑四轮,再取平均。

不用 SkillFS 和用上之后的平均 token 成本:kimi-2.5 从 174,167 降到 136,942,省 21.37%;minimax-m2.5 从 185,282 降到 171,369,省 7.51%;qwen3.6-plus 从 203,396 降到 188,744,省 7.20%;qwen3.5-plus 从 190,713 降到 188,918,只省 0.94%。多数模型省下 7% 到 21%,kimi-2.5 超过两成。能省多少取决于模型自己怎么选工具:越会检索 Skill 的模型,从裁剪里得到的越多。qwen3.5-plus 几乎没省,说明不能把「挂上视图」当成对所有模型都成立的节省。

成本公式是:cost_tokens = (prompt_tokens - cached_tokens) × 1 + cached_tokens × 0.2。缓存 token 只按 0.2 计,所以省下来的主要是没被缓存的提示词。

4. 扫描结果只剩三种决定

视图解决「看得到什么」。更难的是:SKILL.md 被改过怎么办;扫描还没结束,Agent 就调用新装的 Skill 怎么办;曾经可信的 Skill 更新后变危险,能不能自动退回;安全动作能不能审计。没有一种扫描算法能单独回答这些,得做在文件系统里。

SkillFS 给安全留了扩展接口,扫描引擎、威胁模型或签名方案可以换。只要决定符合它规定的协议,就在文件系统层执行。上游策略再变,落到 SkillFS 只有三种结果。current:指向正在用的源,正常使用,扫描通过时这样。fallback:指向可信快照,仍可用,但是旧版本,用于扫描告警或版本漂移。hidden:从视图消失,查找返回 ENOENT,用于扫描拒绝或内容被篡改。

这三种决定通过 Active Mapping 落地。它是一张运行时映射表,决定每个路径实际指向哪里。SkillFS 用 Source Drift 观察源目录变化,用 External Decision Protocol 消费外部安全决定,这条链路是先扫描再解析。激活状态可以热加载,不用中断服务。安全侧随时改决定,SkillFS 马上生效。

还有一个并发问题:Agent 已经打开文件,后台刚换了版本,后面的读取该返回什么。做法是打开时把当前 Target 快照到文件句柄上,之后每次读取都来自这个固定 Target。一次打开,看到的内容自洽。

.skill-meta/ 放激活状态和扫描结果这类安全元数据。普通用户的写一律返回 EACCES。只有通过认证的 Trusted Writer 能写,并用 PID 加启动时间防止凭证被复用。新 Skill 先落在 /.skillfs-inbox/<skill>,扫描决定通过才进入运行视图。

安全动作不能是黑盒。JSONL 审计日志、Source Drift 事件、激活状态变更和 Reconcile 可观测,用来回答「这个 Skill 为什么不见了」。

5. 编辑器都跑不了,安全就没人走这条路

如果 vim 在 SkillFS 上跑不起来,安全做多少都会被绕开。编辑器报错、安装脚本失败、构建工具行为不对,用户会在安全生效之前就换路。所以兼容放在安全前面:主路径 open、read、write、create、mkdir、rename、unlink 要支持;chmod、chown、utimens、truncate 这类元数据操作也要;符号链接只允许同一 Skill 内的相对链接,硬链接只允许同一 Skill 内的普通文件;user.* 扩展属性透传;还要有 PATH_MAX 回退,以及删除之后仍能读已打开文件。回归用外部 POSIX 套件 pjdfstest 持续跑。pjdfstest 是一套用来检验文件系统是否符合 POSIX 行为的测试集。

现在开源的包括视图分类、POSIX 兼容、安全骨架,以及三种决定、激活和热加载。SkillFS 可以单独安装,不必先引入 ANOLISA 的其他部件。它是独立的 Rust 项目。cargo build --release 之后,用 skillfs mount <skills-dir> <mountpoint> 把视图挂起来,还有 validate、list、classify、stop 等子命令。运行时只依赖 fuse3,目前只支持 Linux。

阿里云,Peng Yuanhong,SkillFS: Governing Dozens of Agent Skills with a File System,2026-10-10,https://www.alibabacloud.com/blog/skillfs-governing-dozens-of-agent-skills-with-a-file-system_603623

Found it useful? Pass it on

WeChat

Scan with WeChat to open it on your phone and forward it.

Subscribe via RSS

Submit a correction