Skip to content

fix(agent): enforce Cindy-owned workflow Skills before downstream harness plugins #1645

Description

@zqchris

背景

PR #1215fix(agent): 防止下游 harness 能力无感覆盖 Cindy)已经建立了 Cindy 的 capability routing,覆盖 Feishu 与 Computer Use 等会与 Cindy 能力冲突的下游来源。

但该 PR 明确保留用户本地 Skill、项目 Skill、官方插件和普通 MCP;同时当前路由表只登记具体能力冲突,没有覆盖“Cindy-owned workflow Skill 必须先于下游 harness plugin Skill 执行”的通用 Skill precedence / prerequisite 机制。

实际复现

Codex 会加载 OpenAI curated remote GitHub plugin 中的:

~/.codex/plugins/cache/openai-curated-remote/github/0.1.8-2841cf9749ae/skills/yeet/SKILL.md

来源元数据是 github plugin(repository: openai/plugins,author: OpenAI),skill 名称为 yeet

在 Cindy 仓库内,~/.agents/skills/git-workflow/SKILL.md 才是包含 Cindy canonical PR workflow 的规则来源,包括:

  • ready PR 必须绑定 repository-wide heartbeat;
  • 必须检查 reviewDecision、checks、reviews、comments 和 unresolved threads;
  • follow-up 必须自动继续,不能把“要不要跟进”再交回用户;
  • 提交前的 DCO、工作区和测试门禁。

github:yeet 可以直接驱动 push / 开 PR 流程,而没有声明或触发 Cindy git-workflow 的前置约束。因此 downstream plugin skill 可以绕过 Cindy 的收口规则。当前本机 cache 上的手工补丁不是持久修复,插件更新后会被覆盖。

期望行为

  1. 在 Cindy 会话/工作区内,Cindy-owned Skill 或 workflow policy 应先被解析并绑定;下游 Codex/Claude plugin skill 只能在其后作为补充执行。
  2. 该机制应覆盖 Codex 自己安装或 remote-installed 的 plugin skill,也覆盖 Claude 对应的下游 skill 来源,而不只覆盖 Cindy Desktop 生成的能力 overlay。
  3. 对与 Cindy-owned policy 不冲突的用户 Skill、项目 Skill、官方插件和普通 MCP 继续保留可用,不做全局禁用。
  4. 下游同类能力需要可审计的来源命名空间或显式点名;不能因为 harness 自己的 skill router 先命中就静默绕过 Cindy 规则。
  5. 增加至少一个 Codex 回归测试:github:yeet(或等价的外部 plugin skill)在 Cindy workdir 中运行时,能证明 git-workflow 已先绑定并完成 heartbeat 收口。

关联项

非目标

不要求禁用所有官方插件,也不要求把 Codex/Claude 的非冲突工具全部替换成 Cindy 实现;目标只是保证 Cindy-owned 规则在冲突或工作流前置场景不会被下游 skill 绕过。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions