跳到主要内容

认证与语言模型

vscode.authentication​

向用户要一个登录会话,或自己实现一种登录方式。

方法作用
getSession(providerId, scopes, options?)取匹配 scope 的会话。多账号时会让用户选
getAccounts(providerId)列出该提供方下用户已登录的账号。列出来不等于你的扩展已获授权,仍要 getSession
registerAuthenticationProvider注册一种提供方
onDidChangeSessions会话增加、删除或变化

内置提供方包括 github、microsoft,以及较少用的 github-enterprise、microsoft-sovereign-cloud。

options.createIfNone: true 时,没有会话会引导用户登录。silent: true 时不要弹 UI。用户拒绝则 Promise 拒绝。

会话里的令牌放 context.secrets,不要放 globalState 或日志。

贡献 contributes.authentication 后,1.74 起可以不手写 onAuthenticationRequest。

vscode.lm​

和语言模型、工具有关。

成员作用
selectChatModels(selector?)选出当前可用的聊天模型
onDidChangeChatModels可用模型变化
registerTool / invokeTool注册并调用语言模型工具
registerMcpServerDefinitionProvider提供 MCP 服务器定义

工具还要在 contributes.languageModelTools 里声明名称和说明,模型才知道何时调用。实现在激活时 registerTool。

LanguageModelChat.sendRequest 发送消息并得到流式响应。调用前看用户是否同意把内容发给模型。

vscode.chat​

createChatParticipant(id, handler) 注册聊天参与者。用户在聊天里 @ 这个 ID 时,handler 收到请求,通过 stream 写回 markdown,也可以报告进度和引用。

对应激活事件是 onChatParticipant。清单里的相关贡献点有 chatAgents、chatInstructions、chatPromptFiles、chatSkills、languageModelChatProviders、languageModelTools。chatAgents 用扩展内的 .agent.md 描述一个预设代理。

这些 API 里有一部分随版本快速变化。使用前对照 engines.vscode 对应的 vscode.d.ts,标成 proposed 的要在 enabledApiProposals 里单独打开,不能当成稳定 API。

参考​