skill
Muster
Windows 原生终端工作区 — 终端、文件、Diff、Git 一窗之内。A native Windows terminal workspace built with Tauri 2 + Rust + React + xterm.js.
Set up
Skills are installed by placing their folder where your agent loads skills.
The download comes from github.com/JinMXu/Muster itself, not from our server, so what you get is exactly what its author published.
Install instructions come from the README
README
synced Oct 25, 2026Muster
Windows 原生的终端工作区 — 终端、文件、Diff、Git,一窗之内。
基于 Tauri 2 + React + xterm.js,Rust 后端直接驱动 ConPTY 与 libgit2。
亮点
🖥️ 终端工作区
niri 风格分屏布局,拖拽重排、焦点跟随、单 pane 最大化。ConPTY 驱动的完整终端仿真,PowerShell 深度集成 — 每条命令自动上报 cwd。
📂 文件与 Git 内建
Monaco 编辑器 + Diff 视图,主题跟随全局。Git 面板支持暂存/提交/push/pull/stash/分支管理,检查点功能持续追踪 HEAD 之后的全部变更。
🤖 Agent 感知
自动识别 Claude Code / OpenCode / Codex / GitHub Copilot / Cursor / Gemini CLI / Qwen Code 等 26 种 coding agent,标签显示状态点(绿=运行、黄=等待输入、红=待批准、蓝=已完成),失焦时发系统通知;重启后可从终端右键菜单重新运行上次的 agent。CLI 桥让 AI 代理驱动终端。
功能一览
| 模块 | 能力 |
|---|---|
| 多窗口 | 多开窗口并行,布局定时快照,重启完整恢复。最后窗口关闭后驻留系统托盘(左键点击或右键菜单恢复主窗口/打开目录/设置/退出),终端会话不中断 |
| 分屏布局 | 列×行网格,拖拽 pane 到任意边缘重排,跨标签页拖拽,焦点跟随,zoom 最大化 |
| 终端 | ConPTY 完整仿真(xterm.js),PowerShell 自动上报 cwd,响铃通知 |
| Worktree 追踪 | cd 进 worktree 后面板即时重锚定(事件驱动),Info 面板显示标记 |
| 文件编辑器 | Monaco 语法高亮/查找替换/自动换行;内联 diff vs HEAD(实时更新)、git blame、文件历史;终端报错行点击直达 |
| 差异查看器 | Monaco Diff 内联/分栏对比,支持任意两提交对比 |
| 文件树 | 懒加载目录树,内联重命名/新建,拖拽文件到终端粘贴路径 |
| Git 面板 | libgit2 工作区/暂存区状态,暂存/提交(Ctrl+Enter)/push/pull/fetch/分支/stash/冲突检测/最近提交;检查点锚定快照,持续追踪后续变更 |
| 项目搜索 | Ctrl+Shift+F 全文搜索,gitignore 感知,结果按文件分组、命中高亮 |
| 终端搜索 | 终端焦点下 Ctrl+F 滚动回滚搜索,增量高亮 |
| 命令面板 | Ctrl+P 模糊搜索项目文件、最近文件、命令、会话 |
| 标签切换器 | Ctrl+Tab 循环切换标签,带预览 |
| 主题 | 内置 GitHub 风格 + 完整 Ghostty 主题目录(598 款),深色/浅色独立设置,跟随系统 |
| 国际化 | 中文 / English,可跟随系统语言 |
| 会话持久化 | 布局/项目/选中状态每 5 秒自动快照,重启完整恢复 |
| Agent 总览 | 左下角 mini-bar 跨窗口汇总所有 agent 状态,点击跳转(Ctrl+Shift+A) |
| Agent CLI 桥 | muster 命令驱动终端:split/send/capture/run/wait/watch 等 |
| Agent 用量对比 | agent×model 效率矩阵:tokens/run、fresh input、cache hit、tokens/turn、时长;本地日志自动解析 |
| MCP server | muster mcp 把窗口、会话与 Agent 状态暴露为 MCP 工具,Claude Code / Cursor 等可直接编排 |
| CLI 工具 | muster <path> 从任意终端打开项目,支持 --cmd 执行命令 |
| 剪贴板安全 | 粘贴疑似可执行命令时弹窗确认 |
| 信息面板 | Shell PID、cwd、Git 分支/远程、进程树、监听端口 |
| 资源管理器集成 | 一键安装「在 Muster 中打开」右键菜单 |
| 自动更新 | 设置 → 关于 Muster 中检查更新,minisign 签名校验,下载进度可视化,一键重启安装 |
| 无障碍 | 跟随系统 prefers-reduced-motion |
技术栈
| 层 | 技术 |
|---|---|
| 外壳 / 窗口 | Tauri 2(Rust),多窗口 + 系统托盘 + CLI PATH 注册 |
| 前端 UI | React 18 + TypeScript + Vite + Tailwind CSS |
| 终端仿真 | xterm.js(fit 插件) |
| PTY | 手动 ConPTY 驱动(bundled OpenConsole.exe) |
| 编辑器 / Diff | Monaco Editor |
| Git | git2(libgit2,含 SSH) |
| 剪贴板安全 | 前端粘贴拦截 + 危险内容检测 |
| 类型化 IPC | Specta + tauri-specta 从 Rust 生成命令、事件与 DTO 绑定(src/lib/bindings.ts) |
| 其他 | notify、sysinfo、ignore、toml、winreg、本地 TCP JSON IPC |
快速开始
环境要求
开发
npm install
npm run tauri dev
构建
npm run tauri build # 产出 MSI 和 NSIS 安装包
更换应用图标后必须清缓存再打包:tauri-build 只监听
tauri.conf.json等少数文件,不监听src-tauri/icons/icon.ico。只换图标直接打包时,cargo 会复用旧的resource.lib,导致 exe 内嵌图标还是旧的(表现为:托盘图标是新的,但任务栏图标先正常随后变回旧图标)。换图标后执行以下任一操作再打包:
rm -rf src-tauri/target/release/build/muster-* # 删掉 build script 缓存(推荐) # 或者 touch src-tauri/build.rs / 改动一下 tauri.conf.json另外,如果安装后桌面快捷方式/资源管理器仍显示旧图标,那是 Windows 外壳图标缓存(
iconcache.db)的问题,与打包产物无关,重启资源管理器或运行ie4uinit.exe -show刷新即可。
常用命令
npm run dev # 生成文件图标子集后启动前端 Vite dev server
npm run build # 图标子集 + 类型检查 + 前端产物构建
npm test # 前端 Vitest(单次运行)
npm run test:watch # 前端 Vitest(watch 模式)
npm run icons:subset # 重新生成 src/assets/vscode-icons-subset.json
cargo check # 后端编译检查(在 src-tauri/ 下执行)
cargo test # 后端单元测试(在 src-tauri/ 下执行)
cargo run --bin export_bindings # 改命令/事件后重新生成 src/lib/bindings.ts
部分后端测试会真实创建进程和监听端口,默认被标记为
#[ignore],需手动运行:cargo test --lib -- --ignored
src/lib/bindings.ts由 Rust 生成,不要手改。修改#[tauri::command]或事件 payload 后运行cargo run --bin export_bindings并提交生成结果;CI 会校验该文件是否有漂移。
src-tauri/.cargo/config.toml 不入库(已 gitignore),因为它是单机有效的 workaround:只有当 Windows SDK / MSVC 装在非标准位置、rustc 自动探测失败(典型报错:LNK1181: cannot open input file 'kernel32.lib',或 cc-rs 找不到头文件)时才需要创建,内容形如:
[build]
rustflags = ["-L", "native=D:\\Windows Kits\\10\\Lib\\10.0.22621.0\\um\\x64"]
[env]
INCLUDE = "C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.44.35207\\include;..."
LIB = "C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.44.35207\\lib\\x64;..."
路径里的 MSVC/SDK 版本号需按本机实际安装调整;工具链在标准位置时不需要此文件。
配置
配置文件为 TOML 格式:
- 正式版:
%APPDATA%\muster\config.toml - 开发版(debug 构建):
%APPDATA%\muster-dev\config.toml
会话快照保存在同目录下的 sessions*.json。
命令行
在设置中选择 "Add Muster to PATH" 后:
muster . # 在当前目录打开项目
muster C:\projects\myapp # 在指定目录打开项目
muster --cmd "npm run dev" . # 打开项目并运行命令
muster --cmd "python hello.py" # 在当前目录运行命令
快捷键 -c 和 -d 可分别替代 --cmd 和 --cwd。
Agent 驱动的 CLI 桥
muster <verb> 通过本地 IPC 与正在运行的 Muster 通信(未运行时自动启动),供 AI 编码代理和其他脚本驱动终端:
muster doctor # 检查桥接状态
muster new C:\projects\myapp # 打开项目,打印首个终端会话 id
muster split --v # 向下分屏,打印新会话 id
muster send <id> "npm run dev" --enter # 向会话发送按键
muster send-keys <id> "ctrl+c" # 向会话发送快捷键
muster capture <id> --lines 200 # 读取会话最近输出
muster procs <id> # 会话进程树 + 监听端口
muster agents # 各会话的 coding agent 状态
muster run -- cargo test # 新标签 PTY 运行命令,等待完成
muster wait <id> # 等待 agent 达到目标状态(默认 done)
muster watch # 持续输出 agent 状态变化
muster ls # 列出窗口、项目、标签与 pane
muster usage --range 7d # agent×model token 效率对比
muster usage --view runs --limit 20 # 最近的 agent run
muster usage --view coverage # 26 种 agent 的数据源覆盖
run默认 600s 超时(--timeout N);--之后的内容原样作为命令- 任何 verb 加
--json输出结构化结果 - 为 AI 代理准备的完整使用说明见
skills/muster/SKILL.md
MCP server
muster mcp 以 MCP(stdio)方式运行,可直接注册到 Claude Code、Cursor 等客户端:
{
"mcpServers": {
"muster": { "command": "muster", "args": ["mcp"] }
}
}
提供 muster_ls、muster_agents、muster_doctor、muster_new、muster_split、muster_send、muster_send_keys、muster_capture、muster_procs、muster_run、muster_wait、muster_usage 共 12 个工具,底层复用同一套 IPC 桥;首次调用工具时会自动启动 Muster。使用前请先在「设置 → 集成」中把 muster 加入 PATH。
快捷键
| 快捷键 | 功能 |
|---|---|
Ctrl+N | 新建项目 |
Ctrl+Shift+N | 新建窗口 |
Ctrl+1 ~ Ctrl+9 | 切换到第 N 个项目 |
Ctrl+Alt+[ / Ctrl+Alt+] | 上一个 / 下一个项目 |
Ctrl+, | 打开设置 |
Ctrl+/ | 快捷键帮助 |
| 快捷键 | 功能 |
|---|---|
Ctrl+T | 新建终端标签 |
Ctrl+W | 关闭当前标签 |
Ctrl+Shift+T | 重开最近关闭的标签 |
Ctrl+Tab | 标签切换器 |
Ctrl+Shift+[ / Ctrl+Shift+] | 上一个 / 下一个标签 |
Ctrl+D | 向右分屏 |
Ctrl+Shift+D | 向下分屏 |
Ctrl+[ / Ctrl+] | 上一个 / 下一个 pane |
Ctrl+Alt+方向键 | 按方向切换 pane 焦点 |
Ctrl+Alt+Shift+方向键 | 按方向调整 pane 尺寸 |
Ctrl+Shift+Enter | 当前 pane 最大化 / 还原 |
| 快捷键 | 功能 |
|---|---|
Ctrl+P | 命令面板 |
Ctrl+B | 切换左侧项目栏 |
Ctrl+Shift+B | 切换右侧边栏 |
Ctrl+Shift+E | 文件树面板 |
Ctrl+Shift+F | 项目全文搜索 |
Ctrl+F | 终端滚动回滚搜索 |
Ctrl+Shift+A | Agents 总览 |
Ctrl+Shift+G | Git 面板 |
Ctrl+Shift+I | 信息面板 |
Ctrl+S | 保存文件(编辑器中) |
Ctrl+K | 清空终端 |
目录结构
kero-windows/
├── src/ # React 前端
│ ├── assets/ # 生成的文件图标子集
│ ├── components/ # 界面组件(终端、文件树、Git 面板、设置等)
│ ├── lib/ # invoke 封装、bindings.ts(Rust 生成)、设置/主题/缓存等
│ ├── hooks/ # Tauri 事件订阅等 React hooks
│ ├── test/ # Vitest setup
│ └── styles/ # 全局样式与设计变量
├── src-tauri/ # Rust 后端
│ ├── src/
│ │ ├── bin/ # export_bindings:生成前端命令/事件/类型绑定
│ │ ├── commands/ # 全部 Tauri 命令,按域拆分(前端 invoke 入口)
│ │ ├── events.rs # 事件 payload 类型(Specta 生成来源)
│ │ ├── models/ # 应用状态:项目、标签、pane、终端会话
│ │ ├── services/ # PTY/shell、git、配置、持久化、进程、CLI 等
│ │ └── theme/ # 主题目录与解析(含 Ghostty 主题)
│ ├── capabilities/ # Tauri 权限声明
│ └── assets/fonts/ # 内嵌字体(JetBrains Mono + Nerd Font 符号)
├── scripts/ # 主题目录、文件图标子集生成脚本
├── vitest.config.ts # 前端测试配置
└── docs/ # 设计文档与截图
致谢
Muster 是 Kero 的 Windows 重实现 — Kero 是由 @egoist 开发的 macOS 原生终端工作区(Swift + libghostty)。本项目在产品形态与交互设计上深受其启发,在此致谢。
主题目录来源于 Ghostty 项目;终端字体为 JetBrains Mono 与 Nerd Fonts 符号字体。