Open-fab-ai/openfab
GitHub: Open-fab-ai/openfab
OpenFab 是一个开源的 AI 驱动软件工厂,将自然语言意图转化为附带签名溯源和可复现构建的可信软件产品。
Stars: 0 | Forks: 0
# OpenFab
**一个开源软件工厂:输入自然语言,输出可信软件。**
OpenFab 接收自然语言规范,并产出一个可运行的软件产品,其中
**每一个产出物都包含可复现的构建 + 签名的溯源 + AI/人类署名**
—— 运行在 **可替换的 agent 基座** 和 **可替换的 forge** 之上,并处于中立治理之下。它*组合*了成熟的 OSS + 开放标准 (SLSA · in-toto ·
Sigstore · DID);新颖且持久的事物是其**集成的工厂**以及它所发出的
**流程 + 决策记忆 + 签名溯源**。
这个仓库是 **阶段 0 手工构建的 MVP (v0.1)**,使用 Rust 编写。新来的?从
[**OpenFab 概述**](docs/OpenFab_Overview.md) 开始(问题、差距,以及 OpenFab 如何
填补它)。然后查看 [`OpenFab_MVP_Design_and_PRD.md`](docs/OpenFab_MVP_Design_and_PRD.md)
(事实来源)和 [`AGENTS.md`](AGENTS.md)(如何在这里工作)。
## OpenFab WebUI

```
./init.sh # checks the toolchain
demo/run_web_demo.sh # builds + launches the web UI → open http://127.0.0.1:8787
```
在浏览器中:输入一段**纯英文意图** → 点击 **⚙ Fabricate**(Base/LLM 会根据你的意图编写规范*以及*其验收标准,然后将其构建出来)→ 观看实时流式传输的工作流 → **信任门禁阻断** → **▶ Run the app**(Web 应用在你的浏览器中打开;CLI 在沙箱中运行)→ 批准 (Solo/Team/Crowd) → PR 合并 →
检查签名的**溯源** + **审计追踪**,点击 **Reproduce & verify** →
**Refine** 进行迭代。用户只需提供意图;其他一切(规范、
验收、代码)均来自 LLM。详见 [`docs/WEB.md`](docs/WEB.md)。
**▶ Run the app** 会直接在那里启动生成的软件 —— 例如这个温度
转换器,由一行意图生成并在浏览器中实时运行:
/timeline.md`) |
包含命令的完整映射:[`docs/VALUE_PROPS.md`](docs/VALUE_PROPS.md)。
## 信任机制,逐一面板解析
点击**实时工作流**中的任意步骤,以准确检查它生成了什么。每一个面板
都是一个具体化的价值主张 —— 相同的产出物可以在没有 OpenFab 的情况下被第三方验证。
### Spec — 自然语言变为机器可检查的契约
Base (LLM) 根据你的简单意图编写带有版本的规范**以及**其验收标准 (`a1`, `a2`, …)。这个确切的规范会被分发给基座并与运行一起提交。

### Generate — 身份与 AI/人类署名
记录 agent **DID**、基座 · 模型、运行时以及 **prompt SHA-256**,每一个
被更改的文件都通过摘要锁定,并标记为 `author: ai | human`。

### Verify — 可复现性
“验收”是机器可检查的完成定义:每一个标准都是一个必须以 0 退出的 shell 命令,**在策略受控的沙箱中重新运行** —— 任何人、任何时候都可以执行。

### Sign — 签名溯源 (in-toto / SLSA)
一份 in-toto/SLSA 证明,由 fab 的 `did:key` 签名(对规范化 JSON 进行 ed25519 签名),带有 `payload_sha256` 防篡改锁定,并且每次人类签字都有一个不同的 `did:key`。

### Gate — 证明与可审计性
信任决策会 **阻断合并,直到满足条件**:11 项针对声明类型、断言、署名、签名、签字和机器验收的合规性检查 (C1–C11)。

一旦发布,相同的产出物就可以在产品上浏览 —— 并且 **可以被任何人、在任何 forge 上、在没有 OpenFab 的情况下重新验证。**
### Provenance — 完整的签名证明
完整的 `openfab/generation` 断言:断言类型、agent **DID**、基座 · 模型、
prompt SHA-256、验收结果、payload SHA-256、每一个签名、逐文件的 **ai/human**
署名,以及人类签字 —— 原始的证明 JSON 仅需一键即可查看。

### Audit trail — 可审计性 (EU CRA / SLSA)
每一个操作 —— AI 的编写和每一次人类签字 —— 都是一个**带有 in-toto/SLSA 溯源尾部信息的签名 git commit**,合并受制于 N-of-M。这条追踪记录是提交到仓库中的纯
git + JSON,因此任何 forge 上的第三方工具都可以对其进行验证。

### SBOM — 供应链
为产品提供的一份 SPDX 软件物料清单,每一个文件都由 SHA-256 锁定。

### Decision log — 决策记忆
整个运行过程的人类可读时间线 —— 意图、由 LLM 编写的规范、记录在案的
假设和开放性问题、沙箱验收、签名以及门禁 —— 这是该工厂产出的持久
资产。

### Reproduce & verify — 主权证明
“不信任任何事物,验证一切。”重新验证签名,确认提交的
源码与签名摘要 **位级完全一致 (bit-identical)**,并 **在沙箱中重新执行每一项验收检查** —— 得出一个最终结论。

### Maintainers & reputation — 人类参与,以及不断积累的声望
信任门禁只有在获得预先批准的 **维护者白名单**
(每一个都是一个 `did:key`)的 **N-of-M 签字** 后才会放行。**声望** 是对已签名
证明的纯粹投影 —— 每个 DID 的编写 / 接受 / 签字 —— 因此声望是 *从可验证的
工作中赚取的*,而不是在一个单独的数据库中声明。

## 架构
围绕稳定的 Core 的两个正交可插拔轴 (PRD §3):

- **Core(护城河,独立于基座/forge):** `src/core/` — `spec` · `identity`
(did:key) · `provenance` (in-toto/SLSA + `openfab/generation`) · `sbom` · `trust`
(门禁) · `reputation` · `conformance`。
- **Ports(接缝):** `src/ports/` — `BasePort`(可替换的 agent 基座)和
`ForgePort`(可替换的 git 主机)。Core 只会与这些 trait 通信。
- **Adapters:** `src/adapters/` — 基座:`base_claude`(通过 `claude` CLI 的实时 LLM) ·
`base_framework` (AgentScope · HiClaw · agent-chat · OpenHands,如果已配置则为原生,否则通过 `llm_backend` **桥接**)。 forge:
`forge_local_git` · `forge_github` (受控) · `forge_rest` (Forgejo/Gitea/GitCode,
受控)。`registry` 是唯一的构建 + 状态接口;当基座
缺少沙箱时,会提供 `sandbox`。
- **Engine, ops, fronts:** `src/spec_cycle.rs` (PRD 中的 `loop.rs`) → `src/ops.rs` (共享
操作) → `src/cli.rs` + `src/server.rs` (Web UI/API)。单一的编排代码路径。
**基座 (5):** `claude` (原生), `agentscope`, `hiclaw`, `agent-chat`, `openhands`
(如果设置了它们的 `OPENFAB_*_URL` 则为原生,否则通过 LLM 后端 **桥接** —— 运行过程会如实标记自身)。**Forge (4):** `github`, `forgejo`,
`gitea`, `gitcode` (如果设置了 `OPENFAB_*` 凭证则为实时,否则为离线的 **本地实例**,这仍然能证明可移植的溯源)。默认情况下,LLM 后端是 `claude` CLI,
或者设置 `OPENFAB_LLM=dashscope` 时使用 Qwen/DashScope。
```
openfab serve --repo [--port 8787] # the web UI + JSON API
openfab run --spec --repo [--base ] [--forge github|forgejo|gitea|gitcode]
openfab signoff --repo --run --as
openfab verify --repo --run
openfab feedback --repo --run --note "" [--add-check "id=..,check=.."]
openfab maintainer-add --repo --name
openfab reputation / list --repo
```
## 构建与测试
```
cargo build --release
cargo fmt --all && cargo clippy --all-targets --all-features -- -D warnings && cargo test
```
## v0.1 的客观范围(真实情况 vs. 文档记录的生产环境替代方案)
OpenFab 的价值在于*集成的整体*;v0.1 刻意使用
**满足规范的最小依赖集** (AGENTS.md) 来实现护城河,并直接调用 CLI。每一个较轻量化的选择都标明了其生产级的替代方案,因此没有任何夸大:
| v0.1(此构建) | 生产环境替代(有文档记录) |
|---|---|
| did:key + ed25519 签名,离线可验证 | Sigstore (cosign / fulcio / rekor 透明度日志) |
| 进程内信任评估器读取 `policy/trust.json` | OPA / `regorus` 读取 `policy/trust.rego` |
| 策略受控的主机子进程沙箱 | Podman / gVisor 容器 |
| 直接发出 SPDX-lite SBOM | Syft (SPDX / CycloneDX) |
| 两个本地 git forge 证明了可移植性;GitHub adapter 已实现但受控 | GitHub + Forgejo + Gitea 实时 |
| 验收重跑 = 可复现性 | 使用 Nix flakes 实现位级一致的构建 (v0.2) |
有关原因,请参见 [`docs/adr/0001-mvp-architecture-decisions.md`](docs/adr/0001-mvp-architecture-decisions.md),
有关已完成 / 下一步 / 待解决的问题,请见 [`HANDOFF.md`](docs/HANDOFF.md)。
许可证:Apache-20 · 治理:AOSF (aosf.ai) · 实现:SLSA · in-toto · Sigstore · DID。

标签:AI辅助编程, LLM代理, Rust, 可视化界面, 可重复构建, 网络流量审计, 自动化软件工厂, 通知系统