尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

VS Code 插件开发实战:左侧抽屉面板配置与图标设置全解析(TaoToken 统一 Key 接入)

发布时间:2026/9/26 14:03:34

资讯中心
01
ARTICLE

VS Code 插件开发实战:左侧抽屉面板配置与图标设置全解析(TaoToken 统一 Key 接入)

VS Code 插件开发实战:左侧抽屉面板配置与图标设置全解析(TaoToken 统一 Key 接入)
1. 从零认识 VS Code 左侧抽屉面板如果你写过 VS Code 插件大概率遇到过这个需求插件装好了命令面板里能搜到但左侧活动栏Activity Bar里空空如也用户根本不知道你的功能藏在哪。这就是「左侧抽屉面板」要解决的问题——它指的是 Activity Bar 上的图标入口以及点开后 Side Bar 里展开的视图容器View Container和具体视图View。VS Code 插件开发里左侧抽屉面板本质上由package.json里的contributes.viewsContainers和contributes.views两个字段驱动。前者负责在活动栏放一个带图标的容器后者负责往容器里塞具体的抽屉子项。图标设置则分两层一层是活动栏上那个小图标另一层是插件市场里展示的插件图标两者路径写法不同很多人第一次做会混淆。这篇面向需要为插件添加自定义视图容器的开发者交付一份可直接复制的package.json视图容器与图标字段骨架同时把 TaoToken 统一 Key/API 通道的settings.json配置片段一并给出。TaoToken 在这里的作用是当你的插件需要调用大模型能力比如做一个代码解释抽屉不用在插件里硬编码各家 Key而是通过统一通道走插件配置更干净。适合已经能跑通 Hello World 插件、想进一步做侧边栏交互的开发者跟做。2. TaoToken 前置统一 Key 与 API 通道准备在动手改package.json之前先把模型调用通道准备好。插件里如果要做「选中代码 → 抽屉面板里显示解释」这类功能必然要发请求。我试过把 Key 直接写进插件源码结果一提交就泄露后来改成走统一通道插件只认一个地址和一个 Key。你需要先拿到一个可用的 Key。打开官网 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册后进入控制台 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 创建 API Key。创建时建议按插件名命名比如vscode-drawer-demo方便后续排查是哪个插件在调用。拿到 Key 后API 通道地址是 https://taotoken.net/api这个地址不加 UTM 参数直接用于代码里的 baseURL。如果你用的是 Anthropic 风格的接口接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里有说明Claude Code 相关的配置参考 https://taotoken.net/ClaudeCodeAnthropic?utm_sourcetaotoken_aicg_blog_endutm_contentClaudeCodeAnthropicutm_campaignrewrite。注意Key 不要写进package.json也不要提交到 Git。插件运行时从 VS Code 的配置里读配置存在用户本地的settings.json中。这一步的核心产出是一个 Key 和一个 baseURL。后面第 3 节的settings.json片段会用到它们。如果你暂时只想验证抽屉面板和图标不接模型也可以先跳过 Key等面板跑通再回来补。3. 可复制配置package.json 视图容器与图标骨架现在进入正题。假设你的插件工程叫demo06-iconSet目录结构里有一个resources文件夹放图标。先看package.json里需要加的完整字段。3.1 viewsContainers 定义活动栏容器viewsContainers分activitybar和panel两类左侧抽屉面板用的是activitybar。每个容器需要id、title、icon三个属性icon是相对package.json的本地路径。{ contributes: { viewsContainers: { activitybar: [ { id: demo06-drawer, title: 果盘抽屉, icon: resources/fruit.svg } ] } } }这里id是容器的唯一标识后面views里要引用它。title是鼠标悬停时显示的提示文字。icon建议用 24x24 的 SVGVS Code 会自动适配深浅主题如果用 PNG浅色主题下可能看不清。3.2 views 描述抽屉子项容器有了里面还得有抽屉。views字段按容器 id 分组每个视图有id和name{ contributes: { views: { demo06-drawer: [ { id: demo06.orange, name: 橙子区 }, { id: demo06.apple, name: 苹果区 } ] } } }demo06-drawer就是上面容器的 id两个视图会以可折叠分组的形式出现在侧边栏。name是显示给用户看的标题。3.3 viewsWelcome 自定义欢迎内容抽屉展开后如果没内容会显示默认的「暂无视图」可以用viewsWelcome自定义。它支持字符串、换行、执行命令、打开网页链接{ contributes: { viewsWelcome: [ { view: demo06.orange, contents: 欢迎来到橙子区。\n[执行 Hello World](command:demo06.helloWorld)\n[打开官网](https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content)\n[查看接入文档](https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite) } ] } }view绑定上面views里的 idcontents里\n换行command:触发命令直接写 URL 会打开浏览器。这样用户点开抽屉就有引导不会一脸茫然。3.4 插件市场图标设置活动栏图标和插件市场图标是两回事。市场图标用顶层icon字段路径同样相对package.json{ icon: resources/marketplace-icon.png }市场图标建议 128x128 的 PNG带透明背景。注意这个icon字段和viewsContainers里的icon不在同一层级别写混了。3.5 settings.json 配置 TaoToken 通道插件运行时读取用户配置。在 VS Code 的settings.json里加{ demo06.apiBase: https://taotoken.net/api, demo06.apiKey: 你的_TaoToken_Key, demo06.model: claude-sonnet-4-20250514 }然后在插件代码里用vscode.workspace.getConfiguration(demo06)读取。这样 Key 不进源码换 Key 也不用重新打包插件。模型名可以按需替换具体可用模型在模型对话页 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentchatutm_campaignrewrite 里能看到。4. 验证请求抽屉面板与图标生效步骤配置写完了怎么确认真的生效按下面步骤走。第一步按F5启动扩展开发宿主窗口。VS Code 会新开一个窗口标题栏带[扩展开发宿主]。第二步看左侧活动栏。如果配置正确活动栏底部附近会出现你设置的图标本例是果盘图标。如果没出现先检查viewsContainers的icon路径是否存在路径错了 VS Code 会静默忽略整个容器。第三步点击图标。侧边栏会展开显示「橙子区」和「苹果区」两个可折叠分组。点开「橙子区」应该看到viewsWelcome里的欢迎文字和三个链接。第四步点「执行 Hello World」链接。如果命令已注册会触发对应逻辑没注册则报「command not found」。命令注册在extension.ts里import * as vscode from vscode; export function activate(context: vscode.ExtensionContext) { const hello vscode.commands.registerCommand(demo06.helloWorld, () { vscode.window.showInformationMessage(Hello from 果盘抽屉); }); context.subscriptions.push(hello); }第五步验证模型通道。在命令里发一个请求确认 Key 和 baseURL 生效const config vscode.workspace.getConfiguration(demo06); const base config.getstring(apiBase); const key config.getstring(apiKey); const res await fetch(${base}/v1/messages, { method: POST, headers: { Content-Type: application/json, x-api-key: key as string, anthropic-version: 2023-06-01 }, body: JSON.stringify({ model: config.getstring(model), max_tokens: 256, messages: [{ role: user, content: 用一句话说明抽屉面板是什么 }] }) }); const data await res.json(); vscode.window.showInformationMessage(JSON.stringify(data).slice(0, 120));跑通后你会看到信息提示里返回了模型内容。这一步成功说明抽屉面板、图标、统一 Key 通道三者都通了。5. 本篇常见错排查做这个功能时踩过的坑集中在几个地方列出来对照。图标不显示最常见是路径问题。icon路径相对package.json不是相对src。如果图标放在resources/fruit.svg而package.json在根目录写resources/fruit.svg正确写成./resources/fruit.svg一般也行但写成src/resources/fruit.svg就错了。另外 SVG 里如果有外部引用或脚本VS Code 会拒绝渲染。容器出现但视图为空检查views里的 key 是否和viewsContainers的id完全一致大小写敏感。demo06-drawer和demo06-Drawer是两个不同的 id。viewsWelcome 链接不生效command:后面的命令必须在contributes.commands里声明过否则链接是灰的。URL 链接必须以https://开头写相对路径不会打开。改了 package.json 没反应扩展开发宿主窗口不会热重载package.json的 contributes 字段。改完要关掉宿主窗口重新按F5。只改 TypeScript 代码的话重新加载窗口CtrlR即可。请求返回 401Key 没读到或写错。先在设置里搜demo06.apiKey确认值存在再检查请求头字段名。Anthropic 风格用x-api-keyOpenAI 风格用Authorization: Bearer别混用。接入文档里有两种风格的对照。模型名报错model字段填了不存在的模型。去模型对话页确认当前可用模型名复制准确的字符串。6. 后续接入与长期编码建议抽屉面板跑通后下一步通常是让它真正干活选中代码 → 抽屉里显示解释、生成测试、做重构建议。这时候 Key 管理会变复杂如果你同时维护多个插件建议统一走 TaoToken 的 Coding Plan把额度集中管理避免每个插件单独配 Key。长期做编码类插件的可以看 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite 了解套餐细节。日常调试时我习惯把demo06.apiBase和demo06.model做成工作区级配置demo06.apiKey放用户级配置这样团队共享.vscode/settings.json时不会泄露 Key。另外插件发布前记得把viewsWelcome里的测试链接换成正式文档地址市场审核对死链比较敏感。如果你还没创建 Key回到 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 建一个然后按第 3.5 节填进settings.json。整个流程从配置到验证顺利的话半小时内能跑通。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。