关于 code-oss-logs
用于查找和检查近期 Code OSS 或 Agents app 开发运行日志的流程指南。它按子系统说明日志文件用途,并介绍 MCP 服务和云沙盒故障的排查方法。
主要功能
- 01定位最近一次运行日志
- 02按应用子系统对应日志文件
- 03搜索和检查日志条目
- 04追踪云沙盒启动故障
- 05临时转发控制台输出
适用场景
- 01调查应用启动或崩溃问题
- 02诊断 MCP 服务问题
- 03追踪云沙盒连接故障
- 04检查 Agent 或终端行为
MCP 相关
帮助开发者定位并检查 MCP 网关和服务日志,包括 `mcpGateway.log` 与 `mcpServer.*.log`。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ microsoft/ vscode --skill code-oss-logs安装后在 Claude Code 中输入/code-oss-logs确认已加载。
详细介绍
Code OSS 日志
查找并显示最近一次 Code OSS 或 Agents 应用开发运行的日志。
日志根目录
| 应用 | 默认用户数据目录 | 日志路径 |
|---|---|---|
| Code OSS | $HOME/.vscode-oss-dev | $HOME/.vscode-oss-dev/logs/ |
| Agents app | $HOME/.vscode-oss-dev | $HOME/.vscode-oss-dev/logs/ |
如果启动 Code OSS 时使用了 --user-data-dir=<dir>,请改用 <dir>/logs/,而非上述默认路径。启动和调试辅助工具通常会在 .build/ 下创建临时用户数据目录;如果已知启动命令中的确切用户数据目录,请始终优先使用该目录。
每次运行都会创建一个带时间戳的文件夹,例如 20260330T163430。按修改时间排序后最新的文件夹通常就是用户关心的文件夹。
操作步骤
- 确定用户询问的是哪个应用:Code OSS 还是 Agents app。如果不明确,请检查两者。
- 找到最新的日志文件夹:
ls -lt "$HOME/.vscode-oss-dev/logs" | head -5 # 或用于自定义用户数据目录: ls -lt "<user-data-dir>/logs" | head -5 - 进入最新的文件夹并列出内容。
- 根据用户调查的问题读取相关日志文件。使用
tail查看最近的条目,或使用rg进行筛选。
目录结构
每个带时间戳的日志文件夹都包含以下结构:
<timestamp>/
├── main.log # Electron main process (app lifecycle, window management)
├── agenthost.log # Agent host process (Copilot agent, model listing, agent sessions)
├── mcpGateway.log # MCP gateway/server coordination
├── sharedprocess.log # Shared process (extensions gallery, global services)
├── telemetry.log # Telemetry events
├── terminal.log # Terminal/pty activity
├── ptyhost.log # Pty host process
├── network-shared.log # Shared network activity
├── editSessions.log # Edit sessions / cloud changes
├── userDataSync.log # Settings sync
├── remoteTunnelService.log # Remote tunnel service
│
└── window1/ # Per-window logs (window1, window2, etc.)
├── renderer.log # Renderer process (workbench UI, services, startup)
├── network.log # Per-window network activity
├── views.log # View/panel activity
├── notebook.rendering.log # Notebook rendering
├── customizationsDebug.log # Agent customizations debug info (Agents app)
├── mcpServer.*.log # Per-MCP-server logs (one file per configured server)
│
├── exthost/ # Extension host logs
│ ├── exthost.log # Extension host main log (activation, errors)
│ ├── extHostTelemetry.log
│ ├── <publisher.extension>/ # Per-extension log folders
│ │ └── <extension>.log
│ └── output_logging_<timestamp>/ # Extension output channels
│
└── output_<timestamp>/ # Output channel logs (workbench side)
├── tasks.log # Tasks output
├── agentSessionsOutput.log # Agent sessions output (Agents app)
└── agenthost.<clientId>.log # Agent host IPC traffic when tracing is enabled
多个 output_ 文件夹
每次在同一会话中重新加载窗口时,都会创建一个新的 output_<timestamp>/ 文件夹,并在 exthost/ 中创建对应的 output_logging_<timestamp>/ 文件夹。会话级别的带时间戳文件夹(例如 20260330T163430/)保持不变,但每次重新加载都会生成新的输出通道目录。时间戳最新的 output_* 文件夹包含当前或最近一次重新加载的日志。较早的文件夹包含该会话之前重新加载时的日志。
Cloud Sandbox 启动失败
从 renderer.log 开始查看。[CloudSandboxApi] 连接/重连 HTTP 失败记录状态、耗时,以及可用时的环境、会话和客户端 ID,并记录经过验证的 requestId(来自 X-GitHub-Request-Id)。使用该请求 ID 关联确切的上游 HTTP 请求;环境 ID 和会话 ID 也会贯穿重试和异步任务。缺少请求 ID 可能是因为响应头不存在,或浏览器无法访问该响应头。
通过 [WebPubSubRelayTransport] 和 [RemoteAgentHostProtocol] 跟踪返回的 clientId。中继就绪、首个发布确认、首个主机帧,以及 AHP 初始化请求/完成情况,可用于区分中继设置问题与主机响应问题。中继发布确认并不能证明主机已执行。中继关闭摘要会包含未完成的确认、主机帧/消息计数、主机静默情况,以及协议/重组错误计数;不会记录凭据或负载。这些记录属于普通日志服务输出,无需记录 AHP 负载。
按使用场景查找关键文件
| 调查内容…… | 检查这些文件 |
|---|---|
| 应用启动 / 崩溃 | main.log、window1/renderer.log |
| 扩展问题 | window1/exthost/exthost.log、window1/exthost/<publisher.ext>/ |
| Copilot / Agent 问题 | agenthost.log、window1/exthost/GitHub.copilot-chat/ |
| Agent 主机 IPC(Agents app) | window1/output_<timestamp>/agenthost.*.log |
| MCP 服务问题 | mcpGateway.log、window1/mcpServer.*.log |
| 终端问题 | terminal.log、ptyhost.log |
| 网络 / 身份验证问题 | network-shared.log、window1/network.log |
| 设置同步 | userDataSync.log |
| Agent 自定义项 | window1/customizationsDebug.log(Agents app) |
实用命令
# Recent entries from a log file
tail -50 "<timestamp>/window1/renderer.log"
# Search all logs in a run for a probe marker or error
rg -n "MY_PROBE|error" "<timestamp>"
# Show non-empty logs in a run
find "<timestamp>" -type f -size +0 -print
临时控制台转发工作流
使用临时 console.log 探针,且需要将这些探针写入常规日志文件时,请在启动 Code OSS 前在本地启用开发控制台转发。
- 在
src/vs/platform/log/common/log.ts中找到isDevConsoleLogForwardingEnabled。 - 临时启用注释掉的
Boolean("true")行:export const isDevConsoleLogForwardingEnabled = false || Boolean("true") // done "weirdly" so that a lint warning prevents you from pushing this ; - 构建项目,或等待监视任务检测到更改。
- 启动 Code OSS 或 Agents 应用,并复现问题。
- 查看相关日志。
- 完成前,将标志恢复为默认关闭状态,并移除所有临时
console.log探针。
Boolean("true") 这种写法会故意触发 lint 警告,以便在误启用标志时能在提交前发现。请勿在启用此标志的情况下提交代码。
提示
- 对于源代码构建中的临时开发探针,使用
console.log或ILogService均可。选择你正在修改的代码中最方便的方式即可。 - 绝不可提交
console.log探针。如果日志代码需要保留在产品中,请改用ILogService。 - 如果在源代码构建中启用了开发控制台转发,
console.debug、console.error、console.info、console.log和console.warn会通过进程日志服务写入常规日志文件。 - 控制台探针会写入输出它们的进程对应的日志:主进程写入
main.log,渲染器/工作台写入window1/renderer.log,共享进程写入sharedprocess.log,pty 主机写入ptyhost.log,Agent 主机写入agenthost.log。从渲染器端观察扩展主机的控制台输出;启用转发所有扩展主机控制台输出后,输出会出现在window1/renderer.log中。 - 如果未启用控制台转发,需要使用
ILogService记录必须保留在日志文件中的探针;原生console.log可能只会出现在 DevTools 或 stdout 中。 - 并非所有日志文件都有内容。许多日志文件会创建为空文件,只有在相应子系统产生输出时才会写入内容。
window1/是第一个窗口;多窗口会话还会有window2/等目录。- 日志行的格式为:
YYYY-MM-DD HH:MM:SS.mmm [level] message。