云计算百科
云计算领域专业知识百科平台

【AI】我用 WorkBuddy 做了一个微信小程序:拿「Offer 体验站」讲清 AI 开发怎么上手

🫧个人主页:小年糕是糕手

💫个人专栏:《C++》《数据结构》《Blender 修行笔记》《AI》

🎨你不能左右天气,但你可以改变心情;你不能改变过去,但你可以决定未来!


目录

一、先看成品:我到底想解决什么问题?

二、第一版为什么要重来?因为“工具”和“社区”差得很远

还有三个要求,需要在开发中反复守住

三、开发前需要准备什么?先把几个环境分清楚

“前端不用装 npm 包”,不等于“整个项目没有依赖”

四、第一轮开发,先让三页之间真正走得通

每次给 AI 一个可以验收的小任务

五、拆开“给建议”:一个按钮后面到底发生了什么?

1. 打开界面

2. 读取输入并检查

3. 更新本地数据

4. 云函数处理写入

5. 其他用户读取更新

这里还有一个本地开发版的真实缺口

六、最典型的一次返工:页面成功了,数据库为什么没成功?

为什么前端看起来没事?

出问题时,怎样让 AI 帮忙查?

七、页面变暗却点不动:一次看起来像逻辑错误的样式问题

八、能在模拟器里打开,还会遇到哪些上线问题?

1. 工具文件被一起打进小程序包

2. 调用了内容安全接口,却漏了云调用权限

3. 演示数字混进了正式界面

九、功能做完以后,还可能卡在资质和审核上

十、结案和“我的”页,为什么放在主流程之后?

十一、这个项目还没有完善的地方,也应该讲清楚

十二、第一次用 AI 做项目,可以照这个顺序完成一个小版本

第一步:写清一个人要做的一件事

第二步:先做三页和一份演示数据

第三步:接入自己的云环境

第四步:用两个测试账号检查主流程

第五步:故意制造几种失败

第六步:再处理上传、审核和下一轮功能

给 AI 的任务,最好有一个明确的结束条件

十三、写在最后


页面已经弹出“提交成功”,数据库里却找不到刚才写入的数据。

这是我开发「Offer 体验站」时遇到的一个真实问题。

前端没有明显报错,页面也能正常操作。继续排查,才发现云函数写入数据时,把数据库的 _id 字段也塞进了更新内容,导致部分操作一直失败。

在这之前,我还遇到过另一种情况:点击“给建议”,页面变暗了,弹层却怎么也点不动。看起来像功能没实现,最后发现只是两段样式用了相同的类名,遮罩盖到了弹层上面。

这些问题,比“AI 几分钟生成一个首页”更值得写下来。

前面的文章聊过个人开发的工作流程。这一篇,我想拿自己用 WorkBuddy 开发的微信小程序做一次具体复盘:怎样把想法交给 AI,第一版为什么会做偏,怎样接上后端,以及一个看起来能用的页面,距离真正上线还有哪些工作。

如果你也想做一个自己的小程序,可以跟着这篇文章先完成一条小流程,再逐步扩展。

阅读说明

目前线上版本是 0.3.5,已经通过申诉并正式发布;本文同时检查了本地尚未发布的 0.4.0 源码,涉及开发版的问题会单独说明。

完整开发聊天没有保留。下文的提示词根据真实需求和返工经历重新整理,供读者参考,不是当时对话的逐字记录。

配图用于说明界面与操作,不能据此推算真实用户数量或业务规模。补拍的建议弹层、结案页和“我的”页来自本地开发版。

一、先看成品:我到底想解决什么问题?

「Offer 体验站」想做的是一个职业选择社区。

一个人拿到 Offer,真正纠结的内容,往往不止薪资:

  • 新工作多给了几千块,但每天要多通勤两个小时,值不值得?
  • 现在的岗位没什么成长,不过领导允许自己照顾家人,要不要走?
  • 两份工作,一份收入高,一份更稳定,怎么选?
  • 面试时说得很好,真正入职以后又是什么样?

这些问题很难靠一个分数回答。

我的想法是,让当事人把自己的处境说出来,再由有相似经历的人补充信息、给一句建议。等做出选择、真正入职之后,还能回来记录后续。

首页因此应该先展示别人正在纠结的事情。

广场界面:读者先看到具体处境,再决定是否参与讨论。

项目还有一个我比较坚持的前提:

不评判职业贵贱。蓝领、骑手、店员和白领,都应该有适合自己处境的表达方式。

所以发布时没有只围绕白领设计表单,而是分成七类职业:

职业类别需要关注的部分信息
白领专业岗 月薪、成长、团队、通勤、生活平衡
蓝领技能岗 到手收入、工时、吃住、社保、技能成长
灵活用工 收入波动、结算周期、平台规则、押金
体制内 编制性质、服务期、地域成本、晋升路径
制造业技工 底薪与加班费、倒班、订单稳定、工作环境
服务业 底薪提成、排班休息、体力强度、顾客压力
自由职业/其他 客户来源、收入波动、时间自主、成本垫资

这些分类会影响发布字段和评价维度。

例如,讨论工厂岗位时,“倒班制度”“宿舍食堂”可能很重要;讨论自由职业时,照搬“晋升速度”就不合适了。

发布入口:先选择职业类别,再展示相应字段。

现在的项目还包括树洞、工作瞬间、Offer 对比和入职记录等模块。但如果你第一次做项目,先别照着这个功能数量开工。

这篇文章只抓住一条主线:

看到别人的纠结 → 进入详情 → 写一条建议。

先把这条线做完整,就已经会碰到页面、交互、数据、身份和后端几个关键环节。

二、第一版为什么要重来?因为“工具”和“社区”差得很远

我最初描述需求时,说自己想做一个帮助大家判断 Offer 的产品。

第一版生成出来,方向偏向了工具:

填写几个条件,然后得到一个结论。

它有输入,也有结果,单看页面不能说没有完成任务。但这和我想做的社区差了很远。

我要的是首页上有人发问、有人讨论,后来的人还能看到选择的后续。一个自动计算结果的页面,承载不了这些事情。

这次返工让我意识到,给 AI 的需求里,不能只有“做一个什么产品”,还得写清楚:

用户进来以后,第一眼看见什么,接着做什么,最终留下什么。

下面是根据这次经历整理的一版需求提示词:

我要开发一个微信小程序,项目名叫“Offer 体验站”。

它是职业选择社区。

用户可以匿名描述“这个 Offer 要不要接”或“A、B 两份工作怎么选”,
其他人根据自己的经历提供建议。

首页首先展示用户发布的困惑,不能把首页做成条件输入和评分结果页。

第一阶段只完成三个页面:
1. 广场:展示帖子列表;
2. 详情:展示职业信息、具体困惑和已有建议;
3. 发布:填写一条职业选择困惑。

这一阶段先使用明确标注的演示数据,不接支付,不扩展聊天系统。

业务要求:
– 不要求填写真实公司名称;
– 地点到市级,通勤用分钟表达;
– 祝福和建议分别展示;
– 不同职业使用不同的发布字段;
– 演示数据中的人数、贡献、徽章不能当成真实统计。

先列出页面结构和数据结构,确认后再逐步实现。

这里最有用的部分,是把产品形态和第一阶段范围写明白。

“社区”意味着首页应该有内容流,帖子应该有作者和状态,建议应该属于某条帖子。

“第一阶段只完成三个页面”,则给开发划出一个可以检查的范围。

如果一开始就把广场、投票、树洞、私信、入职曲线、通知全部交给 AI,最后可能得到很多页面,却很难判断哪一条流程已经真正接通。

还有三个要求,需要在开发中反复守住

第一,祝福、建议和对比不能混成一个评论区。

“恭喜你”与“这份工作的夜班安排需要再确认”,承担的是不同作用。混在一起,真正有用的信息容易被刷下去。

第二,职业分类必须影响实际字段。

分类按钮换了颜色,后面的表单却完全一样,这种实现没有解决问题。

第三,不收集真实公司名称,也要检查其他输入入口。

发布页没有“公司名称”字段,不代表自由输入的正文里就不会出现。产品约束需要进入输入提示、检测和后续处置流程。

这些都是具体的验收条件,不能只写在最初的需求里。

三、开发前需要准备什么?先把几个环境分清楚

这个项目采用的是:

微信原生小程序 + 微信云开发。

前端使用 WXML、WXSS 和 JavaScript,没有采用 uni-app、Taro 等跨端框架。

后端使用云数据库和云函数。

对新手来说,可以先这样理解:

部分负责的事情
WXML 页面上有哪些内容和控件
WXSS 颜色、间距、布局、弹层等样式
JavaScript 点击以后做什么,怎样处理数据
云函数 在服务端处理写入、身份检查等操作
云数据库 保存不同用户需要共享的数据
微信开发者工具 编译、预览、调试、上传小程序
WorkBuddy 辅助读写项目文件、实现功能和定位问题

这里容易产生一个误会:

AI 生成了项目文件,不等于云端也已经配置好了。

如果你准备从头做一个自己的小程序,可以按下面的顺序准备:

  • 准备自己的小程序账号与 AppID,并先了解计划提供的服务对应什么类目。
  • 安装微信开发者工具,创建或导入原生小程序项目。
  • 让 WorkBuddy 在这个明确的项目目录里工作。
  • 先让页面编译通过,确认导航和基本交互。
  • 创建自己的云开发环境,配置环境 ID。
  • 部署需要的云函数及依赖,再验证数据库读写。
  • 每一步都应该有一个看得见的结果。

    例如,完成第五步以后,你应该知道前端连接的是哪个云环境;完成第六步以后,你应该能从云函数日志和数据库里找到一次测试操作的结果。

    “前端不用装 npm 包”,不等于“整个项目没有依赖”

    这个项目的前端根目录没有 package.json,也没有额外引入第三方 UI 框架。

    但云函数使用了官方的 wx-server-sdk;截图自动化脚本也有独立的 Node.js 依赖。

    因此,更准确的说法是:

    原生小程序前端没有额外的 npm 安装步骤,云函数和开发辅助工具仍有各自的依赖。

    另外,项目配置里的 3.5.5 是微信小程序的基础库版本,不是组件库版本。

    这些名词看起来琐碎,但如果写错,新手很容易在错误的位置寻找问题。

    四、第一轮开发,先让三页之间真正走得通

    如果重新带一个新手做这个项目,我会先让他完成以下内容:

    页面这一轮需要做成什么
    广场 能展示帖子,点击后进入对应详情
    详情 能读到正确帖子,能打开建议编辑层
    发布 能填写必要信息,校验后生成一条本地帖子

    这一轮使用演示数据没有问题,前提是明确知道它属于哪一层。

    例如:

    • 点击卡片,进入的是不是刚才那一条?
    • 切换职业后,表单字段有没有变化?
    • 缺少必填项时,能不能继续发布?
    • 返回广场以后,本地新增的帖子有没有出现?
    • 自己和别人的帖子,底部操作是否不同?

    这些问题不需要等后端完成后再检查。

    每次给 AI 一个可以验收的小任务

    比如,实现详情页建议弹层时,可以这样描述:

    这一轮只处理详情页的“给建议”功能,不修改其他页面。

    预期行为:
    1. 查看别人的帖子时,底部显示“给建议”;
    2. 点击后打开编辑弹层;
    3. 弹层包含身份、判断、可选评分和一句建议;
    4. 点击遮罩能关闭弹层;
    5. 关闭后,页面恢复正常操作;
    6. 查看自己的帖子时,不允许给自己提建议。

    先接通弹层交互,暂时不要提交云端数据。

    完成后说明:
    – 修改了哪些文件;
    – 点击后经过哪些方法;
    – 我应该按什么步骤验收。

    比起一句“把详情页做完善”,这段要求更容易检查。

    AI 修改完以后,你也不需要凭整体观感判断。照着六条点一遍,就能知道这一轮有没有完成。

    五、拆开“给建议”:一个按钮后面到底发生了什么?

    目前的建议编辑层包含身份、判断、评分和文字输入。

    本地 0.4.0 开发版:通过实际点击打开弹层,填写的是演示草稿,没有发送。

    从用户视角看,操作很短:

    打开弹层,写一句话,点击发送。

    从代码视角看,它至少要经过几个不同阶段。

    1. 打开界面

    详情页根据当前帖子是否属于自己,展示不同按钮。

    自己的帖子可以进入结案;别人的帖子可以打开建议编辑层。

    点击“给建议”后,页面把 showComposer 改为 true,WXML 再根据这个状态显示遮罩和弹层。

    这一层做成了,只能说明按钮和界面已经接通。

    2. 读取输入并检查

    提交方法会读取建议内容,处理前后空格,再检查长度和本地内容规则。

    这些检查能改善体验,但客户端可以被绕过。需要由服务端执行的检查,不能只在前端做一次。

    3. 更新本地数据

    当前项目使用了先更新本地、再同步云端的方式。

    提交方法中,有这样一段代码:

    store.addAdvice(this.id, {
    tag: this.data.tags[this.data.tagIndex],
    useful: 0,
    scores: scoreText,
    text: r
    });

    这里的几个字段分别来自身份选项、评分结果和建议正文。

    store.addAdvice() 会把建议加入本地帖子,保存到本地存储,并在启用云端时放入待同步队列。

    4. 云函数处理写入

    待同步队列通过云开发封装调用 write 云函数。

    云函数再进行服务端内容检查,将建议追加到对应帖子的建议列表,并更新建议数量。

    5. 其他用户读取更新

    其他用户需要通过后续同步,才能读取云端保存的结果。

    因此,一个完整的验收,不能停在当前手机上。

    你需要检查:

    另一位测试用户重新进入这条帖子后,能不能看到刚才提交的建议。

    这里还有一个本地开发版的真实缺口

    这次检查源码时,我发现:弹层里已经可以选择“倾向接”“倾向拒”等判断,但当前这条提交代码只把身份、评分和正文传给了 store.addAdvice()。

    判断选项还没有接入这条保存链路。

    这个问题属于本文检查的本地 0.4.0,不能据此判断线上 0.3.5 的情况。

    它说明了一件很具体的事:

    控件能够被选中,不代表选中的值已经保存。

    以后让 AI 做表单,可以加上这样一条要求:

    请逐项核对表单字段:
    页面状态里有什么,
    提交参数里有什么,
    服务端接收了什么,
    数据库最终保存了什么。

    不要只检查控件能不能点击。

    如果不做这一步,一张看起来很完整的截图,会掩盖不少数据问题。

    六、最典型的一次返工:页面成功了,数据库为什么没成功?

    这个项目里,最容易误导人的问题是“静默失败”。

    页面没有崩溃,用户也看到了成功提示,但部分云端写入实际上没有完成。

    当时发现的错误写法,可以简化成下面这样:

    // 错误写法示意
    await db.collection('reactions').doc(id).set({
    data: {
    _id: id,
    kind,
    refId,
    value
    }
    });

    这里已经通过 .doc(id) 指定了文档,又把 _id 放进待写入内容,触发了:

    -501007:不能更新 _id 的值

    修订后的写法,把文档标识和业务字段分开:

    // 片段示意:省略了数据库初始化及参数处理
    await db.collection('reactions').doc(id).set({
    data: {
    kind,
    refId,
    value,
    at: Date.now()
    }
    });

    官方的 Document.set 示例同样通过 .doc(…) 指定文档,并在 data 中传入业务字段。还需要注意,`set` 用于设置或替换整条记录;只更新部分字段时,应结合 update 的用途判断,不能机械地互换。微信官方文档:Document.set

    这个错误影响到的,不只是某一张页面,还包括留痕、互动和处置等写入操作。

    为什么前端看起来没事?

    因为当前代码中,页面更新和云端成功是两件事。

    它会先修改本地数据,再把操作放进同步队列。页面也会很快显示提示。

    这种处理可以让操作更流畅,但如果同步失败没有清楚展示出来,用户就容易把“本地已经显示”理解成“服务器已经保存”。

    因此,排查时要分别看:

    检查位置能说明什么
    页面出现新内容 当前界面的数据变了
    本地存储存在记录 当前设备保存了数据
    云函数返回明确成功 这次服务端处理报告成功
    数据库出现对应记录或更新 云端数据发生了变化
    另一个测试账号能读取 跨用户读取链路得到验证

    这几项不能互相替代。

    尤其不要看到一句“提交成功”,就跳过后面的检查。

    出问题时,怎样让 AI 帮忙查?

    我更建议把症状和范围一起提供:

    现象:
    前端显示提交成功,本地也能看到变化,
    但云数据库没有出现预期记录。

    已知错误:
    -501007,不能更新 _id 的值。

    请检查所有使用 doc(id).set() 的位置:
    1. 是否把 _id 放进了 data;
    2. 调用失败后,错误有没有被上层吞掉;
    3. 前端成功提示是否依赖云端返回结果。

    先列出问题位置和影响范围,再做最小修改。
    不要顺手重构整个数据层。

    错误码、涉及的方法、前后端观察结果,比“提交有问题,帮我修一下”更有用。

    七、页面变暗却点不动:一次看起来像逻辑错误的样式问题

    另一个很有代表性的 Bug,发生在“给建议”弹层。

    点击按钮后,页面变暗了,但用户无法正常操作弹层。

    排查后发现,样式文件里出现了重复的 .mask 定义。后面的规则把遮罩的 z-index 改成了 100,而建议弹层只有 11。

    于是:

    遮罩:100
    弹层:11

    遮罩位于弹层上方,把点击挡住了。

    这类问题很容易让人查错方向:反复检查点击事件、提交方法,甚至重新生成页面,真正的问题却只是叠放顺序。

    当前代码中,建议遮罩与弹层的层级是:

    .mask {
    position: fixed;
    z-index: 10;
    }

    .sheet {
    position: fixed;
    z-index: 11;
    }

    祝福面板则使用单独的 .bless-mask 和 .bless-sheet,避免再与建议面板共用同一个遮罩样式。

    这个修复不能只靠看代码确认。

    要实际检查:

  • 点击入口后,弹层是否出现;
  • 选项和输入区域能否操作;
  • 点击遮罩能否关闭;
  • 关闭后,底层页面能否继续使用;
  • 另一个弹层有没有受到影响。
  • 这次补拍建议截图时,也先通过真实按钮打开弹层,再填写演示草稿。直接把页面状态改成“显示弹层”,只能检查展示效果,无法证明入口按钮正常。

    八、能在模拟器里打开,还会遇到哪些上线问题?

    开发过程中,有几类问题不会直接体现在页面上,但会影响上传和运行。

    1. 工具文件被一起打进小程序包

    有一次上传失败,是因为项目里的工具目录没有排除,一个约 196MB 的安装包也被带进了打包范围。

    这个时候,继续压缩按钮图标解决不了主要问题。

    应该先检查:

    最终上传的文件里,为什么会有与小程序运行无关的内容?

    项目后来在 project.config.json 的打包配置里,排除了工具、文档和开发日志等目录。

    最小配置示意如下:

    {
    "packOptions": {
    "ignore": [
    {
    "type": "folder",
    "value": "_tools"
    },
    {
    "type": "folder",
    "value": "docs"
    },
    {
    "type": "folder",
    "value": ".workbuddy"
    }
    ]
    }
    }

    packOptions.ignore 的作用是让符合规则的文件或目录跳过打包;规则中的路径以配置的小程序目录为根。配置后仍应检查实际打包结果。微信官方文档:项目配置文件

    2. 调用了内容安全接口,却漏了云调用权限

    项目还遇到过 msgSecCheck 调用不正常的问题,排查原因之一是云函数目录缺少权限声明。

    调用该接口的云函数,需要相应的 config.json:

    {
    "permissions": {
    "openapi": [
    "security.msgSecCheck"
    ]
    }
    }

    微信官方文档明确要求,各云函数声明自己需要调用的接口,上传云函数时会根据配置更新权限。微信官方文档:云调用

    这里不能只检查文件有没有写。

    部署后还要确认调用结果,并区分:

    • 内容检测通过;
    • 内容被判定需要拦截或进一步处理;
    • 接口调用本身失败。

    接口没有正常返回,不能直接理解为“内容没有问题”。

    当前开发代码里仍有接口异常时降级放行的处理,这也是后续需要收紧的部分。面向公开内容的产品,更合理的处理是明确失败或进入待审核状态,并记录异常原因。

    3. 演示数字混进了正式界面

    早期有一处数据把 viewing 写死为 1,于是卡片会显示类似“1 人正在评”的信息,但这个数字并不来自真实行为。

    默认用户资料也出现过类似问题:昵称、贡献值、徽章共用一套演示对象。

    这些内容在做界面时很方便,到了正式版本里,却会被用户当成真实信息。

    因此,正式使用前需要逐项清理:

    • 没有真实统计来源的人数;
    • 写死的贡献、采纳次数;
    • 自动附送的演示徽章;
    • 开发时为了填满页面而准备的示例内容。

    项目后来把新用户统计归零,并按设备标识生成本地初始昵称。

    不过,设备标识只适合承担本地初始化等用途,不能替代账号认证。服务端仍需通过微信身份识别操作者,再判断谁有权修改数据。

    九、功能做完以后,还可能卡在资质和审核上

    这个项目的发布经历,也值得提前告诉准备做小程序的人。

    0.3.1 曾通过审核并发布。后来的 0.3.5 一度被驳回,当时给出的原因涉及个人主体与“社交—笔记”类目。

    之后进行了申诉,目前 0.3.5 已申诉成功并正式发布。

    这是一段具体项目经历,不能推导成“个人主体都可以发布同类功能”,也不能保证其他项目采用同样做法会得到相同结果。

    对新手更有用的提醒是:

    类目和主体条件应该在开发前了解。

    不要等所有页面写好,才第一次确认自己的账号能不能提供这类服务。

    可以先把产品的实际行为整理出来:

    • 用户是否公开发布内容;
    • 是否有评论、投票或其他互动;
    • 内容由谁审核和处理;
    • 是否涉及收费;
    • 计划提供的服务与所选类目是否一致。

    这些问题会影响产品怎么设计,也会影响后续提交什么说明。

    AI 能帮助整理功能和材料,但不能替平台决定审核结果。

    十、结案和“我的”页,为什么放在主流程之后?

    在职业选择社区里,收到建议并不是故事的终点。

    一个人最后接了哪份工作,为什么这样选,入职后又有什么变化,都能帮助后来处境相似的人。

    因此,项目增加了结案入口。

    本地开发版的结案表单,尚未提交。当前没有可供补拍的本人已结案记录,因此没有生成虚构复盘卡。

    “我的”页则用于集中查看自己发布和参与的内容。

    本地开发版的“我的”页。界面中的连接状态和计数,不能替代对具体写入结果的检查。

    这些功能都值得做,但没有必要抢在最前面。

    如果“别人看不到我发布的帖子”还没解决,继续增加结案卡、徽章和曲线,只会让项目变得更难排查。

    比较合适的顺序是:

    先能发布,再能被别人看到;先能收到建议,再记录最后的选择。

    每扩展一步,都建立在上一条流程已经接通的基础上。

    十一、这个项目还没有完善的地方,也应该讲清楚

    目前本地项目包含 16 个页面、5 个底部 Tab,以及 login、`sync`、`write`、`moderate`、`notify`、`purge` 六个云函数。

    按本次检查范围,JS、WXSS 和 WXML 合计约 1.6 万行。

    不过,这些数量无法说明项目是否可靠。

    这次检查已经能看到几项需要继续完善的工作:

    第一,补齐表单字段的保存链路。

    例如前面提到的判断选项,不能只停在页面状态里。

    第二,把本地成功和云端成功分开表达。

    当前待同步队列会重试网络类失败,但达到重试次数后会移除操作;服务端明确拒绝时也会移除待同步项。本地展示还需要与这些结果对应起来。

    更清楚的状态应该是“正在提交”“已保存”“未通过检查”或“提交失败”,并给用户提供可以理解的处理方式。

    第三,完善异常和审核状态。

    服务端检查失败、接口调用失败和网络失败,需要分别处理。

    这次截图也没有执行发送建议或确认结案,所以它验证的是入口、页面和草稿展示,不能冒充一次完整的线上写入验收。

    我希望这篇复盘呈现的是一个确实在开发、发布和继续修改的项目,而不是把页面截图包装成所有功能都已经验证完成。

    十二、第一次用 AI 做项目,可以照这个顺序完成一个小版本

    如果你现在准备打开 WorkBuddy,不必一开始就复刻「Offer 体验站」的全部功能。

    先完成下面六步。

    第一步:写清一个人要做的一件事

    比如:

    用户发布一个职业选择困惑,另一个用户可以看到,并给出一条建议。

    这句话要能对应到实际操作。

    “打造一个有温度的职业平台”可以成为愿景,但不足以直接指导开发。

    第二步:先做三页和一份演示数据

    完成广场、详情、发布。

    这一轮只检查页面和导航,不把演示数据显示成功当成后端已经完成。

    第三步:接入自己的云环境

    配置环境,部署云函数,确认调用日志。

    先让一条测试记录进入数据库,再扩大写入范围。

    第四步:用两个测试账号检查主流程

    账号 A 发布,账号 B 查看并给建议,再由 A 读取结果。

    使用两个不同的测试账号,才能检查跨用户共享和权限边界。仅仅换一台设备,不一定代表换了用户。

    这一步建议使用测试环境和明确的测试内容。

    第五步:故意制造几种失败

    至少试一次:

    • 网络不可用;
    • 必填内容为空;
    • 内容检查拒绝;
    • 查看或操作不属于自己的记录;
    • 重新进入页面后读取结果。

    你需要知道失败时用户看见什么,数据停在哪里,以及能不能重试。

    第六步:再处理上传、审核和下一轮功能

    检查打包范围、配置、主体与类目,再准备体验和提交。

    每完成一个可用节点,就做一次版本提交或备份。下一轮即使被 AI 改坏,也能回到已知可用的状态。

    给 AI 的任务,最好有一个明确的结束条件

    我现在更建议采用下面这个结构:

    目标:
    这次只完成什么功能。

    现场:
    当前看到什么现象,有什么日志或错误码。

    范围:
    允许检查和修改哪些页面、方法、配置。

    验收:
    我要经过哪些操作,看到什么结果,才算完成。

    边界:
    哪些文件不能动,哪些操作不能真实提交。

    比如,不要只说:

    帮我把社区完善一下。

    可以改成:

    修复详情页建议弹层无法操作的问题。先检查点击事件和遮罩层级,只修改相关页面。完成后验证打开、输入、关闭和再次打开,不发送建议,不修改数据库。

    任务越具体,AI 越容易沿着已有项目继续工作,你也越容易发现它有没有改偏。

    如果它拿不到开发者工具或云函数日志,就把错误码、相关日志和预期结果提供给它。继续生成代码,不能替代缺失的现场信息。

    做完「Offer 体验站」,我对 AI 开发最深的体会,来自那些不起眼的检查:按钮点下去有没有反应,选中的字段有没有传出去,云端有没有保存,另一个人能不能读到。

    如果你今天也准备开始一个项目,先给自己定一个小目标:

    让一位测试用户提交的内容,在另一位测试用户重新进入页面后,仍然能正确显示。

    把这一步做扎实,再去增加投票、曲线、徽章和更多页面。你会更清楚自己已经完成了什么,也更容易知道下一次该让 AI 帮你做什么。

    十三、写在最后

    回头看「Offer 体验站」的开发,最初的想法其实很简单:一个人拿不定主意的时候,能找到有相似经历的人,听一句具体的建议。后面增加的职业分类、Offer 对比、结案和入职记录,都是围绕这件事慢慢展开的。

    WorkBuddy 帮我把不少想法变成了页面和代码,也让我更早遇到了那些只有动手才会碰到的问题。第一版把社区做成了判断工具,需要重新说明产品方向;页面提示成功,数据却没有入库,需要顺着调用链查日志;弹层点不动,需要回到样式里检查遮罩。这些问题最终都落到了一个个可以定位、可以修改的细节上。

    经过这次开发,我觉得新手最值得练习的,是把模糊的要求说清楚,把眼前的异常描述准确,再亲手检查修改后的结果。你不需要一开始就读懂整个项目,但应该逐渐知道:这个按钮调用了什么方法,这份数据保存在哪里,出了问题该去哪里找线索。每弄明白一处,下一次和 AI 协作时,就能少一些猜测。

    这也是我愿意把返工过程写出来的原因。只展示成品,很容易让人以为开发是一条顺畅的直线。实际做起来,需求会变,代码会出错,已经完成的功能也可能需要重新调整。遇到这些情况,可以先缩小问题范围,保住已经能用的部分,再一步步往前推进。

    「Offer 体验站」还有需要继续完善的地方。这篇文章记录的是它已经走过的一段路,也希望给准备动手的人一个具体参照。如果你也有一个想做很久的小项目,可以先挑出其中最有用的一件事,借助 AI 把它实现,再请一个真实的人试着用完。

    当对方能顺利完成操作,并告诉你哪里方便、哪里别扭时,下一步该做什么,往往就清楚了。

    在这篇博客我想说,其实这个小程序就是一个中午我在图书馆突发奇想,然后花了3h就完成的一个半成品吧,现在还不是很成熟,但是我想说的是,现在开发的门槛确实被降低了很多,大家要是有自己的想法肯定要去动手比较好,看再多的教程、学再多的知识,只要不动手,那就没有意义,app的开发我觉得和这个小程序其实也是有相似的地方的,游戏的开发则会更加难一点,他涉及到了美术资源、动画等等,有机会我也会写博客,给大家带来一个教程,教大家如何快速上手


    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 【AI】我用 WorkBuddy 做了一个微信小程序:拿「Offer 体验站」讲清 AI 开发怎么上手
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!