mcpField
S
sessions

sessions

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

关于 sessions

用于 VS Code `src/vs/sessions/**` 目录下实现、评审和设计工作的开发技能。它规定模块边界、引导查阅相关规范,并建议针对性验证。

主要功能

  1. 01维护 Sessions 分层边界
  2. 02保持共享代码与提供方无关
  3. 03使用 observable 建模会话状态
  4. 04按子系统查找规范
  5. 05执行针对性验证检查

适用场景

  1. 01实现 Sessions 功能
  2. 02评审提供方路由变更
  3. 03调整会话感知布局行为
  4. 04验证跨模块层级的导入

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/microsoft/vscode --skill sessions

安装后在 Claude Code 中输入/sessions确认已加载。

详细介绍

Agents 窗口开发

在 src/vs/sessions/** 下进行实现、审查或设计工作时使用此技能。

1. 遵循核心原则

  • 保持分层方向:vs/sessions 可以导入 vs/workbench 及更底层的层;vs/workbench 绝不能导入 vs/sessions。
  • 保持共享 Sessions 代码与提供方无关。非提供方贡献代码不得导入提供方实现。
  • 使用可观测对象对可变的会话和聊天状态建模。使用事件进行通知,不要将事件用作并行状态模型或控制流。
  • 在 browser/menus.ts 中注册 Sessions 菜单 ID,并使用 Menus.*。
  • 从适当的 sessions.*.main.ts 入口点导入贡献代码。
  • 除非某项能力确实为共享能力,否则优先采用由 Sessions 管理的适配方案,而不是修改共享 workbench。
  • 将稳定架构写入所属规范,并在测试中明确具体行为。不要将实现历程保留为开发指南。

2. 确定所属区域

从 src/vs/sessions/README.md 开始,然后只阅读与改动相关的规范:

区域规范
分层、文件夹归属、跨模块导入src/vs/sessions/LAYERS.md
会话/聊天模型、服务、提供方契约、核心数据流src/vs/sessions/SESSIONS.md
自动化的归属、路由、迁移、持久化和运行生命周期src/vs/sessions/AUTOMATIONS.md
Workbench 部件、网格、标题栏、编辑器呈现src/vs/sessions/LAYOUT.md
感知会话的布局状态与恢复src/vs/sessions/LAYOUT_CONTROLLER.md
单窗格行为和预期组合src/vs/sessions/SINGLE_PANE_SCENARIOS.md
Sessions 侧边栏列表、分组、筛选和持久化src/vs/sessions/SESSIONS_LIST.md
手机布局和移动组件src/vs/sessions/MOBILE.md
AI 自定义项src/vs/sessions/AI_CUSTOMIZATIONS.md
Copilot 自定义项src/vs/sessions/copilot-customizations-spec.md
Copilot Chat 提供方src/vs/sessions/contrib/providers/copilotChatSessions/COPILOT_CHAT_SESSIONS_PROVIDER.md
Agent Host 提供方src/vs/sessions/contrib/providers/agentHost/AGENT_HOST_SESSIONS_PROVIDER.md
远程 Agent Host 提供方src/vs/sessions/contrib/providers/remoteAgentHost/REMOTE_AGENT_HOST_SESSIONS_PROVIDER.md

默认情况下不要加载学习收件箱。先搜索其中的标题和适用范围,再阅读权威规范之后仅查阅匹配的条目。

3. 修改前先检查

  • 梳理当前实现及其现有测试。
  • 在新增内容之前,先搜索共享辅助工具、上下文键、菜单 ID、入口点导入和提供方抽象。
  • 确认哪个层负责该行为。将提供方特有的决策保留在提供方中,将视图/布局决策保留在由 Sessions 管理的浏览器代码中。
  • 对于 UI 工作,还应调用适用的无障碍、设计、CSS、布局或主题技能。
  • 对于 Agent、大模型、策略、权限、遥测或托管设置方面的改动,应在实现前调用适用的专业技能。

4. 实现契约

遵循核心原则和相关规范。优先采用能够保持这些边界的小幅改动:

  • ISessionsManagementService 负责模型编排和提供方路由。
  • ISessionsService 负责可见会话和活动会话行为。
  • 提供方通过 ISession 和 IChat 暴露与提供方无关的状态。
  • 会话状态应可观测;使用者应以响应式方式派生 UI 状态。
  • 通过适当的 sessions.*.main.ts 入口点加载贡献代码。
  • Sessions 菜单使用共享的 Menus 注册表。
  • 共享 workbench 改动应体现共享能力,而非 Sessions 特定策略。
规范修改门槛

修复 Bug 时,如果只是恢复现有契约,则不更新规范。在修改权威规范之前,明确以下三点:

  1. 有意变更的现有所有权、接口、生命周期、状态机、持久化或跨组件契约;
  2. 受该契约变更影响的实现部分;
  3. 为什么回归测试和简短代码注释无法完整体现这一变更。

如果缺少任何一项,就不要修改规范。将具体行为写入有针对性的测试,把不明显的实现约束放在所属代码旁,并在问题或拉取请求中保留调查记录。

只有在组件所有权、接口或生命周期契约、状态机、持久化或跨组件不变量发生变化时,才更新规范。不要因为样式、文案、操作位置、遥测字段、设置默认值、实现算法或单个 Bug 修复而更新规范。这些细节应写在代码和有针对性的测试中。

5. 按需验证

运行能够覆盖变更的最小现有检查:

  • 针对受影响行为的单元测试;
  • 导入或模块所有权发生变化时,运行 npm run valid-layers-check;
  • TypeScript 发生变化且有必要时,进行针对性类型检查或编译;
  • 对于跨进程或 UI 工作,进行相关集成、E2E 或视觉验证。

仅涉及文档的变更,应检查链接、路径和内容一致性,而不是执行完整构建。

6. 正确记录反馈

当用户明确纠正或否定某种方案时,除非用户使用字面触发词 learn!,否则调用 feedback-learning 技能。字面触发词 learn! 的请求应遵循 .github/instructions/learnings.instructions.md。持久有效的架构不变量应写入所属规范,具体行为应写入回归测试,尚未证实可复用的指导应暂时放入限定范围的学习收件箱。切勿把每条纠正都追加到此技能中。

7. 维护此技能

仅当某项原则稳定、适用于多个场景且对大多数 Agents Window 工作都有用,或路由/工作流本身发生变化时,才更新此技能。子系统契约应写入对应的专项规范,Bug 行为应写入测试。

核心原则部分最多保留十条。添加新原则前,先合并重叠内容、删除过时指导,并优先改写现有原则。切勿追加仅适用于特定事件的细节,也不要把此技能用作学习日志。

评论

支持 Markdown