Skill 系统

wesgine Skill 的二分体系、装载机制、渠道管理与生命周期。


Tier 二分

Tier来源权限业务术语
Tier E(引擎技能)引擎二进制 embed只读❌ 禁止
Tier C(Cell 技能).wesskill 包上传或应用自带可编辑✓ 允许

禁止 Tier H:想让 5 个 Cell 用同一 skill → 每个各装一份。


.wesskill 包结构

.wesskill (tar.gz)
├── SKILL.md          # 必需,name/version 的权威源
├── scripts/          # 脚本
├── templates/        # 模板
├── manifest.json     # 可选,依赖声明
└── signature.sig     # 可选,ed25519 签名

渠道三值闭域

渠道含义来源
engine只读,随二进制引擎 embed
product应用自带消费方 SeedProduct
user用户安装InstallPackage

渠道是派生量不是位置——两者物理同处 cells/{id}/skills/ 一个目录。


Skill API

cell.Skills().InstallPackage(ctx, pkg []byte)      // .wesskill
cell.Skills().SeedProduct(ctx, name, fsys)          // 应用自带技能
cell.Skills().Uninstall(ctx, name)
cell.Skills().Update(ctx, name, pkg []byte)
cell.Skills().Rollback(ctx, name, version)
cell.Skills().SetEnabled(ctx, name, enabled)
cell.Skills().List(ctx) []SkillInfo
cell.Skills().Info(ctx, name) *SkillInfo
cell.Skills().Export(ctx, name) (io.Reader, error)

HTTP 端点

方法路径说明
GET/skills列出技能
POST/skills安装(raw tar.gz)
POST/skills/reload从磁盘重新加载
GET/skills/stats全局调用统计
POST/skills/validate校验 manifest
GET/skills/{name}技能详情
PUT/skills/{name}更新
DELETE/skills/{name}卸载
PATCH/skills/{name}/enabled启用/禁用
GET/skills/{name}/export导出
GET/skills/{name}/versions版本列表
POST/skills/{name}/rollback回滚
GET/skills/{name}/stats单技能统计
GET/skills/{name}/snapshot健康快照
GET/skills/{name}/resources资源文件列表
GET/skills/{name}/resources/{path}资源文件内容

双层白名单

Cell DisabledEngineSkills × Agent Skills allowlist → AND 生效

不可变性

INV-SKILL-CH-03:不可变性判据只有一处 ChannelRegistry.Immutable。

读侧五个入口与写侧三个入口共用。

此前只有读侧守着——PUT /skills/plan 拒绝改它,而 POST /skills 传同名包可顶掉。


应用自带技能更新

INV-SKILL-CH-04:SeedProduct 比较三方:

embed(编译时) vs 磁盘(运行时) vs wes_skill_seed(账本)

此前判据在 wesapp 且用 Info.Source != "engine" 回答"用户改过没有"——而 workspace 只表示"已装上"。


配额

MaxSkillsInstalled 限制 Cell 内技能总数。

判据在唯一增长点(INV-QUOTA-05):


Tier E 约束


相关文档