代理
代理(Agent)是一种能够自主规划并执行编码任务的 AI 系统。你为代理设定一个高层目标,它会将目标拆解为多个步骤,通过工具执行这些步骤,并在遇到错误时进行自我修正。本文介绍了代理的核心架构:代理循环、代理类型、子代理、内存和规划。
代理循环
当你为代理分配任务时,它会遵循代理循环(Agentic loop)。这种模式在现代 AI 助手中非常普遍。在 VS Code 中,代理是负责规划和采取行动的系统,而语言模型则生成用于指导这些行动的响应。
在每一步,代理都会评估进展并选择下一个动作。它可能会打开一个文件来理解 API、进行编辑,然后运行命令以验证更改是否有效。每个动作的输出都会成为下一个决策的输入。

代理循环通常包含三个高层阶段
- 理解(Understand)。代理会读取文件、搜索代码库并查阅文档,以明确需要进行哪些更改。
- 执行(Act)。代理会修改代码、运行终端命令、安装依赖项,或通过工具调用外部服务。
- 验证(Validate)。代理会运行测试、检查编译器错误并审查自己的更改。如果发现问题,它会继续迭代。
代理利用语言模型来推导最佳行动方案。然而,如果没有与环境交互的能力,模型只能提供通用的回答。借助工具,代理在每一步发出工具调用来收集信息,并采取诸如读取文件、进行代码更改、运行终端命令和连接外部服务等行动。
代理会根据需要将这些动作串联起来,直到完成任务。回答有关代码库的问题可能只需读取几次文件;而实现一个新功能通常需要循环执行编辑、运行测试、诊断故障,然后再进行编辑,直到测试通过为止。
在后台,VS Code 将当前上下文组合成提示词(Prompt)并发送给语言模型。模型会以文本、代码编辑或工具请求作为响应。当工具运行时,其输出会被添加到下一次迭代的上下文中,这个周期会不断重复,直到任务完成。
在此过程中,你始终保持控制权。你可以发送新消息来重定向代理、添加上下文或建议不同的方法。有关审查更改和管理代理行为的更多信息,请参阅信任与安全。
自定义代理循环
代理循环并非千篇一律,可能会因项目而异。你可以通过以下不同选项来个性化代理的行为:
- 自定义代理允许你定义不同的人设,每个代理都有自己的指令、可用工具、语言模型,并可选择将任务移交给其他代理。
- 通过代理技能,你可以针对特定领域或任务教授代理新的能力。
- 钩子(Hooks)可以在代理循环的特定生命周期节点运行自定义命令。
了解更多关于自定义概念的信息。
代理类型
根据你需要结果的时效性以及你想要的监管程度,代理可以在不同的环境中运行。两个关键维度是:代理运行的位置(你的本地机器或云端)以及你与它的交互方式(交互式或在后台自主运行)。

了解更多关于在 VS Code 中使用代理的信息,包括可以帮助你为任务选择正确代理类型的决策表。
子智能体
在处理复杂任务时,主代理可以将子任务委托给子代理。子代理是一个独立的 AI 代理,负责执行专门的工作(如研究某个主题或分析代码),并将结果反馈给主代理。
子代理的主要优势在于上下文优化。如果没有子代理,研究过程中的每一次文件读取、搜索结果和中间步骤都会累积在主代理的上下文窗口中,可能会挤占重要信息。子代理在独立的上下文窗口中完成工作,并仅返回摘要,从而使主对话始终专注于当前任务。
子代理的关键特征
- 上下文隔离:每个子代理都在自己的上下文窗口中运行。它不继承主代理的对话历史或指令,仅接收任务提示。
- 同步执行:主代理会等待子代理的结果后再继续,因为子代理的发现通常会为下一步提供依据。
- 并行执行:VS Code 可以并行启动多个子代理,以同时执行诸如分析安全性、性能和可访问性等任务。
- 聚焦结果:仅将最终结果返回给主代理,从而保持主上下文的专注并减少 Token 使用量。
例如,内置的规划代理(Plan agent)使用子代理在创建实现计划之前进行研究和分析。每个子代理自主工作,仅返回其发现的结果。
了解更多关于使用子代理的信息。
内存
代理利用内存来跨对话保留上下文。代理不会在每次会话时从零开始,而是能够回想你的偏好、应用从过往任务中学到的经验,并随着时间推移积累关于你代码库的知识。
VS Code 支持两种互补的内存系统
- 内存工具:一种内置工具,用于将笔记存储在你的本地机器上,分为三个作用域:
- 用户内存(
/memories/):在所有工作区和对话中持久保存。前 200 行会自动加载到每个会话中。 - 仓库内存(
/memories/repo/):针对当前工作区,在对话间持久保存。 - 会话内存(
/memories/session/):针对当前对话,在对话结束时清除。
- 用户内存(
- Copilot 内存:一种由 GitHub 托管的内存系统,可捕获跨 Copilot 各个界面(编码代理、代码审查、CLI)的特定于存储库的见解,并在 VS Code 之外的 GitHub Copilot 中共享。
了解更多关于VS Code 代理中内存的信息。
规划
对于复杂任务,直接开始生成代码可能会导致实现不完整或架构决策错误。内置的规划代理会与你协作,在进行任何代码更改之前研究任务并创建详细的实现计划。这确保了需求得到充分理解,边缘情况得到识别,并且在代理开始编写代码之前,你们已就方案达成一致。
规划代理使用 4 阶段迭代工作流
- 发现(Discovery):使用只读工具和代码库分析来研究任务。
- 对齐(Alignment):提出澄清问题以解决歧义。
- 设计(Design):起草结构化的实现计划。
- 优化(Refinement):根据你的反馈迭代计划。
在计划被审查和批准之前,规划代理不会进行代码更改。一旦获得批准,你可以将计划移交给默认代理,或将其保存以进行进一步优化。
了解更多关于使用代理进行规划的信息。