mcpField
A
agent-host-logs

agent-host-logs

github.com/microsoft开发194.4k60 次安装今天更新
代码仓库

关于 agent-host-logs

agent-host-logs 指导开发者检查通过 `Developer: Export Agent Host Debug Logs...` 导出的日志包,追踪 Agent Host、Copilot SDK、客户端和传输行为,并注意日志中的敏感内容。

主要功能

  1. 01说明导出包中的文件内容
  2. 02解释日志文件对应的行为
  3. 03关联不同进程中的事件
  4. 04指导按症状检索日志
  5. 05提示敏感数据的处理方式

适用场景

  1. 01调查 Agent Host 故障
  2. 02追踪工具或会话事件
  3. 03查看令牌用量记录
  4. 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。

如何开始

  1. 列出文件并记下各自的大小。
  2. 确认所报告的问题、大致时间、本地或远程主机,以及已知的会话、聊天、轮次、请求或工具 ID。
  3. 从最接近问题的文件开始:
    • 轮次或提供方行为:events.jsonl
    • token/额度用量或费用问题:usage.jsonl
    • 客户端/服务端状态或顺序:ahp/*.jsonl
    • 主机实现故障:agenthost*.log
    • SDK 行为:copilot-logs/*.log
    • UI 行为:vscode-logs/Window/renderer.log 及其轮换文件
  4. 按已知时间或 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 表示该日志记录中省略了较大的值。
  • 仅凭警告或错误严重级别无法证明因果关系。请查找对应的失败响应、缺失的完成记录或用户可见的后果。
  • 文件缺失很常见,因为导出收集采用尽力而为的方式。

评论

支持 Markdown