关于 agent-host-logs
agent-host-logs 指导开发者检查通过 `Developer: Export Agent Host Debug Logs...` 导出的日志包,追踪 Agent Host、Copilot SDK、客户端和传输行为,并注意日志中的敏感内容。
主要功能
- 01说明导出包中的文件内容
- 02解释日志文件对应的行为
- 03关联不同进程中的事件
- 04指导按症状检索日志
- 05提示敏感数据的处理方式
适用场景
- 01调查 Agent Host 故障
- 02追踪工具或会话事件
- 03查看令牌用量记录
- 04诊断客户端与服务端的事件顺序
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ microsoft/ vscode --skill agent-host-logs安装后在 Claude Code 中输入/agent-host-logs确认已加载。
附带文件scripts/extract.py
详细介绍
Agent Host 调试日志
使用此技能了解由 Developer: Export Agent Host Debug Logs... 生成的日志包。这些日志与常规的带时间戳 Code OSS 日志目录不同。
请将日志包视为敏感信息:其中可能包含令牌、提示词、文件内容、终端输出、路径和设置。请在本地进行分析,避免引用机密信息或无关的用户内容。时间戳、事件名称、ID、状态值和一般属性值可以使用。
打开日志包
导出名称通常以 ah-logs 开头,可能是 zip 文件,也可能是已解压的文件夹。对于 zip 文件,请使用随附的解压工具:
python3 .github/skills/agent-host-logs/scripts/extract.py "<archive>.zip"
最后一行会给出临时解压路径。请在该文件夹中进行操作,并在完成后仅删除该确切文件夹。
桌面 ZIP 导出会将由主机管理的日志压缩在 host-logs.zip 中,与由客户端管理的日志和附属文件放在一起。如果存在该条目,请对 <extracted-folder>/host-logs.zip 使用相同的解压工具,并检查这两个解压文件夹。主机存档包含 events.jsonl、提供程序日志、Agent Host 进程日志和 Mission Control 传输日志。文件夹导出会将这些文件直接放在导出文件夹中。
收集和保存日志期间,仍可取消导出。最终目标位置切换期间,取消操作会被禁用,直到切换完成或恢复之前的导出。如果恢复失败,错误信息会指出保存之前导出的备份位置。主机日志收集或复制不完整时,会在已保存的客户端日志旁显示警告。
文件会尽力收集,因此有效的日志包可能只包含以下部分文件:
events.jsonl
usage.jsonl
customizations.json
agenthost.log
agenthost.1.log
agenthost-server.log
vscode-logs/Window/renderer.log
vscode-logs/Window/renderer.1.log
vscode-logs/Shared/sharedprocess.log
ahp/*.jsonl
ahp/mission-control/*.jsonl
copilot-logs/*.log
remote-agenthost.log
文件含义
基本流程如下:
Window/client <-> AHP <-> Agent Host process <-> Copilot SDK
| 路径 | 内容说明 |
|---|---|
host-logs.zip | 桌面导出中由主机管理的部分的压缩包。请单独解压,以访问下文所述的主机文件。 |
events.jsonl | 所选会话的持久化 Copilot SDK 事件:轮次、消息、工具、权限、钩子、技能和子 Agent。其涵盖的时间段可能远长于其他日志。 |
usage.jsonl | 客户端捕获的 token/额度用量,每次模型调用一条记录(turnId、模型、输入/输出/缓存 token、累计 totalNanoAiu)。SDK 的 assistant.usage 事件是临时的,不会写入 events.jsonl,因此这是唯一的逐次调用用量记录。仅当启用了 Agent Host 调试日志时才会提供。 |
customizations.json | 会话加载的技能/钩子/Agent/MCP 服务快照。SDK 的 session.*_loaded 事件是临时的,因此这是唯一能记录实际启用内容的文件。仅当启用了 Agent Host 调试日志时才会提供。 |
ahp/*.jsonl | 客户端连接的 AHP 流量。_ahpLog.dir 为 c2s 或 s2c;_ahpLog.ts 是传输时间戳。可用它查看请求、响应、订阅、操作、通知和客户端可见的顺序。 |
ahp/mission-control/*.jsonl | 传入 Mission Control 客户端的主机端流量,包括选择会话前的身份验证失败。_ahpLog.transport 为 mission-control;connectionId 由客户端 ID 和连接代数组成。即使是针对特定会话的导出,主机导出也会在剩余的 1,000 条 artifact 预算内,包含最近修改的最多十个文件(包括轮换文件)。这些日志可能包含其他共享会话的流量。 |
agenthost*.log | 本地或服务端 Agent Host 进程行为:启动、身份验证、会话、提供方事件、工具、Git/worktree 和主机端错误。带编号的文件是较旧的轮换文件。 |
copilot-logs/*.log | 提及所选会话 ID 的 Copilot SDK 进程日志。一个进程日志中也可能包含其他会话。 |
vscode-logs/Window/* | Window 日志组中的当前文件和轮换文件,包括渲染器/客户端行为、网络活动、视图及其他由窗口管理的日志。 |
vscode-logs/Shared/* | Shared 日志组中的当前文件和轮换文件。通常是次要证据,而且往往包含大量无关信息。 |
Agent Host (<name>).log | 来自指定远程 Agent Host 的转发日志。 |
remote-agenthost.log | 可用时直接下载的远程 agenthost.log。 |
如何开始
- 列出文件并记下各自的大小。
- 确认所报告的问题、大致时间、本地或远程主机,以及已知的会话、聊天、轮次、请求或工具 ID。
- 从最接近问题的文件开始:
- 轮次或提供方行为:
events.jsonl - token/额度用量或费用问题:
usage.jsonl - 客户端/服务端状态或顺序:
ahp/*.jsonl - 主机实现故障:
agenthost*.log - SDK 行为:
copilot-logs/*.log - UI 行为:
vscode-logs/Window/renderer.log及其轮换文件
- 轮次或提供方行为:
- 按已知时间或 ID 搜索,然后沿着相邻层追踪同一操作。
实用的关联字段包括原始会话 ID、会话/聊天 URI、turnId、interactionId、工具/请求 ID、JSON-RPC 请求 id、AHP serverSeq,以及事件 id/parentId。
Copilot 会话刷新失败
在默认的 Info 日志级别下,agenthost*.log 会记录刷新操作、配置和 SDK 会话 ID、聊天、轮次,以及第一个匹配的 reason。只报告第一个匹配的触发条件,以保留重启检查的短路顺序。结构性原因会区分客户端工具、客户端插件和根 MCP 配置,且不会记录其内容。
请通过 attemptId 跟踪 Preparing SDK session 以及配对的 SDK resumeSession started / settled 记录。请通过 instanceId 跟踪每个附加的 SDK 会话的关闭和断开记录;该 ID 可区分同一 SDK 会话的不同封装实例。disconnect wait completed 记录中若 disconnectRpc=pending 且 shutdownReceived=true,表示关闭通知在断开 RPC 完成前解除了调用方的等待。后续 RPC 的完成或失败(包括发生在 disposed=true 之后的情况)会单独记录。仅凭通知或主机端等待本身,都无法证明原生清理已完成;在判断是否发生了拆除与恢复之间的竞争前,请将这些记录与 SDK 进程日志相互关联。
重要提示
events.jsonl、Copilot SDK 日志和 AHP 时间戳通常使用 UTC。普通.log文件可能使用本地机器时间;远程日志也可能使用其他时区。- AHP 日志的范围是单个连接,且可能包含多个会话。Copilot SDK 进程日志也可能包含多个会话。
- Mission Control 通道流量会独立记录,不受桌面客户端的
chat.agentHost.ahpJsonlLoggingEnabled设置影响。身份验证请求令牌会经过脱敏处理,但其他会话内容仍属敏感信息。 - Mission Control 历史记录会在不同连接代次间保留,每个主机日志目录最多保留 10 个文件和 750 MiB。目录导出会保留客户端本地的备用候选项,直到主机副本成功生成;如果主机端构件不可用,Mission Control 日志会显示在
ahp/下。 - AHP 文件会按
.jsonl、.1.jsonl、.2.jsonl等形式轮转。使用_ahpLog.ts重建顺序。 subscribe结果可能包含完整快照;订阅时其内容不一定发生了变化。_ahpLog.truncated: true表示该日志记录中省略了较大的值。- 仅凭警告或错误严重级别无法证明因果关系。请查找对应的失败响应、缺失的完成记录或用户可见的后果。
- 文件缺失很常见,因为导出收集采用尽力而为的方式。