DeadBolt 发布 v1.0.3:为智能体工具调用提供本地执行闸门
Show HN: DeadBolt – a local execution gate for agent tool calls
DeadBolt 发布 v1.0.3,为软件智能体的工具调用提供本地执行闸门,把闸门放在执行动作的代码处,由策略与操作员控制决定该动作是否运行。
面向软件代理的本地执行门禁。将 DeadBolt 放入执行操作的代码中,然后由策略和操作员控制决定该操作是否运行。可将其嵌入 Rust,从其他语言调用其本地 sidecar,或包装受信任的 stdio MCP 服务器。在 Apache-2.0 下免费使用。
在连接代理之前先试用
无需模型账户、API 密钥、Harness、云服务或数据库服务器。已发布的 v1.0.3 版本提供适用于 Linux x86_64、Windows x86_64、Apple Silicon 和 Intel Mac 的原生 ZIP 包。验证并解压匹配的归档文件。在 macOS/Linux 上,从其解压目录中:
chmod 0755 deadbolt ./deadbolt drill python3 examples/evaluate.py --binary ./deadbolt
在 Windows 上,使用 .\deadbolt.exe drill 和
python examples/evaluate.py --binary .\deadbolt.exe。
预期:deadbolt drill ok,然后是一个包含 "passed": true 的 JSON 报告。
评估会启动一个私有 sidecar,写入无害的临时文件,检查策略、审批、终止和中断是否阻止效果,并在之后进行清理。
唯一需要的额外运行时是 Python 3.9+。了解报告。
选择你的集成方式
| 你的执行器 | 最小集成 | 从这里开始 |
|---|---|---|
| Rust 应用 | 一个依赖、一个嵌入式存储,以及在分发时的一次检查 | Rust |
| Python 应用 | 本地 sidecar 和围绕实际函数的 dispatch |
Python |
| OpenAI Agents SDK 函数工具 | 本地 sidecar 和每个受保护函数上的 @protected_tool |
SDK 适配器 |
| Node 或其他语言 | 本地 sidecar;捆绑的 Node 客户端或 HTTP 协议 | Sidecar |
| 受信任的 stdio MCP 服务器 | 将其启动命令替换为 deadbolt mcp-proxy … -- SERVER |
MCP |
在复制示例之前选择版本:
| 现已可用 | 已包含 |
|---|---|
| 已发布的 v1.0.3 | 原生可执行文件、嵌入式 Rust、本地 HTTP、源码 Python/Node 客户端、stdio MCP、租约、策略、宽泛的一次性审批、终止和证据 |
| 1.1.0-rc.1 预发布版 | 以上所有内容,外加回调分发辅助工具、可安装的 Python wheel/源码包、可选的 SDK 装饰器、单代理准入凭证和精确操作审批 |
v1.1.0-rc.1 预发布版包含原生下载和 Python wheel。它用于在稳定版发布前进行开发者评估。 它们不在 v1.0.3 下载中。安装预发布版,或使用标记为 v1.0.3 的稳定示例。Rust crate 和 Python 客户端均未发布到包注册表;Node 是捆绑的源码客户端。
将门禁放在效果处
你受信任的执行器首先创建运行并配置策略。在安装候选 Python 客户端并配置其 sidecar 后:
from pathlib import Path from deadbolt_client import dispatch outcome = dispatch( "executor-run-001", "write_file", lambda: Path("output.txt").write_text("allowed work"), ) if not outcome["executed"]: print("Action blocked:", outcome["decision"]["code"])
在回调之前会进行一次新的准入。拒绝会使函数体不被调用。 完整设置涵盖运行创建、策略、凭证、传输和错误处理。包装每个受保护的路由;切勿缓存允许结果,也不要在一次性分发辅助工具之前单独执行准入。
你可以构建的控制措施
- 工具允许列表、目标令牌、报告支出上限、暂停和剪辑。
- 租约默认具有 60 秒的滑动 TTL;被终止的 ID 保持终止状态。
- 操作员终止会阻止某个 ID 及其注册后代后续的操作。
- 对分类为不可逆工具进行宽泛的一次性审批;候选版本增加了对精确参数的审查,包括收件人/正文/金额。
- 候选版准入凭证允许一个分发器为其运行请求许可,而无需接收操作员控制。
- SQLite 证据、JSONL 镜像和按代理的事件导出。
- 当存储不可用时默认拒绝;捆绑客户端在传输失败、响应格式错误和 HTTP 状态不成功时拒绝。
未设置策略列表时为开放。在派发前配置每次运行和子进程。身份、工具路由、目的地和报告支出来自受信任的应用程序代码。它们不是网络拦截或独立计费。
了解边界
DeadBolt 保护通过你的执行器路由的操作。操作者拥有状态、策略和审批;模型不得接收这些控制。它不隔离任意代码、不停止模型提供方、不取消正在运行的执行体,也不使外部效果与准入具有事务性。MCP 子进程是受信任的,并具有操作系统访问权限;启动和非工具类 MCP 方法不在工具调用门控范围内。
证据哈希标识内容,但操作者可写的记录不是合规认证。部署前请阅读信任边界。使用试点检查清单验证你应用程序的实际路由。
开发者文档
| 需求 | 指南 |
|---|---|
| 首个可用结果 | 快速开始、首次评估 |
| 二进制、crate 或 Python 安装 | 安装 |
| 嵌入、sidecar 或 MCP 接线 | 集成、Python / SDK |
| 最小权限派发和敏感操作 | 凭据、精确审批 |
| API 和升级行为 | HTTP 协议、兼容性 |
| 拒绝或设置问题 | 故障排除、常见问题 |
| 部署、备份和响应 | 运维、事件 |
| 评估或贡献 | 技术简报、Hermes 展示、贡献 |
| 版本和打包 | 变更日志、发布流程、第三方声明 |
源码检查:cargo test --locked、cargo clippy --all-targets --locked -- -D warnings,以及 cargo build --locked --bin deadbolt 之后的 python3 tests/client_contract.py(需要 Python 和 Node)。CI 还会检查 Rust 1.85、已安装的 Python/SDK 行为以及原生包。通过这些检查并不代表你的应用程序已被验收。
报告普通缺陷或使用私密安全报告。版权所有 NextEleven LLC 2026。许可证 · 声明。Harness 只是一个使用者,不是先决条件。
来源:Hacker News · github.com