扩展 Workflows
发现静态脚本元数据,按名称调用并核对更新同意与内容绑定权限。
原生扩展可附带保存的 JavaScript workflow。它们只有在 tools.workflowsEnabled 启用后才出现,该开关默认关闭;安装同意界面仍会列出附带脚本。
元数据决定名称
脚本需包含静态元数据,例如:
export const meta = {
name: 'deep-research',
description: 'Research the requested question and collect evidence.',
whenToUse: 'When a task needs several independent evidence checks.'
};这只是元数据片段,不是完整执行脚本。文件名可以不同,调用使用 meta.name。name 必须小写字母开头,仅字母、数字、连字符,最多 41 字符。description 和 whenToUse 的展示超过 500 字符会缩短。
gcp 扩展该 workflow 注册为 gcp:deep-research。交互 /gcp:deep-research 直接启动;无头与 ACP 的同一命令先请求模型按名称运行,再进入审批。
模型发现与精确调用
只有声明 whenToUse 才进入模型可选列表。没有它仍可由用户直接调用、按名称要求执行,或由另一个 workflow 调用 workflow('gcp:deep-research')。
tools.workflowNameOnly 或 QWEN_CODE_WORKFLOW_NAME_ONLY=1 可禁止模型编写任意脚本后执行,只允许已命名 workflow 路径。但这不等于自动批准,仍需规则或正常审批。
名称冲突
扩展 workflows 始终有所有者前缀,不会直接覆盖项目或个人的裸名 workflow。同扩展有同名 Skill 时,Skill 保留 /gcp:deep-research,workflow 斜杠入口变成 /gcp.gcp:deep-research;按原名配置 slashCommands.disabled 仍可移除两者。
用户或项目命令最后加载,若占用同名斜杠入口,workflow 仍可通过 workflow 函数按注册名调用。不要用斜杠入口被覆盖来判断脚本完全不可达。
文件发现边界
只读取声明目录的直接 .js 子文件,不递归子目录;路径必须在扩展内部。超过 256 KiB 或没有有效 meta 的脚本会警告并跳过,同名 meta 只保留先发现项。
link 扩展跳过 symlink 文件和目录;已安装副本中适用的链接已经物化为文件。默认 workflows/ 下编辑会自动发现,其他声明路径需 /reload-plugins 或重启。
Claude 插件显式声明 workflows 时,转换保留相对路径并只发现声明项,即使另带 workflows/ 目录也不会读取未声明脚本;没有声明时才使用默认目录。
安装与执行批准不同
增删脚本、名称/描述变化或代码变化,更新时再次请求同意;仅代码变化也会列出对应文件。每次运行仍经过 workflow 审批,并展示脚本开头。不可信目录和 Bare 模式隐藏这些 workflows。
界面生成的“始终允许”规则绑定内容哈希,如 Workflow(name:gcp:deep-research,sha256:3f2a9c1d0b4e5f67),脚本改动后失效。手写不带 sha256 的 Workflow(name:gcp:deep-research) 允许该名字所有版本,应明确两者的更新边界。