用途:在使用 Windmill CLI 编写 Python 脚本时遵循该技能的流程,脚本应放在文件夹中,写完后向用户说明合适的命令。
主要命令:wmill script preview <script_path> 用于本地迭代,运行本地文件但不部署;wmill script run <path> 运行工作区中已部署的脚本,仅当用户明确要测试已部署版本时使用;wmill generate-metadata 重新生成本地 .script.yaml(输入 schema)和 .lock(解析后的依赖),并刷新 wmill-lock.yaml 中的内容哈希,仅写本地文件,不是部署;部署通过 git push 或 wmill sync push 完成,仅在用户明确要求部署、发布或推送时执行。
脚本结构:Python 脚本至少包含一个 main 函数,不要调用它;库会自动安装,无需给出安装说明。凭据与配置以资源参数传入,需在 main 之前用 TypedDict 重新定义所需资源类型,类型名必须小写,仅在确实需要时声明;导入与资源类型名冲突时重命名导入对象。可用 import wmill 调用 Windmill 客户端,S3 对象操作通过 wmill.load_s3_file、load_s3_file_reader、write_s3_file 等完成。预处理器脚本函数名为 preprocessor,接收单个 event 参数,返回值决定传给流程的参数。
同步与限制:编辑脚本内容(尤其是增删导入或修改 main 参数)会使哈希失效,应运行 wmill generate-metadata(可限定路径)以同步锁文件、输入 schema 与哈希;无路径参数时只重生成哈希漂移的条目,导入会传播使导入方变旧,可用 --dry-run 查看原因或 --strict-folder-boundaries 收窄范围;若磁盘上的 .lock 与 .script.yaml 已正确,仅需刷新 wmill-lock.yaml 哈希时用 wmill generate-metadata rehash。该命令可能提升未固定版本,需在运行后对比并告知用户版本变化。preview 不部署但会执行代码并可能产生副作用;仅部署会修改远端状态。需要可视化打开脚本时使用 preview 技能;用 wmill resource-type list --schema 查看可用资源类型。