Skip to content

[Feature Request] enabledSkills 支持白名单模式 / default-off 选项 #178

@user-lzy

Description

@user-lzy

当前 enabledSkills 的设计是纯黑名单模式:未配置的 Skill 默认启用,只能通过设 false 逐个关闭。每次 CLI
启动时,所有扫描路径(/.deepcode/skills/、/.agents/skills/、./.deepcode/skills/、./.agents/skills/ 以及内置
Bundled Skill)下的 Skill 会全部注入到系统提示中。

这带来两个问题:

  1. 上下文臃肿:用户可能安装了多个 Skill(比如通过 npx skills add 安装了 8~10
    个),但当前任务只用得到其中一两个。其余 Skill 的 SKILL.md 仍然会占用大量 token,浪费上下文窗口和推理成本。

  2. 无法精确控制:用户如果想让「只有我明确开启的 Skill 才加载」,目前无法做到。只能逐个关闭,且以后每新增一个 Skill
    又会被自动注入,需要再去关一次。

期望行为

希望能有一个白名单模式,例如新增一个顶层配置项:

[json]
{
"defaultSkillsEnabled": false,
"enabledSkills": {
"solidworks-cad": true,
"solidworks-automation": true
}
}

  • defaultSkillsEnabled 默认值为 true(保持向后兼容)。
  • 当设为 false 时,只有 enabledSkills 中显式设为 true 的 Skill 才会被加载。
  • 未在 enabledSkills 中出现的 Skill 视为禁用。

替代方案

如果不想新增独立字段,也可以让 enabledSkills 支持一个特殊键 "*" 来控制默认行为:

[json]
{
"enabledSkills": {
"*": false,
"solidworks-cad": true
}
}

使用场景

用户在 ~/.agents/skills/ 下通过 npx skills add 安装了多个跨项目 Skill(如 code-review、find-skills、ida-pro-mcp
等),但在特定项目或会话中只需要其中少数几个,希望其余 Skill 完全不参与上下文注入。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions