108 Star 的衣姿 PoseWear:一个不注册、不留 Key 的浏览器 AI 试衣间,我把源码逐行看了
AI 试穿类工具这两年不少,但大多数有两个共同的别扭之处:要么得注册账号、把照片和 API Key 交给别人的服务器;要么是套壳应用,背后做了什么你根本看不见。最近我看到一个反着来的小项目——纯静态、不要后端数据库、密钥全程留在你自己浏览器里。
它叫 衣姿 PoseWear,108 Star、42 Fork,2026 年 10 月底才建仓,MIT 协议。它把姿势、服装、人像三套参考图库和一个浏览器内的 AI 试穿工作台结合起来,用你自己的 API Key 直接出图。我把仓库克隆下来逐行看了源码,这篇讲清楚它怎么运作、隐私设计到底靠不靠谱,以及几个容易被忽略的版权坑。
一、它到底是什么:一个会"生图"的参考图库
先厘清定位。PoseWear 不是又一个大模型,也不是传统意义上的 SaaS,而是一个部署在 Cloudflare Pages 上的纯静态站点,由两部分组成:
- 三套参考图库:姿势(多角度线稿)、深度姿势(热链原站深度图,共 1439 个条目,还附日文原名)、服装(按季节和类型分类)、人像(脸模参考,CC0 协议)。每张图都有中文描述和可复制的中英文提示词。
- 试穿工作台:上传你自己的人物照,挑一套服装和一个姿势,配上模型 API,生成试穿图;也可以不传照片、纯靠文字和参考出图。支持一次多张、前后对比、单张下载和打包下载。

支持四家服务商:OpenAI(gpt-image 系列,走 images/edits 多图参考,审核最严)、Gemini(即 Nano Banana)、豆包 Seedream(国内直连,默认走代理解决跨域)、以及任何 OpenAI 兼容的自定义中转。
二、技术栈:无框架原生 JS,克制得有点复古
在动辄 React/Vue 全家桶的今天,这个项目的技术选型相当清爽。我看了 src/ 目录,前端就是原生 HTML + CSS + JavaScript,没有任何框架:app.js 管图库、搜索、收藏、灯箱和 hash 路由,studio.js 管试穿工作台的服务商适配和生成逻辑,加起来一千来行;离线靠 Service Worker,打包下载用一个很小的 zip 实现,PWA 可安装、可离线打开看过的内容。
构建侧用 Python:build.py 生成缩略图(WebP)、数据文件和独立详情页,post.py 做构建后处理,生成 sitemap、SEO 文件和最关键的 _headers 安全响应头。测试则用 Playwright 拦截各服务商接口,模拟成功、密钥错误、限流、5xx、超时、安全拦截等情况,全程不需要真实 Key。
这种"够用就好、不引入重依赖"的做法,让整个前端可审计性很强——你想知道它拿你的数据干了什么,直接读那几个 JS 文件就行。
三、隐私设计:不是嘴上说安全,是写进代码里的
这是我最想展开讲的部分。对一个要你填 API Key、传真人照片的工具,隐私是底线。我核对了它的实际实现,确实有几道实在的防线。

第一,密钥不上服务器。 API Key 只存在浏览器的 localStorage 里,设置页可以一键清除。默认情况下,浏览器直接请求服务商的官方接口,PoseWear 的服务器完全不经手。
第二,可选代理有四道闸。 只有两种情况会经过它的 /api/proxy Pages Function:你手动开启代理转发,或者用豆包(火山方舟不允许浏览器跨域)。我读了 functions/api/proxy.js,这个代理做了严格限制:校验 Origin/Referer 必须同源;只转发到官方接口域名白名单(OpenAI、Google、火山引擎等),自定义中转必须显式声明且路径符合图片接口格式;拒绝 localhost、127、10.x、192.168 等内网地址和非标准 https;还按 IP 做了 60 秒窗口限流(API 20 次、图片 40 次)。注释里明确写着"只转发、不记录、不存储任何请求内容或密钥",返回头也带 no-store。
第三,严格的 CSP。 post.py 生成的内容安全策略把 connect-src 限定在那几家厂商域名,object-src 设为 none 禁止插件,frame-ancestors 设为 none 防止被别人 iframe 嵌套点击劫持,脚本还走哈希白名单。这意味着即便页面被注入恶意脚本,也很难往外发数据。
第四,数据全在本机。 收藏、最近使用、生成历史都存在 IndexedDB,支持导入导出和删除撤销,没有账号体系,自然也没有后端数据库能泄露你的东西。
当然,代码层面再严谨,在公共电脑上用完手动清一下 Key 仍然是必要的习惯。
四、“减少误拦截”:一套讲究的双语中性化词表
真人照片配泳装、内衣这类服装,最容易撞上各家的内容安全审核。PoseWear 默认开启一个"减少误拦截"功能,我觉得它的实现思路值得单独说。

在 studio.js 里有一个 NEUTRAL 数组,本质是中英文两套正则替换表,只改写发给服务商的提示词措辞,完全不碰你选的服装、姿势和参考图。比如:“性感/火辣/诱惑"替换成"时尚/stylish”,“紧身”→“修身”、“低胸”→“V 领”、“露背”→“开背设计”,“比基尼/泳装”→“泳池边时装”,“情趣内衣/内衣”→“内搭/loungewear”,而"裸露/裸体"这类词直接删除。替换后还会统一套上一段专业电商试穿的框架提示词,强调"成年人、完整穿着、款式颜色剪裁一致、姿势自然"。
这个设计的分寸感很好:它降低的是正常穿搭被机审误判的概率,而不是帮助绕过审核——README 里也明说,真正违规的内容该拦还是会被拦,被拦了建议换服务商或换服装。而且这个功能可以一键关闭、按原文发送,选择权在你。
五、祛魅:轻量好用,但这几个坑必须知道

先说使用门槛。 仓库本身不包含任何图片素材,想自己部署得先跑 scripts/fetch-assets.py 从原作者图库下载,数据量达数 GB、耗时较长,然后才能 build.py 构建。生成图片的费用按你选的服务商从你自己账户扣,PoseWear 本身不收费,通常每张半分钟左右。审核方面 OpenAI 最严,Gemini 和 Seedream 相对宽松。
再说最容易踩的版权坑,这点务必分清。 项目的 MIT 许可只覆盖代码、页面文案和构建脚本,不覆盖任何图片和数据:
- 姿势线稿和服装图版权归原作者 @giaaibusi,原站没有标注开放许可,想转载、商用或二次分发必须先联系作者;
- 深度姿势图是页面热链原站、根本不进仓库,仓库里只有文本元数据和中文译名;
- 人像是 AI 生成的虚构人物、CC0 协议(可商用、无需署名),但原作者希望不要原样批量转载,也明确不能用来冒充真人;
- 自己部署时需要保留页面里的来源与作者说明。
另外它很年轻(10 月底才建仓),生态和成熟度还在早期,路线图里的增量更新素材、生成记录导出等功能尚未完成。
我的判断
PoseWear 打动我的不是功能多炫,而是它的克制和坦诚:用无框架的原生代码把可审计性做到位,把密钥和数据牢牢留在用户侧,把代理和 CSP 的安全规则摊开给你看,连素材版权的边界都在 README 里讲得一清二楚,没有含糊其辞。
对需要快速产出穿搭参考、又不愿意把照片和 Key 交给陌生平台的电商运营、自媒体和设计师,它是一个相当顺手且安心的工具;想自部署也因为是纯静态站而成本极低。但要理性预期:它是一个轻量参考工具而非全能设计平台,素材商用授权、模型调用费用这些仍需你自己把关。如果你认同"数据最小化、本地优先"这套理念,这个项目值得 star 一份慢慢研究。