S1/S3 大扫除点名的代码侧残留: - cmd/cyrene/skills.go 注释仍称 Runner.Run 返回 ErrRunPending(哨兵已删,f75e7a9 起真执行) - internal/services/gateway/admin_plugins_skill.go 注释仍称执行后置到 M12 零行为改动(仅注释)。
36 lines
1.2 KiB
Go
36 lines
1.2 KiB
Go
package main
|
||
|
||
import (
|
||
"git.yeij.top/AskaEth/Cyrene_v2/internal/capability/skills"
|
||
"git.yeij.top/AskaEth/Cyrene_v2/internal/logger"
|
||
)
|
||
|
||
// defaultSkillsDir 是技能 YAML 定义的磁盘目录。它是可选的:目录缺失时只告警并
|
||
// 跳过技能加载。
|
||
const defaultSkillsDir = "configs/skills"
|
||
|
||
// wireSkills 从 configs/skills 加载技能定义,并把每个技能以 KindSkill 能力注册进
|
||
// 能力注册表,供插件生态枚举。加载+注册是 M5 的交付物;Runner.Run(端到端执行
|
||
// 技能)**已实现**(切片 CODE-SK/L2:`Runner.Run` 真执行 + 渐进披露接线;哨兵 `ErrRunPending` 已删除)。
|
||
func (a *app) wireSkills() {
|
||
log := logger.WithSource(a.log, "cmd/cyrene")
|
||
list, err := skills.NewLoader(a.log).LoadDir(defaultSkillsDir)
|
||
if err != nil {
|
||
log.Warn("skills load skipped", "dir", defaultSkillsDir, "error", err)
|
||
return
|
||
}
|
||
if len(list) == 0 {
|
||
log.Debug("no skills defined", "dir", defaultSkillsDir)
|
||
return
|
||
}
|
||
registered := 0
|
||
for _, s := range list {
|
||
if err := skills.Register(a.caps, s); err != nil {
|
||
log.Warn("skill register skipped", "skill", s.Name(), "error", err)
|
||
continue
|
||
}
|
||
registered++
|
||
}
|
||
log.Info("skills registered", "registered", registered, "loaded", len(list))
|
||
}
|