SDD落地實(shí)戰(zhàn)、從0構(gòu)建一個(gè)AI助手,以及如何繞過那些技術(shù)深坑
在AI應(yīng)用蓬勃發(fā)展的今天,智能客服已成為各行各業(yè)的基礎(chǔ)設(shè)施。雖然Coze等平臺(tái)讓搭建客服助手變得容易,但這些方案存在一些局限:難以本地部署、依賴第三方平臺(tái)、存在數(shù)據(jù)安全風(fēng)險(xiǎn)。
基于這些考慮,我決定嘗試一種不同的路徑:使用SDD(規(guī)范驅(qū)動(dòng)開發(fā))方法,配合AI編程助手,獨(dú)立搭建一個(gè)完全可控的客服聊天系統(tǒng)。
2個(gè)目的:
1: SDD 的效果驗(yàn)證
2: 建設(shè)一個(gè)我完全可控的智能助手
前天晚上,我打開Cursor編輯器,給自己設(shè)定了一個(gè)目標(biāo):能否在兩個(gè)晚上的業(yè)余時(shí)間里,從零開始構(gòu)建一個(gè)功能完整的客服聊天智能體?
我當(dāng)時(shí)的預(yù)期并不樂觀——我要打造是一個(gè)包括前后端的完整的系統(tǒng),應(yīng)該算一個(gè)小型的應(yīng)用了。但結(jié)果,卻完全出乎我的意料。
一、基于SDD:用規(guī)范驅(qū)動(dòng)開發(fā)流程
我的起點(diǎn)很簡單:給Cursor一個(gè)清晰的指令。
“開發(fā)一個(gè)客服支持的智能體,包括前端和后端,前后端分離。支持的功能包括:
聊天會(huì)話管理(新增、刪除等),
聊天界面,設(shè)置(包括模型設(shè)置、知識(shí)庫設(shè)置,模型可以選擇,知識(shí)庫支持多個(gè)知識(shí)庫的知識(shí)導(dǎo)入、查看等)。
用戶通過前端和智能體溝通,智能體查詢相關(guān)的知識(shí)庫,然后給用戶適當(dāng)?shù)姆答?,支持流式和非流式?!?/p>
接下來,我啟動(dòng)了SPEC KIT框架的標(biāo)準(zhǔn)化流程:
第一步:需求規(guī)范(spec.md)Cursor將我的自然語言描述轉(zhuǎn)化為結(jié)構(gòu)化的功能需求文檔。24個(gè)具體需求點(diǎn),10項(xiàng)可衡量的成功標(biāo)準(zhǔn),每一個(gè)用戶故事都配有明確的驗(yàn)收條件。 我對(duì)生成的需求進(jìn)行了部分檢查和修訂
第二步:技術(shù)方案(plan.md)我補(bǔ)充了唯一的技術(shù)棧要求:“使用LangChain框架"
基于LangChain要求,Cursor設(shè)計(jì)了完整的架構(gòu)方案:
- 后端:FastAPI + LangChain + LangGraph + ChromaDB
- 前端:React + TypeScript + Vite
- 模塊化分離:agent、tools、prompt、api等各司其職
第三步:任務(wù)分解(tasks.md)這是最令人印象深刻的部分。Cursor生成了97個(gè)具體開發(fā)任務(wù),每個(gè)任務(wù)都精確到文件路徑:
- [ ] T024 實(shí)現(xiàn)向量搜索工具:backend/src/tools/vector_search_tool.py
- [ ] T034 創(chuàng)建聊天界面組件:frontend/src/components/ChatInterface.tsx自動(dòng)分析了任務(wù)依賴關(guān)系,標(biāo)注了哪些可以并行開發(fā)——前端界面與后端API可以同步推進(jìn),極大提升了開發(fā)效率。
第四步:一致性檢查運(yùn)行/speckit.analyze命令后,系統(tǒng)自動(dòng)發(fā)現(xiàn)了8個(gè)潛在問題:術(shù)語不一致、定義模糊等。這步預(yù)防性檢查,可能在后續(xù)開發(fā)中節(jié)省了數(shù)小時(shí)的調(diào)試時(shí)間。
完成產(chǎn)品的第一版展示如下(這個(gè)編輯器圖片移動(dòng)有問題,在最下面):
設(shè)置頁面:
二、遇到的問題:即使順風(fēng)順?biāo)搽y免偶爾逆流
開發(fā)過程并非完全一帆風(fēng)順,2個(gè)遇到的挑戰(zhàn)是:
挑戰(zhàn)一:Embedding模型
這是RAG系統(tǒng)的核心。
Cursor最初使用OpenAI的Embedding模型,但這對(duì)于國內(nèi)和本地部署都不理想。
然后我選擇使用Ollama 本地模型,但Ollama模型也不能下載下來
最后選擇了最簡單的langchain 自身攜帶的embedding 模型
挑戰(zhàn)二:python環(huán)境問題
python包依賴問題還是比較復(fù)雜,出現(xiàn)幾次pyhon包依賴版本的問題。例如使用的函數(shù)在安裝的版本中已經(jīng)不存在等。 不過解決問題不大。直接丟給Cursor即可
反思??環(huán)境和環(huán)境依賴管理是軟件管理復(fù)雜度的一個(gè)核心和關(guān)鍵。 Cursor這類工具也難以解決的。
三、變更與迭代:氛圍編程的流暢體驗(yàn)
項(xiàng)目開發(fā)完成后,變更難以避免。
Cursor體現(xiàn)了強(qiáng)大的能力,沒有考慮使用OpenSpec等流程,直接將問題反饋給Cursor
示例一:增加聊天記錄導(dǎo)出功能
我簡單描述:“用戶應(yīng)該能夠?qū)С瞿硞€(gè)會(huì)話的完整聊天記錄為文本文件?!?/p>
Cursor不僅添加了后端導(dǎo)出端點(diǎn),還生成了前端導(dǎo)出按鈕組件,并自動(dòng)更新了相關(guān)API文檔。
示例二:增加支持md文件導(dǎo)入知識(shí)庫
我簡單描述:“當(dāng)前知識(shí)庫加載僅僅支持pdf,txt等,需要支持md文件”
詳細(xì)截圖展示一下:(最后)
然后直接進(jìn)行結(jié)果檢查:
進(jìn)行功能驗(yàn)證也完全正常
這種氛圍編程的體驗(yàn)異常流暢:我不需要知道具體哪些文件需要修改,只需要關(guān)注功能需求本身。
這點(diǎn)應(yīng)該是Cursor的核心能力,確實(shí)使用起來非常的絲滑。
四、核心收獲:不只是代碼,更是方法論
兩個(gè)晚上后,我收獲包括:
??完整可用的智能客服核心
- 基于知識(shí)庫的精準(zhǔn)問答(RAG架構(gòu))【知識(shí)庫的效果需要繼續(xù)打磨】
- 流式/非流式雙響應(yīng)模式
- 直觀的聊天界面與會(huì)話管理
- 可擴(kuò)展的多模型支持框架
- 知識(shí)庫上傳與管理功能
??完整的開發(fā)資產(chǎn)包【SPEC】
- 97個(gè)任務(wù)的詳細(xì)開發(fā)清單
- 清晰的技術(shù)架構(gòu)文檔
- 模塊化、可維護(hù)的代碼結(jié)構(gòu)
- 隨時(shí)可查的API規(guī)范
??可復(fù)用的SDD工作流程
- 從需求到實(shí)現(xiàn)的標(biāo)準(zhǔn)轉(zhuǎn)化路徑
- 自動(dòng)化的一致性檢查機(jī)制
- 支持后續(xù)迭代的文檔基礎(chǔ)
結(jié)語:從代碼工人到系統(tǒng)架構(gòu)師
這次SDD開發(fā)經(jīng)歷,讓我體驗(yàn)到了一種全新的工作模式:我不再是那個(gè)埋頭解決語法錯(cuò)誤和調(diào)試細(xì)節(jié)的“代碼工人”,而是更像一個(gè)系統(tǒng)架構(gòu)師和產(chǎn)品設(shè)計(jì)師。
我的核心工作變成了:
- 定義清晰的需求目標(biāo)和成功標(biāo)準(zhǔn)
- 設(shè)計(jì)合理的系統(tǒng)架構(gòu)和模塊劃分
- 制定明確的接口規(guī)范和數(shù)據(jù)流
而具體的代碼實(shí)現(xiàn)、細(xì)節(jié)處理、錯(cuò)誤修復(fù),則交給了AI助手在SDD框架的約束下高效完成。
兩個(gè)晚上的時(shí)間,我不僅構(gòu)建了一個(gè)可用的客服系統(tǒng),更重要的是驗(yàn)證了一種面向未來的開發(fā)范式:
人類專注于高層設(shè)計(jì)和規(guī)范制定,AI負(fù)責(zé)細(xì)節(jié)實(shí)現(xiàn)和代碼生成。
這種分工協(xié)作的效率,遠(yuǎn)超出我最初的想象。
AI和工具能力持續(xù)快速增強(qiáng),我們唯一要做的是: 認(rèn)識(shí)到當(dāng)前AI的能力邊界,跟上AI能力的發(fā)展
或許,這就是下一代軟件開發(fā)的樣貌:更智能的工具、更嚴(yán)謹(jǐn)?shù)姆椒?、更高效的協(xié)作。
也許:想到就可以實(shí)現(xiàn)并不遙遠(yuǎn)
而我們,正站在這場變革的最前沿。
完整代碼(包括SDD的全部命令)已經(jīng)歸檔到github:https://github.com/renhongliang/chatAgent/tree/main,歡迎審閱。
我是AI時(shí)代原住民,歡迎關(guān)注我,一起在不確定的AI時(shí)代尋找確定性:
1:AI重構(gòu)研發(fā)范式:
AI時(shí)代,你最大的能力變遷:從“我不行”到“我能行”!
AI重構(gòu)軟件研發(fā)全流程走向落地!亞馬遜發(fā)布「AI驅(qū)動(dòng)開發(fā)」全新方法論,完整解讀十大核心原則
AI開發(fā)新范式——規(guī)范驅(qū)動(dòng)開發(fā)(SDD)【第三篇】:通過OpenSpec實(shí)現(xiàn)增量開發(fā)
一圖介紹清楚基于Spec Kit 框架的SDD(規(guī)范驅(qū)動(dòng)開發(fā))的詳細(xì)過程【SDD第二講]
五分鐘帶你理解AI時(shí)代的軟件研發(fā)新范式——SDD(規(guī)格驅(qū)動(dòng)開發(fā))?【SDD第一講】
華為《智能世界2035》揭示軟件未來:人機(jī)協(xié)同編程重塑軟件開發(fā)格局
2:AI重構(gòu)軟件組織:
AI組織是什么樣子?來自微軟的最新分析 – The Year of the Frontier Firm:
3:軟件工程本質(zhì)思考:
AI時(shí)代,重新溫習(xí)軟件工程經(jīng)典巨作,思考軟件工程的本質(zhì)
4: 模型本質(zhì)的認(rèn)識(shí):
5: 軟件智能測試:
AI在軟件測試中的理想與現(xiàn)實(shí):一場尚未到來的革命
歡迎關(guān)注我