feat(skills): 支持项目级 Skills(project > global)并补充来源层级透传#480
Conversation
|
Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits. |
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
|
|
||
| merged := Snapshot{ | ||
| Skills: make([]Skill, 0), | ||
| Issues: make([]LoadIssue, 0), |
There was a problem hiding this comment.
回复说明
这里的 issue 不是 GitHub Issue,而是 skills.LoadIssue(加载期问题记录)。
在 internal/skills/multi_loader.go:38 的 Issues: make([]LoadIssue, 0) 指的是 Snapshot.Issues 聚合容器,用于收集技能加载过程中的非致命问题(例如 IssueRefreshFailed、解析告警等),供后续 registry/调用方可观测。
补充:PR 描述里未明确写出的改动
buildSkillsRegistry签名已变更为接收workdir,并拆出resolveWorkspaceSkillsRoot/resolveGlobalSkillsRoot两个解析函数(internal/app/bootstrap.go)。- 新增
SourceLayer的合法性校验并放入Descriptor.Validate(),同时显式兼容空值以兼容旧数据(internal/skills/types.go)。 LocalLoader新增统一构造路径:NewLocalLoaderWithSourceLayer+newLocalLoader+normalizeSourceLayer,并把 layer 写入解析结果Source.Layer(internal/skills/loader.go)。- 多源场景下“全部 source 都非 root-not-found 失败”时,
MultiSourceLoader.Load返回nil error + Issues(而非直接报错),该行为由新增测试覆盖(internal/skills/multi_loader_test.go)。 /skills展示不只是layer/kind,还包含回退策略:layer+kind、仅layer、仅kind的兜底拼装逻辑(internal/tui/core/app/skills_commands.go)。- 补了专项覆盖测试:
SourceLayer.Validate、Descriptor的非法 layer 分支、bootstrap 的“项目覆盖全局/工作区缺失回退全局”分支等(internal/skills/coverage_test.go、internal/app/bootstrap_test.go)。
本次处理结果
- 已完成:解释触发评论中的
issue指代,并补充 PR 未提及的关键修改点。 - 未执行:未做代码改动、未推送新提交(本次为评审问答)。
|
我看有提到兼容旧数据中缺少layer来源的情况,这一点是否需要修正,还是应该兼容即可 |
|
? |
|
layer不是回退,增强字段来的,issue那个注释问题不用管,你们也不看 |
ok |
背景
当前 Skills 仅依赖全局目录,项目内难以固化团队工作流;同时同名 skill 的覆盖关系缺少可观测信息。
变更内容
1) 多源加载与优先级
MultiSourceLoader,按顺序加载多个 source。project -> global组装 loader:<workdir>/.neocode/skills~/.neocode/skills(保留~/.codex/skillsfallback)project > global。2) 来源层级元数据
Source增加Layer(project|global|builtin,兼容空值)。skill.source.layer字段,并完成 bridge / remote adapter 双向透传。3) TUI 可观测性
/skills列表的source输出升级为layer/kind(如project/local、global/local),便于排查覆盖关系。4) 容错修复
IssueRefreshFailed,并继续加载其他 source(避免项目层异常拖垮全局层)。5) 文档同步
source.layer字段说明与示例。测试
已执行并通过:
go test ./internal/skills -count=1go test ./internal/app -run BuildSkillsRegistry -count=1go test ./internal/tui/core/app -run Skill -count=1go test ./internal/gateway ./internal/cli ./internal/tui/services -run Skill -count=1影响评估
/skill use、/skill off、会话激活/恢复语义。