十倍速開發:AI時代的Cursor編程手記
王堯
商品描述
本書是基於 Web 的博客系統 BlogN 的開發過程,采用人與 AI 工具對話的形式,記錄 AI 輔助編程工具 Cursor 在實際項目開發中的應用過程。書中不僅展示 AI 工具在技術決策、代碼生成和問題解決及優化方面的強大能力,還深入探討 AI 工具的特性、最佳實踐及 AI 技術對傳統編程的沖擊。通過具體的案例,本書揭示 AI 工具在編程中的優勢,如快速生成高質量代碼、處理復雜邏輯等,同時也指出其局限性,如對復雜問題理解不足、可能出現錯誤和幻覺問題等,還示範如何通過自然語言指令驅動 AI 工具完成任務,如何對生成的代碼進行審查和優化,以及在 AI 工具失效時如何及時介入並解決問題。這些內容將為讀者傳達最新的 AI 輔助編程理念並提供寶貴的實戰經驗,幫助讀者理解如何在實際開發中合理利用 AI 工具,提升開發效率。
全書共 15 章,詳細描述從項目規劃、技術選型、開發環境搭建,到各個功能模塊的實現及最終的性能優化和測試的全過程,不僅涵蓋後端服務的搭建、數據庫設計與優化,還涉及前端界面的開發和用戶體驗的提升,全面展示與傳統編程過程不同的人與 AI 工具協同的開發方式。
本書面向有經驗的軟件開發者,尤其是那些希望在 AI 時代提升開發效率、掌握新開發方法的專業人士。無論是在個人項目中尋求高效開發,還是在大型團隊中探索新的協作模式,本書都能為讀者提供實用的指導和啟發。
作者簡介
王堯(左輕侯),畢業於中南大學,先後在Borland、微軟、IBM、VMware等公司擔任軟件開發工程師,有20余年軟件開發經驗,涉及桌面軟件、集成開發工具、軟件開發流程和質量控制、數據庫內核、分布式系統等多個領域。
目錄大綱
第 1 章 AI 輔助編程概述.............................. 1
1.1 核心技術原理...............................................1
1.2 AI 輔助編程的開發流程 .............................2
典型開發流程...............................................2
1.3 常用 AI 輔助編程工具 ................................4
1.4 AI 輔助編程與傳統編程的對比 .................4
1.5 氛圍編程.......................................................5
第 2 章 BlogN 系統開發項目簡介 ................ 7
2.1 背景...............................................................7
2.2 BlogN 系統概述...........................................7
2.3 功能需求.......................................................8
2.3.1 用戶管理...........................................8
2.3.2 積分管理...........................................8
2.3.3 博客文章管理...................................8
2.3.4 圖片管理...........................................9
2.3.5 博客文章分類...................................9
2.3.6 評論管理...........................................9
2.3.7 留言本管理.......................................9
2.3.8 訂閱...................................................9
2.3.9 RSS 發布.........................................10
2.3.10 搜索...............................................10
2.4 技術選型.....................................................10
2.4.1 後端技術棧.....................................10
2.4.2 前端技術棧.....................................11
2.5 架構模式.....................................................12
2.5.1 MVC 模式.......................................12
2.5.2 Ajax+JSON 實現前後端分離 ........12
2.6 系統架構設計.............................................12
2.6.1 總體架構.........................................12
2.6.2 後端項目文件及目錄結構.............13
2.6.3 數據庫設計.....................................14
2.6.4 前端架構設計.................................15
2.7 用戶界面設計 ............................................16
2.7.1 用戶界面設計原則.........................16
2.7.2 關鍵頁面.........................................17
第 3 章 開發環境和工具.............................20
3.1 開發環境 ....................................................20
3.2 Cursor .........................................................20
3.2.1 簡介.................................................21
3.2.2 歷史.................................................21
3.2.3 基本使用.........................................21
3.2.4 核心功能.........................................22
3.2.5 高級功能.........................................26
3.2.6 規則.................................................28
3.2.7 價格與成本.....................................29
3.2.8 小結.................................................30
3.3 開發實踐 ....................................................30
第 4 章 數據庫遷移 ....................................31
4.1 準備工作 ....................................................31
4.2 執行遷移 ....................................................32
4.3 小結 ............................................................35
第 5 章 測試頁面創建.................................36
5.1 開發環境配置 ............................................36
5.1.1 配置 Remote Explorer ....................36
5.1.2 開發環境初始化.............................37
5.1.3 Python 虛擬環境 venv....................38
5.1.4 安裝依賴.........................................39
5.1.5 生成測試頁面.................................40
5.1.6 配置 Apache ...................................42
5.1.7 配置數據庫連接.............................44
5.1.8 配置 Git 環境..................................47
5.2 評審生成的代碼.........................................48
5.2.1 blogn2.conf......................................49
5.2.2 blogn2-service .................................50
5.2.3 run.py...............................................50
5.2.4 src/main.py ......................................51
5.2.5 src/database.py.................................52
5.2.6 src/routes/test.py..............................54
5.2.7 src/routes/user.py.............................55
5.2.8 目錄結構.........................................56
5.3 一個安全漏洞.............................................57
5.4 相關知識點介紹.........................................59
5.4.1 CORS 簡介......................................59
5.4.2 FastAPI 的路由機制.......................60
5.4.3 FastAPI 的異步引擎和同步引擎 .................................................61
5.4.4 SQLModel 簡介..............................62
5.4.5 Python 的高級語法.........................63
第 6 章 生成首頁 ....................................... 64
6.1 def_page 分支.............................................64
6.2 靜態頁面.....................................................65
6.2.1 生成首頁結構.................................65
6.2.2 用戶界面調整.................................69
6.2.3 相關問題.........................................71
6.3 網站元數據.................................................72
6.3.1 生成頁面.........................................72
6.3.2 代碼分析.........................................74
6.4 MVC 模式...................................................81
6.4.1 基於 MVC 模式重構......................82
6.4.2 修正問題.........................................85
6.4.3 代碼分析.........................................86
6.5 清理代碼.....................................................93
6.6 最新加入博客、最熱門博客和最近評論.............................................................95
6.6.1 第 一次生成代碼.............................95
6.6.2 修正“最近評論”列表卡片.........97
6.6.3 “你在騙人”...................................98
6.6.4 大語言模型的幻覺.......................103
6.7 頭像...........................................................104
6.8 網站介紹 ..................................................107
6.9 最近留言 ..................................................108
6.10 最新博文摘要 ........................................ 111
6.11 代碼合並 ................................................ 114
6.11.1 重構代碼..................................... 114
6.11.2 拉取請求..................................... 116
6.11.3 評審代碼.....................................120
6.11.4 Cursor 的 Bugbot ........................122
6.11.5 完成代碼合並.............................126
第 7 章 單元測試......................................127
7.1 pytest 簡介................................................127
7.2 創建單元測試代碼 ..................................129
7.3 代碼覆蓋率 ..............................................132
7.4 單元測試和集成測試 ..............................136
7.5 數據庫汙染 ..............................................139
7.6 代碼分析 ..................................................141
7.6.1 單元測試示例...............................142
7.6.2 集成測試示例...............................146
7.6.3 缺點...............................................150
7.7 合並代碼前總結 ......................................151
7.7.1 測試統計.......................................151
7.7.2 測試覆蓋範圍...............................151
7.7.3 測試方法列表...............................151
7.7.4 運行測試.......................................152
7.7.5 值得註意的地方...........................153
7.8 代碼合並 ..................................................154
第 8 章 性能與緩存層...............................156
8.1 對系統性能的考慮 ..................................156
8.2 一個數據庫性能問題 ..............................157
8.3 緩存機制的選擇 ......................................160
8.4 FastAPI 工作進程的生命周期................165
8.5 實現緩存代碼 ..........................................168
8.5.1 實現基本代碼...............................168
8.5.2 使代碼運行...................................171
8.5.3 單元測試.......................................174
8.5.4 性能測試腳本...............................177
8.6 代碼合並 ..................................................184
第 9 章 生成博客頁面 .............................. 187
9.1 生成基本頁面...........................................187
9.2 調整界面風格...........................................190
9.3 “分類列表”卡片的動態化.....................191
9.4 單元測試...................................................193
9.5 “最近評論”列表卡片的動態化和 Web 組件復用...................................................197
9.6 博客文章摘要列表卡片的動態化 ..........200
9.6.1 基本代碼.......................................200
9.6.2 分頁功能.......................................203
9.6.3 分類...............................................204
9.7 數據庫升級...............................................207
9.8 代碼合並與分析.......................................208
9.8.1 前端組件層...................................209
9.8.2 後端 API 層...................................212
9.8.3 數據庫模型層...............................214
9.8.4 數據訪問層...................................214
9.8.5 業務邏輯層...................................215
9.8.6 數據流程.......................................216
第 10 章 生成博客文章頁面..................... 217
10.1 基本頁面.................................................217
10.2 界面調整.................................................220
10.3 使用真正的鏈接.....................................222
10.4 多個圖片附件.........................................223
10.5 RSS 訂閱.................................................226
10.6 代碼重構與合並.....................................229
第 11 章 用戶管理.................................... 234
11.1 身份認證與授權.....................................234
11.1.1 基於 JWT 的解決方案 ...............234
11.1.2 數據庫更新 .................................236
11.1.3 用戶登錄功能 .............................241
11.1.4 實現個人資料頁面 .....................245
11.1.5 通用權限管理器 .........................251
11.1.6 後端的令牌管理 .........................254
11.1.7 前端的令牌管理 .........................255
11.2 用戶信息管理.........................................258
11.2.1 重置用戶密碼.............................258
11.2.2 數據庫表的自增字段.................262
11.2.3 實現註冊碼管理頁面.................264
11.2.4 新用戶註冊.................................265
11.2.5 用戶列表.....................................268
11.2.6 緩存和測試.................................274
11.3 代碼重構與合並 ....................................278
第 12 章 博客文章管理.............................280
12.1 發表博客文章 ........................................280
12.1.1 基本的發表功能.........................280
12.1.2 上傳圖片.....................................282
12.1.3 調試與重構.................................288
12.2 修改博客文章 ........................................291
12.3 刪除博客文章 ........................................293
12.4 支持多張圖片 ........................................298
12.5 支持 Markdown 格式.............................301
12.6 代碼重構與合並 ....................................305
第 13 章 評論和留言本管理 .....................307
13.1 評論 ........................................................308
13.1.1 發表評論.....................................308
13.1.2 刪除評論..................................... 311
13.1.3 評論分頁.....................................312
13.2 留言本 ....................................................317
13.2.1 留言本頁面.................................318
13.2.2 主題頁面.....................................321
13.2.3 發表留言.....................................322
13.3 緩存覆蓋 ................................................323
13.4 代碼重構與合並 ....................................324
第 14 章 訂閱功能及其他.........................325
14.1 訂閱功能 ................................................325
14.1.1 訂閱博客.....................................325
14.1.2 廣播博客文章.............................328
14.1.3 顯示訂閱的博客文章.................331
14.1.4 管理訂閱博客.............................333
14.2 雜項 ........................................................335
14.2.1 維護個人資料.............................335
14.2.2 設置個人介紹.............................336
14.2.3 維護分類.....................................338
14.2.4 管理友情鏈接.............................339
14.2.5 更新全局統計信息.....................339
14.2.6 凍結用戶.....................................340
14.3 代碼重構與合並.....................................340
14.4 數據庫更新.............................................343
14.4.1 重新計算統計信息.....................343
14.4.2 增加索引.....................................344
14.4.3 統計信息的實時計算.................345
第 15 章 基於 BERT 的全文檢索 ............. 348
15.1 語義檢索與 BERT 技術.........................348
15.2 技術棧.....................................................349
15.2.1 向量化數據的存儲.....................349
15.2.2 封裝了BERT 功能的Python 庫...349
15.2.3 針對中文優化的預訓練模型.....349
15.3 初始化設置 ............................................350
15.4 表結構和分段存儲 ................................351
15.5 搜索頁面的實現 ....................................355
15.6 向量化數據的更新和刪除....................359
15.7 已有數據的向量化 ................................362
15.8 相似度和搜索調優 ................................364
15.8.1 相似度和閾值.............................365
15.8.2 計算片段相似度.........................365
15.8.3 計算整體相似度.........................366
15.8.4 搜索調優.....................................368
後記:未完成的工作 ..................................370

