回滾

在 AI 任務期間自動為工作區檔案建立版本。安全地探索 AI 建議並實驗變更,同時輕鬆從不需要的變更中復原。

什麼是回滾

回滾讓你可以:

  • 安全地試驗 AI 建議的變更
  • 輕鬆從不需要的修改中復原
  • 比較不同的實作方案
  • 在不遺失工作的情況下恢復到之前的專案狀態

回滾的運作方式

Bob 在任務執行期間擷取檔案的快照,與你的主要版本控制系統分開儲存。這些快照在檔案修改前自動建立,確保你隨時可以撤銷不需要的變更。

快照在任務開始時和檔案修改前進行記錄。

使用回滾

回滾透過聊天介面直接整合到你的工作流程中,並直接顯示在聊天記錄裡。快照在檔案修改前建立,方便隨時撤銷任何變更。

每個快照提供兩項主要功能,在聊天記錄和回滾選單中始終可用:

檢視差異

要查看任務中哪些檔案發生了變更:

  1. Bob 編輯檔案後,已變更的檔案檢視將以折疊狀態顯示。
  2. 你可以點擊展開。
  3. 在檢視中查看差異:
    • 使用顯示全部查看任務中所有已變更的檔案
    • 可以點擊特定檔案查看其變更內容

還原快照

無論是否偵測到變更,還原選項始終在回滾按鈕和對話框中可見。這確保你隨時可以還原到任意狀態。

要將專案還原到之前的狀態:

  1. 將滑鼠游標懸停在任意使用者訊息上,使用回滾按鈕,這將把已變更的檔案還原到該訊息之前的狀態。
  2. 點擊已變更的檔案檢視中各個檔案上的回滾按鈕,這將讓 Bob 知道你已撤銷某個檔案。

限制

  • 範圍:回滾只擷取在 Bob 活躍任務期間所做的變更。
  • 外部變更:在任務外部所做的修改(手動編輯、其他工具)不包含在內。
  • 大型檔案:非常大的二進位檔案可能會影響效能。
  • 未儲存的工作:還原會覆寫工作區中任何未儲存的變更。
  • 時機:快照在變更套用前建立,為所有修改提供安全保障。
  • 記憶體使用量:快照會隨時間累積,可能消耗大量記憶體,尤其是大型專案或長時間執行的任務。如果你有許多帶有快照的舊任務,可以定期清理以釋放記憶體。你可以透過刪除舊的任務對話來實現,這會同時移除相關的快照。

技術實作

回滾架構

回滾系統由以下部分組成:

  1. 回滾服務:透過以下方式處理檔案操作和狀態管理:
    • 快照的建立和儲存
    • 差異計算
    • 狀態還原
  2. UI 元件:顯示在聊天中的介面元素,支援與回滾的互動。

還原流程

當還原執行時,Bob:

  • 完成對特定任務中指定時間點的重設。
  • 更新內部回滾追蹤狀態。

儲存類型

回滾以任務為範圍,這表示每個快照都特定於單一任務。

差異計算

回滾比較使用 Git 的底層差異功能產生結構化的檔案差異:

  • 修改的檔案顯示逐行變更。
  • 二進位檔案被正確偵測和處理。
  • 重新命名偵測可能受到限制;差異著重於快照之間的檔案內容變化。
  • 檔案的建立和刪除清楚標示。

檔案排除和忽略模式

回滾系統使用智慧型檔案排除,只追蹤相關檔案。

內建排除項目

系統具有內建的排除模式,會自動忽略:

  • 建置產物和相依性目錄(node_modules/dist/build/)。
  • 媒體檔案和二進位資產(圖片、影片、音訊)。
  • 快取和暫存檔案(.cache/.tmp/.bak)。
  • 包含敏感資訊的設定檔(.env)。
  • 大型資料檔案(壓縮檔、可執行檔、二進位檔案)。
  • 資料庫檔案和記錄檔。

.gitignore 支援

回滾系統遵守工作區中的 .gitignore 模式:

  • .gitignore 排除的檔案不會觸發快照建立。
  • 被排除的檔案不會出現在回滾差異中。
  • 暫存檔案變更時套用標準 Git 忽略規則。

.bobignore 行為

.bobignore 檔案(控制 AI 對檔案的存取)與回滾追蹤是分開的:

  • .bobignore 排除但未被 .gitignore 排除的檔案仍會被回滾擷取。
  • AI 無法存取的檔案的變更仍可透過回滾還原。

這種分離是刻意為之的。.bobignore 限制 AI 可以存取的檔案,而不是應該為版本歷程追蹤的檔案。

這個主題如何?