這是 Bob 部落格的第一篇文章。它由構建 Bob 的團隊為使用它的開發人員編寫。我們將用它來解釋工程決策,分享我們在真實程式碼庫中交付 AI 開發合作夥伴時學到的東西,並偶爾論證一個立場。這不是文件,也不是行銷——如果你想要其中任何一個,我們會將你連結到正確的地方。
對於我們的第一篇文章,我們不想遍歷 Bob 所做的一切,而是想做三件事:
- 看看 Bob 的一些核心功能。
- 分享一套實用技巧,用於設定儲存庫,以便 Bob 做出最好的工作。
- 解釋我們如何在具有這種程式碼存取權限的工具中處理安全性。
1. 開發人員實際花時間做什麼
現代 AI 助手可以從描述中編寫函式。這已經有一段時間了,不再是有趣的問題。有趣的問題是,當工作不是「生成新程式碼」而是「修改已經存在的系統」時會發生什麼——找到進行更改的正確位置,理解團隊已經達成一致的慣例,在多年來一直在增長的檔案中保持行為一致。 這就是大多數專業軟體開發的樣子。Bob 是為這種工作而構建的,我們在本文其餘部分描述的設計選擇都源於這一重點。
1.1. 模式:告訴 Bob 你正在做什麼類型的工作
Bob 不是單一的「做一些有用的事情」互動。你開始會話的模式告訴 Bob 你即將做什麼類型的工作,它可以使用哪些工具,以及它應該有多主動。
- Ask — 唯讀。非常適合「探索階段」。Bob 在不進行更改的情況下解釋架構和邏輯。當你深入遺留系統或對你沒有編寫的邏輯片段進行健全性檢查時使用它。
- Plan — Bob 為你即將進行的更改生成計劃:要觸及的檔案、要考慮的邊緣情況、建議的工作順序。輸出是計劃,而不是程式碼。
- Code — 用於實際進行更改。Bob 在你的專案中讀取、寫入和測試,遵循你設定的慣例和規則。
- Advanced — 透過模型上下文協定(MCP)擴展 Code 模式,使 Bob 能夠存取你組織的特定工具和服務:內部 API、資料庫、專有工具。
- Orchestrator — 用於跨模式的多步驟工作。Bob 根據當前步驟的要求自己在模式之間切換,是混合探索、規劃和執行的大型工作的正確選擇。
在會話開始時選擇正確的模式是獲得更好輸出的最便宜的槓桿之一。一個好習慣,特別是在你不太了解的程式碼庫上或對於具有任何實際表面積的更改,是從 Ask 或 Plan 開始,只有在你對工作有清晰的了解後才切換到 Code。直接進入 Code 在當時感覺更快,但那是假設傾向於作為實際更改滑入並開始累積為技術債務的地方。
1.2. Bob tips:即時複雜性指標
我們都經歷過:你深陷「區域」,巢狀最後一個條件來處理邊緣情況,突然一個函式已經成長為一個三十行的迷宮。在典型的工作流程中,這個迷宮直到幾小時後隊友在拉取請求中指出它才會被解開。Bob Tips 透過在邏輯仍然在你腦海中溫暖時提供重構建議來改變敘述。當你輸入時,持續的靜態分析會悄悄地監視你打開的檔案。當函式跨越到高圈複雜度或變得難以維護時,Bob 立即用紫色底線標記它。傳統的 linter 只是告訴你做錯了什麼;Bob Tips 提供了出路。該工具的重點完全在於提供可操作的重構建議:
上下文智慧:將滑鼠懸停在紫色底線上不僅顯示警告——它提供了一個特定的、AI 生成的策略來解開那裡的邏輯。 無縫執行:點擊 Fix with Bob 會立即開啟一個專用聊天。AI 已經掌握了函式的上下文,並準備好在你身邊執行清理。
在背景執行的指標只是管道。有價值的部分是,長期存在的程式碼品質訊號現在在開發人員在檔案中的那一刻驅動 AI 建議,而不是三天後在程式碼審查中浮出水面。
1.3. Review 模式:程式碼審查,系統一起閱讀
程式碼審查在過去二十年中為軟體品質做了與任何實踐一樣多的事情,它也是團隊失去動力的地方。Bob 不會取代人工審查。它做機械的部分,這樣他們就可以專注於高階架構和意圖,而不是尋找「容易摘的」錯誤。
審查從側邊欄的 Review Panel 或透過聊天中的 /review 執行。有兩種模式:
- 分支比較。 此模式處理「經典」差異。使用 /review 審核針對當前 head 的未提交工作,或使用
/review <branch>針對特定遠端。這是對通常堵塞審查執行緒的「挑剔」的先發制人打擊。 - Issue 覆蓋。
/review <issue-url> --issue-coverage驗證你的本地更改是否真正解決了 GitHub issue 要求的內容。這是開發人員告訴我們他們在嘗試之前沒有意識到他們想要的模式。 結果出現在專用面板中,因此你可以查看它們並決定用 Bob 修復它們。這是一個健全性檢查,確認你不僅編寫了好程式碼,而且編寫了正確的程式碼。
1.4. Literate coding:寫在程式碼旁邊的意圖
當你深入複雜功能時,在聊天視窗中引用多個檔案是一件苦差事。你發現自己在輸入「查看 types.ts 中的介面和 api.ts 中的服務,然後在這裡更新邏輯...」Bob 翻轉了這種動態。透過 Literate Coding 將互動直接移動到原始檔中,編輯器本身成為介面。這不僅僅是避免側面板;這是為 AI 提供你意圖的複雜多檔案地圖。
- 自然表達意圖:使用 Cmd+M 切換模式,用簡單的語言或偽程式碼編寫你的邏輯。你的指令在編輯器中以藍色顯示,恰好位於實作所屬的位置。
- 超越單行:雖然傳統聊天經常失去複雜專案的「線索」,但 Bob 的 literate coding 正在發展以彌合檔案之間的差距。開發人員現在可以跨多個模組提供上下文,確保資料模型中的更改準確反映在相關控制器中。
- 即時驗證:按 Cmd+Enter,Bob 就地生成實作。因為結果顯示為內嵌差異,你可以在提交更改之前根據周圍的程式碼審核邏輯。
好處很簡單:提示位於程式碼所在的位置,周圍的檔案已經充當上下文。當前範圍是單檔案;多檔案支援在路線圖上。
1.5. 終端機中的 Bob
Bob Shell 將 Bob 的功能帶到命令列,我們發現有兩種使用方式特別有價值。
- 終端機作為工作空間:在 shell 內使用 AI 開發助手已經成為一種流行的形式因素——它自然地與許多開發人員已經驅動 Git、建置和測試的方式配對,並已成為許多團隊日常工作流程的一部分。這是將 AI 帶到遠端伺服器或原生 IDE 整合不可用的環境的最可靠方式:無論你在哪裡有終端機,你都可以擁有 Bob。
- 從確定性到自適應自動化:Bob Shell 在非互動式會話中表現出色,如計劃作業和 CI/CD 管道中的部署指令碼。今天指令碼委託給確定性工具的任何地方,它都可以委託給具有周圍儲存庫完整上下文的 Bob——從另一端出來的自動化比固定管道更具適應性。
我們將發布一篇後續文章,介紹我們在 CI 中非互動式執行 Bob 時學到的東西:在實踐中執行良好的模式,包括 PR 摘要、風險標記以及與現有自動化的整合。
2. 使你的儲存庫 Bob 就緒
Bob 產生最佳工作的儲存庫共享一些共同特徵。它們都不是 AI 特定的——它們是使儲存庫對任何開發人員來說都愉快工作的相同事物——但每一個都為 Bob 提供了更多的工作內容。
快速、可靠的測試。 如果 npm test(或你的等效項)需要五分鐘或間歇性失敗,迭代迴圈會減慢到爬行,回饋訊號會降級。一分鐘以下的測試對任何開發人員來說都是乘數;對於在緊密迴圈中工作的 AI 助手來說,它們是必不可少的。
記錄的建置和測試命令。 Makefile、package.json 中的頂層指令碼部分或 README 區塊——Bob 可以找到「我如何執行這個」的地方。沒有它,Bob 必須推斷,而推斷是錯誤進入的地方。
可執行樣式。 在儲存時或在 CI 中執行的 linter 和格式化程式。Bob 從這些中獲取你的慣例。顯式的、機器可檢查的規則每次都優於隱式慣例。
儲存庫根目錄中的 agents.md。 專案結構、關鍵檔案、編碼標準、該做什麼和不該做什麼。這是你可以為 AI 輔助新增的最高槓桿檔案。正確的思考方式是將其視為為 LLM 而不是新員工編寫的 CONTRIBUTING.md。
程式碼旁邊的 markdown 架構文件。 即使是簡短的文件也有幫助。描述模組及其邊界的 docs/architecture.md 讓 Bob 可以回答「這去哪裡?」而無需從匯入重新推導設計。
我們一路上學到的一些東西:
- 大型規則檔案會降低訊號。 超過幾百行後,模型效能會降低。按區域拆分規則——儲存庫根目錄中的
agents.md,每個套件的作用域readme.md——而不是將所有內容集中在一個檔案中。 - 複合你的工程。 當你完成任務時,要求 Bob 將相關學習提煉回規則檔案或技能中。隨著你使用它,儲存庫成為一個更高效的環境。
- 迭代,不要一次性完成。 一致地落地正確更改的多輪對話優於落地其中百分之八十的單個長提示。
3. 安全和控制
Bob 有幾層保護,它們協同工作,而不是任何單一的護欄做所有工作。適合第一篇文章的簡短版本:
- 手動批准每個操作,或者一旦你信任工作流程,按工具類別(唯讀與寫入)自動批准。
.bobignore讓 Bob 遠離它不應該讀取的檔案——憑證、生成的工件、任何敏感的東西。- 自訂規則以與在開發人員身上執行編碼標準的相同方式在 Bob 上執行編碼標準。
- 自動檢查點使從不需要的更改中恢復成為一鍵操作。
- 你的提示不會用作訓練資料!
特別是自動批准,值得深思熟慮。這是你對 Bob 在檢查點之間可以與你一起做多少事情的主要控制之一,擴大它是一個生產力增益,但也要求你在決定什麼屬於該信封內和什麼不屬於時多做一點。對大多數開發人員來說,一個明智的預設值是自動批准唯讀工具,至少在前幾週將寫入操作保留在手動批准上,並對執行 shell 命令或到達本地工作樹之外的系統的任何東西特別考慮。清單中的其他控制——.bobignore、自訂規則、檢查點——被設計為與自動批准組合而不是替代它。
4. 開始
- 從我們的網站安裝 IBM Bob,或透過你選擇的終端機安裝 Bob Shell。
- 查看我們的最佳實踐指南並諮詢我們的安全指南。
- 從真實任務開始——當 Bob 幫助解決真實問題時,你學得最好。
連結
