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 對話,保持智能體對話簡短。
  • 原則:
    1. 一次只處理一個任務,避免思維混亂;
    2. 將任務規模控制在上下文窗口范圍內,確保模型能夠充分理解;
    3. 對于大型項目,善用檢索增強,讓AI能夠精準定位并利用關鍵信息。

Trae前端:在使用回退到本輪對話發起前功能時,導致代碼被回滾

[圖片]

  • 分析:沒有將之前的代碼提交到Git,導致回滾后找不回之前的代碼,浪費了大量時間。
  • 方案:每個不同的任務或功能生成且調試完后,記得一定要提交代碼,一定要通過Git來做版本管理。

Trace前端:與Trae多輪對話,問題仍然無法解決

  • 分析:可能被之前的信息給影響了,陷入到了一個死循環里面
  • 方案:
    • 遇到多輪對話,還解決不了的問題,可以讓Trae詳細分析并解釋問題,再基于分析去解決
    • 更好的做法是,開啟一個新的聊天(Chat)或編排(Builder)窗口,將新的問題單獨提出來,然后觀察新的結果。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77380.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77380.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77380.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LeetCode-392 判斷子序列

給定字符串 s 和 t &#xff0c;判斷 s 是否為 t 的子序列。 字符串的一個子序列是原始字符串刪除一些&#xff08;也可以不刪除&#xff09;字符而不改變剩余字符相對位置形成的新字符串。&#xff08;例如&#xff0c;"ace"是"abcde"的一個子序列&#…

Linux 系統監控大師:Glances 工具詳解助力自動化

看圖猜詩&#xff0c;你有任何想法都可以在評論區留言哦~ 摘要 Glances 是一款基于 Python 開發的跨平臺系統監控工具&#xff0c;集成了 CPU、內存、磁盤、網絡、進程等核心指標的實時監控能力&#xff0c;并支持命令行、Web界面、客戶端-服務器模式等多種使用場景。其輕量級…

Spring Boot 3.4.5 運行環境需求

&#x1f4dd; Spring Boot 3.4.5 運行環境要求 &#x1f33f; 1?? 基本需求 ?? JDK版本&#xff1a;最低 Java 17 &#x1f517; https://www.java.com/ 最高兼容至 Java 24 ?? 依賴框架&#xff1a;需搭配 Spring Framework 6.2.6 &#x1f517; https://docs.sprin…

在KEIL里C51和MDK兼容以及添加ARM compiler5 version編譯器

前言 我們想在一個keil里面可以打開32和51的文件&#xff0c;這樣就不需要兩個keil了 還有就是現在的keil&#xff0c;比如我用的是5.41的&#xff0c;就沒有5版本的處理器&#xff0c;所以要安裝 本篇文章我們來詳細講解如何實現上面說的兩個內容 準備的東西 1.ARM5編譯器 …

Flutter 彈窗隊列管理:支持優先級的線程安全通用彈窗隊列系統

在復雜的 Flutter 應用開發中&#xff0c;彈窗管理是一個常見難題。手動管理彈窗的顯示順序和條件判斷不僅繁瑣&#xff0c;還容易出錯。為此&#xff0c;我們實現了一個支持優先級的線程安全通用彈窗隊列管理系統。它能夠自動管理彈窗的顯示順序&#xff0c;支持條件判斷&…

鴻蒙NEXT開發剪貼板工具類(ArkTs)

import { pasteboard } from kit.BasicServicesKit; import { StrUtil } from ./StrUtil;/*** 剪貼板工具類* 需要權限&#xff1a;* ohos.permission.READ_PASTEBOARD // 允許應用讀取剪貼板。* author CSDN-鴻蒙布道師* since 2025/04/25*/ export class PasteboardUtil {…

FastAPI 零基礎入門指南:10 分鐘搭建高性能 API

一、為什么選擇 FastAPI&#xff1f; 想象一下&#xff0c;用 Python 寫 API 可以像搭積木一樣簡單&#xff0c;同時還能擁有媲美 Go 語言的性能&#xff0c;這個框架憑借三大核心優勢迅速風靡全球&#xff1a; 開發效率提升 3 倍&#xff1a;類型注解 自動文檔&#xff0c;…

【算法】BFS-解決FloodFill問題

目錄 FloodFill問題 圖像渲染 島嶼數量 島嶼的最大面積 被圍繞的區域 FloodFill問題 FloodFill就是洪水灌溉的意思&#xff0c;假設有下面的一塊田地&#xff0c;負數代表是凹地&#xff0c;正數代表是凸地&#xff0c;數字的大小表示凹或者凸的程度。現在下一場大雨&…

代碼隨想錄算法訓練營第三十七天|動態規劃part4

1049. 最后一塊石頭的重量 II 題目鏈接&#xff1a; 1049. 最后一塊石頭的重量 II - 力扣&#xff08;LeetCode&#xff09; 文章講解&#xff1a; 代碼隨想錄 思路&#xff1a; 理解為把石頭分成兩堆 使得兩堆的差值盡可能小 求這個最小值1 理解為往背包里裝物品 每個物品的…

(八)深入了解AVFoundation-采集:拍照功能的實現

引言 在上一篇文章中&#xff0c;我們初步完成了使用 AVFoundation 采集視頻數據的流程&#xff0c;掌握了 AVCaptureSession 的搭建與視頻流的預覽顯示。 本篇將繼續深入 AVFoundation&#xff0c;聚焦于靜態圖片采集的實現。通過 AVCapturePhotoOutput&#xff0c;我們可以…

git tag使用場景和實踐

背景 每次上線一個迭代&#xff0c;為了區分本次代碼的分支是哪個迭代的commit&#xff0c;可以給分支打上tag&#xff0c;這樣利于追蹤分支所屬迭代&#xff0c;如果devops沒有自動給分支打tag&#xff0c;需要自己來打 操作 1.查看當前tag git tag2.給分支打tag git tag…

從零開始掌握Linux數據流:管道與重定向完全指南

全文目錄 1 知識背景與核心概念1.1 操作系統的輸入輸出模型1.2 Shell 的中間人角色 2 重定向技術深度解析2.1 輸出重定向2.1.1 覆蓋寫2.1.2 追加寫2.1.3 錯誤重定向2.1.4 同時重定向 stdout 和 stderr 2.2 輸入重定向2.2.1 文件作為輸入源2.2.2 Here Document&#xff08;多行輸…

aws(學習筆記第三十九課) iot-core

文章目錄 aws(學習筆記第三十九課) iotcore(Internet Of Thing)學習內容:1. 整體架構1.1 代碼鏈接1.2 整體架構(概要)1.3 整體架構(詳細 )2. 代碼解析2.1 創建`IOT thing`2.2 創建`AWS IOT certificate`證書2.2.1 創建`lambda`需要的`role`2.2.2 創建`lambda`2.2.3 `lambd…

國家新政鼓勵游戲出海,全球化安全威脅如何解

本文作者&#xff1a;騰訊宙斯盾DDoS防護團隊 01 政策紅利釋放&#xff1a;游戲出海升級為“國家戰略工程” 01 4月21日&#xff0c;國務院新聞辦公室發布《加快推進服務業擴大開放綜合試點工作方案》&#xff0c;釋放了一個信號&#xff1a;首次將“游戲出海”列為戰略級工程&…

MobX 在 React 中的使用:狀態管理的新選擇

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 &#x1f35a; 藍橋云課簽約作者、…

Idea 配置 Git

1、下載Git 下載地址&#xff1a; Git - Downloading Package 2、win 打開 git bash &#xff0c;配置郵箱和用戶名 //配置郵箱 git config --global user.email "710419844qq.com" //配置全局用戶名 git config --global user.name "smelodys" 3、ide…

Vue3 + OpenLayers 開發教程 (四) 樣式配置與性能優化

1. 地圖樣式基礎概念 1.1 什么是地圖樣式&#xff1f; 地圖樣式是決定地圖要素&#xff08;點、線、面&#xff09;如何顯示的重要配置。在 OpenLayers 中&#xff0c;樣式主要包含以下幾個核心組件&#xff1a; Fill&#xff08;填充&#xff09;&#xff1a;控制面狀要素的…

【Nacos-安全與限流機制健全06 】

文章目錄 Nacos安全機制介紹Nacos代碼實現Nacos限流機制Nacos限流的代碼實現 Nacos安全機制介紹 一、Nacos安全控制機制 Nacos 提供了多種安全控制機制&#xff0c;以保證服務和配置的訪問安全&#xff1a; 身份驗證 (Authentication) Nacos 支持用戶身份驗證來防止未授權的訪…

自建開源遠程協助服務RustDesk —— 筑夢之路

開源項目 # 服務端https://github.com/rustdesk/rustdesk-server.git# 客戶端https://github.com/rustdesk/rustdesk.git 搭建服務端 需要使用的端口、協議 hbbs - RustDesk ID 注冊服務器 hbbr - RustDesk 中繼服務器默認情況下&#xff0c;hbbs 監聽 21115(tcp) , 21…

Jmeter中同步定時器使用注意點

1.設置數量不可大于總線程數量&#xff0c;不然會一直等待 2.設置數量必須與總線程數量成整數倍數&#xff0c;不然還是要一直等。 3.當配置的數量小于線程數時&#xff0c;最好把循環打開&#xff0c;避免最后一次未準備好的線程數量達不到并發數。