iT邦幫忙

2025 iThome 鐵人賽

DAY 19
0
生成式 AI

30 天與 AI 同事打造系統的求生實錄系列 第 19

【Day 19】BUG修正實戰:規格對齊與變數統一的教訓

  • 分享至 

  • xImage
  •  

鐵人賽第19天,又是一個跟BUG奮鬥的一天。

在開始之前,我分享一個剛發現的一個不錯的維護方法。在這段時間與AI同事搏鬥,很容易發現不是給AI同事越多資訊他就會做得越好,因為AI同事無法判斷哪些是錯誤資訊,哪些資訊跟現在要處理的問題無關。
剛嘗試了一個方法感覺不錯,將你想叫AI同事做的事情範圍縮小,例如我想要修BUG,直接@相關檔案給他。
例如我想請他修Attachment的BUG,我給他的指令如下:

@backend/models/功能A.py  @backend/routers/功能A.py @backend/schemas/功能A.py  @backend/services/功能A_service.py @backend/tests/test_功能A.py 幫我檢查這些功能,把他實作了那些功能列出來,並排查有沒有有問題的地方

由於這些程式都是相關聯的,他會比較一體化的去處理,也不會受到其他功能程式影響。


今天處理之前出現的[Errno 11001] getaddrinfo failed錯誤,我查找了一段時間,發現由於我測試環境跟開發環境參數不同,測試時混用了導致有些連線參數出現問題,後來AI同事幫我修改不讓他混用後就正常了。

解決了這個問題,各個新增的功能果然出現的許多錯誤。
不過這類型的錯誤,我覺得比較像是,你請A去做API,請B去做功能呼叫A的API,結果A跟B沒有溝通好,A要的參數跟B呼叫的參數不同導致的錯誤。
這也讓我發現,跟AI同事合作,其實不像是跟一個人合作,而是像跟一個團隊合作,雖然他同時生成了好幾個部分,但其實這好幾個部分更像是不同人寫的。
因此,他生成完還要去告訴AI同事,有哪邊規格沒對齊,請AI同事再返工修正。
這個問題可能需要熟悉後,生成前要請他檢查是否一置,可以檢查要一直叫AI同事去修的次數,不過怎麼下指令就要去嘗試了。

在修BUG的時候還發現了一個問題,之前沒注意到在寫創造者的變數時,有些功能用created_by_id,有些功能則是使用created_by,這很容易讓AI同事造成混淆,因此我請AI同事統一變數名稱。

今天的進度主要在修BUG,134測試目前只剩下18測試待修正,明天應該可以把錯誤修正完成,之後就可以開始實作前端部份了。

以下為今天的研究流程


首先開始前的老樣子,請AI同事了解應用現況。
我給AI的指令:

@ai_context.md @README.md @軟體核心架構規劃.md @功能需求總覽.md   了解目前現況

等他了解之後,我先來解決一個錯誤 socket.gaierror: [Errno 11001] getaddrinfo failed,
這個錯誤訊息只有在新的測試檔案才會出現,但理論上他們應該跟舊的測試連線同一個資料庫,因此我研究了不少時間。
檢查之後發現有些參數測試跟正式環境的參數混用,導致連線時參數不正確導致錯誤,將正確資訊寫入就解決這個問題了。
接下來處理部分是宣告參數格式錯誤,
例如寫dict預期回傳字典但回傳的是USER格式,這類型錯誤都很好解決,把dict改成USER就可以了
還有部分是缺少參數呼叫,這類型錯誤我判斷,雖然生成時看起來都是同一個AI同事在寫,
但這類型錯誤其實很像建構時是A同事建構,但呼叫的程式是B同事寫,他們在建構時由於沒有溝通好導致出錯,
要在提醒AI同事,請他修正這個錯誤

這個狀況讓我覺得,與AI同事合作不像是跟一個人合作,而是像跟一群人合作,但他們內部有時候會沒溝通好,
所以需要我去回饋AI同事,請AI同事在修正。
熟了之後就大概知道會有哪邊出錯,如果常常建構也可以在建構前事先請AI同事注意這個部分,或者請他建構完去檢查這部分,會有效減少返工的次數。

接下來幾乎都是貼錯誤碼,請AI同事修正,我再去看是否修正成功。
不過由於有前面的經驗,今天遇到的問題都是這個流程就可以解決的。

有些比較難處理的,我會利用將相同功能使用的程式一起丟給他,請他分析。
我給AI的指令:

@backend/services/meeting_note_service.py @backend/models/meeting_note.py  @backend/schemas/meeting_note.py @backend/routers/meeting_notes.py @backend/tests/test_meeting_notes.py 檢查可能問題  

這次的錯誤很多,但都還在AI同事可解的範圍內,只是由於要幫AI同事複製他所需要的錯誤訊息,花了比較多的時間。
在修BUG的時候,發現有一個地方有點問題,他在變數命名時,有些功能用created_by_id有些功能則是created_by,我覺得這個地方容易造成混淆,因此請AI同事將這些部分清理出來做統一。

今天將134個測試通過了116個測試,明天應該能把測試全部完成。


上一篇
【Day 18】從SOP到實戰:AI 同事陪我解時間追蹤與文件管理難題
下一篇
【Day 20】路由混用地雷與非同步調整:後端測試全數通過
系列文
30 天與 AI 同事打造系統的求生實錄30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言