Code OSS 启动与调试
为 VS Code 源码构建提供隔离启动、Playwright 自动化和多进程调试端口。
证据显示脚本使用独立临时 user-data-dir、extensions-dir、shared-data-dir,设置 umask 077,并明确说明会复制认证资料及保留 OS keychain 和 User/globalStorage;原始配置不会被修改,且数据流和排除项有披露。扣分原因是默认复制认证状态、依赖共享 OS keychain,启动会联网下载/编译,缺少启动前用户确认、敏感数据风险提示细化和自动回滚/清理机制。
SKILL.md 与 launch.sh 的参数、端口、JSON 输出、超时、错误日志和失败退出路径基本一致,并对缺失构建、CDP 不可用、错误目标和 Monaco 输入失败提供诊断建议。扣分原因是静态审查未执行,未见针对该 launcher 关键路径的专门测试,端口选择存在理论竞态,且外部工具和构建环境失败仍需用户排查。
目标用户、使用场景、输入参数、Playwright/dap-cli 集成、Agents 窗口差异和非适用平台均有说明;脚本明确仅支持 macOS/Linux,且文档提到中文粘贴。扣分原因是 Windows 不支持,认证、npm、Electron、Playwright 和 dap-cli 等依赖的网络可达性与中国大陆环境适配未说明,触发边界仍主要依赖用户自行判断。
文档包含前置条件、启动参数、数据复制规则、端口表、操作示例、并发模式、重启、清理和故障排查;仓库提供 MIT 许可证、Microsoft 归属、版本号及维护入口。扣分原因是该 skill 没有独立版本、变更记录、明确维护责任或更新路径,且部分依赖和外部工具安装说明不够集中。
技能明确产出可解析 JSON,提供隔离启动、动态调试端口、CDP 驱动、调试器附加和 Monaco 粘贴辅助,能够覆盖开发者调试和 UI 自动化核心任务。按静态校准最多 7 分;扣分原因是未执行验证,实际结果仍依赖完整构建、认证配置、系统工具和外部服务,且某些失败后需要手工恢复。
脚本、命令示例、错误信息和 JSON 字段使关键行为可审计,仓库还提供若干 CI 工作流和测试脚本作为一般性工程证据。扣分原因是提供的 CI 并未覆盖该 skill 的 launcher、认证复制、端口隔离或 Monaco helper 关键路径,文档中的“tested live”等声明在本次静态审查中无法独立复现,因此不超过静态上限。
- 启动器会复制已认证的 VS Code 配置并继续使用当前用户 OS keychain;仅在确认临时目录权限、认证数据风险和本地进程可见性后使用。
- 清理依赖手工 kill 和 rm -rf,异常退出时可能留下包含敏感状态的临时目录。
- 核心流程依赖 macOS/Linux、Node、rsync、curl、npm/Electron/Playwright 下载及可能的外部认证服务;大陆网络环境下可能不可达。
- 本次仅静态阅读,未验证实际启动、端口隔离、认证可用性或 Monaco 粘贴结果。
它能做什么 & 适用场景
这是 microsoft/vscode 仓库中 .agents/skills/launch/ 下的单个技能,用于启动从源码构建的 Code OSS。它会把已认证的 Code OSS 用户数据目录复制到临时目录,分配独立的用户数据、扩展目录、共享数据目录和调试端口。启动完成后,它输出包含 CDP、扩展宿主、主进程和 Agent Host 端口的 JSON,便于使用 @playwright/cli 和 dap-cli。该技能适合 VS Code 本身的 UI 流程、聊天流程、截图和断点调试,但要求在 macOS 或 Linux 上具备完整构建环境和已认证的源用户配置。
技能通过相对于 SKILL.md 的 scripts/launch.sh 启动 Code OSS。启动器读取源码仓库和源用户数据目录,将认证配置复制到临时目录;默认采用精简复制,排除工作区存储、历史记录、日志、缓存和其他可再生成数据,同时保留认证所需的 OS keychain 和部分 User/globalStorage 内容。它为每次启动创建独立的 user-data-dir、extensions-dir、shared-data-dir 和临时运行目录,选择空闲的 CDP、扩展宿主、主进程及 Agent Host 调试端口,并在渲染器 CDP 可用后输出 JSON。技能还提供使用 @playwright/cli 连接、列出或切换 Electron 页面、生成快照和截图、通过 Monaco 粘贴脚本输入聊天内容,以及把 dap-cli 连接到相应 Node 调试端口的操作说明。
- 正在修改 VS Code 源码的开发者,需要启动完整构建并通过 CDP 检查工作台 UI。
- 需要自动化聊天或 Agents 窗口流程、验证 UI 功能并保存截图的测试人员。
- 需要在渲染器、扩展宿主、Electron 主进程或 Agent Host 中设置断点的调试者。
- 需要在同一台机器上运行多个独立 Code OSS 实例并避免端口、配置和共享数据库冲突的工程团队。
优缺点一览
- 启动器会等待渲染器 CDP 响应后再输出 JSON,调用方通常不需要自行轮询。
- 每次启动都使用独立临时配置、扩展目录、共享数据目录和动态端口,适合并行实例。
- 同一会话支持 @playwright/cli UI 驱动与 dap-cli Node 调试。
- 默认精简复制配置,保留认证相关数据,同时排除工作区状态、缓存和日志等大型内容。
- 只明确支持 macOS 或 Linux;材料没有提供 Windows 支持证据。
- 必须先安装依赖、构建完整 VS Code 客户端和内置扩展,并准备已认证的 Code OSS 用户数据目录。
- 默认 extensions/ 为空,因此启动实例没有第三方扩展;复制源扩展需要显式使用 --clone-extensions。
- 技能依赖 shell、本地文件系统和多个命令行工具;dap-cli 不是启动器本身提供的组件。
- 原生操作系统文件对话框无法通过 @playwright/cli over CDP 驱动,启动配置会在临时配置中启用简单对话框。
- 材料没有附带独立测试套件或跨平台验证结果。
如何安装
该仓库将技能放在 .agents/skills/launch/,但提供的材料没有说明独立安装命令或发布包安装流程。使用前应在 VS Code 源码检出目录安装依赖(缺少时运行 npm install),并运行 npm run compile 或 npm run watch 构建完整客户端及 extensions/ 下的内置扩展;还需准备已认证的 Code OSS 用户数据目录。调试器工作另外需要将 dap-cli 放到 PATH;材料建议在缺少该技能时从 https://github.com/roblourens/dap-cli 安装。
如何使用
将 LAUNCH 指向该技能目录中的 scripts/launch.sh,例如 LAUNCH=<SKILL.md 所在目录>/scripts/launch.sh。然后运行 INFO=$("$LAUNCH" | tail -n1),并用 jq -r .cdpPort <<<"$INFO" 读取 CDP 端口;再使用 npx @playwright/cli -s=唯一会话名 attach --cdp=http://127.0.0.1:$CDP 连接。可用 "$LAUNCH" --agents 启动 Agents 窗口,使用 --source-user-data-dir <path> 指定认证源,使用 --repo <vscode-repo-root> 指定仓库,使用 --clone-extensions 复制源扩展,或使用 --full 跳过精简排除。要调试扩展宿主、主进程或 Agent Host,分别将 dap-cli 连接到 JSON 中的 extHostPort、mainPort 或 agentHostPort;工作台渲染器使用 cdpPort。每个并行实例和 Playwright 会话都应使用独立名称,结束后关闭 Playwright 会话、终止 Code OSS 进程并删除临时运行目录。