跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

在扩展中组合命令、Hooks 与策略

按约定目录打包能力,理解命令冲突、策略层级与禁止自动放行。

扩展的不同能力有不同入口文件,不应全部塞进 manifest。先选择需要的能力,再按约定目录组织。

目录约定

位置能力
commands/*.toml自定义 slash commands
hooks/hooks.jsonHooks 定义
skills/<name>/SKILL.md按需技能
agents/*.mdsubagents,扩展参考仍标为预览能力
policies/*.toml策略与 safety checkers
根 GEMINI.md默认扩展上下文

Hooks 不写在 gemini-extension.json 的 hooks 字段中。具体事件协议见Hooks,代理文件仍需完整元数据。

命令与冲突

commands/deploy.toml 对应 /deploy,commands/gcs/sync.toml 对应 /gcs:sync。扩展命令优先级最低,遇到用户或项目同名命令,会用扩展名加点分隔,例如 /gcp.deploy。

目录分组用冒号,冲突前缀用点,两者不是同一种命名规则。用 /help 核对实际命令及来源。

扩展策略

policies 目录的 TOML 在扩展活动时加载。扩展规则属于 tier 2,高于默认而低于用户和管理员;当前策略源码将 Workspace 单列 tier 3,扩展参考“与 workspace 同层”的说法不沿用。

官方规定扩展策略中的 allow 决定和 yolo 模式配置被忽略,扩展不能靠随包策略自动批准工具。可以提供 ask_user 或 deny 等约束,仍需符合当前规则 schema。

[[rule]]
mcpName = "project-tools"
toolName = "write-data"
decision = "ask_user"
priority = 100

服务与工具名需真实匹配。官方扩展示例使用带下划线服务名,但策略专页警告身份解析风险,因此这里使用连字符。

两种 excludeTools

Manifest 顶层 excludeTools 作用于模型工具,并支持特定工具的命令限制;MCP 服务内部 excludeTools 只过滤该服务工具。二者位置和范围不同。

字符串排除示例只是某条限制,不意味着所有危险命令变体都已覆盖。通用新策略和模型工具范围应同时检查,不把单个 rm 前缀当作完整隔离边界。