「每天早上站在衣柜前发呆 10 分钟」——这不是段子,是很多人的日常。
我在解决什么问题
穿衣搭配是高频但低效的决策。你可能也经历过这些场景:
衣柜塞满了,但总觉得「没衣服穿」 买了新衣服回家,发现和衣橱里 80% 的单品搭不上 出门前临时搭一套,到了公司才发现配色违和 旅行打包全凭感觉,到了目的地才发现少带了关键单品
「合适」 就是来解决这些问题的。它不是又一款穿搭推荐 App——它围绕 你自己的衣橱 来工作,AI 的建议基于你真正拥有的衣服,而不是商家想卖给你的。
核心功能一览
1. 智能衣橱管理
拍照或从相册选图,AI 自动抠图去除背景,并识别品牌、颜色、类别。你只需要确认一下,单品就归入你的数字衣橱了。
每件单品支持品牌、材质、花纹、季节标签、价格、购买链接等字段。衣橱不足 5 件时,首页会智能推荐基本款补充缺口。
2. 穿搭编辑器(试衣间)
把衣橱里的单品拖拽到画布上,自由排列组合。支持:
拖拽 & 缩放:手势操作,所见即所得 背景切换:纯色 / 渐变 / 自定义图片 贴纸 & 文字:15 种 PNG 透明贴纸 + 6 色可换文字 穿搭统计:一键查看单品数量、穿着次数、日均穿着率 购买链接:给单品添加购买链接,下次想回购直接跳转
3. AI 造型师
和 AI 聊天式交互,支持:
搭配推荐:「帮我搭一套约会穿的衣服」——AI 会从你的衣橱里挑单品组合 穿搭评价:拍一张穿搭照上传,AI 给出配色、风格、场合适配度评分 旅行打包:输入目的地和天数,AI 帮你从衣橱里选出最精简的打包清单 衣橱缺口:分析你的衣橱,告诉你缺什么类型的基本款
AI 造型师支持 18 种 Persona(9 女 + 9 男),每种有不同的风格视角。
![]() | ![]() |
4. AI 色彩分析
上传一张自拍,AI 会:
分析你的面部特征 检测匹配的色系 根据体型进行微调 输出专属调色板 + 穿搭建议
再也不纠结「我是冷皮还是暖皮」了。
5. 日历穿搭记录
在日历上标记每天穿了什么,支持月视图和日视图。久而久之,你能看到自己的穿衣习惯——哪些单品穿了 30 次,哪些买回来就一直吃灰。
6. 分享穿搭
![]() | ![]() |
7. 收藏夹 & 归档
把不常穿的单品归档(不删除),需要时一键恢复。收藏夹支持自定义命名,按风格/场合分类管理。
开发过程中踩过的坑
坑 1:微信小程序的 <Input type="nickname"> 审核机制
微信提供了原生昵称组件,用户点击「使用微信昵称」后,微信会先做一轮审核,审核通过后才通过 onNicknameReview 事件返回最终值。不是onInput 或 onBlur。
如果只监听 onInput,用户选了微信昵称但输入框里还是空的——因为审核还没过。这是文档里没有明确说明的细节。
坑 2:云数据库安全规则默认全开
微信云开发默认允许客户端直接读写数据库。也就是说,如果不手动配置安全规则,用户可以通过 wx.cloud.database() 绕过所有云函数直接操作数据。
我们最终将所有集合的权限设为 { read: false, write: false },强制所有数据访问走云函数。
坑 3:NoSQL 注入——不只是一个理论
在 comments 查询中,where.targetId 如果直接接受前端传入的对象(如 { $ne: null }),可以绕过 openid 过滤,导出全库评论。
修复方案是在云函数中新增 sanitizeWhere() 函数,递归拒绝所有以 $ 开头的键。
坑 4:AI 图片 URL 的 SSRF 风险
用户可控的 imageUrl 如果直接传入 axios.get(),攻击者可以请求 http://169.254.169.254/ 获取云服务器元数据。
我们新增了 validateImageUrl() 函数,强制 https:// + 拒绝内网 IP,还做了 DNS 预解析安全检查防止 DNS Rebinding。
坑 5:积分并发超扣
最初积分扣减是先查余额再减,存在竞态条件:两个请求同时读到余额=1,都判断够扣,结果扣成了 -1。
修复为原子操作:where({ openid, aiCredits: _.gte(amount) }) + _.inc(-amount),查询和扣减在同一次事务中完成。
坑 6:upload 路径穿越
原始 sanitizePath 函数的签名中包含了 openid,但从未在结果路径中强制使用,用户可以上传到任意路径。
修复后强制结果路径以 uploads/${openid}/ 开头,同时禁止 .. 穿越和绝对路径。
修复的问题清单
上线前我们做了两轮集中修复:
Phase 1(紧急,5 项):
移除设置页面 5 处误导性「页面正在开发中」文案 单品收藏按钮接入真实收藏逻辑 OOTD 评论按钮接入评论页 AI 评价移除硬编码随机回复的 Mock 兜底
Phase 2(核心功能,7 项):
单品详情页支持添加购买链接 穿搭详情页接入真实统计面板 通知中心改为真实数据源 穿搭编辑器增加文字 & 贴纸功能 个人资料分享页生成真实小程序码 首页基本款推荐改为动态筛选
安全修复(7 项):
NoSQL 注入防护 云数据库安全规则配置 AI 函数积分限制 SSRF 防护 Upload 路径隔离 creditHistory 客户端写保护 私密穿搭越权修复
诚实的不足
说了这么多做好的,也必须承认还没做好的。「合适」还远不是一个完成品。
AI 还不够「懂你」
AI 造型师目前还无法在聊天中直接引用你的衣橱单品。当你说「用我那件白衬衫搭一套」,AI 其实不知道你的白衬衫长什么样。附件面板中的「服装」和「收藏」入口还是空的——这是体验上最大的缺口。
AI 试穿:最难也最让人期待的功能
上传自拍 → 选择衣物 → AI 生成换装效果图。这是用户问得最多的功能,也是技术上最有挑战的。混元大模型的换装 API 还在验证效果,暂时没有开放。
色彩分析可以更深
目前的色彩分析给出了一张调色板,但缺少「这些颜色和你衣橱里哪些单品匹配」「你的衣橱缺什么色系」这类更深度的洞察。素材已经准备好了(33 种材质、8 种花纹),代码还没接。
衣橱管理还比较「平」
缺少多维度筛选(品牌/材质/颜色/季节)、缺少可视化的衣橱统计(环形图、分类占比、穿搭价值)。insights 页面有了数据基础,但呈现方式还是列表为主,不够直观。
深色模式:有开关,没灵魂
设置里有「浅色/深色/跟随系统」的切换入口,但大量页面的样式并没有做暗色适配。切到深色模式后,部分页面可能看着有点奇怪。
积分充值和专业版
新用户送 9 积分,但花完了就没了。积分充值的代码已经写好,却因为缺少微信支付商户号无法上线。专业版订阅同样需要企业资质。
社交功能空白
没有社区动态流,没有「搭配在一起」的协作玩法,通知系统也只合成了积分记录。如果你期待的是一个小红书式的穿搭社区,「合适」目前给不了。
但正因为有这些不足,才有迭代的方向。 每一个缺口,都是下一次更新的动力。
未来展望
短期(已在排期):
AI 造型师附件选择器:在聊天中直接选择衣橱单品作为上下文 商品搜索 & 网页剪辑:粘贴淘宝链接自动抓取商品信息 材质/花纹选择器接入:33 种材质 + 8 种花纹素材已就绪 收据拍照导入:OCR 识别 → 自动创建单品
中期:
AI 试穿:自拍 + 衣物 → AI 换装效果图 衣橱过滤器系统(品牌/材质/颜色/季节多维度筛选) 衣橱统计可视化(环形图 + 分类占比 + 穿搭价值) 深色模式全面适配 互动通知(点赞/评论/关注提醒)
长期:
会员订阅 & 积分充值体系 社区动态流(搭配在一起) 和时尚品牌/电商的合作推荐 多平台扩展(H5 / App)
技术栈
写在最后
做「合和适」的初心很简单:让 AI 基于你真实拥有的衣服给你建议,而不是让你买更多不需要的东西。
它现在还不完美。AI 还不够懂你,试穿还没上线,深色模式只是个半成品,社交功能还是空白。但每一行代码都在让它离「完美」更近一步。
如果你也每天早上在衣柜前发呆,欢迎试试「合和适」。不完美,但合适。
夜雨聆风



