Technical Guide

11. Skills 源码:Skill 是怎么安装、解析和约束工具的

从 installer、parser、validation、permissions、security_scanner、tool_policy 看 Skill 如何进入 DeerFlow。

这一篇看哪些文件

Skill 相关源码在:

backend/packages/harness/deerflow/skills/

建议按这个顺序看:

parser.py
validation.py
installer.py
storage/
permissions.py
security_scanner.py
tool_policy.py

parser.py:Skill 怎么被读懂

Skill 通常不是普通文本。

它需要被解析成系统能理解的结构:名称、描述、内容、权限、可能的工具约束。

所以先看 parser,比直接看 installer 更清楚。

validation.py:什么 Skill 合法

校验很关键。

如果 Skill 格式乱、字段缺、权限不清楚,Agent 后面用起来就会变得不可控。

validation.py 这类文件通常会告诉你官方希望 Skill 满足哪些规则。

installer.py 和 storage

安装和存储解决的是生命周期问题:

Skill 从哪里来
装到哪里
怎么被读取
怎么更新

相关目录:

skills/storage/

permissions / security_scanner / tool_policy

这几个文件体现了 Skill 的安全边界。

Skill 如果能影响工具调用,就不能只看内容好不好,还要看它是否扩大了权限,是否引入危险工具策略。

这一篇你要记住

Skill 源码的主线不是“读一段 Markdown”。

更准确的链路是:

解析 → 校验 → 安装/存储 → 权限/安全检查 → 影响 Agent 行为

下一篇用这个思路写一个约束研究报告质量的 Skill。

读源码时的顺序

不要从安装逻辑开始。

先看 Skill 的数据结构和解析方式,再看安装和权限。

一个比较顺的阅读顺序是:

types.py
parser.py
validation.py
installer.py
storage/
permissions.py
security_scanner.py
tool_policy.py

这样你会先知道“Skill 是什么”,再看“Skill 怎么进入系统”。

改源码时先改哪里

如果你只是想支持一种新的 Skill 格式,优先看 parser 和 validation。

如果你想改变 Skill 保存位置,看 storage。

如果你想限制 Skill 能调用哪些工具,看 permissions 和 tool_policy。

如果你要引入外部 Skill 来源,installer 和 security_scanner 必须一起看。

不要只改 installer,否则很容易绕过校验和安全检查。