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 的分析与你的基准事实进行核对。
- 从你从未得到直接答案的问题开始:谁真正调用了这个工具,这个作业涉及哪些表,这个变量意味着什么?
- 提出更有挑战性的混合数据和推理的问题:"给我一个按主题组织的带图表的调用图"
链接
