我如何借助 AI 复活遗留代码:为 Kiroween 构建 CodePhoenix

发布: (2025年12月5日 GMT+8 00:08)
9 分钟阅读
原文: Dev.to

Source: Dev.to

(请提供需要翻译的正文内容,我将为您翻译成简体中文并保持原有的格式、Markdown 语法以及技术术语不变。)

问题:$85 十亿美元的垂死代码

就在此刻,全球的银行系统仍然依赖于 1970 年代编写的 COBOL 代码。政府机构运行的仍是 90 年代的 Visual Basic 6 应用。科学机构则依赖于已经没有活人能够完全理解的 Fortran 程序。

关键统计

  • $85 十亿美元的全球技术债务
  • 仍在生产环境中运行的 COBOL 代码达 2200 亿行
  • 43 % 的银行系统完全基于 COBOL
  • 迁移 单个 遗留系统的平均成本为 $50 万–$500 万
  • 典型迁移时间为 6–18 个月
  • 92 % 的 IT 领导者表示技术债务拖慢了创新

编写这些代码的开发者正陆续退休。COBOL 程序员的平均年龄已超过 55 岁。再过 10 年,这些知识将会消失。这不仅是技术问题,更是企业软件的生存危机。

理念:CodePhoenix – 通过 AI 复活

为了参加 Kiroween 黑客马拉松的 “Resurrection” 类别,我需要构建一个能够真正让死代码复活的项目。凤凰的隐喻再合适不过——从遗留系统的灰烬中重生。我只有 72 小时且单独作业,于是我求助于 Kiro AI

CodePhoenix 工作流

  1. Upload – 上传你的古老遗留文件(COBOL、VB6、Fortran、PHP 等)
  2. Analyze – AI 深入理解业务逻辑、数据结构和安全性
  3. Transform – AI 将其转换为现代语言(TypeScript、React、Python、Go)
  4. Export – 下载为云就绪、容器化、带文档的应用程序

全部由 Kiro AI 提供动力,让不可能成为可能。

使用 Kiro 规格的基础

代码化架构

我在 .kiro/specs/architecture.md 中编写了规格说明:

Core Architecture:
- Frontend: Next.js 14 App Router with TypeScript
- Backend: Next.js API Routes
- AI Engines: GPT‑4 for transformation, Claude for analysis
- Storage: Session‑based filesystem
- UI: Tailwind CSS with custom phoenix theme (orange/red gradients)
- Code Editor: Monaco Editor (VS Code engine)

Kiro 读取了此单个文件并生成了:

  • 完整的 Next.js 14 项目结构
  • 带严格模式的 TypeScript 配置
  • 使用自定义凤凰配色方案的 Tailwind 设置
  • API 路由模板
  • 组件脚手架

Vibe Coding the UI

Vibe 1:主上传区

Instructions in .kiro/vibe/coding-instructions.md:

VIBE 1: Create the main upload zone
- Drag‑and‑drop area with phoenix rising animation
- Support .cbl, .vb, .for, .php, .pas files
- Show file previews with syntax highlighting
- Animated fire particles on hover
- Error states for unsupported files

Kiro 生成了一个完整的 React 组件,包含:

  • Framer Motion 动画(上传时凤凰升起)
  • 文件验证和错误处理
  • 语法高亮预览
  • 响应式移动布局
  • 加载状态
  • 可访问性(ARIA 标签、键盘导航)

Vibe 2:分析结果仪表盘

VIBE 2: Create the analysis results dashboard
- Beautiful card grid showing AI analysis
- Complexity visualization (1‑10 scale with color coding)
- Security vulnerabilities with severity badges
- Business logic extraction display
- Migration roadmap timeline
- ROI calculator with interactive sliders

Kiro 生成了:

  • 六个相互关联的组件
  • React Flow 依赖图可视化
  • 动画图表(Recharts 集成)
  • 交互式 ROI 计算器
  • 流畅的页面转场

API 路由与 Steering

我需要三个复杂的 API 端点:

  • /api/upload – 处理文件上传
  • /api/analyze – AI 代码分析
  • /api/transform – AI 代码转换

由于这些端点必须支持 64 种文件扩展名、与 OpenAI 和 Anthropic API 集成、保持精确的业务逻辑,并且能够根据 COBOL PICTURE 子句生成准确的 TypeScript 类型,我在 .kiro/steering/api-guidelines.md 中编写了以下指南:

API Transformation Rules:

COBOL → TypeScript Mapping:
- IDENTIFICATION DIVISION → Module exports with metadata
- DATA DIVISION → Interface definitions
- PICTURE 9(5)V99 → number (with validation)
- PICTURE X(50) → string (max length  50)
- PICTURE S9(7)V99 COMP-3 → Decimal type
- PERFORM UNTIL → while loop with guard clause
- EVALUATE → switch statement with exhaustive checking

VB6 → React Mapping:
- Form → Functional component
- Control → React component with state
- Event handlers → onClick/onChange callbacks
- Recordset → Array of typed objects
- ADO connection → Fetch API or GraphQL

使用这些引导规则,Kiro 生成的 API 能够:

  • 正确解析 64 种遗留语言文件扩展名
  • 将 COBOL 数据类型映射到 TypeScript,准确率约 95 %
  • 完全保留业务逻辑(至关重要!)
  • 生成符合现代惯例的代码
  • 包含全面的错误处理

结果: 一个约 85 % 由 AI 生成的全栈应用程序基础。

转换引擎

挑战:让 AI 理解已有 50 年历史的代码

现代大语言模型(LLM)主要在 2010‑2020 年代的 GitHub 代码上进行训练。它们见过数百万行 TypeScript 和 Python,但 COBOL、Fortran 77、RPG 等老旧语言在训练数据中非常少见。因此,GPT‑4 能把 COBOL 转换为 TypeScript,却常常出现细微错误。

错误的转换(未进行引导)

COMPUTE TAX-AMOUNT = INCOME * 0.20
// WRONG! Loses precision
const taxAmount = income * 0.2;

正确的转换(经过引导)

// Correct – uses Decimal for exact arithmetic
const taxAmount = new Decimal(income).times(0.20);

解决方案:用于领域专长的 MCP 服务器

我在 .kiro/mcp/ 目录下构建了三个 Model Context Protocol (MCP) 服务器,为 AI 提供每种遗留语言的专家级理解。

COBOL 解析器 MCP (cobol-parser-mcp.ts)

/**
 * Capabilities:
 * - Tokenize COBOL divisions
 * - Parse PICTURE clauses to TypeScript types
 * - Extract PERFORM logic to function calls
 * - Map COPY books to imports
 * - Analyze COMP/COMP-3 binary fields
 * - Handle REDEFINES (union types)
 */

Fortran 分析器 MCP (fortran-analyzer-mcp.ts)

/**
 * Capabilities:
 * - Parse SUBROUTINE/FUNCTION blocks
 * - Analyze DO loops and GOTOs
 * - Map COMMON blocks to classes
 * - Convert FORMAT statements to template literals
 * - Handle IMPLICIT NONE type inference
 */

传统数据库 MCP (legacy-db-mcp.ts)

/**
 * Capabilities:
 * - Parse DB2/Oracle DDL
 * - Generate Prisma schema
 * - Suggest PostgreSQL migration
 * - Map hierarchical databases to relational
 */

这些 MCP 服务器向 Kiro 提供结构化的抽象语法树(AST)和语义元数据,从而实现 95 %+ 的转换准确率

构建差异查看器

用户需要并排查看转换过程。我写了一条简短的指令:

Create an interactive code comparison viewer using Monaco Editor.

Left pane: original legacy code with syntax highlighting.  
Right pane: transformed modern code.

Features: line mapping, diff highlights, collapsible sections, export buttons.

Kiro 生成了一个约 400 行的 React 组件,提供:

  • 双窗格 Monaco 编辑器(原始代码 vs. 转换后代码)
  • 支持 64 种源语言 + 40 种目标语言的语法高亮
  • 行对行的差异高亮
  • 大文件的可折叠区域
  • 跨两个窗格的搜索/替换
  • 导出功能(PDF、Markdown、原始代码)

多语言支持

最初我只针对五种语言;平台现在已支持 64 种源语言,包括:

  • Mainframe Era: COBOL, RPG, JCL, PL/I, Assembler
  • Desktop Era: VB6, PowerBuilder, Delphi, FoxPro
  • Web 1.0: Classic ASP, ColdFusion, Perl CGI
  • Scientific: Fortran 77/90, ALGOL, APL
  • Systems: Pascal, Modula‑2, Ada

以及 40+ target frameworks,例如:

  • Web: TypeScript, React, Next.js, Vue, Angular, Svelte
  • Backend: Python, FastAPI, Django, Flask, Node.js, NestJS
  • Enterprise: Java Spring Boot, C# .NET Core, Kotlin
  • Mobile: React Native, Flutter, SwiftUI

其结果是一个多功能、AI 驱动的平台,能够复活几乎所有的遗留代码库,并交付现代、可投入生产的应用程序。

Back to Blog

相关文章

阅读更多 »