AI编程:[体验]从 0 到 1 开发一个项目的初体验
一、开发信息
- 开发时间:1.5-2天
- 工具使用:
- 不熟练,开发本项目前1天,才简单使用了Cursor的功能
- 功能复杂度:
- 开发的功能相对简单。
- 页面:2个,登录页面,个人中心页面
- 功能:5个,登录注册、个人信息、修改密码、退出登录、弹窗提示
- 技术复杂度:
- 前后端分离,含前端(vue)和后端(Java)
- 痛点问题:
- 后端:生成的代码存在版本兼容性问题,需要花费大量时间去调试和修正
- 前端:由于对vue仅限了解,所以在解决比较普通的问题时,若AI解决不了,于我而言也是一个痛点问题
- 工具:AI工具在解决问题时,存在答非所问,张冠李戴的情况,导致耗费大量时间去调试错误
- 提示词:输入的提示词可能不够好,导致生成的质量不达预期
二、开发模式
基于当前AI编程助手所具备的能力,从实践得出的如下内容。
全栈开发模式
- 适用用户:
- 全栈开发者:在意代码的有效性,也在意代码的优美和结构
- 非技术人员:更在意代码的有效性,而非代码的优美和结构
- 适用场景:
- 团队维度:有全栈开发者的团队或初创公司;无技术人员的公司;
- 项目维度:验证性项目的MVP版本;一次性项目,如可完整交付的项目。
- 风险提示:
- 技术盲区:单端能力缺失,将显著降低效率。如:一名前端,不懂后端,用Cursor开发,遇到错误反复调试不通时,过程很痛苦,效率也很低。
专业开发模式(现状)
- 适用用户:
- 专业开发者:前端、后端
- 适用场景:
- 团队维度:前端、后端、测试、运维等各岗位俱全,且分工明确的团队
- 项目维度:长期运营迭代的复杂项目
- 实施路径:
- 第一步:基于脚手架搭建项目(1分钟生成+100%可用)
- 第二步:基于模板生成代码(1分钟生成+100%可用)
- 第三步:AI助手生成代码片段(使用AI的关键环节,目标:开发效率提升40%以上)
- 实施说明:
- 第一步和第二步,需要团队或开发者,沉淀脚手架和模板。若当前没有沉淀,也可借助AI来快速生成并沉淀脚手架和模板。
- 第一步和第二步,若采用AI生成代码,需要花时间编写良好的提示词,且生成的代码需要大量调试,效率和质量,都不如基于脚手架和模板 生成的代码来的好。
- 第三步,专业开发者,借助AI助手生成本技术栈的代码,效率会得到极大提升。
- 最佳实践:
- 复用:AI生成代码时,可询问AI有没有现成的组件或框架,避免用AI从0到1造轮子。
- 质量:AI生成的每一行代码,都必须review,否则没办法保证质量。
- 效率:开发者清楚的知道,要实现什么功能,要改哪里的代码,用AI辅助开发就会很快。
- 熟练:对AI助手的熟练程度,对编码效率的影响很大,一定要多用,尽快熟练起来。
总结:综合对比
- 如果你是一名非技术人员,无所谓代码不代码,只要开发项目就行,那么建议使用全栈开发模式。
- 如果你是一名专业开发者,那肯定有自己熟悉的技术栈和沉淀,那么建议使用专业开发模式。
- 如果你是一名全栈开发者,完全可以按照专业开发模式的实施路径来执行,速度会更快,效果会更好,因此建议将全栈开发模式和专业开发模式结合起来使用。
- 最后,专业开发模式的实施路径,可以通过Agent串起来,形成一个工作流,进一步提升效率。
个人理解
- 核心目的:使用AI是为了快速开发项目,而不是为用AI生成代码。因此不是所有代码都要通过AI来生成。
- 未来已来:可预测未来AI会越来越强,开发门槛只会越来越低
- 超级个体:懂产品+技术全栈(前端、后端、测试、运维)
- 系统工程:从原型图开始,UI设计稿,到前端代码生成,后端代码生成,再到测试用例生成,测试用例执行,通过智能体平台全部自动化(Agent或工作流),但效果可能堪忧。
- 提示词
- 提示词写不好怎么办?
- 采用Prompt模板的方式,来简化和加速提示词的编写
- 通过调用大模型来优化Prompt,然后沉淀为Prompt模板
- 提示词写不好怎么办?
三、实践遇到的问题
Cursor后端:第三方Jar包的版本兼容性问题
Cursor错误分析:在cursor上提问如下错误,提示是spring-security的问题,但实际是springboot3与mybatis-plus集成的版本兼容问题
说明:本质是springboot 3,集成mybatis-plus的版本不兼容导致的问题。
- 错误1:Invalid value type for attribute ‘factoryBeanObjectType’: java.lang.String
- 解决:mybatis-plus 3.5.3.2 中mybatis-spring版本为2.1.2,升级为3.0.3
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.2</version><exclusions><exclusion><artifactId>mybatis-spring</artifactId><groupId>org.mybatis</groupId></exclusion></exclusions></dependency>
<dependency><artifactId>mybatis-spring</artifactId><groupId>org.mybatis</groupId><version>3.0.3</version></dependency>
- 错误2:Bean named ‘ddlApplicationRunner’ is expected to be of type ‘org.springframework.boot.Runner’ but wa
- 分析:因为使用的是springboot 3,应该使用mybatisplus3
- 参考:https://blog.csdn.net/weixin_46211609/article/details/135552632
- 解决:mybatis-plus 3.5.3.2 升级为 mybatis-plus 3.5.5
- 最终方案:推荐基于脚手架做项目初始化
Cursor前端:弹窗一直展示,且无法关闭的问题
- 现象:生成的代码,连续报错,一个一个解决后,最后还是弹窗还是一直显示着,且无法关闭。
- 原因:最终咨询前端同学,发现cursor一开始生成的弹窗组件代码就有问题,所以效果一直不达预期。
- 方案:删除掉弹窗组件相关的代码,让cursor重新帮忙生成一个苹果样式的弹窗方法,效果达到预期。
Trae前端:生成代码失败,可新建会话,重新对话
- 分析:可能是我一直在一个 Builder 对话窗口中,进行提问并生成代码,累积的上下文太长,导致Trae生成失败。就像人类注意力会在阅读长文时逐渐分散一样,模型处理特长文本时的表现也会大打折扣。所以在实际应用中,短小精悍往往比冗长絮叨更有效。
- 方案:在 Builder 中创建新对话,为每个不同的任务开启新的 Builder 对话,保持智能体对话简短。
- 原则:
- 一次只处理一个任务,避免思维混乱;
- 将任务规模控制在上下文窗口范围内,确保模型能够充分理解;
- 对于大型项目,善用检索增强,让AI能够精准定位并利用关键信息。
Trae前端:在使用回退到本轮对话发起前功能时,导致代码被回滚
- 分析:没有将之前的代码提交到Git,导致回滚后找不回之前的代码,浪费了大量时间。
- 方案:每个不同的任务或功能生成且调试完后,记得一定要提交代码,一定要通过Git来做版本管理。
Trace前端:与Trae多轮对话,问题仍然无法解决
- 分析:可能被之前的信息给影响了,陷入到了一个死循环里面
- 方案:
- 遇到多轮对话,还解决不了的问题,可以让Trae详细分析并解释问题,再基于分析去解决
- 更好的做法是,开启一个新的聊天(Chat)或编排(Builder)窗口,将新的问题单独提出来,然后观察新的结果。
相关文章:
AI编程:[体验]从 0 到 1 开发一个项目的初体验
一、开发信息 开发时间:1.5-2天工具使用: 不熟练,开发本项目前1天,才简单使用了Cursor的功能 功能复杂度: 开发的功能相对简单。页面:2个,登录页面,个人中心页面功能:5个…...
重读《人件》Peopleware -(9-1)Ⅱ办公环境Ⅱ“你在这儿从早上9点到下午5点之间什么都做不成.“(上)
在我们经济的各个领域中,有一个广为流传的观点:“加班是生活的一部分。”这意味着工作量永远无法仅靠正常工作时间来完成。对我们来说,这似乎是一个值得怀疑的说法。确实,在软件行业里,加班是一种常见现象,…...
10前端项目----商品详情页/滚轮行为
商品详情页面 商品详情组件发送请求获取相应商品详情信息组件展示数据 优化一下路由配置代码滚轮自动置顶 商品详情组件 路由配置 点击商品进行跳转—将Detail组件变成路由组件 从商品到详情,肯定需要传参(产品ID)告诉Detail是哪个商品,需要展示哪个商品…...
8. 深入Spring AI:自定义Advisor
1、前言 前面大篇幅介绍了关于Spring AI Advisor机制,并介绍了一些常见的内置的advisor。今天我们来自定义有一个Advisor。 2、快速开始 要自定义一个属于自己的Advisor,其实很自定义一个AOP一样简单。只需遵循以下步骤: 创建一个Advisor类,实现CallAroundAdvisor或Stre…...
常见网络安全攻击类型深度剖析(一):恶意软件攻击——病毒、蠕虫、木马的原理与防范
常见网络安全攻击类型深度剖析一:恶意软件攻击——病毒、蠕虫、木马的原理与防范 在网络安全的威胁体系中,恶意软件(Malware)是最古老、最常见的攻击形式之一。从早期的计算机病毒到如今的高级木马程序,恶意软件始终是…...
知识知多少——Matplotlib 库
文章目录 Matplotlib 库详解(新版)一、Matplotlib 核心概念1. 基本架构2. 两种编程接口 二、新版 Matplotlib 安装与配置安装配置中文显示(新版推荐方式) 三、基本绘图示例1. 折线图2. 柱状图(新版样式) 四…...
Linux实验课
一.ln指令使用 ln是link的缩写,在Linux中 ln 命令的功能是为某一个文件在另外一个位置建立一个同步的链接,当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的…...
MQTT学习资源
MQTT入门:强烈推荐...
linux centos7 python3安装
pyhton下载地址 https://www.python.org/downloads/ pycharm下载地址 https://www.jetbrains.com/pycharm/download/?section=mac 安装步骤 下载python3的包之前,要先安装相关的依赖包,用于下载编译python3: yum -y install zlib-devel bzip2-devel openssl-devel nc…...
【EDA】Multi-Net Routing(多网布线)
第六章:Multi-Net Routing(多网布线) 在VLSI物理设计中,多网布线(Multi-Net Routing)的目标是同时为多个网络(Nets)规划路径,避免布线资源冲突(如导线重叠、…...
1块智能电表=12路三相监测!ADW600自由拼装,适配多场景,即插即用,改造周期缩短50%!
在这个电力数字化浪潮汹涌的时代,如何高效、精准地管理电能,成为了众多企业关注的焦点。今天,我们要为大家介绍的,正是一款能够引领电能管理新风尚的产品——ADW600智能电表。 ADW600主模块: ADW600从模块:…...
Redis ⑥-string | hash | list
string类型基本介绍 Redis 中的字符串,是直接按照二进制的方式进行存储的。也就是说,在存取的过程中,是不会做任何编码转换的。存的是啥,取的时候就是啥。 Redis 的这个机制,就使得 Redis 非常适合用来存储各种各样的…...
动态规划(1)(java)(面试题)三步问题
题目: 三步问题。有个小孩正在上楼梯,楼梯有 n 阶台阶,小孩一次可以上 1 阶、2 阶或 3 阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模 1000000007。 示例 1: 输入:n 3 输…...
实时交互式AIGC系统开发:打造多模态数字人全栈解决方案
一、实时AIGC系统技术挑战 1.1 核心性能指标 指标 要求 实现难点 端到端延迟 <500ms 多模块流水线优化 多模态同步误差 <100ms 时间戳对齐机制 并发处理能力 100 QPS 分布式推理架构 生成内容一致性 跨模态对齐 联合embedding空间 1.2 系统架构设计 [语音输入] → [ASR]…...
tcp 和http 网络知识
1. 请简述TCP和HTTP的定义与基本概念 TCP:即传输控制协议(Transmission Control Protocol),是一种面向连接的、可靠的、基于字节流的传输层通信协议。它为互联网中的数据通信提供稳定的传输机制,在不可靠的IP层之上&a…...
伟世通与火山引擎深度合作 前沿AI智能座舱解决方案亮相上海车展
2025年4月24日,上海 —— 全球领先的汽车电子技术供应商伟世通与字节跳动旗下云服务平台火山引擎在2025上海车展联合举办新闻发布会,正式发布基于AI大模型的下一代智能座舱解决方案。该方案深度融合伟世通高性能域控平台与火山引擎豆包大模型的AI能力&am…...
中国250米土壤质地类型数据
土壤质地指土壤中砂粒、粉粒和黏粒的相对含量和组成。根据土壤质地的不同,可以将土壤分为砂土、壤土、黏土等类型。土壤质地对土壤的物理性质(如渗透性、保水性)和化学性质(如养分含量)有重要影响。 本数据集是以250米…...
springboot2.x升级到3.x 惨痛经验总结
一、前言(废话) 升级的缘由 都是因为:Spring 目录遍历漏洞(CVE-2024-38816) 可参考文章:springboot 修复 Spring Framework 特定条件下目录遍历漏洞(CVE-2024-38816) 然后就趁着工…...
【Python】保持Selenium稳定爬取的方法(防检测策略)
selenium 防检测策略的方法汇总: 合理设置延迟:请求间添加随机延迟 (2-10秒) 限制爬取频率:控制每小时/每天的请求量 轮换用户代理:准备至少10个不同的User-Agent 使用住宅代理:优先选择高质量的住宅代理IP 处理验…...
【Linux】进程优先级和进程切换
📝前言: 这篇文章我们来讲讲进程优先级和进程切换: 🎬个人简介:努力学习ing 📋个人专栏:Linux 🎀CSDN主页 愚润求学 🌄其他专栏:C学习笔记,C语言入…...
基于 Python(selenium) 的今日头条定向爬虫:根据输入的关键词在今日头条上进行搜索,并爬取新闻详情页的内容
该项目能够根据输入的关键词在今日头条上进行搜索,并爬取新闻详情页的内容。 一、项目准备 1. 开发环境配置 操作系统:支持 Windows、macOS、Linux 等主流操作系统,本文以 Windows 为例进行说明。Python 版本:建议使用 Python 3.8 及以上版本,以确保代码的兼容性和性能。…...
AIDL进程间通信
一、项目开启AIDL 在使用AIDL的模块下build.gradle 文件中添加以下代码 android {...buildFeatures {aidl true} }操作完需要rebuild 二、创建aidl服务接口 假设当前所需要的包名为com.jingluo.test_aidl ,那么aidl就需要处于同样的路径下,即如下目录…...
线程同步与互斥
系统11. 线程同步与互斥 1. 线程互斥 1-1 进程线程间的互斥相关背景概念 临界资源:多线程执⾏流共享的资源就叫做临界资源临界区:每个线程内部,访问临界资源的代码,就叫做临界区互斥:任何时刻,互斥保证有…...
腾讯一面面经:总结一下
1. Java 中的 和 equals 有什么区别?比较对象时使用哪一个 1. 操作符: 用于比较对象的内存地址(引用是否相同)。 对于基本数据类型、 比较的是值。(8种基本数据类型)对于引用数据类型、 比较的是两个引…...
某地农产品交易中心钢网架自动化监测项目
1. 项目简介 本项目规划建设现代物流产业园,新建6万平方米仓库,具体为新建3栋钢构仓库2万平方米,2栋砖混结构仓库1万平方米,3栋交易中心2万平方米,改造现有3栋3层砖混结构仓库1万平方米,配备智能化仓库物流…...
PGSql查看表结构以及注释信息
创建视图 CREATE OR REPLACE VIEW dbo.v_sys_tableinfo AS SELECT pc.relname AS tablename, pa.attname AS columnname, pt.typname AS columntype, CASE WHEN pa.attlen > 0 THEN pa.attlen::integer ELSE pa.atttypmod - 4 END AS columnlength, pa.attnotnull …...
C++23 中 constexpr 的重要改动
文章目录 1. constexpr 函数中使用非字面量变量、标号和 goto (P2242R3)示例代码 2. 允许 constexpr 函数中的常量表达式中使用 static 和 thread_local 变量 (P2647R1)示例代码 3. constexpr 函数的返回类型和形参类型不必为字面类型 (P2448R2)示例代码 4. 不存在满足核心常量…...
Linux服务器上mysql8.0+数据库优化
1.配置文件路径 /etc/my.cnf # CentOS/RHEL /etc/mysql/my.cnf # Debian/Ubuntu /etc/mysql/mysql.conf.d/mysqld.cnf # Ubuntu/Debian检查当前配置文件 sudo grep -v "^#" /etc/mysql/mysql.conf.d/mysqld.cnf | grep -v "^$&q…...
深度学习之卷积神经网络入门
一、引言 在深度学习蓬勃发展的今天,卷积神经网络(Convolutional Neural Network,简称 CNN)凭借其在图像识别、计算机视觉等领域的卓越表现,成为了人工智能领域的核心技术之一。从手写数字识别到复杂的医学影像分析&a…...
【kafka初学】启动执行命令
接上篇,启动:开两个cdm窗口 注意放的文件不要太深或者中文,会报命令行太长的错误 启动zookeeper bin\windows\zookeeper-server-start.bat config\zookeeper.properties2. 启动kafka-serve bin\windows\kafka-server-start.bat config\serv…...
MoE架构解析:如何用“分治”思想打造高效大模型?
在人工智能领域,模型规模的扩大似乎永无止境。从GPT-3的1750亿参数到传闻中的GPT-4万亿级规模,每一次突破都伴随着惊人的算力消耗。但当我们为这些成就欢呼时,一个根本性问题愈发尖锐:如何在提升模型能力的同时控制计算成本&#…...
【Qt】文件
🌈 个人主页:Zfox_ 🔥 系列专栏:Qt 目录 一:🔥 Qt 文件概述 二:🔥 输入输出设备类 三:🔥 文件读写类 四:🔥 文件和目录信息类 五&…...
Linux常见故障:排查思路与错误分析指南
引言 当Linux系统"生病"时,它不会说话但却会通过各种症状"求救"🆘!本文将带你建立系统化的故障排查思维,从磁盘到内存,从网络到服务,全方位掌握Linux系统的"把脉问诊"技巧。…...
基于随机变量的自适应螺旋飞行麻雀搜索算法(ASFSSA)优化BP神经网络,附完整完整代码
3. 麻雀搜索算法 麻雀群体分为两个角色,即发现者和跟随者。它们有三个行为:觅食、跟随和侦察。发现者的任务是寻找食物并告知跟随者食物的位置。因此,发现者需要在一个大范围内搜索,而跟随者的觅食范围通常较小。这是更新发现者位…...
vscode切换Python环境
跑深度学习项目通常需要切换python环境,下面介绍如何在vscode切换python环境: 1.点击vscode界面左上角 2.在弹出框选择对应kernel...
Gradle安装与配置国内镜像源指南
一、Gradle简介与安装准备 Gradle是一款基于JVM的现代化构建工具,广泛应用于Java、Kotlin、Android等项目的构建自动化。相比传统的Maven和Ant,Gradle采用Groovy或Kotlin DSL作为构建脚本语言,具有配置灵活、性能优越等特点。 在开始安装前…...
施工配电箱巡检二维码应用
在过去,施工配电箱的巡检主要依赖于纸质记录方式。巡检人员每次巡检时,都要在纸质表格上详细填写配电箱的各项参数、运行状况以及巡检时间等信息。这种方式在实际操作中暴露出诸多严重问题,信息易出现错误、数据会有造假现象、数据量庞大整理…...
全链路自动化AIGC内容工厂:构建企业级智能内容生产系统
一、工业化AIGC系统架构 1.1 生产流程设计 [需求输入] → [创意生成] → [多模态生产] → [质量审核] → [多平台分发] ↑ ↓ ↑ [用户反馈] ← [效果分析] ← [数据埋点] ← [内容投放] 1.2 技术指标要求 指标 标准值 实现方案 单日产能 1,000,000 分布式推理集群 内容合规率…...
第19章:Multi-Agent多智能体系统介绍
第19章:Multi-Agent多智能体系统介绍 欢迎来到多智能体系统 (Multi-Agent System, MAS) 的世界!在之前的章节中,我们深入探讨了单个 AI Agent 的构建,特别是结合了记忆、上下文和规划能力的 MCP 框架。然而,现实世界中的许多复杂问题往往需要多个智能体协同工作才能有效解…...
【C++游戏引擎开发】第25篇:方差阴影贴图(VSM,Variance Shadow Maps)
一、VSM 的核心思想 1.1 VSM 的核心思想 1.1.2 从深度到概率的转变 VSM 的核心创新在于将阴影判定从深度比较转换为概率估算。通过存储深度分布的统计信息(均值和方差),利用概率不等式动态计算阴影强度,从而支持软阴影并减少锯齿。 1.1.3 深度分布的统计表示 VSM 在阴…...
代码随想录打卡|Day27(合并区间、单调递增的数字、监控二叉树)
贪心算法 Part05 合并区间 力扣题目链接 代码随想录链接 视频讲解链接 题目描述: 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组࿰…...
yum包管理器
1.介绍 yum是一个shell前端软件包管理器,基于RPM包管理,能够从指定的服务器.自动下载RPM包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的安装包。 2.yum基本指令 查询yum服务器是否有需要安装的软件: yum list I grep xx软件列表. 安装指定的yum包&…...
Linux多线程技术
什么是线程 在一个程序里的多执行路线就是线程。线程是进程中的最小执行单元,可理解为 “进程内的一条执行流水线”。 进程和线程的区别 进程是资源分配的基本单位,线程是CPU调度的基本单位。 fork创建出一个新的进程,会创建出一个新的拷贝&…...
通过模仿学习实现机器人灵巧操作:综述(上)
25年4月来自天津大学、山东大学、瑞士ETH、南方科技大学、通用 AI 国家重点实验室、爱丁堡大学和中科院自动化所的论文“Dexterous Manipulation through Imitation Learning: A Survey”。 灵巧操作是指机械手或多指末端执行器通过精确、协调的手指运动和自适应力调制&#x…...
LLM数学推导——Transformer问题集——注意力机制——稀疏/高效注意力
Q13 局部窗口注意力的内存占用公式推导(窗口大小 ) 局部窗口注意力:解决长序列内存困境的利器 在注意力机制中,全局注意力需要计算序列中每个元素与其他所有元素的关联,当序列长度 N 较大时,权重矩阵的内…...
Git 入门知识详解
文章目录 一、Git 是什么1、Git 简介2、Git 的诞生3、集中式 vs 分布式3.1 集中式版本控制系统3.2 分布式版本控制系统 二、GitHub 与 Git 安装1、GitHub2、Git 安装 一、Git 是什么 1、Git 简介 Git 是目前世界上最先进的分布式版本控制系统。版本控制系统能帮助我们更好地管…...
系统架构师2025年论文《论软件架构评估》
论软件架构评估 摘要: 我所在的单位是国内某知名医院,2017 年 1 月医院决定开发全新一代某市医院预约挂号系统,我担任本次系统的架构师,主要负责整个系统的架构设计工作。该系统旨在优化医院挂号流程,提高患者就医体验,是医院应对医疗信息化变革和提升服务的重要举措。…...
基于51单片机的超声波液位测量与控制系统
基于51单片机液位控制器 (仿真+程序+原理图PCB+设计报告) 功能介绍 具体功能: 1.使用HC-SR04测量液位,LCD1602显示; 2.当水位高于设定上限的时候,对应声光报警报警&…...
抓包工具Wireshark的应用解析
一、Wireshark简介 Wireshark(前身为Ethereal)是一款开源、跨平台的网络协议分析工具,自1998年诞生以来,已成为网络工程师、安全专家及开发者的核心工具之一。它通过网卡的混杂模式(Promiscuous Mode)捕获…...
在 Java 项目中搭建和部署 Docker 的详细流程
引言 在现代软件开发中,Docker 已成为一种流行的工具,用于简化应用的部署和运行环境的一致性。本文将详细介绍如何在 Java 项目中搭建和部署 Docker,包括配置文件、代码示例以及流程图。 一、整体工作流程 以下是整个流程的概览:…...