jarettr/intermed
GitHub: jarettr/intermed
InterMed 是一款 Rust 编写的 Minecraft 模组静态分析器,无需运行游戏即可扫描 jar 包与相关文件,检测依赖、资源冲突、Mixin 等问题并输出带证据链的多格式报告。
Stars: 3 | Forks: 0
# InterMed
InterMed 无需运行 Minecraft mod、整合包、服务器和日志即可对它们进行检查。它会读取磁盘上的 jar 包和文件,构建一个关于现有内容的事实图谱,并报告分析结果——每一项结果都可以追溯到其来源的具体文件。
它只负责解释;不会更改任何内容。一次运行永远不会修改您的整合包、下载 mod 或启动游戏。其输出是一份您可以在终端中阅读的报告,或者是供工具和 CI 使用的 JSON / SARIF / HTML 格式报告。
当前版本为 `0.1.3-alpha`。分析功能可以正常运行并已经过测试;但命令、参数标志和输出格式可能仍会发生变化。[路线图](docs/ROADMAP.md)记录了已计划的内容以及不在范围内的内容。
```
intermed doctor ./mods
```
```
InterMed Doctor v0.1.3-alpha
Target: ./mods (mods directory)
Env: loader=fabric mc=1.20.1 java=21
ERROR Missing dependency: cloth-config
bewitchment requires cloth-config (*), but it is not installed.
→ Install cloth-config, or remove bewitchment.
WARNINGS 1 actionable, 10 informational (0 fatal, 1 error, 0 warn, 10 note · 1073 facts)
```
## 检查范围
单次运行可以根据目标检查以下内容:
- **Metadata** — mod id、版本、加载器以及每个 mod 声明的依赖项。
- **整合包清单** — Modrinth 的 `.mrpack` 或 CurseForge 导出文件,它们通过引用列出其包含的 mod。如果磁盘上不存在对应的 jar 文件,报告会明确指出,而不是将一个空的整合包报告为状态正常。
- **依赖项** — 哪些声明的依赖项缺失、哪些被限制得太严格或太宽泛,以及哪些 mod 依赖于缺失的依赖项。此外,还包括 mod 从未声明但通过其数据显现出来的*隐式*依赖项。
- **资源 / 数据** — 配方、标签、战利品表、进度、模型、blockstate 和图集。哪些 mod 写入了同一个文件,最终保留的是谁的副本,以及合并是安全的还是强制覆盖。
- **Mixins** — 每个 mixin 针对的目标是什么,哪些地方有两个 mod 触及了同一个方法,阻止了其他 mod 生效的 `@Overwrite`,以及可能不会生效的 mixin。
- **脚本** — 从脚本源码中读取的 KubeJS / CraftTweaker 配方移除和替换操作。
- **安全性 & SBOM** — JAR 签名、软件物料清单 (SBOM),以及敏感 API 引用(进程生成、socket、反射)的预检范围。
- **日志** — 针对已知错误特征的崩溃报告和 `latest.log`。
- **性能** — Spark 分析报告,并与占用热点方法的 mod 相关联。
每一条分析结果都带有证据支撑。`--explain ` 会打印出某项分析结果背后的事实,精确到该文件所在的 jar 包及其内部的具体文件。
## 安装
从[发布页面](https://github.com/jarettr/intermed/releases)获取适用于您平台的压缩包,解压后运行其中的 `intermed` 二进制文件。Rust 编译生成的是独立的可执行文件,因此无需安装其他任何内容。每个压缩包还包含 man 手册页和 shell 自动补全脚本。
```
# Linux — 静态,可在任何发行版上运行
tar -xzf intermed-*-linux-x86_64.tar.gz
./intermed-*/intermed doctor ./mods
# macOS — Apple Silicon (...-macos-aarch64)
tar -xzf intermed-*-macos-*.tar.gz
xattr -d com.apple.quarantine intermed-*/intermed # unsigned: clear Gatekeeper
./intermed-*/intermed doctor ./mods
```
在 Windows 上,解压 `intermed-*-windows-x86_64.zip`,然后在 PowerShell 中运行 `intermed.exe`:`.\intermed.exe doctor C:\path\to\mods`。
Intel macOS 用户可以使用 Rust 从源码构建;目前的发布矩阵仅提供 Apple Silicon macOS 的压缩包。
`-duckdb` 压缩包是相同的工具,但内置了可选的 DuckDB 后端(`--logic duckdb` 和 `--db` 分析存储);Linux 版本需要 glibc,而非静态编译版本。大多数用户只需要普通压缩包——默认的列式引擎本身就已功能完备。
### 从源码构建
需要 Rust 工具链。
```
git clone https://github.com/jarettr/intermed
cd intermed
cargo install --path crates/intermed-cli # installs `intermed` into ~/.cargo/bin
# 或者直接:cargo build --release → target/release/intermed
```
## 接下来去哪
- **[快速入门](docs/guides/quickstart.md)** — 安装、首次运行,以及每个命令的复制粘贴示例。
- **指南** — 按任务划分:
[阅读报告](docs/guides/reading-a-report.md) ·
[在 CI 中使用](docs/guides/ci.md) ·
[依赖项](docs/guides/dependencies.md) ·
[资源与覆盖](docs/guides/resources.md) ·
[Mixins](docs/guides/mixins.md) ·
[安全性与 SBOM](docs/guides/security.md) ·
[性能](docs/guides/performance.md)
- **参考** — 完整且详尽无遗:
[命令与参数标志](docs/reference/commands.md) ·
[输出格式](docs/reference/output-formats.md) ·
[每项分析检查的内容](docs/reference/analysis.md) ·
[查询引擎](docs/reference/engine.md) ·
[配置](docs/reference/configuration.md) ·
[缓存](docs/reference/caching.md) ·
[事实与 Schema](docs/reference/facts.md)
[文档索引](docs/README.md) 在一处列出了所有内容,而[路线图](docs/ROADMAP.md) 则涵盖了已计划的内容。
## 贡献与安全
[CONTRIBUTING.md](CONTRIBUTING.md) 介绍了架构、crate 映射,以及如何构建、检查和扩展 InterMed。要报告漏洞,请参阅 [SECURITY.md](SECURITY.md)。
## 许可证
参见 [LICENSE](LICENSE)。
标签:Minecraft, SARIF, 云安全监控, 可视化界面, 模组管理, 通知系统, 静态分析