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

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

使 VS Code 如此灵活且强大的功能之一是远程开发(Remote Development)。无论你是从本地桌面连接到安全的虚拟机,从平板电脑连接到性能强劲的计算机,还是连接到包含项目所需所有依赖项的容器化环境,VS Code 能够实现从任何地方开发任何内容,这几乎适用于任何开发场景。

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

在本文中,我们将探讨如何增强现有的远程设置以使其与 AI “无缝协作”,并介绍一些包含自定义指令、聊天参与者和智能体自动批准等功能的定制化 AI + 远程工作流。

什么是远程开发?

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

  • Remote - SSH - 通过 SSH 打开远程机器/虚拟机上的文件夹,从而连接到任何位置。
  • Dev Containers - 在容器内(或挂载到容器中)使用独立的工具链或基于容器的应用程序进行开发。
  • WSL - 在 Windows Linux 子系统中获得基于 Linux 的开发体验。
  • Remote - Tunnels - 通过安全隧道连接到远程机器,无需配置 SSH。
  • GitHub Codespaces - 为你托管的远程开发环境。

Remote architecture

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

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

虽然 AI 在远程环境中开箱即用,但还有一些额外的 AI 功能可以让你的远程工作流更加强大:

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

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

当使用大语言模型(LLM)时,用户最常提出的需求之一是:如何帮助 LLM 更好地理解我的代码和编码规范?你可以通过自定义指令(custom instructions)来实现这一点,它描述了常见的准则或规则,以获得符合你特定编码实践和技术栈的响应。无需在每次 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

开发容器(Dev Containers)通过预配置所有工具和依赖项,使项目启动变得更加容易。通过添加自定义指令,你可以确保 LLM 是针对该环境进行定制的,而不是提供通用的回答。例如,用于 Python 编码的开发容器可能包含关于安装了哪些工具或应遵循哪些编码指南的自定义指令(如上面的示例所述)。

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

  • 使用我们的镜像或功能插件之一创建一个新的开发容器配置。你可以手动完成此操作,也可以通过开发容器扩展提供的 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 功能插件包含了自定义指令。尝试在开发容器中与 Copilot 聊天——Copilot 会自动从 Python 镜像中提取自定义指令!

    AI chat using custom instructions

除了使用我们添加到镜像和功能插件中的自定义指令外,你还可以在项目的 devcontainer.json 中添加额外的自定义指令——我们已确保自定义指令可以在镜像和模板之间成功合并。你可以使用 "github.copilot.chat.codeGeneration.instructions" 设置,就像我们在上述 Python 开发容器配置中所做的那样。

如果你发布了供他人使用的开发容器配置,我们建议探索如何为它们添加自定义指令!这里是一个在 Python 开发容器功能插件中使用自定义指令的示例。

"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."
    }
],

使用聊天来设置和排查你的远程环境问题

聊天参与者(Chat participants)通过提供特定领域的知识(例如如何与数据库或特定 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

如果发生连接失败,使用 Copilot 诊断(Diagnose with Copilot)功能提供了一种快速了解问题的方法。

Diagnose with Copilot option in notification

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

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

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

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.dev, github.dev)。

祝你(智能且远程地)编码愉快!Brigit, Christof, Josh, and Olivia

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