SuperAPI AI 工具集

write-script-deno

编程与开发

查看项目

更新于 10-16 15:03

技能介绍

用途

本技能用于在 Windmill 平台上编写 Deno 运行时的 TypeScript 脚本。官方指引明确:TypeScript 优先使用 Bun(write-script-bun),仅在脚本明确需要 Deno 运行时时才使用 Deno——即依赖 Deno 标准库,或使用 deno.land URL 导入且没有对应 npm 包的情况。

主要能力

  • Deno 运行时,支持 npm: 前缀的 npm 包,以及原生 Deno 库。
  • 脚本结构:导出单个异步函数 main,不要调用它;库会自动安装。
  • 资源类型:凭据与配置存于 resource,通过参数传入,使用 RT 命名空间(如 RT.Stripe)。使用前可查看项目根目录的 rt.d.ts(由 wmill resource-type generate-namespace 生成)。
  • 导入方式:npm 包用 npm: 前缀,Deno 标准库可直接引用 deno.land URL。
  • Windmill 客户端:import * as wmill from "windmill-client",优先用其处理与 Windmill 的交互(读写资源/变量/状态、运行脚本与 flow、S3 操作等),外部 HTTP API 才用 fetch。
  • 预处理器脚本:函数名为 preprocessor,接收单个 event 参数,返回对象决定传给 flow 的参数值;支持 webhook、http、websocket、kafka、email、nats、postgres、sqs、mqtt、amqp、gcp、azure 等来源。
  • S3 对象操作:使用内置的 wmill.S3Object 类型,支持 loadS3File、loadS3FileStream、writeS3File。

使用方式(命令选择)

  • wmill script preview <script_path>:本地迭代脚本时的默认命令,无需部署即可运行本地文件。
  • wmill script run <path>:运行已部署到工作区的脚本,仅当用户明确要测试已部署版本时使用。
  • wmill generate-metadata:为改动过的脚本重新生成本地 .script.yaml(输入 schema)与 .lock(已解析依赖),并刷新 wmill-lock.yaml 中的内容哈希,只写本地文件,不是部署。无路径参数时仅重新生成哈希已漂移的条目;导入会传播,改动被导入的模块会使所有导入者失效,可用 --dry-run 查看并配合路径参数或 --strict-folder-boundaries 收窄。wmill generate-metadata rehash 则仅从磁盘重新记录哈希,不与后端通信。
  • 部署:通过 git push 或 wmill sync push(取决于仓库接线方式),仅在用户明确要求部署/发布/推送时执行。

适用场景

需要 Deno 标准库或 deno.land URL 导入的 TypeScript 脚本;需要 Windmill 平台交互、S3 存储、或作为 flow 触发器预处理数据的场景。

限制与注意

  • 不应把脚本推送到远端只为测试;推送即部署,会用未测试的改动覆盖工作区版本。
  • wmill script preview 不部署但会执行代码,可能产生副作用。
  • wmill generate-metadata 会重新解析依赖,可能提升未固定的版本(与从 UI 部署时相同,属预期行为);应对比生成的 .lock 并告知用户版本变化,代码中固定版本可避免。
  • 返回值需可 JSON 序列化,供后续 flow 步骤通过 results.step_id 使用。
  • 脚本输入 schema 可含顶层 prompt_for_ai 字符串,是作者给选择输入的 AI 的指令。