Bernstein

用确定性调度并行编排 CLI 编码代理,并可离线核验每次运行。

Star 数
★ 1.2k
最近更新
1 天前
License
Apache-2.0
主语言
Python

30 秒速览

运行形态
命令行工具MCP 服务器自托管服务
可在哪里用
通用 · 跨平台Codex · Claude Code · OpenAI API
费用
软件免费,模型调用费用自付
上手难度
中 · 需要几步配置
开始前需要
Python 3.12+GitShell / 命令行本地文件系统MCP Server
典型场景
需要让 Codex CLI、Claude Code 或 Gemini CLI 并行修改同一代码库的工程团队,可为每个编码任务分配独立 Git worktree,避免默认共享可变文件状态。
不适合
  • 需要稳定接口的生产团队:项目处于 beta,小版本可能变更接口
  • 需要托管云服务的团队:api.bernstein.run 尚未可用

这个 Agent 能做什么,适合哪些场景?

Bernstein 是面向 Claude Code、Codex CLI、Gemini CLI 等 CLI 编码代理的确定性编排器。它先将目标拆解为任务,随后以普通 Python 调度执行;编码任务各自在独立 Git worktree 中运行,产物型任务则使用独立工作目录。系统通过 lint、类型检查和测试等具体信号验证任务,再将通过验证的代码合并到主分支。每次运行都会写入 lineage spine 与 replay journal;启用 BERNSTEIN_AUDIT=1 时,还会生成可离线验证的 HMAC 审计链与收据。它提供 CLI、TUI 实时视图、Web UI、MCP server mode、YAML 工作流,以及 air-gap 安装配置。

运行 bernstein init 会创建 .sdd/ 工作区和 bernstein.yaml。使用 bernstein -g "..." 时,Bernstein 将目标拆解为带角色、文件归属和完成信号的任务,在每个编码任务的 Git worktree 中调用已配置的 CLI 代理,并以测试、文件存在性、lint 和类型检查作为门禁;验证通过后合并结果。bernstein run plan.yaml 可直接执行声明式多阶段计划,计划可包含 agent、command 与 loop 节点。它将运行记录写入 replay journal 和 lineage spine;bernstein replay latest --verify、bernstein lineage verify <run_id>、bernstein audit verify 可重新核验记录,bernstein verify run 可生成 Ed25519 签名的可携带运行收据,bernstein verify receipt 可仅凭收据文件离线验证。

  1. 需要让 Codex CLI、Claude Code 或 Gemini CLI 并行修改同一代码库的工程团队,可为每个编码任务分配独立 Git worktree,避免默认共享可变文件状态。
  2. 需要可复核变更过程的安全、合规或评审团队,可启用 BERNSTEIN_AUDIT=1,并将审计链与签名运行收据交给离线审阅者验证。
  3. 已有明确任务 DAG、不想在计划阶段调用模型的开发负责人,可用 bernstein run plan.yaml 执行 YAML 多阶段计划。
  4. 要定位一次自动化任务在哪个验证步骤失败的维护者,可运行 bernstein audit diagnose <run_id> --signal gate --sign-key KEY 生成签名诊断收据。
  5. 在隔离网络或不使用第三方数据平面的环境中部署编码自动化的团队,可采用其文件式状态和 air-gap 安装配置。

如何安装或部署这个 Agent?

运行环境需要 Python 3.12+ 和 Git。安装命令:

pipx install bernstein

随后进入目标项目并初始化:

bernstein init

还需在机器上安装可用的受支持 CLI 编码代理;README 列举了 Claude Code、Codex CLI、Gemini CLI 等,并提供 bernstein integrations list --installed 查看本机可用集成。README 未给出各代理的认证凭据配置步骤。

如何使用这个 Agent?

在已初始化的项目中执行首个目标:

bernstein -g "fix the failing test in tests/test_foo.py"

查看进度可运行 bernstein live。若已有计划文件,运行:

bernstein run plan.yaml

要为运行保留可核验审计记录,可执行:

BERNSTEIN_AUDIT=1 bernstein -g "fix the failing test in tests/test_foo.py"

之后可用 bernstein replay latest --verify 和 bernstein lineage verify <run_id> 验证记录。

这个 Agent 有哪些优点和局限?

优点
  • 协调循环使用普通 Python 而非 LLM;项目将其作为可重放任务图和确定性运行的基础。
  • 编码任务默认隔离在每任务一个 Git worktree 中,并通过测试、lint、类型检查等合并门禁验证。
  • lineage spine 与 replay journal 始终写入;可选 HMAC 审计链和 Ed25519 签名运行收据支持离线核验。
  • 支持 40 多种 CLI 代理适配器、通用 --prompt 包装器,以及本地文件式状态和 air-gap 安装配置。
局限
  • 需要 Python 3.12+、Git、Shell 环境,以及另行安装并配置可用的 CLI 编码代理。
  • 默认隔离依赖 Git worktree;禁用 worktree 后,所有任务会在共享检出目录运行。
  • 任务拆解阶段仍使用一次 LLM 调用;确定性描述适用于之后的协调与重放流程。
  • Cloudflare Workers 与 R2 工作区同步属于实验性云执行功能,且托管 api.bernstein.run 服务尚不可用。

这个 Agent 与同类方案有什么区别?

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
Bernstein 当前 78 · 表现良好 命令行工具免费 + 模型费 ★ 1.2k 1 天前 Python Codex · Claude Code · OpenAI API
Kangentic 52 · 缺口较多 桌面应用免费 + 模型费 ★ 140 今天 TypeScript Codex · Claude Code
wmux 智能体工作台 74 · 存在缺口 桌面应用 ★ 447 今天 TypeScript Codex · Claude Code
Superset 52 · 缺口较多 桌面应用免费版 + 付费版 ★ 16k 今天 TypeScript Codex · Claude Code

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
表现良好
78/ 100 五分制 3.9 / 5
本评测基于 2026年8月9日 的源码;此后该项目发布了 19 个正式版本,尚未复审。分数与结论只代表评测时的版本。 最近版本 ↓
信任安全 19/29
可靠稳定 9/14
适用触发 16/18
规范维护 16/18
有效结果 12/13
证据核验 6/8
查看各维度的扣分理由
信任安全19 / 29 · 3.3/5

证据显示:默认隔离(git worktree)和可选沙箱后端,最小权限原则得到体现;但用户确认机制仅体现在命令执行前,未发现明确的审批流程。数据流透明性通过审计日志和回放日志实现,但未详细说明数据流向。敏感数据处理有密钥库和防泄漏护栏,但未深入验证。依赖安全有Dependabot、pip-audit、CodeQL等,且明确固定了安全相关依赖版本。外部影响通过沙箱和网络隔离控制,但未完全验证。回滚通过git worktree和合并门实现,但未提供回滚命令。来源归属通过签名和审计链实现,但发布者身份未验证。扣分原因:用户确认机制不明确,数据流细节不足,回滚机制未明确。

可靠稳定9 / 14 · 3.2/5

证据显示:自洽性通过确定性调度和回放机制体现,但未验证实际运行。依赖可用性通过锁文件和依赖固定保证,但未验证所有依赖的可用性。失败消息通过退出码和诊断命令提供,但未验证其准确性。扣分原因:静态审查无法验证实际运行,失败消息的准确性未验证。

适用触发16 / 18 · 4.4/5

证据显示:目标受众明确(开发者、运维),场景覆盖广泛(CLI、GUI、云执行)。能力边界通过功能矩阵和已知限制文档明确。触发精度通过精确的命令和配置体现,但未验证所有触发条件。环境适配通过跨平台支持和多种安装方式体现。扣分原因:触发精度未完全验证,环境适配未覆盖所有平台。

规范维护16 / 18 · 4.4/5

证据显示:信息架构清晰,文档齐全。安装说明详细,支持多种安装方式。命名稳定性通过版本号和API稳定性体现,但未验证。示例和FAQ丰富,已知限制明确。许可证为Apache-2.0,版本变更日志存在但未详细。维护责任通过贡献指南和安全政策明确。扣分原因:命名稳定性未验证,版本变更日志未详细。

有效结果12 / 13 · 4.6/5

证据显示:输出可用性通过可验证的收据和回放日志体现,但未验证实际输出。边际价值通过确定性、审计和隔离等特性体现,但未量化。成本效益通过减少人工干预和错误体现,但未提供具体数据。扣分原因:未验证实际输出,成本效益未量化。

证据核验6 / 8 · 3.8/5

证据显示:声明可追溯性通过文档和代码对应体现,但未验证所有声明。跨来源佐证通过外部提及和引用体现,但未验证。事实与推断分离通过文档区分,但未完全明确。扣分原因:跨来源佐证未验证,事实与推断分离未完全明确。

风险与缓解建议
  • 发布者身份未验证,需谨慎对待。
  • 静态审查无法验证实际运行,确定性声明需自行验证。
  • 用户确认机制不明确,可能自动执行任务。
  • 依赖众多,需关注供应链安全。
证据充分度:低 评估于 2026年8月9日 审查版本 e2a38c2ba3a6 评估后仓库已有新提交,评分可能未覆盖最新改动
查看完整评分方法 →

最近版本

来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。

  1. v3.24.1
    发布说明摘录
    A patch release on top of v3.24.0. It applies default per-client attempt limits to authentication endpoints that were left on the generic request rate alone since v1.4.10 (#6874). There are no breaking changes and no configuration migration is required. Authentication attempt limits Dashboard login, SSO login and callbacks, and CLI device authorization endpoints now share a default limit of 10 attempts per client in 60 seconds, including their /api/v1 aliases (#6874). Exhausted budgets return HTTP 429 with Retry-After and an exponentially increasing …
    在 GitHub 查看 ↗
  2. v3.24.0
    发布说明摘录
    This release adds cooperative task cancellation, a resumable journal stream for the terminal UI, and local merge-backs that can skip pushing to the remote (#6742, #6846, #5982). Graduation diagnostics can compare stored counters with sealed journal observations, and audit verification now checks published hash tiles (#6859, #6548). Stop work before releasing its claim …
    在 GitHub 查看 ↗
  3. v3.23.0
    发布说明摘录
    <!-- known-ci-6042 --> > Known CI failure: the post-release [Python 3.12 main check](https://github.com/sipyourdrink-ltd/bernstein/actions/runs/40120774655/job/120951745505) failed in test_orchestrator.py. [#6042](https://github.com/sipyourdrink-ltd/bernstein/issues/6042) remains open; the abnormal exit is not diagnosed. The separate pre-release full-suite pass did not resolve it. One hundred and five changes since v3.22.0. Several fix work that looked finished until somebody checked the evidence. …
    在 GitHub 查看 ↗

常见问题

Bernstein 自己会替我提供模型吗?
不会。它编排已安装的 CLI 编码代理;README 明确说明协调循环不包含 LLM,而目标拆解阶段会进行一次 LLM 调用。
如何证明一次运行未被篡改?
每次运行都写入 replay journal 和 lineage spine。启用审计后可验证 HMAC 链;还可生成含嵌入公钥的 Ed25519 签名运行收据,并在离线环境中验证。
多个代理会同时改同一个工作目录吗?
默认不会:每个编码任务使用独立 Git worktree。产物型任务使用 .sdd/workspaces/ 下的独立工作目录。
能否在无外网环境中部署?
可以。README 明确列出 air-gap install profile,并说明其使用文件式状态、没有第三方数据平面。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents