遺留系統現代化: 以神經符號 AI 超越語法
執行摘要
企業遺留系統的現代化——具體而言,是將主機 架構遷移至雲原生環境——已在 2020 年代中期來到關鍵轉折點。數十年來,金融與政府部門一直在一種 悖論式典範下運作:現代化的必要性關乎存亡,然而此類 計畫的失敗率仍災難性地居高不下,徘徊在 70% 至 80% 之間。 1 近期 大型語言模型(LLM)的問世承諾了一場革命,提供了誘人的 自動化程式碼翻譯可能性。然而,早期採用週期已揭示一項關鍵、系統性的 缺陷,出現在將標準生成式 AI 方法應用於複雜、單體式 儲存庫時。
我們目前正目睹一類新的工程失敗湧現,其典型 表現來自一個雖屬傳聞、卻高度寫實的情境:某大型銀行試圖改寫三十年 的 COBOL 為 Java,並使用商業程式碼助理。該 AI 作為一個 精密的局部翻譯器,完美轉換了語法。然而,產出的 應用程式在部署時卻讓資料庫崩潰。失敗不在語法,而在 脈絡。該 AI 受「中間迷失」(Lost in the Middle)症候群與基於文本的 軟體理解所限,漏掉了一項關鍵變數相依性,該定義在 執行區塊之前的數千行。 3
本白皮書由 Veriprajna 提出,主張當前主流的「LLM 包裝層」 做法——把程式碼當作線性的文本 token 序列——根本上不適 用於企業現代化的非線性複雜性。軟體不是文本;它是圖譜。它 是一套高度結構化的邏輯相依、資料流與狀態變化系統, 存在於多維拓撲空間之中。 5
我們主張,唯一可行的前進之路是採用 儲存庫感知知識 圖譜 。透過從隨機文本預測轉向基於圖譜的確定性推理, 我們可以跨越數百萬行程式碼對應變數相依性,解消「中間 迷失」現象,並將現代化從一場高風險賭博轉變為 可數學驗證的工程過程。 7 本文件概述這項技術 轉折:從表面層的語法翻譯,走向深層的語意結構轉換。
第 1 章:遺留基礎設施的無聲 危機
1.1 現代化悖論
在當前的數位經濟中,全球商務的基礎設施岌岌可危地仰賴 冷戰時期開發的技術。這是一個令人震驚、卻常被否認的現實: 到了 2025 年,全球金融、醫療與政府系統中相當大的多數 仍由遺留程式碼庫驅動——以 COBOL、 PL/I 與 RPG 等語言撰寫的單體應用,這些語言早已淡出主流電腦科學課程。 這些系統不僅是「舊的」;它們是全球經濟的奠基岩層, 卻正以驚人速度侵蝕。
統計數字為這種依賴描繪出嚴峻圖像。約 70% 的軟體 在 Fortune 500 公司運行的,是二十多年前開發的。 9 在銀行業, 情況更為嚴峻:43% 的銀行系統建置於 COBOL 之上,而這些 系統處理 95% 的 ATM 交易。 1 我們實際上是在用一套早於網際網路的數位地基,運轉現代、 即時支付經濟。
維持現狀的成本正在飆升。技術債已累積至 僅美國就估計達 $1.52 trillion。 1 組織陷入「維持燈火 通明」的循環,聯邦 IT 預算中有 80% 投入營運與維護,只留下 微薄的 20% 用於創新。 9 這項資源流失又因嚴重的技能短缺而加劇; 隨著撰寫這些系統的那一代開發者退休,維護所需的組織知識 也隨之消失。 10
表 1:遺留系統的經濟負擔
| 指標 | 統計 | 來源 |
|---|---|---|
| 技術債成本(美國) | $1.52 Trillion | 1 |
| 聯邦 IT 維護 預算 |
約佔總支出 ~80% | 9 |
| 銀行業依賴 | 95% 的 ATM 交易 基於 COBOL |
1 |
| 資料外洩機率 | 高出 3x,系統超過 10 年者 |
11 |
|---|---|---|
| 開發者流失 | 58% 考慮離職,原因是 遺留技術堆疊 |
1 |
這些數據顯示系統性脆弱。現代化的必要性不只關乎 降低成本;它關乎生存。超過十年的系統,在統計上是三倍 更可能遭遇資安事件,相較於現代應用。 11 隨著監管 對資料隱私與即時申報的要求趨嚴(例如 GDPR、DORA),遺留系統無法調適 便成為最高等級的合規風險。
1.2 「銀行失敗」的解剖
為理解新方法的必要性,我們必須剖析這個已成為 AI 現代化失敗「零號病人」的情境。此案例研究由 Veriprajna 領導層援引,說明標準 AI 失敗的具體機制,發生在 企業環境之中。
某大型金融機構啟動專案,要將核心交易處理系統 從 IBM 主機(COBOL/DB2)遷移至雲原生 Java 微服務架構。該 銀行使用一款熱門 AI 程式碼助理——本質上是一層包裝,包在基礎 模型之外——來翻譯程式碼。
該 AI 攝入一支負責處理高額電匯的 COBOL 程式。該 程式含有複雜的 COMPUTE 陳述式,涉及我們稱為 TRN-LIMIT 的變數。 AI 完美翻譯了語法。它把 COMPUTE 陳述式轉成 Java BigDecimal 運算。程式碼編譯通過。單元測試——由同一套 AI 根據 本地程式碼區塊產生——也通過了。
然而,部署到使用者驗收測試(UAT)環境後,第一筆 交易就讓資料庫一致性檢查崩潰。
解剖: 變數 TRN-LIMIT 並未定義在 AI 所翻譯的原始檔中。它定義在一份 COPYBOOK(共享標頭檔)裡,該檔在執行鏈中早數千行就被引入。 更重要的是,那份 COPYBOOK 含有 REDEFINES 子句——一種 COBOL 構建, 允許同一記憶體位址被解讀為兩種不同資料型別,取決於 在完全不同模組中設定的旗標。 該 AI 在一段文本「區塊」上運作,把 TRN-LIMIT 看成簡單數值欄位。它沒有看到 REDEFINES 子句,因為該子句位於另一個檔案,不在即時 上下文視窗內。它「幻覺」出該變數的標準定義。在主機 環境中,該記憶體位址存放的是 packed decimal;在 Java 環境中,AI 卻把它當標準整數處理。此錯配導致 Java 應用把損壞的 二進位資料寫入資料庫欄位,觸發參照完整性失敗。 4
失敗不在語法;Java 程式碼在語法上是完美的。失敗在於 脈絡盲視 。AI 漏掉了存在於其「視野」之外的相依性, 導致災難性的語意分歧。
1.3 「原樣搬遷」對重構的兩難
產業在現代化上的成績單極為慘淡,即使在引入 生成式 AI 之前。研究顯示,70% 至 80% 的數位轉型與 遺留系統現代化專案未能達成目標。 2
傳統上,組織面臨二元選擇:
1. 重新託管(原樣搬遷): 把已編譯的應用移到雲端模擬器。這 保留了「義大利麵程式碼」與債務,只是改了託管帳單。它無法 釋放雲端的敏捷性。 14
2. 重寫(重構): 以現代語言手動重寫程式碼。這 成本天文數字、緩慢,且因缺乏文件與「大 泥球」架構而風險極高——業務邏輯與資料存取糾纏難分。 10
生成式 AI 本應提供「第三條路」——自動化重構。然而, 「銀行失敗」證明:若缺乏對軟體拓撲的更深理解,AI 只是 加速產出有缺陷的程式碼。
第 2 章:隨機性翻譯的 失敗
2.1 「包裝層」經濟及其限度
進入這個高風險環境的是「LLM 包裝層」。來自 軟體顧問市場對 GPT-4 發布的即時反應,是大量湧現充當 開發者與基礎模型之間薄軟體層的工具。 15 這些工具承諾可以 「與你的程式碼對話」,讓開發者貼上一段 COBOL 段落並收到一段 Java 方法作為回傳。
雖然這些包裝層降低了採用 AI 的門檻,但它們在根本上有缺陷 當應用於大規模系統再工程時。包裝層通常依賴 樸素 RAG(Naïve RAG) (檢索增強生成,Retrieval-Augmented Generation)。在此過程中,系統接受使用者查詢,搜尋 向量資料庫中與查詢 文本上相似 的程式碼片段,並把那些 片段餵給 LLM 作為上下文。 17
此做法在企業情境中的限制極為嚴重:
1. 脈絡近視: 包裝層把程式碼看成文本片段。它不理解 在 SECTION-A 中被修改的變數 ACCOUNT-BALANCE 驅動著 五千行之外 SECTION-Z 中的決策邏輯。
2. 語法成功、語意失敗: 如前所述,LLM 可以產出 Java 程式碼, 編譯完美,卻無法複製原始 COBOL 的精確執行期行為, 因為它漏掉了全域狀態變化。 4
Veriprajna 以拒絕「薄包裝層」哲學來自我區隔。我們主張,深度 AI 解決方案必須理解儲存庫的 結構,而不只是檔案的 文本。
2.2 「中間迷失」症候群
要理解為何標準 AI 在遺留系統現代化中失敗,我們必須理解 大型語言模型的認知架構。這些模型基於 Transformer 架構,使用「注意力機制」來權衡 輸入文本不同部分的重要性。 18
雖然現代 LLM 標榜巨大的上下文視窗(高達 1 million tokens),它們 有效 使用 該上下文的能力並不均勻。實證研究已證明一種 稱為 「中間迷失」效應 的現象。當面對一段長 資訊序列時,LLM 呈現 U 型表現曲線:
● 首位偏誤: 它們對開頭資訊的回憶高度準確,位於 提示。
● 近因偏誤: 它們對提示末尾資訊的回憶高度準確。
● 谷底: 位於中間的資訊,表現顯著劣化。 3
在現代化專案中,單一 COBOL 程式可能長達數千行,而且它 可能參照本身也長達數千行的 copybook(相依項)。若 關鍵變數的定義——例如 MAX-TRANSACTION-LIMIT——出現在這段 龐大上下文的中間,AI 在統計上很可能忽略它。 21
當 AI 忽略變數定義時,它並不停下。它「幻覺」。它假設一個 該變數的預設型別或值,依據機率而非事實。在銀行系統中, 若假設變數是 Integer,而它其實是 Packed Decimal,可能導致捨入 錯誤,進而損壞財務資料。 22
表 2:標準 LLM 的認知限制
| 現象 | 描述 | 對現代化的影響 |
|---|---|---|
| 中間迷失 | 長提示中段的注意力 劣化。3 |
漏掉埋在大型檔案中的 變數定義。 |
| 幻覺 | 捏造看似合理但 不正確的事實。22 |
發明相依性或 邏輯以填補上下文缺口。 |
| 首位/近因偏誤 | 聚焦起/迄於 文本。20 |
忽略核心業務 邏輯,位於中段 的程序。 |
| 隨機生成 | 機率式文本 預測。 |
不一致的程式碼 生成;重跑 提示會得到不同的 邏輯。 |
2.3 「詞袋」對「邏輯樹」
標準 LLM 與向量 RAG 系統主要把程式碼當 token 序列處理。 它們依賴語意相似度——檢查查詢中的詞是否匹配文件 向量空間中的詞。 17
然而,程式碼不是自然語言。在自然語言中,「貓坐在墊子上」的 意義大致獨立於五十頁之前的句子。在軟體中,x = y + 1 的意義為零 除非我們知道 x 與 y 的定義、型別與當前狀態。這些 定義可能存在於不同檔案、不同模組,或從父 類別繼承而來。 5
當「包裝層」AI 為「重構付款邏輯」這類查詢檢索上下文時,它可能 抓到五塊含有「payment」一字的程式碼。它很可能漏掉名為 GlobalVarDef.cbl 的區塊,而該檔定義了付款邏輯所用的稅率,因為該檔從未 提到「payment」這個詞。
此斷裂代表 文本檢索 與 結構性 理解 之間的根本落差。要彌合此落差,我們必須停止把程式碼當文學,開始把它 當作圖譜。 23
第 3 章:軟體的物理 –
程式碼即圖譜
3.1 軟體作為關係系統
在 Veriprajna,我們認識到軟體儲存庫根本上是一座 關係資料庫 承載邏輯 。程式碼庫中的每個實體——變數、函式、類別、模組、資料庫 綱要——都存在於稠密的關係網絡中。
● 包含: 檔案包含類別;類別包含方法;方法包含 變數宣告。
● 繼承: Class B 繼承 Class A 的屬性與方法。
● 呼叫: Method X 呼叫 Method Y。
● 資料流: Variable Z 由 Function Q 修改、由 Function R 讀取。
這些關係構成應用的「地面真相」。它們不是機率性的; 它們是確定性的。若 Method X 呼叫 Method Y,那是硬事實,不是統計 可能性。標準 LLM 運作於機率域。要安全地現代化遺留 系統,我們必須把它們的機率生成能力錨定在確定性現實上,即 程式碼結構的現實。 7
3.2 抽象語法樹(AST)
此結構性理解的基礎單元是 抽象語法樹(AST) 。 AST 是原始碼抽象句法結構的樹狀表示。不同於原始 文本字串,AST 捕捉語言的層級與文法規則。 24
例如,COBOL 陳述式: COMPUTE INTEREST = PRINCIPAL * RATE 不只是五個詞。在 AST 中,它是帶有 Target(Interest)與 Expression 的 AssignmentNode。該 Expression 是帶有 LeftOperand(Principal)與 RightOperand(Rate)的 MultiplicationNode。26 透過把遺留程式碼解析為 AST,我們超越文本的歧義。我們可以 以程式方式識別每一處變數使用、每一次算術運算,以及每一條控制 流分支。這讓我們能進行「往返」工程——把程式碼轉成 AST 再 轉回程式碼且無資料損失——確保結構分析準確。 27
不同於標準 RAG 使用的「文本分塊」——檔案被盲目切成 500-token 片段,經常把函式切成兩半——AST 解析尊重其邏輯邊界,即 程式碼。函式被視為離散的邏輯單元,而非隨機文本跨度。 23
3.3 呼叫圖與相依矩陣
AST 代表單一檔案的結構,而 呼叫圖 代表整個應用的神經 系統。它視覺化控制流,對應哪些段落或 子程式呼叫其他者。 29
在遺留 COBOL 系統中,呼叫圖常被動態呼叫或 GOTO 邏輯遮蔽,而那 會造成「義大利麵程式碼」。靜態文本分析不容易解析 GOTO LABEL_X 落在何處,若 LABEL_X 是動態或條件定義的。
透過建構嚴謹的呼叫圖,Veriprajna 識別「死碼」(從未被 呼叫的程式碼)與「上帝類別」(耦合過重的模組)。此分析對 把單體拆成微服務至關重要。若我們不知道完整呼叫鏈,我們 就無法安全抽出服務;我們可能留下「懸空參照」,將造成 執行期失敗——正是開篇案例中困擾那家銀行的情境。 31
表 3:結構分析對文本分析
| 特徵 | 文本分析(標準 AI) |
結構分析 (Veriprajna) |
|---|---|---|
| 分析單元 | Token/詞 | 節點(AST 元素) |
| 上下文邊界 | 任意 token 上限 | 邏輯範圍 (函式/類別) |
| 相依解析 | 關鍵詞匹配 | 圖譜遍歷 |
| GOTO 處理 | 當文本字串看待 | 對應控制流邊 |
| 準確性 | 機率性 | 確定性 |
3.4 相依性注入與反轉
現代 Java 與雲原生架構高度依賴相依性注入(DI)與 控制反轉(IoC)。遺留 COBOL 則相反,依賴硬編碼相依 與全域狀態。從一端移到另一端,需要識別圖譜中的每一項相依 並「反轉」它。
我們必須把典範從「模組 A 硬編碼連到資料庫 B」改為 「模組 A 接受資料庫連線作為參數。」此架構轉變 若 AI 一開始就看不見該相依,便不可能。知識圖譜 讓這些相依顯性化,使 AI 能產生必要的 DI 樣板程式碼 自動地,確保新系統模組化且可測試。 4
第 4 章:Veriprajna 語意 鍛造廠
4.1 儲存庫感知知識 圖譜的架構
「中間迷失」症候群與基於文本之遷移脆弱性的解方是 儲存庫感知知識圖譜 。這是一座統一的圖譜資料庫,結合 程式碼的靜態結構(AST、呼叫圖)與 業務邏輯的語意(文件、註解、變數意圖)。 5
Veriprajna 採用專有管線,在進階研究中常被稱為 「Semantic Forge」,以建立此智能。這不是通用 ETL 流程;它是 為遺留系統現代化量身打造的引擎。 33
4.2 第一階段:以 Tree-sitter 進行智慧解析
我們使用強健的解析器,主要是 Tree-sitter,以攝入遺留程式碼庫。此過程 支援超過 13 種語言,包括 COBOL、JCL、PL/I 與 Java。解析器產生 儲存庫中每個檔案的 AST。
關鍵的是,我們採用 語意分塊 。標準 RAG 管線使用「樸素切分」, 每 n 個 token 切一次文本。這經常把函式簽章與其本體切斷,或把 變數定義與其使用切斷,摧毀上下文。語意分塊使用 AST 來 識別邏輯邊界。我們按 SECTION、PARAGRAPH 或 METHOD 分塊程式碼, 確保圖譜中每個節點代表一個完整、可執行的邏輯單元。 23
4.3 第二階段:實體與關係抽取
一旦產生 AST,Semantic Forge 便抽取實體與關係,以 填充圖譜資料庫(例如 Neo4j、Memgraph)。
● 實體: 類別、段落、變數、資料庫表、API 端點。
● 關係:
○ CALLS:連接段落與其呼叫的子程式。
○ UPDATES_TABLE:連接邏輯區塊與其修改的 DB2 表。
○ IMPORTS_COPYBOOK:連接原始檔與其相依項。
○ DEFINES_VARIABLE:連接資料部與其建立的變數。
此階段把靜態文本轉成動態拓撲。我們現在可以查詢圖譜: 「列出所有更新 CUSTOMER-ID 欄位的段落。」此查詢立即回傳精確 結果,這是 grep 或向量搜尋做不到的。 14
4.4 第三階段:實體解析與合併
這是關鍵差異點。標準解析器把檔案 A 中的 ACCT-NUM 與 檔案 B 中的 ACCT-NUM 看成兩個不同字串。我們的系統執行 符號解析 。它 判定兩者指向共享 Copybook 中的同一條目。它把它們合併為一個 圖譜中的單一變數節點。
此外,我們執行 跨模態合併 。若程式碼庫含有一份 PDF 需求文件描述「User API」,而程式碼含有名為 UserAPI 的類別,系統計算嵌入以辨識它們是同一概念。它 把文件節點與程式碼節點合併。這把 意圖(文件)與 實作(程式碼)連結,讓 AI 同時獲得「為何」與「如何」。 8
4.5 第四階段:傳遞閉包計算
「銀行失敗」由傳遞相依造成:A 依賴 B,B 依賴 C。 AI 看見 A 卻漏掉 C。
Veriprajna 知識圖譜計算 傳遞閉包 。當系統分析 模組 A 時,它不停在直接鄰居。它深入遍歷圖譜(A -> B -> C) 以識別每個變數的「真相之根」。這確保當 AI 產生 模組 A 的程式碼時,它從模組 C 匯入正確定義,即使模組 C 位於 不同目錄或儲存庫。 8
第 5 章:圖譜檢索增強 生成(GraphRAG)
5.1 向量 RAG 的限制
向量檢索增強生成(RAG)是添加知識的產業標準,用於 LLM。它把文本轉成向量(數值表示)並尋找相似向量。 雖然極適於查詢 FAQ 這類非結構化文本,但對程式碼並不足夠。
● 變數重新命名: 若開發者把 Account 改名為 Acct,語意相似度 會下降,即使邏輯完全相同。
● 邏輯對關鍵詞: 搜尋「Interest Calculation」可能漏掉真正的數學,若 函式名為 FNC-001 且不含註解。
● 破碎的上下文: 向量 RAG 依餘弦相似度檢索「區塊」。它可能 檢索到單元測試與 UI 註解,卻漏掉核心業務邏輯,因為 變數名稱與查詢詞不匹配。 36
5.2 GraphRAG 的優勢
GraphRAG 運作於知識圖譜的結構,而不只是文本相似度。
1. 錨點識別: 當使用者問「重構付款邏輯」,系統使用 向量搜尋找出進入點(例如 ProcessPayment 段落)。
2. 圖譜遍歷(擴展): 並不就此停止,GraphRAG 遍歷圖譜 邊。它拉入:
○ CALLS 邊以找出子程式。
○ READS 邊以找出變數定義。
○ INCLUDES 邊以找出 Copybook。
3. 上下文建構: 這些相連片段——文本上可能不相似,但 在邏輯上不可分割——被組裝成連貫提示。
此 相關性擴展 確保 LLM 收到自足、可執行的邏輯 切片。它理解的不只是計算的 文本,還有其 機制。 36
5.3 多跳推理
研究顯示 GraphRAG 顯著優於向量 RAG,在需要 「多跳推理」的任務上——連接相隔數步的事實。在軟體中, 幾乎每個缺陷都是多跳推理的失敗(例如 A 呼叫 B,B 改變 X,C 讀取 X。若 A 改變,C 會不會壞?)。
GraphRAG 讓 AI 能回答複雜的影響分析問題:「若我改變利息 率邏輯於模組 A 中,模組 Z 中哪些報表畫面會受影響?」向量 RAG 無法回答,因為模組 A 與模組 Z 沒有文本相似度;它們只由 函式呼叫鏈連結。圖譜遍歷此鏈以提供確定 答案。 38
表 4:向量 RAG 對 GraphRAG
| 特徵 | 向量 RAG | GraphRAG |
|---|---|---|
| 檢索鍵 | 相似度(餘弦距離) | 關係(圖譜邊) |
| 上下文品質 | 高召回、低精準 (雜訊) |
高精度、連貫 上下文 |
| 多跳推理 | 差(漏掉間接連結) | 優(遍歷 鏈) |
|---|---|---|
| 幻覺風險 | 高(猜測缺失的 連結) |
低(檢索到的連結是 顯性的) |
| 最佳用途 | 非結構化文本(FAQ) | 結構化系統(程式碼、 生物學) |
第 6 章:工程化遷移 – 技術深潛
6.1 破解「全域變數」陷阱
COBOL 最危險的面向之一,是使用定義於 DATA DIVISION 並由程式各處多個 PERFORM 陳述式修改的全域變數。在 Java 中,最佳實務要求封裝;方法不應依賴隱藏狀態。
解方: Veriprajna 的代理在圖譜上執行資料流分析。我們追蹤每一個 變數的生命週期。
● 若段落 CALC-TAX 讀取 GROSS-INCOME,圖譜將 GROSS-INCOME 識別為 輸入相依 。
● 在產生 Java 方法 calcTax() 時,AI 明確把 BigDecimal grossIncome 加入方法簽章。
● 然後它更新該方法的 呼叫者,以傳入正確值。
此自動重構從「隱性全域狀態」到「顯性參數傳遞」 可防止困擾案例中那家銀行的副作用缺陷。 4
6.2 拆解 GOTO 義大利麵
COBOL 遷移最棘手的障礙之一是 GOTO 陳述式。GOTO 允許 程式執行跳到任何地方,造成非線性控制流,這對 現代結構化程式設計極為忌諱。 40 Java 沒有 GOTO 陳述式。
翻譯 GOTO 邏輯需要的不只是語法翻譯;它需要 控制流 展平 。
1. 圖譜分析: 我們把 GOTO 目的地對應為控制流圖中的邊 (CFG)。
2. 模式識別: 圖譜識別模式。
○ 跳回較早標籤的 GOTO 被識別為 迴圈 。
○ 跳過一個區塊的 GOTO 被識別為 條件(if/else)。
○ 跳到結束段落的 GOTO 是 返回 。
3. 重構: AI 在圖譜引導下,把這些跳躍重構為 while 迴圈、 do-while 迴圈,或 Java 中的 break/continue 陳述式。
若沒有圖譜來視覺化 GOTO 造成的「迴圈」,基於文本的 LLM 往往會 產生導致 StackOverflowError 的遞迴函式呼叫,或乾脆幻覺出 並不存在的邏輯流。 4
6.3 處理「死碼」
遺留系統充滿不再使用的程式碼——舊促銷、已下架產品、 除錯常式。遷移這些程式碼是浪費金錢,並增加資安攻擊面。 基於文本的 AI 遷移它所得到的一切;它無法區分作用中與死亡 程式碼。
解方: 呼叫圖識別不可達節點——沒有傳入 邊(無呼叫者)的段落或檔案。Veriprajna 的系統把這些「死碼」標記為刪除,在 遷移開始之前。這通常使程式碼庫縮小 20-30%,帶來顯著的 成本節省與更潔淨的最終架構。31
第 7 章:代理式未來 – 深度 AI 對淺層包裝層
7.1 超越聊天機器人:代理式工作流
Veriprajna 不部署「聊天機器人」。我們部署 自主 AI 代理 。代理是一套 能夠規劃、執行,並依回饋修正其行動的系統。 2
淺層包裝層工作流:
1. 使用者: 「轉換這段程式碼。」
2. 包裝層: 把文本送給 GPT-4。
3. 輸出: 回傳 Java 程式碼。
4. 結果: 程式碼無法編譯或執行。開發者手動除錯。
Veriprajna 深度代理工作流:
1. 規劃: 代理分析目標 COBOL 檔的 AST。它識別 相依並查詢知識圖譜。
2. 檢索: 它取得遷移所需的 GraphRAG 上下文。
3. 生成: 它使用「結構約束解碼器」產生 Java 程式碼,該解碼器 強制 Java 語法規則與型別安全。 7
4. 驗證(迴圈): 代理在沙盒中 編譯 所產生的 Java 程式碼。
5. 自我修正: 若編譯器拋出錯誤(例如「找不到變數」),代理 讀取錯誤、向圖譜查詢缺失相依,並重新產生程式碼。
6. 驗證: 它執行單元測試(由原始 COBOL 追蹤產生),以確保 輸出匹配輸入行為。
此 編譯—修復迴圈 把驗證負擔從人轉移到 AI,大幅 降低重構成本。 42
7.2 人在迴路的監督
雖然代理在執行上自主,但在策略上受監督。知識圖譜 提供 可解釋性 。不同於「黑箱」神經網路,圖譜讓開發者能 精確看見 AI 為何 做出決定。「AI 匯入了 com.bank.logic,因為它找到 對 COPYBOOK-X 的相依。」
此透明度對銀行這類受監管產業至關重要,每一行程式碼都必須 可稽核。我們從「相信我,我是 AI」走向「這是此邏輯的引用鏈」。 43
第 8 章:結論與策略 展望
8.1 儲存庫感知的投資報酬
McKinsey 資料顯示 GenAI 可將編碼任務減少 50%,但前提是部署 正確。 14 Veriprajna 圖譜方法的投資報酬(ROI)來自 消除返工。
● 手動遷移: 高成本、高風險、上市時間慢。
● 包裝層 AI: 中等成本(因除錯「幻覺」)、高風險(隱藏缺陷)、 中等上市時間。
● 儲存庫圖譜 AI: 低成本(自動化)、低風險(確定性驗證)、快 上市時間。
透過消除「上下文切換」開銷——開發者花數小時尋找 變數定義於何處——Veriprajna 使開發者生產力提高 2x 至 3x,相較 於標準 AI 工具。 2
8.2 以持續現代化面向未來
現代化不是一次性事件;它是生命週期。一旦程式碼庫被轉換為 知識圖譜,它就保持為活資產。隨著新 Java 程式碼演進,圖譜 即時更新。這使得:
● 自動文件: AI 能為 新系統產生最新文件,透過讀取圖譜。 44
● 架構漂移偵測: 系統可在新程式碼違反 圖譜中定義的模組化規則時警示架構師。 45
8.3 結構性轉向
「銀行失敗」的教訓很清楚: 程式碼不是文本。 它是複雜、相互連結的 邏輯系統。試圖用只懂文本的工具來現代化它,就如同 試圖用一串街名、卻沒有地圖來導航一座城市。你會「迷失在 中間」。
Veriprajna 提供這張地圖。透過建立 儲存庫感知知識圖譜,我們提供 AI 所需的結構智能,以導航遺留系統的複雜性。 我們對應相依、解開結點,並交付真正有效的現代化, 不只在語法上,更在現實中。
我們不只寫程式碼;我們工程化理解。這就是 聊天機器人與解決方案提供者之間的差異。這就是企業現代化的未來。
Veriprajna. 深度 AI,成就深度解方。
參考文獻
2025 Legacy Code Stats: Costs, Risks & Modernization - Pragmatic Coders,2025年12月10日檢索, https://www.pragmaticcoders.com/resources/legacy-code-stats
Legacy App Modernization: AI Automation Slashes Costs & Time - SoftProdigy,2025年12月10日檢索, https://softprodigy.com/ai-driven-legacy-app-modernization/
Lost-in-the-Middle Effect | LLM Knowledge Base - Promptmetheus,2025年12月10日檢索, https://promptmetheus.com/resources/llm-knowledge-base/lost-in-the-middle-efectf
How We Use AI Agents for COBOL Migration and Mainframe Modernization | All things Azure - Microsoft Developer Blogs,2025年12月10日檢索, https://devblogs.microsoft.com/all-things-azure/how-we-use-ai-agents-for-cobol-migration-and-mainframe-modernization/
Bridging Code and Context: A Knowledge Graph-Based Repository-Level Code Generation,2025年12月10日檢索, https://quantiphi.com/blog/bridging-code-and-context-a-knowledge-graph-based-repository-level-code-generation/
Structural-Semantic Code Graph (SSCG) - Emergent Mind,2025年12月10日檢索, https://www.emergentmind.com/topics/structural-semantic-code-graph-sscg
SemanticForge: Repository-Level Code Generation through Semantic Knowledge Graphs and Constraint Satisfaction - ResearchGate,2025年12月10日檢索, https://www.researchgate.net/publication/397521461_SemanticForge_Repository-Level_Code_Generation_through_Semantic_Knowledge_Graphs_and_Constraint_Satisfaction
RANGER: Repository‑level Agent for Graph‑Enhanced Retrieval - arXiv,檢索 2025年12月10日,https://arxiv.org/html/2509.25257v1
40 Legacy Software Migration Trends for Enterprises in 2025 | Adalo,2025年12月10日檢索, https://www.adalo.com/posts/cost-savings-from-replacing-legacy-tools-with-no-code-stats
The problems with migrating legacy code: Moving from COBOL to Java and how Metabob can help,2025年12月10日檢索, https://metabob.com/blog-articles/the-problems-with-migrating-legacy-code-moving-from-cobol-to-java-and-how-metabob-can-help.html
7 Signs Legacy System Modernisation Can't Wait Any Longer - Dreamix,2025年12月10日檢索, https://dreamix.eu/insights/when-to-invest-in-legacy-system-modernisation/
How to plan a seamless COBOL to Java migration in 8 weeks? - OptiSol Business Solutions,2025年12月10日檢索, https://www.optisolbusiness.com/insight/how-to-plan-a-seamless-cobol-to-java-migration-in-8-weeks
Application Modernization Statistics: Future-Proof Insights - eSparkBiz,2025年12月10日檢索, https://www.esparkinfo.com/blog/application-modernization-statistics
Modernizing legacy architectures using GenAI-powered Knowledge Graphs | by Sigmoid,2025年12月10日檢索, https://sigmoidanalytics.medium.com/modernizing-legacy-architectures-using-genai-powered-knowledge-graphs-73d96169f6d7
How GPT Wrappers Can Accelerate Your AI Product Development - Synergy Labs,2025年12月10日檢索, https://www.synergylabs.co/fr/blog/how-gpt-wrappers-can-accelerate-your-ai-product-development
The Ephemeral Scaffolding or Enduring Infrastructure? LLMs, Their Wrappers, and the Specter of a Dotcom Déjà Vu - Torome,2025年12月10日檢索, https://torome.co.uk/Template/PDO3/the-ephemeral-scafolding-or-enduring-inffrastructure-llms-their-wrappers-and-the-specter-of-a-dotcom-deja-vu
GraphRAG vs. Vector RAG: Side-by-side comparison guide - Meilisearch,2025年12月10日檢索, https://www.meilisearch.com/blog/graph-rag-vs-vector-rag
Lost in the Middle in LLMS. Why large language models ignore the… | by Cengizhan Bayram | Nov, 2025 | Medium,2025年12月10日檢索, https://medium.com/@cenghanbayram35/lost-in-the-middle-in-llms-86e461dc7212
A practical guide to the Claude code context window size - eesel AI,檢索 2025年12月10日,https://www.eesel.ai/blog/claude-code-context-window-size
Lost in the Middle: How Language Models Use Long Contexts - MIT Press Direct,2025年12月10日檢索, https://direct.mit.edu/tacl/article/doi/10.1162/tacl_a_00638/119630/Lost-in-the-Middle-How-Language-Models-Use-Long
Why Language Models Are “Lost in the Middle” - Towards AI,2025年12月10日檢索, https://pub.towardsai.net/why-language-models-are-lost-in-the-middle-629b20d86152
LLM Hallucinations – Definition, Examples and Potential Remedies - Software Mind,2025年12月10日檢索, https://softwaremind.com/blog/llm-hallucinations-definition-examples-and-potential-remedies/
Repository GraphRAG MCP Server: A Deep Dive for AI Engineers,2025年12月10日檢索, https://skywork.ai/skypage/en/repository-graphrag-mcp-server-ai-engineers/1978326852212269056
AST-Based Source Code Migration Through Symbols Replacement,2025年12月10日檢索, https://www.computer.org/csdl/proceedings-article/csde/2022/10089298/1M7LebbRyEw
BMSD 2011,2025年12月10日檢索, https://is-bmsd.org/Documents/ProceedingsOfFirstBMSD.pdf
Abstract Syntax Tree Creation - Compiler Design - Meegle,2025年12月10日檢索, https://www.meegle.com/en_us/topics/compiler-design/abstract-syntax-tree-creation
AST (Abstract Syntax Tree) - by Dinis Cruz - Medium,2025年12月10日檢索, https://medium.com/@dinis.cruz/ast-abstract-syntax-tree-538aa146c53b
Daily Papers - Hugging Face,2025年12月10日檢索, https://huggingface.co/papers?q=outlier%20chunk%20handling
What is a Call Graph? And How to Generate them Automatically freeCodeCamp,2025年12月10日檢索, https://www.freecodecamp.org/news/how-to-automate-call-graph-creation/
Generation of Call Graph for Java Higher Order Functions - IEEE Xplore, 2025年12月10日檢索, https://ieeexplore.ieee.org/document/9138056/
Enhancing Neural Code Representation with Additional Context - arXiv,檢索 2025年12月10日,https://arxiv.org/html/2510.12082v1
Can We Translate Code Better with LLMs and Call Graph Analysis? - IJCAI, 2025年12月10日檢索, https://www.ijcai.org/proceedings/2025/0848.pdf
Code Graph: From Visualization to Integration - FalkorDB,檢索 2025年12月10日,https://www.falkordb.com/blog/code-graph/
Codebase to Knowledge Graph generator : r/LocalLLaMA - Reddit,2025年12月10日檢索, https://www.reddit.com/r/LocalLLaMA/comments/1mzvk44/codebase_to_knowledge_graph_generator/
SemanticForge: Repository-Level Code Generation through Semantic Knowledge Graphs and Constraint Satisfaction - arXiv,2025年12月10日檢索, https://arxiv.org/html/2511.07584
RAG vs GraphRAG: Shared Goal & Key Differences - Memgraph,檢索 2025年12月10日,https://memgraph.com/blog/rag-vs-graphrag
Do You Really Need GraphRAG? A Practitioner's Guide Beyond the Hype,2025年12月10日檢索, https://towardsdatascience.com/do-you-really-need-graphrag-a-practitioners-guide-beyond-the-hype/
Navigating the Nuances of GraphRAG vs. RAG - foojay,2025年12月10日檢索, https://foojay.io/today/navigating-the-nuances-of-graphrag-vs-rag/
GraphRAG vs RAG: Which is Better? | by Mehul Gupta | Data Science in Your Pocket,2025年12月10日檢索, https://medium.com/data-science-in-your-pocket/graphrag-vs-rag-which-is-beter-81a27780c4ff
Why not GOTO Statement? [closed] - Stack Overflow,2025年12月10日檢索, https://stackoverflow.com/questions/19766205/why-not-goto-statement
Alternative to a goto statement in Java - Stack Overflow,2025年12月10日檢索, https://stackoverflow.com/questions/2430782/alternative-to-a-goto-statement-in-java
Legacy Code Modernization with Claude Code: Breaking Through Context Window Barriers,2025年12月10日檢索, https://www.tribe.ai/applied-ai/legacy-code-modernization-with-claude-code-breaking-through-context-window-barriers
Legacy IT Modernization with AI | MITRE,2025年12月10日檢索, https://www.mitre.org/news-insights/publication/legacy-it-modernization-ai
Documenting and Modernizing Legacy Codebases with C3 Generative AI,2025年12月10日檢索, https://c3.ai/blog/documenting-and-modernizing-legacy-codebases-with-c3-generative-ai/
The AI revolution in application modernization: from manual burden to strategic advantage,2025年12月10日檢索, https://vfunction.com/blog/ai-app-modernization-strategy/
更喜歡視覺化的互動式體驗?
透過可導覽的章節與資料視覺化,以互動式格式探索本文的關鍵發現、統計數據與架構。
常見問題解答
為何 AI 程式碼助理會在企業遺留系統現代化中失敗?
AI 程式碼助理把程式碼當線性文本,並受「中間迷失」(Lost in the Middle)症候群所苦——它們能準確處理長上下文的開頭與結尾,卻漏掉埋在中段的關鍵變數定義。在 COBOL 系統中,數千行之外的 REDEFINES 子句或 COPYBOOK 相依可以徹底改變資料解讀,造成語法完美但語意崩潰的翻譯。
什麼是用於程式碼現代化的儲存庫感知知識圖譜?
儲存庫感知知識圖譜把程式碼庫中的每個實體——變數、函式、類別、模組——對應為圖譜中的節點,邊則代表包含、繼承、呼叫與資料流關係。不同於搜尋關鍵詞相似度的文本檢索,圖譜捕捉跨越數百萬行的確定性結構相依,確保遷移時不會忽略任何變數或狀態變化。
企業遺留系統現代化的挑戰有多大?
僅美國的技術債就高達 $1.52 trillion。約 95% 的 ATM 交易仍在 COBOL 上運行,43% 的銀行系統以 COBOL 為基礎,而 80% 的聯邦 IT 預算用於維護而非創新。超過十年的遺留系統發生資安事件的可能性高出三倍,使現代化成為關乎存亡的必要。
自信打造您的 AI。
與一支在打造新世代企業級 AI 方面擁有深厚經驗的團隊攜手合作。讓我們協助您設計、建置並部署值得信賴的 AI 策略。
Veriprajna 深度科技顧問公司 專精於為醫療、金融及法規監管領域打造攸關安全的 AI 系統。我們的架構均依循既定規範進行驗證,並備有完整的合規文件。