JianAgent - Minecraft 服务器压测与管理平台
一站式 Minecraft 服务器压力测试与运维管理平台,基于 NestJS 11 + React 19 + Mineflayer 全栈架构,支持批量机器人压测、实时控制台、插件探针、会话管理与数据归档。
Monorepo — 使用 pnpm workspace 管理
5 个 TypeScript 包 + 1 个 Kotlin 插件 (含 api / probe-plugin 两个子项目)
全栈技术栈 — NestJS 11(后端)+ React 19(前端)+ Mineflayer(机器人引擎)
测试覆盖 — 69 个测试文件,311 个测试用例
jian-agent/
├── packages/
│ ├── server/ # 后端服务
│ ├── web/ # 前端 SPA
│ ├── bot-worker/ # 机器人工作进程
│ ├── shared-domain/ # 共享类型与 DTO
│ └── shared-protocol/ # WebSocket/IPC 协议定义
└── plugin/ # Kotlin Bukkit 探针插件
├── api/ # 插件 API 模块
└── probe-plugin/ # Paper 探针插件实现
包名
说明
@jian-agent/server
NestJS 11 + Fastify + Drizzle ORM + SQLite — 提供 REST API、WebSocket 推送、PTY 终端、进程管理
@jian-agent/web
React 19 + Vite 6 + TailwindCSS 3 + Zustand 5 — 控制台 UI、仪表盘、会话管理
@jian-agent/bot-worker
Mineflayer 机器人工作进程 — 通过 IPC 与 server 通信,支持行为模板与调试模式
@jian-agent/shared-domain
共享类型定义、DTO、枚举、常量
@jian-agent/shared-protocol
WebSocket 事件与 IPC 消息协议定义
plugin/
Kotlin Bukkit 探针插件(Paper 1.20.4)— 采集服务器 TPS、玩家、插件状态并上报
#
功能
说明
1
服务器配置
通过 Web UI 配置 MC 服务器路径、JVM 参数、端口
2
启停控制
一键启动 / 停止 / 重启 Minecraft 服务器进程
3
实时控制台
基于 xterm.js + node-pty 的实时终端,支持命令输入
4
进程健康监控
CPU、内存、运行时长实时监控与告警
5
插件探针
Bukkit 探针插件采集 TPS / 玩家列表 / 插件状态并推送
6
批量机器人
批量生成 Mineflayer 机器人连接服务器
7
机器人仪表盘
机器人列表、状态看板、实时连接数
8
压测会话
创建压测会话,配置阶段(phase)逐步加压
9
单 Bot 调试
选中单个机器人,实时查看视角、背包、聊天
10
日志与审计
操作日志、告警记录、审计追踪
启动模板 — 预设服务器启动配置,一键切换
定时停机 — 计划维护窗口,自动优雅关停
崩溃重启 — 进程异常退出后自动重启
阶段智能 — 基于 TPS/内存指标自动推进压测阶段
机器人分组 — 按角色分组管理机器人(如 PvP / 建造 / 挂机)
行为模板 — 预定义机器人行为脚本(走动、挖掘、PvP)
插件白名单动作 — 压测时自动执行插件命令(如 /stop、/save-all)
Java 深度采样 — JFR/热点方法采样分析
终端权限与审计 — 终端操作权限控制与录屏回放
会话报告导出 — 压测报告 PDF/JSON 导出
数据归档 — 历史会话归档与清理
分布式 Worker — 多节点机器人 Worker 水平扩展
依赖
版本
Node.js
>= 20
pnpm
>= 9
JDK
>= 17(运行 Minecraft 服务器及编译 Kotlin 插件)
# 1. 安装依赖
pnpm install
# 2. 构建共享包(server/web 依赖它们)
pnpm build:shared
# 3. 启动后端(默认 :3400)
pnpm dev:server
# 4. 启动前端(默认 :5173)
pnpm dev:web
cd plugin
./gradlew build
# 产物: probe-plugin/build/libs/*.jar
变量
默认值
说明
JWT_SECRET
开发默认值
生产环境必须更改
PORT
3400
后端监听端口
jian-agent/
├── package.json # 根 workspace 脚本
├── pnpm-workspace.yaml # pnpm workspace 配置
├── tsconfig.base.json # 共享 TypeScript 配置
├── packages/
│ ├── server/ # NestJS 后端
│ │ └── src/
│ │ ├── auth/ # JWT 认证
│ │ ├── bot/ # 机器人管理
│ │ ├── session/ # 压测会话
│ │ ├── server-process/ # MC 进程管理
│ │ ├── pty/ # PTY 终端
│ │ ├── plugin-bridge/# 插件桥接
│ │ ├── metrics/ # 指标采集
│ │ ├── realtime/ # WebSocket 推送
│ │ ├── audit/ # 审计日志
│ │ ├── storage/ # 数据归档
│ │ ├── java-helper/ # Java 采样辅助
│ │ └── db/ # Drizzle ORM + SQLite
│ ├── web/ # React 前端
│ │ └── src/
│ │ ├── pages/ # 页面组件
│ │ ├── features/ # 功能模块
│ │ ├── components/ # 通用组件
│ │ ├── stores/ # Zustand 状态
│ │ ├── ws/ # WebSocket 客户端
│ │ └── api/ # REST API 封装
│ ├── bot-worker/ # 机器人 Worker
│ │ └── src/
│ │ ├── behavior/ # 行为模板
│ │ ├── lifecycle/ # 生命周期管理
│ │ ├── debug/ # 调试模式
│ │ ├── registry/ # Bot 注册表
│ │ ├── reporter/ # 状态上报
│ │ └── ipc/ # IPC 通信
│ ├── shared-domain/ # 共享类型
│ │ └── src/
│ │ ├── dto/ # 数据传输对象
│ │ ├── enums/ # 枚举定义
│ │ └── constants/ # 常量
│ └── shared-protocol/ # 协议定义
│ └── src/
│ ├── bot-events.ts
│ └── alert-events.ts
├── plugin/ # Kotlin Bukkit 插件
│ ├── api/ # 插件 API
│ └── probe-plugin/ # Paper 探针实现
└── docs/ # 设计文档与计划
层
技术
后端框架
NestJS 11 + Fastify
数据库
SQLite + Drizzle ORM + better-sqlite3
认证
JWT (jsonwebtoken + bcrypt)
终端
node-pty + xterm.js
实时通信
WebSocket (ws)
前端框架
React 19 + React Router 7
构建工具
Vite 6
样式
TailwindCSS 3 + PostCSS
状态管理
Zustand 5
机器人引擎
Mineflayer 4
插件
Kotlin + Paper API 1.20.4
测试
Vitest 3 + JUnit 5
包管理
pnpm 9 workspace
语言
TypeScript 5.7 + Kotlin 1.9
# 运行全部测试(5 个包,69 个文件,311 个用例)
pnpm test
# 并行运行
pnpm -r --parallel run test
# 单包测试
pnpm --filter @jian-agent/server test
pnpm --filter @jian-agent/web test
pnpm --filter @jian-agent/bot-worker test
# 监听模式
pnpm --filter @jian-agent/server test:watch
# 开发模式
pnpm dev:server # NestJS 热重载 :3400
pnpm dev:web # Vite HMR :5173
# 构建
pnpm build # 构建所有包
pnpm build:shared # 仅构建共享包
# 类型检查
pnpm lint # 所有包 tsc --noEmit
GNU GPLv3