回滾
在 AI 任務期間自動為工作區檔案建立版本。安全地探索 AI 建議並實驗變更,同時輕鬆從不需要的變更中復原。
什麼是回滾
回滾讓你可以:
- 安全地試驗 AI 建議的變更
- 輕鬆從不需要的修改中復原
- 比較不同的實作方案
- 在不遺失工作的情況下恢復到之前的專案狀態
回滾的運作方式
Bob 在任務執行期間擷取檔案的快照,與你的主要版本控制系統分開儲存。這些快照在檔案修改前自動建立,確保你隨時可以撤銷不需要的變更。
快照在任務開始時和檔案修改前進行記錄。
使用回滾
回滾透過聊天介面直接整合到你的工作流程中,並直接顯示在聊天記錄裡。快照在檔案修改前建立,方便隨時撤銷任何變更。
每個快照提供兩項主要功能,在聊天記錄和回滾選單中始終可用:
檢視差異
要查看任務中哪些檔案發生了變更:
- Bob 編輯檔案後,已變更的檔案檢視將以折疊狀態顯示。
- 你可以點擊展開。
- 在檢視中查看差異:
- 使用顯示全部查看任務中所有已變更的檔案
- 可以點擊特定檔案查看其變更內容
還原快照
無論是否偵測到變更,還原選項始終在回滾按鈕和對話框中可見。這確保你隨時可以還原到任意狀態。
要將專案還原到之前的狀態:
- 將滑鼠游標懸停在任意使用者訊息上,使用回滾按鈕,這將把已變更的檔案還原到該訊息之前的狀態。
- 點擊已變更的檔案檢視中各個檔案上的回滾按鈕,這將讓 Bob 知道你已撤銷某個檔案。
限制
- 範圍:回滾只擷取在 Bob 活躍任務期間所做的變更。
- 外部變更:在任務外部所做的修改(手動編輯、其他工具)不包含在內。
- 大型檔案:非常大的二進位檔案可能會影響效能。
- 未儲存的工作:還原會覆寫工作區中任何未儲存的變更。
- 時機:快照在變更套用前建立,為所有修改提供安全保障。
- 記憶體使用量:快照會隨時間累積,可能消耗大量記憶體,尤其是大型專案或長時間執行的任務。如果你有許多帶有快照的舊任務,可以定期清理以釋放記憶體。你可以透過刪除舊的任務對話來實現,這會同時移除相關的快照。
技術實作
回滾架構
回滾系統由以下部分組成:
- 回滾服務:透過以下方式處理檔案操作和狀態管理:
- 快照的建立和儲存
- 差異計算
- 狀態還原
- UI 元件:顯示在聊天中的介面元素,支援與回滾的互動。
還原流程
當還原執行時,Bob:
- 完成對特定任務中指定時間點的重設。
- 更新內部回滾追蹤狀態。
儲存類型
回滾以任務為範圍,這表示每個快照都特定於單一任務。
差異計算
回滾比較使用 Git 的底層差異功能產生結構化的檔案差異:
- 修改的檔案顯示逐行變更。
- 二進位檔案被正確偵測和處理。
- 重新命名偵測可能受到限制;差異著重於快照之間的檔案內容變化。
- 檔案的建立和刪除清楚標示。
檔案排除和忽略模式
回滾系統使用智慧型檔案排除,只追蹤相關檔案。
內建排除項目
系統具有內建的排除模式,會自動忽略:
- 建置產物和相依性目錄(
node_modules/、dist/、build/)。 - 媒體檔案和二進位資產(圖片、影片、音訊)。
- 快取和暫存檔案(
.cache/、.tmp/、.bak)。 - 包含敏感資訊的設定檔(
.env)。 - 大型資料檔案(壓縮檔、可執行檔、二進位檔案)。
- 資料庫檔案和記錄檔。
.gitignore 支援
回滾系統遵守工作區中的 .gitignore 模式:
- 被
.gitignore排除的檔案不會觸發快照建立。 - 被排除的檔案不會出現在回滾差異中。
- 暫存檔案變更時套用標準 Git 忽略規則。
.bobignore 行為
.bobignore 檔案(控制 AI 對檔案的存取)與回滾追蹤是分開的:
- 被
.bobignore排除但未被.gitignore排除的檔案仍會被回滾擷取。 - AI 無法存取的檔案的變更仍可透過回滾還原。
這種分離是刻意為之的。.bobignore 限制 AI 可以存取的檔案,而不是應該為版本歷程追蹤的檔案。
這個主題如何?