Bob 遇見大型主機
當我們推出 Bob 時,我們說有趣的問題不是編寫新程式碼,而是在已經存在的系統中工作——找到進行變更的正確位置,尊重團隊多年前建立的慣例,在長期增長的檔案中保持行為一致性。
「已經存在的系統」運行時間最長的版本執行在大型主機上。數十年的 COBOL 和 PL/I,數百萬行程式碼,透過 Db2、CICS、IMS 和批次作業排程器連接的數萬個程式——這些程式碼在不間斷地運行業務,任何中斷都是他們無法承受的。
今天,我們正式發布 IBM Bob Premium Package for Z(Bob PP4Z)。它取代了 IBM watsonx Code Assistant for Z,將 IBM Z 專業知識——平台語言、中介軟體感知和確定性企業級分析——直接帶入 Bob 體驗。
這是工程故事,而不是功能介紹。我們不打算列舉 PP4Z 的所有功能,而是想做三件事:
- 解釋為什麼通用模型比它承認的更頻繁地誤解你的大型主機應用程式。
- 展示我們如何將 Bob 建立在關於你環境的確定性事實上,而不是機率上。
- 介紹 Z 專用模式、技能和工作流——以及你可以用它們建構什麼。
1. 為什麼大型主機是困難的案例
指向大型主機環境的通用模型會遇到三個問題,無論多麼聰明的提示都無法真正解決。PP4Z 的設計為每個問題提供了解決方案。
1.1. 規模及其對上下文視窗的影響
單個業務應用程式可能包含數百萬行 COBOL,跨 COBOL、PL/I 和組合語言的數萬個相互連接的模組,以及由企業排程器鏈接的數千個批次作業。即使是 200 個程式的「小」切片也輕鬆達到數十萬行程式碼。
這無法放入上下文視窗,而且問題不僅僅是視窗。隨著上下文增長,模型效能會下降(Chroma Research Context Rot Study, 2025)——答案變得不完整、不一致或自信地錯誤。引入「相關檔案」假設你已經知道哪些檔案是相關的,而這正是你試圖找出的事情。
1.2. 程式碼中不存在的含義
大型主機程式碼在語義上非常密集。業務含義存在於欄位名稱和數十年的慣例中,而不是解析器可以讀取的內容。有些可以猜測——SERIALN 可能是序號,TOT-STTM 可能是總結算。大多數無法猜測:C-M 是什麼?M-CAP?為什麼是 CCZD 字首?NO-SIN、NO-EVN 和 NO-CNT 有什麼區別?
這種含義是真實的且承載著業務邏輯,但僅從程式碼中無法推斷。傳統答案是資料字典——但規模(數百萬甚至數十億個變數)使手工或用語言模型蠻力建構變得令人望而卻步。
1.3. 最可能的答案不是正確的答案
語言模型傳回其訓練分佈中統計上可能的內容。模型是非確定性的;同一問題在不同天可能得到不同的答案。在一個關於控制流的錯誤答案可能錯誤陳述業務邏輯的系統中,這是一個重大風險。
這是你可能自己遇到過的情境,假設你認出了它。以一個真實的 COBOL 批次應用程式為例:233 個程式,742 個 copybook,超過 20MB 的程式碼,一個被頻繁呼叫的日期工具 N991DATE。根據中繼資料,實際情況是 30 個程式呼叫它。現在直接詢問一個前沿模型:
- 第 1 天。 它無法載入所有內容,因此搜尋靜態
CALL陳述式並回報 13。詢問動態呼叫時,它擴展正規表示式並回報 29。遺漏的那個CHKOUTB在名為ROCHKOUT.cbl的檔案中——因為按慣例檔案名稱通常與其PROGRAM-ID相符,但從不要求這樣做。 - 第 2 天。 相同的問題,不同的啟發式方法,現在回報 31——過度計數。一個假陽性
N285RODR僅在工作儲存區中宣告了常值'N991DATE'而從不使用它。模型在幾次追問之後才得出這個結論。
這些啟發式方法都不是不合理的。它們只是不夠好,而「誰呼叫 X」是影響分析和程式理解中的核心問題之一。開發人員為理解程式和相依性而提出的更進階問題——哪些資料表在多個程式中被更新,哪些檔案被讀取但從不被寫入,哪些變數參與 PREMPZ72 中 WS-UIT02 的計算——需要模式比對無法提供的完整、精確的分析。
結論不是「模型對大型主機程式理解沒有用」。而是當有真實的東西可以推理時,模型回應品質會大幅提升。語言模型在資料處理方面表現出色。
2. 將 Bob 建立在事實而非機率上
PP4Z 的答案是停止要求模型從原始碼重建系統,而是給它一個確定性的、可查詢的環境表示來推理。三個機制提供基礎:模型被提示在請求本身中標記模糊的 z/OS 建構;提示用權威的 IBM Z 見解、IBM 文件、參考資料、經過驗證的範例等進行豐富,同時主動抑制通用程式設計偏見;模型被指示首先從分析中繼資料回答。目標是使答案可追溯到 IBM Z 系統,而不是訓練分佈。
2.1. Z Understand:你環境的可查詢模型
Z Understand 是 PP4Z 底層的靜態分析平台。它在可以存取完整原始碼的伺服器上執行,為 COBOL、PL/I 和組合語言以及 JCL 和 Control-M、TWS 等排程器提供掃描器,並將數千個程式並行處理到一個可查詢的儲存庫中。它在 10,000+ 程式的環境中保持確定性、一致的結構。
可以將其想像為具有不同輸出的編譯器管道:不是可執行檔,而是結構化的、可查詢的知識——資料定義、跨程式和作業的控制流、精確的資料流(包括 REDEFINES 和記憶體偏移量)以及子系統互動。
2.2. 讓模型編寫自己的查詢
中繼資料的公開方式與中繼資料本身同樣重要。固定 API 和預定義的 MCP 查詢模式對於已知和預期的問題非常高效,但在開放式分析中會失敗。在開放式分析期間,一個真實問題會隨著推理的進行而分支為許多子查詢。
因此,我們教會了 Bob 如何超越提供的現成查詢,產生並執行自己的查詢來查詢中繼資料。這依賴於模型真正擅長的——推理和查詢產生——並且像結構化資料擴展一樣擴展:無論你有 10 個還是 10,000 個程式,查詢都是相同的;只是結果集增長。
2.3. 可擴充性、自訂掃描器和執行時期資料
純語法分析在動態呼叫、API 抽象和前置處理器隱藏真實流程時會遺漏重要關係。Z Understand Extensibility 框架填補了這一差距:
- API 呼叫/巨集解析將間接和參數驅動的呼叫對應到其真實目標,透過 JSON 設定或使用者出口將通用呼叫邊替換為具體的呼叫者-被呼叫者關係。
- 前置處理器可擴充性在保留原始來源視圖的同時解釋非標準陳述式,在前置處理和後置處理程式碼之間進行清晰對應。
- 自訂掃描器透過模式驅動的 JSON 介面將專有語言、4GL 甚至非程式碼來源納入一個模型。
靜態分析告訴你什麼可能發生;執行時期資料告訴你什麼確實發生了。PP4Z 將偵錯工具變成資料收集工具,並將這些精確的追蹤傳遞給 Bob。
2.4. 資料字典:相關性優於完整性
記錄數十億個變數既不可行也無法維護,因此 PP4Z 不會嘗試。確定性分析根據變數實際驅動行為的程度對其進行排序——使用頻率、跨程式碼區域的分佈、控制流參與、與資料庫和 I/O 的互動——並選擇揭示程式目的的小集合。
這裡有用的發現:有限的涵蓋率就足夠了。 定義每個程式大約前 10-20 個變數可以在沒有詳盡文件的情況下顯著提高理解度。Z Understand Services 從 CLI 自動化整個投資組合,信心分數僅保留閾值以上的定義,IDE 中的 human-in-the-loop 步驟讓開發人員審查、更正並與現有詞彙表對齊輸出。
3. 為 Z 專門化 Bob
基礎給了 Bob 良好的事實。專業化使其在輸出必須可解釋且流程必須滿足治理的環境中表現可預測。PP4Z 建立在四個部分上:模式、工具、技能和工作流。
- 模式設定互動流程的角色和邊界。架構師風格的模式優先考慮分析、文件和相依性發現,明確禁止程式碼修改。開發者模式針對內建編碼標準執行的產生和重構進行了調整。
- 工具讓模型直接存取結構化系統知識——程式掃描、中繼資料查詢、資料字典查找、企業級分析服務。
- 技能將反覆出現的專業知識編碼為可重複、可稽核的步驟。實作規劃技能強制執行固定序列:取得和驗證上下文,框架需求和表面假設,從中繼資料對應影響,然後產生持久的、可審查的計劃。
- 工作流新增有狀態的協調——強制排序,驗證中間結果,在錯誤輸入時停止。資料字典工作流在找不到變數時停止,而不是發明一些。
標準和治理透過儲存庫層級的 agents.md 規則預設執行——無需額外基礎設施。你也可以建立自己的技能,無需編寫程式碼。
當這些組合時,單個提示可以驅動端對端任務:
「在 Motor Policy Table 中新增一欄來擷取車輛是否為電動車。套用我的編碼標準並更新所有受影響的程式。」
Bob 讀取意圖,建構計劃,選擇正確的模式、技能和儲存庫規則,並安全地執行分析程式、擷取變數、更新資料定義和產生合規結果所需的工具——在一次通過中完成治理、執行和推理,由你批准變更。
4. 今天可以建構什麼
- 不會漂移的文件。 將文件視為建立在確定性中繼資料加上來源和執行時期上下文上的產生工件——可按需再生,與當前系統對齊。
- z/OS 上確定性的 COBOL 到 Java 轉換。 PP4Z 使用中繼資料作為轉換的支柱,建構來源和目標的並行模型,使架構可重現,業務邏輯被精確對應而不是摘要。
- 有針對性的重構和函數提取。 Bob 產生帶有業務功能注釋的重構候選項排名清單,然後提取具有清晰輸入和輸出的獨立模組。
- 原生 z/OS 工具。 授權的 Z Open Editor 功能加上新的 MCP 工具:從 IDE 在 z/OS 上執行建構的 Dependency Based Build (DBB),Z Code Scan,以及 IBM Debug for z/OS 將實時偵錯工作階段轉變為 AI 輔助的根本原因分析。
關於誠實的說明,因為這是一篇工程貼文:這些都不會將開發人員從迴圈中移除,也不是這個意圖。模式、審批關卡和 human-in-the-loop 資料字典都存在,因為在這些系統上「大部分正確」是失敗模式,而不是目標。
5. 如何獲得存取權限
Bob Premium Package for Z (PP4Z) 是 IBM Bob 的附加元件,不是需要下載的獨立產品。PP4Z 在企業環境中針對即時大型主機環境執行——授權是銷售主導的。
- 從你的 IBM 代表開始,或使用 bob.ibm.com 上的「聯絡銷售」。他們為你的組織設定基本 IBM Bob 計劃和 Z 附加元件。
- 一旦你的 Bob 管理員為你分配了帶有 Z 附加元件的席次,當你使用 IBM Bob 時就會偵測到授權。安裝 Bob IDE,登入,Z 專用模式、技能和工具就會出現。
6. 入門指南
- 如果你已經在執行 Bob,PP4Z 會在你現有內容的基礎上新增 Z 專用模式、技能和工具。
- 使用內建的理解功能,對工作區中的程式碼獲得更深入的見解。
- 將 Z Understand 指向你已經知道正確答案的真實應用程式——並將 Bob 的分析與你的基準事實進行核對。
- 從你從未得到直接答案的問題開始:誰真正呼叫了這個工具,這個作業涉及哪些資料表,這個變數意味著什麼?
- 提出更有挑戰性的混合資料和推理的問題:「給我一個按主題組織的帶圖表的呼叫圖」
連結
