独立开发实战:我用 AI 给宝宝写了个“宝贝穿衣助手”小程序

43 阅读8分钟

关键词:微信小程序、独立开发、AI 辅助编程、算法产品化、育儿工具

适用人群:想做一个“工具型”小程序、对“规则数字化”感兴趣、或正在探索 AI 辅助编程(Claude Code/Codex/Qoder/Trae 等)的开发者。

1. 背景:为什么要自己造轮子?

1.1 真实育儿痛点

自从家里有了宝宝,“今天穿多少?”就成了每天早上的灵魂拷问。 尤其是换季或天气多变的时候:

  • 天气预报的误导:同样是 15°C,晴天无风 vs 阴雨大风,体感完全是两个季节。
  • 个体差异:新生儿、好动的幼儿、怕冷的小孩,对温度的需求截然不同。
  • 场景切换:家里有暖气 24°C,出门只有 5°C,怎么穿能方便穿脱且不着凉?
  • -能够手动编辑温度:根据用户输入的实际温度进行推荐。

1.2 市面产品的不足

搜了一圈市面上的工具,发现主要分两类:

  1. 通用天气 App:只给“穿衣指数”(如“建议穿毛衣”),太笼统,无法针对宝宝月龄定制。
  2. 母婴公众号/文章:只有静态的“穿衣公式”(如“洋葱穿衣法”),需要家长每天自己查天气、做加减法,不仅麻烦还容易算错。

1.3 程序员的解决方案

作为习惯了“万物皆可量化”的程序员,我决定把这些模糊的**“育儿经验”“体感直觉”**,翻译成一套可运行、可验证的代码规则。

于是就有了这个小程序:基于实时天气 + 个人体质 + 场景(室内/外),自动计算出精确到“件”的穿衣与盖被建议。

2. 核心思路:把“经验”重构为“算法”

这个项目的核心不是 UI,而是背后的决策引擎。我将其拆解为四个步骤:

Step 1: 环境标准化(不再只看气温)

天气预报的温度只是基础。引入了一个 adjustTemperature 函数,综合了以下因子计算“体感温度”:

  • 风力修正:大风天体感温度显著下降(风寒效应)。
  • 湿度修正:高湿会让冷更冷(湿冷)、热更热(桑拿天)。
  • 室内补偿:如果用户选择“室内”,则根据是否有暖气/空调进行温度补偿(通常 +3~5°C)。宝宝天气好随时需要出门。

Step 2: 用户画像参数化

“宝宝怕冷”不能只靠感觉。

  • 年龄权重:月龄越小,基础代谢调节能力越弱,需要的保暖权重越高。算法里将 0-3 岁拆分成了 5 个细分阶段。
  • 体质偏好:引入 sensitivity 参数(怕热/标准/怕冷),对最终推荐结果进行非线性微调。

Step 3: 量化“穿衣法则” (The 26°C Rule)

采用了崔玉涛“26°C 穿衣法则”作为基准公式:

所需保暖度 = 26°C - 当前体感温度 + 年龄补偿

例如:体感 16°C,宝宝 3 个月大(补偿 +1°C),则需要补齐的温差为 26 - 16 + 1 = 11°C

Step 4: 动态规划与规则约束

有了“所需温差”,剩下的就是从衣柜里凑出这个数吗? 不全是。单纯的数字相加可能会得出“穿 5 件短袖”这种异常结论。因此引入了分层系统约束引擎

  • 分层:打底层 (Base) -> 保暖层 (Insulation) -> 外层 (Outer) -> 配饰 (Accessory)。
  • 约束
    • 连体衣与裤子互斥。
    • 外层厚度必须 >= 内层(避免内厚外薄导致不适)。
    • 极寒天气最多 3-4 层,避免臃肿。
    • 必须有且只有一件外层(除非极热)。

3. AI 辅助开发实战:效率与质量的平衡

这个项目主要利用 Codex + Qoder 完成的。闲鱼买了Claude Code中转服务最近不太稳定且有点贵,如果从0到1开发一个项目token消耗不起,结合最近AI编码经验:找一个稳定的国产模型(IDE)解决日常问题 + 国外顶级模型解决架构或bug难题。

3.1 那些 AI 帮大忙的时刻

  • 规则引擎的快速原型: 我向 AI 描述:“写一个函数,输入温度、风力、湿度,输出体感温度。参考炎热指数和风寒指数公式。” AI 瞬间给出了包含复杂数学公式的实现,我只需要微调参数。
  • 繁琐数据的生成: 衣物数据库(clothingData.js)包含几十种衣物的温度值、图标路径、适用年龄。我给了一个样例,AI 帮我扩充了剩下的 90%,并自动补全了英文 key 和中文描述。
  • 正则与校验: 表单验证、时间格式化等“脏活累活”,交给 AI 几乎零失误。

3.2 那些 AI “翻车”的教训(以及如何解决)

  • 逻辑漏洞: 初期 AI 写推荐逻辑时,容易出现死循环或推荐为空。 解决:我引入了 Property-based Testing (性质测试)。利用 fast-check 库生成数千组随机天气数据,狂测 AI 写的函数,一旦抛出异常或返回空,就抓出来修复。这是保证算法健壮性的关键。
  • 上下文丢失: 当文件变大,AI 容易忘记之前的约束(比如“连体衣不能配裤子”)。 解决模块化。我把核心算法拆分到独立文件,每次只让 AI 关注一个小函数,而不是把整个 app.js 扔给它。
  • 幻觉: AI 偶尔会编造不存在的小程序 API。 解决:始终以官方文档为准,AI 给的代码必须在真机/模拟器跑通才算数。

3.3 我的“人机协作”最佳实践

  1. :定义接口(Input/Output)、设计数据结构、编写测试用例、制定业务规则(比如“什么是合理的穿衣”)。
  2. AI:填充函数实现、生成样板代码、编写单元测试、优化变量命名。
  3. :Code Review、真机体验、调整参数手感。

4. 项目结构与预览

4.1 目录结构

保持了原生小程序的简洁:

clothes-weather/
├── pages/              # 视图层
│   ├── index/          # 首页 (核心算法调用 + UI展示)
│   ├── guide/          # 科普页 (静态展示)
│   └── profile/        # 设置页 (宝宝档案管理)
├── utils/              # 逻辑层 (核心)
│   ├── clothing.js     # 推荐算法引擎
│   ├── clothingData.js # 衣物数据库
│   └── weather.js      # 天气服务适配器
├── images/             # 静态资源 (部分走云存储)
└── ...

4.2 效果预览

image.png

4.3 小程序二维码

gh_413d72725a09_258 (2).jpg

5. 实现细节

5.1 天气与定位:高德 SDK 的接入与兜底

项目选用了 高德地图微信小程序 SDK 作为核心数据源,它能提供精准的逆地理编码(坐标转城市)和详细的实时/预报天气数据。 但在实际开发中,第三方接口可能会不稳定,或者用户拒绝授权定位。

  • 策略
    1. 优先高德定位:调用 amap.getWeather 获取实时数据。
    2. 缓存降级:若定位失败,自动读取缓存的“上次定位城市”。
    3. 默认兜底:若缓存也失效,则降级为默认城市(如“北京”)。
    4. UI 保护:接口彻底挂了?展示“数据更新失败”,并尝试用历史数据或估算数据填充,坚决避免白屏。

5.2 资源管理:微信云开发 (Cloud Base) 的 CDN 实践

小程序主包大小有着严格的 2MB 限制,而高清的衣物和床品图片是“体积大户”。 我接入了 微信云开发 (Cloud Base) 的存储能力,将所有静态资源上传至云端。

  • 接入方式:在小程序后台开通云开发,直接控制台上传图片,获取 CDN 链接。
  • 代码实现:本地代码只保存图片的文件名(如 coat_thick.png),运行时动态拼接云存储的前缀域名。
  • 效果:主包体积被压缩到了几百 KB,且图片加载享受微信生态内的 CDN 加速,体验极佳。

5.3 “换一套”功能的算法实现

用户常问:“我没这件羽绒服怎么办?” 算法实现:

  1. 计算当前推荐方案的总保暖值(如 +12°C)。
  2. 在衣物库中寻找其他组合,只要总值在 [11.5, 12.5] 区间内,且不与当前方案重复,即为有效替代。
  3. 这样给出的不是“标准答案”,而是“参考范围”。

6. 后续规划

  1. 多宝模式:支持切换不同宝宝的档案(二胎家庭刚需)。
  2. 库存管理:用户可以勾选“我有哪些衣服”,算法只在拥有的衣服里推荐(避免推荐了买不到的款)。
  3. 更智能的学习:用户如果手动修改了推荐(比如把薄外套换成了厚外套),算法记录下来,下次微调该用户的体质参数。

7. 写在最后

当发现 AI 可以帮你把脑子里的“模糊经验”快速变成手中的“精准工具”时,编程的乐趣就被放大了。希望这篇文章能给你一些灵感,无论是做个小程序,还是写个脚本,去解决你身边的问题吧!

8. 参考资料

  • 高德地图微信小程序 SDK:提供了强大的定位与天气数据支持,详见 高德开放平台
  • 微信云开发 (WeChat CloudBase):免服务器运维,轻松实现图片云存储与 CDN 加速,详见 官方文档

关于作者:LZG,全栈开发者,新手奶爸。喜欢折腾技术,也喜欢探索 AI 开发的边界。