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 ![OpenFab web UI — 输入自然语言,输出可信软件](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/662013d42c095426.png) ``` ./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** 会直接在那里启动生成的软件 —— 例如这个温度 转换器,由一行意图生成并在浏览器中实时运行:

The generated Temperature Converter web app, running live

## CLI ``` # 自然语言输入 → LLM 编写 spec(包含 acceptance)→ 构建它 openfab build "a CLI that converts temperatures between C, F and K with a --selftest flag" \ --repo /tmp/myapp --base claude --gate solo demo/run_demo.sh # cross-forge + iteration over a saved spec (base=claude) demo/run_selfhost_demo.sh # OpenFab develops OpenFab — verified by cargo, signed, gated (PRD §6) ``` **自托管 (PRD §6):** `run_selfhost_demo.sh` 会克隆 OpenFab 自身的源码,并让 OpenFab 对其自身进行修改实现 —— 在沙箱中使用项目自己的 `cargo build` + `cargo test` 进行验证,附上签名溯源,并且只有在 获得 N-of-M 人类签字后才合并。每一个操作都是一个经过签名的 git commit。详见 [`docs/SELF_HOSTING.md`](docs/SELF_HOSTING.md)。 一次运行完整展示了端到端的过程: ``` NL intent → spec (contract) → dispatch to base → app written → machine acceptance in a sandbox → signed in-toto/SLSA attestation (+ SBOM) with AI/Human attribution → portable provenance committed in-repo → PR opened → TRUST GATE blocks merge until N-of-M human sign-off → maintainers sign off → gate opens → PR merges → openfab verify → re-checks signatures + acceptance + sign-off → same flow on a second forge → feedback bumps the spec (v→v+1) ``` ## 你将获得什么(价值主张 → 查看位置) | 主张 | 展现位置 | |---|---| | **NL → 软件** | `specs/*.spec.yaml` `intent:` 变成 `app/` 下的可用应用 | | **可信** | 每一个产品都带有签名的 in-toto/SLSA 证明 (`provenance/*.att.json`) | | **AI 与人类署名** | `openfab/generation` 断言记录了 agent DID、模型、prompt 哈希、文件/行号范围 + `author: ai/human` | | **可复现(验证)** | `openfab verify` 重新执行契约:签名 + 记录的验收 + 签字 | | **人类参与 (Human-in-the-loop)** | 信任门禁 **阻断合并**,直到 N-of-M 维护者签字 | | **中立 / 跨平台** | 在两个独立的 forge 上流程一致;溯源是提交到仓库中的纯 JSON | | **可替换基座** | `--base claude` 或任何框架基座 (`agentscope`/`hiclaw`/`agent-chat`/`openhands`) —— 同样的 Core 流水线 | | **规范循环 / 迭代** | `openfab feedback` 将人类 NL 融入规范 v→v+1 并重新运行 | | **决策记忆** | 每次运行的人类可读时间线/审计追踪 (`.openfab/runs//timeline.md`) | 包含命令的完整映射:[`docs/VALUE_PROPS.md`](docs/VALUE_PROPS.md)。 ## 信任机制,逐一面板解析 点击**实时工作流**中的任意步骤,以准确检查它生成了什么。每一个面板 都是一个具体化的价值主张 —— 相同的产出物可以在没有 OpenFab 的情况下被第三方验证。 ### Spec — 自然语言变为机器可检查的契约 Base (LLM) 根据你的简单意图编写带有版本的规范**以及**其验收标准 (`a1`, `a2`, …)。这个确切的规范会被分发给基座并与运行一起提交。 ![Spec — 根据你的自然语言编译的契约](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/bb601b98c3095433.png) ### Generate — 身份与 AI/人类署名 记录 agent **DID**、基座 · 模型、运行时以及 **prompt SHA-256**,每一个 被更改的文件都通过摘要锁定,并标记为 `author: ai | human`。 ![Generate — agent 编写的内容,带有逐文件的 ai/human 署名](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/f6e557d3b6095438.png) ### Verify — 可复现性 “验收”是机器可检查的完成定义:每一个标准都是一个必须以 0 退出的 shell 命令,**在策略受控的沙箱中重新运行** —— 任何人、任何时候都可以执行。 ![Verify — 在沙箱中执行的验收契约](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/1caa5b9745095444.png) ### Sign — 签名溯源 (in-toto / SLSA) 一份 in-toto/SLSA 证明,由 fab 的 `did:key` 签名(对规范化 JSON 进行 ed25519 签名),带有 `payload_sha256` 防篡改锁定,并且每次人类签字都有一个不同的 `did:key`。 ![Sign — 加密溯源,in-toto/SLSA,did:key 签名者](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/dfae6e8798095449.png) ### Gate — 证明与可审计性 信任决策会 **阻断合并,直到满足条件**:11 项针对声明类型、断言、署名、签名、签字和机器验收的合规性检查 (C1–C11)。 ![Gate — 信任决策,C1–C11 合规性检查](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/37979c82c4095454.png) 一旦发布,相同的产出物就可以在产品上浏览 —— 并且 **可以被任何人、在任何 forge 上、在没有 OpenFab 的情况下重新验证。** ### Provenance — 完整的签名证明 完整的 `openfab/generation` 断言:断言类型、agent **DID**、基座 · 模型、 prompt SHA-256、验收结果、payload SHA-256、每一个签名、逐文件的 **ai/human** 署名,以及人类签字 —— 原始的证明 JSON 仅需一键即可查看。 ![Provenance 标签页 — 完整的签名 in-toto/SLSA 证明](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/53d01a667b095459.png) ### Audit trail — 可审计性 (EU CRA / SLSA) 每一个操作 —— AI 的编写和每一次人类签字 —— 都是一个**带有 in-toto/SLSA 溯源尾部信息的签名 git commit**,合并受制于 N-of-M。这条追踪记录是提交到仓库中的纯 git + JSON,因此任何 forge 上的第三方工具都可以对其进行验证。 ![Audit trail 标签页 — 带有溯源尾部信息的签名提交图](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/fd931ad2e4095504.png) ### SBOM — 供应链 为产品提供的一份 SPDX 软件物料清单,每一个文件都由 SHA-256 锁定。 ![SBOM 标签页 — SPDX 物料清单](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/4208e7b770095509.png) ### Decision log — 决策记忆 整个运行过程的人类可读时间线 —— 意图、由 LLM 编写的规范、记录在案的 假设和开放性问题、沙箱验收、签名以及门禁 —— 这是该工厂产出的持久 资产。 ![Decision log 标签页 — 人类可读的运行时间线](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/11d59483e0095514.png) ### Reproduce & verify — 主权证明 “不信任任何事物,验证一切。”重新验证签名,确认提交的 源码与签名摘要 **位级完全一致 (bit-identical)**,并 **在沙箱中重新执行每一项验收检查** —— 得出一个最终结论。 ![Reproduce — 签名有效,源码位级一致,验收全部通过](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/a5fab68db9095523.png) ### Maintainers & reputation — 人类参与,以及不断积累的声望 信任门禁只有在获得预先批准的 **维护者白名单** (每一个都是一个 `did:key`)的 **N-of-M 签字** 后才会放行。**声望** 是对已签名 证明的纯粹投影 —— 每个 DID 的编写 / 接受 / 签字 —— 因此声望是 *从可验证的 工作中赚取的*,而不是在一个单独的数据库中声明。 ![Maintainers (N-of-M 白名单) 以及从签名证明中投影出的声望](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/edd8b21bdb095529.png) ## 架构 围绕稳定的 Core 的两个正交可插拔轴 (PRD §3): ![OpenFab 工作流与可插拔架构](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/0fff6449f6095534.svg) - **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, 可视化界面, 可重复构建, 网络流量审计, 自动化软件工厂, 通知系统