Runfield 为 AI 提供可创建、可执行、可释放的隔离环境。代码正在按 docs 中的完整 P0 设计实现;只有对应自然语言 E2E 和真实运行时测试全部通过后,能力才视为完成。
- Rust 实现的
runfieldddaemon 和runfieldCLI - 严格解析
EnvironmentSpecYAML,生成内容寻址的EnvironmentLock - 使用
SQLite持久化 Lock 和 Environment 状态 - RFC 8785 JCS Lock 与五类 InputSlot 静态校验
CreateEnvironmentclient-stream 帧序、offset、chunk、大小和摘要校验- 非 Secret root-only staging 与 Secret 内存 staging
- 基于 EnvironmentLock 的动态输入契约校验
SQLite单连接 actor、Create 幂等事务、revision 状态迁移和默认 30 分钟/最长 10 天生命周期- Environment Get/List/Watch/Renew 与带 request ID 的幂等 Release
- 到期自动释放,以及 daemon 启动时继续清理遗留的 RELEASING Environment
- Linux OCI Driver 的资源限制、禁网、Agent 引导、失败回收和 Release
- Linux OCI Agent 的身份绑定、受限 tar 二次校验、no-replace 注入和固定权限
- 受管 PIPE Process 的 Start/Get/List/Watch/Attach/Signal、Start 幂等、输出续读、stdin sequence 和输出配额
- 公共命令执行只经过 Agent Process;容器 runtime
exec产品路径已删除 - CLI 通过
--input <slot>=<source-file>发送完整输入流;Secret 不进入命令行参数 - Environment metadata 持久化并随资源快照返回
TERMINAL/PTY Process、Runtime 文件 API、per-Environment mTLS、控制面认证、PREPARING 恢复与持续清理重试、镜像与能力目录、网络、Linux/Windows KVM、完整桌面和 BUA/CUA 仍在实现中。当前仓库不是可发布版本,也不使用简化路径替代这些设计能力。
需要 Rust 1.96+ 和可用的 Docker daemon。protoc 已作为 Rust 构建依赖内置,不需要单独安装。
cargo build --workspace
cargo run -p runfieldd -- --listen 127.0.0.1:7777 --state .runfield/runfield.dbCreate 输入统一从本地文件读取。directory 的源文件是未压缩受限 ustar/PAX tar;variable、metadata 和两种 Secret 的源文件内容作为值发送。
runfield resolve environment.yaml
runfield create <lock-digest> \
--request-id <uuid> \
--input config=./config.json \
--input workspace=./workspace.tar \
--input token=./private/tokencargo fmt --all -- --check
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings