架构文档 · C4 + 部署

Everythink Studio
全球系统架构

一套无代码 AI 操作系统,把一个组织——企业、政府或社区——变成一个活的地理空间网络:地图上的社区与房间,能回答、销售并连接人的 AI 助手,以你自己的品牌,运行在 web、iOS 与 Android 上。自 2016 年投入生产。

Rust 2026 · 工作区 17 个 crate Postgres + Timescale + pgvector Dragonfly (Redis) Next.js 16 · pnpm monorepo HAI 引擎 · 13 种问题类型
初始版本 · 渐进式下载 本文档为架构的初始版本,并不包含完整的架构。 这种不完整是预期之内且有意为之:架构将从 aap-human-agent 模板——人机交互模式包(升级、委派、代理 agent、权限边界)——被渐进式下载而来。下载由 agent 执行;权限始终归于人类。

机密 — Carlos Matias Baglieri 2026 · 自 2016 年投入生产

议程

六个章节,一个系统

从产品愿景到真实实现:Rust 后端、Next.js 前端、部署与路线图。

1 · 产品与愿景

拓扑 · HAI 引擎 · 治理

空间即路由器;13 种问题类型;隔离、联邦、agentic、主动式。

2 · 后端

Rust 2026 · 17 个 crate · 六边形

零 I/O 领域、端口 & 适配器、3 套认证体系、一个 Postgres、实时。

3 · 前端

Next.js 16 · FSD + MVVM

4 个应用、13 个包、SDK 门面、RBAC can()、单点登录、设计系统。

4 · 部署 / CI

docker-compose · 两级 CI

7 个服务、ALB 上的 TLS、预生产直接部署、main 分支完整性门禁。

5 · 路线图

BYOK · 锚定 · 自托管 · DAO

v2 方向,明确尚未实现。

6 · 收尾

诚实盘点

哪些是生产、哪些是设计、哪些是规划。

愿景 · 拓扑

空间即路由器

每个人都有自己的个人组织,并订阅 n 个组织。每个组织——企业 · 政府 · 工会 · 社区——包含 n 个网络;每个网络包含 n 个社区;每个社区包含 n 个房间。每个节点都有自己的multipolygon:包含关系向内延伸(网络多边形内部的碎片化社区)或向外延伸(多边形外部的社区)。该拓扑在数学意义上是分形的:每一层都是上一层的自相似副本——S = ⋃ fᵢ(S),即 Hutchinson 算子的吸引子(Banach 不动点定理)。网络之间相互互操作(联邦):一个网络只通过共享公开内容连接到另一个网络。当一个人加入某个组织时,便获得对该组织 n 个社区与 n 个房间的访问权。其在该组织中所做的工作会被记录在组织中,并镜像到其个人组织:它生成按人计的声誉,被提炼为已解决的问题,并被复制到其个人网络,由该网络进行追踪。HAI 从累积的回答中为每个用户构建上下文层。

缩放:100%
拓扑:网络 → 社区 → 房间 → persona
个人组织 / 组织网络社区房间
愿景 · 本体论

平台的四层

每一上层通过类型化接口组合其下各层的保证。产品(v1 模块):HAI、Matchmaking、Chat、Calendar、Market、Social。在 4 层之上,有 10 个行业实例化。

缩放:100%
本体论:4 层 + 10 个行业实例化
愿景 · 原则

支配架构的三条原则

每条原则都是一个可验证的保证,而非意向声明。它们共同确立了组合规则(端到端)、行业乘法规则(不修改的继承)与诚实规则(已实现且已度量 = 保证)。

原则 1 · 层组合端到端组合规则。 若每层 L₁…L₄ 都建立起自己的保证,且每个层间接口只传递类型化且经过校验的值(边界处用 Zod,DTO → 领域映射器),则端到端性质成立:健全地诱导(第 3 层,P-A3)→ 在有界的终态信封内执行(第 3 层,P-A4)→ 路由到正确的目的地(第 1 层,拓扑)→ 恰好一次投递(第 2 层,P-A7)→ 在有界、可审计、租户隔离的权限之内(第 4 层,P-A6/P-A8)。
原则 2 · 行业实例化无张力乘法规则。 任何在不修改第 1–4 层的前提下实例化它们的行业部署(P-C1…P-C10)都会继承其保证,且只添加行业特有的性质。平台是一个产品;行业是同一核心之上的视图。不存在按行业分叉——只有基于稳定接口的类型化组合。
原则 3 · 诚实盘点诚实规则。 声明的保证与已实现且已度量的机制所蕴含的性质严格对应。设计/规划中的能力在其机制实现之前不计为保证。不变量:没有度量,就没有保证。有保证,就有仪表盘。
第 1 层 · 拓扑 & 引擎

HAI 引擎——13 种问题类型

自 2016 年投入生产。一个刻意收窄、可组合的前提:交互是类型化问题的工作流,平台是一个地理定位的拓扑,使每个回答都落在定义明确的上下文中。在 v2 中,引擎运行在两层推理之上:习得网络(确定性,无 LLM)与 A2A 推理,后者填补尚不存在的节点并使网络坍缩。

缩放:100%
HAI 引擎:类型化问题 → 路由 → 上下文
产品 · v1 → v2 模块

Calendar——销售服务并管理日程

卖家提供带价格、类别与可用时段的服务(type_event);顾客预约(event)时给出参加者、日期与地点。在白标模式下,同一网络中的任何卖家都可见且可下单——“他人在我的网络中销售”。支付会在网络中创建商户,并按 product_key 查找产品。

缩放:100%
Calendar:在网络中销售服务
卖家 · 个人组织网络 = 可见性边界支付 · 网络中的商户
产品 · v1 → v2 模块

Market——销售产品,并让他人在我的网络中销售

卖家上架带商户、提供者与价格的产品(market_product),并为其附加优惠/优惠券。顾客构建购物车(market_item)并结账(merchant_tx),网络密钥被写入 json_data。双方均可发起争议与评分。商户通过 merchant.network 绑定到网络——“他人在我的网络中销售”。

缩放:100%
Market:在网络中销售产品
卖家 · 商户交易中的网络密钥争议 + 评分
产品 · v1 → v2 模块

HAI + 匹配 + 聊天——每个用户的个人网络

HAI 通过理解每个用户在寻找什么来填充其个人网络:网络从企业/政府/社区/工会的网站或文档中自动生成内容,问题流被生成,不同房间的匹配之间的交叉链接(同一或不同社区)也被生成。匹配把流程自动化:一个用户意图 → 社区调度频道中的一张采购订单,地理定位于目标房间。基于 socket + FCM 的实时聊天。这些流程是跨切的(它们跨越房间),并运行在两层推理之上:习得网络 + A2A,后者负责填补与坍缩。

缩放:100%
HAI + 匹配 + 聊天:个人网络
HAI · 13 种问题类型房间 · 厨房 · 调度实时聊天跨社区
产品 · v1 → v2 模块

Social——网络促销与用户互动

网络在自己的空间中开展促销,用户在社交模块中互动:带点赞与评论的新闻/故事,类别由管理员设定。社交信息流存在于拓扑之中——网络发布,社区分片,房间接收。

缩放:100%
Social:促销与互动
网络 · 发布与推广新闻/故事 · 点赞 · 评论
产品 · v1 → v2 模块

两层推理——坍缩中的神经网络

所有模块都位于某个网络的房间中,并且是跨切的:来自售前访客房间的一个数据流(HAI)连接到来自需要技术支持的顾客的数据流。与 v1(静态图)不同,这里存在神经网络:若后续节点不存在,A2A 会确定接下来的步骤、保存它们,网络随之坍缩。其范围是有限的——一个用户在网络中提出的问题会为所有人保存下来——经 A2A 的 LLM 消耗随时间递减,永不增长。

缩放:100%
两层推理:习得网络 + A2A,有限坍缩
房间 · 跨切数据流第 1 层 · 习得网络 · 无 LLM第 2 层 · A2A · 仅补空洞有限范围 · 消耗递减
第 2 层 · 平台

可验证的多租户隔离

自 2016 年以来,企业、政府、NGO 与社区共享同一个 AI 基座,同时让私有的东西可证明地保持私有。由引用监控器(Reference Monitor)全面介导;唯一被允许的通道 = 公开作用域。

缩放:100%
多租户隔离
私有,绝不跨越公开,唯一通道
第 2 层 · 平台

联邦网络与稳定匹配

网络基于各自的公开投影进行联邦。匹配只在邻近半径内的公开作用域上进行;延迟接受 → 稳定匹配。

缩放:100%
联邦:网络之间的公开投影
第 3 层 · 交互

类型化诱导——少数几个问题即可完成学习

系统提问,用户回答,回答成为上下文。诱导是类型化的(引擎计算不会出人意料)、忠实的、高效的。它运行在第 1 层(习得网络,确定性)之上;当某个节点不存在时,第 2 层(A2A)确定步骤、将其持久化,网络随之坍缩——少数几个问题即可完成学习,且每个新问题都为所有人保存。

缩放:100%
类型化诱导
第 3 层 · 交互

Agentic 工作流——信封

某些节点需要开放式的工作:一个把推理与工具调用交替进行的 LLM agent(ReAct 风格),直到得到类型正确的答案。这就是推理第 2 层(A2A):当习得网络中不存在后续节点时,agent 确定接下来的步骤、将其持久化,网络随之坍缩——LLM 消耗随时间递减,永不增长。信封为三种失败模式划界。

缩放:100%
Agentic 节点:推理 + 有界工具

不保证:值的语义正确性。agent 可以完成、保持在范围内,并给出类型正确但内容错误的答案——这要靠评估与人工门禁来解决,而不是靠信封。

第 3 层 · 交互

主动式协助——信息的价值

它是被动式聊天机器人的反面:主动发起而非等待。难点在于克制——只在行动的期望净价值超过保持沉默的价值时才开口。

缩放:100%
主动式循环:观察 → 评估 → 行动
第 4 层 · 治理

有边界的权限与来源可追溯

一个能够行动的 agent——花钱、联系第三方、移动数据——必须被限制在用户同意的范围之内,仅为既定目的使用信息,并留下一条可供解释与撤销的痕迹。

缩放:100%
治理栈:同意 → 能力 → 日志
第 4 层 · 治理

服务于人类网络的自主网络

有边界的委托、合同网分配(发布 → 投标 → 授予),以及协调的诚实极限:只有在部分同步条件下才有活性。

缩放:100%
服务于人类网络的自主网络
横切关注点

安全与证据协议

安全

Saltzer–Schroeder 原则

完全仲裁、机制经济性、失效安全默认值。安全债制约着平台的若干保证。

证据

部署支持的断言

断言 C 在部署中得到支持,当且仅当 (i) 类型良好,(ii) 每个前提都有来自生产流水线的已验证证据,(iii) 前提满足结论。否则,C 是一个设计断言。

缩放:100%
安全本体
安全本体:边界、信任、威胁。
缩放:100%
证据流水线
流水线:插桩 → 存储 → 验证 → 审计。
行业

十个行业实例化

每个行业部署在不修改第 1–4 层的前提下对其进行实例化,并继承其保证

行业 1

多站点企业

精确一次交付、Little 定律、站点间互不干扰。

行业 2

政府

平等对待、可审计性、公平性的不可能性。

行业 3

人道主义

字典序最小化(leximin)分诊、最优传输、对弱势群体的隐私保护。

行业 4

社区

持续合作、声誉、Ostrom 原则。

行业 5

医疗健康

带临床隐私保护的照护拓扑。

行业 6

教育

构建在拓扑之上的学习路径。

行业 7

金融

筛选流水线与功效曲线。

行业 8

物流

货物流动、价格公平。

行业 9

防御

明确的民用防御范围。

行业 10

社区信用

针对公共资源的声誉与治理。

诚实盘点

生产 / 设计 / 推算

推算状态
推算状态图——自我评估,而非外部审计。
自 2016 年起进入生产

拓扑 · 引擎 · 平台 · 引出 · 治理

核心机制自 2016 年起已部署上线。

2026 设计

智能体化 · 主动 · 联邦 · 自主

相关能力大多处于 2026 年设计阶段;自主性在其整个范围内均为设计。

推算

所有定量评估

每个定量数字均为推算值,有待在真实平台上测量。

后端 · Rust 2026

17 个 crate,六边形架构,单个 Postgres

组合根(api)→ 用例 ×10 → 适配器(ledger、a2a、courier)→ 领域(core,零 I/O)。单个 Postgres(Timescale pg17 + pgvector)承担一切:账本、事件、嵌入、任务/whisper 地理缓存。SQL 在编译期验证(.sqlx/ 离线缓存,107 条查询)。

缩放:100%
后端:api → 用例 → 适配器 → core → Postgres
api · 组合根用例 ×10适配器core · 零 I/OPostgres · Timescale pg17 + pgvector.sqlx/ · 107 条查询离线
后端 · 六边形

端口 & 适配器——领域居中

领域(everythink-core)不涉及任何 I/O。适配器实现面向数据库、邮件、A2A 的端口。用例负责编排。组合根(everythink-api)把一切装配起来。

缩放:100%
六边形:领域居中
领域(零 I/O)适配器(sqlx、Brevo、A2A)用例
后端 · 17 个 crate

为什么有这么多 crate——每个 crate 一个明确的角色

每个 crate 都有一个角色:组合根(api)、客户端(sdk、cli)、用例 ×10、基础设施适配器(a2a、courier)、端口 + 持久化(ledger)、领域(core)。

缩放:100%
Crate 角色分类
后端 · 工作区

17 个 crate 汇入 core

everythink-api 是枢纽;一切都依赖 core(零 I/O)。SDK 位于工作区内部(backend/crates/everythink-sdk),因为它与 core 耦合。

缩放:100%
依赖图:17 个 crate → core

注:libs/ 存放其他语言的 SDK(vendored 参考、外部代码)。

后端 · 请求流

从认证到持久化——一个完整请求

客户端 → api(认证 + 速率限制 + 校验)→ loom(运行)→ ledger(通过仓储 trait 解析 profile)→ sisters(扇出)→ oracle(merge → 归一化的 Ensemble)→ ledger(持久化)→ 200 OK。

缩放:100%
请求生命周期
后端 · 用例

六个用例:编排、认证与数据

loom — 编排:通过 LoomStore 端口 / LoomPersistence 适配器持久化。 ingest — 信号流水线:处理传入信号。 scry — 情感分析:参考端口 SentimentReader / PgSentimentReader。 eval — 回归测试体系:持续评估。 warden — 认证:JWT access/refresh、Google OAuth、IP 绑定。 whisper — HMAC 签名的 webhook,精确一次交付。

缩放:100%
用例:loom · ingest · scry · eval · warden · whisper
后端 · 安全

中间件链——trace → timeout → CORS → 路由

入站请求 → Trace + request_id → Timeout 60s → 408 → CORS + 压缩 → 带 5 个分支的路由子树。

缩放:100%
中间件链
后端 · 安全

三种认证体系共存于一个路由器

公开(probes/register/login/refresh)· Eye-Key(HMAC,60 秒滑动窗口速率限制)· 用户 JWT(warden,Console)· Atlas WS(自认证,按用户上限)。

缩放:100%
三种认证体系
后端 · 安全

无继承的 RBAC——一个函数,一张显式矩阵

can(role, action) 是一个 const fn:Owner → true;Profile Read/Write Self → true;对 (role, action) 显式匹配;其余 → 仅限 Owner。在 handler 中 AUTHORIZE → 拒绝时返回 403。

缩放:100%
RBAC can(role, action)
后端 · 数据

一个数据存储承担一切

timescale/timescaledb-ha:pg17 + pgvector(vector(1024) + HNSW)。单个连接池。六个数据域:Ledger、Simulations、Users、Embeddings、geo_signals、Jobs。健康检查:docker-compose 中的 pg_isready(service_healthy)。

缩放:100%
单个 Postgres
后端 · 数据

持久化经由端口,绝不经由具体实现

Repository TRAIT · Pg*Repository(所有 SQL 都在这里)· MockRepository(无数据库的测试)· AppState:Arc<dyn Repository> · 用例调用该 TRAIT。

缩放:100%
Trait ↔ 适配器契约
后端 · 数据

编译期校验的 SQL,可逆迁移

编辑 .up.sql + .down.sql(成对)→ just sqlx-prepare → 提交 .sqlx/*.json(107 条查询)→ 在 SQLX_OFFLINE=true 且无活动数据库的情况下构建/CI。

缩放:100%
sqlx 离线缓存
后端 · 部署细节

健康检查 + SQLX 离线 — 精确部署

docker-compose:postgres(pg_isready,10s/5s/10)→ dragonfly(redis-cli ping,10s/3s/10)→ api(service_healthy)。app/admin:健康检查已禁用(distroless/static)。CI:SQLX_OFFLINE=true,并提交 .sqlx/ 缓存。

缩放:100%
后端部署:健康检查链 + SQLX 工作流
postgres · pg_isready · 间隔 10s / 超时 5s / 重试 10dragonfly · redis-cli ping · 间隔 10s / 超时 3s / 重试 10api · depends_on service_healthySQLX_OFFLINE=true · .sqlx/ 107 条查询
后端 · 实时

SSE(Tide)+ WebSocket(GeoHub)— 按瓦片扇出

TideBroker:支持复合主题的 SSE,broadcast 256,keep-alive 15s,Last-Event-ID 重连。GeoHub:WS,使用 DashMap[Tile → broadcast 64]、视口导向、可选开启 gzip。

缩放:100%
实时:SSE + WS 按瓦片
后端 · 用例

六个编排与数据用例

loom

编排

通过 LoomStore 端口 / LoomPersistence 适配器进行持久化。

ingest

信号管道

将传入的信号处理进系统。

scry

情感分析

参考端口 SentimentReader / PgSentimentReader。

eval

回归测试套件

持续质量评估。

warden

用户认证

JWT access/refresh、Google OAuth、IP 绑定。

whisper

HMAC webhook

持久、恰好一次的投递。

后端 · 用例

everythink-warden — 用户认证

warden

JWT access/refresh

密码哈希(bcrypt)、轮换的 JWT access/refresh、Google OAuth、带 IP 绑定的会话(用于异常检测)。

/api/v1/auth/*

register · login · refresh · me · google · sessions

Console + Atlas WS 的用户 JWT 边界。在 /auth 完成一次登录后,令牌写入 localStorage('everythink:auth')。

缩放:100%
Warden:认证流程
后端 · 用例

everythink-whisper — 签名 webhook 与持久投递

whisper

HMAC 签名 webhook

持有 WhisperStore 端口 / PgWhisperStore 适配器的投递 worker。HMAC 签名用于接收方验证载荷。

jobs

Postgres 中的持久队列

指数退避重试、恰好一次语义、面向持续失败的死信队列。

缩放:100%
Whisper:webhook 投递流程
后端 · 适配器

A2A(协议)与 Courier(邮件)

everythink-a2a

Google A2A 协议

基于 HTTP 的 JSON-RPC,带代理任务信封、状态轮询与结果获取。让 Sister 可以在不改动调用方的情况下移出进程。

everythink-courier

事务性邮件

Brevo 适配器或仅记录日志的 no-op。为系统通知提供模板渲染 + 投递跟踪。

缩放:100%
适配器:A2A + Courier
后端 · 客户端

everythink-cli 与 everythink-sdk

everythink-cli

运维工具

new-key 引导铸造 Eye Key:生成本地 Ed25519 密钥对,指纹 → Postgres,明文仅在内存中展示一次,HMAC 用于认证。

everythink-sdk

工作区内的 Rust SDK

backend/crates/everythink-sdk:与 everythink-core 耦合,仅依赖 core(零 I/O),面向领域消费方。

缩放:100%
客户端:CLI + SDK
后端 · 不变量

六条永不违反的不变量

1

归一化的概率

仅在一处:everythink-oracle::ensemble。sum(prob) ≈ 1.0,场景按降序排序,熵以 nats 计。

2

Eye-Key 明文绝不落盘

只有 HMAC + 指纹写入 Postgres。明文仅在内存中展示一次。

3

Sisters 绝不写入 Postgres

它们返回 SisterOutput;由 Loom 持久化。生成与存储清晰分离。

4

可逆迁移

每个 .up.sql 都有对应的 .down.sql。just migrate-add NAME 会同时创建两者。

5

AppState 仓储 Arc<dyn Trait>

测试使用 mock。依赖 trait,绝不依赖具体的适配器。

6

持久化经由端口

适配器之外绝不出现具体的 Pg*。私有表使用切片自有端口。

缩放:100%
六条不变量
前端 · Next.js 16

4 个应用、13 个包、同一身份

web (:3000) · app (:3001) · admin (:3002) · mobile (Expo)。包:types、sdk-core + 各 facade、domain、ui、auth、api-client、telemetry、config。

缩放:100%
前端:4 个应用 + 13 个包
apps · Next.js 16 + Expotypes · domain · configsdk-core + facadesui · auth · api-client · telemetry
前端 · C4 第 1 层

四个界面、一个后端、三类参与者

参与者:最终用户(访客 → 已认证)· 开发者(Eye-Key)· 管理员/运营者(staff)。界面:web/app/admin/mobile。后端 API(REST + SSE,位于 /api/v1)。

缩放:100%
C4 上下文
前端 · C4 第 2 层

容器 — 整个 monorepo

4 个应用 + SDK 层(6 个 facade)+ 服务(4 个)+ 设计系统 + 工具链 + types(叶子)。使用缩放进行探索。

缩放:100%
C4 容器:完整 monorepo
前端 · 应用

web、app、admin、mobile — 每类受众一个

缩放:100%
4 个应用
前端 · SDK

六个 facade、一个核心、核心中零端点

sdk-core(HttpClient、consumeSSE、TokenProvider)· sdk-guest · sdk-auth · sdk-atlas · sdk-eye · sdk-admin。

缩放:100%
SDK 层:按信任范围划分的 facade
前端 · 包

应用服务、UI 与构建期

domain(映射器)· telemetry(outbox)· api-client(遗留)· auth(NextAuth v5 + RBAC)· ui(套件 + 令牌)· config(eslint 预设)· types(Zod,叶子)。

缩放:100%
服务 + 设计 + 工具链
前端 · SDK

sdk-core 只负责 HOW,从不涉及 WHAT

端点只存在于各 facade 中;sdk-core 用 Zod 依据 @everythink/types 校验每个响应;一旦契约漂移,抛出 SdkError 树中的 ContractViolation。

缩放:100%
SDK facade:端点仅在 facade 中
前端 · FSD + MVVM

Feature-Sliced Design + MVVM —— 导入只向下流动

屏幕(View)→ View-model hook → feature.repository.ts(通往 SDK 的唯一入口)。ESLint 边界规则 no-restricted-imports(INV-1)。FSD 分层:shared → entities → features → widgets → app。

缩放:100%
FSD + MVVM 仓储边界
前端 · 身份

一次登录,一个源站,四个界面

apps/web /auth(唯一源站)→ httpOnly cookie 'everythink_at' → 内存中的 token + localStorage 种子 → EverythinkAuthGuard + resolveMe(GET /api/v1/auth/me)→ 基于角色的门禁。

缩放:100%
共享登录
前端 · 身份

can(role, action) —— 显式矩阵,无继承

三层:(1)各应用 auth.ts 的 allowedRoles →(2)middleware →(3)UI 与 server actions 中的 can()。对应后端的 everythink_core::rbac。

缩放:100%
前端 RBAC
前端 · UI

一个样式表,语义化 token,Tailwind v4

设计的单一事实来源::root 中的 CSS token、经 @theme(Tailwind v4)的语义映射,以及移动端使用镜像 token 的 NativeWind。各应用消费语义化组件(bg-accenttext-foregroundfont-display/mono),绝不使用裸十六进制色值。宇宙紫调色板:--gold: #d9ab5c--violet: #9d7df5--emerald: #10B981

缩放:100%
UI/主题架构:token → Tailwind → 组件
:root · CSS 自定义属性@theme · 语义化 Tailwind v4@everythink/ui · 组件套件移动端 · 镜像 token 的 NativeWind
前端 · 类型

网络边界处的 Zod —— 单一契约

线上传输类型在 @everythink/types 中用 Zod 定义一次。SDK 校验每一个后端响应(z.parse(response));非法载荷抛出 ApiError,绝不崩溃。组件永远看不到原始 JSON:*.repository.ts 负责解析,@everythink/domain 把 DTO 映射为 model,view-model 再把带类型的 state 暴露给 View。

缩放:100%
Zod 校验边界:API → SDK → repository → domain → view-model
后端 API · JSONsdk-core · 用 Zod 校验*.repository.ts · 唯一边界ApiError · 带类型,绝不崩溃
前端 · 移动端

apps/mobile —— Expo、expo-router、NativeWind

基于 React Native,使用 expo-router(基于文件的路由)与 NativeWind(RN 版 Tailwind)。主题系统镜像 web 设计系统的 token(tailwind.config.js + src/theme/index.ts)。它消费 sdk-guestsdk-authsdk-atlasdomaintelemetry。被排除在 web CI 之外:--filter=!@everythink/mobile

缩放:100%
移动应用结构:Expo + NativeWind + 主题
expo-router · 基于文件的路由NativeWind · RN 版 Tailwindsrc/theme · 镜像 tokenCI · 不参与 web turbo
前端 · 规则

四条由工具强制执行的规则

可由 ESLint + TypeScript 验证的规则,而非口头约定:(1)INV-1:只有 *.repository.ts 可以导入 SDK(no-restricted-imports);(2)FSD 分层:导入只向下流动(shared → entities → features → widgets → app),跨 feature 只能经由公共 barrel;(3)共享登录:web 与 app 共享 localStorage('everythink:auth') + resolveMe()(4)三层 RBAC:auth.ts 的 allowedRoles → middleware → UI 与 server actions 中的 can(role, action)。

缩放:100%
FSD 分层 + INV-1 + 登录 + RBAC
INV-1 · 只有 repository.ts 可导入 SDKFSD · 导入只向下登录 · localStorage + resolveMeRBAC · 三层,无继承
部署 · docker-compose.prod.yml

7 个服务,TLS 终止于 ALB,机密存于 .env

ALB → nginx :80 → api/web/app/admin + postgres + dragonfly。一切共用一个 Postgres(TimescaleDB pg17 + pgvector)。Dragonfly 承担缓存、任务与 SSE 扇出。

TLS 终止于 AWS ALB 预生产直接部署 两级 CI/CD
api · 启动时执行迁移web · Next.js standalonepostgres · pg17 + pgvectorapp/admin · 静态 distroless
部署 · 技术栈

docker-compose.prod.yml —— 完整技术栈

ALB(TLS)→ nginx :80 → api(:18081,启动时执行迁移)· web(Next standalone)· app/admin(静态 distroless)· postgres(timescale/timescaledb-ha:pg17 + pgvector)· dragonfly(兼容 Redis)。7 个服务:postgres · dragonfly · api · web · app · admin · nginx。

缩放:100%
生产技术栈 · 7 个服务
postgres · timescaledb-ha:pg17 + pgvectordragonfly · 兼容 Redisapi · 启动时执行迁移web · Next.js standaloneapp/admin · 静态 distroless
部署 · 网络

nginx 作为唯一入口

nginx :80 是唯一的内部入口。它将 /api/v1/* 路由到 api:18081,/ 到 web:3000,/app/* 与 /admin/* 到静态服务。web 通过 EVERYTHINK_API_INTERNAL_URL(http://api:18081)与 api 通信。api 依赖 postgres 和 dragonfly,条件为 service_healthy。

缩放:100%
nginx 路由图
nginx · 唯一入口web → api · INTERNAL_URL健康检查 · service_healthy
部署 · 机密

backend/.env —— 机密的唯一存放处

docker-compose.prod.yml 通过 env_file 将 backend/.env 挂载到 api 与 web 服务。api 持有全部机密(JWT_SECRET、EYE_KEY_HMAC_SECRET、GOOGLE_CLIENT_ID、BREVO_API_KEY)。web 只接收 NEXT_PUBLIC_* 变量——绝不持有 BREVO_API_KEY。app/admin 是静态 distroless,构建中不含任何机密。

缩放:100%
机密边界图
api · 全部机密web · 仅 NEXT_PUBLIC_*规则 · web 绝不持有 Brevo
部署 · 流程

预生产直接部署 vs CI/CD 门禁

两条部署路径:预生产直接从工作树部署(不经过 main);生产必须合并到 main 并通过完整性门禁。这条规则至关重要:预生产不要使用 deploy workflow,因为它会拉取 main 的 :latest 并覆盖直接部署。

缩放:100%
预生产与生产的部署流程
预生产 · 工作树 → 脚本生产 · main → :latest → workflow规则 · 预生产绝不使用 deploy workflow
CI/CD · GitHub Actions

PR 上跑 affected,main 上跑完整性

两级流水线:PR 层只运行受影响的部分(后端:ci-affected-crates.sh;前端:turbo --affected),main 层运行完整完整性检查(完整后端 + 前端/移动端 + E2E + 安全)。main 始终保持绿色且可部署。

缩放:100%
两级 CI/CD 流水线
just ci · fmt · lint · check · testpnpm ci · turbo lint · typecheck · buildmain 完整性 · 全量 + E2E + 安全
路线图 · 🔵 尚未实现

联邦自托管节点 · BYOK · 每网络 DAO

v2 的路线图方向。以下均不是既有能力。流程:运营者本地生成 Ed25519 密钥对 → 仅指纹上传给 controller(BYOK)→ 自托管节点 → 账本锚定 → 仅在公共投影之上联邦 → 网络 DAO。

缩放:100%
路线图 v2:自托管 · BYOK · DAO
路线图 · 阶段

通往 v2 的五个阶段

阶段条目依赖交付物
1BYOKcrate everythink-byok · 表 node_keys · Ed25519 身份 + webhook · controller 仅持有指纹
2账本锚定阶段 1crate everythink-anchor · 表 anchor_commitments · 公证任务 · 链选择 = 运营者决策
3联邦自托管节点阶段 1–2节点 Docker 镜像(postgres、dragonfly、api、web、app、admin、nginx)· 联邦协议
4每网络 DAO阶段 2crate everythink-dao · network_proposals/network_votes/provenance_log 仅追加
5钱包 + 治理crate everythink-wallet · wallets/network_memberships · 员工/创业者/自由职业者 persona

每个阶段:一份 .up.sql + .down.sql 迁移、离线 .sqlx 缓存刷新、TDD(80%+)、绿色的 just ci。组织类型结构已 实现(5 值 OrgKind、DB CHECK、7 种法律形态的开办引导)。

路线图 · 锚定

候选链的参考架构

对 Postgres 账本哈希承诺进行公证的架构参考:Solana v0.8.13(Yakovenko)—— PoH 作为密码学时钟、带保证金/罚没的 PoS 共识、用于存储的 PoRep。链选择是运营者的显式决策;这是参考,不是实现。

缩放:100%
候选链引擎
PoH · 可验证的时间步PoS · 保证金 · 罚没 · ⅔ 绝对多数PoRep · 流式 · 存储Leader → Verifiers · 确认 = 投票~710k TPS · 亚秒级最终性CAP:一致性优先于可用性
结语

Everythink Studio —— 完整架构

从愿景到落地:拓扑与 HAI 引擎(2016 年起生产运行)、17 个六边形 crate 的 Rust 后端、采用 FSD/MVVM 的 Next.js 16 前端、Postgres + pgvector、两级 CI/CD、部署。边界说明:预测引擎(sisters/oracle/loom)是同一作者的另一款产品,仅存于本工作区。

Rust 2026 · 17 crates Postgres + pgvector · sqlx Next.js 16 · pnpm · FSD 3 种认证体系 · RBAC can() World Monitor · 地理信号 两级 CI/CD · 预生产直接部署
初始版本 · 渐进式下载 本文档是架构的初始版本,并不包含完整的架构。这种不完整是预期且刻意为之:架构将从 aap-human-agent 模板被 渐进式下载 —— 该模板是人机协作交互模式包(上报、委托、代理 agent、权限边界)。Agent 执行下载;权限始终归人类所有。

Everythink Studio · Carlos Matias Baglieri 2026 · docs/architecture.md · backend/README.md · frontend/README.md · COLLABORATION.md · cto.md

Everythink Studio · 架构
1 / 64 ← →