用途:本资料说明 VS Code 的 agent-host 聊天贡献(chat contributions)模型,用于构建和审查跨越 agent-host 聊天生命周期边界的自包含行为,如添加回合生命周期副作用、提示词或上下文注入。
主要能力与位置:需先阅读 src/vs/platform/agentHost/common/agentHostChatContributionsService.ts、node/agentHostChatContributionsService.ts、node/chatContributions/TODO.md 与 builtInChatContributions.ts。新功能应放入 contributions,而非 AgentSideEffects 或 AgentService;后者已通过提取十七个行为精简超 700 行,只保留路由、发送机制与会话生命周期等职责。
使用方式:每个贡献拥有独立目录 node/chatContributions/<feature>/,须有唯一静态 id、显式 order、首参为 IAgentHostChatContributionContext 的构造函数,并在 builtInChatContributions.ts 中单点注册。IAgentHostChatContribution 现有七个钩子:onIncomingRequest、onTurnEnd、onDidApplyClientAction、onDidDispatchAction、onOutgoingTurn、onHydrateTurns、onHydrateChat。order 决定执行顺序,越低越先。
限制:onIncomingRequest 同步且失败关闭,抛错即拒绝请求;其他观察钩子失败隔离。不要为单个调用方增设钩子,优先为现有类型添加判别字段。不要向上下文加入回调或服务,应通过可注入服务协作。memento 有生命周期,额外键段需显式 deleteMemento。新增服务需更新测试 ServiceCollection,无状态协作者可改用带 ServicesAccessor 的普通函数。
适用场景:准入控制、本地命令拦截、检查点与变更集、队列排空、GitHub 引用附加、标题处理、未读状态、草稿、工作树公告等横切功能。
测试:在 test/node/chatContributions.test.ts 添加调度、顺序、memento 回收与失败隔离测试;提取行为时保持 agentSideEffects.test.ts 不变。部分手建测试图未注册内置贡献,提取破坏此类套件时应补注册而非弱化断言。其余细节暂未提供。