尧图精选

plate 仓库技能冲突治理:skiller 插件冲突跳过策略(plugin_conflict_strategy)实战解析

🕒 发布时间:2026/9/15 11:07:18 📁 来源:尧图网络
plate 仓库技能冲突治理skiller 插件冲突跳过策略plugin_conflict_strategy实战解析【免费下载链接】plateRich-text editor with AI and shadcn/ui项目地址: https://gitcode.com/GitHub_Trending/pl/plate本文围绕 plate 仓库中的 skiller 插件技能同步冲突问题展开讲解如何通过skills.plugin_conflict_strategy skip让插件管理的技能在本地/手动技能占用同名时被跳过而不是反复生成compound-engineering-*命名空间重复目录。读完本文你将掌握 skiller 冲突策略的完整语义、配置方法、实现链路与验证步骤并能在自己的 Agent 工作流仓库中落地同样的治理方案。问题背景plate 仓库的双轨技能来源plate 仓库的 Agent 技能体系同时存在两条来源轨道本地/手动技能存放在.agents/skills目录由仓库维护者直接编写并纳入版本控制占用的是ce-plan、document-review这类不含命名空间的规范名称。插件管理技能由全局启用的compound-engineering插件来源为EveryInc/compound-engineering-plugin通过 skiller 同步到.agents/skills名称来自插件内部的 agent 定义。插件安装清单记录在 skiller-lock.json 中。该文件共登记了 20 个来自EveryInc/compound-engineering-plugin的技能例如learnings-researcher、repo-research-analyst、architecture-strategist、correctness-reviewer、spec-flow-analyzer等每项都带有computedHash与插件内的sourceRelPath。另一份 skills-lock.json 则记录了来自udecode/dotai、shadcn/ui、tanstack-skills/tanstack-skills等多个来源的通用技能。问题就出在两条轨道撞名时插件里也包含ce-plan、document-review等与本地技能同名的条目于是skiller apply会不断把插件副本以命名空间目录如compound-engineering-ce-plan、compound-engineering-ce-review的形式再装一份造成.agents/skills下出现成对的重复技能。根因分析skiller 只有一种冲突策略计划文档 2026-03-28-skiller-plugin-conflict-skip.md 与问题解决文档 2026-03-28-skiller-plugin-conflicts-should-skip-local-skills.md 将根因定位为既有 skiller 行为把冲突解决方式硬编码为 namespace-on-conflict冲突即命名空间化。也就是说当插件技能与已存在技能重名时skiller 唯一会做的事是保留本地目录把插件条目安装到一个带命名空间前缀的新目录下。这种策略对插件 vs 插件的碰撞是合理的避免一个插件静默覆盖另一个但对本地/手动技能故意屏蔽插件内容的场景却是错误行为——本地技能明明已经占用了规范名称插件副本毫无必要地被再同步一份。计划阶段还记录了三条关键调研发现仓库既有 learnings 只覆盖了skiller.toml中的规范 agent id没有覆盖重复插件技能这一情况learnings-researcher技能引用的 critical-patterns 文件在本仓库中并不存在skiller 仓库的cloneLoadedConfig位于../skiller/src/core/apply-engine.ts在克隆配置时会丢弃skills配置因此新增的skills选项必须在这个函数中一并透传否则会在 apply 路径上被静默丢失。解决方案引入plugin_conflict_strategy配置项核心方案是给 skiller 新增一个skills.plugin_conflict_strategy设置提供两种策略策略值语义适用场景namespace默认行为。冲突时保留本地目录插件条目安装到命名空间化目录插件与插件之间的同名碰撞保证各插件互不抹除skip当插件条目的基础名称已被本地或其他非托管目录占用时直接丢弃该插件条目本地/手动技能故意与插件同名并希望本地版本生效的仓库对应的 TOML 配置写法如下[skills] enabled true plugin_conflict_strategy skip实现链路从配置解析到插件同步解决文档还原了完整的实现改动路径共四个环节配置解析从[skills]区块解析plugin_conflict_strategy与既有的enabled等选项一同进入配置对象。配置透传将该设置穿过propagateSkills一路传递到ClaudePluginSync同时补上计划文档点名的cloneLoadedConfig丢配置问题——凡是新建的skills选项都必须在该函数中保留否则 apply 路径上拿不到它。同步行为分支在插件同步逻辑中当策略为skip且插件条目的基础名称已被本地/手动目录保留时不再创建或保留命名空间化的插件目标目录。保留插件间命名空间namespace行为仍然是默认值插件与插件之间的碰撞依旧走命名空间化避免一个插件静默覆盖另一个插件。仓库内的配置落地与当前快照配置目标写入了 plate 仓库的.agents/skiller.toml。从当前仓库快照看.agents/skiller.toml 的配置结构为# Default agents to apply when --agents flag is not specified default_agents [claude-code, codex] # --- Fork Configuration --- [rules] merge_strategy cursor [backup] enabled false # --- Global Configuration --- [skills] enabled true其中[skills]区块保留了enabled true。需要说明的是解决文档记载的目标配置包含plugin_conflict_strategy skip一行而当前文件快照的[skills]区块仅显式保留了enabled true读者在复现时应以解决文档给出的完整配置enabled与plugin_conflict_strategy同时存在为准并结合自己仓库的 skiller 版本确认字段是否生效。另外.agents/skiller.toml并非 plate 独有模板目录 templates/plate-playground-template/.agents/skiller.toml、templates/plate-template/.agents/skiller.toml 以及 tooling/preset/.agents/skiller.toml 中均存在同样的 skiller 配置文件说明该治理方案面向模板与预设链路是成套设计的。关于插件技能在 plate 中的实际使用形态可参考 compound-engineering-tree.md它根据skiller-lock.json与.agents/rules下的规则文件梳理了 plate 实际保留的 Compound Engineering 技能树task lane、major-task lane、document-review pass 等。这份分析文档可以帮助你理解哪些插件技能被真正接线使用哪些只是被同步而未启用。验证与回归步骤计划文档给出了双侧验证清单覆盖 skiller 仓库与 plate 仓库skiller 侧针对配置解析与插件同步行为编写定向 Jest 测试验证plugin_conflict_strategy的解析与skip分支行为pnpm build确认构建通过pnpm lint:fix执行 lint 修复。plate 侧运行skiller apply验证不再重新生成重复的compound-engineering-*技能目录。计划文档中的原始命令为bun x /Users/zbeyens/git/skiller/dist/cli/index.js apply其中的绝对路径是作者本机构建产物路径复现时应替换为你本地 skiller 的构建输出或安装路径pnpm lint:fix确认同步后仓库无新增 lint 问题。为什么这个方案有效重复目录产生的唯一原因是插件同步缺少本地优先、插件跳过模式。启用skip后同步时凡基础名称已被本地/手动技能占用的插件条目不再分配命名空间目标既有的命名空间化插件目录如compound-engineering-ce-plan在下次同步时因为不再是预期的 manifest 条目会被自然清理无需手工删除。预防与排障建议在刻意保留本地/手动技能、同时启用全局市场插件的仓库中显式配置skills.plugin_conflict_strategy skip并把该配置随.agents/skiller.toml一并纳入版本控制保证新克隆仓库行为一致。不要把全局默认值改为skipnamespace应当保留为 skiller 的默认策略确保插件与插件之间的同名碰撞仍然可见而不是静默消失。排障提示当skiller apply后出现 dirty 的compound-engineering-*目录时先检查仓库是否已存在同名基础技能如ce-plan、document-review再怀疑重命名逻辑多半是冲突策略未生效或配置未透传到插件同步路径。【免费下载链接】plateRich-text editor with AI and shadcn/ui项目地址: https://gitcode.com/GitHub_Trending/pl/plate创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →