Raed2180416/holt
GitHub: Raed2180416/holt
holt 是一款 git worktree 内容管理与安全防护工具,专为多 AI agent 并行工作场景设计,防止误删尚未提交的唯一工作成果。
Stars: 0 | Forks: 0
# 🌳 holt
### 了解你的 agent 制作了什么,并且绝不丢失任何成果
**你一晚上运行了十几个 agent。holt 会告诉你每个 agent 实际上做了什么,哪些发生了
冲突,哪些可以安全删除——并且它会阻止 agent 删除在其他地方根本不存在的成果。** [](https://github.com/raed2180416/holt/actions/workflows/ci.yml) [](#the-test-suite-attacks-itself) [](#built-on-proven-oss) [](LICENSE.md) [](https://raed2180416.github.io/holt/) ``` npm install -g https://github.com/Raed2180416/holt/releases/download/v0.2.0/holt-0.2.0.tgz ``` 一条命令,无需 clone,无需 build——在干净的 Ubuntu container 中已验证。目前尚未上传至 npm registry,因此 `npm install -g holt` 将随 v1 版本推出;上面的发布版 tarball 是当前可用的途径。 ` 区域)。 - **MCP** —— 包含在各个宿主实际会读取的 schema 中的 14 个工具(支持三种配置形态,均已在线验证)。诊断工具标注为只读;`holt_clean` 诚实地标明 `destructiveHint: true`。 - **Hooks** —— Claude Code PreToolUse 拒绝 + OpenCode 插件(抛出异常以阻止,如果 holt 出错则会*大声地*抛出失败提示)+ 作为最后底线的 git pre-commit 警告。 - 默认限定在项目范围内。永远不会触碰或创建你的 `~/.config`。 ### 诚实的覆盖范围——运行 `holt hosts` 查看每个 agent 的具体情况 holt 了解大约 20 种 agent 宿主,并确切地告诉你每一种能获得何种保护,因为宣称“到处都能运行”其实是在撒谎: - **确定性阻断(破坏性命令在运行前被拒绝):** Claude Code 和 OpenCode 已经过*在线验证*——holt 被驱动针对真实宿主运行并观察到拒绝操作。**Cursor** 现在也能进行阻断,通过写入 `.cursor/hooks.json` 并使用 Cursor 自己发布的 `beforeShellExecution` schema;该适配器是基于文档编写的,而不是在线驱动测试的,`holt hosts` 也如实说明了这一点,而不是让它借用已验证功能的信誉。Codex, Gemini, Cline, Copilot, Crush, Amp, Factory 和 Junie *支持*拒绝 hook,目前能获得 MCP + 咨询建议——holt 依然没有为它们任何之一发布猜测性的 hook 格式,因为一个错误的 hook 比没有 hook 更糟糕。 - **MCP + 咨询:** 任何兼容 MCP 的 agent 都能调用 holt 的工具并读取其 AGENTS.md 指南。 - **通用底线完全不需要宿主:** git 自带的 worktree lock 会拒绝任何尝试使用 `--force` 的人,而无论写入了什么 diff,git pre-commit hook 都会触发。 - **云端/临时 agent(Google Jules, Replit Agent, Devin cloud)——坦诚地说:** worktree lock 在那里**不**适用(没有本地 worktree),因此 holt 只能通过咨询性的 AGENTS.md 来影响它们。参见 [HOSTS.md](HOSTS.md)。 ## 基于成熟的开源软件构建 Holt 是将各种现成的仪器组合起来,而不是重新发明它们:[universal-ctags](https://github.com/universal-ctags/ctags)(符号解析,支持 164 种语言——外加一个经过测试的 optlib 扩展包,用于弥补缺失的 12 种:Swift, Scala, Dart, Groovy, Solidity, Zig, Nim, Crystal, F#, Prolog, Dockerfile, GraphQL),[enry](https://github.com/go-enry/go-enry)(基于内容的语言检测:根据文件中的实际内容将 `.fs` 解析为 F# *或* Forth),[jscpd](https://github.com/kucherenko/jscpd)(token 级别的克隆检测),`git merge-tree`(*正确的*已提交差异检测工具——`git diff base...head` 会过度报告,而 holt 的测试套件证明了这种差异),以及作为一等公民后端的 [jj](https://github.com/jj-vcs/jj)(从 workspace 存储中解析工作区,并证明扫描不会触及 op-log)。 每一个可选依赖项在缺失时都会**发出明确警告**:`holt doctor` 会确切显示当前存在什么,以及缺少它会带来什么代价。 ## 测试套件向自己开火 451 个测试,其中最有趣的是那些充满敌意的测试: - **39/39 个故意植入的缺陷被消灭。** `test/mutation.mjs` 蓄意破坏了高风险行为——safeToDelete 对所有内容都返回 true,git 白名单允许一切操作,rescue 跳过验证,clean 基于陈旧的判定进行删除——并要求测试套件变红(失败)。它的首次运行发现了**两个真正的漏洞**(12个中发现了10个);现在这两个漏洞都已被基于真实机制构建的测试所消灭,并且它会在 CI 中运行。变异测试是在**仓库的一次性副本中运行的,绝不会触碰活跃的代码树**,并且在每次变异后都会通过触发器对活跃仓库进行指纹校验——因为有一次变异(被打开的白名单)曾把一个拒绝断言测试变成了活生生的 `git reset --hard`。现在,破坏性操作也会被分类器中结构独立的“第一道门”拒绝,因此没有任何单一缺陷能够同时打开这两层防御。 - **14 个攻击场景**,旨在逼迫系统产生那灾难性的输出——即在并不安全时输出“可以安全删除”:仅删除 commit、重命名、回退、扫描中途变异、陈旧缓存授权、工作内容刚好在两个 worktree 中重复、在 12 个充满干扰项的同类中发生一行代码的改动、七个伪装的破坏命令。全部被成功抵御。 - **CLI 作为二进制文件接受测试**,因为曾经有段时间 169 个测试通过了,而 `holt protect` 却打印出了“unknown command”——因为每个测试都直接调用了函数,而调度器根本没起作用。现在每个命令都强制断言了退出码;这是相互链接的脚本所依赖的契约。 - **评估程序会自我监督。** 它拒绝为 agent 从未运行过的测试打分(曾经有一次额度耗尽的运行,从什么都没做的 agent 那里捏造出了“+17 分”——该场景现在已成了永久的回归测试),并且证明了在 agent 尝试找到答案并抄袭之后,答案密钥在测试仓库中已是无法访问的。 - 逐字节证明了扫描不会修改任何内容;证明了 jj op-log 保持不变;只读与 MUTATE 模式分离,未经明确同意无法进行变异——即使*带有同意*,也会拒绝 `reset --hard`、`push`、`stash`。 在这个项目中,有五次本意是用来检测问题的工具本身并没有接受测试——ctags 的一个 flag 静默地丢弃了符号,捏造的评估结果,一个检查了错误路径的评分器,泄露的答案密钥,以及变异测试工具本身在针对活跃仓库执行它所模拟的缺陷。现在,每一次这样的情况都变成了一个命名的回归测试或永久的触发器。这段历史就是测试套件呈现如今这般模样的原因。 ## 已验证与尚未验证之处 这里没有任何虚幻的愿景。这张表准确说明了哪些已经被演练过,哪些还没有,因为一个你无法兑现的声明比坦承存在的缺陷更糟糕。 **已在真实机器上端到端验证** | 面 | 如何被验证的 | |---|---| | 核心扫描、安全机制、操作动作、CLI | 451 个测试 + 39/39 故意植入缺陷的变异测试被消灭,在每次 commit 时运行 | | Linux / macOS / Windows 核心 | CI 矩阵在所有这三个平台上运行了安全分类器、检测机制、CLI二进制文件测试、操作动作以及不变性模糊测试 | | Claude Code hook | 实时验证:hook 返回了 `deny` 并指出了存在风险的符号,退出码 1 | | OpenCode | 实时验证:`opencode debug config` 解析了 holt 的配置并注册了 MCP server | | MCP protocol | 通过真实的 stdio 实时验证:initialize → 14 个工具 → `tools/call` 返回正确的数据 | | Crush, Cursor, Gemini CLI, VS Code/Copilot MCP config | 由 `holt integrate` 编写,并验证其 JSON 格式正确,符合各宿主读取的形态 | | 语言提取 | 50 种语言通过符号名称进行断言;该数量现在是从*已安装的* ctags 中派生出来的,绝不是盲目标注的 | | 购买路径 | 基于真实 socket 的 12 项测试:签名的 webhook → 许可证 → CLI 接受它;伪造的 webhook 无法生成任何内容 | **理论上应该可行,但我们尚未验证**——在得到验证之前,请将其视为未经证实的: | 面 | 为什么它应该可行 | 尚未证实的是什么 | |---|---|---| | Codex, Copilot CLI, Cline, Amp, Goose, Factory, Junie | 它们能读取 AGENTS.md 和/或支持 MCP,holt 都能正确生成这两者 | 我们尚未针对每个宿主进行实时驱动测试;它们的*拒绝 hook* 尚未连接(见 [HOSTS.md](HOSTS.md)) | | jj (Jujutsu) backend | 已实现,并针对真实的 jj 仓库进行了单元测试 | 尚未在长时间的多 workspace 会话中进行测试 | | Windows *端到端* agent 流程 | 核心套件已在 CI 中的 Windows 上通过 | 我们尚未对 Windows agent 宿主下的 Hooks + MCP 进行测试 | | 超大型仓库(10k+ 个文件,200+ 个 worktree) | 扫描是线性且有边界的;通过人工合成方式测量了多达 1000 个 worktree | 尚未在如此大规模的真实仓库中进行测量 | | git-LFS, submodules, sparse-checkout | holt 读取的是 git 自身的输出,而 git 能够处理这些情况 | 目前还没有专门的测试夹具 | **在 jj 上的不同之处**——在你决定在 jj 上使用它之前值得了解一下:Jujutsu 会自动对工作副本进行快照,因此“仅作为未提交更改存在的工作”在很大程度上不再是一个单独的类别。holt 的旗舰价值——*你即将失去什么*——因此主要是一个专属于 **git** 的价值。在 jj 上,剩余的价值在于重复检测、碰撞、落地顺序和减轻审查负担:这仍然是一个真正的产品,但定位不同,我们宁愿如实相告,也不愿让你自己去发现这一点。 **已知不适用的范围:** 云端/临时 agent 没有本地 worktree,因此该锁无法触及它们——每个宿主的详细信息在 [HOSTS.md](HOSTS.md) 中。被 gitignore 的文件对 git 是不可见的,因此对 holt 也是不可见的。 ## 诚实的边界 - **P4 在总体上仍未解决。** `verify` 通过经验判定一个*特定可疑的配对*;它不证明整体的兼容性,这一点已通过测试断言。 - **1000+ 个 worktree 的规模尚未在真实仓库中进行测量**——公布的数据来自于一个生成的测试夹具。 ## 快速开始 ``` $ npm install -g https://github.com/Raed2180416/holt/releases/download/v0.2.0/holt-0.2.0.tgz $ cd your-repo $ holt status # the decision surface — 1–2 s $ holt protect # lock what would be lost $ holt integrate # wire your agents $ holt clean --apply # reclaim everything that provably holds nothing ``` ## 对每一位开发者免费。永久免费。 上述所有内容——扫描器、安全网、MCP server、TUI、CI gate——在 [FSL-1.1-MIT](LICENSE.md) 许可下都是免费的,包括商业生产环境使用,并且在每次发布两年后将直接转变为纯 MIT 许可证。你唯一不能做的一件事就是销售一个以 *holt* 为卖点的产品。你可以使用它;但不要成为它。 团队付费是为了跨越多个仓库**运行该系统,并附带规则和操作记录**——其定价依据是真正承担风险的事物(处于并行 agent 操作下的仓库),而不是按人数收费: | | 免费 | 团队版 —— **按活跃仓库月计费,开发者人数不限** | 企业版 | |---|---|---|---| | 所有命令、所有语言、MCP、hooks、TUI | ✓ | ✓ | ✓ | | 针对单个仓库的 CI gate | ✓ | ✓ | ✓ | | 策略即代码 (`.holt/policy.json`) | | ✓ | ✓ | | 跨越所有仓库的全局视图 | | ✓ | ✓ | | 审计追踪 —— `holt journal`,JSON/CSV 导出 | ✓ | ✓ | ✓ | | *即将推出:* webhook sink,SSO / SAML / SCIM,自托管与物理隔离网络许可,SLA | — | — | — | **为什么按仓库而不是按席位收费:** 你面临的风险随着有多少个仓库被 agent 扩展为 worktree 而增加,而不是随着你雇佣了多少人而增加。一个运行着 40 个 agent-仓库的 3 人开发团队所承担的冲突风险,远大于一个只有 5 个安静仓库的 50 人开发团队——如果按席位收费,反而对他们不利。开发者人数不限,没有最低席位要求,预付一年可享折扣。 **你的数据永远不会离开你的机器——在*任何*层级上,包括付费层级。** 全局视图是在*你的*机器上扫描*你的*仓库;审计导出会生成一个由*你*控制的文件(或者 POST 到一个由*你*配置的 webhook)。没有任何托管形式的 holt dashboard 会接收你的代码,没有遥测数据,也没有任何许可证签入验证——Team 密钥是一个由 Ed25519 签名的 token,你只需激活一次(`holt license activate`),或者在 CI 中设置为 `HOLT_LICENSE`,完全在离线状态下进行验证。如果订阅到期,付费功能将继续工作 14 天的宽限期,而不是直接破坏你的 pipeline,并且免费功能永远不会停止。这里没有“停止开关”,因为停止开关要求该工具必须与外部通信。
[定价和详细信息 →](https://raed2180416.github.io/holt/#pricing)
## License
holt 采用 **[FSL-1.1-MIT](LICENSE.md)**(Functional Source License,即 Sentry 所使用的许可证):
- **对所有人免费** —— 包括个人和公司,包括在任何代码库中的**生产环境使用**,无论是商业用途还是非商业用途。
- **唯一不能做的事情:** 发布一个商业产品或服务,且其卖点*本身是* holt —— 作为 holt 的替代品,或者提供与其基本相同功能的东西。
你可以使用它;但不要*成为*它。
- **每次发布在推出两年后会自动成为纯 MIT 许可证。** 绝无出尔反尔的断供风险。
**holt™** 是 **Contrare** 的产品。
© 2026 Contrare
冲突,哪些可以安全删除——并且它会阻止 agent 删除在其他地方根本不存在的成果。** [](https://github.com/raed2180416/holt/actions/workflows/ci.yml) [](#the-test-suite-attacks-itself) [](#built-on-proven-oss) [](LICENSE.md) [](https://raed2180416.github.io/holt/) ``` npm install -g https://github.com/Raed2180416/holt/releases/download/v0.2.0/holt-0.2.0.tgz ``` 一条命令,无需 clone,无需 build——在干净的 Ubuntu container 中已验证。目前尚未上传至 npm registry,因此 `npm install -g holt` 将随 v1 版本推出;上面的发布版 tarball 是当前可用的途径。 ` 区域)。 - **MCP** —— 包含在各个宿主实际会读取的 schema 中的 14 个工具(支持三种配置形态,均已在线验证)。诊断工具标注为只读;`holt_clean` 诚实地标明 `destructiveHint: true`。 - **Hooks** —— Claude Code PreToolUse 拒绝 + OpenCode 插件(抛出异常以阻止,如果 holt 出错则会*大声地*抛出失败提示)+ 作为最后底线的 git pre-commit 警告。 - 默认限定在项目范围内。永远不会触碰或创建你的 `~/.config`。 ### 诚实的覆盖范围——运行 `holt hosts` 查看每个 agent 的具体情况 holt 了解大约 20 种 agent 宿主,并确切地告诉你每一种能获得何种保护,因为宣称“到处都能运行”其实是在撒谎: - **确定性阻断(破坏性命令在运行前被拒绝):** Claude Code 和 OpenCode 已经过*在线验证*——holt 被驱动针对真实宿主运行并观察到拒绝操作。**Cursor** 现在也能进行阻断,通过写入 `.cursor/hooks.json` 并使用 Cursor 自己发布的 `beforeShellExecution` schema;该适配器是基于文档编写的,而不是在线驱动测试的,`holt hosts` 也如实说明了这一点,而不是让它借用已验证功能的信誉。Codex, Gemini, Cline, Copilot, Crush, Amp, Factory 和 Junie *支持*拒绝 hook,目前能获得 MCP + 咨询建议——holt 依然没有为它们任何之一发布猜测性的 hook 格式,因为一个错误的 hook 比没有 hook 更糟糕。 - **MCP + 咨询:** 任何兼容 MCP 的 agent 都能调用 holt 的工具并读取其 AGENTS.md 指南。 - **通用底线完全不需要宿主:** git 自带的 worktree lock 会拒绝任何尝试使用 `--force` 的人,而无论写入了什么 diff,git pre-commit hook 都会触发。 - **云端/临时 agent(Google Jules, Replit Agent, Devin cloud)——坦诚地说:** worktree lock 在那里**不**适用(没有本地 worktree),因此 holt 只能通过咨询性的 AGENTS.md 来影响它们。参见 [HOSTS.md](HOSTS.md)。 ## 基于成熟的开源软件构建 Holt 是将各种现成的仪器组合起来,而不是重新发明它们:[universal-ctags](https://github.com/universal-ctags/ctags)(符号解析,支持 164 种语言——外加一个经过测试的 optlib 扩展包,用于弥补缺失的 12 种:Swift, Scala, Dart, Groovy, Solidity, Zig, Nim, Crystal, F#, Prolog, Dockerfile, GraphQL),[enry](https://github.com/go-enry/go-enry)(基于内容的语言检测:根据文件中的实际内容将 `.fs` 解析为 F# *或* Forth),[jscpd](https://github.com/kucherenko/jscpd)(token 级别的克隆检测),`git merge-tree`(*正确的*已提交差异检测工具——`git diff base...head` 会过度报告,而 holt 的测试套件证明了这种差异),以及作为一等公民后端的 [jj](https://github.com/jj-vcs/jj)(从 workspace 存储中解析工作区,并证明扫描不会触及 op-log)。 每一个可选依赖项在缺失时都会**发出明确警告**:`holt doctor` 会确切显示当前存在什么,以及缺少它会带来什么代价。 ## 测试套件向自己开火 451 个测试,其中最有趣的是那些充满敌意的测试: - **39/39 个故意植入的缺陷被消灭。** `test/mutation.mjs` 蓄意破坏了高风险行为——safeToDelete 对所有内容都返回 true,git 白名单允许一切操作,rescue 跳过验证,clean 基于陈旧的判定进行删除——并要求测试套件变红(失败)。它的首次运行发现了**两个真正的漏洞**(12个中发现了10个);现在这两个漏洞都已被基于真实机制构建的测试所消灭,并且它会在 CI 中运行。变异测试是在**仓库的一次性副本中运行的,绝不会触碰活跃的代码树**,并且在每次变异后都会通过触发器对活跃仓库进行指纹校验——因为有一次变异(被打开的白名单)曾把一个拒绝断言测试变成了活生生的 `git reset --hard`。现在,破坏性操作也会被分类器中结构独立的“第一道门”拒绝,因此没有任何单一缺陷能够同时打开这两层防御。 - **14 个攻击场景**,旨在逼迫系统产生那灾难性的输出——即在并不安全时输出“可以安全删除”:仅删除 commit、重命名、回退、扫描中途变异、陈旧缓存授权、工作内容刚好在两个 worktree 中重复、在 12 个充满干扰项的同类中发生一行代码的改动、七个伪装的破坏命令。全部被成功抵御。 - **CLI 作为二进制文件接受测试**,因为曾经有段时间 169 个测试通过了,而 `holt protect` 却打印出了“unknown command”——因为每个测试都直接调用了函数,而调度器根本没起作用。现在每个命令都强制断言了退出码;这是相互链接的脚本所依赖的契约。 - **评估程序会自我监督。** 它拒绝为 agent 从未运行过的测试打分(曾经有一次额度耗尽的运行,从什么都没做的 agent 那里捏造出了“+17 分”——该场景现在已成了永久的回归测试),并且证明了在 agent 尝试找到答案并抄袭之后,答案密钥在测试仓库中已是无法访问的。 - 逐字节证明了扫描不会修改任何内容;证明了 jj op-log 保持不变;只读与 MUTATE 模式分离,未经明确同意无法进行变异——即使*带有同意*,也会拒绝 `reset --hard`、`push`、`stash`。 在这个项目中,有五次本意是用来检测问题的工具本身并没有接受测试——ctags 的一个 flag 静默地丢弃了符号,捏造的评估结果,一个检查了错误路径的评分器,泄露的答案密钥,以及变异测试工具本身在针对活跃仓库执行它所模拟的缺陷。现在,每一次这样的情况都变成了一个命名的回归测试或永久的触发器。这段历史就是测试套件呈现如今这般模样的原因。 ## 已验证与尚未验证之处 这里没有任何虚幻的愿景。这张表准确说明了哪些已经被演练过,哪些还没有,因为一个你无法兑现的声明比坦承存在的缺陷更糟糕。 **已在真实机器上端到端验证** | 面 | 如何被验证的 | |---|---| | 核心扫描、安全机制、操作动作、CLI | 451 个测试 + 39/39 故意植入缺陷的变异测试被消灭,在每次 commit 时运行 | | Linux / macOS / Windows 核心 | CI 矩阵在所有这三个平台上运行了安全分类器、检测机制、CLI二进制文件测试、操作动作以及不变性模糊测试 | | Claude Code hook | 实时验证:hook 返回了 `deny` 并指出了存在风险的符号,退出码 1 | | OpenCode | 实时验证:`opencode debug config` 解析了 holt 的配置并注册了 MCP server | | MCP protocol | 通过真实的 stdio 实时验证:initialize → 14 个工具 → `tools/call` 返回正确的数据 | | Crush, Cursor, Gemini CLI, VS Code/Copilot MCP config | 由 `holt integrate` 编写,并验证其 JSON 格式正确,符合各宿主读取的形态 | | 语言提取 | 50 种语言通过符号名称进行断言;该数量现在是从*已安装的* ctags 中派生出来的,绝不是盲目标注的 | | 购买路径 | 基于真实 socket 的 12 项测试:签名的 webhook → 许可证 → CLI 接受它;伪造的 webhook 无法生成任何内容 | **理论上应该可行,但我们尚未验证**——在得到验证之前,请将其视为未经证实的: | 面 | 为什么它应该可行 | 尚未证实的是什么 | |---|---|---| | Codex, Copilot CLI, Cline, Amp, Goose, Factory, Junie | 它们能读取 AGENTS.md 和/或支持 MCP,holt 都能正确生成这两者 | 我们尚未针对每个宿主进行实时驱动测试;它们的*拒绝 hook* 尚未连接(见 [HOSTS.md](HOSTS.md)) | | jj (Jujutsu) backend | 已实现,并针对真实的 jj 仓库进行了单元测试 | 尚未在长时间的多 workspace 会话中进行测试 | | Windows *端到端* agent 流程 | 核心套件已在 CI 中的 Windows 上通过 | 我们尚未对 Windows agent 宿主下的 Hooks + MCP 进行测试 | | 超大型仓库(10k+ 个文件,200+ 个 worktree) | 扫描是线性且有边界的;通过人工合成方式测量了多达 1000 个 worktree | 尚未在如此大规模的真实仓库中进行测量 | | git-LFS, submodules, sparse-checkout | holt 读取的是 git 自身的输出,而 git 能够处理这些情况 | 目前还没有专门的测试夹具 | **在 jj 上的不同之处**——在你决定在 jj 上使用它之前值得了解一下:Jujutsu 会自动对工作副本进行快照,因此“仅作为未提交更改存在的工作”在很大程度上不再是一个单独的类别。holt 的旗舰价值——*你即将失去什么*——因此主要是一个专属于 **git** 的价值。在 jj 上,剩余的价值在于重复检测、碰撞、落地顺序和减轻审查负担:这仍然是一个真正的产品,但定位不同,我们宁愿如实相告,也不愿让你自己去发现这一点。 **已知不适用的范围:** 云端/临时 agent 没有本地 worktree,因此该锁无法触及它们——每个宿主的详细信息在 [HOSTS.md](HOSTS.md) 中。被 gitignore 的文件对 git 是不可见的,因此对 holt 也是不可见的。 ## 诚实的边界 - **P4 在总体上仍未解决。** `verify` 通过经验判定一个*特定可疑的配对*;它不证明整体的兼容性,这一点已通过测试断言。 - **1000+ 个 worktree 的规模尚未在真实仓库中进行测量**——公布的数据来自于一个生成的测试夹具。 ## 快速开始 ``` $ npm install -g https://github.com/Raed2180416/holt/releases/download/v0.2.0/holt-0.2.0.tgz $ cd your-repo $ holt status # the decision surface — 1–2 s $ holt protect # lock what would be lost $ holt integrate # wire your agents $ holt clean --apply # reclaim everything that provably holds nothing ``` ## 对每一位开发者免费。永久免费。 上述所有内容——扫描器、安全网、MCP server、TUI、CI gate——在 [FSL-1.1-MIT](LICENSE.md) 许可下都是免费的,包括商业生产环境使用,并且在每次发布两年后将直接转变为纯 MIT 许可证。你唯一不能做的一件事就是销售一个以 *holt* 为卖点的产品。你可以使用它;但不要成为它。 团队付费是为了跨越多个仓库**运行该系统,并附带规则和操作记录**——其定价依据是真正承担风险的事物(处于并行 agent 操作下的仓库),而不是按人数收费: | | 免费 | 团队版 —— **按活跃仓库月计费,开发者人数不限** | 企业版 | |---|---|---|---| | 所有命令、所有语言、MCP、hooks、TUI | ✓ | ✓ | ✓ | | 针对单个仓库的 CI gate | ✓ | ✓ | ✓ | | 策略即代码 (`.holt/policy.json`) | | ✓ | ✓ | | 跨越所有仓库的全局视图 | | ✓ | ✓ | | 审计追踪 —— `holt journal`,JSON/CSV 导出 | ✓ | ✓ | ✓ | | *即将推出:* webhook sink,SSO / SAML / SCIM,自托管与物理隔离网络许可,SLA | — | — | — | **为什么按仓库而不是按席位收费:** 你面临的风险随着有多少个仓库被 agent 扩展为 worktree 而增加,而不是随着你雇佣了多少人而增加。一个运行着 40 个 agent-仓库的 3 人开发团队所承担的冲突风险,远大于一个只有 5 个安静仓库的 50 人开发团队——如果按席位收费,反而对他们不利。开发者人数不限,没有最低席位要求,预付一年可享折扣。 **你的数据永远不会离开你的机器——在*任何*层级上,包括付费层级。** 全局视图是在*你的*机器上扫描*你的*仓库;审计导出会生成一个由*你*控制的文件(或者 POST 到一个由*你*配置的 webhook)。没有任何托管形式的 holt dashboard 会接收你的代码,没有遥测数据,也没有任何许可证签入验证——Team 密钥是一个由 Ed25519 签名的 token,你只需激活一次(`holt license activate
标签:AI代理, Git Worktree, MITM代理, SOC Prime, 开发工具, 文件管理, 暗色界面, 网络安全研究, 自定义脚本