我用 AI 写了一个体重记录 App —— Electron 桌面版 + 微信小程序,数据全跑在云上
没写一行后端代码,没配一台服务器,全程跟 AI 对话就把活干了。
先看成品
四张截图,一目了然:
Bmob 云数据库后台
数据库里就一张表,5 条记录,全是 AI 帮我自动建的。

桌面版 + 小程序开发工具同屏
左边是深色军工风的桌面 App,右边是浅色卡片风的小程序,但背后连的是同一张云表。

桌面版全屏

小程序全屏

我做了什么?我几乎什么都没做
整个过程就是对话:
• "帮我写一个体重记录的 Electron 桌面应用,数据存 Bmob 云数据库" • "再加个体重曲线图" • "再做一版微信小程序,用同一个 Bmob 表" • "给我写篇文章总结整个开发过程"
AI 完成了:
WeightRecord 表,字段 weight/note/date | |
我一个程序员都没雇,一个 StackOverflow 都没搜。
技术栈
三者打通的效果:电脑上录入 → 手机上看曲线,手机上记 → 电脑上出统计,数据和图表实时同步。
云数据库:Bmob 后端云
选 Bmob 的理由很简单:它是国内能用的、不需要信用卡的、有免费额度的后端云服务。
域名陷阱(AI 帮我踩出来的)
按照网上能找到的教程,Bmob REST API 域名是 api2.bmob.cn。AI 一试,死活连不上。自己排查才发现:这些老域名全部失效了,新的统一入口是:
https://api.codenow.cn这个变化在官方文档里藏得很深。
鉴权方式的坑
Bmob 有三种 Key,AI 先用 REST API Key 尝试写数据,一直报 401 unauthorized。换 Master Key 就通了。个人工具直接用 Master Key,最简单。
数据封装代码
AI 生成的 bmob.js 不到 50 行,增删查全齐:
const Bmob = { appId: '675124e20063916575ac2d11b78c5e79', masterKey: '4143d064e66ba8afda511e5e6e092682', baseUrl: 'https://api.codenow.cn', headers() { return { 'X-Bmob-Application-Id': this.appId, 'X-Bmob-Master-Key': this.masterKey, 'Content-Type': 'application/json' } }, async request(method, path, body) { const res = await fetch(this.baseUrl + path, { method, headers: this.headers(), body }) const data = await res.json() if (!res.ok) throw new Error(data.error || res.statusText) return data }, async list() { const data = await this.request('GET', '/1/classes/WeightRecord?order=createdAt&limit=500') return data.results }, async add(weight, note) { return this.request('POST', '/1/classes/WeightRecord', { weight, note }) }, async remove(objectId) { return this.request('DELETE', `/1/classes/WeightRecord/${objectId}`) }}没有 ORM,没有依赖,就是 4 个 HTTP 动词。AI 的思路很清晰:够用就好,别引入多余的复杂度。
Electron 桌面版:从零到安装包
网络障碍:国内开发 Electron 的三座大山
AI 在装 Electron 的时候就踩坑了。总结下来三条:
- npm 版本问题
:系统自带的 npm 有 bug,必须切换到独立安装的 Node - NODE_ENV 环境变量
:系统级设了 production→npm install静默跳过 devDependencies → electron 跟 electron-builder 全装不上 - GitHub 下载超时
:electron 二进制包托管在 GitHub,国内几乎必败 → 必须配 npmmirror 镜像
AI 自动生成了 .npmrc:
registry=https://registry.npmmirror.comelectron_mirror=https://npmmirror.com/mirrors/electron/electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/以及一键安装脚本(已发布为开源 skill:electron-cn-dev)。
Canvas 曲线图
让 AI 在深色军工风面板上画体重变化折线图:
• Y 轴自动适配数据范围 • 荧光青 #06b6d4折线 + 发光晕影• 半透明网格 + 坐标轴 • 数据锚点圆圈
整个 Canvas 绘图代码是 AI 一行行写的,包含 DPI 适配和窗口缩放重绘。
打包成安装包
AI 说跑这一条命令:
npx electron-builder --win --x64出来一个 77MB 的 体重记录 Setup 1.0.0.exe,安装到系统程序目录,桌面快捷方式自动生成。
微信小程序版:同一份数据,另一个入口
同一个 Bmob 数据库,AI 又基于微信小程序框架重新实现了一遍。
wx.request 适配
小程序没有 fetch,AI 用 wx.request 封装了完全等价的调用:
bmobRequest(method, url, data = null) { return new Promise((resolve, reject) => { wx.request({ url, method, header: { 'X-Bmob-Application-Id': this.globalData.bmobAppId, 'X-Bmob-Master-Key': this.globalData.bmobMasterKey }, data, success:res => res.statusCode < 300 ? resolve(res.data) : reject(res), fail: reject }) })}回调用 Promise 包一层,页面层就能用 async/await,和桌面版一样的写法。
Canvas 2D 适配
小程序的 Canvas API 是新版 type="2d" 的写法,获取节点的方式和网页不同,但折线图的绘制逻辑完全复刻了桌面版。
页面结构
┌─────────────────────────┐│ 📊 最新体重:145kg │ ← 蓝色渐变卡片├─────────────────────────┤│ 📈 体重变化趋势 │ ← Canvas 2D 折线图├─────────────────────────┤│ [输入体重______] [记录] │ ← 录入区├─────────────────────────┤│ 历史记录(5) 清空 ││ 145kg 08-02 删除 ││ 156kg 08-02 删除 ││ ... │└─────────────────────────┘AI 连微信开发者工具的 urlCheck: false 都帮忙配好了——开发阶段不检查域名白名单。
两版对比
fetch | wx.request | |
核心代码高度一致——数据封装几乎一模一样,图表逻辑直接移植,只是框架的"壳"不同。
AI 帮我踩过的坑
- Bmob 域名失效
: api2.bmob.cn→api.codenow.cn,AI 自己排查出来的 - REST API Key 不能写数据
:401,必须换 Master Key - npm 三重地狱
:自带的 npm 有 bug + NODE_ENV=production+ GitHub 下不动 - PowerShell 编码
:UTF-8 vs UTF-8 BOM,脚本换地方就跑炸 - Bmob 没有批量删除
:得先查列表再并发删 - 小程序 Canvas 2D
:API 和网页不一样
这些坑如果让我自己去排查,每一条都能耗掉半天。AI 一边开发一边踩,踩完接着干。
我的感受
整个过程,我是一个提需求的人,AI 是干活的人。
我只要说"我要什么",它就去查文档、写代码、跑测试、打包、报错了自己排查、修完继续。我连 npm install 都没亲手敲过一行。
三个项目、两套前端、一个云数据库,从想法到成品,全程对话完成。
如果你也想试试用 AI 开发自己的小工具:
说清楚你要什么——"记录体重,能看曲线,多端同步" 让 AI 推荐技术栈——它会告诉你 Electron 还是小程序、Bmob 还是 Supabase 把 API Key 给它——它可以自己连数据库建表测接口 一直对话——它写代码,你验收,有问题反馈,它自己修
源码都在本地:
workspace/weight-record-electron/(桌面版)、workspace/weight-record-miniapp/(小程序版)。国内网络安装工具已开源:electron-cn-dev。
夜雨聆风