如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
面向内部代码的开源开发者平台:API、后台任务、工作流和 UI。可自托管的替代方案,适用于 Retool、Pipedream、Superblocks,以及简化版 Temporal,提供自动生成的 UI 和自定义 UI,可将工作流和脚本作为内部应用触发。
脚本会自动转换为可共享的 UI,并可组合成工作流,或用于通过低代码构建的更丰富应用中。支持的语言:Python、TypeScript、Go、Bash、SQL、GraphQL、PowerShell、Rust 等。
立即体验 - 网站 - 文档 - *** - 中心 - 贡献者指南
Windmill 完全开源(AGPLv3 许可),Windmill Labs 提供专用实例以及商业支持和许可。
脚本参数会被自动解析并生成前端界面。
将其构建为工作流!您可以将自己的脚本或社区在WindmillHub上共享的脚本链接起来。
在脚本和工作流之上构建复杂 UI。
在 Windmill 之上构建您的整个基础设施!
//import any dependency from npm
import * as wmill from "windmill-client";
import * as cowsay from "cowsay@1.5.0";
// fill the type, or use the +Resource type to get a type-safe reference to a resource
type Postgresql = {
host: string;
port: number;
user: string;
dbname: string;
sslmode: string;
password: string;
};
export async function main(
a: number,
b: "my" | "enum",
c: Postgresql,
d = "inferred type string from default arg",
e = { nested: "object" }
//f: wmill.Base64
) {
const email = process.env["WM_EMAIL"];
// variables are permissioned and by path
let variable = await wmill.getVariable("f/company-folder/my_secret");
const lastTimeRun = await wmill.getState();
// logs are printed and always inspectable
console.log(cowsay.say({ text: "hello " + email + " " + lastTimeRun }));
await wmill.setState(Date.now());
// return is serialized as JSON
return { foo: d, variable };
}
Windmill 支持多种本地开发方式,并可与您的实例同步:
| 工具 | 描述 |
|---|---|
| 命令行工具(CLI) | 从本地文件或 GitHub 同步脚本,通过命令行运行脚本/工作流 |
| VS Code 扩展 | 直接在 VS Code / Cursor 中编辑和测试脚本与工作流,提供完整 IDE 支持 |
| Git 同步 | Windmill 与 Git 仓库之间的双向同步 |
| Claude Code | 借助 Claude 进行 AI 辅助开发,支持脚本、工作流和应用 |
您可以通过为 wmill 客户端库传递正确的环境变量,从您的实例获取资源和变量,从而在本地运行脚本。请参阅本地开发文档。
我们将 Windmill 与其他自托管工作流引擎(Airflow、Prefect 和 Temporal)进行了比较,Windmill 在以下两个基准测试中均是性能最佳的解决方案:一个包含 40 个轻量级任务的工作流,以及一个包含 10 个长时间运行任务的工作流。
所有方法和结果详见我们的基准测试页面。
详情请参阅安全文档。
作业启动后,与在节点上使用相应的运行器(Deno/Go/Python/Bash)运行相同脚本相比,没有额外开销。作业从队列中被拉取、启动,然后将结果发送回数据库所增加的延迟约为 50ms。一个典型的轻量级 Deno 作业总共耗时约 100ms。
有关详细的设置选项,请参阅自托管文档。
使用 3 个文件部署 Windmill(docker-compose.yml、Caddyfile、.env):
curl https://raw.githubusercontent.com/windmill-labs/windmill/main/docker-compose.yml -o docker-compose.yml
curl https://raw.githubusercontent.com/windmill-labs/windmill/main/Caddyfile -o Caddyfile
curl https://raw.githubusercontent.com/windmill-labs/windmill/main/.env -o .env
docker compose up -d
访问 http://localhost - 默认凭据:admin@windmill.dev / changeme
使用外部数据库:在 .env 中设置 DATABASE_URL 以指向您的托管 Postgres(AWS RDS、GCP Cloud SQL、Azure、Neon 等),并将数据库副本数设置为 0。
helm repo add windmill https://windmill-labs.github.io/windmill-helm-charts/
helm install windmill-chart windmill/windmill --namespace=windmill --create-namespace
社区版可免费在内部使用。如需商业再分发或托管服务,请联系 。详情参见LICENSE和Pricing。
Windmill“社区版”可通过托管于ghcr.io/windmill-labs/windmill的Docker镜像及GitHub二进制发行版获取,包含AGPLv3和Apache 2许可下的源代码文件,同时也包含非开源的专有及非公开代码与功能,这些内容受以下条款约束:Windmill Labs, Inc. 授予免费使用“社区版”所有功能的权利,除软件中设置的限制和配额外无其他限制;同时授予按原样分发社区版的权利,但未经明确协议,不得销售、转售、将Windmill作为托管服务提供、修改或以任何形式包装。
从本仓库源代码(未启用“enterprise”功能标志)编译的二进制文件遵循https://github.com/windmill-labs/windmill/blob/main/LICENSE-AGPL%E8%AE%B8%E5%8F%AF%E6%9D%A1%E6%AC%BE%EF%BC%8C%E4%B8%BA%E5%BC%80%E6%BA%90%E8%BD%AF%E4%BB%B6%E3%80%82
如需将Windmill的任何部分作为产品功能直接重新暴露给您的用户(嵌入的公共Windmill“应用”除外),或在“Windmill社区版”基础上构建商业销售的功能或将其嵌入可分发产品或二进制文件中,您必须获得商业许可。如有任何问题,请联系 。如需对从本仓库源代码(未启用“enterprise”功能标志)编译的二进制文件执行上述操作,您必须遵守AGPLv3许可条款,或从Windmill Labs, Inc.获得商业许可。
在组织内部按原样使用Windmill“社区版”,或按原样使用其API,无需商业许可。
| 环境变量名称 | 默认值 | 描述 | 适用组件(API服务器/工作器/全部) |
|---|---|---|---|
| DATABASE_URL | Postgres数据库URL。 | 全部 | |
| WORKER_GROUP | default | 工作器所属的工作组,工作器将从中拉取配置 | 工作器 |
| MODE | standalone | 二进制文件的运行模式。可能的值:standalone(独立模式)、worker(工作器模式)、server(服务器模式)、agent(代理模式) | 全部 |
| METRICS_ADDR | None | (仅企业版)用于在 /metrics 路径暴露Prometheus指标的套接字地址。设置为 "true" 可在8001端口暴露指标 | 全部 |
| JSON_FMT | false | 以JSON格式输出日志,而非logfmt格式 | 全部 |
| BASE_URL | http://localhost:8000 | 公开访问您实例的基础URL。如有实例设置,将覆盖此值 | 服务器 |
| ZOMBIE_JOB_TIMEOUT | 30 | 如果工作器未发送任务处理心跳,任务被判定为僵尸任务的超时时间(服务器每30秒检查一次僵尸任务) | 服务器 |
| RESTART_ZOMBIE_JOBS | true | 若为true,僵尸任务将被重启(使用相同UUID原地重启并保留部分日志);若为false,僵尸任务将标记为失败 | 服务器 |
| NATIVE_MODE | false | 启用原生模式:设置NUM_WORKERS=8,拒绝非原生任务(nativets、postgresql、mysql等) | 工作器 |
| SLEEP_QUEUE | 50 | 数据库中最后一次检查新任务后休眠的毫秒数。该值会乘以NUM_WORKERS,因此对于单个工作器实例,平均每SLEEP_QUEUE毫秒拉取一次任务 | 工作器 |
| KEEP_JOB_DIR | false | 任务完成后保留任务目录。用于调试。 | 工作器 |
| LICENSE_KEY (EE only) | None | Windmill企业版启动时检查的许可证密钥 | 工作器 |
| SLACK_SIGNING_SECRET | None | Slack应用的签名密钥。参见Slack文档 | 服务器 |
| COOKIE_DOMAIN | None | Cookie的域名。若未设置,浏览器将根据完整源自动设置Cookie | 服务器 |
| DENO_PATH | /usr/bin/deno | deno二进制文件的路径。 | 工作器 |
| PYTHON_PATH | 若不想使用uv管理Python,可指定Python二进制文件的路径 | 工作器 | |
| GO_PATH | /usr/bin/go | Go二进制文件的路径。 | 工作器 |
| GOPRIVATE | 用于私有Go模块的GOPRIVATE环境变量 | 工作器 | |
| GOPROXY | 要使用的GOPROXY环境变量 | 工作器 | |
| NETRC | 用于私有Go仓库的netrc内容 | 工作器 | |
| PY_CONCURRENT_DOWNLOADS | 20 | 设置Windmill在任何时候执行的Python下载的最大并发数 | 工作器 |
| PATH | None | PATH环境变量,通常继承自系统 | 工作器 |
| HOME | None | 用于Go和Bash的主目录,通常继承自系统 | 工作器 |
| DATABASE_CONNECTIONS | 50(服务器)/3(工作器) | 数据库连接池中的最大连接数 | 全部 |
| SUPERADMIN_SECRET | None | 允许调用者以虚拟超级管理员(***)身份操作的令牌 | 服务器 |
| TIMEOUT_WAIT_RESULT | 20 | 'run_wait_result'端点的超时等待秒数 | 工作器 |
| QUEUE_LIMIT_WAIT_RESULT | None | 'run_wait_result'端点在立即拒绝请求前的最大队列任务数。优先级高于查询参数。若未指定,则无限制 | 工作器 |
| DENO_AUTH_TOKENS | None | 传递给工作器的自定义DENO_AUTH_TOKENS,用于允许使用私有模块 | 工作器 |
| DISABLE_RESPONSE_LOGS | false | 禁用响应日志 | 服务器 |
| CREATE_WORKSPACE_REQUIRE_SUPERADMIN | true | 若为true,仅超级管理员可创建新工作区 | 服务器 |
| MIN_FREE_DISK_SPACE_MB | *** | 工作器的最小可用磁盘空间(MB)。若工作器可用空间低于此值,将发送严重警报 | 工作器 |
| RUN_UPDATE_CA_CERTIFICATE_AT_START | false | 若为true,在启动时先运行CA证书更新命令,再进行其他初始化 | 全部 |
| RUN_UPDATE_CA_CERTIFICATE_PATH | /usr/sbin/update-ca-certificates | 当RUN_UPDATE_CA_CERTIFICATE_AT_START为true时,运行CA证书更新命令/脚本的路径 | 全部 |
我们建议使用Nix。所有选项详见./frontend/README_DEV.md。
使用本地前端(热重载)连接后端:
cd frontend
npm install
npm run generate-backend-client # 或在Mac上使用 generate-backend-client-mac
npm run dev
Windmill可通过 http://localhost/ 访问
所有运行选项详见./frontend/README_DEV.md文件。
start-dev-db.sh 脚本启动本地Postgres数据库(例如),数据库将通过 postgres://postgres:changeme@localhost:5432/windmill 可用。然后使用以下命令运行迁移:cargo install sqlx-cli
env DATABASE_URL= sqlx migrate run
这也将避免sqlx query! 宏的编译时问题。
2. (可选,仅Linux)安装https://github.com/google/nsjail%E5%B9%B6%E7%A1%AE%E4%BF%9D%E5%85%B6%E5%9C%A8PATH%E4%B8%AD%E5%8F%AF%E8%AE%BF%E9%97%AE
3. 安装bun、deno和python3(以及您想使用的任何语言),确保二进制文件位于 /usr/bin/bun、/usr/bin/deno 和 /usr/local/bin/python3,或设置相应的环境变量。
4. (可选)安装lld链接器
5. 进入 frontend/ 目录:
npm install、npm run generate-backend-client,然后执行 REMOTE=http://localhost:8000 npm run devexport NODE_OPTIONS="--max-old-space-size=4096"mkdir frontend/build 创建空的 frontend/build 文件夹backend/ 目录:
env DATABASE_URL= RUST_LOG=info cargo runcargo run --features python 启用Python执行器。http://localhost:3000 访问© 2023-2026 Windmill Labs, Inc.
来自真实用户的反馈,见证轩辕镜像的优质服务