SuperAPI AI 工具集

workspace-settings

部署与运维

查看项目

更新于 10-16 14:22

技能介绍

用途

用于读取或修改 Windmill 工作区设置,以及 wmill sync 持续维护的 settings.yaml 文件。管理员在工作区设置页设置的每一项内容构成同一份文档:顶层键的映射,布局与 settings.yaml 一致。只有工作区管理员可以读取或修改。

应用文档的规则

  • 部分文档只改动它声明的键,省略的键保持原样。
  • 每个键整体替换。因此需要先读取当前值,编辑后再发回;若嵌套对象只给一个字段,则存储的对象会被这个仅含一个字段的对象替换。
  • 键设为 null 会清除该设置;以这种方式清除的开关读作 false。
  • 每项设置都经由设置页使用的同一路径写入,具有相同的校验和审计日志。写入不是单个事务:某项失败时应用会停止,错误会说明已经写入了什么。
  • dry run 只报告变更(逐键 before / after),不写入任何内容。
  • name 永不应用:重命名工作区需在设置页进行。color 只在设为某值时应用,因此 null 不会清除它。
  • 服务器不认识的键会被忽略并在 warnings 中列出:务必检查,否则拼写错误会被读成“无变更”。
  • 当前版本不提供的设置(仅企业版)会被拒绝,dry run 也会拒绝。

密钥(Secrets)

slack_oauth_client_secret 是唯一的密钥。读取时,已设置的密钥显示为 __SENSITIVE_AND_UNCHANGED__;把该占位符发回会保留存储值。以 $encrypted: 开头的值会用工作区密钥解密,用其他工作区密钥加密的值会保持不变并给出警告;其他任何值按明文处理。不要写入未获提供的密钥:保留占位符。

键(Keys)

  • auto_invite:{ enabled, mode: invite | add, operator, instance_groups?, instance_groups_roles? }。仅当声明 instance_groups 时才管理实例组;清除某个组会移除它添加的成员。
  • error_handler / success_handler:{ path, extra_args?, muted_on_cancel?, muted_on_user_path? },path 为 script/<path> 或 flow/<path>。
  • error_handler_fallback_to_instance_alerts:未设置错误处理器时,将失败上报到实例关键告警渠道。
  • webhook:每次工作区项目发生变更时向其 POST JSON 事件的 URL。
  • ai_config:提供商、默认与补全模型、自定义提示词、copilot_disabled。
  • large_file_storage:工作区对象存储:{ type, s3_resource_path | azure_blob_resource_path | gcs_resource_path, public_resource?, secondary_storage?, advanced_permissions? }。
  • git_sync:{ repositories: [...] },每项含 git_repo_resource_path、script_path 与设置(包含/排除路径与类型)。服务器拥有的字段(webhook 密钥、同步状态、凭据)永不读写。
  • datatable:{ datatables: { <name>: { database: { resource_type, resource_path? } } } }。角色权限为 datatable_permissions。
  • datatable_permissions:{ <data table>: { default_role, roles: { <role>: [tenants] } } },定义谁可以以哪种角色连接各数据表。租户为 u/<user>、g/<group>、f/<folder> 或 *;admin 始终是一个角色,default_role: null 表示无默认。值中省略的数据表不再处于 roles 之下。只有位于 Windmill 托管的集群上的数据表才能如此。
  • protection_rules:{ <rule name>: { rules: [...], bypass_groups: [...], bypass_users: [...] } },rules 可选 DisableDirectDeployment、DisableWorkspaceForking、RestrictDeployToDeployers、RestrictAnonymousAppDeployment、RestrictPublicRunSharing、RestrictGuestAppDeployment。值中省略的规则会被删除。dev 工作区锁定不在列表中,不能在此设置。
  • ducklake:{ ducklakes: { <name>: { catalog, storage, ... } } }。
  • dbt_warehouses:dbt 仓库连接。
  • default_app:作为工作区主页展示的应用路径。
  • default_scripts:{ order?, hidden?, default_script_content? },用于脚本语言选择器。
  • deploy_ui:{ include_path?, include_type? }:部署到工作区 UI 提供的内容。
  • operator_settings:操作员可见与可做的内容:页面可见性标志(runs、schedules、resources、variables、assets、audit_logs、groups、folders、workers、triggers)与写权限(manage_schedules、manage_triggers、builder_flows、builder_apps)。值中省略的写权限保持存储值。
  • mute_critical_alerts:静音工作区的关键告警。
  • slack_team_id、slack_name:只读;在设置页连接 Slack 时设置。
  • slack_command_script / teams_command_script:处理 Slack / Teams 命令的脚本或流程。
  • slack_oauth_client_id / slack_oauth_client_secret:工作区自己的 Slack OAuth 应用。清除任一项会同时移除两者。
  • public_app_execution_limit_per_minute:公共应用的速率限制,null 表示不限制。
  • guest_access_enabled、guest_jwt_public_key、guest_jwt_jwks_url:公共应用的访客访问及签名访客 JWT 的密钥。
  • add_admins_and_developers_to_forks:将工作区的管理员与开发者加入每个 fork。
  • color:工作区颜色,#rrggbb。

从命令行使用

  • wmill workspace get-settings 打印该文档(--encrypted 输出用工作区密钥加密的密钥,--json 输出 JSON)。
  • wmill workspace apply-settings <file> 从 YAML 或 JSON 文件应用部分文档:显示变更并在写入前询问(--dry-run 仅显示,-y 跳过询问,--replace 清除文件省略的内容)。

在同步仓库中使用

在 wmill.yaml 中设置 includeSettings: true 时:

  • wmill sync pull 将文档写入 settings.yaml,密钥用工作区密钥加密(仅 plainSecrets 时为明文)。
  • wmill sync push 应用它。与部分应用不同,push 会把文件视为完整文档:文件中省略的设置会被清除,但 operator_settings、color、自动邀请的实例组,以及键 ducklake、dbt_warehouses、deploy_ui、teams_command_script、public_app_execution_limit_per_minute、guest_access_enabled、guest_jwt_public_key、guest_jwt_jwks_url、error_handler_fallback_to_instance_alerts 和 add_admins_and_developers_to_forks 例外,它们仅在文件声明时管理。
  • datatable_permissions 仅在 includeDatatablePermissions: true(或 --include-datatable-permissions)时推送。
  • push 忽略 protection_rules:由 protection-rules.yaml 和 wmill protection-rules push 同步它们。