You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code扩展API中Assistant与User类型LanguageModelChatMessage的区别

VS Code LanguageModelChatMessage 中 Assistant 与 User 类型差异及特性

核心定位差异

  • User:对应对话中人类参与者的输入,是触发AI响应的指令、问题或内容,属于对话的主动发起/交互节点。
  • Assistant:对应AI助手生成的回复内容,用于响应User消息,记录AI的历史输出,是对话的被动响应节点。

各自可用特性

User 类型

  • 由扩展模拟用户输入或直接获取用户真实输入创建,是对话上下文的触发源
  • 内容支持纯文本、带格式文本,可嵌入代码片段(用`包裹)或特定功能指令
  • 在对话序列中,通常位于Assistant消息之前,引导AI生成针对性响应
  • 示例代码:
const userMessage: vscode.LanguageModelChatMessage = {
  role: vscode.LanguageModelChatMessageRole.User,
  content: "帮我解释这段VS Code扩展代码:const disposable = vscode.commands.registerCommand('ext.hello', () => { vscode.window.showInformationMessage('Hello!'); });"
};

Assistant 类型

  • 可由扩展主动构造(用于模拟历史对话上下文),或从语言模型的返回结果中直接解析得到
  • 内容支持文本、代码片段、结构化提示,可包含引导用户后续输入的话术
  • 在对话序列中,跟随User消息出现,用于构建多轮对话的上下文链,让AI理解对话历史
  • 示例代码:
const assistantMessage: vscode.LanguageModelChatMessage = {
  role: vscode.LanguageModelChatMessageRole.Assistant,
  content: "这段代码注册了一个名为`ext.hello`的命令,用户触发后会弹出提示框显示'Hello!'。`disposable`用来管理命令的生命周期,调用它的`dispose()`方法可以注销该命令,避免内存泄漏。"
};

多轮对话场景示例

构建包含历史上下文的对话序列时,两种类型需按交互顺序排列:

const chatHistory: vscode.LanguageModelChatMessage[] = [
  { role: vscode.LanguageModelChatMessageRole.User, content: "VS Code扩展里的Disposable是什么?" },
  { role: vscode.LanguageModelChatMessageRole.Assistant, content: "Disposable是VS Code API的资源管理接口,用来释放扩展注册的命令、监听器等资源,防止内存泄漏。" },
  { role: vscode.LanguageModelChatMessageRole.User, content: "那我什么时候需要调用dispose()?" }
];

内容的提问来源于stack exchange,提问作者Shivam B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 02:24:52