PKUfudawei/dsh-capability-menu1

@daweifu/capability-menu

Unified capability management for the DeepSeek Harness: catalog (registry) + meta_search/meta_invoke + Exposed/Progressive/Blocked projection policy + 能力管理 surface, in one installable bundle.

包名
@daweifu/capability-menu
版本
0.1.0
许可证
Apache-2.0
最近更新
2026年8月21日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:PKUfudawei/dsh-capability-menu

配置(在 @daweifu/capability-menu/policy 上)

- insert:
    - id: capability-menu-policy
      name: '@daweifu/capability-menu/policy'
      config:
        tools:
          exposed:
            - execute_cmd
            - get_session_context
            - search_kb
            - 'mcp__gongfeng__*'   # 通配:该 server 下全部 Exposed
          progressive:
            - 'mcp__*'             # 该规则覆盖所有未显式列出的 MCP 工具
            - 'server:km:*'        # 按 server 前缀批量 Progressive
          blocked:
            - 'mcp__secret__*'     # 明确禁用(优先级最高,压过 Exposed)
        skills:
          exposed:
            - debugging
            - coding
          progressive:
            - legacy_skill         # 显式 Progressive(未列出即默认 Exposed)
          blocked:
            - forbidden_skill
        metaTools:
          - meta_search            # 恒 Exposed,不可被 Blocked
          - meta_invoke
        progressiveSkillCatalog: ~/.dsh/progressive-skills.yaml  # Progressive skill 的 name+description+path 目录

规则优先级(命中即停):blocked 精确 > blocked 通配 > exposed 精确 > exposed 通配 > progressive 精确 > progressive 通配 > 默认 Exposed。blocked 压过 exposed(控制语义)。meta 工具(meta_search/meta_invoke)恒为 Exposed,出现在 blocked 里会 fail loud。

tools.exposed 里列原生工具名(execute_cmd 等)是保活语义:原生工具不进能力管理编目(classifyAll 列表里看不到它们),但投影链会裁剪其可见性,列在这里保持模型直接可见可调。不要因为"它不在能力管理里"就把它从 exposed 移除——一旦被 progressive/blocked 规则覆盖,模型既看不到也调不到。

默认(不配置 policy)

  • 不挂 capability-menu-policy → 全部工具/技能照旧可见(不投影)。
  • 挂了 policy 但没有任何规则 → 全部能力默认 Exposed(classify 兜底),不投影、不隐藏。需要把低频能力归档进目录时,显式配置 progressive(或 blocked)规则把它们从模型视野中移出。

Progressive skill

Progressive skill 的 name + description + path 汇总进独立 YAML(progressiveSkillCatalog),由 registry 索引、meta_search 检索;完整 SKILL.md 由 meta_invoke 按需加载(ctx.skills 未注册时按 YAML 的 path 读取)。Progressive skill 不进固定上下文。

关于 ``:Exposed skill 走渐进加载(名字表 → load);Progressive/Blocked skill 不进入 dsh-tool-skill 注入的目录。目录级裁剪需要上游 dsh-tool-skill 提供 filter 钩子(超出本 bundle 范围);当前 Exposed skill = 会话 registry 中所有 model-invocable skill,Progressive skill = progressiveSkillCatalog 条目。

默认(不配置 policy)

  • 不挂 capability-menu-policy → 全部工具/技能照旧可见(不投影)。
  • 挂了 policy 但没有任何规则 → 全部能力默认 Exposed(classify 兜底),不投影、不隐藏。需要把低频能力归档进目录时,显式配置 progressive(或 blocked)规则把它们从模型视野中移出。