这是 Bob 博客的第一篇文章。它由构建 Bob 的团队为使用它的开发人员编写。我们将用它来解释工程决策,分享我们在真实代码库中交付 AI 开发合作伙伴时学到的东西,并偶尔论证一个立场。这不是文档,也不是营销——如果你想要其中任何一个,我们会将你链接到正确的地方。
对于我们的第一篇文章,我们不想遍历 Bob 所做的一切,而是想做三件事:
- 看看 Bob 的一些核心功能。
- 分享一套实用技巧,用于设置存储库,以便 Bob 做出最好的工作。
- 解释我们如何在具有这种代码访问权限的工具中处理安全性。
1. 开发人员实际花时间做什么
现代 AI 助手可以从描述中编写函数。这已经有一段时间了,不再是有趣的问题。有趣的问题是,当工作不是"生成新代码"而是"修改已经存在的系统"时会发生什么——找到进行更改的正确位置,理解团队已经达成一致的约定,在多年来一直在增长的文件中保持行为一致。 这就是大多数专业软件开发的样子。Bob 是为这种工作而构建的,我们在本文其余部分描述的设计选择都源于这一重点。
1.1. 模式:告诉 Bob 你正在做什么类型的工作
Bob 不是单一的"做一些有用的事情"交互。你开始会话的模式告诉 Bob 你即将做什么类型的工作,它可以使用哪些工具,以及它应该有多主动。
- Ask — 只读。非常适合"探索阶段"。Bob 在不进行更改的情况下解释架构和逻辑。当你深入遗留系统或对你没有编写的逻辑片段进行健全性检查时使用它。
- Plan — Bob 为你即将进行的更改生成计划:要触及的文件、要考虑的边缘情况、建议的工作顺序。输出是计划,而不是代码。
- Code — 用于实际进行更改。Bob 在你的项目中读取、写入和测试,遵循你设置的约定和规则。
- Advanced — 通过模型上下文协议(MCP)扩展 Code 模式,使 Bob 能够访问你组织的特定工具和服务:内部 API、数据库、专有工具。
- Orchestrator — 用于跨模式的多步骤工作。Bob 根据当前步骤的要求自己在模式之间切换,是混合探索、规划和执行的大型工作的正确选择。
在会话开始时选择正确的模式是获得更好输出的最便宜的杠杆之一。一个好习惯,特别是在你不太了解的代码库上或对于具有任何实际表面积的更改,是从 Ask 或 Plan 开始,只有在你对工作有清晰的了解后才切换到 Code。直接进入 Code 在当时感觉更快,但那是假设倾向于作为实际更改滑入并开始累积为技术债务的地方。
1.2. Bob tips:实时复杂性指标
我们都经历过:你深陷"区域",嵌套最后一个条件来处理边缘情况,突然一个函数已经成长为一个三十行的迷宫。在典型的工作流程中,这个迷宫直到几小时后队友在拉取请求中指出它才会被解开。Bob Tips 通过在逻辑仍然在你脑海中温暖时提供重构建议来改变叙述。当你输入时,持续的静态分析会悄悄地监视你打开的文件。当函数跨越到高圈复杂度或变得难以维护时,Bob 立即用紫色下划线标记它。传统的 linter 只是告诉你做错了什么;Bob Tips 提供了出路。该工具的重点完全在于提供可操作的重构建议:
上下文智能:将鼠标悬停在紫色下划线上不仅显示警告——它提供了一个特定的、AI 生成的策略来解开那里的逻辑。 无缝执行:点击 Fix with Bob 会立即打开一个专用聊天。AI 已经掌握了函数的上下文,并准备好在你身边执行清理。
在后台运行的指标只是管道。有价值的部分是,长期存在的代码质量信号现在在开发人员在文件中的那一刻驱动 AI 建议,而不是三天后在代码审查中浮出水面。
1.3. Review 模式:代码审查,系统一起阅读
代码审查在过去二十年中为软件质量做了与任何实践一样多的事情,它也是团队失去动力的地方。Bob 不会取代人工审查。它做机械的部分,这样他们就可以专注于高级架构和意图,而不是寻找"容易摘的"错误。
审查从侧边栏的 Review Panel 或通过聊天中的 /review 运行。有两种模式:
- 分支比较。 此模式处理"经典"差异。使用 /review 审核针对当前 head 的未提交工作,或使用
/review <branch>针对特定远程。这是对通常堵塞审查线程的"挑剔"的先发制人打击。 - Issue 覆盖。
/review <issue-url> --issue-coverage验证你的本地更改是否真正解决了 GitHub issue 要求的内容。这是开发人员告诉我们他们在尝试之前没有意识到他们想要的模式。 结果出现在专用面板中,因此你可以查看它们并决定用 Bob 修复它们。这是一个健全性检查,确认你不仅编写了好代码,而且编写了正确的代码。
1.4. Literate coding:写在代码旁边的意图
当你深入复杂功能时,在聊天窗口中引用多个文件是一件苦差事。你发现自己在输入"查看 types.ts 中的接口和 api.ts 中的服务,然后在这里更新逻辑..."Bob 翻转了这种动态。通过 Literate Coding 将交互直接移动到源文件中,编辑器本身成为界面。这不仅仅是避免侧面板;这是为 AI 提供你意图的复杂多文件地图。
- 自然表达意图:使用 Cmd+M 切换模式,用简单的语言或伪代码编写你的逻辑。你的指令在编辑器中以蓝色显示,恰好位于实现所属的位置。
- 超越单行:虽然传统聊天经常失去复杂项目的"线索",但 Bob 的 literate coding 正在发展以弥合文件之间的差距。开发人员现在可以跨多个模块提供上下文,确保数据模型中的更改准确反映在相关控制器中。
- 即时验证:按 Cmd+Enter,Bob 就地生成实现。因为结果显示为内联差异,你可以在提交更改之前根据周围的代码审核逻辑。
好处很简单:提示位于代码所在的位置,周围的文件已经充当上下文。当前范围是单文件;多文件支持在路线图上。
1.5. 终端中的 Bob
Bob Shell 将 Bob 的功能带到命令行,我们发现有两种使用方式特别有价值。
- 终端作为工作空间:在 shell 内使用 AI 开发助手已经成为一种流行的形式因素——它自然地与许多开发人员已经驱动 Git、构建和测试的方式配对,并已成为许多团队日常工作流程的一部分。这是将 AI 带到远程服务器或本机 IDE 集成不可用的环境的最可靠方式:无论你在哪里有终端,你都可以拥有 Bob。
- 从确定性到自适应自动化:Bob Shell 在非交互式会话中表现出色,如计划作业和 CI/CD 管道中的部署脚本。今天脚本委托给确定性工具的任何地方,它都可以委托给具有周围存储库完整上下文的 Bob——从另一端出来的自动化比固定管道更具适应性。
我们将发布一篇后续文章,介绍我们在 CI 中非交互式运行 Bob 时学到的东西:在实践中运行良好的模式,包括 PR 摘要、风险标记以及与现有自动化的集成。
2. 使你的存储库 Bob 就绪
Bob 产生最佳工作的存储库共享一些共同特征。它们都不是 AI 特定的——它们是使存储库对任何开发人员来说都愉快工作的相同事物——但每一个都为 Bob 提供了更多的工作内容。
快速、可靠的测试。 如果 npm test(或你的等效项)需要五分钟或间歇性失败,迭代循环会减慢到爬行,反馈信号会降级。一分钟以下的测试对任何开发人员来说都是乘数;对于在紧密循环中工作的 AI 助手来说,它们是必不可少的。
记录的构建和测试命令。 Makefile、package.json 中的顶级脚本部分或 README 块——Bob 可以找到"我如何运行这个"的地方。没有它,Bob 必须推断,而推断是错误进入的地方。
可执行样式。 在保存时或在 CI 中运行的 linter 和格式化程序。Bob 从这些中获取你的约定。显式的、机器可检查的规则每次都优于隐式约定。
存储库根目录中的 agents.md。 项目结构、关键文件、编码标准、该做什么和不该做什么。这是你可以为 AI 辅助添加的最高杠杆文件。正确的思考方式是将其视为为 LLM 而不是新员工编写的 CONTRIBUTING.md。
代码旁边的 markdown 架构文档。 即使是简短的文档也有帮助。描述模块及其边界的 docs/architecture.md 让 Bob 可以回答"这去哪里?"而无需从导入重新推导设计。
我们一路上学到的一些东西:
- 大型规则文件会降低信号。 超过几百行后,模型性能会降低。按区域拆分规则——存储库根目录中的
agents.md,每个包的作用域readme.md——而不是将所有内容集中在一个文件中。 - 复合你的工程。 当你完成任务时,要求 Bob 将相关学习提炼回规则文件或技能中。随着你使用它,存储库成为一个更高效的环境。
- 迭代,不要一次性完成。 一致地落地正确更改的多轮对话优于落地其中百分之八十的单个长提示。
3. 安全和控制
Bob 有几层保护,它们协同工作,而不是任何单一的护栏做所有工作。适合第一篇文章的简短版本:
- 手动批准每个操作,或者一旦你信任工作流程,按工具类别(只读与写入)自动批准。
.bobignore让 Bob 远离它不应该读取的文件——凭据、生成的工件、任何敏感的东西。- 自定义规则以与在开发人员身上执行编码标准的相同方式在 Bob 上执行编码标准。
- 自动检查点使从不需要的更改中恢复成为一键操作。
- 你的提示不会用作训练数据!
特别是自动批准,值得深思熟虑。这是你对 Bob 在检查点之间可以与你一起做多少事情的主要控制之一,扩大它是一个生产力增益,但也要求你在决定什么属于该信封内和什么不属于时多做一点。对大多数开发人员来说,一个明智的默认值是自动批准只读工具,至少在前几周将写入操作保留在手动批准上,并对运行 shell 命令或到达本地工作树之外的系统的任何东西特别考虑。列表中的其他控制——.bobignore、自定义规则、检查点——被设计为与自动批准组合而不是替代它。
4. 开始
- 从我们的网站安装 IBM Bob,或通过你选择的终端安装 Bob Shell。
- 查看我们的最佳实践指南并咨询我们的安全指南。
- 从真实任务开始——当 Bob 帮助解决真实问题时,你学得最好。
链接
