本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

通过AI + 远程开发提高生产力

2025年5月27日 由 布里吉特·墨塔戈克里斯托夫·马蒂乔什·斯派瑟奥利维亚·古萨多·麦克维克

使 VS Code 如此灵活和强大的功能之一是远程开发。无论您是从本地桌面连接到一个安全的虚拟机,从平板电脑连接到一个功能强大的计算机,还是连接到一个包含项目所需所有依赖项的容器化环境——VS Code 从任何地方开发任何事物的能力都可以在几乎所有设置中提供帮助。

现在将这些功能与 VS Code 中 AI 的灵活性和强大功能结合起来,你将拥有一个非常多功能的开发环境。你可以确保聊天对话具有关于远程工作区的上下文信息,在设置和调试远程连接时获得 AI 帮助,并为代理模式提供一个更自主的空间。

在这个博客中,我们将探讨如何通过人工智能增强您现有的远程设置,使其“自动运行”,并包括一些更定制的人工智能+远程工作流程,其中包括自定义说明、聊天参与者和代理自动批准。

什么是远程开发?

当我们描述 VS Code 远程开发时,我们指的是五个主要体验:

  • 远程 - SSH - 通过使用 SSH 打开远程机器/VM 上的文件夹,连接到任何位置。
  • 开发容器 - 在容器内(或挂载到容器内)使用单独的工具链或基于容器的应用程序。
  • WSL - 在 Windows Subsystem for Linux 中获得由 Linux 提供的开发体验。
  • 远程 - 隧道 - 通过安全隧道连接到远程机器,无需配置 SSH。
  • GitHub Codespaces - 由我们管理的远程环境。

远程架构

如何在远程环境中使用人工智能?

我们希望在 VS Code 中尽可能无缝地提供 AI 编码体验,无论您是在本地机器上工作还是连接到远程环境。如果您已经在本地使用 GitHub Copilot,我们会自动在远程环境中安装它。而且 GitHub Codespaces 也已经进行了配置!

在远程环境中使用AI将会正常工作,还有额外的AI功能可以让你的远程工作流程更加的强大:

  • 自定义指令 - 为您的远程环境定制您的AI体验
  • 聊天参与者 - 使用聊天来设置和排除远程环境的故障
  • 工具批准 - 在远程环境中安全地运行自主编码会话

为您的远程环境量身定制您的AI体验

在与LLM合作时,用户提出的最高要求之一是:如何帮助LLM更好地理解我的代码和编码规范?你可以通过自定义指令来实现这一点,这些指令描述了常见的指南或规则,以获取与你的特定编码规范和技术栈匹配的响应。与其在每次AI聊天查询中手动包含此上下文,自定义指令会自动将此信息与每次聊天请求结合(了解更多详情,请参阅我们的最新博客文章)。

在我们团队最近的自托管中,我们发现使用自定义指令不仅有助于向 Copilot 传达我们的代码和编码实践,还提供了我们连接的远程环境类型的相关信息,例如:

  • 这属于哪种远程环境(即开发容器还是虚拟机)?
  • 安装了哪些语言或工具链?它们的用途是什么?
  • 工具链安装在哪里(即它们是否在路径)?

这是一个我们团队发现有用的示例指令:

这是一个包含`python3``pip3`的开发容器,这些工具已预装并可从`PATH`中访问,同时还有用于Python开发的Python语言扩展。

要在一个远程环境中开始使用自定义指令,您可以使用与本地相同的指令文件在远程环境中使用。

为你的开发容器配置AI

开发容器通过预配置所有工具和依赖项,使开始项目更加容易。通过添加自定义说明,可以确保LLM适应该环境,而不是提供通用答案。例如,一个用于Python编码的开发容器可能会有关于安装哪些工具或遵循哪些编码规范的自定义说明(如上面示例中所示)。

我们的团队已经采取措施,预配置自定义指令,以使在使用开发容器时您的生活更加轻松。我们发布开发容器资源(如图像和功能),以简化创建和连接开发容器的过程,我们现在在这些文件中包含自定义指令。以下是您如何使用我们团队添加的自定义开发容器指令的示例:

  • 使用我们的镜像或功能之一创建一个新的开发容器配置。你可以手动创建,或者通过开发容器:添加开发容器配置文件...命令,由开发容器扩展提供:

    开发容器:在 VS Code 命令面板中添加开发容器配置文件命令

  • 按照快速选择中的步骤操作。在这个例子中,我们将选择Python模板:

    在 VS Code 命令面板中选择 Python 3 开发容器配置

  • 在 VS Code 中构建并连接到你的开发容器:

    VS Code通知在开发容器中重新打开项目

  • 您选择并连接的环境基于我们的Python模板,该模板通过Python功能包含自定义指令。尝试在您的开发容器内与Copilot聊天 - Copilot会自动从Python镜像中拉取自定义指令!

    使用自定义指令的AI聊天

除了使用我们添加到图像和功能中的自定义说明外,您还可以向devcontainer.json在您的项目中 - 我们已经实现了自定义说明可以在图像和模板之间成功合并。您可以使用"github.copilot.chat.codeGeneration.instructions"设置,就像我们在上面描述的Python开发容器配置中所做的那样。

如果你发布任何其他人可以使用的开发容器配置,我们建议探索如何向其中添加自定义指令!这里是一个在Python开发容器功能中使用自定义指令的示例:

"github.copilot.chat.codeGeneration.instructions": [
    {
        "text": "这个开发容器包含 `python3` 和 `pip3`,已经预安装并可在 `PATH` 上使用,并且还有用于 Python 开发的 Python 语言扩展。"
    }
],

使用聊天来设置和排除远程环境的故障

聊天参与者通过提供特定领域的知识来提升您的聊天体验,例如如何与数据库或特定API进行交互。输入@在聊天输入字段中查看和选择可用的参与者列表 - 他们将以询问模式提供。有一些内置的聊天参与者,例如@工作区@vscode,和@终端扩展程序还可以贡献聊天参与者。

The Remote - SSH 扩展包括一个 Copilot 聊天参与者。问@远程-SSH获取配置或故障排除远程环境元素的帮助:

使用 VS Code 聊天面板中的 Remote - SSH 参与者

参与者还对一般的SSH和远程开发主题有了解:

询问远程 - SSH 参与者关于远程认证

如果发生连接失败,与 Copilot 一起诊断 功能提供了一种快速了解问题的方法:

在通知中选择与 Copilot 一起诊断

Copilot将调查该问题并提供可操作的见解:

在远程环境中安全运行自主编码会话

作为完成用户提示任务的一部分,智能体模式 可以运行工具和终端命令。智能体模式非常强大,因为它不仅可以提出代码更改,还可以运行终端命令和工具。例如,它可以安装项目依赖项或运行测试。然而,这些操作中的一些可能会具有破坏性,例如删除文件、修改本地配置等。因此,您需要批准在智能体模式中使用工具和终端命令。

代理模式工具批准选项下拉菜单

如果你想要自动批准所有工具,你现在可以使用实验性的chat.tools.autoApprove设置。为了保护您免受意外终端命令或工具调用的影响,您可以选择仅在开发容器或远程机器上设置此选项,以防止您的本地开发机器受到影响:

在 VS Code 远程设置中设置自动批准工具

这将自动批准所有工具,当语言模型希望运行工具时,VS Code 不会要求确认。这可以通过给予代理模式更多的自主权来节省时间,但请注意,启用此设置后,您将没有机会取消模型希望执行的可能具有破坏性的操作。

请注意,属于您本地机器的远程环境(如开发容器)或可以访问您的凭证的环境将带来不同的风险级别。

接下来是什么

我们对 VS Code 中远程开发和 AI 的未来感到兴奋。我们的每月发布版本充满了令人兴奋的新功能,我们不断向前看,关注下一步,例如支持 Copilot Chat 在网页中 (vscode.dev, github.dev).

快乐(聪明和远程的)编码! 布里吉特、克里斯托夫、乔什和奥利维亚