Transcript
00:00:00来看看这个。
00:00:01这很有趣。
00:00:02它没有添加任何测试,因为对于依赖
00:00:07手动测试或存储库中不存在的主机专用测试工具的旧版大型机应用程序来说,这是很典型的。
00:00:13这就是 Bob,IBM 的新 IDE,他们称之为你的 AI 驱动开发合作伙伴。
00:00:20几个月前,我做了一期关于 IBM 旗舰级 Granite 模型的视频,现在他们
00:00:25通过发布一个带有可爱头像和大量
00:00:31酷炫功能的全新 IDE 平台,将其提升到了一个新的水平,所有这些都由他们的 Granite 模型驱动。
00:00:34在本视频中,我们将仔细看看 Bob,了解它是如何工作的,测试一下,并弄清楚
00:00:39Bob 是否真的是我们一直期待的下一位自主架构师。
00:00:45这会很有趣,让我们深入了解一下。
00:00:51在 Claude Code、Gemini、Codec 以及其他所有 AI 模型套件的世界中,这就引出了
00:00:58一个问题,Bob 有什么特别或独特之处?
00:01:01嗯,虽然大多数助手专注于“氛围编程”(vibe coding),也就是基本上只是快速生成
00:01:06代码片段,但 Bob 是为架构治理而构建的。
00:01:11它不仅仅是一个单一的聊天窗口,更是一个将规划
00:01:17与执行分离开来的代理工作流。
00:01:18IBM 特别设计了 Bob,使其具备一系列实用的功能,让你能够仔细
00:01:23控制开发周期的不同阶段,比如规划、编码、审查等。
00:01:30你可以在聊天窗口的最底部看到他们的模式选择器。
00:01:34你可以使用“询问模式”(ask mode)进行快速提问,使用“代码模式”(code mode)进行实现,还有“规划模式”(plan mode)。
00:01:40你甚至可以创建自己定制的模式来满足你的需求。
00:01:44但我最喜欢的功能之一是它的“审查模式”(review mode)。
00:01:48你可以运行 slash review 命令,Bob 会利用其内置的安全护栏来扫描
00:01:53是否存在硬编码的密钥、注入风险或薄弱的 OWASP 实践等问题。
00:01:59它甚至为你提供了一个专门的发现面板,你可以像使用专业的
00:02:05安全审计工具一样来分流问题。
00:02:07但这一个直接内置在你的 IDE 中。
00:02:09如果你更喜欢 CLI,你也可以在带有 Bob Shell 的终端中使用它。
00:02:14而且因为 IBM 是现存最古老的技术公司之一,并且在大型机系统方面有着深厚的
00:02:18根基,Bob 可能对 COBOL 等旧语言有着专业的理解。
00:02:24所以我决定给它进行一次终极测试。
00:02:25你知道大家常开玩笑说 COBOL 是最古老的语言之一,但它仍然驱动着
00:02:28许多银行系统和 ATM 机,以及人们因为害怕破坏全球金融管道
00:02:33而不敢触碰其源代码。
00:02:38嗯,我抓取了一个名为 zBank 的开源 COBOL 存储库,我们要看看 Bob
00:02:42是否能够逆向工程这种旧版大型机逻辑,并自主地将其现代化为
00:02:48一个功能性的 Python 应用程序。
00:02:53所以当我第一次打开 Bob 时,它会要求你从
00:02:55其他流行的 IDE(如 VS Code)导入设置。
00:03:00所以我打算这样做。
00:03:03现在,进入之后,我们可以看到它看起来和 VS Code 非常相似,只是在侧面
00:03:04有一个可爱的 Bob 聊天面板。
00:03:09在这里我们可以看到,我们也可以选择之前讨论过的模式之一。
00:03:12由于我不是在规划一个新项目,我只是打算直接使用代码模式来询问
00:03:17Bob 是否可以立即开始编码。
00:03:22对于提示词,我指定 Bob 是一名 Python 开发人员,其任务是
00:03:24将旧的 COBOL ATM 机堆栈现代化,并将其转化为一个由 Streamlit 驱动的、具有
00:03:28美观 UI 的清晰 Web 应用程序。
00:03:34在 Bob 开始编写代码之前,它显示了一个非常详细的自动批准模型。
00:03:37这是一个很好的触点,因为在这里你可以明确指定代理
00:03:43在没有你许可的情况下可以做什么。
00:03:47说实话,我觉得大多数时候我们都在不停地点击自动批准。
00:03:49但在这里,你实际上可以定义一个清晰的沙盒,这样你就可以进行选择。
00:03:53但对于这个演示,我允许它在我们的存储库中读取和写入文件,然后让
00:03:58它完成它的任务。
00:04:03所以 Bob 大约花了三分钟完成了任务,现在让我们启动应用程序
00:04:04看看它到底是如何工作的。
00:04:08我们刚开始的时候有一个非常好的深色主题登录页面。
00:04:10我们可以使用硬编码的演示凭据登录来测试它。
00:04:13仪表板看起来也不错,尽管弹出的文本太亮了。
00:04:18所以它确实缺乏一些设计判断力,但所有的操作都是功能性的。
00:04:22总的来说,它确实成功地完成了这个任务,并将 COBOL 堆栈现代化了。
00:04:27现在我想尝试审查功能。
00:04:33这将迫使 Bob 对代码库进行全面审计,并找出任何潜在的安全问题。
00:04:35一旦运行它,我们现在就会看到一个新的 Bob 发现面板弹出,
00:04:42我们可以在这里更详细地检查每个问题。
00:04:46如果我们点击其中一个问题,你可以看到还有一个方便的灯泡按钮。
00:04:49如果我们点击它,Bob 会自动尝试自行修复这个问题。
00:04:54不仅如此,在修复之后,它还会询问我们是否要为该特定问题
00:04:55添加一个专门的单元测试。
00:05:00那么让我们点击它。
00:05:05现在我们可以看到 Bob 添加了额外的测试并执行它们,以仔细检查
00:05:08该问题确实得到了修复。
00:05:10在这里我们还可以看到 Bob 所做更改的差异日志。
00:05:15让我们尝试另一个问题。
00:05:17这个很有趣。
00:05:21它检测到了一个潜在的竞态条件问题。
00:05:22所以让我们点击灯泡并尝试修复那个。
00:05:23哦,哇。
00:05:26这个修复实际上是一行代码的更改,即添加一个 begin immediate 命令以实现
00:05:29SQLite 中的正确锁定。
00:05:30非常不错。
00:05:35所以现在我们再次让它修复它,然后要求它为它添加适当的测试,以确保
00:05:37该问题得到妥善处理。
00:05:38最后还有一件事我想检查一下。
00:05:43所以我打算打开这个存储库的一个新副本,而不带我们的 Python 更改。
00:05:46我想在原始的 COBOL 实现上运行审查命令,看看它
00:05:47是否会发现任何潜在的问题。
00:05:52看那个。
00:05:57它发现了八个问题。
00:05:59所以它可以自信地识别关键漏洞,即使是在 COBOL 这样的古老语言中也是如此。
00:06:00我不明白这里发生了什么。
00:06:02但让我们尝试修复其中一个问题。
00:06:08再一次,在修复之后,Bob 询问我们是否要为它添加专门的测试。
00:06:10那么让我们点击是。
00:06:12来看看这个。
00:06:19这很有趣。
00:06:20它没有添加任何测试,因为对于依赖
00:06:21手动测试或存储库中不存在的主机专用测试工具的旧版大型机应用程序来说,这是很典型的。
00:06:23哇。
00:06:28所以我猜这堆栈太古老了,以至于他们当时甚至没有自动测试它。
00:06:33所以可能根本不存在适用于 COBOL 的测试框架。
00:06:34那确实很有趣。
00:06:39总之,这就是 Bob 的全部内容了。
00:06:40现在这可能是一个热门观点,但我确实非常喜欢使用 IDE 而不是 CLI,因为在 CLI 中
00:06:45我大多数时候都不明白代理在做什么。
00:06:47我非常看重像 Bob 这样的工具,它具有用于
00:06:49批准或审查发现等功能的单独面板和 UI 控件。
00:06:51我发现它在代码库中提供了一种更有条理的工作方式,拆分
00:06:57任务并全面了解实际正在发生的情况。
00:07:00所以如果你想亲自尝试 Bob,他们确实提供了一个免费试用版,其中包括 40 个 Bob
00:07:06金币可以使用。
00:07:09作为比较,我们刚才做的测试花费了大约 4 个 Bob 金币,而 1 个 Bob 金币
00:07:15等同于 50 美分。
00:07:19那么你觉得 Bob 怎么样?
00:07:24你试过它吗?
00:07:25你会使用它吗?
00:07:30请在下方的评论区告诉我们。
00:07:33还有,各位,如果你喜欢这些类型的技术细分内容,请通过猛击
00:07:34视频下方的点赞按钮让我知道。
00:07:35也别忘了订阅我们的频道。
00:07:36我是来自 Betterstack 的 Andris,我们下期视频见。
00:07:38Check this out.
00:07:42This is interesting.
00:07:44It didn't add any tests because this is typical for legacy mainframe applications that rely
00:07:47on manual testing or mainframe specific testing tools not present in the repository.