![]()
一个法国开源团队把Retool、Zapier、n8n三家公司的核心功能塞进了一个500MB的Docker镜像里。更离谱的是,他们连API调用都免费——不限用户数,不限执行次数,自建服务器零成本。
这事发生在2024年底,但直到最近才在开发者社区炸开。不是产品不行,是营销太佛系。团队官网连个大厂背书都没有,GitHub仓库却悄悄攒了9000多星。
「我们讨厌按座位收费」
Windmill创始人Ruben Fiszel在播客里说得直接:「内部工具市场的定价模式是反生产力的。你每新增一个同事看仪表盘,就要多付一份钱,这鼓励的是减少协作,而不是提升效率。」
这套逻辑击中了中小团队的痛点。Retool企业版每人每月50美元起,Zapier专业版每月19美元还限任务数,n8n虽然开源但云托管版同样按执行次数计费。Windmill的解法简单粗暴:代码全开源,Docker一键部署,API调用走你自建的服务器,成本只有电费。
技术实现上,他们把三类产品揉成了一个统一平台:
脚本层:TypeScript、Python、Go、Bash、SQL五语言支持,每个脚本自动暴露为REST API端点
流程层:YAML编排的自动化工作流,支持循环、条件分支、错误重试
调度层:类Unix的Cron表达式,精确到秒级的任务调度
一个电商团队的技术负责人告诉我,他们用Windmill替换了原来Zapier+Retool的组合,每月省下400多美元。「最爽的是Python脚本可以直接调TypeScript写的接口,不用再搞什么Webhook中转。」
API设计:把复杂藏进一行curl
Windmill的API文档只有三页,但覆盖了90%的使用场景。核心设计哲学是「脚本即端点」——你在Web IDE里写的每个函数,部署后自动获得一个URL。
比如这段TypeScript脚本:
![]()
export async function main(name: string, count: number = 5) { const results = []; for (let i = 0; i < count; i++) { const res = await fetch(`https://api.example.com/data?name=${name}&page=${i}`); results.push(await res.json()); } return results; }
部署后直接curl调用:
curl -X POST "https://your-windmill.com/api/w/workspace/jobs/run/p/f/folder/script" \ -H "Authorization: Bearer $TOKEN" \ -d '{"name": "test", "count": 3}'
同步执行用run_wait_result,异步用run返回任务UUID,再轮询get_result拿结果。没有SDK绑架,没有GraphQL的嵌套地狱,就是最简单的HTTP。
对比Retool的API——需要先理解「查询」「转换」「事件」三层抽象,再搞清楚什么时候用REST什么时候用Webhook——Windmill的学习曲线短得像一张信用卡。
工作流编排:YAML比拖拽更靠谱
Zapier和n8n的卖点是「无代码拖拽」,但复杂流程画出来像意大利面条。Windmill反其道而行,用YAML定义工作流,版本控制直接走Git。
一个典型订单处理流程长这样:
summary: "Process New Orders" value: modules: - id: fetch_orders value: type: script path: f/orders/fetch_new - id: process value: type: forloopflow iterator: type: javascript expr: results.fetch_orders modules: - id: validate value: type: script path: f/orders/validate - id: notify value: type: script path: f/notifications/send_slack input_transforms: message: type: javascript expr: "`Order ${flow_input.iter.value.id} processed`"
循环、条件、错误处理、数据转换全在代码里显式声明。Review时直接看diff,比对着画布找差异高效十倍。
团队还埋了一个彩蛋:表达式支持完整的JavaScript,包括模板字符串和箭头函数。上面那段`${flow_input.iter.value.id}`就是动态拼接消息内容,不需要学专门的「表达式语言」。
自建不是退路,是主战场
Windmill的商业模式很有意思。他们卖的是托管云服务和企业支持,但产品设计处处鼓励你自建。官方文档里docker compose up -d被放在最显眼的位置,CLI安装命令pip install windmill-cli紧随其后。
![]()
这种「反向SaaS」策略在开发者工具里越来越常见。Supabase、PostHog、NocoDB都在走这条路——核心功能开源免费,靠托管服务和高级功能盈利。
风险也有。自建意味着你要管服务器、备份、安全更新。一个200人的团队在Hacker News上吐槽:「Windmill本身很稳,但我们花了两周才把PostgreSQL的备份策略调对。」
团队回应得很快。2024年11月推出的企业版增加了托管数据库选项,同时保留了自建的灵活性。价格还没公布,但Fiszel暗示会是「按计算资源而非人头」计费。
更实际的挑战来自生态。Zapier连接了7000多个应用,Retool有成熟的组件市场,n8n的社区节点超过1000个。Windmill目前只有官方维护的50多个集成,小众系统需要自己写脚本对接。
但换个角度,这也是机会。Windmill的脚本可以import任意npm包或PyPI模块,理论上没有对接不了的服务。一个金融团队用pandas+requests两周内自建了核心银行系统的数据同步,「放在Zapier里根本不敢想,敏感数据不能出内网。」
开发者工具的「去SaaS化」浪潮
Windmill不是孤例。从数据库到BI工具,从消息队列到监控告警,开源替代品正在蚕食SaaS的市场份额。驱动力来自两方面:
成本敏感:经济下行期,「按座位收费」模式显得越来越贵
数据主权:GDPR和跨境数据监管让企业重新评估云服务风险
技术成熟:Kubernetes和Docker降低了自建基础设施的门槛
Windmill的聪明之处在于定位精准。他们不跟Zapier抢市场人员,不跟Retool抢产品经理,而是瞄准「能写代码但需要快速搭内部工具」的工程师——这个群体规模不大,付费意愿强,且自带传播属性。
GitHub仓库的issue区很说明问题。70%的反馈来自自托管用户,功能请求集中在「更好的IDE体验」和「更多数据库连接器」,而不是「能不能便宜点」。这意味着核心用户已经用脚投票,剩下的只是产品打磨。
一个细节:Windmill的Web IDE支持实时协作,多人同时编辑同一个脚本时,光标位置和修改痕迹像Google Docs一样同步。这个功能在开源工具里极其罕见,通常只有云原生SaaS才会做。
团队把它开源了。代码在GitHub的windmill-labs/windmill仓库里,MIT协议,随便 fork。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.