跳转到内容

最佳实践

本文涵盖在 Visual Studio Code 中使用 AI 的经过验证的最佳实践。每个部分提供可操作的指导,并附有相关深度文档链接。

通过为 AI 配置项目和代码库,可以提高 AI 响应的准确性,并确保 AI 遵循团队的编码规范和实践。

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

机制最适用于入门方式
自定义说明(Custom Instructions)项目范围编码标准和架构上下文输入 /init 为项目生成始终启用的说明
自定义智能体(Custom Agent)特定工作流或角色(TDD、安全审计)输入 /create-agent <描述> 生成自定义智能体(Custom Agent)
技能领域特定能力(测试、部署)输入 /create-skill <描述> 生成技能
工具和 MCP 服务器连接外部系统(数据库、API、CLI)mcp.json 中配置

💡 国内用户提示 如果您希望使用国内 AI 模型,安装 飞码扣插件 即可在 GitHub Copilot Chat 中使用通义千问(Qwen3)、DeepSeek、GLM 等模型,按次计费。了解更多 → 打开飞码扣

有效项目配置的技巧:

  • 保持说明文件简洁。 每次聊天交互都会加载它们。专注于 AI 无法从代码推断的信息,例如非默认约定、架构决策或环境设置。
  • 使用 applyTo 模式限定说明范围。 输入 /instructions 创建语言特定或文件夹特定的说明文件,而不是把所有内容放在一个文件中。
  • 限制启用的工具数量。 活跃工具越少,响应越快且越相关。只在任务需要时才启用工具。

完整设置详情,请参阅自定义概览

VS Code 中的 AI 提供多种交互模式。为手头的任务选择合适的工具可以节省时间并产生更好的结果。

工具最适用于示例
内联建议(Inline Suggestion)在编写代码时保持流畅代码补全(Code Completion)、变量名、样板代码
Ask(聊天)提问、头脑风暴、探索想法”这个项目中的认证是如何工作的?“
内联聊天(Inline Chat)不切换上下文的有针对性的原位编辑重构函数、添加错误处理
智能体(Agent)需要自主规划和工具使用的多文件变更端到端实现功能
Plan实施前的结构化规划设计架构或迁移策略
智能操作(Smart Action)内置的专业一步任务生成提交消息、修复错误、重命名符号

使用智能体(Agent)时,选择与任务和工作流匹配的智能体(Agent)类型。每种类型在交互性、速度和隔离性方面有不同的权衡。

  • 对交互式工作使用本地智能体(Local Agent)。 本地智能体(Local Agent)在编辑器中运行,可完全访问工作区、工具和扩展。当需要快速迭代、实时审查变更,或使用 VS Code 特定工具(如集成浏览器或 MCP 服务器)时,选择本地智能体(Local Agent)。
  • 将定义明确的任务卸载给后台智能体(Agent)。 当任务足够清晰,不需要观察每个步骤时,使用 Copilot CLI云端智能体(Cloud Agent)
  • 将云端智能体(Cloud Agent)用于团队协作。 云端智能体(Cloud Agent)远程运行并创建拉取请求(Pull Request),非常适合需要团队审查的任务,或者你想直接将 GitHub Issue 分配给智能体(Agent)时。
  • 为独立任务运行并行会话。 在本地、后台和云端环境中启动多个智能体(Agent)会话(Agent Session),同时处理不相关的任务。通过会话列表监控它们。
  • 在智能体(Agent)类型之间移交。 先用本地智能体(Local Agent)进行探索和规划,然后移交给后台或云端智能体(Cloud Agent)进行实施。对话历史会随之传递。

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

AI 响应的质量取决于提示词(Prompt)的清晰度和具体性。以下技术有助于获得更好的结果:

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

    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.
  • 避免模糊提示词(Prompt)。 像”让这个更好”这样的提示词(Prompt)没有方向。换成”减少时间复杂度”或”为 null 值添加输入验证”。

  • 用后续提示词(Prompt)迭代。 通过添加约束或更正来优化响应,而不是重写整个提示词(Prompt)。

  • 尽早纠偏。 如果 AI 走向错误方向,用后续消息引导它重定向,或停止并发送新提示词(Prompt)。

  • 告诉 AI 提出澄清性问题。 如果任务不明确,指示 AI 在继续之前向你提问。

  • 并行任务。 如果有多个独立任务,让 AI 并行运行。

当 AI 拥有相关上下文时,响应会更准确:

  • AI 会自动执行代码搜索来收集相关上下文。当提示词(Prompt)不明确时,用 #<文件>#<文件夹>#<符号> 引用特定文件、文件夹或符号。
  • 要从网页或 GitHub 仓库拉取信息,使用 #fetch 或 GitHub MCP 等 MCP 服务器的工具。
  • 引用 VS Code 环境上下文,如源代码管理变更、终端输出或测试失败。
  • 添加图片或截图让 AI 分析可视内容。
  • 使用集成浏览器预览应用并选择页面元素作为上下文。

每个 AI 模型有不同的优势:

  • 将模型与任务复杂度匹配。 对简单补全使用快速模型;对规划、调试或架构决策切换到推理优化模型。
  • 使用最新模型。 较新的模型通常具有改进的能力。
  • 在提示词(Prompt)文件和智能体(Agent)中固定模型。 确保为特定任务一致地使用正确模型。
  • 实验和比较。 对于相同提示词(Prompt),不同模型可能产生截然不同的结果。
  • 调整思考强度。 对复杂任务提高推理强度,对简单任务降低。
  • 使用 BYOK。 携带自己的 API 密钥获得更多模型选择。

对于跨多个文件的复杂变更,将规划与实施分开:

  1. 探索。 使用 Ask 模式读取相关代码,了解其工作方式。
  2. 规划。 使用 Plan 智能体(Agent)创建结构化实施计划,审查并完善。
  3. 实施。 切换到智能体(Agent)模式,按计划实施,包含测试或预期输出。对于较长的任务,移交给后台或云端智能体(Cloud Agent)。
  4. 审查。 使用检查点审查进度,或请求 Copilot 代码审查。

AI 生成的代码可能包含 Bug、安全问题或微妙的逻辑错误:

  • 接受前先审查。 注意边界情况、错误处理和 AI 可能做出的假设。
  • AI 变更后运行测试。 在提示词(Prompt)中包含测试用例,让 AI 可以验证自己的工作。
  • 使用检查点回滚。 如果智能体(Agent)偏离轨道,回滚到已知良好状态。
  • 检查安全问题。 审查常见漏洞,避免在提示词(Prompt)中粘贴凭据或敏感数据。
  • 对不相关的任务开始新会话。 上下文污染会降低响应质量。
  • 删除不相关的历史。 或开始全新的会话。
  • 压缩上下文。 使用 /compact 有选择地压缩上下文,只保留最相关的信息。
  • 使用子智能体(Agent)进行调查。 让 AI 使用子智能体(Agent)隔离地执行研究,不干扰主要上下文。
  • 通过并行会话扩展。 为独立任务并行运行多个会话,节省时间并保持上下文分离。
  • 使用工作区索引。 VS Code 使用语义搜索、语言智能和 GitHub 代码搜索自动索引项目。对于大型仓库,使用远程索引获得快速、全面的结果。
  • 使用多根工作区限定工作范围。 为 AI 提供清晰的边界和专注的上下文。
  • 提供项目级别的说明。 描述架构、模块边界和约定,给 AI 提供架构级别变更所需的上下文。