运行时依赖
安装命令
点击复制技能文档
Auto 技能 Loader v2.0
即插即用 · 核心锁定 · 零配置
设计原则 零配置启动 - 安装即用,不需要修改任何参数 核心保护 - core 级 技能 绝不被自动加载器干扰 通用兼容 - 不假设任何 代理 名称、路径或环境 最小加载 - 只加载必要的 技能,节省 令牌 技能 保护等级
每个 技能 可在 技能.md frontmatter 中声明 level:
name: my-技能 level: core # core | 保护ed | dynamic(默认 dynamic)
级别 标识 自动加载器行为 适用场景 🔒 core core 完全跳过,不触碰 内存管理、行为审计、安全监控 🛡️ 保护ed 保护ed 不自动卸载,加载需显式确认 心跳机制、风控、proactive-代理 🔄 dynamic dynamic 自由加载/卸载 天气、股票分析、文案生成等
未声明 level 的 技能 默认为 dynamic。
内置 core 技能 白名单
即使 技能 未声明 level,以下类型的 技能 始终视为 core:
名称包含 memory 的 技能(如 memory-distiller) 名称包含 审计 或 security 的 技能 名称包含 proactive 的 技能
此白名单可通过配置文件覆盖。
执行流程 Step 1: 扫描可用 技能
按 OpenClaw 标准目录结构扫描,不硬编码任何路径:
# 优先级从高到低: L1: {workspace}/.代理s/技能s//技能.md # 代理 专属 L2: ~/.代理s/技能s//技能.md # 全局共享 L3: {OpenClaw_安装}/技能s//技能.md # OpenClaw 内置 L4: {OpenClaw_安装}/扩展s//技能s/*/技能.md # 扩展 技能
路径解析规则:
{workspace} = 当前工作目录(自动检测) ~ = 用户主目录(跨平台兼容) {OpenClaw_安装} = OpenClaw 安装目录(通过 npm root -g 或环境变量检测) Step 2: 解析 技能 元数据
读取每个 技能.md 的 frontmatter:
name - 技能 名称 description - 功能描述(用于意图匹配) level - 保护等级(默认 dynamic) version - 版本号(可选)
只解析 frontmatter,不读取全文(节省 令牌)。
Step 3: 过滤受保护 技能 可加载列表 = 所有 技能 - core 技能 - 保护ed 技能(除非显式请求)
Step 4: 意图匹配
根据用户消息,从可加载列表中匹配:
匹配策略(优先级从高到低):
优先级 策略 说明 P1 触发词匹配 消息包含 技能 description 中的触发词 P2 语义匹配 消息意图与 description 语义相近 P3 领域匹配 消息领域与 技能 领域一致
冲突解决:
同名 技能 → 高层级目录优先(L1 > L2 > L3 > L4) 多个匹配 → 选最具体的(description 最相关的) 无匹配 → 不加载任何 技能,正常回复 Step 5: 加载执行
找到匹配 技能 后:
读取完整 技能.md 按其指导执行任务 如需要,加载 scripts/ 或 references/ 下的资源 Step 6: 代理 路由(可选)
如果任务不属于当前 代理 的职责范围,尝试动态路由给其他 代理:
路由流程:
调用 代理s_列出 获取当前可用 代理 列表 读取各 代理 的 SOUL.md 或 身份.md 判断职责匹配度 找到最匹配的 代理,通过 会话s_发送 转发任务
路由失败处理:
以下情况视为"无法发现其他 代理":
代理s_列出 返回空列表(单 代理 部署) 代理s_列出 报错(服务异常) 返回的 代理 列表中只有当前 代理 自己 其他 代理 的 SOUL.md/身份.md 无法读取或职责不匹配
此时应直接回复用户,告知路由失败:
这个任务更适合 [目标 代理 类型,如:A股量化专家/P哥] 处理。
但当前环境无法自动路由:[具体原因]
- 原因 A:当前是单 代理 部署,未发现其他 代理
- 原因 B:其他 代理 未配置或不在线
- 原因 C:无法读取其他 代理 的职责描述
你可以:
- 直接 @[目标 代理 名] 联系他
- 让我在当前 代理 尝试处理(可能不够专业)
- 检查其他 代理 是否已启动并配置正确
为什么不静默 fallback?
避免用户误以为任务已转发,实际没有 诚实透明,不给虚假希望 让用户掌握控制权,决定下一步 配置文件(可选)
文件:auto-技能-loader.config.yaml 位置:技能 目录内 或 workspace 根目录
# auto-技能-loader.config.yaml # 所有字段可选,均有合理默认值
# 额外标记为 core 的 技能(名称列表) core技能s: [] # - my-custom-审计-技能 # - my-critical-技能
# 排除不参与自动加载的 技能(名称列表) skip技能s: [] # - deprecated-技能
# 是否启用 代理 路由(默认 true) enableRouting: true
# 匹配模式:strict(仅触发词)| normal(触发词+语义)| fuzzy(全部) matchMode: normal
# 日志级别:silent | 信息 | 调试 记录Level: 信息
不创建此文件 = 使用全部默认值 = 直接能用。
使用示例 场景 1:用户问天气 用户:北京今天天气怎么样? → 匹配 weather 技能(dynamic) → 自动加载 weather/技能.md → 按其指导获取天气
场景 2:触及 core 技能 用户:关闭记忆管理 → 检测到 memory-distiller 是 core 级 → 拒绝操作,提示:此 技能 为核心级,不可自动卸载
场景 3:无匹配 用户:帮我写一首诗 → 无 技能 匹配 → 正常回复(不加载任何 技能)
Dry 运行 模式
预览匹配结果,不实际加载:
在消息中包含 --dry-运行 或在配置中设置:
dry运行: true # 全局 dry 运行
输出格式:
🔍 Auto 技能 Loader - Dry 运行 任务: "北京今天天气怎么样" 匹配: weather (dynamic, L3, score: 0.95) 候选: [weather, summarize] 操作: 将加载 weather/技能.md
兼容性 环境 支持 Windows ✅ macOS ✅ Linux ✅ 单 代理 ✅ 多 代理 ✅ ClawHub 安装 ✅ 手动安装 ✅ 变更日志 v2.0 (2026-03-19) 🔒 新增 技能 三级保护机制(core/保护ed/dynamic) 🔌 移除所有硬编码(代理 名称、路由表、路径) ⚙️ 新增可选配置文件(零配置也能用) 🏷️ 新增 dry-运行 预览模式 🌍 通用化:兼容任何 OpenClaw 部署 v1.0 (2026-03-18) 初始版本,基本自动加载功能