KabirKoratkar/forklab
GitHub: KabirKoratkar/forklab
ForkLab 是一个分布式 AI 系统的因果调试器,通过在隔离沙箱中运行反事实实验来识别和验证多 Agent 集群中故障传播的根因与干预效果。
Stars: 0 | Forks: 0
# ForkLab
### 一个用于分布式 AI 系统的因果调试器。
[](https://github.com/KabirKoratkar/forklab/actions)
[](https://www.daytona.io/)
[](https://www.braintrust.dev/)
[](https://fireworks.ai/)
[](https://www.typescriptlang.org/)
ForkLab 提出了一个看似简单却十分困难的问题:**当一个 agent 失败时,它的同伴是否应该了解该失败?** 它测试了广播一个 agent 的失败状态能否阻止整个集群进入同步重试级联。
一个不可变的工作负载被上传到八个独立的 Daytona 世界中,这些世界由相同的不可变容器快照创建。每个世界恰好更改一个预先注册的干预措施:基线、抖动、失败广播、重试队列余量、延迟注入、广播+抖动、强制重启或随机安慰剂。
- **Daytona** — 用于反事实执行的独立沙箱。
- **Braintrust** — 实验账本:根追踪、子世界跨度、确定性评分器和策略回归测试套件。
- **Fireworks AI** — 在收集证据后提供有界的技术解释。
## 实时结果
实验 `rc-idem-c76577482663660c` 从相同的 Daytona 快照执行了所有八个世界,并在完成后将集群清理至零沙箱。
| 反事实世界 | 集群失败率 | 读数 |
|---|---:|---|
| 基线 | **22.500%** | 未处理的对照组 |
| 失败广播 | **0.000%** | 假设得到支持 |
| 重试抖动 | **0.000%** | 有效的替代干预 |
| 广播 + 抖动 | **0.000%** | 组合使用时无回归 |
| 随机安慰剂 | **22.500%** | 重现了基线结果 |
| 延迟增加 | **40.625%** | 阳性对照加剧了失败 |
| 强制重启 | **26.875%** | 在负载下破坏稳定性 |
该结果不仅仅是一张图表。Braintrust 记录了一个根实验追踪和八个带评分的子跨度。所有世界都完成并验证了共享的工作负载,同时因果有效性、公共随机数、安慰剂保真度、阳性对照方向、基础设施匹配度和清理均得分为 `1`。
**证据:** [重试级联策略评估](https://www.braintrust.dev/app/daytona%20sprinthack/p/forklab-retry-cascade-policy/experiments/agent%2Fimplement-retry-cascade-lab-1784928151)
· [Daytona 容量评估](https://www.braintrust.dev/app/daytona%20sprinthack/p/forklab-daytona-capacity-policy/experiments/agent%2Fimplement-retry-cascade-lab-1784928151)
· [获取策略评估](https://www.braintrust.dev/app/daytona%20sprinthack/p/forklab-acquisition-policy/experiments/agent%2Fimplement-retry-cascade-lab-1784928151)
· 根追踪 `0589e317db671f764f5b5ef60ea27e58`
[阅读黑客松提交故事 →](SUBMISSION.md)
## 架构
```
flowchart LR
O["Direct operator console"] -->|"zero-cost"| L["Local deterministic twin"]
O -->|"preflight + human approval"| S["Immutable Daytona snapshot"]
S --> W1["Baseline world"]
S --> W2["Broadcast world"]
S --> W3["Jitter world"]
S --> WN["Five controls"]
W1 --> C["Typed metric collector"]
W2 --> C
W3 --> C
WN --> C
C --> R["Evidence / compute ranking"]
R --> F["Fireworks technical readout"]
R -. "traces + scorers" .-> B["Braintrust"]
F -. "model + tool telemetry" .-> B
```
重试级联策略使用单侧配对证据评分为每个干预措施排名:
```
z_paired = (beneficial_discordant - harmful_discordant)
/ sqrt(total_discordant)
evidence_bits = log2(1 + max(0, z_paired)^2)
utility(intervention) = evidence_bits / mean_compute_units
```
该工作负载使用基于计数器的随机性,因此即使控制流出现分歧,每个世界也会受到相同的外部冲击。每个世界返回所有 160 个有序的二进制回合结果,从而实现对齐的 McNemar 风格比较,而非独立分支近似。TypeScript 本地孪生体和无依赖的 Python 沙箱工作负载经过测试,确保具备位级一致性。
## 执行边界
本地模拟是免费的,可直接在控制台中运行。真实的 Daytona 执行包含两阶段的人工检查点:只读的预检解析已配置的快照和集群锁,随后通过第二次点击进行授权,使用与该确切请求和快照资源指纹绑定的短期 token 进行计算。
默认运行的限制如下:
- 8 个共享快照世界
- 一次仅激活 1 个世界
- 每个世界 10 分钟的 TTL
- 保守的 133 沙箱分钟数审批上限
- `daytonaio/sandbox:0.8.0`:1 vCPU、1 GiB RAM 和 3 GiB 磁盘
- 在每个世界上显式禁用出站网络
- 进程本地执行锁以及账户范围内的现有集群预检
- 尽力而为的世界删除操作以及账户级别的零沙箱验证
该账户仅开放 `us` 区域,由于该区域无法使用 Linux VM 运行器,而 30 GiB 的 Windows VM 会在创建子分支之前耗尽整个组织的磁盘配额。因此,ForkLab 在此层级上使用了最强可行的隔离拓扑结构:来自同一不可变快照 ID 的顺序容器。预检会在审批前验证快照-区域成员资格以及 `snapshot disk × peak worlds`。每个世界还会获得相同的工作负载摘要和基于计数器的随机坐标。来源信息如实报告为 `common_snapshot`,绝不会报告为 `common_ancestor`。
执行锁位于进程本地。账户预检保护了正常的单进程、仅限本地回环的应用程序,但“先列出后创建”的检查在单独运行的 ForkLab 进程之间并不是原子操作。
取消操作会阻止新世界启动,但 Daytona SDK 无法中断已在世界内部运行的命令。该命令仍然受限于其命令超时,随后是显式的清理操作及其 TTL 故障保护。执行结果也会记录已解析的快照类、CPU、内存、GPU 和磁盘以及沙箱分钟数预算。
世界执行是失败隔离的。如果单个 Daytona 沙箱无法进行配置、执行或清理,ForkLab 会记录干预措施、生命周期阶段和有界的提供者错误,然后继续执行已处于批准预算内的剩余世界。存活的对齐基线的配对将作为明确的临时证据返回;如果基线缺失,则会完全保留因果决策。在返回任何部分结果之前,集群级别的协调仍必须确认不存在匹配的沙箱。
真实执行被有意限制在仅绑定本地回环的主机上。付费端点还需要同源 JSON、一次性 256 位审批 token、请求绑定的幂等性以及账户范围内的 Daytona 集群预检。除非添加了经过真实身份验证的执行服务,否则远程部署仅公开模拟功能。
## 本地设置
要求:Node.js 20.12 或更高版本,以及通过身份验证的赞助商 CLI。
```
npm install
cp .env.example .env.local
# 仅在受信任的本地 demo host 上设置 FORKLAB_DAYTONA_EXECUTION=enabled。
npm run doctor
npm run dev
```
打开 `http://127.0.0.1:3000`。
`npm run doctor` 会在不打印凭据的情况下验证本地的 GitHub、Daytona、Fireworks 和 Braintrust CLI 会话。运行时凭据保留在 `.env.local` 中,且永远不会被提交。
## 验证
```
npm run lint
npm run typecheck
npm test
npm run build
```
在设置 `BRAINTRUST_API_KEY` 后,运行获取和重试级联评估:
```
npm run eval
```
在直接实验控制台中,首先运行本地排练。要创建真实的沙箱,请点击无计算的 Daytona 检查,验证解析出的资源配置,然后批准最终检查点。此账户使用兼容区域的 `daytonaio/sandbox:0.8.0` 容器快照。预检会验证它在 `DAYTONA_TARGET` 中是否处于活动状态,根据 `DAYTONA_DISK_QUOTA_GIB` 计算 `snapshot disk × peak worlds`,并在任一约束条件失败时拒绝审批。
每一次真实的实验都会成为一个 Braintrust 追踪,并为每个反事实世界生成一个子跨度。根追踪会对世界完成情况、共享快照来源、公共随机数、安慰剂保真度、阳性对照方向、基础设施匹配度和整体因果有效性进行评分。`npm run eval` 还会发布确定性的策略和 Daytona 容量回归测试套件。
## 构建工具
Daytona · Braintrust · Fireworks AI · Next.js · React · TypeScript · Python ·
Vercel AI SDK · Zod · Vitest · GitHub Actions
## 团队
由 Daytona
HackSprint SF 的 [Kabir Koratkar](https://github.com/KabirKoratkar) 构建。
标签:AI智能体, Daytona, TypeScript, 人工智能, 分布式系统, 响应大小分析, 因果调试, 安全插件, 故障分析, 用户模式Hook绕过, 自动化攻击, 逆向工具