X-Runner V2.1 (The Infinite Task Runner)
X-Runner 是一个专业级的 Visual Studio Code 任务编排与可视化工具。
V2.1 版本带来了全新的 "Midnight Slate" 高级仪表盘,让您的任务管理体验更加现代化、直观和高效。

🌟 V2.1 重大更新
- 🎨 全新仪表盘: 基于 Slate 900 色系的深色磨砂玻璃 UI,即刻提升开发幸福感。
- 🏷️ 分组过滤: 按 group 分类任务,搜索框下方显示所有分组标签,点击即可快速筛选。
- 🔍 智能文件过滤: 侧边栏自动识别工作区内的所有配置文件,点击即可按文件筛选任务。
- 🚀 交互式 Action Chips: 告别枯燥的列表,使用直观的 Chips 点击运行子任务(如
deploy, status, restart)。
- ⚡️ 实时响应: 保存配置文件,仪表盘自动刷新,所见即所得。
🚀 核心特性
可视化仪表盘
- 在一个优美的 Dashboard 中总览所有项目任务
- 支持按分组 (group) 筛选任务
- 支持按配置文件筛选任务
- 支持关键字搜索(名称、分组、文件名)
智能发现
- 自动扫描
*.xr.yaml, xr.config.json 等配置文件
- 支持多种配置格式(YAML / JSON)
- 实时监听文件变化
任务运行
- command: 主运行命令,点击 RUN 执行
- build: 构建任务,显示 🔧 图标
- download: 下载任务,显示 ⬇️ 图标
子操作 (Actions)
- 为每个任务定义多个原子操作(如"构建"、"测试"、"部署")
- 在仪表盘中渲染为可点击的 Chips
- 点击 Chip 直接执行对应操作
链式运行 (runChain)
- 定义一个数组,即可按顺序串行执行一系列操作
- 支持引用
actions、commonActions 或直接命令
调试集成 (debug)
- 直接绑定
launch.json 中的调试配置
- 在任务卡片上点击 🐛 图标即可开始调试
日志查看 (log)
- 配置 log 路径
- 点击图标直接在 VS Code 中打开查看日志
上下文变量
- 自动解析
{workspaceFolder}, {file} 等变量
- 支持自定义变量(通过 defaults 定义)
CodeLens 支持
动态参数 (paramSource) 🆕
动态参数 (paramSource) 🆕
- 内联编辑: 双击任务卡片上的参数值直接修改。
- 实时搜索: 配置
search: true 后,输入支持脚本实时查询。
- 自动补全: 下拉列表展示脚本返回的候选项。
- 配置示例:
- 选中值自动填入命令参数
cases:
- name: "搜索日志"
command: "grep '{keyword}' {logfile}"
paramSource:
logfile:
# 使用 {keyword} 占位符响应输入
script: "find /var/logs -name '*{keyword}*'"
search: true # 开启搜索模式
📖 快速上手
1. 创建配置文件
在项目根目录创建一个 xr.config.yaml 文件:
defaults:
env: "dev"
commonActions:
clean: "rm -rf dist"
cases:
- name: "后端服务 (Backend)"
id: "backend.api"
group: "Services"
description: "Go编写的后端API服务"
# 主命令 (点击 RUN 运行)
command: "go run main.go --env {env}"
# 辅助操作 (显示为交互式 Chips)
actions:
test: "go test ./..."
lint: "golangci-lint run"
docker: "docker build -t api:latest ."
# 链式编排 (点击 Chain 图标运行)
runChain: ["clean", "lint", "test", "command"]
# 关联调试配置
debug: "Launch Backend"
# 日志路径
log: "logs/app.log"
2. 打开仪表盘
- 点击侧边栏 X-Runner 图标。
- 点击标题栏上的 仪表盘 图标
$(dashboard)。
- 或者运行命令:
X-Runner: Open Dashboard。
3. 使用分组过滤
- 搜索框下方会显示所有可用的分组标签
- 点击标签筛选对应分组的任务
- 点击「全部」显示所有任务
⚙️ 配置详解
| 字段 |
类型 |
描述 |
name |
string |
任务显示名称。 |
id |
string |
任务唯一标识符。 |
group |
string |
任务分组(在仪表盘中作为过滤标签)。 |
description |
string |
任务描述信息。 |
command |
string | array |
主运行命令。 |
build |
string |
构建命令,配置后显示构建按钮。 |
download |
string |
下载命令,配置后显示下载按钮。 |
actions |
map |
定义子操作,在仪表盘中渲染为可点击的按钮。 |
runChain |
string[] |
定义执行顺序,支持引用 actions 或 commonActions。 |
debug |
string |
对应 launch.json 中的配置名称。 |
log |
string |
日志文件路径,配置后显示查看日志按钮。 |
paramSource |
map |
动态参数源配置。包含 script, file, cache, search。 |
全局配置
| 字段 |
类型 |
描述 |
defaults |
map |
定义全局默认变量,可在命令中使用 {varName} 引用。 |
commonActions |
map |
定义公共操作,可在 runChain 中引用。 |
⌨️ 快捷变量
{case_id}: 当前任务 ID
{case_name}: 当前任务名称
{workspaceFolder}: 当前工作区根目录
{env}: 来自 defaults 的自定义变量
🎯 完整功能列表
| 功能 |
描述 |
| ✅ 可视化仪表盘 |
现代化的任务管理界面 |
| ✅ 分组过滤 |
按 group 字段筛选任务 |
| ✅ 文件过滤 |
按配置文件筛选任务 |
| ✅ 关键字搜索 |
快速搜索任务 |
| ✅ 任务运行 (command) |
执行主命令 |
| ✅ 构建任务 (build) |
执行构建命令 |
| ✅ 下载任务 (download) |
执行下载命令 |
| ✅ 子操作 (actions) |
多个可点击的操作按钮 |
| ✅ 链式运行 (runChain) |
按顺序串行执行多个操作 |
| ✅ 调试集成 (debug) |
一键启动调试 |
| ✅ 日志查看 (log) |
快速打开日志文件 |
| ✅ 动态参数搜索 |
支持脚本实时搜索参数选项 (🆕) |
| ✅ 内联参数编辑 |
直接在卡片上修改参数值 (🆕) |
| ✅ 变量替换 |
支持内置变量、自定义变量及 Top-Level 属性引用 (🆕) |
| ✅ CodeLens |
配置文件内联运行按钮 |
| ✅ 侧边栏任务列表 |
树形展示所有任务 |
| ✅ 实时刷新 (Hot Reload) |
修改配置自动更新 UI (🆕) |
🔧 开发与贡献
本项目采用 TypeScript + React (Webview) 开发。
- 克隆仓库
npm install
F5 启动调试
项目结构
src/
├── core/ # 核心逻辑
│ ├── configParser.ts # 配置文件解析
│ ├── runner.ts # 任务运行器
│ ├── taskService.ts # 任务服务
│ └── workspaceScanner.ts # 工作区扫描
├── providers/ # VS Code 提供者
│ ├── ConfigCodeLensProvider.ts
│ └── ScriptsTreeDataProvider.ts
├── dashboard/ # 仪表盘面板
└── extension.ts # 扩展入口
webview-ui/ # React 仪表盘 UI
├── src/
│ ├── App.tsx
│ └── App.css
📄 License
MIT License
| |