使用 AI 的最佳实践

本文介绍了在 Visual Studio Code 中充分利用 AI 的经过验证的最佳实践。每个部分都提供了可操作的指导,并附有指向更深入文档的链接。

针对 AI 优化你的项目

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

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

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

有效项目配置的提示

  • 保持说明文件简明扼要。它们会在每次聊天交互时加载。重点关注 AI 无法从代码中推断的信息,例如非默认规范、架构决策或环境设置。
  • 使用 applyTo 模式限定说明范围。输入 /instructions 来创建特定语言或特定文件夹的说明文件,而不是将所有内容放在一个文件中。
  • 限制启用的工具。活动工具越少,响应速度越快、相关性越高。仅在任务需要时启用工具。
  • 从搜索中排除生成的文件和干扰文件。配置 search.exclude 在 VS Code 中打开 在 VS Code Insiders 中打开 files.exclude 在 VS Code 中打开 在 VS Code Insiders 中打开 以便智能体文本搜索和 grep 专注于源代码。参见 通过排除设置改进智能体搜索

有关完整的设置详细信息,请参阅 在 VS Code 中自定义智能体行为

选择适合该任务的正确工具

VS Code 中的 AI 提供了几种交互模式。为当前任务选择正确的模式可以节省时间并产生更好的结果。

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

选择正确的智能体类型

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

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

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

  • 使用云端智能体进行团队协作。云端智能体在远程运行并创建拉取请求,这使得它们非常适合需要团队审查的任务,或者当你想要将 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 提供任何方向。相反,应明确“更好”的含义:“降低时间复杂度”或“为空值添加输入验证”。

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

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

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

  • 并行任务。如果你有多个独立的任务,请让 AI 并行运行它们以节省时间。例如,“并行对 X 和 Y 进行独立研究并总结发现。”

有关详细信息,请在 GitHub Copilot 文档中查找实用的提示词示例

提供正确的上下文

当 AI 拥有相关的上下文时,它的响应会更准确。使用这些技巧来引导 AI 获取正确的信息

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

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

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

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

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

有关详细信息,请参阅向聊天提示词添加上下文配置工具

选择正确的模型

每个 AI model 都有不同的优势。有些擅长推理,有些则擅长代码生成或更快的响应。为你的任务选择正确的模型可以改善结果。

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

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

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

  • 实验和比较。如果你对某个响应不满意,请尝试不同的模型。对于相同的提示词,不同的模型可能会产生显着不同的结果。

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

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

  • 考虑额度消耗。能力更强的模型每个 token 消耗更多 AI 额度。自动模型选择会自动平衡质量和成本。有关更多提示,请参阅优化 AI 额度使用

有关详细信息,请参阅选择 AI 模型Copilot Chat 的可用模型

先规划,后实现

对于跨多个文件的复杂更改,请将规划与实现分开。这种方法可以防止 AI 解决错误的问题,并避免将 AI 额度浪费在需要丢弃的代码上。

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

有关详细信息,请参阅上下文工程工作流

审查并验证 AI 输出

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

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

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

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

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

有关详细信息,请参阅GitHub Copilot 安全性GitHub Copilot 信任中心

管理上下文和会话

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

  • 为不相关的任务启动新会话。不要继续将不相关的问题堆积到一个对话中。上下文污染会降低响应质量,并在不相关的历史记录上浪费 token。

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

  • 压缩上下文。使用 /compact 并提供说明以有选择地压缩上下文,仅保留最相关的信息。压缩减少了随后的每个请求发送的 token,这有助于管理 AI 额度使用

  • 验证缓存性能。在各个轮次中保持提示词的早期部分稳定,以重复使用提示词缓存并降低成本和延迟。使用缓存资源管理器检查缓存命中率并找出缓存中断的位置。

  • 使用子智能体进行调查。通过使用子智能体暗示 AI 孤立地执行研究和探索,这样调查结果就不会使你的主上下文混乱。

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

  • 通过并行会话进行扩展。针对独立任务并行运行多个会话,以节省时间并保持上下文分开。你可以跨本地、后台和云环境同时运行多个会话,并通过 VS Code 中的会话列表在它们之间切换。

  • 分叉而不是重新提示。使用 /fork 在不丢失上下文的情况下探索替代方案,而不是重新开始并从头建立上下文。

有关详细信息,请参阅会话管理工作区索引优化 AI 额度使用

优化 AI 额度使用

本文中的许多实践也有助于你控制成本。更强大的模型、大型上下文和一次性工作都会消耗 AI 额度。少数几个杠杆具有最大的影响

  • 将模型与任务相匹配。将更快、更便宜的模型用于简单的任务,并将高级模型保留用于规划、调试和架构决策。自动模型选择会为你平衡质量和成本。

  • 保持上下文精简。仅发送相关的上下文,压缩长对话,并为不相关的任务启动新会话,以避免在每个请求上为不相关的历史记录付费。

  • 在实现之前进行规划。将规划与实现分开可避免将额度浪费在你丢弃的代码上。

有关完整的技术集,请参阅优化 AI 额度使用

处理大型代码库

Copilot 旨在高效处理大型、复杂且多根的工作区。使用这些实践在大规模时获得最佳结果。

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

  • 使用多根工作区限定工作范围。对于单体仓库或包含多个服务的项目,请使用多根工作区为 AI 提供清晰的边界和集中的上下文。

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

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

  • 使用 Plan 智能体进行横切更改。对于跨越许多文件或模块的更改,请在执行前从 Plan 智能体开始创建结构化的实现计划。

有关详细信息,请参阅工作区上下文智能体

English 한국어 中文(简体) 中文(繁體)
© . This website operates independently and is not affiliated with or endorsed by Microsoft. All brand names, logos, and trademarks are the property of their respective owners.