使用 AI 的最佳实践

本文涵盖了在 Visual Studio Code 中高效利用 AI 的最佳实践。每一部分都提供了可操作的指导,并附有深入文档的链接。

优化您的 AI 项目

通过在配置项目和代码库时考虑 AI 的需求,您可以提高 AI 响应的准确性,并确保 AI 遵循团队的编码标准和规范。

VS Code 支持多种机制来配置项目的 AI 行为。在聊天中输入 /init 即可生成入门配置文件。

机制 最适合 开始使用
自定义指令 项目范围的编码标准和架构上下文 输入 /init 生成针对项目的常驻指令
自定义代理 专业工作流或角色(如 TDD、安全审计) 输入 /create-agent <描述> 生成自定义智能体
技能 领域特定能力(如测试、部署) 输入 /create-skill <描述> 生成技能
工具和 MCP 服务器 连接外部系统(数据库、API、CLI) mcp.json 中配置

有效项目配置的建议

  • 保持指令文件简洁。它们会在每次聊天交互时加载。重点关注 AI 无法从代码中推断出的信息,例如非默认规范、架构决策或环境设置。
  • 使用 applyTo 模式来限定指令范围。输入 /instructions 来创建特定语言或文件夹的指令文件,而不是将所有内容塞进同一个文件中。
  • 限制启用的工具。启用的工具越少,响应速度越快、相关性越高。仅在任务需要时才启用相应的工具。

有关完整设置详情,请参阅自定义概述

为任务选择合适的工具

VS Code 中的 AI 提供多种交互模式。为手头任务选择最合适的一种,可以节省时间并获得更好的结果。

工具 最适合 示例
行内建议 编写代码时保持流畅 代码补全、变量命名、样板代码
提问 (Chat) 疑问、头脑风暴、探索思路 “此项目中的身份验证是如何工作的?”
内联聊天 目标明确的就地编辑,无需切换上下文 重构函数、添加错误处理
代理 需要自主规划和工具使用的多文件变更 端到端实现某个功能
规划 (Plan) 实施前的结构化规划 设计架构或迁移策略
智能操作 内置的专用一步任务 生成提交信息、修复错误、重命名符号

选择合适的智能体(Agent)类型

使用智能体时,请选择与您的任务和工作流相匹配的智能体类型。每种类型在交互性、速度和隔离性上都有不同的权衡。

  • 使用本地智能体进行交互式工作。本地智能体在您的编辑器中运行,可完全访问您的工作区、工具和扩展。当您需要快速迭代、实时审查变更或使用 VS Code 特定工具(如集成浏览器或 MCP 服务器)时,请选择它们。

  • 将明确定义的任务卸载给后台智能体。当任务足够清晰,不需要您实时监控每一步时,请使用 Copilot CLI云端智能体

  • 使用云端智能体进行团队协作。云端智能体在远程运行并创建拉取请求 (Pull Request),非常适合需要团队审查的任务,或者当您希望将 GitHub Issue 直接分配给智能体时。

  • 为独立任务运行并行会话。启动多个智能体会话(横跨本地、后台和云端环境),同时处理不相关的任务。通过会话列表监控它们。

  • 在智能体类型之间切换。首先使用本地智能体以交互方式进行探索和规划,然后交接给后台或云端智能体进行实施。对话历史记录会随之传递。

更多信息,请参阅使用智能体智能体教程

编写有效的提示词

AI 响应的质量取决于您提示词的清晰度和具体程度。这些技巧有助于您获得更好的结果。

  • 明确输入、输出和约束条件。说明您要使用的编程语言、框架和库。描述预期的行为,或包含示例输入和输出。

    Write a TypeScript function that validates email addresses.
    Return true for valid addresses, false otherwise. Don't use regex.
    Example: validateEmail("user@example.com") returns true
    Example: validateEmail("invalid") returns false
    
  • 分解复杂任务。与其一次性要求完成整个功能,不如将其拆解为范围明确的小步骤。这种方法产生的结果更可靠,也更容易及早发现问题。

  • 包含预期输出以进行验证。提供测试用例、预期结果或验收标准,以便 AI 可以验证其自身的工作。这是您可以采取的最有效的做法之一。

    Implement a rate limiter using the token bucket algorithm.
    Write unit tests that verify: 10 requests/second allowed,
    11th request rejected, bucket refills after 1 second.
    Run the tests after implementing.
    
  • 避免模糊的提示词。像“改进这段代码”这样的提示词无法为 AI 提供任何方向。请具体说明“改进”的含义:例如“降低时间复杂度”或“为 null 值添加输入验证”。

  • 通过后续提示词进行迭代。通过在后续消息中添加约束或修正来精炼响应,而不是重写整个提示词。

  • 尽早纠正方向。如果 AI 的方向不对,通过后续消息引导它,以重定向当前请求、排队后续请求,或者停止并发送新的提示词。

  • 让 AI 提出澄清问题。如果任务含糊不清,请指示 AI 在继续之前向您提问。这比猜测需求更能得到准确的结果。

  • 并行任务。如果您有多个独立的任务,让 AI 并行运行它们以节省时间。例如:“并行执行关于 X 和 Y 的独立研究并总结结果。”

更多信息,请在 GitHub Copilot 文档中查找实用的提示词示例

提供正确的上下文

当 AI 拥有相关上下文时,响应会更准确。使用以下技巧为 AI 提供正确的信息。

  • AI 会自动执行代码搜索以收集相关上下文。当您的提示词模棱两可时,可以通过在提示词中使用 #<file>#<folder>#<symbol> 引用特定文件、文件夹或符号来引导 AI。

  • 要从网页或 GitHub 仓库拉取信息,请使用 #fetch 为 AI 提供超出您代码库的最新信息,或者使用 GitHub MCP 等 MCP 服务器提供的工具。

  • 引用 VS Code 环境上下文(例如源代码管理变更、终端输出或测试失败),以帮助 AI 了解项目的当前状态并提供更相关的响应。

  • 添加图像或屏幕截图,让 AI 分析视觉内容。

  • 使用集成浏览器预览您的应用,并选择页面元素作为上下文。

更多信息,请参阅向聊天提示词添加上下文配置工具

选择合适的模型

每种 AI 模型都有不同的优势。有些擅长推理,有些擅长代码生成或快速响应。为您的任务选择合适的模型可提升效果。

  • 将模型与任务复杂度匹配。对简单的补全和样板代码使用快速模型。对于规划、调试或架构决策,请切换到针对推理优化的模型。

  • 使用最新模型。新模型通常具备更强的功能。VS Code 会持续增加对新模型和模型版本的支持。检查可用模型并使用最新的版本。

  • 在提示词文件和智能体中固定模型。在您的提示词文件或自定义智能体定义中指定首选模型,以确保在特定任务中始终使用正确的模型。

  • 尝试并对比。如果您对响应不满意,请尝试不同的模型。对于同一个提示词,不同模型可能会产生显著不同的结果。

  • 调整推理模型的思考深度。使用模型选择器中的思考深度控制,为复杂任务增加思考量,或为简单任务减少思考量。

  • 使用 BYOK(自带 API 密钥)以获得更多控制。使用您自己的 API 密钥以获得更多的模型选择和托管选项。

更多信息,请参阅选择 AI 模型Copilot Chat 的可用模型

先规划,后执行

对于涉及多个文件的复杂变更,请将规划与实施分开。这种方法可以防止 AI 解决错误的问题。

  1. 探索。在使用 ask 模式或子智能体在进行更改之前读取相关代码并了解其工作原理。
  2. 规划。使用规划智能体 (Plan agent) 创建结构化的实施方案。在执行前进行审查和完善。
  3. 实施。切换到智能体模式并根据计划进行实施。包含测试或预期输出,以便智能体可以验证其自身的工作。对于较长的任务,请交接给后台智能体云端智能体
  4. 审查。使用检查点 (checkpoints) 来查看进度、在智能体偏离轨道时回滚,或在生成的拉取请求上请求 Copilot 代码审查

更多信息,请参阅上下文工程工作流

审查并验证 AI 输出

AI 生成的代码可能包含 Bug、安全问题或细微的逻辑错误。请始终将 AI 输出视为需要审查的起点。

  • 接受前先行审查。在接受更改之前通读生成的代码。注意 AI 可能做出的边缘情况、错误处理和假设。

  • AI 更改后运行测试。在您的提示词中包含测试用例,以便 AI 可以验证其自身的工作。如果 AI 没有自动运行测试,请在继续之前自行运行。

  • 使用检查点回滚。如果智能体偏离轨道,请使用检查点回滚到已知的良好状态,而不是试图修复连带错误。

  • 检查安全问题。审查 AI 生成的代码是否存在常见漏洞,如注入缺陷、硬编码密钥或缺失输入验证。避免将凭据或敏感数据粘贴到提示词中。

更多信息,请参阅GitHub Copilot 安全性GitHub Copilot 信任中心

管理上下文和会话

当对话充斥着不相关的上下文时,AI 的响应可能会下降。请主动管理您的会话。

  • 为不相关的任务开启新会话。不要将无关的问题堆积在同一个对话中。上下文污染会降低响应质量。

  • 移除不相关的历史记录。删除不再相关的过去问题和响应,或者开启一个新会话。

  • 压缩上下文。使用 /compact 并提供指令,有选择地压缩上下文并仅保留最相关的信息。

  • 使用子智能体进行研究。通过使用子智能体,暗示 AI 在隔离状态下进行研究和探索,这样研究结果就不会干扰您的主要上下文。

  • 选择正确的会话类型。使用本地会话处理当前代码中需要立即关注的快速任务;使用后台任务处理可以在本地运行且与主上下文隔离的任务;使用云端会话以利于团队协作。

  • 通过并行会话进行扩展。为独立任务运行多个并行会话,以节省时间并保持上下文分离。您可以同时运行多个会话(横跨本地、后台和云端),并通过 VS Code 中的会话列表进行切换。

更多信息,请参阅会话管理工作区索引

处理大型代码库

Copilot 旨在高效处理大型、复杂且包含多个根文件夹的工作区。使用以下实践在大规模场景下获得最佳结果。

  • 使用工作区索引。VS Code 使用语义搜索、语言智能和 GitHub 的代码搜索来自动为您的项目建立索引,从而实现深度的跨文件推理。这适用于小型项目和大型企业代码库。对于大型仓库,请使用远程索引,以便在整个仓库以及 GitHub 上的相关仓库中获取快速、全面的结果。

  • 使用多根工作区 (multi-root workspaces) 限定工作范围。对于 Monorepo(单体仓库)或包含多个服务的项目,请使用多根工作区为 AI 提供明确的边界和专注的上下文。

  • 提供项目级指令。使用自定义指令来描述项目的架构、模块边界和 AI 无法仅从代码中推断出的规范。这为 AI 提供了进行架构级变更所需的上下文。

  • 为独立的变更运行并行会话。将大型任务分解为独立的子任务,并在并行会话中运行它们,每个会话专注于代码库的不同部分。

  • 为跨领域的变更使用规划智能体。对于跨越许多文件或模块的变更,请先使用规划智能体,在执行前创建结构化的实施方案。

更多信息,请参阅工作区上下文智能体

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