工具注册表管理器 —— 管理基于 Git 注册表的开发者工具链,构建在 mise 之上。
kit 跨多个注册表解析工具版本,生成 mise 配置,根据发布者发布产物验证 SHA-256 校验和,在发布者签署裸二进制文件时验证 cosign 签名,并通过三流水线 CI 架构自动化上游更新跟踪。
如果你还没有 Rust,最快的方式是通过 mise:
mise use --global rust
cargo install nomograph-kit
或者使用 rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
cargo install nomograph-kit
二进制文件名为 kit。
kit setup --registry https://gitlab.com/your/registry.git
kit sync
kit status
注册表是一个 Git 仓库,包含每个工具的 TOML 定义:
tools/
_meta.toml # 注册表元数据 + 合并策略
gh.toml # 每个工具一个文件
muxr.toml
...
每个工具定义是独立的:
[tool]
name = "gh"
source = "github"
repo = "cli/cli"
version = "2.89.0"
tag_prefix = "v"
bin = "gh"
tier = "high"
aqua = "cli/cli"
[tool.assets]
macos-arm64 = "gh_{version}_macOS_arm64.zip"
linux-x64 = "gh_{version}_linux_amd64.tar.gz"
[tool.checksum]
file = "gh_{version}_checksums.txt"
format = "sha256"
[tool.signature]
method = "github-attestation"
来源:github、gitlab、npm、crates、direct、rustup、brew
brew 来源将安装委托给 mise 的 brew: 后端(CI 中不需要本地 brew CLI)。kit 通过 formulae.brew.sh API 跟踪版本,并在 mise.toml 中生成 name = "brew:<formula>@<version>" 条目。
智能的 kit add 查询上游并自动填充:
kit add jq jqlang/jq # GitHub
kit add muxr nomograph/muxr --gitlab # GitLab(解析 project_id)
kit add claude-code --npm @anthropic-ai/claude-code
kit add cargo-nextest --crates
kit add chafa --brew # Homebrew 公式(公式名称默认为工具名)
kit add go121 --brew [email protected] # Homebrew 公式,指定显式公式名
每个工具都有一个层级,控制合并策略:
| 层级 | 含义 | 典型策略 |
|---|---|---|
| own | 你自己构建和发布的工具 | 自动合并所有版本提升 |
| high | 关键的第三方工具 | 人工审查 |
| low | 通用工具 | 自动合并补丁/次版本 |
层级在每个工具的 TOML 定义中设置。注册表的 _meta.toml 定义了哪些层级自动合并:
[policy]
auto_merge_tiers = ["own", "low"]
auto_merge_bump = ["patch", "minor"]
auto_merge_requires_checksum = true
在 ~/.config/kit/config.toml 中配置多个注册表。当工具重叠时,第一个注册表优先。本地固定覆盖。
[[registry]]
name = "nomograph"
url = "https://gitlab.com/nomograph/kits.git"
[[registry]]
name = "personal"
url = "https://gitlab.com/you/kits.git"
按信任边界分开注册表。例如,将自己的工具放在一个注册表,第三方工具放在另一个注册表。每个注册表有自己的流水线、合并策略和更新节奏。
kit 通过从工作目录向上查找发现 kit.toml。找到后,工具作用域限定于该项目:
kit.toml 旁边的 .kit.lock(提交到 git)# kit:begin / # kit:end 标记合并的 .mise.tomlkit 通过 kit-registry CI 组件提供三流水线供应链架构:
include:
- component: gitlab.com/nomograph/pipeline/kit-registry@v3
inputs:
kit_version: "0.10.1"
mr_assignee: "andunn"
kit sense 查询上游发布,下载资产,验证校验和,并检查安全公告数据库。按风险(版本提升级别、层级、校验和状态)对每个发现项进行分类。版本漂移不会导致失败——漂移正是它要检测的。
kit evaluate 应用确定性规则(自动批准干净的补丁,拒绝校验和不匹配)并可选择在边缘情况(重大版本提升、缺失校验和、公告)下调用 LLM。
kit apply 更新磁盘上的工具 TOML 文件,并根据自动合并资格将更新分成两组:
CI 组件为每组创建单独的分支和合并请求。自动合并的 MR 在验证流水线通过后自行合并。审查 MR 保持打开状态供人工审查。
kit verify-registry 重新验证所有工具定义并重新验证校验和。在每个 MR 上作为合并门禁运行。
kit 在验证路径上实际执行的操作:
kit 不执行的操作:带外校验和验证(校验和与资产从同一发布中获取)、归档内容签名验证、或替代自动合并层级的人工审查。
kit 已退役,被 mise(jdx/mise)取代。工具固定现在位于版本控制的 mise.toml + 已提交的 mise.lock(每个平台的 sha256 + 出处):位于 dunn.dev/harness 的机器基线,每个环境的配置(例如 nomograph/keaton)。更新通过 Renovate(为 gitlab: 后端提供 customManager)+ 对 mise.lock 差异的 CI 出处审计流动——在稳定主机上实现 kit 的已验证安装器 + 自动提升意图。迁移记录:nomograph/keaton -> campaigns/harness/sessions/baseline.md (2026-06-16)。
MIT —— Nomograph
| 命令 | 描述 |
|---|
kit setup | 一次性配置,可选添加一个注册表 |
kit sync | 拉取注册表,解析,生成 mise 配置,安装 |
kit status | 已安装工具与注册表对比,漂移检测,验证强度 |
kit diff | 显示锁定文件与注册表之间的变更 |
kit upgrade | 交互式工具更新工作流 |
kit verify | 重新验证所有已安装的二进制文件(始终校验和;仅对裸二进制资产进行 cosign 验证) |
kit audit | 检查工具是否有已知安全公告 |
kit add <name> <source> | 查询上游,生成工具定义 |
kit push <name> | 提交并推送一个工具定义 |
kit remove <name> | 从可写注册表中移除一个工具 |
kit pin <name> <version> | 在本地固定一个工具的版本 |
kit unpin <name> | 移除本地固定 |
kit sense | 检测上游变更,按风险分类(CI) |
kit evaluate | 基于规则 + LLM 审查发现项(CI) |
kit apply | 更新 TOML 文件,根据自动合并资格分区更新(CI) |
kit verify-registry | 合并前验证所有工具定义(CI) |
kit init [--ci] | 脚手架一个新注册表 |
kit completions <shell> | Shell 补全(bash/zsh/fish) |
kit man-page | 生成 man 页面 |