Bernstein 发布开源 AI Agent 治理层 支持确定性调度与策略即代码
Bernstein v3.23.0 推出基于 Apache 2.0 协议的开源 AI Agent 治理层,采用无模型介入的确定性 Python 调度器实现并行执行。该工具通过“策略即代码”强制执行政策,确保运行记录可验证且计划可字节级重放,并集成了分解、生成、验证、合并四阶段工作流。
报道正文
本文目录12 个章节
v3.23.0 shipping53 cli adapters · apache 2.0 · on-prem
多个 AI Agent。一个治理层。每次运行皆可证明。
Bernstein 是面向 AI Agent 的开源治理层:一个确定性的 Python 调度器并行运行它们,协调循环中不包含任何模型,因此相同的计划可以逐字节完全一致地重放。它基于“策略即代码”(Policy as Code)运行:你编写策略,Bernstein 执行策略,并生成可验证的记录。
·询问文档·基于源代码 + 19 篇帖子·有引用
询问任何问题。
一次运行,四个阶段。
01分解Manager → 任务 · 角色 · 信号02启动Agents → 隔离的工作树03验证Janitor → 测试 · 类型检查 · Lint · 可选的跨模型审查04合并仅已验证的差异会被合并[Aug 10, 2026·4 min read
bernstein 3.14.159: the stranger's ninety minutes
一份首次使用报告描述了长达九十分钟的设置过程,最终却一无所获。v3.14.159 对此做出了回应:计划加载器现在会抛出命名错误,而不是吞掉格式错误的字段;移除了五个命令,其余命令通过弃用窗口进行整合;参考文档针对注册的 CLI 进行了 CI 门控;README 中标注为 beta 版本。此外还有新功能:Muse Code 适配器、Agent Plugins v1.0.0 清单、可离线验证的签名运行收据,以及 bernstein audit diagnose。](https://bernstein.run/blog/v3-14-159-pi)[Apr 14, 2026·4 min read
agents on cloudflare: workers, durable objects, r2, d1
Bernstein 面向 AI 编码 Agent 的 Cloudflare 集成:Workers 运行 Agent,Workflows 承载多步任务,R2 + D1 保存工作区和计量状态。实验性功能;在你自己的账户上运行。](https://bernstein.run/blog/cloudflare-cloud-execution)[Mar 29, 2026·3 min read
bernstein 1.0: open-source orchestrator for ai coding agents
在并行 Git 工作树中编排 Claude Code、Codex、Gemini CLI 和其他 CLI 编码 Agent。确定性调度器,HMAC 签名的审计链。](https://bernstein.run/blog/introducing-bernstein)
证据,而非感觉
每一步都经过签名,按顺序存储在磁盘上。
使用 --audit 运行,Bernstein 会在 .sdd/audit/ 下写入一个 HMAC 链式事件日志,每个 UTC 日期对应一个 JSONL 文件。每个条目都引用前一个哈希值。篡改会导致验证失败。没有任何数据离开你的机器。
没有运行过的人也能进行核查。签名和哈希链校验仅读取文件即可;HMAC 环节需要生成该链时使用的密钥,因此请将两者都交给审核人员,bernstein audit verify 即可在不重新运行任何操作的情况下给出验证结果。这不是截图,也不是 SOC2 PDF——而是一条可重新计算的哈希链。
配置签名密钥后,每次运行还会写入一份由 Ed25519 签名的回执(receipt),将日志(journal)和血缘头(lineage heads)绑定在一起。bernstein verify receipt 仅读取该文件即可验证——无需 HMAC 密钥,也无需 .sdd/ 目录。请固定公钥以确保来源可信。没有密钥,就没有回执。
~/proj $ bernstein audit verify# reading .sdd/audit/2026-07-24.jsonl · 412 entries · 18m04s span
17:42:01 manager.plan cb84a1… 13 tasks · est $4.20
17:42:18 scheduler.spawn 3e09f7… t-001 → backend (sonnet)
17:42:18 scheduler.spawn 81c2dd… t-002 → backend (sonnet)
17:42:19 scheduler.spawn b50af8… t-003 → qa (opus)
17:55:11 janitor.verify d014a3… t-005 docs · pytest 84/84 · ruff 0
17:55:14 manager.merge ee7c12… t-005 → main · 4 files · clean
18:02:14 janitor.fail 9aa10b… t-003 qa · pytest collect err · 3/3 retries
18:02:30 scheduler.route 71b4cc… t-003 opus → sonnet · awaiting op
18:09:14 scheduler.pause 4d2e09… conflict · t-001 ↔ t-007 · src/auth/refresh.py
verify chain ok ✓ 412/412 entries · last hash 4d2e09cb…
hmac key ~/.local/state/bernstein/audit.key常见问题
阻碍安装的四个问题
调度器是一个 LLM 吗?
不是。答案中有用的部分在于模型所处的位置:模型选择是 LLM 辅助的(能力路由器 + 推荐器),并且 best-of-n 通过 LLM 裁判选出优胜者。这两者都是可选且可插拔的,因此你可以通过路由层接入自己的规划器。模型绝不会介入的地方是决定谁运行、谁被阻塞以及什么可以合并的那个“tick”(时钟周期)。如果在那里放入一个模型,运行将无法重放。
它会向外部发送数据吗?
未经你的配置,没有任何数据会离开你的机器。可选的遥测数据是完整且具备审计级别的:HMAC 链式运行轨迹、每个任务的工具调用、模型使用情况、Token 成本、延迟百分位数。你可以将其发送到自己的 OTel Collector、Datadog、Splunk 或 S3 存储桶。默认设置为仅限本地,因为本地部署(on-prem installs)需要这样,但企业级钩子也已就位。
它在哪里运行?
无论指向何处:你的笔记本电脑、防火墙后的本地部署环境、作为云端运行时的 Cloudflare Workers、作为多节点集群的 Kubernetes,或是上述方式的混合组合。支持沙箱执行模式(Cloudflare Sandbox、本地 Docker)。以你的代码仓库为输入,以你的测试为关卡;Bernstein 会适配宿主环境。无需强制经过 SaaS 中转。
这与 Claude Code 有何不同?
Claude Code 可以自行生成子代理;Bernstein 则能同时协调 40 多个 CLI 代理,并通过你的测试来验证其输出,而非盲目信任。Claude Code 是 Bernstein 中最常见的主要后端——使用其中一个并不排斥另一个。