– 代理会话日,2月19日

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

2025年5月27日,作者:Brigit MurtaughChristof MartiJosh SpicerOlivia Guzzardo McVicker

VS Code之所以如此灵活和强大,其中一个特性是远程开发。无论您是从本地桌面连接到安全的虚拟机,还是从平板电脑连接到功能强大的计算机,亦或是连接到包含项目所需所有依赖项的容器化环境——VS Code 能够随时随地进行开发,几乎可以满足任何设置的需求。

现在,将这些功能与 VS Code 中 AI 的灵活性和强大功能相结合,您将拥有一个极其通用的开发环境。您可以确保聊天对话具有关于您的远程工作区的上下文,获得 AI 在设置和调试远程连接方面的帮助,并为代理模式提供一个更隔离的空间以自主工作。

在本博客中,我们将探讨如何增强您现有的远程设置,使其能够“即刻生效”地与 AI 协同工作,以及一些更定制化的 AI + 远程工作流程,包括自定义指令、聊天参与者和代理自动审批。

什么是远程开发?

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

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

Remote architecture

如何在远程环境中利用 AI?

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

虽然在远程环境中使用 AI 会“即刻生效”,但还有一些额外的 AI 功能可以使您的远程工作流程更加强大

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

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

我们从用户那里听到的最常见的请求之一是:如何帮助 LLM 更好地理解我的代码和编码实践?您可以通过自定义指令来实现这一点,这些指令描述了常见的指南或规则,以获得与您的特定编码实践和技术栈相匹配的响应。与其在每次 AI 聊天查询中手动包含此上下文,不如自定义指令会自动将此信息合并到每个聊天请求中(请参阅我们的最新博客文章了解更多信息)。

在我们的团队最近的自托管过程中,我们发现使用自定义指令不仅可以告诉 Copilot 我们的代码和编码实践,还可以提供更多关于我们连接的远程环境类型的信息,例如

  • 这是一种什么样的远程环境(例如,开发容器与虚拟机)?
  • 安装了哪些语言或工具链?它们的用途是什么?
  • 工具链安装在哪里(例如,它们是否在 PATH 中可用)?

以下是我们的团队认为有用的示例指令

This is a dev container that includes `python3` and `pip3` pre-installed and available on the `PATH`, along with the Python language extensions for Python development.

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

为您的开发容器配置 AI

开发容器通过预配置所有工具和依赖项,使您更容易开始一个项目。通过添加自定义指令,您可以确保 LLM 针对该环境进行定制,而不是提供通用答案。例如,用于 Python 编码的开发容器可能具有关于已安装哪些工具或应遵循哪些编码指南的自定义指令(如上例所示)。

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

  • 使用我们的镜像或 Features 创建新的开发容器配置。您可以通过手动方式或通过Dev Containers 扩展提供的 Dev Containers: Add Dev Container Configuration Files... 命令来执行此操作

    Dev Containers: Add Dev Container Configuration Files command in VS Code Command Palette

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

    Select Python 3 dev container config in VS Code Command Palette

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

    VS Code notification to reopen project in dev container

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

    AI chat using custom instructions

除了使用我们添加到镜像和 Features 的自定义指令外,您还可以将其他自定义指令添加到您项目中的 devcontainer.json - 我们已经使其能够成功合并来自镜像和模板的自定义指令。您可以使用 "github.copilot.chat.codeGeneration.instructions" 设置,就像我们在上面描述的 Python 开发容器配置中所做的那样。

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

"github.copilot.chat.codeGeneration.instructions": [
    {
        "text": "This dev container includes `python3` and `pip3` pre-installed and available on the `PATH`, along with the Python language extensions for Python development."
    }
],

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

聊天参与者通过提供特定领域的知识(例如如何与数据库或特定 API 交互)来增强您的聊天体验。在聊天输入字段中键入 @ 以查看和选择可用参与者列表 - 他们将在 Ask 模式下可用。有几个内置的聊天参与者,例如 @workspace@vscode@terminal。扩展也可以贡献聊天参与者。

Remote - SSH 扩展包含一个 Copilot 聊天参与者。询问 @remote-ssh 以获取有关配置或排除远程环境故障的帮助

Using Remote - SSH participant in VS Code chat panel

该参与者也精通一般的 SSH 和远程开发主题

Asking Remote - SSH participant about remote auth

如果发生连接故障,Diagnose with Copilot 功能提供了一种快速了解问题的方法

Diagnose with Copilot option in notification

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

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

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

Agent mode tool approval options dropdown

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

Auto Approve tool setting in VS Code remote settings

这将自动批准所有工具,并且 VS Code 不会在语言模型希望运行工具时要求确认。这可以通过赋予代理模式更多自主权来节省时间,但请记住,启用此设置后,您将无法取消模型想要采取的潜在破坏性操作。

请注意,属于您本地机器一部分的远程环境(例如开发容器)或具有访问您凭据权限的远程环境将构成不同级别的风险。

接下来是什么

我们对 VS Code 中远程开发和 AI 的未来感到兴奋。我们的每月发布版本包含令人兴奋的新功能,并且我们不断展望未来,例如支持 Copilot Chat 在 Web 上 (vscode.devgithub.dev)。

祝您编码愉快(智能且远程)!Brigit、Christof、Josh 和 Olivia

© . This site is unofficial and not affiliated with Microsoft.