认证与语言模型
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。