AB
AiBoss
Tutorials

Cody

Tutorials

用 Cody 在 VS Code 中完成代码问答、补全、重构与修错

面向已在 VS Code 中接入 Cody 的开发者,按聊天问答、行内补全、Opt+K 重构、Ask Cody to fix 修错四条主线,给出可直接照做的操作步骤、快捷键与提示词写法,并说明上下文范围、模型选择与 diff 审核等注意事项。

Cody 是 Sourcegraph 提供的 AI 编程助手,以编辑器扩展的形式工作。它把代码库上下文交给大模型,让开发者直接在编辑器里提问、补全、改写和修错,而不必把代码复制到外部聊天窗口。这篇教程面向已经在 VS Code 中装好 Cody、并接入了 Sourcegraph Enterprise 实例的开发者,目标是把四件事真正做出来:用聊天理解代码、用行内补全加快输入、用行内编辑重构代码、用「Ask Cody to fix」修掉报错。如果你更想先了解这类助手在站内的定位,可以看 Cody 这一条目,再回到本文按步骤操作。

需要说明的是,Cody 的用法不止一种,本文以 VS Code 扩展为主线。JetBrains 系列 IDE 也有对应能力,文中涉及的地方会单独点出。具体的模型清单、可用功能与配额会随版本变化,请以官网当前信息为准。

准备工作

开始之前,先把下面三件事确认好,否则后面的步骤会卡住:

  • 在 VS Code 中安装 Cody 扩展。 这是本文所有操作的前提。
  • 准备一个已启用 Cody 的 Sourcegraph Enterprise 账号。 扩展安装完成后需要连接到你的 Sourcegraph Enterprise 实例,连接成功后才能使用聊天、补全与行内编辑。
  • 在 VS Code 中打开一个项目。 Cody 的很多能力依赖当前工作区的代码上下文,空窗口下体验会大打折扣。

如果你属于 Sourcegraph.com 上的某个组织,或者使用自托管的 Sourcegraph 实例,还会多出一项便利:可以看到队友预先做好的 Prompts。这部分内容在后面的「使用 Prompts 复用团队流程」一节展开。

操作步骤

第一步:打开 Cody 聊天面板并确认默认设置

安装扩展并连上 Sourcegraph Enterprise 实例之后,从 VS Code 左侧的活动栏点击 Cody 图标,即可打开 Cody 聊天面板。

打开后先留意两个默认值,它们决定了你第一次提问会得到什么样的回答:

  • 上下文范围: 默认情况下,聊天输入框会带上整个代码库的上下文。
  • 默认模型: 默认选中的聊天模型是 Claude 3.5 Sonnet。

这两个默认值都可以按使用场景调整。素材给出的调整方向是围绕速度、准确性和成本做权衡:需要更快响应、更低开销,或者需要更强的推理能力时,切换模型与上下文范围即可。具体有哪些模型可选、各自的能力边界如何,以官网当前信息为准。

第二步:用聊天提问理解代码

感受 Cody 能力最直接的方式就是聊天。你可以从简单问题开始,例如:

  • 这段代码是做什么的?
  • 用三到四行解释这个代码库。

也可以直接问更复杂的问题,例如:

  • 有哪些重构这个代码库的思路?
  • 怎样让这段代码性能更好?

Cody 的回复形式包括代码片段、修改建议或解释说明。提问时把范围说清楚会明显提升命中率:问「这个文件里的这个函数」比问「这段代码」更容易得到可用的答案,因为默认上下文是整个代码库,范围越模糊,模型越容易在无关文件里打转。

第三步:接受行内代码补全

Cody 会在你输入时提供实时的单行与多行补全。它利用光标周围的代码作为上下文来预测你接下来要写的内容,往往在你敲完之前就给出建议。

验证方式很简单:在一个 JavaScript 文件里输入 bubbleSort() 函数。Cody 会用灰色暗显的文字自动预测函数体。

  • 按 Tab 接受建议。
  • 按 Esc 忽略建议。

补全的质量取决于光标附近的上下文。函数名、参数、已有变量命名风格都会影响预测结果,所以保持命名一致、把相关代码放在同一文件或同一目录下,补全通常更贴合你的意图。

第四步:用行内编辑重构代码

重构不需要开聊天窗口,用行内编辑即可完成。流程是:选中代码,按下编辑快捷键,用自然语言描述你想要的改动,然后审核生成的 diff。

以第三步的 bubbleSort() 函数为例,把它改成按日期降序排序:

  1. 选中这个函数。
  2. 按 Opt+K 打开行内编辑输入框。
  3. 在输入框中写下重构要求,例如「把这个函数改成按日期降序排序」,然后按 Enter。
  4. Cody 会在几秒内生成一份改动 diff。
  5. 审核 diff:满意就接受,不满意就拒绝,或者重试一次。

diff 审核这一步不要跳过。行内编辑只负责给出候选改动,是否合入由你决定;重试时把要求写得更具体(比如指明排序字段、比较方式、是否原地修改),通常比反复重试同一句话更有效。

第五步:让 Cody 修掉报错

调试同样可以交给 Cody,聊天和行内编辑在这件事上都能用。更省事的是 IDE 内置的「Ask Cody to fix」入口。

在 VS Code 和 JetBrains IDE 中,当代码出现错误时会出现红色警告提示,同时旁边会出现一个灯泡图标。点击这个灯泡图标,菜单里就有「Ask Cody to fix」选项。选中它之后,Cody 会尝试修复这个 bug,界面上会显示「Cody is working」的提示。

这个入口的好处是把报错位置、报错信息和周边代码一起交给了 Cody,省去手动描述问题的步骤。修复结果仍然需要你自行判断是否采纳。

第六步:使用 Prompts 复用团队流程

为了把开发流程里的关键任务自动化,Cody 提供了 Prompts。如果你属于 Sourcegraph.com 上的某个组织,或者使用自托管的 Sourcegraph 实例,就能看到队友预先构建好的 Prompts,直接复用团队已经沉淀下来的提问方式。

除此之外,你也可以通过 Sourcegraph 实例中的 Prompt Library 创建自己的 Prompts。适合做成 Prompt 的通常是那些你会反复问、且每次只需要替换少量变量的任务,比如「为这个函数补单元测试」「按项目规范检查这个文件的错误处理」。

一个完整示例

下面把前面的步骤串成一条完整链路,从理解代码到修掉报错,全程在一个 JavaScript 文件里完成。

场景: 项目里有一个排序函数,需要改成按日期降序,并且运行时报了错。

第 1 步,理解现状。 打开 Cody 聊天面板,选中或指向这个函数,提问「这段代码是做什么的?」。Cody 会返回解释,确认它当前的排序逻辑与比较字段。

第 2 步,写出新函数。 在文件里输入 bubbleSort(),等待 Cody 用灰色文字预测函数体,按 Tab 接受,或按 Esc 忽略后自己写。

第 3 步,重构。 选中整个函数,按 Opt+K,输入「把这个函数改成按日期降序排序」,按 Enter。等 diff 出现后逐行审核,确认比较逻辑确实改成了日期降序,再接受改动。

第 4 步,处理报错。 如果改动后编辑器里出现红色警告,点击旁边的灯泡图标,选择「Ask Cody to fix」。等待「Cody is working」结束后,查看 Cody 给出的修复,确认无误后采纳。

第 5 步,沉淀。 如果这类重构在你的项目里经常出现,到 Sourcegraph 实例的 Prompt Library 里把它做成一个 Prompt,下次直接调用,不必每次重新描述要求。

整条链路里,Cody 负责生成候选答案,你负责判断与采纳。把 diff 审核当成必经环节,而不是可选项,是这套流程能稳定产出的关键。

注意事项

  • 默认上下文是整个代码库。 这带来便利,也意味着提问越模糊,模型越容易在无关代码上消耗注意力。提问时尽量指明文件、函数或具体行为。
  • 模型与上下文都可切换。 默认模型是 Claude 3.5 Sonnet,但你可以按速度、准确性或成本的需要更换。可选的模型清单与各自特性会变化,请以官网当前信息为准。
  • 行内编辑的快捷键是 Opt+K。 这是素材中给出的组合,不同平台或键位设置下可能不同,以你本地编辑器的实际绑定为准。
  • 补全的接受与忽略分别是 Tab 和 Esc。 灰色暗显文字只是建议,不会自动写入文件。
  • 「Ask Cody to fix」依赖 IDE 的报错提示。 素材明确提到该入口出现在 VS Code 与 JetBrains IDE 中,且需要先出现红色警告与灯泡图标。没有报错提示时,这个入口不会出现,此时改用聊天或行内编辑描述问题。
  • Prompts 的可见性取决于账号类型。 只有属于 Sourcegraph.com 上的组织、或使用自托管 Sourcegraph 实例时,才能看到队友创建的 Prompts;个人使用场景下需要自己在 Prompt Library 中创建。
  • 账号前提是 Sourcegraph Enterprise 且已启用 Cody。 没有满足这一条,扩展装好也无法正常使用聊天与补全。
  • 功能、配额与价格以官网当前信息为准。 本文只描述操作方式,不涉及具体额度与计费细节。