调试聊天交互

Visual Studio Code 提供了多种工具,帮助您了解在向 AI 发送提示词时发生了什么。使用这些工具可以检查代理如何发现提示词文件、调用工具、发出语言模型请求以及生成响应。

VS Code 提供了两种互补的调试工具

  • 代理调试日志面板 (预览版) 显示了聊天会话期间发生的所有事件的按时间顺序排列的日志,包括工具调用、大模型 (LLM) 请求、提示词文件发现以及错误信息。
  • 聊天调试视图 显示了每个大模型请求和响应的原始详细信息,包括完整的系统提示词、用户提示词、上下文和工具调用载荷。

代理调试日志面板

注意

代理调试日志面板目前处于预览阶段。

代理调试日志面板是了解发送提示词后所发生情况的主要工具。它显示了聊天会话期间代理交互的按时间顺序排列的日志,在调试 自定义代理 和编排子代理工作流时特别有用。

打开代理调试日志面板

  • 启用以下设置

    • github.copilot.chat.agentDebugLog.fileLogging.enabled 在 VS Code 中打开 在 VS Code Insiders 中打开
  • 点击聊天视图中的省略号 (...) 菜单,然后选择 显示代理调试日志 (Show Agent Debug Logs)。

  • 从命令面板运行 开发者: 打开代理调试日志 (Developer: Open Agent Debug Logs)。

您可以在代理调试面板的四个视图之间切换

  • 日志 (Logs):会话期间事件的按时间顺序列表,带有用于聚焦特定事件类型的筛选选项。

  • 代理流程图 (Agent Flow Chart):一个流程图,可视化了会话期间代理与子代理之间的交互。

  • 摘要 (Summary):有关会话的汇总统计信息,例如总工具调用次数、Token 使用量、错误计数和总持续时间。

  • 缓存浏览器 (Cache Explorer):连续模型请求的并排差异对比,有助于诊断提示词缓存未命中的情况。

注意

代理调试日志面板现在可以显示当前和历史会话。日志会本地持久化存储在磁盘上,允许您查看历史会话。

日志视图

日志视图显示了聊天会话期间发生的事件的按时间顺序列表。每个事件都包含时间戳、事件类型和摘要信息。您可以展开每个事件以查看更多详细信息,例如大模型请求的完整系统提示词或工具调用的输入和输出。

Screenshot of the list of events in Agent Logs.

您可以在平面列表和按子代理分组的树状视图之间切换。使用筛选选项来聚焦特定事件或事件类型。

当您打开代理调试面板时,日志视图是默认视图。您也可以通过选择 查看日志 (View Logs) 从 摘要视图 切换到日志视图。

摘要视图

摘要视图提供有关聊天会话的汇总统计信息,例如总工具调用次数、Token 使用量、错误计数和总持续时间。

Screenshot of the summary view in Agent Logs, showing aggregate statistics for the chat session.

在摘要视图中,您可以选择 查看日志代理流程图缓存浏览器 来切换到相应的视图。

打开摘要视图

  1. 点击聊天视图中的省略号 (...) 菜单并选择 显示代理调试日志,以打开代理调试面板。

  2. 点击面板顶部面包屑导航中的会话描述。

代理流程图视图

代理流程图视图可视化了事件序列以及代理之间的交互,使复杂编排逻辑更容易理解。

Screenshot of the flow chart in Agent Logs, showing the interactions between agents and sub-agents.

您可以平移和缩放流程图,并选择流程图中的任何节点以查看关于该事件的详细信息。

要打开流程图视图,请从 摘要视图 中选择 代理流程图

  1. 点击聊天视图中的省略号 (...) 菜单并选择 显示代理调试日志,以打开代理调试面板。

  2. 点击面板顶部面包屑导航中的会话描述。

  3. 从摘要视图中选择 代理流程图

缓存浏览器视图

缓存浏览器视图通过比较会话中连续的模型请求来帮助您诊断提示词缓存未命中的情况。提示词缓存允许语言模型提供商重用匹配之前请求的前缀,从而降低延迟和 Token 成本。当缓存命中率较低时,缓存浏览器可以精确指出提示词前缀在何处发生分歧。

Screenshot of the Cache Explorer view in Agent Logs, showing a side-by-side diff of two model requests.

该视图有两个面板

  • 会话中所有模型交互的列表,按用户请求分组。每次交互显示缓存命中百分比、持续时间、模型名称和时间戳。选择一次交互以将其与前一次进行比较。
  • 主要内容显示了当前请求和前一个请求之间的并排前缀差异。

主要内容区域包含以下信息

  • 缓存性能:缓存命中百分比以及重用的输入 Token 占总数的比例。
  • 提示词签名:请求中每个组件(系统指令、工具定义和消息)的视觉摘要,带有颜色编码的状态指示器。第一个分歧点标志着提示词缓存失效的位置。
  • 组件:用于系统指令、工具定义和单条消息的可展开部分,显示了两个请求之间的文本级差异。

打开缓存浏览器视图

  1. 点击聊天视图中的省略号 (...) 菜单并选择 显示代理调试日志,以打开代理调试面板。

  2. 点击顶部面包屑导航中的会话描述以进入摘要视图。

  3. 选择 缓存浏览器 以打开所选会话的缓存浏览器视图。

将调试事件附加到聊天

您可以将代理调试事件的快照附加到聊天对话中,并就当前会话向 AI 提问。这对于了解 Token 使用情况、加载了哪些自定义项、发生了哪些工具调用以及请求耗时等非常有用。

将调试事件附加到聊天

  1. 打开聊天会话的 代理日志视图

  2. 点击代理调试面板右上角的星形图标。这将打开聊天视图,并将调试事件快照作为上下文附加进去。

或者,您可以使用 /troubleshoot 斜杠命令直接就聊天会话提问,而无需先打开代理调试面板。例如,输入 /troubleshoot list all paths you tried to load customizations/troubleshoot how many tokens did you use in #session

注意

/troubleshoot 命令要求启用 github.copilot.chat.fileLogging.enabled 在 VS Code 中打开 在 VS Code Insiders 中打开 设置。

导出和导入会话

您可以将调试会话导出为 Open Telemetry JSON (OTLP 格式) 文件,以便与他人共享或离线分析。您还可以导入之前导出的文件,以在代理调试面板中查看它。

导出会话

  1. 打开代理调试日志面板,导航到要导出的会话。

  2. 点击面板右上角工具栏中的 导出 (下载) 图标。

  3. 选择保存 JSON 文件的位置。

如果没有选中会话,VS Code 会显示一个通知,提示没有可导出的活动调试会话。

导入会话

  1. 点击代理调试日志面板右上角工具栏中的 导入 (上传) 图标。

  2. 选择之前导出的 JSON 文件。

导入的会话将会在代理调试日志面板中打开,并显示其概述和指标,就像实时会话一样。

注意

导入大于 50 MB 的文件时会显示包含实际文件大小的警告对话框。如果遇到此警告,请考虑修剪文件或导出更短的会话。

聊天调试视图

聊天调试视图显示了每个 AI 请求和响应的原始详细信息。当您需要检查发送给语言模型以及从其接收到的确切系统提示词、用户提示词、上下文或工具响应载荷时,请使用此视图。

打开聊天调试视图

打开聊天调试视图

  • 点击聊天视图中的溢出菜单,然后选择 显示聊天调试视图 (Show Chat Debug View)。
  • 从命令面板运行 开发者: 显示聊天调试视图 (Developer: Show Chat Debug View) 命令。

Screenshot of the Chat Debug view, showing the details of a chat request and response.

阅读调试输出

聊天调试视图中的每次交互都包含可展开的部分

部分 显示内容 查看要点
系统提示词 定义 AI 行为、能力和约束的指令。 验证自定义指令或代理描述是否正确显示。
用户提示词 发送给模型的提示词的原始文本。 确认您的提示词已按预期发送,包括解析为实际内容的 #-提及项。
上下文 附加到请求的文件、符号和其他上下文项。 检查预期的文件和上下文是否出现。如果缺少文件,则它可能未被索引,或者上下文窗口已满。
响应 模型响应的完整文本,包括推理过程。 查看原始响应,以了解模型如何解读您的请求。
工具响应 请求期间调用的工具的输入和输出。 验证工具是否接收到正确的输入并返回了预期的输出。这对调试 MCP 服务器很有用。

您可以展开每个部分以查看完整详细信息。这在使用 代理 时特别有用,因为单个请求中可能会调用多个工具。

常见故障排除场景

AI 忽略了您的工作区文件

如果 AI 回复通用信息而不是引用您的代码库

  1. 打开代理日志并检查 发现 (Discovery) 事件,以验证工作区文件是否已索引。
  2. 打开聊天调试视图并检查 上下文 (Context) 部分,以验证工作区文件是否出现在上下文中。如果没有,请检查 工作区索引 是否已开启。
  3. 尝试添加显式的 #-提及项(例如 #file#codebase)以确保包含正确的文件。了解更多关于 管理上下文 的信息。

MCP 工具未被调用

如果 AI 未调用预期的工具

  1. 打开代理日志并检查 工具调用 (Tool calls) 筛选器,查看工具是被调用还是跳过了。
  2. 打开聊天调试视图并检查 系统提示词 部分,以验证该工具是否列在可用工具中。
  3. 如果缺少该工具,请验证 MCP 服务器是否正在运行且配置正确。
  4. 尝试在您的提示词中使用 #tool-name 显式提及该工具。

AI 响应不完整或被截断

如果响应看起来被截断了

  1. 检查代理日志中的 LLM 请求 事件以审查 Token 使用量。
  2. 完整的上下文窗口可能会导致模型截断其响应。开始一个新的 聊天会话 以重置上下文。

提示词文件未被应用

如果自定义指令或提示词文件似乎未生效

  1. 打开代理日志并检查 发现 (Discovery) 事件,查看文件是已加载、被跳过还是验证失败。
  2. 验证文件路径和 applyTo 模式匹配当前上下文。
  3. 查看 聊天自定义诊断 以获取错误详细信息。
© . This site is unofficial and not affiliated with Microsoft.