当前 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 完全不参与上下文注入。
Activity