不会写代码也能开发程序?

AI让不会写代码的人,只要有清晰的产品需求,就能完成产品的开发、上线全过程

“不会编程,这个需求该怎么实现?“为了解决这个事,我曾经在网上搜索过很多相关内容,对低代码开发平台、中文编程等有了一些了解后,发现这些不仅没有让实现需求这件事变得简单,反而增加了大量的时间成本。但现在,AI编程能力突飞猛进的发展,为这个问题增加了一个新的选项。

一个不会写代码的业余爱好者

近两年,大部分时间在做与系统开发相关的工作。我来对接需求,提供解决思路,让项目能落地,再由公司专门的开发团队来实现。这是工作生涯中离编程最近的一次,但由于工作节奏一直比较紧凑,还没有系统的学习一门编程语言。

与其说爱好编程,不如说爱好解决问题,实现需求。谁又愿意不停的写代码呢?
我的核心能力领域是研究和创造各种提高工作、生产效率的工具和方法。
这些工具有些是软件产品,有些是方法论。我希望花大量时间研究出来的东西能让更多人受益,提升自身价值。
这正是我创建 corev.cn 这个网站的初衷。
corev.cn,核心价值实验室。
希望所有努力的人都能找到并提升自己的核心价值。

智控时光:一个真实的产品需求

最近我遇到一个很现实的问题:我想系统地记录自己的一些日常事项,但市场上的现有应用都不太符合我的需求。

我想要的功能很简单:

  • 可以自定义记录类型(比如运动、学习、娱乐、费用等)
  • 可以在每种类型下创建具体事项(比如运动下的"俯卧撑”、“仰卧起坐”)
  • 每种类型有不同的单位(个、公里、分钟、元等)
  • 可以记录数值、备注、时间
  • 可以查看历史记录
  • 可以做统计分析(日、周、月、年趋势)
  • 数据可以导入导出,方便备份

我试过几个应用,运动健康类应用,手动添加记录时主要以运动时长为主,不支持个性化的记录“个”、“次”等;时间管理类的,个性化支撑也有限,统计功能也不理想。
也许是这个需求太个性化了吧。
于是又萌生了自己做一个的想法。

AI编程的能力

自己写程序的想法,并不是突然出现的。
好多年前就有过尝试,但学习的路线不对。比如低代码开发、可视化编程等方法,也有一定的学习成本,如果想完整的实现编程,需要花大量时间去学习。并且小众的技术,文档和资料也比较少。学习成本并不一定比python、java等编程语言低。

2025年初,通过aardio接触到了AI编程,并尝试写了一个win系统下的桌面日历记事工具。
这时的AI还是以分析、问答为主,没有基础,问题提的不准确,生成的代码与想要的有很大差距;
9月份,又尝试用AI写待办事项类的时间管理微信小程序,断断续续花了近2个月的时间,完成度也不理想,AI会产生很多幻觉,把本身就不会编程的我们带偏,再加上后来研究了nextcloud+thunderbird实现跨平台的待办事项及日程管理(这个以后有机会单独写),最终没上线这个小程序。
个人觉得,到了2025年9月份,AI编程这个概念依然对不会编程的人非常不友好,并不像宣传的那么好用。
但通过近几天再次尝试,让我彻底改变了这个看法。

接下来我会分享我使用AI完成小程序开发的整个过程,希望对你能有启发。

第一步:准备工作

在微信公众平台注册一个小程序,并完成小程序备案。
安装最新的微信开发者工具,创建一个空白小程序。
以上基础工作不详细介绍,可以参考官方文档或搜索相关教程。

进入新创建的空白小程序后,找到扩展
alt text

安装CodeBuddy
安装CodeBuddy

安装后,会出现Codebuddy的图标,点击进入,选择Craft模式,选择GLM-4.7模型(或其它模型),即可通过对话框,告诉AI你想要做什么。
AI对话

第二步:产品需求描述

用自然语言,把想要的功能告诉AI。

“我想做一个记录日常活动的小程序,用户可以自定义类型和事项,记录数值,查看历史和统计数据。支持数据导入导出。”

提交后,你会发现AI在自动根据你的要求进行“思考”,并修改代码。你只需要配合它点“运行”或“保存”按钮。
与AI对话时,要尽量把问题说清楚。如果AI有建议或选项,要根据你的实际情况进行回答,这样AI才能更准确地理解你的需求。
这个过程花费的时间不会太长,AI就会完成一个产品的雏形,能跑起来的小程序。可以在模拟器或手机上进行测试。

第三步:逐步完善功能

由于我们不是专业的开发人员,与AI对话时描述的问题,可能会有一些不准确,或有一些遗漏,导致AI实现的功能与我们想要的可能会有偏差。需要我们把每个页面每个功能都测试一下,如果不符合预期,就需要继续与AI对话,修改代码。
这个过程很漫长。

分享几个能帮助我们快速与AI准确对话的方法:

1.录入真实数据,把数据和结果都描述给AI,告诉他应该是什么样的结果,让AI分析问题出在哪并修复问题。

“数据统计页面,分类——周——占比图,垫付费用显示1次,不正确,应为2次;饼图的数据也不对,应该为2次,300;事项占比分析也不对,应该为加油费2次300元。请分析该问题,并修复,同时检查其它地方有没有类似问题,如有,一同修复。”

AI会按你提供的数据结合代码进行分析,并进行修复。

2.把控制台打印的数据复制给AI,让他帮你分析问题并修复。

这就是控制台
这就是控制台

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
新记录newEntry {type: "垫付费用", item: "维修费", value: 11, note: "", date: "2025-12-23T09:10:01.122Z"}date: "2025-12-23T09:10:01.122Z"item: "维修费"note: ""type: "垫付费用"value: 11__proto__: Object  
我刚才新建了一条记录以上是新建后打印的结果
以下是我在历史记录页面打印的结果  
0:
date: "今天"
records: Array(3)
0:
date: "2025-12-23T09:10:01.122Z"
formattedTime: "01:10"
item: "维修费"
note: ""
originalIndex: 0
type: "垫付费用"
value: 11
__proto__: Object  
请分析formattedTime计算的是否正确如不正确请修复这个问题

AI同样会根据你提供的打印内容进行分析并修复问题。

3.提供CSS样式类名,让AI更准确的定位你要描述的问题

在微信开发者工具,找到布局,勾选可视化
可视化

在模拟器上点击有问题的元素,会自动定位到对应的代码。class后面就是类名,把这个复制给AI,有时候比我们描述几十个字的效果都好。
类名

“range-text时间范围不正确,截止时间应该为本周的最后一天,请修复这个问题”

AI会根据你提供的类名找到对应的代码,准确的分析你的诉求,进行修复。

随着使用的深入,与AI配合也会越来越默契,你也会总结出一些自己的沟通经验,欢迎分享。

4.分享几个我测试发现的真实问题,并与AI一起修复的对话片段

滑动条最大值问题

在开发历史记录编辑功能时,我发现了一个问题:滑动条的最大值是固定的100,但对于不同类型的事项,这个范围显然不合理。比如"垫付费用"可能录入400元,而"俯卧撑"可能只要几十个。

我与AI的对话:

我: “历史记录页面的编辑功能,滑动条最大值只有100,但像’垫付费用’这种可能录入400元,就超出了范围。这个滑动组件的最大值应该根据当前事项所属类型的单位动态调整。比如抗阻训练(个)→ 最大值可设200,有氧运动(公里)→ 最大值可设50,学习提升(分钟)→ 最大值可设600,垫付费用(元)→ 最大值可设2000或更高。”

AI的回答:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
// 获取当前类型信息
const selectedTypeInfo = types.find(t => t.name === currentType)
const sliderMax = selectedTypeInfo ? selectedTypeInfo.maxValue || 100 : 100

// 在类型管理页面增加最大值设置
const defaultTypes = [
  {id: '1', name: '抗阻训练', unit: '个', minValue: 1, maxValue: 100, stepValue: 1},
  {id: '2', name: '有氧运动', unit: '公里', minValue: 0.1, maxValue: 50, stepValue: 0.1},
  {id: '3', name: '学习提升', unit: '分钟', minValue: 1, maxValue: 1440, stepValue: 1},
  {id: '4', name: '休闲娱乐', unit: '分钟', minValue: 1, maxValue: 1440, stepValue: 1},
  {id: '5', name: '垫付费用', unit: '元', minValue: 0.01, maxValue: 2000, stepValue: 0.01}
]

AI不仅解决了问题,还提出了一个更好的数据结构:在类型定义时就预设了合理的最大值、最小值和步进值,并允许用户在"我的-管理类型-编辑类型"页面自行调整。

小数点输入问题

在手机端测试时,我发现输入框不允许输入小数点,这导致无法记录"跑步3.5公里"这样的数据。

我与AI的对话:

我: “在需要输入小数点位置,手机端测试不允许输入小数点。”

AI的分析和解决:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 问题:input type="number" 在某些手机上不显示小数点
// 解决方案:使用input type="digit" 并添加正则验证

inputValue(e) {
  let value = e.detail.value
  
  // 移除非数字字符(只允许数字和小数点)
  value = value.replace(/[^\d.]/g, '')
  
  // 处理多个小数点的情况
  const dotIndex = value.indexOf('.')
  if (dotIndex !== -1) {
    // 保留第一个小数点,移除后续的小数点
    value = value.substring(0, dotIndex + 1) + value.substring(dotIndex + 1).replace(/\./g, '')
    
    // 限制小数位数为2位
    const decimalPart = value.substring(dotIndex + 1)
    if (decimalPart.length > 2) {
      value = value.substring(0, dotIndex + 3)
    }
  }
  
  this.setData({
    value: value
  })
}

AI不仅告诉我问题所在(type="number" 在某些Android设备上的兼容性问题),还提供了完整的解决方案:改用 type="digit" 配合正则表达式验证,确保只能输入数字和小数点,且最多两位小数。

历史卡片布局优化

历史记录页面需要显示很多信息:类型、事项、数值、备注、时间等。如何让这些信息既完整展示,又不显得拥挤?

我与AI的对话:

我: “历史卡片优化建议:保持备注外其它内容的样式美观,不会被挤压变形。给备注位置设定最大显示区域,如果超出区域,支持滑动查看显示不全的内容。优化方案:record-main里分两列显示,左列显示record-value、record-name、record-type-badge,右列显示record-note。历史卡片上的时间,始终在父元素的右侧显示。”

AI的设计方案:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
.record-main {
  display: flex;
  flex-direction: row;
  align-items: flex-start;
}

.record-left {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 3em; /* 约等于5个汉字 */
  margin-right: 12px;
}

.record-right {
  flex: 1;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.record-note {
  max-height: 40px;
  overflow-x: auto;
  white-space: nowrap;
  text-overflow: ellipsis;
}

.record-time {
  align-self: flex-end;
  color: #999;
  font-size: 12px;
  margin-top: 8px;
}

AI完美实现了我的需求:左侧固定宽度显示核心信息,右侧弹性布局显示备注,时间始终在右侧。备注超出区域可以横向滑动查看。
AI优化后的效果

AI沟通技巧:如何让AI更好地理解你的需求

在与AI的对话中,我总结了一些实用的沟通技巧:

1. 描述问题时,提供具体场景

不好的描述: “统计页面有问题”

好的描述: “统计页面按周统计时,我选择2024年12月19日,应该显示包含这一周在内的最近8周数据,但实际上只显示了部分周。我希望看到完整的8周,即使某些周没有数据也要显示为0。”

2. 提供期望的行为描述

不好的描述: “输入框不行”

好的描述: “输入框只允许输入数字,数字保留2位小数。不允许输入数字外的其他内容。比如可以输入'3.5’,但不能输入’abc’或'3.567’。”

3. 说明技术约束和限制

不好的描述: “界面要好看”

好的描述: “界面风格简约,与微信风格一致。涉及的图标,使用微信内置的图标,不需要单独下载或创建图片。使用最新的微信开发文档及相关要求进行开发。”

4. 描述用户体验期望

不好的描述: “历史页面要好用”

好的描述: “历史记录页面,编辑某个事项的’数量’时,既可以用滑动条调整,也可以直接输入数字。滑动条的最大值应该根据当前事项所属类型的单位动态调整。滑动条要提供流畅的交互体验,拖动时数值要实时更新。”

5. 提供具体的数值和配置

不好的描述: “设置一些预置数据”

好的描述: “预置以下数据:

  1. 抗阻训练(按次数记录):俯卧撑、仰卧起坐、深蹲、引体向上
  2. 有氧运动(按公里记录):户外跑、室内跑步机、骑行、游泳
  3. 学习提升(按分钟记录):专业知识、技能拓展、读书、在线课程
  4. 休闲娱乐(按分钟记录):发呆、逛街、打游戏、看电影
  5. 垫付费用(按元记录):加油费、通行费、餐费、维修费”

40个文件,一个完整的产品

经过10多个小时的"对话开发”,我的小程序"智控时光"完成了。

  • 40个文件:包括10个页面、10个JS逻辑文件、10个WXSS样式文件、10个JSON配置文件
  • 5个核心页面:首页、记录、历史、统计、我的
  • 完整的生命周期管理:初始化、登录、数据存储、导入导出
  • 丰富的数据分析:支持日/周/月/年统计,趋势图、饼图可视化
  • 智能的交互体验:滑动条实时反馈、时间选择器、数据校验

这是我用AI开发的第一个完整产品。虽然功能不算复杂,但它证明了一个重要的事实:

只要有清晰的产品需求,任何人都可以借助AI完成产品的开发、上线全过程。

核心功能

  1. 自定义类型和事项:灵活配置记录分类和具体事项
  2. 智能记录:支持快速记录、时间选择、备注填写
  3. 历史管理:查看、编辑、删除历史记录
  4. 多维统计:按事项或类型统计,支持日/周/月/年趋势分析
  5. 数据备份:支持Excel和JSON格式导入导出

使用场景

  • 运动健身:记录俯卧撑、跑步、游泳等运动数据
  • 学习成长:跟踪阅读、编程、背单词等学习时间
  • 生活习惯:记录睡眠、喝水、发呆等日常活动
  • 费用管理:记录各类垫付费用,方便报销和统计
  • 你想记录的任何场景

技术特点

  • 本地存储:使用本地存储,数据不依赖云端
  • 微信风格:界面与微信保持一致,学习成本低
  • 流畅交互:滑动条实时反馈、动画过渡
  • 数据安全:支持备份迁移,防止数据丢失

你可以搜索"智控时光"体验一下,它完全是用AI帮助我开发出来的。

关于“智控时光”小程序的详细使用指南,请参考以下链接:

给同样不会写代码的你

如果你和以前的我一样,有产品想法但苦于不会写代码,我强烈建议你尝试一下AI编程:

第一步:明确你的产品需求

这是最重要的。AI能帮你实现,但不知道你要实现什么。

建议你写一份简单的产品文档,包括:

  • 产品目标
  • 核心功能
  • 用户场景
  • 界面风格
  • 技术约束(比如"使用微信小程序"、“本地存储"等)

第二步:用自然语言描述需求

不用学习技术术语,像和人说话一样告诉AI你的想法。

要点:

  • 描述要具体,避免模糊词汇
  • 提供示例和数值
  • 说明期望的用户体验
  • 描述边界条件和异常情况

第三步:逐步验证和迭代

不要试图一次性完成所有功能。

建议流程:

  1. 让AI先实现核心功能(如记录页面)
  2. 在微信开发者工具中测试效果
  3. 用自然语言描述发现的问题或需要优化的地方
  4. 让AI修改代码
  5. 继续测试和优化

第四步:功能验证

AI生成的代码通常很好,但你也需要理解大致逻辑,知道代码在做什么。

建议:

  • 让AI解释关键代码的作用
  • 在开发者工具中查看网络请求和数据存储
  • 在真机上测试所有功能
  • 遇到问题时,详细描述场景和现象

第五步:学习基础知识

在与AI对话中,你可能会遇到一些技术术语,比如"本地存储”、“生命周期”、“事件绑定"等。

建议:

  • 在开发者工具中查看相关文档
  • 在网上搜索相关资料
  • 向AI提问,了解技术细节

你对技术越了解,AI就越能理解你的需求。
你不需要学习复杂的技术,但应该掌握基本的开发知识框架。
比如在本案例中,你要了解小程序的基本架构,要调整样式或逻辑,要分别改哪个文件等。还要知道写好后,如何上传、提交审核、发布上线。

持续学习,不会错。

延伸阅读:

希望所有努力的人都能找到并提升自己的核心价值
使用 Hugo 构建
主题 StackJimmy 设计