mudislandkid/mettle
GitHub: mudislandkid/mettle
面向 AI 编码时代的跨项目分流看板,提供精确代码行数统计、密钥与许可证扫描、健康度评分及跨项目摘要,帮助开发者快速掌握多仓库的真实状态。
Stars: 0 | Forks: 0
# Mettle
。如果希望通过 CLI 进行单次运行,请执行:
```
mettle scan /path/to/your/project # full single-project analysis
mettle batch /path/to/your/projects/ # cross-project batch
mettle digest --since 7d --top 5 --format md # what changed in the last week
mettle check . --fail-on file-lines-over=500 # CI/pre-commit mode
```
运行任何子命令时附带 `--help` 可查看相关参数。
## 功能
- **约 28 种语言,对前 6 种语言提供深度结构分析。** Python(AST 级别,提供每个函数的 McCabe 复杂度)、JS/TS、HTML、CSS、C 风格、shell。其他语言也能获得精确的代码行数及语言归因。将新的分析器放入 `mettle/analyzers/` 即可实现自动注册。
- **真实可靠的指标。** 空行、注释行和代码行的总和始终与总行数一致。不会把 `if (x) {}` 算作一个函数。也不会错误匹配字符串内的 `//`。
- **跨项目摘要。** 包含七个排序部分:增长最多、最大的健康度波动、依赖漂移、带有 TODO 的停滞项目、近期新增停滞、窗口期内新增、近期无活动。支持 Markdown / JSON / 实时 Web UI 格式。
[](https://github.com/mudislandkid/mettle/releases/latest)
[](LICENSE)
[](https://github.com/mudislandkid/mettle/actions/workflows/ci.yml)
[](pyproject.toml)
**一款面向 AI 编程时代的分流看板。**
真实可靠的代码行数统计、密钥与许可证扫描、健康度评分,以及跨项目摘要——清晰展示您的整个项目组合中究竟发生了哪些变动。
[**下载 macOS 版**](https://github.com/mudislandkid/mettle/releases/latest/download/Mettle-aarch64-apple-darwin.dmg) · [版本发布](https://github.com/mudislandkid/mettle/releases) · [问题反馈](https://github.com/mudislandkid/mettle/issues)

## 为什么选择 Mettle?
如果您经常使用 AI 助手编写代码,仓库的增长速度将远超您对它们的认知。Mettle 正是为这样的时代而生的分流看板。
只需将其指向一个包含多个项目的目录,它就能为您提供:
- **真实可靠的代码行数统计。** 空行、注释行和代码行的总和始终与总行数一致——不会把 `if (x) {}` 算作一个函数,也不会错误匹配字符串中的 `//`。
- **跨项目摘要** —— 一份涵盖您整个项目组合的报告。哪些项目增长最多、最大的健康度波动、依赖漂移、带有未完成 TODO 但已停滞、以及近期无任何活动。
- **密钥与许可证扫描。** 提供逐文件上下文与严重程度检测,对 `LICENSE` 文件进行 SPDX 检测,并标记缺少许可证的项目。
- **逐项目的健康度评分。** 0-100 的综合得分,由注释率、测试率、提交时效性、TODO 密度等组成——并提供各组成部分的细分数据。
- **原生 macOS 应用**,包含三个核心页面:摘要、分析和历史记录。如果您愿意,也可以选择自行托管的 Web 版本。
完全自行托管,无任何遥测数据收集,采用单二进制文件后端。
## 快速开始
### 桌面版(推荐)
1. [下载 .dmg](https://github.com/mudislandkid/mettle/releases/latest/download/Mettle-aarch64-apple-darwin.dmg)(约 36 MB,Apple Silicon,已签名 + 公证)
2. 打开它,将 **Mettle** 拖入 **Applications(应用程序)**
3. 启动。首次打开约需 5-7 秒,以便启动内置的后端
4. 点击 **Analyze(分析)**,选择一个仓库或父文件夹,然后开始运行
每次启动都会通过内置更新程序进行自动更新。
### 自托管 Web 版
```
git clone https://github.com/mudislandkid/mettle.git
cd mettle
python3.12 -m venv .venv && source .venv/bin/activate
pip install -e ".[web]"
mettle web # dev mode: API on :8000, Vite on :5173
```
打开

- **密钥与 SPDX 许可证扫描。** 提供逐文件上下文与严重程度。对 `LICENSE` / `COPYING` 文件进行 SPDX 检测。标记缺少许可证的项目。
- **三个核心 Web 页面。** 分析(包含从 Empty(空) → Running(运行中) → Results(结果)的状态机)、历史(热力图 + 项目组合亮点)、摘要(即上文的跨项目视图)。
- **批量 CLI**,用于分析项目文件夹,支持 `--github-user`、`--skip-public-sdks`、文件数量上限以及限定深度的发现功能。
- **CI / pre-commit 模式。** `mettle check . --fail-on file-lines-over=500` —— 非交互式运行,当违反阈值限制时以非零状态码退出。
有关按语言、按指标和按页面的详细分类,请参阅 [docs/REFERENCE.md](docs/REFERENCE.md)。
## 架构
```
┌─────────────────┐ spawns ┌────────────────────┐
│ Tauri shell │ ─────────────> │ PyInstaller │
│ (Rust, ~6 MB) │ <─ port+token │ FastAPI sidecar │
│ + WebView │ <── HTTP ────> │ + SQLite (WAL) │
└─────────────────┘ └────────────────────┘
│
└── loads bundled Vue 3 dist (Vite, TypeScript, Tailwind)
```
- **Tauri 外壳** 在一个随机的 localhost 端口上生成由 PyInstaller 打包的 FastAPI sidecar,并通过 stdout 握手机制获取端口和 token。
- **Vue 前端**(打包在 .app 内)通过 HTTP 调用 sidecar;进度数据通过 WebSocket 以自动重连和指数退避算法进行流式传输。
- **内置更新程序** 利用嵌入式公钥验证 Ed25519 签名,从 GitHub Releases 下载数据,替换本地程序包并重新启动。
- **CI** 使用 Apple Developer ID 对每个可执行文件进行签名,并在标记发布版本之前提交至 Apple 的公证服务。
完整架构(DB schema、API endpoint、安全模型、签名 pipeline):请参阅 [docs/DESKTOP.md](docs/DESKTOP.md) 和 [docs/REFERENCE.md](docs/REFERENCE.md)。
## 安全性
请勿通过公开 issue 报告漏洞——有关私密披露渠道,请参阅 [SECURITY.md](SECURITY.md)。
## 许可证
[Apache-2.0](LICENSE)。
## 鸣谢
本项目基于 FastAPI、SQLModel、Vue、Vite、Tauri、ECharts、ruff 以及更广泛的开源生态系统构建。灵感来源于每一位曾面对一堆半途而废的副业项目发呆,并思考该重新捡起哪一个的开发者。标签:Linux 内核安全, Python, 代码分析, 凭证管理, 可视化界面, 威胁情报, 开发者工具, 无后门, 漏洞挖掘, 逆向工具, 项目管理