<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>小程序 on CoreV.cn</title>
        <link>https://corev.cn/categories/%E5%B0%8F%E7%A8%8B%E5%BA%8F/</link>
        <description>Recent content in 小程序 on CoreV.cn</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-CN</language>
        <copyright>CoreV.cn</copyright>
        <lastBuildDate>Wed, 26 Aug 2026 17:08:33 +0800</lastBuildDate><atom:link href="https://corev.cn/categories/%E5%B0%8F%E7%A8%8B%E5%BA%8F/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>让用户天天回来：签到、成就、订阅</title>
        <link>https://corev.cn/articles/06-signin-achievement-subscribe/</link>
        <pubDate>Tue, 11 Aug 2026 20:30:00 +0800</pubDate>
        
        <guid>https://corev.cn/articles/06-signin-achievement-subscribe/</guid>
        <description>&lt;p&gt;工具类小程序最怕的不是难用，是&amp;quot;忘了用&amp;quot;。这事儿没人提醒，用户自己也想不起来。所以留存不是顺带的，得专门设计。&lt;/p&gt;
&lt;p&gt;我做这套留存的时候，还是靠 WorkBuddy 加腾讯混元（hy3）搭的。先说清楚，我不是程序员，在能源行业干了二十多年。下面这三件套，我试过，你照着也能弄出来。&lt;/p&gt;
&lt;h2 id=&#34;一留存靠两样东西给甜头给提醒&#34;&gt;一、留存靠两样东西：给甜头、给提醒
&lt;/h2&gt;&lt;p&gt;第一样是连续签到加成就页。我定的里程碑是 3、7、15、30、60、100 天，代码里就这么写的：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// growth/checkin/checkin.js
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;MILESTONES&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;30&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;60&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;MILESTONE_NAMES&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;青铜打卡&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;7&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;一周达人&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;15&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;半月坚持&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;mi&#34;&gt;30&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;月度之星&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;60&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;双月不渝&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;百日坚守&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;第二样是订阅消息，把人&amp;quot;唤&amp;quot;回来。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;想不出招的话，把这句给 AI：&lt;br&gt;
&amp;ldquo;我的小工具上线后没人回来用，帮我想 3 个不惹人烦的留存手段：短期激励、长期荣誉、定时提醒。&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我自己的体会：签到给的是当下那点甜头，成就给的是&amp;quot;我好像坚持得不错&amp;quot;的面子，提醒解决的是&amp;quot;压根忘了&amp;quot;的问题。三样各管一摊，缺一样都不够。&lt;/p&gt;
&lt;h2 id=&#34;二成就系统把进步做成看得见的徽章&#34;&gt;二、成就系统：把&amp;quot;进步&amp;quot;做成看得见的徽章
&lt;/h2&gt;&lt;p&gt;我在 &lt;code&gt;growth/utils/achievements.js&lt;/code&gt; 里定义了一组成就，到了阈值自动解锁：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 累计记录 10 次 → 小有坚持；连续签到 30 天 → 月度之星……
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;ACHIEVEMENTS&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;first_record&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;初次记录&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;  &lt;span class=&#34;nx&#34;&gt;icon&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;🌱&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;threshold&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;records_100&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;  &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;百炼成钢&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;  &lt;span class=&#34;nx&#34;&gt;icon&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;💪&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;threshold&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;streak_30&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;    &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;月度之星&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;  &lt;span class=&#34;nx&#34;&gt;icon&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;🌟&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;threshold&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;30&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;types_3&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;      &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;多面手&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;    &lt;span class=&#34;nx&#34;&gt;icon&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;🎯&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;threshold&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;我琢磨成就这东西，本质是给人一点反馈。你天天记，自己其实没感觉，可一旦蹦出个&amp;quot;百炼成钢&amp;quot;的徽章，你会觉得&amp;quot;哎我这几个月的劲没白使&amp;quot;。人就是需要被看见。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;让 AI 帮你设计也行：&lt;br&gt;
&amp;ldquo;帮我把用户用我工具这件事，设计成一套成就体系：列 5 个低成本、能激励人持续用的成就点和解锁条件。&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;三订阅消息选型这里有个合规的坑&#34;&gt;三、订阅消息选型：这里有个合规的坑
&lt;/h2&gt;&lt;p&gt;说个容易踩的坑。习惯类、工具类的小程序，不在长期订阅开放的类目里（那是政务、医疗、交通那些）。长期订阅你想申请也申请不下来。&lt;/p&gt;
&lt;p&gt;所以「简单记」用的是一次性订阅：每次要提醒之前，用户授一次权，授权完发对应模板（真实模板 ID 在 &lt;code&gt;utils/subscribe.js&lt;/code&gt;）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// utils/subscribe.js —— 一次性订阅，授权 1 次 = 1 条额度
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;SUBSCRIBE_TPL&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;todo&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;     &lt;span class=&#34;s1&#34;&gt;&amp;#39;afe51P28qgCDkaqcdPCiVS6_Hx0qTJgwif1igUKSv_E&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;// 待办事项提醒
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;schedule&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;O2_iBBWk4EkwD2tUoCJXsQk4Me3zNxKFWsRaaYRhCcs&amp;#39;&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// 日程提醒
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;定时下发靠 &lt;code&gt;dailyReminder&lt;/code&gt; 云函数，每 15 分钟扫一遍昨天的记录，对着&amp;quot;昨天这会儿&amp;quot;的窗口才发，再用 &lt;code&gt;reminder_log&lt;/code&gt; 去重，免得同一条提醒发两遍。还有个细节，云函数之间互相调用拿不到 OPENID，所以 &lt;code&gt;dailyReminder&lt;/code&gt; 得显式指定 &lt;code&gt;touser&lt;/code&gt; 才发得出去。&lt;/p&gt;
&lt;p&gt;我建议先看清自己属于哪个类目再动手。类目压根不在长期订阅开放范围里，却按长期订阅的思路先把功能搭好，等提交审核才发现走不通，前面下的功夫全白费。&lt;/p&gt;
&lt;p&gt;自动化这事儿，不是写好就完。得想明白：什么时候发、发给谁、发重了怎么办。&lt;/p&gt;
&lt;h2 id=&#34;四做留存之前先过一遍这张清单&#34;&gt;四、做留存之前，先过一遍这张清单
&lt;/h2&gt;&lt;p&gt;截图存着，以后设计任何&amp;quot;让人回来&amp;quot;的机制前扫一眼：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;✅&lt;/th&gt;
          &lt;th&gt;留存设计自查&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;有短期甜头吗？（签到/打卡）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2&lt;/td&gt;
          &lt;td&gt;有长期荣誉吗？（成就/徽章）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;3&lt;/td&gt;
          &lt;td&gt;有&amp;quot;遗忘&amp;quot;的补救吗？（提醒，且合规）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;4&lt;/td&gt;
          &lt;td&gt;选型符合平台类目吗？（别碰长期订阅红线）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;5&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;每次，我都是自己验收的吗？&lt;/strong&gt;（这条最要命）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;收官&#34;&gt;收官
&lt;/h2&gt;&lt;p&gt;回头看这 6 篇，其实是一条线：&lt;br&gt;
想清楚（1）→ 让 AI 提效（2）→ 设计骨架（3）→ 数据双引擎（4）→ 接大脑（5）→ 做留存（6）。&lt;/p&gt;
&lt;p&gt;我在能源行业干了二十多年，此前从未碰过写代码。如今却弄出了个带 AI 的小程序，这事放以前我想都不敢想。难的不是写代码，那部分 AI 替我扛了；难的是你得想明白自己到底要什么、做完怎么让人愿意用。这个，AI 替不了你。&lt;/p&gt;
&lt;p&gt;路不是自动铺好的。方向你定，活 AI 干，走没走偏你自己看。&lt;/p&gt;
&lt;p&gt;还有一条红线我得提一句：分享是做出来的，不是求来的。别去诱导用户转发，先把产品价值做够，该被看见的自然会被看见。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>给小程序装大脑：接上大模型</title>
        <link>https://corev.cn/articles/05-cloud-function-llm/</link>
        <pubDate>Sat, 08 Aug 2026 09:30:00 +0800</pubDate>
        
        <guid>https://corev.cn/articles/05-cloud-function-llm/</guid>
        <description>&lt;p&gt;数据我记了不少，可光看那一串数字，真看不出啥名堂。跑步记了、睡眠记了、花钱也记了，但谁有功夫天天对着表格琢磨？我当初一笔一笔认认真真记，本来就是想弄明白自己这段时间到底怎么样，可光把数存下来，它自己不会开口说话。&lt;/p&gt;
&lt;p&gt;后来我就想，要是这小程序能像老朋友一样，翻完全部记录后跟我说一句：&amp;ldquo;你这周跑步三次都达标了，但睡眠连着三天晚过 11 点，下午犯困八成跟这个有关；再说记账里外卖比上周多花八十，刚好撞上你运动量往下掉——这俩事儿说不定连着。&amp;rdquo; 那才叫真有用。想做到这点，得给程序接个大模型当&amp;quot;大脑&amp;quot;。&lt;/p&gt;
&lt;p&gt;说实话，这块我一开始是真发怵。大模型听着就吓人，什么 API、什么密钥、什么 token。但我最后还是用 WorkBuddy 配上腾讯的混元（hy3）把它跑通了。我得说清楚，我不是程序员，在能源行业干了二十多年，写代码这事儿以前碰都不碰。所以下面写的这些，你照着来也能成。&lt;/p&gt;
&lt;h2 id=&#34;一头一条密钥千万别放进小程序里&#34;&gt;一、头一条：密钥千万别放进小程序里
&lt;/h2&gt;&lt;p&gt;我见过有人把 API Key 直接写进小程序代码。这等于把家门钥匙贴在门上，谁拿到安装包反编译一下，密钥就泄露了。&lt;/p&gt;
&lt;p&gt;我的办法是用微信云开发的云函数 &lt;code&gt;aiAnalyze&lt;/code&gt;，密钥交给云开发环境托管。小程序只管调这个函数，密钥长什么样它根本不知道。前端就这么一行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// utils/aiClient.js —— 小程序这头只管&amp;#34;调函数&amp;#34;，密钥一个字都不出现
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;wx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;cloud&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;callFunction&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;aiAnalyze&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;data&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;summary&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;聚合后的统计&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;context&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;rangeLabel&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;timeout&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;60000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;我后来想通一件事：前端代码对用户来说是透明的，就像明信片，谁都能看。所以密钥这种东西，只能待在服务器那一头。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;想试的话，直接把这句话丢给 AI：&lt;br&gt;
&amp;ldquo;我要让我的小工具调大模型，但怕密钥泄露。告诉我密钥该放哪、前端怎么调才安全。&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;二调用那点事都是踩出来的坑&#34;&gt;二、调用那点事（都是踩出来的坑）
&lt;/h2&gt;&lt;p&gt;环境是 CloudBase 加 @cloudbase/node-sdk 的 &lt;code&gt;app.ai()&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;真实在跑的代码是这样：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 云函数 aiAnalyze：先把模型对象建好，再调用
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;ai&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ai&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;ai&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;createModel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;cloudbase&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;res&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;generateText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;hy3&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;messages&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;我在这栽过俩跟头，你别重蹈：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;有回写成 &lt;code&gt;app.ai().streamText(...)&lt;/code&gt;，跑不起来。后来才明白，streamText 这些方法是在 &lt;code&gt;model&lt;/code&gt; 上，不在 &lt;code&gt;app.ai()&lt;/code&gt; 上。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;@cloudbase/node-sdk&lt;/code&gt; 得 &lt;code&gt;&amp;gt;=3.16.0&lt;/code&gt;，版本低了直接报错，我对着屏幕愣了半天。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;模型我用的是腾讯混元 hy3，效果够用。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;给 AI 的提示词可以这么写：&lt;br&gt;
&amp;ldquo;我用 CloudBase 的 app.ai() 调大模型，给我一段最小可运行代码，再列三个最容易踩的坑。&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;三让-ai-吐结构化数据别吐作文&#34;&gt;三、让 AI 吐&amp;quot;结构化数据&amp;quot;，别吐&amp;quot;作文&amp;quot;
&lt;/h2&gt;&lt;p&gt;这一步是我自己拍板改的，挺关键。原来我用了 towxml 库加一个 decode 页面来渲染 AI 返回的 Markdown，后来一琢磨不对：小程序里塞个解析库，又占地方又容易崩。我干脆把那套删了，让模型只返回固定格式的 JSON，比如 &lt;code&gt;{ title, highlights[], suggestions[] }&lt;/code&gt;，我拿过来直接画卡片。&lt;/p&gt;
&lt;p&gt;云函数里是这么约束它的：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 系统提示词里把结构写死，模型只能往里填；再用 extractJson 兜底提取
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;result&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;extractJson&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;raw&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;   &lt;span class=&#34;c1&#34;&gt;// 前端不用再解析一遍
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// result: { title, highlights:[...], suggestions:[...] }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;为啥非得结构化？因为散文式的回复，你还得再写代码去拆，拆着拆着就容易出错。让它直接给你表格，省一层麻烦。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;提示词参考：&lt;br&gt;
&amp;ldquo;我要让 AI 返回固定格式的数据而不是文章，给我一个用提示词强制输出 JSON 的写法，并说明怎么防止它乱加废话。&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;四不写代码也能用让-ai-帮你写周报&#34;&gt;四、不写代码也能用：让 AI 帮你写周报
&lt;/h2&gt;&lt;p&gt;怕你觉得上面这些只对写程序的有用，我找个纯办公、不用写代码的例子收个尾，写周报。&lt;/p&gt;
&lt;p&gt;套路一模一样：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;安全：&amp;ldquo;别把公司密钥贴进任何文档，用公司允许的 AI 工具处理。&amp;rdquo;&lt;/li&gt;
&lt;li&gt;调用：&amp;ldquo;把本周干的事丢给 AI，让它总结。&amp;rdquo;&lt;/li&gt;
&lt;li&gt;结构化：&amp;ldquo;按&amp;rsquo;做了啥 / 亮点 / 下周计划&amp;rsquo;三栏返回，别写成长文。&amp;rdquo;&lt;/li&gt;
&lt;li&gt;验收：&amp;ldquo;一条条对，它编的删掉，漏的你自己补上。&amp;rdquo;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;你看，代码一行都不用会。你只要会&amp;quot;给 AI 派活 + 验收结果&amp;quot;，安全配置、数据分析、结构化处理等技术活AI都能替你完成。&lt;/p&gt;
&lt;h2 id=&#34;五接-ai-之前先过一遍这张清单&#34;&gt;五、接 AI 之前，先过一遍这张清单
&lt;/h2&gt;&lt;p&gt;建议截图存着，以后给任何工具接大模型前扫一眼：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;✅&lt;/th&gt;
          &lt;th&gt;接 AI 前自查&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;密钥在服务器端吗？前端一个字都不出现？&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2&lt;/td&gt;
          &lt;td&gt;调用方式抄对了吗？（方法在哪个对象上、SDK 版本够不够）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;3&lt;/td&gt;
          &lt;td&gt;让 AI 返回固定结构了吗？（别要散文）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;4&lt;/td&gt;
          &lt;td&gt;它给的 output，你逐条核对了吗？&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;5&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;每次，我都是自己验收的吗？&lt;/strong&gt;（这条最要命）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;收尾&#34;&gt;收尾
&lt;/h2&gt;&lt;p&gt;AI 是把写程序的门槛削低了，可&amp;quot;怎么接才安全、接完怎么拿到能用的东西&amp;quot;，这俩问题还是得你自己拿主意。&lt;/p&gt;
&lt;p&gt;下一篇聊最后一环：功能有了、脑子也有了，怎么让人&amp;quot;天天回来用&amp;quot;。签到、成就、订阅消息，我下回细说。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>小程序也能秒开：本地缓存&#43;云端备份</title>
        <link>https://corev.cn/articles/04-local-cache-cloud-backup/</link>
        <pubDate>Thu, 06 Aug 2026 20:30:00 +0800</pubDate>
        
        <guid>https://corev.cn/articles/04-local-cache-cloud-backup/</guid>
        <description>&lt;p&gt;打开 App 卡在加载超过三秒，用户往往就直接关掉了。&lt;/p&gt;
&lt;p&gt;记录类工具最怕两件事：一是慢（打开半天刷不出来），二是丢（换手机或重装，记录全没了）。我做「简单记」时，在这上面花了最多心思。&lt;/p&gt;
&lt;p&gt;这套数据层，是我用 WorkBuddy 加腾讯混元（hy3）一点点调出来的。我本来不是程序员，在能源行业干了二十多年，写代码是半路出家。下面这套&amp;quot;本地为主、云端兜底&amp;quot;的取舍，你照着做，也能做出自己的小工具。&lt;/p&gt;
&lt;p&gt;说白了就是一件事：怎么既保住本地的快、离线可用，又拿到云端的跨设备、不丢失。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;一矛盾本地快但不跨设备云上全但不实时&#34;&gt;一、矛盾：本地快但不跨设备，云上全但不实时
&lt;/h2&gt;&lt;p&gt;数据存本地，打开秒开、没网也能记。但换手机，记录全没了。&lt;/p&gt;
&lt;p&gt;存云端，哪儿都能看。可一断网就用不了，每次读取还得等网络往返。&lt;/p&gt;
&lt;p&gt;成年人说&amp;quot;我都要&amp;quot;，还真能办到。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;可直接复制的提示词：&lt;/strong&gt;
我的小工具要存数据，帮我对比&amp;quot;只存手机本地&amp;quot;和&amp;quot;只存云端&amp;quot;的优缺点，再给我一个&amp;quot;本地+云端&amp;quot;的折中方案。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;二我的取舍本地为主云端兜底&#34;&gt;二、我的取舍：本地为主，云端兜底
&lt;/h2&gt;&lt;p&gt;核心在 &lt;code&gt;utils/cloudStore.js&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;读取时优先走本地缓存：数据已在手机上，打开即显示、断网也能看。写入时先落到本地存储（同样秒开、离线可用），再由程序在后台悄悄把这份数据镜像到云端，本地写成功就立刻返回，不卡界面、不等网络。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;真实的写入逻辑如下（已做精简，仅保留主干）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 写入：先落本地，再异步镜像云端
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;function&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;set&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;wx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;setStorageSync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;key&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;              &lt;span class=&#34;c1&#34;&gt;// ① 本地先写，秒开、离线可用
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;_openid&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;callSync&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;push&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;payload&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;buildPushPayload&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// ② 再异步推云端，失败进重试队列
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;好处很直白：没网也能记；云端哪怕挂了，本地照常跑。&lt;/p&gt;
&lt;p&gt;先保证&amp;quot;能用&amp;quot;，再追求&amp;quot;同步&amp;quot;，这个顺序不能反。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;可直接复制的提示词：&lt;/strong&gt;
我要&amp;quot;本地优先、云端兜底&amp;quot;地存数据，给我一段最小可运行的写入逻辑，并说明哪一步保证离线可用。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;三跨设备同步先认人是关键&#34;&gt;三、跨设备同步：先认人是关键
&lt;/h2&gt;&lt;p&gt;登录时，&lt;code&gt;app.js&lt;/code&gt; 的 &lt;code&gt;login()&lt;/code&gt; 用 &lt;code&gt;wx.login&lt;/code&gt; 拿到 &lt;code&gt;openid&lt;/code&gt;，绑到全局。&lt;/p&gt;
&lt;p&gt;云端数据按 &lt;code&gt;openid&lt;/code&gt; 分桶——你的记录不会混进我的。&lt;/p&gt;
&lt;p&gt;每次切回前台，做一次&lt;strong&gt;增量 pull&lt;/strong&gt;：只拉差异，不整库重刷。快，还省流量。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;可直接复制的提示词：&lt;/strong&gt;
我的工具要支持多设备，帮我说清楚：怎么识别&amp;quot;这是谁的数据&amp;quot;、怎么只同步变化的部分，而不是每次全量重传。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;同步这事儿，第一步不是传数据，是认出这是谁的数据。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;四一个工程细节记录为什么要拆表&#34;&gt;四、一个工程细节：记录为什么要拆表
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;record_entries&lt;/code&gt; 我拆成了&lt;strong&gt;独立集合&lt;/strong&gt;，每条一文档：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// docId = openid::entryId，存 _openid + date，便于按日期高效扫描
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;docId&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;openid&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;::&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;entryId&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;为什么特意把记录拆成独立集合？因为后面要做&amp;quot;每日定时提醒&amp;quot;，需要按日期高效地一条条扫描。如果这些记录全都混在一个大对象里，定时任务每次都得翻整个库，扫得很慢；拆成独立集合、再给日期建索引，扫描就快了。&lt;/p&gt;
&lt;p&gt;配套加了 &lt;code&gt;reminder_log&lt;/code&gt; 做去重。&lt;/p&gt;
&lt;p&gt;今天的结构，就是给明天的功能留余地。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;五部署前提坑先说清&#34;&gt;五、部署前提（坑先说清）
&lt;/h2&gt;&lt;p&gt;云开发控制台得建几个集合：&lt;code&gt;user_data / users / subscriptions / record_entries / reminder_log&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;云函数 &lt;code&gt;getOpenid&lt;/code&gt;、&lt;code&gt;syncData&lt;/code&gt; 要&amp;quot;云端安装依赖&amp;quot;部署；&lt;code&gt;sendSubscribe&lt;/code&gt; 还得在 CloudBase 控制台把小程序和微信公众平台关联、开通订阅消息权限。&lt;/p&gt;
&lt;p&gt;搭建服务端（建集合、部署云函数、关联权限）是用户完全看不见的准备工作，却替你挡掉了后面大量的联调和报错。这一步没做踏实，前面写得再漂亮，一运行就报错跑不起来。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;六收藏这张数据架构自查清单&#34;&gt;六、收藏这张「数据架构自查清单」
&lt;/h2&gt;&lt;p&gt;截图存下来，设计任何数据存储前扫一遍：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;✅&lt;/th&gt;
          &lt;th&gt;数据架构自查&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;没网时，核心功能还能用吗？（本地为主）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2&lt;/td&gt;
          &lt;td&gt;换设备，数据能跟过来吗？（云端兜底）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;3&lt;/td&gt;
          &lt;td&gt;数据按&amp;quot;谁&amp;quot;分开了吗？（先认人再同步）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;4&lt;/td&gt;
          &lt;td&gt;同步只传变化的部分吗？（增量，别全量）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;5&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;每一次，我都亲自验收了吗？&lt;/strong&gt;（最重要的一条）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;收尾&#34;&gt;收尾
&lt;/h2&gt;&lt;p&gt;数据架构没有标准答案，说到底就是&amp;quot;本地为主、云端兜底&amp;quot;这层取舍。&lt;/p&gt;
&lt;p&gt;下篇：数据齐了，怎么让小程序替我&amp;quot;看&amp;quot;出规律？讲接大模型做智能解读。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>做小程序先别写代码：骨架最关键</title>
        <link>https://corev.cn/articles/03-skeleton-first-datamodel/</link>
        <pubDate>Tue, 04 Aug 2026 20:30:00 +0800</pubDate>
        
        <guid>https://corev.cn/articles/03-skeleton-first-datamodel/</guid>
        <description>&lt;p&gt;很多人做小程序，第一反应是先把界面画漂亮。&lt;/p&gt;
&lt;p&gt;我刚开始也一样，兴致勃勃想先把首页搞得赏心悦目。后来被自己按住了：界面是皮，数据是骨。骨头没搭正，皮再好看也立不住。&lt;/p&gt;
&lt;p&gt;说个底：这套小程序，是靠 WorkBuddy 加腾讯混元（hy3）一点点磨出来的。我本来不是干这行的，在能源行业待了二十多年，写代码的事儿从没碰过。所以下面这套&amp;quot;动手前的准备&amp;quot;，你照着做，也能折腾出自己的小工具。&lt;/p&gt;
&lt;p&gt;动手写代码之前，先把&amp;quot;要记什么数据&amp;quot;想清楚，再让 AI 帮你搭骨架。这道理外行也能懂。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;一先砍功能mvp-不是偷懒是清醒&#34;&gt;一、先砍功能：MVP 不是偷懒，是清醒
&lt;/h2&gt;&lt;p&gt;「简单记」上线初期，我故意只做一个核心功能——&lt;strong&gt;把日常小事随手记下来&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;为什么砍？精力就那么多。先把一个核心闭环做到你每天都想用，比铺一堆用不上的功能强。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;可直接复制的提示词：&lt;/strong&gt;
我要做一个 XX 小工具，脑海里有一堆功能。帮我把它们分成&amp;quot;必须有 / 可以有 / 暂时不要&amp;quot;三档，并说明每一档的理由。别急着写代码。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我把它记成一句话：MVP 是最小可活版本，先验证有人愿意用，再谈功能多不多。&lt;/p&gt;
&lt;p&gt;这一节真正的重点：让 AI 帮你做减法，比做加法难，也更值钱。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;二把我要记的东西翻译成数据&#34;&gt;二、把&amp;quot;我要记的东西&amp;quot;翻译成数据
&lt;/h2&gt;&lt;p&gt;我盘了一遍自己到底要记什么：一件要记的事，得有名字、单位、范围；一次记录，得有哪天、多少、备注。&lt;/p&gt;
&lt;p&gt;落成三张结构（这是 &lt;code&gt;utils/defaultData.js&lt;/code&gt; 里真实的定义）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 记录项类型：名称、单位、范围、步长，都在一处统一定义
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;record_types&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;[{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;unit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;minValue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxValue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;stepValue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;emoji&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;record_items&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;  &lt;span class=&#34;p&#34;&gt;[{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}]&lt;/span&gt;            &lt;span class=&#34;c1&#34;&gt;// 该类型下记什么具体事项
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;record_entries&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;unit&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;date&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;note&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}]&lt;/span&gt;  &lt;span class=&#34;c1&#34;&gt;// 一条条真实记录
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;可直接复制的提示词：&lt;/strong&gt;
帮我把&amp;quot;我想做 XX 工具&amp;quot;翻译成一套数据表：需要哪几张表、每张表有哪些字段（名称/类型/说明）。用大白话，别写代码。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;说白了就一句：先定义&amp;quot;名词&amp;quot;（也就是数据），再定义&amp;quot;动词&amp;quot;（也就是操作）。名词稳了，动词才好写。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;三先结构后界面给-ai-的指令都变了&#34;&gt;三、先结构后界面：给 AI 的指令都变了
&lt;/h2&gt;&lt;p&gt;有了数据模型，我再让 AI 搭页面，说的就不是&amp;quot;做个好看的页面&amp;quot;了。&lt;/p&gt;
&lt;p&gt;而是：&amp;ldquo;按 &lt;code&gt;record_entries&lt;/code&gt; 渲染列表，按 &lt;code&gt;record_types&lt;/code&gt; 出筛选。&amp;rdquo;&lt;/p&gt;
&lt;p&gt;AI 给的东西明显更对路——因为我自己的需求变具体了。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;可直接复制的提示词：&lt;/strong&gt;
基于上面这套数据表，帮我生成页面骨架：需要哪几个页面、每个页面放什么、数据怎么取。先给结构，别一步到位写满功能。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;你越具体，AI 越准。模糊的需求，只会养出模糊的产物。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;四不会编程也能用用这思路理一份周报台账&#34;&gt;四、不会编程也能用：用这思路理一份&amp;quot;周报台账&amp;quot;
&lt;/h2&gt;&lt;p&gt;怕你以为这套只服务于写代码，我拿个纯办公、零代码的场景收尾：做一份自己的周报。&lt;/p&gt;
&lt;p&gt;还是那几步：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;砍功能&lt;/strong&gt;：&amp;ldquo;周报先只记&amp;rsquo;本周做了啥 + 下周计划&amp;rsquo;，别一上来搞 KPI 看板。&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;定数据&lt;/strong&gt;：&amp;ldquo;需要两张表：事项（谁/什么/状态）、计划（下周/负责人）。&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;先结构后界面&lt;/strong&gt;：&amp;ldquo;先用表格把字段定下来，再谈配色和图表。&amp;rdquo;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;你看，连表格公式都不用会，全程就是给 AI 布置任务、再验收结果。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;五收藏这张动手前自查清单&#34;&gt;五、收藏这张「动手前自查清单」
&lt;/h2&gt;&lt;p&gt;截图存下来，动手写任何东西前扫一遍：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;✅&lt;/th&gt;
          &lt;th&gt;动手前自查&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;我先砍掉&amp;quot;可有可无&amp;quot;的功能了吗？（MVP 思维）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2&lt;/td&gt;
          &lt;td&gt;我把&amp;quot;要记什么&amp;quot;翻译成数据表了吗？（先名词后动词）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;3&lt;/td&gt;
          &lt;td&gt;我先要骨架、再要界面了吗？（结构优先）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;4&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;每一次，我都亲自验收了吗？&lt;/strong&gt;（最重要的一条）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;收尾&#34;&gt;收尾
&lt;/h2&gt;&lt;p&gt;一句话：想清楚数据，界面就是水到渠成的事。&lt;/p&gt;
&lt;p&gt;这套思路拿到 Excel 台账、拿到自动化流程上，一样好使。说白了就一句话：先想&amp;quot;记什么&amp;quot;（数据，也就是功能的内核），再想&amp;quot;怎么好看&amp;quot;（界面，也就是美化）。&lt;/p&gt;
&lt;p&gt;下篇聊：数据想好了，存本地还是存云上？怎么&amp;quot;秒开还不丢&amp;quot;？&lt;/p&gt;
</description>
        </item>
        <item>
        <title>别只跟AI聊天：5个动作让它真帮你干活</title>
        <link>https://corev.cn/articles/02-5-actions-make-ai-work/</link>
        <pubDate>Sat, 01 Aug 2026 10:00:00 +0800</pubDate>
        
        <guid>https://corev.cn/articles/02-5-actions-make-ai-work/</guid>
        <description>&lt;p&gt;你平时是不是把 AI 当成了搜索工具？查个信息、润色下文档，然后关掉。&lt;/p&gt;
&lt;p&gt;我以前也这样。直到开始做「简单记」——对，那个我天天用来随手记生活小事的小程序——才发现 AI 最大的本事不是&amp;quot;陪聊&amp;quot;，是&amp;quot;交付&amp;quot;：你丢它一句话，它还你一段能跑的代码、一份改好的文件、一张清单。&lt;/p&gt;
&lt;p&gt;先亮个底牌：&lt;strong&gt;这套小程序，就是我用 WorkBuddy + 腾讯混元（hy3）一点点跑出来的。&lt;/strong&gt; 我不是程序员，在能源行业干了二十多年，对各种编程语言也是一窍不通。所以下面这 5 个动作，你照着做，也能实现自己的小目标。&lt;/p&gt;
&lt;p&gt;今天这篇&lt;strong&gt;经验分享&lt;/strong&gt;，把用下来的方法总结出来、配上例子讲给你听，每个动作我都给你一句&lt;strong&gt;能直接复制的提示词&lt;/strong&gt;，外加我踩过的真坑、写出来的真代码。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;一先说清区别搜索给信息ai-给产物&#34;&gt;一、先说清区别：搜索给信息，AI 给产物
&lt;/h2&gt;&lt;p&gt;以前我想知道&amp;quot;怎么把每月开销自动归类汇总&amp;quot;，翻十篇教程，教的都是&amp;quot;先打开表格、再点透视表&amp;quot;这种通用步骤，看完还是得自己拼。&lt;/p&gt;
&lt;p&gt;现在？直接把想法告诉 AI。看教程、文档一般只教你&amp;quot;怎么做&amp;quot;，AI 不一样——它按你的思路，直接写出能用的东西。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;一句话记住：&lt;strong&gt;教程教你步骤，AI 按你的想法把活干完。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;下面 5 个动作，就是&amp;quot;让它干活&amp;quot;的具体姿势。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;二动作1--把模糊想法变成清单&#34;&gt;二、动作1 · 把模糊想法变成清单
&lt;/h2&gt;&lt;p&gt;我最开始就丢了一句：&amp;ldquo;想做个能记日常小事的工具，比如今天跑了多远、开了多久车，类型、单位要能自定义。&amp;quot;——结果它给我写了一堆代码，方向却偏了。&lt;/p&gt;
&lt;p&gt;后来我调整了做法：别一上来就要代码，&lt;strong&gt;先要一份清单&lt;/strong&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;可直接复制的提示词：&lt;/strong&gt;&lt;br&gt;
帮我把「我想做一个能记录 XX 的小工具」拆成一份功能清单。列出：①要记哪些东西；②每种怎么汇总；③要不要提醒、要不要图表；④哪些先不做。用大白话，别写代码。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我拿这份清单，一眼看出该先做哪块、哪些能往后放。等清单对上了，再让它动手，返工少一大半。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;教学点：需求拆解，是咱们外行最该练的本事。&lt;/strong&gt; 你连自己要什么都讲不清，AI 也只能瞎猜。这一点，我在第 1 篇里就说过——它比会写代码值钱十倍。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;三动作2--让它搭骨架&#34;&gt;三、动作2 · 让它搭骨架
&lt;/h2&gt;&lt;p&gt;清单定了，我才让它生成小程序页面骨架——&lt;code&gt;app.json&lt;/code&gt;、页面目录、初版界面。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;可直接复制的提示词：&lt;/strong&gt;&lt;br&gt;
基于上面这份清单，帮我生成一个小程序的页面骨架：需要哪几个页面、每个页面大致放什么、数据怎么存本地。先给结构和目录，不用一步到位写满功能。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我不用一口气吃透全套，先看结构对不对：页面有没有、入口通不通。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;教学点：骨架错了改起来容易。&lt;/strong&gt; 先要&amp;quot;形&amp;rdquo;，再填&amp;quot;肉&amp;quot;，别一上来就抠细节。这一点，第 3 篇我会专门展开讲。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;四动作3--让它当翻译&#34;&gt;四、动作3 · 让它当翻译
&lt;/h2&gt;&lt;p&gt;做到云函数那段，它给我写出一句 &lt;code&gt;app.ai().createModel(&#39;cloudbase&#39;)&lt;/code&gt;，我是一脸问号——这串到底是干嘛的？&lt;/p&gt;
&lt;p&gt;直接把代码贴回去问：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;可直接复制的提示词：&lt;/strong&gt;&lt;br&gt;
下面这段代码是干嘛的？为什么这么写？如果我想换成别的大模型，要改哪几个地方？用大白话讲，别堆术语。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;它用大白话讲明白：这是让小程序安全调用大模型的方式，密钥放在云端、不落在我手机上。我顺带还学了一招。&lt;/p&gt;
&lt;p&gt;放一段它帮我理清的真实的云函数调用方式（这是 hy3 在 WorkBuddy 里给我写、我验收过的）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 调大模型，必须走云端，密钥不进小程序包
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;ai&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;().&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;createModel&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;cloudbase&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;res&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;await&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;streamText&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;model&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;hy3&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;messages&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;role&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;user&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;content&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;帮我解读这周的运动数据&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;金句：&lt;strong&gt;AI 是免费师父。看不懂就问，一个人闷头死磕，反而最耽误事。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;（hy3 怎么接、云端怎么配，第 5 篇单独讲，这里先不展开。）&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;五动作4--一处规则改全站单一事实来源&#34;&gt;五、动作4 · 一处规则改全站（单一事实来源）
&lt;/h2&gt;&lt;p&gt;这条是我真吃过亏、用真代码修好的。&lt;/p&gt;
&lt;p&gt;「简单记」刚上线时，默认的那 8 类习惯（抗阻训练、有氧运动、学习提升……），在 &lt;code&gt;app.js&lt;/code&gt; 和 &lt;code&gt;profile.js&lt;/code&gt; 两处&lt;strong&gt;各写了一份&lt;/strong&gt;。结果我在一处加了新类型，另一处没跟上——真机上直接&amp;quot;类型跟事项对不上&amp;quot;，记录页乱了。&lt;/p&gt;
&lt;p&gt;我把两处代码和报错贴给 AI，它一句话点醒我：&lt;strong&gt;规则只写一处，全站引用。&lt;/strong&gt; 于是我俩把它抽成一个文件当&amp;quot;唯一可信源&amp;quot;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// utils/defaultData.js —— 全站唯一默认数据源
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;defaultTypes&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;抗阻训练&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;unit&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;个&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;   &lt;span class=&#34;nx&#34;&gt;minValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;    &lt;span class=&#34;nx&#34;&gt;maxValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;  &lt;span class=&#34;nx&#34;&gt;stepValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;emoji&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;💪&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;2&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;有氧运动&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;unit&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;公里&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;minValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;  &lt;span class=&#34;nx&#34;&gt;maxValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;   &lt;span class=&#34;nx&#34;&gt;stepValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;emoji&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;🏃&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// …… 共 8 类，单位、上下限、步长都在这里统一定义
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;module&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;exports&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;defaultTypes&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;defaultItems&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;然后在 &lt;code&gt;app.js&lt;/code&gt;（首次启动）和 &lt;code&gt;profile.js&lt;/code&gt;（重置数据）里，&lt;strong&gt;都只 &lt;code&gt;require&lt;/code&gt; 它&lt;/strong&gt;，谁也不许再偷偷写一份：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// app.js / profile.js 都改成这样
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;defaults&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;require&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;./utils/defaultData.js&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;defaultTypes&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;defaults&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;defaultTypes&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;defaultItems&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;defaults&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;defaultItems&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;可直接复制的提示词：&lt;/strong&gt;&lt;br&gt;
我这个项目里，XX 配置在 A 和 B 两个地方各写了一份，经常对不上。帮我把它们抽成一个公共文件，两个地方都引用它，并告诉我改完要注意什么。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;教学点：单一事实来源。&lt;/strong&gt; 改一处即改全部，杜绝&amp;quot;改了这漏了那&amp;quot;。这条不只对写代码有用，你平时整理表格、管理文档，底层逻辑也是一样的——比如团队不要每人存一份通讯录，要共用一份总表当唯一来源，谁改了以总表为准，就不会出现&amp;quot;你那份和我的对不上&amp;quot;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;六动作5--把报错丢给它&#34;&gt;六、动作5 · 把报错丢给它
&lt;/h2&gt;&lt;p&gt;真机预览突然报错，是家常便饭。我没慌，把整段错误日志贴回给它。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;可直接复制的提示词：&lt;/strong&gt;&lt;br&gt;
我在真机预览时报错了，日志如下（贴上来）。请告诉我：①大概是什么问题；②该改哪段代码；③改完怎么验证。别只说&amp;quot;重装试试&amp;quot;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;它有次点出：我用了个旧接口，新版本已经不让用了。我照它说的换掉，还顺手加了兼容性兜底——这段就是习惯模块里&amp;quot;换头像&amp;quot;的真实写法（hy3 提醒我：旧接口 &lt;code&gt;chooseImage&lt;/code&gt; 已废弃，改用 &lt;code&gt;chooseMedia&lt;/code&gt;，并且要判断老版本有没有这个能力）：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 换头像：先用 chooseMedia，老版本不支持就温柔提示
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;!&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;wx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;chooseMedia&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;wx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;showToast&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;title&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;当前版本不支持更换头像&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;icon&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;none&amp;#39;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;wx&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;chooseMedia&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;count&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;mediaType&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;image&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;sourceType&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;album&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;camera&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;success&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;res&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt; &lt;span class=&#34;cm&#34;&gt;/* 拿到图片后上传 */&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;blockquote&gt;
&lt;p&gt;金句：&lt;strong&gt;报错不是灾难，是给 AI 的精准输入。你越把现象讲细，它改得越准。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;七不会编程也能用用这-5-个动作整理月度报销表&#34;&gt;七、不会编程也能用：用这 5 个动作整理&amp;quot;月度报销表&amp;quot;
&lt;/h2&gt;&lt;p&gt;怕你以为这套只服务于写代码，我拿个&lt;strong&gt;纯办公、零代码&lt;/strong&gt;的例子收尾——月度报销。&lt;/p&gt;
&lt;p&gt;假设领导让你把全公司的报销单整理清楚。还是那 5 个动作：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;清单&lt;/strong&gt;：&amp;ldquo;帮我把月度报销整理成清单：要哪些列（日期/事项/金额/类别/备注）、怎么汇总、要不要按部门分。&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;骨架&lt;/strong&gt;：&amp;ldquo;生成一份 Excel 表头结构，再加一个『按类别汇总』的公式示例。&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;翻译&lt;/strong&gt;：把一段看不懂的 &lt;code&gt;SUMIFS&lt;/code&gt; 公式贴回去：&amp;ldquo;这行干嘛的？我想改成按月份汇总该怎么改？&amp;rdquo;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;单一来源&lt;/strong&gt;：&amp;ldquo;把所有『餐饮』统一改成『差旅餐饮』，别漏也别多改。&amp;quot;——一处改全表。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;查 bug&lt;/strong&gt;：&amp;ldquo;这个公式报 &lt;code&gt;#VALUE!&lt;/code&gt;，日志如下，帮我改。&amp;rdquo;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;你看，&lt;strong&gt;一个公式都不用会背&lt;/strong&gt;，全程就是&amp;quot;给 AI 布置任务 + 验收结果&amp;rdquo;。这就是第 1 篇说的：门槛在&amp;quot;想清楚&amp;quot;，不在&amp;quot;写代码&amp;quot;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;八收藏这张给-ai-布置任务--自查清单&#34;&gt;八、收藏这张「给 AI 布置任务 · 自查清单」
&lt;/h2&gt;&lt;p&gt;截图存下来，以后给 AI 布置任务前扫一遍：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;✅&lt;/th&gt;
          &lt;th&gt;给 AI 布置任务前自查&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;我说清要什么了吗？（先要清单，别一上来要代码）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2&lt;/td&gt;
          &lt;td&gt;我先看骨架对不对了吗？（结构错了改起来便宜）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;3&lt;/td&gt;
          &lt;td&gt;看不懂的代码，我问了吗？（AI 是免费师父）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;4&lt;/td&gt;
          &lt;td&gt;规则只写一处了吗？（单一事实来源，别到处硬编码）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;5&lt;/td&gt;
          &lt;td&gt;报错我贴日志回去了吗？（现象越细，改得越准）&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;6&lt;/td&gt;
          &lt;td&gt;&lt;strong&gt;每一次，我都亲自验收了吗？&lt;/strong&gt;（最重要的一条）&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id=&#34;收尾5-个动作串成一条线&#34;&gt;收尾：5 个动作串成一条线
&lt;/h2&gt;&lt;p&gt;清单 → 骨架 → 翻译 → 批量改 → 查 bug。&lt;/p&gt;
&lt;p&gt;本质就八个字：&lt;strong&gt;说清楚 — 生成 — 理解 — 修正&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;你不用会写代码，但你得会&amp;quot;给 AI 布置任务&amp;quot;和&amp;quot;验收结果&amp;quot;。这俩能力，比背语法值钱十倍。&lt;/p&gt;
&lt;p&gt;最后再补一句：上面这些代码，都是 hy3 在 WorkBuddy 里给我写的，我逐行验收——&lt;strong&gt;用什么 AI 都行，我是 WorkBuddy + 混元，你用顺手的就成。&lt;/strong&gt; 工具是皮，方法是骨。&lt;/p&gt;
&lt;p&gt;下一篇，我讲讲动作 1 里那份清单，怎么变成真正的数据模型——也就是「简单记」到底把数据存成了什么样。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>能源老哥没学编程，却做出小程序</title>
        <link>https://corev.cn/articles/01-ai-build-miniprogram-no-code/</link>
        <pubDate>Sat, 01 Aug 2026 09:00:00 +0800</pubDate>
        
        <guid>https://corev.cn/articles/01-ai-build-miniprogram-no-code/</guid>
        <description>&lt;p&gt;你有没有过这种念头：要是有个 App，专门记我想记的东西就好了？&lt;/p&gt;
&lt;p&gt;下一秒，这个念头往往就被掐灭了——&amp;ldquo;可我不会写代码啊，没时间学，太麻烦了。&amp;rdquo; 💡&lt;/p&gt;
&lt;p&gt;今天这篇&lt;strong&gt;经验分享&lt;/strong&gt;，我想用我的真实&lt;strong&gt;故事&lt;/strong&gt;告诉你：这个念头，今年真的被我落地了。&lt;/p&gt;
&lt;p&gt;先说结论：我在能源行业干了二十多年，平时只会用电脑写方案、做报表。上个月，我自己的微信小程序「简单记」上线了，现在天天都在用。🔥&lt;/p&gt;
&lt;p&gt;金句先放这儿：时代真变了。以前&amp;quot;做个软件&amp;quot;是程序员专属的硬核技能；现在，像我这样的外行，也够得着了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;一我为什么非得自己做一个&#34;&gt;一、我为什么非得自己做一个
&lt;/h2&gt;&lt;p&gt;我有记录的习惯，这算是我管理时间的小方法。时间花哪了、早上跑了几公里、开车开了几小时……这些零碎的小事，我都想留个痕。📱&lt;/p&gt;
&lt;p&gt;以前靠备忘录。但致命问题是：它能记，不能算。跑了一个月，我想看总共多少公里？备忘录一脸茫然。&lt;/p&gt;
&lt;p&gt;也试过习惯类 App。要么不能自定义，我想记&amp;quot;开车时长&amp;quot;，它偏让我套模板；要么单位锁死，我想用&amp;quot;小时&amp;quot;，它非给&amp;quot;分钟&amp;quot;；要么广告满天飞，不充会员就限制功能。&lt;/p&gt;
&lt;p&gt;我要的其实很简单：随时能记、越方便越好；能自定义分类、事项和单位；数据能同步。&lt;/p&gt;
&lt;p&gt;既然市面上找不到合适的，那就自己做一个。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;二在这之前我也自学过编程&#34;&gt;二、在这之前，我也自学过编程
&lt;/h2&gt;&lt;p&gt;买书、跟教程、敲代码。结果？太痛苦了。😣&lt;/p&gt;
&lt;p&gt;我不是开发人员，工作用不上，学完就忘。隔两周不碰，语法全还回去了。&lt;/p&gt;
&lt;p&gt;我认了：靠自己从头学，走不通。不是学不会，是性价比太低。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;三人和-ai-怎么分工我定方向它来落地-&#34;&gt;三、人和 AI 怎么分工？我定方向，它来落地 🤖
&lt;/h2&gt;&lt;p&gt;很多人以为&amp;quot;AI 写代码&amp;quot;= 甩手不管。大错特错。&lt;/p&gt;
&lt;p&gt;真实情况是：很多专业环节我根本不知道怎么干，比如写代码，尤其是写出各种语言的成千上万行代码。但我把想要什么讲清楚，AI 照着做出来。&lt;/p&gt;
&lt;p&gt;我的活儿就两件事——&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;说清楚要什么。&lt;/strong&gt;（最费脑，也最重要）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验收对不对。&lt;/strong&gt;（跑一遍、点一遍，不对就拉回来重说）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;金句：AI 不是替你思考，是替你把想法变成现实。偏了，你来纠。✅&lt;/p&gt;
&lt;p&gt;整个过程就八个字：&lt;strong&gt;提需求 → AI写代码 → 功能验证 → 纠偏&lt;/strong&gt;。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;四ai-时代的破局三板斧&#34;&gt;四、AI 时代的&amp;quot;破局三板斧&amp;quot;
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;第一板斧，想明白&amp;quot;要什么&amp;quot;：需求拆解才是核心壁垒。&lt;/strong&gt;
AI 永远替不了你想真正的业务需求。你只给一句模糊的&amp;quot;做个好用的 App&amp;quot;，它只能猜；但当你精准到&amp;quot;记录每天读书页数、月底自动汇总&amp;quot;，它就能动手。在 AI 时代，把模糊想法拆成清晰指令，这项能力比会写代码值钱得多。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二板斧，学会当&amp;quot;验收人&amp;quot;：在测试与反馈中逼近完美。&lt;/strong&gt;
别指望 AI 一次生成的代码就完美。你得亲自跑、亲自点，做最严苛的验收人。写错了不可怕，把现象喂回去，让它接着改。好产品不是一键生成的，是你带着 AI 一步步磨出来的。🔥&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三板斧，懂逻辑胜过懂语法：门槛在&amp;quot;想清楚&amp;quot;，不在&amp;quot;写代码&amp;quot;。&lt;/strong&gt;
与其死磕语法，不如想清楚架构：数据怎么组织、存本地还是云端？这些外行也能想明白。真落到那几行代码，反而最简单。&lt;/p&gt;
&lt;p&gt;金句：&lt;strong&gt;AI 时代真正的挑战，从来不是&amp;quot;怎么写&amp;quot;，而是&amp;quot;想清楚 + 验明白&amp;quot;。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;五简单记最后长啥样&#34;&gt;五、简单记最后长啥样
&lt;/h2&gt;&lt;p&gt;支持自定义类型与单位、本地秒开不卡顿、换手机数据无缝同步；还能让大模型给你写&amp;quot;本周生活解读&amp;quot;，一键生成精美战绩卡发朋友圈，每天签到慢慢攒出专属成就。🚀&lt;/p&gt;
&lt;p&gt;听着不少？全是上面那个循环，一小步一小步堆出来的。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;六这个系列接下来讲什么&#34;&gt;六、这个系列接下来讲什么
&lt;/h2&gt;&lt;p&gt;后面 5 篇，我把做法拆开揉碎：WorkBuddy 提效动作、数据模型设计、本地+云端双引擎、云函数接大模型、签到成就留存。&lt;/p&gt;
&lt;p&gt;每篇都有真实代码、详细配置、我踩过的坑。你未必做小程序，把这些思路移到办公自动化、Excel 提效上，一样好使。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;结尾&#34;&gt;结尾
&lt;/h2&gt;&lt;p&gt;我没劝你去写小程序。&lt;/p&gt;
&lt;p&gt;只想感叹：AI 爆发的这一年，最大的变化不是机器变多聪明，是像我这样不会编程的普通职场人，脑子里那些落不了地的想法，终于有了一条够得着的路。🛤️&lt;/p&gt;
&lt;p&gt;路不是自动铺好的。方向你定，活 AI 干，走没走偏、合不合心意，还得你自己验收。&lt;/p&gt;
</description>
        </item>
        <item>
        <title>不会写代码也能开发程序？</title>
        <link>https://corev.cn/articles/ai-programming/</link>
        <pubDate>Sat, 20 Dec 2025 13:23:10 +0800</pubDate>
        
        <guid>https://corev.cn/articles/ai-programming/</guid>
        <description>&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;不会编程，这个需求该怎么实现？&amp;ldquo;为了解决这个事，我曾经在网上搜索过很多相关内容，对低代码开发平台、中文编程等有了一些了解后，发现这些不仅没有让&lt;strong&gt;实现需求&lt;/strong&gt;这件事变得简单，反而增加了大量的时间成本。但现在，&lt;strong&gt;AI编程&lt;/strong&gt;能力突飞猛进的发展，为这个问题增加了一个新的选项。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;一个不会写代码的业余爱好者&#34;&gt;一个不会写代码的业余爱好者
&lt;/h2&gt;&lt;p&gt;近两年，大部分时间在做与系统开发相关的工作。我来对接需求，提供解决思路，让项目能落地，再由公司专门的开发团队来实现。这是工作生涯中离编程最近的一次，但由于工作节奏一直比较紧凑，还没有系统的学习一门编程语言。&lt;/p&gt;
&lt;p&gt;与其说爱好编程，不如说爱好解决问题，实现需求。谁又愿意不停的写代码呢？&lt;br&gt;
我的核心能力领域是研究和创造各种提高工作、生产效率的工具和方法。&lt;br&gt;
这些工具有些是软件产品，有些是方法论。我希望花大量时间研究出来的东西能让更多人受益，提升自身价值。&lt;br&gt;
这正是我创建 corev.cn 这个网站的初衷。&lt;br&gt;
corev.cn，核心价值实验室。&lt;br&gt;
希望所有努力的人都能找到并提升自己的核心价值。&lt;/p&gt;
&lt;h2 id=&#34;智控时光一个真实的产品需求&#34;&gt;智控时光：一个真实的产品需求
&lt;/h2&gt;&lt;p&gt;最近我遇到一个很现实的问题：&lt;strong&gt;我想系统地记录自己的一些日常事项&lt;/strong&gt;，但市场上的现有应用都不太符合我的需求。&lt;/p&gt;
&lt;p&gt;我想要的功能很简单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可以自定义记录类型（比如运动、学习、娱乐、费用等）&lt;/li&gt;
&lt;li&gt;可以在每种类型下创建具体事项（比如运动下的&amp;quot;俯卧撑&amp;rdquo;、&amp;ldquo;仰卧起坐&amp;rdquo;）&lt;/li&gt;
&lt;li&gt;每种类型有不同的单位（个、公里、分钟、元等）&lt;/li&gt;
&lt;li&gt;可以记录数值、备注、时间&lt;/li&gt;
&lt;li&gt;可以查看历史记录&lt;/li&gt;
&lt;li&gt;可以做统计分析（日、周、月、年趋势）&lt;/li&gt;
&lt;li&gt;数据可以导入导出，方便备份&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我试过几个应用，运动健康类应用，手动添加记录时主要以运动时长为主，不支持个性化的记录“个”、“次”等；时间管理类的，个性化支撑也有限，统计功能也不理想。&lt;br&gt;
也许是这个需求太个性化了吧。&lt;br&gt;
于是又萌生了&lt;strong&gt;自己做一个&lt;/strong&gt;的想法。&lt;/p&gt;
&lt;h2 id=&#34;ai编程的能力&#34;&gt;AI编程的能力
&lt;/h2&gt;&lt;p&gt;自己写程序的想法，并不是突然出现的。&lt;br&gt;
好多年前就有过尝试，但学习的路线不对。比如低代码开发、可视化编程等方法，也有一定的学习成本，如果想完整的实现编程，需要花大量时间去学习。并且小众的技术，文档和资料也比较少。学习成本并不一定比python、java等编程语言低。&lt;/p&gt;
&lt;p&gt;2025年初，通过aardio接触到了AI编程，并尝试写了一个win系统下的桌面日历记事工具。&lt;br&gt;
这时的AI还是以分析、问答为主，没有基础，问题提的不准确，生成的代码与想要的有很大差距；&lt;br&gt;
9月份，又尝试用AI写待办事项类的时间管理微信小程序，断断续续花了近2个月的时间，完成度也不理想，AI会产生很多幻觉，把本身就不会编程的我们带偏，再加上后来研究了nextcloud+thunderbird实现跨平台的待办事项及日程管理（这个以后有机会单独写），最终没上线这个小程序。&lt;br&gt;
个人觉得，到了2025年9月份，AI编程这个概念依然对不会编程的人非常不友好，并不像宣传的那么好用。&lt;br&gt;
但通过近几天再次尝试，让我彻底改变了这个看法。&lt;/p&gt;
&lt;p&gt;接下来我会分享我使用AI完成小程序开发的整个过程，希望对你能有启发。&lt;/p&gt;
&lt;h3 id=&#34;第一步准备工作&#34;&gt;第一步：准备工作
&lt;/h3&gt;&lt;p&gt;在微信公众平台注册一个小程序，并完成小程序备案。&lt;br&gt;
安装最新的微信开发者工具，创建一个空白小程序。&lt;br&gt;
以上基础工作不详细介绍，可以参考官方文档或搜索相关教程。&lt;/p&gt;
&lt;p&gt;进入新创建的空白小程序后，找到扩展&lt;br&gt;
&lt;img src=&#34;https://corev.cn/articles/ai-programming/image.png&#34;
	width=&#34;1060&#34;
	height=&#34;388&#34;
	srcset=&#34;https://corev.cn/articles/ai-programming/image_hu_d054f8fd4cb94eb.png 480w, https://corev.cn/articles/ai-programming/image_hu_f102ab441294db33.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;alt text&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;273&#34;
		data-flex-basis=&#34;655px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;安装CodeBuddy&lt;br&gt;
&lt;img src=&#34;https://corev.cn/articles/ai-programming/image-1.png&#34;
	width=&#34;432&#34;
	height=&#34;273&#34;
	srcset=&#34;https://corev.cn/articles/ai-programming/image-1_hu_bd60cdb4d34425e6.png 480w, https://corev.cn/articles/ai-programming/image-1_hu_7bc987a378d7f886.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;安装CodeBuddy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;158&#34;
		data-flex-basis=&#34;379px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;安装后，会出现Codebuddy的图标，点击进入，选择Craft模式，选择GLM-4.7模型（或其它模型），即可通过对话框，告诉AI你想要做什么。&lt;br&gt;
&lt;img src=&#34;https://corev.cn/articles/ai-programming/image-2.png&#34;
	width=&#34;867&#34;
	height=&#34;963&#34;
	srcset=&#34;https://corev.cn/articles/ai-programming/image-2_hu_a123482f49ee3704.png 480w, https://corev.cn/articles/ai-programming/image-2_hu_845e5ff028b95f49.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI对话&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;90&#34;
		data-flex-basis=&#34;216px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;第二步产品需求描述&#34;&gt;第二步：产品需求描述
&lt;/h3&gt;&lt;p&gt;用自然语言，把想要的功能告诉AI。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;我想做一个记录日常活动的小程序，用户可以自定义类型和事项，记录数值，查看历史和统计数据。支持数据导入导出。&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;提交后，你会发现AI在自动根据你的要求进行“思考”，并修改代码。你只需要配合它点“运行”或“保存”按钮。&lt;br&gt;
与AI对话时，要尽量把问题说清楚。如果AI有建议或选项，要根据你的实际情况进行回答，这样AI才能更准确地理解你的需求。&lt;br&gt;
这个过程花费的时间不会太长，AI就会完成一个产品的雏形，能跑起来的小程序。可以在模拟器或手机上进行测试。&lt;/p&gt;
&lt;h3 id=&#34;第三步逐步完善功能&#34;&gt;第三步：逐步完善功能
&lt;/h3&gt;&lt;p&gt;由于我们不是专业的开发人员，与AI对话时描述的问题，可能会有一些不准确，或有一些遗漏，导致AI实现的功能与我们想要的可能会有偏差。需要我们把每个页面每个功能都测试一下，如果不符合预期，就需要继续与AI对话，修改代码。&lt;br&gt;
这个过程很漫长。&lt;/p&gt;
&lt;p&gt;分享几个能帮助我们快速与AI准确对话的方法：&lt;/p&gt;
&lt;h4 id=&#34;1录入真实数据把数据和结果都描述给ai告诉他应该是什么样的结果让ai分析问题出在哪并修复问题&#34;&gt;1.录入真实数据，把数据和结果都描述给AI，告诉他应该是什么样的结果，让AI分析问题出在哪并修复问题。
&lt;/h4&gt;&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;数据统计页面，分类——周——占比图，垫付费用显示1次，不正确，应为2次；饼图的数据也不对，应该为2次，300；事项占比分析也不对，应该为加油费2次300元。请分析该问题，并修复，同时检查其它地方有没有类似问题，如有，一同修复。&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;AI会按你提供的数据结合代码进行分析，并进行修复。&lt;/p&gt;
&lt;h4 id=&#34;2把控制台打印的数据复制给ai让他帮你分析问题并修复&#34;&gt;2.把控制台打印的数据复制给AI，让他帮你分析问题并修复。
&lt;/h4&gt;&lt;p&gt;这就是控制台&lt;br&gt;
&lt;img src=&#34;https://corev.cn/articles/ai-programming/image-3.png&#34;
	width=&#34;1920&#34;
	height=&#34;950&#34;
	srcset=&#34;https://corev.cn/articles/ai-programming/image-3_hu_ceeb7643113b8098.png 480w, https://corev.cn/articles/ai-programming/image-3_hu_3863050a8bb21715.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;这就是控制台&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;202&#34;
		data-flex-basis=&#34;485px&#34;
	
&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;新记录newEntry&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;垫付费用&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;维修费&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;11&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;note&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;date&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2025-12-23T09:10:01.122Z&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;date&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2025-12-23T09:10:01.122Z&amp;#34;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;维修费&amp;#34;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;note&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;垫付费用&amp;#34;&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;11__&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;proto__&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Object&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;我刚才新建了一条记录&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;以上是新建后打印的结果&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;以下是我在历史记录页面打印的结果&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;：&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;date&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;今天&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;records&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Array&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;date&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;2025-12-23T09:10:01.122Z&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;formattedTime&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;01:10&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;item&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;维修费&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;note&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;originalIndex&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;垫付费用&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;11&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;__proto__&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nb&#34;&gt;Object&lt;/span&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;请分析&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;formattedTime计算的是否正确&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;？&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;如不正确&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;请修复这个问题&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;。&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;AI同样会根据你提供的打印内容进行分析并修复问题。&lt;/p&gt;
&lt;h4 id=&#34;3提供css样式类名让ai更准确的定位你要描述的问题&#34;&gt;3.提供CSS样式类名，让AI更准确的定位你要描述的问题
&lt;/h4&gt;&lt;p&gt;在微信开发者工具，找到&lt;strong&gt;布局&lt;/strong&gt;，勾选&lt;strong&gt;可视化&lt;/strong&gt;。 &lt;br&gt;
&lt;img src=&#34;https://corev.cn/articles/ai-programming/image-4.png&#34;
	width=&#34;645&#34;
	height=&#34;358&#34;
	srcset=&#34;https://corev.cn/articles/ai-programming/image-4_hu_4afccfd39be7be1c.png 480w, https://corev.cn/articles/ai-programming/image-4_hu_35e3694f3927a1c6.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;可视化&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;180&#34;
		data-flex-basis=&#34;432px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;在模拟器上点击有问题的元素，会自动定位到对应的代码。&lt;strong&gt;class&lt;/strong&gt;后面就是类名，把这个复制给AI，有时候比我们描述几十个字的效果都好。&lt;br&gt;
&lt;img src=&#34;https://corev.cn/articles/ai-programming/image-5.png&#34;
	width=&#34;1891&#34;
	height=&#34;736&#34;
	srcset=&#34;https://corev.cn/articles/ai-programming/image-5_hu_d23bc4f36a1f640.png 480w, https://corev.cn/articles/ai-programming/image-5_hu_aec1f0d55f081bbd.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;类名&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;256&#34;
		data-flex-basis=&#34;616px&#34;
	
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;range-text时间范围不正确，截止时间应该为本周的最后一天，请修复这个问题&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;AI会根据你提供的类名找到对应的代码，准确的分析你的诉求，进行修复。&lt;/p&gt;
&lt;p&gt;随着使用的深入，与AI配合也会越来越默契，你也会总结出一些自己的沟通经验，欢迎分享。&lt;/p&gt;
&lt;h4 id=&#34;4分享几个我测试发现的真实问题并与ai一起修复的对话片段&#34;&gt;4.分享几个我测试发现的真实问题，并与AI一起修复的对话片段
&lt;/h4&gt;&lt;h5 id=&#34;滑动条最大值问题&#34;&gt;滑动条最大值问题
&lt;/h5&gt;&lt;p&gt;在开发历史记录编辑功能时，我发现了一个问题：滑动条的最大值是固定的100，但对于不同类型的事项，这个范围显然不合理。比如&amp;quot;垫付费用&amp;quot;可能录入400元，而&amp;quot;俯卧撑&amp;quot;可能只要几十个。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;我与AI的对话：&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;我：&lt;/strong&gt; &amp;ldquo;历史记录页面的编辑功能，滑动条最大值只有100，但像&amp;rsquo;垫付费用&amp;rsquo;这种可能录入400元，就超出了范围。这个滑动组件的最大值应该根据当前事项所属类型的单位动态调整。比如抗阻训练（个）→ 最大值可设200，有氧运动（公里）→ 最大值可设50，学习提升（分钟）→ 最大值可设600，垫付费用（元）→ 最大值可设2000或更高。&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI的回答：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 获取当前类型信息
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;selectedTypeInfo&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;types&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;find&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;t&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;t&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;===&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;currentType&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;sliderMax&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;selectedTypeInfo&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;?&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;selectedTypeInfo&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;maxValue&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;||&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 在类型管理页面增加最大值设置
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;defaultTypes&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;1&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;抗阻训练&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;unit&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;个&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;minValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;100&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;stepValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;2&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;有氧运动&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;unit&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;公里&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;minValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;50&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;stepValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;3&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;学习提升&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;unit&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;分钟&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;minValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1440&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;stepValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;4&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;休闲娱乐&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;unit&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;分钟&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;minValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1440&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;stepValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;5&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;name&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;垫付费用&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;unit&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;元&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;minValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.01&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;maxValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2000&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;stepValue&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0.01&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;AI不仅解决了问题，还提出了一个更好的数据结构：在类型定义时就预设了合理的最大值、最小值和步进值，并允许用户在&amp;quot;我的-管理类型-编辑类型&amp;quot;页面自行调整。&lt;/p&gt;
&lt;h5 id=&#34;小数点输入问题&#34;&gt;小数点输入问题
&lt;/h5&gt;&lt;p&gt;在手机端测试时，我发现输入框不允许输入小数点，这导致无法记录&amp;quot;跑步3.5公里&amp;quot;这样的数据。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;我与AI的对话：&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;我：&lt;/strong&gt; &amp;ldquo;在需要输入小数点位置，手机端测试不允许输入小数点。&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI的分析和解决：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-javascript&#34; data-lang=&#34;javascript&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 问题：input type=&amp;#34;number&amp;#34; 在某些手机上不显示小数点
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 解决方案：使用input type=&amp;#34;digit&amp;#34; 并添加正则验证
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nx&#34;&gt;inputValue&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;e&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;e&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;detail&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// 移除非数字字符（只允许数字和小数点）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;replace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;/[^\d.]/g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;c1&#34;&gt;// 处理多个小数点的情况
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;dotIndex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;indexOf&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s1&#34;&gt;&amp;#39;.&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;dotIndex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;!==&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;-&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 保留第一个小数点，移除后续的小数点
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;substring&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;dotIndex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;substring&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;dotIndex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;).&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;replace&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;sr&#34;&gt;/\./g&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#39;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;c1&#34;&gt;// 限制小数位数为2位
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kr&#34;&gt;const&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;decimalPart&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;substring&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;dotIndex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;decimalPart&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;length&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;substring&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;mi&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;dotIndex&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;+&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;this&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;setData&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;nx&#34;&gt;value&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;AI不仅告诉我问题所在（&lt;code&gt;type=&amp;quot;number&amp;quot;&lt;/code&gt; 在某些Android设备上的兼容性问题），还提供了完整的解决方案：改用 &lt;code&gt;type=&amp;quot;digit&amp;quot;&lt;/code&gt; 配合正则表达式验证，确保只能输入数字和小数点，且最多两位小数。&lt;/p&gt;
&lt;h5 id=&#34;历史卡片布局优化&#34;&gt;历史卡片布局优化
&lt;/h5&gt;&lt;p&gt;历史记录页面需要显示很多信息：类型、事项、数值、备注、时间等。如何让这些信息既完整展示，又不显得拥挤？&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;我与AI的对话：&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;我：&lt;/strong&gt; &amp;ldquo;历史卡片优化建议：保持备注外其它内容的样式美观，不会被挤压变形。给备注位置设定最大显示区域，如果超出区域，支持滑动查看显示不全的内容。优化方案：record-main里分两列显示，左列显示record-value、record-name、record-type-badge，右列显示record-note。历史卡片上的时间，始终在父元素的右侧显示。&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI的设计方案：&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;18
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;19
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;20
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;21
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;22
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;23
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;24
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;25
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;26
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;27
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;28
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;29
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;30
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;31
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;32
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;33
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;34
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;record-main&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;display&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;flex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;flex-direction&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;row&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;align-items&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;flex-start&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;record-left&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;display&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;flex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;flex-direction&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;column&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;align-items&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;center&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;min-width&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;3&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;em&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; &lt;span class=&#34;c&#34;&gt;/* 约等于5个汉字 */&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;margin-right&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;px&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;record-right&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;flex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;1&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;display&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;flex&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;flex-direction&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;column&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;overflow&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;hidden&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;record-note&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;max-height&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;40&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;px&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;overflow-x&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;auto&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;white-space&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;nowrap&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;text-overflow&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;ellipsis&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;nc&#34;&gt;record-time&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;align-self&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;flex-end&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;color&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mh&#34;&gt;#999&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;font-size&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;12&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;px&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;k&#34;&gt;margin-top&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;8&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;px&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;AI完美实现了我的需求：左侧固定宽度显示核心信息，右侧弹性布局显示备注，时间始终在右侧。备注超出区域可以横向滑动查看。&lt;br&gt;
&lt;img src=&#34;https://corev.cn/articles/ai-programming/image-6.png&#34;
	width=&#34;345&#34;
	height=&#34;732&#34;
	srcset=&#34;https://corev.cn/articles/ai-programming/image-6_hu_2aa1b5879f3db728.png 480w, https://corev.cn/articles/ai-programming/image-6_hu_f3599e52916db743.png 1024w&#34;
	loading=&#34;lazy&#34;
	
		alt=&#34;AI优化后的效果&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;47&#34;
		data-flex-basis=&#34;113px&#34;
	
&gt;&lt;/p&gt;
&lt;h2 id=&#34;ai沟通技巧如何让ai更好地理解你的需求&#34;&gt;AI沟通技巧：如何让AI更好地理解你的需求
&lt;/h2&gt;&lt;p&gt;在与AI的对话中，我总结了一些实用的沟通技巧：&lt;/p&gt;
&lt;h3 id=&#34;1-描述问题时提供具体场景&#34;&gt;1. 描述问题时，提供具体场景
&lt;/h3&gt;&lt;p&gt;❌ &lt;strong&gt;不好的描述：&lt;/strong&gt; &amp;ldquo;统计页面有问题&amp;rdquo;&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;好的描述：&lt;/strong&gt; &amp;ldquo;统计页面按周统计时，我选择2024年12月19日，应该显示包含这一周在内的最近8周数据，但实际上只显示了部分周。我希望看到完整的8周，即使某些周没有数据也要显示为0。&amp;rdquo;&lt;/p&gt;
&lt;h3 id=&#34;2-提供期望的行为描述&#34;&gt;2. 提供期望的行为描述
&lt;/h3&gt;&lt;p&gt;❌ &lt;strong&gt;不好的描述：&lt;/strong&gt; &amp;ldquo;输入框不行&amp;rdquo;&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;好的描述：&lt;/strong&gt; &amp;ldquo;输入框只允许输入数字，数字保留2位小数。不允许输入数字外的其他内容。比如可以输入&#39;3.5&amp;rsquo;，但不能输入&amp;rsquo;abc&amp;rsquo;或&#39;3.567&amp;rsquo;。&amp;rdquo;&lt;/p&gt;
&lt;h3 id=&#34;3-说明技术约束和限制&#34;&gt;3. 说明技术约束和限制
&lt;/h3&gt;&lt;p&gt;❌ &lt;strong&gt;不好的描述：&lt;/strong&gt; &amp;ldquo;界面要好看&amp;rdquo;&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;好的描述：&lt;/strong&gt; &amp;ldquo;界面风格简约，与微信风格一致。涉及的图标，使用微信内置的图标，不需要单独下载或创建图片。使用最新的微信开发文档及相关要求进行开发。&amp;rdquo;&lt;/p&gt;
&lt;h3 id=&#34;4-描述用户体验期望&#34;&gt;4. 描述用户体验期望
&lt;/h3&gt;&lt;p&gt;❌ &lt;strong&gt;不好的描述：&lt;/strong&gt; &amp;ldquo;历史页面要好用&amp;rdquo;&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;好的描述：&lt;/strong&gt; &amp;ldquo;历史记录页面，编辑某个事项的&amp;rsquo;数量&amp;rsquo;时，既可以用滑动条调整，也可以直接输入数字。滑动条的最大值应该根据当前事项所属类型的单位动态调整。滑动条要提供流畅的交互体验，拖动时数值要实时更新。&amp;rdquo;&lt;/p&gt;
&lt;h3 id=&#34;5-提供具体的数值和配置&#34;&gt;5. 提供具体的数值和配置
&lt;/h3&gt;&lt;p&gt;❌ &lt;strong&gt;不好的描述：&lt;/strong&gt; &amp;ldquo;设置一些预置数据&amp;rdquo;&lt;/p&gt;
&lt;p&gt;✅ &lt;strong&gt;好的描述：&lt;/strong&gt; &amp;ldquo;预置以下数据：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;抗阻训练（按次数记录）：俯卧撑、仰卧起坐、深蹲、引体向上&lt;/li&gt;
&lt;li&gt;有氧运动（按公里记录）：户外跑、室内跑步机、骑行、游泳&lt;/li&gt;
&lt;li&gt;学习提升（按分钟记录）：专业知识、技能拓展、读书、在线课程&lt;/li&gt;
&lt;li&gt;休闲娱乐（按分钟记录）：发呆、逛街、打游戏、看电影&lt;/li&gt;
&lt;li&gt;垫付费用（按元记录）：加油费、通行费、餐费、维修费&amp;rdquo;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;40个文件一个完整的产品&#34;&gt;40个文件，一个完整的产品
&lt;/h2&gt;&lt;p&gt;经过10多个小时的&amp;quot;对话开发&amp;rdquo;，我的小程序&amp;quot;智控时光&amp;quot;完成了。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;40个文件&lt;/strong&gt;：包括10个页面、10个JS逻辑文件、10个WXSS样式文件、10个JSON配置文件&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5个核心页面&lt;/strong&gt;：首页、记录、历史、统计、我的&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;完整的生命周期管理&lt;/strong&gt;：初始化、登录、数据存储、导入导出&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;丰富的数据分析&lt;/strong&gt;：支持日/周/月/年统计，趋势图、饼图可视化&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;智能的交互体验&lt;/strong&gt;：滑动条实时反馈、时间选择器、数据校验&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这是我用AI开发的第一个完整产品。虽然功能不算复杂，但它证明了一个重要的事实：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;只要有清晰的产品需求，任何人都可以借助AI完成产品的开发、上线全过程。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;核心功能&#34;&gt;核心功能
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;自定义类型和事项&lt;/strong&gt;：灵活配置记录分类和具体事项&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;智能记录&lt;/strong&gt;：支持快速记录、时间选择、备注填写&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;历史管理&lt;/strong&gt;：查看、编辑、删除历史记录&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多维统计&lt;/strong&gt;：按事项或类型统计，支持日/周/月/年趋势分析&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据备份&lt;/strong&gt;：支持Excel和JSON格式导入导出&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;使用场景&#34;&gt;使用场景
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;运动健身&lt;/strong&gt;：记录俯卧撑、跑步、游泳等运动数据&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;学习成长&lt;/strong&gt;：跟踪阅读、编程、背单词等学习时间&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;生活习惯&lt;/strong&gt;：记录睡眠、喝水、发呆等日常活动&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;费用管理&lt;/strong&gt;：记录各类垫付费用，方便报销和统计&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;你想记录的任何场景&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;技术特点&#34;&gt;技术特点
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;本地存储&lt;/strong&gt;：使用本地存储，数据不依赖云端&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;微信风格&lt;/strong&gt;：界面与微信保持一致，学习成本低&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;流畅交互&lt;/strong&gt;：滑动条实时反馈、动画过渡&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据安全&lt;/strong&gt;：支持备份迁移，防止数据丢失&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你可以搜索&amp;quot;智控时光&amp;quot;体验一下，它完全是用AI帮助我开发出来的。&lt;/p&gt;
&lt;h3 id=&#34;关于智控时光小程序的详细使用指南请参考以下链接&#34;&gt;关于“智控时光”小程序的详细使用指南，请参考以下链接：
&lt;/h3&gt;&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://corev.cn/guides/zksg-guide&#34; &gt;智控时光小程序使用指南&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;给同样不会写代码的你&#34;&gt;给同样不会写代码的你
&lt;/h2&gt;&lt;p&gt;如果你和以前的我一样，有产品想法但苦于不会写代码，我强烈建议你尝试一下AI编程：&lt;/p&gt;
&lt;h3 id=&#34;第一步明确你的产品需求&#34;&gt;第一步：明确你的产品需求
&lt;/h3&gt;&lt;p&gt;这是最重要的。AI能帮你实现，但不知道你要实现什么。&lt;/p&gt;
&lt;p&gt;建议你写一份简单的产品文档，包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;产品目标&lt;/li&gt;
&lt;li&gt;核心功能&lt;/li&gt;
&lt;li&gt;用户场景&lt;/li&gt;
&lt;li&gt;界面风格&lt;/li&gt;
&lt;li&gt;技术约束（比如&amp;quot;使用微信小程序&amp;quot;、&amp;ldquo;本地存储&amp;quot;等）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;第二步用自然语言描述需求&#34;&gt;第二步：用自然语言描述需求
&lt;/h3&gt;&lt;p&gt;不用学习技术术语，像和人说话一样告诉AI你的想法。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;要点：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;描述要具体，避免模糊词汇&lt;/li&gt;
&lt;li&gt;提供示例和数值&lt;/li&gt;
&lt;li&gt;说明期望的用户体验&lt;/li&gt;
&lt;li&gt;描述边界条件和异常情况&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;第三步逐步验证和迭代&#34;&gt;第三步：逐步验证和迭代
&lt;/h3&gt;&lt;p&gt;不要试图一次性完成所有功能。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;建议流程：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;让AI先实现核心功能（如记录页面）&lt;/li&gt;
&lt;li&gt;在微信开发者工具中测试效果&lt;/li&gt;
&lt;li&gt;用自然语言描述发现的问题或需要优化的地方&lt;/li&gt;
&lt;li&gt;让AI修改代码&lt;/li&gt;
&lt;li&gt;继续测试和优化&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;第四步功能验证&#34;&gt;第四步：功能验证
&lt;/h3&gt;&lt;p&gt;AI生成的代码通常很好，但你也需要理解大致逻辑，知道代码在做什么。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;建议：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;让AI解释关键代码的作用&lt;/li&gt;
&lt;li&gt;在开发者工具中查看网络请求和数据存储&lt;/li&gt;
&lt;li&gt;在真机上测试所有功能&lt;/li&gt;
&lt;li&gt;遇到问题时，详细描述场景和现象&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;第五步学习基础知识&#34;&gt;第五步：学习基础知识
&lt;/h3&gt;&lt;p&gt;在与AI对话中，你可能会遇到一些技术术语，比如&amp;quot;本地存储&amp;rdquo;、&amp;ldquo;生命周期&amp;rdquo;、&amp;ldquo;事件绑定&amp;quot;等。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;建议：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在开发者工具中查看相关文档&lt;/li&gt;
&lt;li&gt;在网上搜索相关资料&lt;/li&gt;
&lt;li&gt;向AI提问，了解技术细节&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你对技术越了解，AI就越能理解你的需求。&lt;br&gt;
你不需要学习复杂的技术，但应该掌握基本的开发知识框架。&lt;br&gt;
比如在本案例中，你要了解小程序的基本架构，要调整样式或逻辑，要分别改哪个文件等。还要知道写好后，如何上传、提交审核、发布上线。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;持续学习，不会错。&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;延伸阅读：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://corev.cn/guides/zksg-guide&#34; &gt;智控时光小程序使用指南&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
</description>
        </item>
        
    </channel>
</rss>
