通过 AI + 远程开发提高生产力
2025年5月27日,作者:Brigit Murtaugh,Christof Marti,Josh Spicer,Olivia Guzzardo McVicker
VS Code 如此灵活强大的一个特性就是远程开发。无论是从本地桌面连接到安全的虚拟机,还是从平板电脑连接到功能强大的计算机,亦或是连接到包含项目所需所有依赖项的容器化环境——VS Code 的“随时随地开发任何内容”的能力几乎可以满足任何设置的需求。
现在,将这些能力与 VS Code 中 AI 的灵活性和强大功能相结合,您将获得一个功能极其强大的开发环境。您可以确保聊天对话包含远程工作区的上下文信息,获得 AI 在设置和调试远程连接方面的帮助,并为代理模式提供一个更隔离的空间来自主工作。
在本博客中,我们将探讨如何增强您现有的远程设置,使其能够与 AI “完美协作”,并介绍一些更定制化的 AI + 远程工作流,包括自定义指令、聊天参与者和代理自动批准。
什么是远程开发?
当我们描述 VS Code 远程开发时,我们指的是五个主要体验:
- 远程 - SSH - 通过 SSH 打开远程计算机/虚拟机上的文件夹来连接到任何位置。
- 开发容器 - 在容器内部(或挂载到容器中)使用单独的工具链或基于容器的应用程序。
- WSL - 在 Linux 子系统 (Windows Subsystem for Linux) 中获得基于 Linux 的开发体验。
- 远程 - Tunnels - 通过安全隧道连接到远程计算机,无需配置 SSH。
- GitHub Codespaces - 由您管理(但为您提供)的远程环境。

如何在远程环境中使用 AI?
我们希望使 VS Code 中的 AI 编码体验尽可能无缝,无论您是在本地计算机上工作还是连接到远程环境。如果您已经在本地使用 GitHub Copilot,我们将自动将其远程安装。GitHub Codespaces 也已配置好!
虽然在远程环境中使用 AI 可以无缝进行,但还有一些额外的 AI 功能可以使您的远程工作流更加强大:
- 自定义指令 - 为您的远程环境定制 AI 体验
- 聊天参与者 - 使用聊天来设置和排查您的远程环境
- 工具批准 - 在远程环境中安全地运行自主编码会话
为您的远程环境定制 AI 体验
当用户使用大型语言模型 (LLM) 时,我们收到的最常请求之一是:我如何能更好地帮助 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 编码的开发容器可能包含关于已安装工具或应遵循的编码指南的自定义指令(如以上示例所示)。
我们的团队已采取措施预配置自定义指令,以便在使用开发容器时进一步简化您的工作。我们发布开发容器资源(如镜像和功能),以简化创建和连接到开发容器的过程,并且我们现在在这些文件中包含了自定义指令。以下是您如何使用我们团队添加的自定义开发容器指令的一个示例:
-
使用我们的一个镜像或功能创建新的开发容器配置。您可以手动创建,或者通过Dev Containers 扩展提供的Dev Containers: Add Dev Container Configuration Files...命令来创建。

-
按照快速选择中的步骤进行操作。在此示例中,我们将选择 Python 模板。

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

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

除了使用我们添加到镜像和功能中的自定义指令外,您还可以将其他自定义指令添加到项目中的 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."
}
],
使用聊天来设置和排查您的远程环境
聊天参与者 通过提供特定领域的知识来增强您的聊天体验,例如如何与数据库或特定 API 交互。在聊天输入字段中输入 @ 来查看并从可用参与者列表中进行选择——他们将以“Ask”模式提供。有几个内置的聊天参与者,如 @workspace、@vscode 和 @terminal。扩展也可以贡献聊天参与者。
Remote - SSH 扩展包含一个 Copilot 聊天参与者。向 @remote-ssh 询问有关配置或排查您的远程环境的帮助。

该参与者也了解常规的 SSH 和远程开发主题。

如果发生连接失败,使用 Copilot 诊断功能可以快速了解问题。

Copilot 将调查问题并提供可操作的见解。
在远程环境中安全地运行自主编码会话
作为完成用户提示任务的一部分,代理模式可以运行工具和终端命令。代理模式功能强大,因为它不仅可以建议代码更改,还可以运行终端命令和工具。例如,它可以安装项目依赖项或运行测试。但是,其中一些操作可能具有破坏性,例如删除文件、修改本地配置等。因此,您需要批准在代理模式下使用工具和终端命令。

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

这将自动批准所有工具,VS Code 在语言模型希望运行工具时不会要求确认。这可以通过赋予代理模式更多的自主权来节省时间,但请记住,启用此设置后,您将无法取消模型可能采取的具有破坏性的操作。
请注意,作为本地机器一部分的远程环境(如开发容器)或可以访问您凭据的远程环境,会带来不同程度的风险。
下一步
我们对 VS Code 中远程开发和 AI 的未来感到兴奋。我们的月度发布充满了令人兴奋的新功能,并且我们一直在展望未来,例如支持 Copilot Chat 在 Web 上(vscode.dev,github.dev)。
祝您编码愉快(智能且远程)!Brigit、Christof、Josh 和 Olivia