Initial release v0.1.0

This commit is contained in:
Lihatoo 2026-08-21 18:34:18 +08:00
commit b997bd6078
62 changed files with 56224 additions and 0 deletions

96
docs/core-package.md Normal file
View file

@ -0,0 +1,96 @@
# TZ Core Package v1
本规范定义 TZ 如何发现、校验和调用本地代理内核。core 包包含运行契约、二进制和该 core 固定的只读运行资源,不包含 profile、用户配置、secret、日志、PID 或缓存。
## 目录结构
稳定槽位名推荐使用 `mihomo``sing-box`
```text
<data_dir>/cores/
└── mihomo/
├── core.toml
├── mihomo
├── Country.mmdb # Mihomo GEOIP 规则数据库
├── GeoSite.dat # Mihomo GEOSITE 规则数据库
├── LICENSE # 可选
├── NOTICE # 可选
└── README.md # 可选TZ 不解析
```
目录名必须与 `core.name` 完全一致。完整版本保存在 `core.version`;需要多版本并存时使用完整槽位名,例如 `mihomo-1.19.14`
Mihomo 标准包固定携带 `Country.mmdb``GeoSite.dat`。生成配置实际引用 GEOIP/GEOSITE 时TZ 才把缺失资源复制到 `state/runtime/<core>/`;用户无需逐个 profile 手工下载。自制 Mihomo core 包也应携带这两个文件,否则 TZ 会在 build/check 阶段给出明确提示。
## Manifest
```toml
schema_version = 1
[core]
name = "mihomo"
family = "clash"
version = "1.19.18"
binary = "mihomo"
os = "linux"
arch = "x86_64"
[runtime]
entrypoint = "config.yaml"
format = "yaml"
[capabilities.config]
mixed_proxy = true
http_proxy = true
socks_proxy = true
api = true
dns = true
tun = true
[commands.start]
args = ["-d", "{workdir}", "-f", "{config}"]
[commands.check]
args = ["-t", "-d", "{workdir}", "-f", "{config}"]
[commands.version]
args = ["-v"]
```
字段约束:
- schema 当前仅支持 `1`,未知字段会被拒绝。
- name 只允许 ASCII 字母、数字、点、下划线和连字符。
- family/format 当前只允许 `clash/yaml``sing-box/json`
- os/arch 必须等于当前运行平台的 Rust target 常量。
- binary 与 entrypoint 必须是单个相对文件名,禁止绝对路径和 `..`
- binary 必须是普通可执行文件。
- start 必填check、version、reload 可选。命令存在即表示支持对应动作。
- 参数只支持 `{config}``{workdir}`TZ 直接执行 binary不经过 shell。
## 安装方式
手工复制是标准方式,无注册数据库:
```bash
cp -a ./mihomo <data_dir>/cores/mihomo
chmod +x <data_dir>/cores/mihomo/mihomo
tz core list
```
本地便捷导入:
```bash
tz core add ./mihomo
tz core info mihomo
tz core use mihomo
tz core remove mihomo
```
`core add` 只接收本地目录,不接收 URL。它会拒绝符号链接和特殊文件复制到 staging重新校验后原子移动重名直接拒绝。成功后不自动选择或启动。
`core remove` 在受管进程运行时拒绝。服务停止时可以删除当前 core并原子清空 current同时清理同名 generated/runtime 派生目录。
## 网络分发
网络下载不属于 `core add`。未来 `core install` 必须使用可信 registry 提供的外部 SHA256且 URL 只能是 HTTP/HTTPS请求和每次重定向前必须拒绝 localhost、环回、私有和保留地址。