Trae 除錯工具的循環會卡在哪裡

只看原始碼除錯的 agent 能讀、能推理、能修改,卻無法觀察。觀察這件事是由你提供的:憑著印象、用文字描述,而這個管道很窄。它只帶進你注意到的部分,漏掉你認為無關的部分,而關鍵往往就在後者。

當 agent 把你的描述所能支撐的假設都試完,停滯就出現了。再多跑幾輪也沒有用,因為輸入的資訊並沒有變好。

這三種錯誤最容易卡住

時序

  • 畫面在資料回來之前就先渲染了,或是請求在元件已經消失之後才完成。

  • 從 diff 完全看不出來,親眼看它跑一次卻一目了然。

殘留狀態

  • 第一次操作沒問題,第二次就失敗,因為有東西沒有被重設。

  • 每次都從全新狀態開始的重現流程,永遠看不到它。

環境不一致

  • 程式碼是對的,問題出在環境:少了某個變數、快取過期、資料不一樣。

  • agent 一直在修一段根本沒壞的程式碼。

補上觀察這個步驟

與其由你描述看到了什麼,不如讓某個東西實際去操作已部署的應用程式,再回報發生了什麼事。這樣 agent 拿到的就是紀錄,而不是回憶:嘗試了哪些操作、應用程式做了什麼、兩者在哪裡出現落差。

完成設定後,agent 就具備這項能力,可以自己產生並讀取證據,不必等你轉述。

終端機

npm install -g @testsprite/testsprite-cli
testsprite setup

如果你不想在本機安裝任何東西,TestSprite 儀表板也提供同樣的設定。CLI 其餘的功能都收錄在 CLI 儲存庫。

兩個能打破停滯的問題

  • 從乾淨的狀態開始,它還會失敗嗎? 如果會,那是邏輯問題。如果只有第二次才失敗,那就是殘留狀態,而目前為止所有針對程式碼的假設都打錯了方向。

  • 換一個環境,它還會失敗嗎? 如果同一個版本在兩個地方表現不同,就別再改程式碼了。兩個環境之間的差異本身就是問題所在。

這兩個問題都很容易得到答案,而且只要答案出乎意料,整場除錯的方向就會跟著轉變。

修好之後,把重現流程留下來

你為了看見問題而建立的案例,正是防止它復發的檢查。每次改動都跑一次,而不是隨著對話一起刪掉。

觸發時機比執行機制更重要。把它掛在部署事件上,每次改動都會被檢查,不需要任何人特別做決定; GitHub App 可以從儀表板做到這件事,而 GitHub Actions 步驟則是在你的工作流程裡完成同樣的事。

為什麼 agent 一直提出類似的修法?

因為輸入沒有改變。沒有新的觀察,它只能換個說法,在同一個假設空間裡反覆打轉。

我應該貼上更多日誌嗎?

更多訊號會有幫助,而日誌記錄的是程式碼做了什麼決定,不是使用者實際經歷了什麼。實際對真實應用程式跑一次,才能補上日誌留下的空缺。

這是 Trae 才有的問題嗎?

不是。任何只看原始碼除錯的 agent 都有同樣的盲點。工作流程不同,但缺少的那一步完全一樣。

如果我沒辦法穩定重現呢?

那麼「時好時壞」本身就是發現。把同一個案例跑上幾次再互相比較。每四次失敗一次的流程屬於時序或狀態問題,這就把搜尋範圍縮小了不少。

修正需要另外驗證嗎?

需要。由同一套推理提出、又由同一套推理確認的修正,沒有任何獨立證據。必須有東西實際去觀察修正後的行為。

簡單來說

這個循環需要的是一次觀察,而不是再跑一輪。

當 agent 把你的描述所能支撐的假設用完,Trae 除錯工具的流程就會停滯。給它執行中應用程式的真實觀察,問問這個失敗在乾淨的狀態與不同的環境下是否依然存在,並把重現流程保留下來當成長期的檢查。