Mist SDK Tools 是一个面向 Mist SDK / Zephyr 项目开发的 VS Code 扩展,提供应用与板卡选择、构建、烧录、Source 产物定位、配置管理和 CI/CD 辅助能力。
主要功能
Application 视图
- 在 Mist SDK Tools 活动栏中提供自定义 Webview 侧边栏。
- 默认根节点为
APP,支持根节点行内重命名。
- 支持选择当前工作区主工程目录、应用、板卡、
Extra Conf、Extra Overlay 和额外编译参数。
- 应用和板卡列表支持搜索选择,配置管理和 CI/CD 面板的下拉框支持匹配高亮、最近使用置顶和更清晰的空状态提示。
Mist SDK: Add Config 面板支持选择已有配置或输入新配置名称,保存当前配置的应用、板卡、Extra Conf、Extra Overlay 和额外命令。
- 支持执行额外命令,适合运行与当前 MIST 目录相关的临时命令。
Mist SDK: Refresh UI 会清空内存缓存、重新扫描目录,并写入 <MIST>/.cache/mist-sdk-cache.json。
Compile Application 默认执行 west build 并输出到 build/<root-name>;若额外参数显式传入 -d/--build-dir,则以用户指定目录为准。
Rebuild 会先删除当前生效的 build 目录,再重新构建。
- 状态栏指示器:底部状态栏实时显示当前活动 root 的板卡名和应用路径(最后 2 段),悬停可查看完整路径,点击可直接打开板卡搜索。
AI Agent 切换
- 新增
Mist SDK: Switch AI Agent 命令,用于在当前工作区切换 AI agent 入口。
- 支持
GitHub Copilot、OpenAI Codex、Claude Code 三种工具入口的多选启用与一键清理。
- 底部状态栏会显示当前已启用的 agent 组合,例如
Copilot + Claude,点击即可再次切换。
- 依赖工作区根目录下的
agent/scripts/link.bat 与 unlink.bat;若未检测到脚本,会给出提示。
Actions 视图
- 在 Mist SDK Tools 容器内显示每个 APP 配置对应的 build 目录。
- 提供
Build / Rebuild / Clean 快捷按钮,复用当前 root 的应用、板卡和额外编译参数,并可直接清理当前生效 build 目录。
- 提供
Flash 按钮,执行 west -v flash -d <当前生效 build-dir>。
- 提供
West Update 按钮,执行 west update 同步仓库依赖。
- 提供
Ozone 按钮,查找并使用 Ozone 打开当前 build 目录下的 .jdebug 工程。
- 提供
Kconfig 按钮,在主编辑区打开当前 root 的 Kconfig 配置器。
- 提供常用 build 按钮:
dashboard、dtdoctor、initlevels、ram_report、rom_report、traceconfig。
- 支持切换 Actions 按钮文字标签显示/隐藏。
- 支持单独刷新 Actions 视图,并可从标题栏一键清理当前工作区默认
build 目录。
Source 视图
- 解析工程入口文件、编译相关 PROJECT 文件和已生成 build 目录中的 OUTPUT 产物。
- 支持普通 build 和 sysbuild 多 domain 输出。
- Entry 包含应用目录中的
CMakeLists.txt、Kconfig、prj.conf、main.c,所选板卡列表项对应的 .dts、.yaml、.yml、*_defconfig、*_deconfig,应用 boards 目录下对应的 .conf、.overlay 文件,以及手动选择的 Extra Conf / Extra Overlay 文件。
- PROJECT 按依赖文件的最长公共目录生成资源管理器树,展示应用编译用到的所有可定位文件,数据来自 Entry、
compile_commands.json 和 ninja -C <build-dir> -t deps。
- PROJECT 标题栏提供搜索按钮,可在 Source 视图内展开 PROJECT 内容搜索框,只在 PROJECT 当前文件列表中搜索。
- OUTPUT 包含
.dts、.bin、zephyr/include/generated/zephyr/autoconf.h、kconfig-trace.md、zephyr.map、zephyr.lst 等文件。
- 板卡路径优先从
<MIST>/.cache/mist-sdk-cache.json 中解析,cache 不可用时回退扫描 boards 下 yaml/yml 的 identifier。
- 支持过滤搜索;搜索时会自动展开包含匹配文件的 APP 和 Entry/PROJECT/OUTPUT 分区。
- 顶部搜索框同时提供文件搜索下拉:输入关键字后,以文件名加淡化相对路径的格式展示 PROJECT 和 OUTPUT 文件(不含 Entry),可直接点击跳转打开。
- 记住展开状态、过滤文本和当前打开文件的 active 状态;当打开文件属于 PROJECT 时,会自动展开并选中对应节点。
- 标题栏按钮支持全部收缩/全部展开,并根据状态切换图标。
配置和默认目录
- 默认 MIST 目录保存到 workspace setting:
mist-sdk-tools.projectDir。
- 启动时会优先读取当前 workspace
.west/config 中 [manifest] 下的 path 作为默认 MIST 目录;如果未配置或目录无效,再回退识别当前 workspace 是否为 mist,或 workspace 下是否存在 mist 子目录。
Mist SDK: Select Mist Directory、Mist SDK: Add Config 和 Mist SDK: CICD 面板共用同一个 workspace MIST 目录配置。
- 当
mist-sdk-tools.projectDir 更新时,已打开的 Mist SDK: Add Config 和 Mist SDK: CICD 面板会自动刷新当前目录并重新加载可选项。
- 每个 root 保存应用、板卡、
Extra Conf、Extra Overlay 和额外命令;构建、烧录和 Source 解析统一使用当前 workspace 的 MIST 目录。
- 应用扫描优先覆盖
applications、samples、tests,缺失时再回退全工程;板卡扫描在根 boards 目录不可用时会尝试从 west.yml / west.yaml 的 mist 项目路径回退解析。
命令执行与日志
- 构建、烧录、
west update、CI/CD 后端脚本和额外命令输出到 VS Code 集成终端 Mist SDK,支持 ANSI 彩色日志。
- 命令会统一复用同一个
Mist SDK 终端,不会每次执行命令都新建终端。
- 插件停用时会主动释放共享终端资源,减少终端残留与环境状态不一致问题。
- 当前进度通知用于展示执行状态,不提供命令级取消;命令提交到终端后需在终端中自行中断。
- 历史日志可使用 VS Code Terminal 自带的清理功能处理。
- 命令执行时会注入常见彩色输出环境变量,如
FORCE_COLOR、CLICOLOR_FORCE、TERM=xterm-256color 等。
- 虚拟环境通过
VIRTUAL_ENV 和 PATH 注入,不执行 PowerShell Activate.ps1。
CI/CD 面板
- 通过 Webview 选择当前工作区主工程目录、应用、固件并填写 commit hash。
- 当未手动填写 commit hash 时,会异步获取当前 MIST 仓库最新 commit,避免阻塞扩展界面。
- 固件下拉会在选择应用前保持禁用,选择应用后再加载对应固件,避免误选旧数据。
- 可执行后端脚本并查看日志。
- 固件列表会读取
<MIST>/.cache/mist-sdk-cache.json。
稳定性与安全性改进
- 主要 Webview 消息入口已增加基础字段校验,用于过滤缺失
type / command 等关键字段的异常消息。
- Source 搜索缓存增加容量限制,Kconfig 数据缓存增加生存时间控制,降低长时间使用后的内存增长风险。
- 多处目录检查与 HTML 模板加载已改为异步实现,减少阻塞扩展宿主线程的情况。
- AI agent 切换命令会输出脚本执行日志,并对缺少脚本或执行失败的情况提供更明确的错误提示。
使用指南
1. 快速入口
安装扩展后,VS Code 左侧活动栏会出现 Mist SDK Tools 图标。插件的常用入口如下:
| 入口 |
用途 |
| Application 视图 |
设置 MIST 目录、选择应用/板卡、管理配置、发起编译 |
| Actions 视图 |
执行 Build / Rebuild / Clean / Flash / Ozone / Kconfig / 常用 target |
| Source 视图 |
查看 Entry / PROJECT / OUTPUT 文件 |
| 命令面板 |
执行 Add Config、CICD、Refresh UI、Select Mist Directory、清理 build 目录等命令 |
| 状态栏 |
查看当前活动 root 的板卡和应用,并快速打开板卡搜索 |
| 状态栏(AI Agent) |
查看当前启用的 AI agent 组合,并快速切换 |
提示:首次使用建议先完成 MIST 目录 → 应用/板卡 → Build → Source 这条主流程。
补充:如果工作区已经接入统一的 agent 仓库,可通过状态栏中的 $(hubot) 项快速切换当前启用的 AI agent 工具组合。
2. Application 视图
Application 视图是日常使用的主入口,负责当前工作区的配置选择与构建发起。
2.1 配置 MIST 目录
首次使用时,扩展会自动尝试识别 MIST 主工程目录:
- 优先读取工作区
.west/config 中 [manifest] path 对应的目录
- 如果未命中,自动查找工作区中的
mist 目录
- 如果工作区根目录本身就是
mist,也会直接将其作为默认目录
- 识别成功后写入 workspace setting:
{
"mist-sdk-tools.projectDir": "d:/code/mist/project/mist"
}
如果自动识别失败,可以点击 Application 视图标题栏的文件夹按钮,或执行 Mist SDK: Select Mist Directory 手动选择。
设置完成后,Application、Add Config、CICD、构建和 Source 解析都会统一使用这个工作区级 MIST 目录。
注意:mist-sdk-tools.projectDir 是整个 workspace 的唯一 MIST 目录来源,Add Config 和 CICD 面板会直接读取并使用这个值。
2.2 配置管理
执行 Mist SDK: Add Config 打开配置管理面板。
| 字段 |
说明 |
| 配置名称 |
从已保存配置中选择,或输入新名称 |
| 当前工作区主工程目录 |
只读展示,点击 设置目录... 可修改 |
| 应用 |
选择当前 root 对应的应用 |
| 板卡 |
选择当前 root 对应的板卡 |
| Extra Conf |
选择额外 .conf 配置片段,构建时通过 EXTRA_CONF_FILE 传入 |
| Extra Overlay |
选择额外 .overlay 设备树 overlay,构建时通过 EXTRA_DTC_OVERLAY_FILE 传入 |
| 额外命令 |
设置 west build 的额外参数(如 --pristine) |
- 保存配置时,会写入配置名称、应用、板卡、
Extra Conf、Extra Overlay 和额外命令,不会单独保存 MIST 目录。
- 切换已有配置后,会自动回填应用、板卡、
Extra Conf、Extra Overlay 和额外命令,并基于当前 MIST 目录重新加载可选项。
Extra Conf / Extra Overlay 中位于应用目录内的文件会按应用相对路径保存,例如 bt.conf、boards/app.overlay。
- 每个配置本质上对应一个 root。若重命名
APP,实际会同步修改该 root 的显示名称,并影响默认 build 目录名 build/<root-name>。
2.3 选择应用和板卡
在 Application 视图中:
- 展开
APP 节点(支持行内重命名)
- 点击应用或板卡分区右侧的 🔍 按钮进行 Quick Pick 搜索
- 选择后,当前 root 会自动保存配置
- 状态栏会同步显示当前活动 root 的板卡名和应用路径,点击状态栏项可直接打开板卡搜索
补充说明:配置管理和 CI/CD 面板中的应用、板卡、固件下拉会优先显示当前选择和最近使用项;已有选择时再次展开会显示完整候选列表,方便直接切换到其他项。
2.4 发起构建
展开 APP 节点后,可直接点击:
- Compile Application — 执行普通构建
- Rebuild — 先删除 build 目录,再重新构建
- Extra Command — 执行额外命令
- Extra Conf / Extra Overlay — 展开查看已选择文件,点击文件可打开,右侧按钮可选择或清空
构建命令格式如下:
west build -b <board> <app> [-d build/<root-name>] [extraCommand] [-- -DEXTRA_CONF_FILE=<files> -DEXTRA_DTC_OVERLAY_FILE=<files>]
构建成功后,扩展会自动更新 clangd.arguments 中的 --compile-commands-dir,实现智能提示。
补充说明:如果额外参数中显式传入 -d 或 --build-dir,插件后续的 Flash、Ozone、Source 解析和部分 target 命令都会以该目录为当前生效 build 目录。
2.5 切换 AI Agent 工具
执行 Mist SDK: Switch AI Agent,或点击状态栏中的 $(hubot) 项,可打开多选列表切换当前工作区启用的 AI agent 工具。
目前支持:
GitHub Copilot → 工作区根目录 .github/
OpenAI Codex → 工作区根目录 AGENTS.md
Claude Code → 工作区根目录 .claude/ 与 CLAUDE.md
行为说明:
- 可多选启用多个工具入口。
- 全部取消时,会执行清理入口操作。
- 若工作区根目录下不存在
agent/scripts/link.bat,命令会提示先准备 agent 脚本仓库。
- 切换结果会同步刷新状态栏文本,便于确认当前生效组合。
3. Actions 视图
Actions 视图用于集中执行构建相关操作和常用 target。
| 按钮 / 入口 |
作用 |
| CCDB |
配置 clangd 的 compile_commands 目录(仅 sysbuild 时显示) |
| Build |
按当前 root 配置执行 west build |
| Rebuild |
删除当前生效 build 目录后重新构建 |
| Clean |
清除当前 root 当前生效的编译目录 |
| Kconfig |
打开 Kconfig 配置器 |
| Flash |
烧录当前 root 的 build 产物 |
| Ozone |
打开 J-Debug 工程 |
| 标题栏垃圾桶按钮 |
清除当前工作区主工程目录下默认的 build 目录 |
| dashboard / ram_report 等 |
执行常用 build target |
补充说明:Clean 会基于当前 root 实际生效的 build 目录执行清理;如果额外参数中指定了 -d / --build-dir,这里会清理该自定义目录。
sysbuild 说明:dashboard、dtdoctor、initlevels、ram_report、rom_report 在 sysbuild 构建时,会自动读取 build/<root-name>/build_info.yml 解析 image 列表。如果存在多个 image,会弹出选择框让用户指定要分析的 image,实际构建目录变为 build/<root-name>/<image-name>。traceconfig 始终使用根 build 目录,不受 sysbuild 影响。
4. Source 视图
Source 视图展示当前 build 目录解析出的三类文件:
4.1 Entry — 应用入口文件
- 应用目录:
CMakeLists.txt、Kconfig、prj.conf、main.c
- 板卡文件:
.dts、.yaml、.yml、*_defconfig
- 板卡配置:
.conf、.overlay
- 手动选择的
Extra Conf / Extra Overlay 文件
4.2 PROJECT — 编译依赖文件树
- 以依赖文件的最长公共目录生成资源管理器树
- 显示文件大小,部分文件显示
flash/ram 占用
- 支持搜索过滤,点击可跳转打开
- 当当前打开文件属于 PROJECT 时,Source 视图会自动展开并高亮对应节点
4.3 OUTPUT — 构建产物
.dts、.bin、autoconf.h、kconfig-trace.md、zephyr.map、zephyr.lst
提示:顶部搜索框可同时过滤主树和快速定位文件;全部展开按钮可一键展开所有子目录。
补充说明:顶部文件搜索下拉只检索 PROJECT 和 OUTPUT 文件,不包含 Entry 文件。
5. CI/CD 面板
执行 Mist SDK: CICD 打开 CI/CD 面板。
| 字段 |
说明 |
| 当前工作区主工程目录 |
展示当前 mist-sdk-tools.projectDir,可点击修改 |
| 应用 |
从当前 MIST 目录加载的应用列表中选择 |
| 固件 |
选择应用后,从该应用的固件列表中选择 |
| Commit Hash |
输入要构建的 commit hash,或默认使用最新 commit |
操作流程:
- 确认或选择当前工作区主工程目录
- 选择应用(从
buildConfigPath 加载)
- 选择固件(从应用的
imagesName 加载)
- 输入 commit hash(可点击加载最新 commit)
- 点击执行按钮触发后端 CI/CD 脚本
提示:当 workspace 的主工程目录发生变化时,页面中的目录、应用列表、固件列表和最新 commit 提示会自动按新目录刷新。
补充说明:未选择应用前,固件下拉会显示“请先选择应用”并保持禁用;选择应用后才会加载对应固件列表。
补充说明:固件列表数据来自 <MIST>/.cache/mist-sdk-cache.json,因此如果目录内容刚发生变化但列表未更新,可先执行 Mist SDK: Refresh UI。
补充说明:面板内部的目录、应用、固件和 commit 加载请求已增加基础消息校验与错误提示,出现异常输入时会更早给出反馈。
6. Kconfig 配置器
点击 Actions 视图中的 Kconfig 按钮,在主编辑区打开配置器:
- 主区域显示可展开的 Kconfig 树
- 右侧显示配置详情和
prj.conf 预览
- 点击配置值可直接修改,
Changes 页签列出本次修改
- 保存只写
prj.conf,不会直接修改 build 目录下的 .config
提示:修改 prj.conf 后需要重新构建才会生效。
常用命令
| 命令 |
说明 |
Mist SDK: Add Config |
打开配置管理面板,保存或复用当前 root 的应用、板卡、Extra 文件和额外命令 |
Mist SDK: CICD |
打开 CI/CD 面板 |
Mist SDK: Select Mist Directory |
设置当前 workspace 统一使用的 MIST 目录 |
Mist SDK: Refresh UI |
刷新 Application 视图并更新 cache |
Mist SDK: Search Applications |
搜索并选择应用 |
Mist SDK: Search Boards |
搜索并选择板卡 |
Mist SDK: Set Extra Command |
设置当前 root 的额外编译参数 |
Mist SDK: Extra Command |
在当前 MIST 目录下执行额外命令 |
Mist SDK: Compile Application |
编译当前 root 的应用 |
Mist SDK: Clean Build Directory |
清除当前 root 当前生效的编译目录 |
Mist SDK: Clean Default Build Directory |
清除当前工作区主工程目录下默认的 build 目录 |
Mist SDK: West Flash |
烧录当前 root 的 build 产物 |
Mist SDK: Open Ozone |
使用 Ozone 打开当前 root 的 .jdebug 工程 |
Mist SDK: West Update |
在当前 MIST 目录执行 west update |
Mist SDK: Select Application |
选择指定应用 |
Mist SDK: Select Board |
选择指定板卡 |
Mist SDK: Switch AI Agent |
切换当前工作区启用的 AI agent 工具入口 |
Mist SDK: Open Kconfig Editor |
打开当前 root 的 Kconfig 配置器 |
Mist SDK: Refresh Actions |
刷新 Actions 视图 |
Mist SDK: Toggle action button labels |
切换 Actions 视图按钮文字标签显示/隐藏 |
Mist SDK: Refresh Source |
刷新 Source 视图 |
Mist SDK: Collapse Source / Mist SDK: Expand Source |
收缩或展开 Source 视图 |
设置示例
{
"mist-sdk-tools.projectDir": "d:/code/mist/project/mist",
"mist-sdk-tools.ozonePath": "D:/Program Files/SEGGER/Ozone",
"mist-sdk-tools.activeRootId": "APP",
"mist-sdk-tools.actionsShowLabels": true,
"mist-sdk-tools.roots": [
{
"name": "APP",
"selectedAppRelativePath": "applications/demo_app",
"selectedBoardName": "demo_board",
"extraCommand": "--pristine"
}
]
}