agent-sessions-layout 是微软 VS Code 项目中关于 Agents 工作台(Agents workbench)布局的权威规范与实现指引。它的核心作用是约束在开发 Agents 布局相关功能时应遵循的结构、规则与流程,确保布局代码与规格文档保持同步。
用途 该规范用于指导 Agents 工作台布局的开发与修改。任何对布局代码的改动都应先阅读位于 src/vs/sessions/LAYOUT.md 的权威规格,理解现有结构后再进行修改。
主要能力与覆盖范围 规范定义了以下内容:
- 固定布局结构:包括网格树、部件位置与默认尺寸。
- 部件的包含与排除及其默认可见性。
- 标题栏配置与自定义菜单 ID。
- 编辑器模态覆盖层(editor modal overlay)的行为与尺寸。
- 部件可见性 API 与事件。
- Agent 会话部件的类与存储键。
- 工作台贡献(contributions)与生命周期。
- CSS 类与文件结构。
实现原则 在提议或实现改动时,需遵循以下规则:
- 保持固定位置,不新增基于设置的位置自定义。
- 面板必须跨越右侧区域宽度:网格结构使面板位于 Chat Bar 和 Auxiliary Bar 之下。
- 侧边栏跨满高度:侧边栏位于主内容分支,自上而下贯穿。
- 新部件应加入右侧水平分支,与 Chat Bar 和 Auxiliary Bar 并列。
- 不支持的功能(如 zen mode、居中布局等)应保持为 no-op,而不是抛出错误。
- 隐藏/显示部件时管理相关的窗格组合(pane composite)生命周期。
- 新部件功能应放在 agent session 部件类中(SidebarPart、AuxiliaryBarPart、PanelPart、ChatBarPart、ProjectBarPart),而非标准工作台部件。
- 使用独立存储键:agent session 部件使用自己的存储键(以 workbench.agentsession. 或 workbench.chatbar. 为前缀),避免与常规工作台状态冲突。
- 使用 agent session 菜单 ID:动作应使用 Menus.* 菜单 ID(来自 sessions/browser/menus.ts),而非共享的 MenuId.* 常量。
关键文件
- sessions/LAYOUT.md:权威布局规范。
- sessions/browser/workbench.ts:主布局实现(Workbench 类)。
- sessions/browser/menus.ts:Agents 菜单 ID(Menus 导出)。
- sessions/browser/layoutActions.ts:布局动作(切换侧边栏、面板、次级侧边栏)。
- sessions/browser/paneCompositePartService.ts:AgenticPaneCompositePartService。
- sessions/browser/media/style.css:布局专用样式。
- sessions/browser/parts/parts.ts:AgenticParts 枚举。
- sessions/browser/parts/titlebarPart.ts:标题栏部件、MainTitlebarPart、AuxiliaryTitlebarPart、TitleService。
- sessions/browser/parts/sidebarPart.ts:侧边栏部件(含页脚与 macOS 红绿灯占位)。
- sessions/browser/parts/chatBarPart.ts:Chat Bar 部件。
- sessions/browser/parts/auxiliaryBarPart.ts:Auxiliary Bar 部件(含运行脚本下拉)。
- sessions/browser/parts/panelPart.ts:Panel 部件。
- sessions/browser/parts/projectBarPart.ts:Project Bar 部件(文件夹条目、图标自定义)。
- sessions/contrib/configuration/browser/configuration.contribution.ts:将 workbench.editor.useModal 设为 'all',启用模态编辑器覆盖层。
- sessions/contrib/sessions/browser/sessionsTitleBarWidget.ts:标题栏部件与 agent picker。
- sessions/contrib/chat/browser/runScriptAction.ts:标题栏的运行脚本分体按钮。
- sessions/contrib/accountMenu/browser/account.contribution.ts:侧边栏页脚的账户部件。
- sessions/electron-browser/parts/titlebarPart.ts:桌面(Electron)标题栏部件。
使用方式与测试 修改布局代码后,需执行以下验证:
- 通过 VS Code - Build 任务确认构建无错误。
- 确保网格结构与规范中的可视化表示一致。
- 确认部件可见性切换(显示/隐藏/最大化)工作正常。
- 测试编辑器能否在 ModalEditorPart 覆盖层中打开并正确关闭。
- 确认侧边栏页脚渲染出账户部件。
规格同步要求 若修改了布局实现,必须更新 LAYOUT.md 以反映这些变更,使规范与代码始终一致,包括:新增/移除部件或改变位置、更改默认可见性或尺寸、新增动作/菜单/贡献、修改网格结构、更改标题栏配置、新增 CSS 类或文件结构调整。同时在 LAYOUT.md 底部的 Revision History 表中添加带日期的条目,描述变更内容。
适用场景 适用于 VS Code 中 Agents 工作台布局的开发、维护与审查场景,尤其是涉及网格结构、部件可见性、标题栏、模态编辑器覆盖层、菜单与存储键等改动的场景。
限制 以上内容基于所提供的规范说明。除已明确列出的结构、文件与规则外,其他功能、收费、价格、平台、效果或使用步骤暂未提供。实际实现细节应以仓库中对应文件与权威规范为准。