跳到正文

05|AI Infra 架构审核与生产收敛 ​

一句话:生产收敛守的是四条硬约束而非功能清单:身份不可自报,tenant_id、subject_id 只从网关验签后的上下文派生;上游密钥不进客户端,连接描述只回答“去哪调用”;租户隔离必须由跨租户负向测试证明;SLO、容量与灾备必须由演练和对账取证,代价是拿可用性换正确性——授权快照过期或控制面不可达时 fail-closed,新增调用一律拒绝。

定位:本篇是 06 专栏的架构基准篇,对 00–16 进行交叉审核,给出修正后的目标架构、关键契约与生产验收门槛。若其他篇章与本篇冲突,以本篇和源码事实为准;状态与证据等级以 06-架构委员会评审与闭环台账.md 为准。 审核对象:HiMarket 源码快照、当前本地实证环境、RAGFlow 知识底座、mem0 记忆方案。 审核日期:2026-10-26 结论:方向成立,当前证据足以支撑 POC / 方案演示,不足以直接进入生产。市场控制面已有部分实证,身份、凭证、数据面、多租户隔离、计量与灾备仍未闭环。 评审记录:六视角桌面评审结论、50 项缺口、25 项 P0、ADR 与闸门状态板见 06-架构委员会评审与闭环台账.md;本篇不另立状态。


一、执行摘要 ​

1.1 成熟度判定 ​

能力域当前结论主要依据生产判定
HiMarket 市场控制面部分实证本地起栈;Nacos 导入 Skill/Worker;模型与 MCP 产品创建;发布、订阅链 APPROVED有条件可用
MCP / 模型数据面未闭环未装 Higress;未完成凭证调用、工具发现、限流与计量不可上线
企业身份设计完成、未实证OIDC 代码存在,但 ID Token 签名校验为 TODO不可上线
Skill / Worker 分发部分实证Nacos 元数据导入成立;包签名、扫描、版本回滚未验证仅内部试用
RAGFlow 知识底座单机 POCv1.0.0-rc2 小样本链路跑通(4 chunk/193 tokens);未做多租户、HA、容量与越权测试不可上线
记忆底座单机 POC13 篇完成 mem0 服务化与基础链路;身份绑定、跨租户、删除、投毒、HA 未验证不可上线
可观测 / 计量 / 审计缺口大多为设计描述,没有统一事件模型与对账机制不可上线
灾备 / 容量缺口大缺少真实压测、故障注入和 RPO/RTO 演练不可上线

1.2 P0 阻断项(12 类,细项 25 项见 06) ​

  1. 身份伪造风险:HiMarket OIDC 未校验 ID Token 签名;在没有前置可信网关时,不能把 OIDC 回调结果视为可信身份。
  2. 凭证边界错误:市场连接描述只应包含“去哪调用”,不能包含上游模型、MCP、RAGFlow 的长期密钥。密钥必须由网关或凭证中介在调用时注入。
  3. 订阅与调用未闭环:订阅 APPROVED 只代表市场关系成立,不代表网关已经生成可用凭证、路由和配额。
  4. 多租户隔离未证明:Portal、Consumer、知识库 ACL、记忆 user_id 之间的映射尚未做交叉越权测试。
  5. RAGFlow 为 RC 版本:v1.0.0-rc2 不能作为生产基线;必须锁定稳定版本与镜像 digest。
  6. 错误的生产安全方案:RAGFlow 的 SSRF 护栏不应通过“绕过”解决;应改为受控内网白名单、出站代理或经评审的上游修复。
  7. 无高可用与灾备:单机 Compose、单 MySQL、单 Nacos、单网关均不满足生产 SLO。
  8. 计量事实不可对账:仅有订阅记录不等于用量;必须定义幂等的计量事件、网关权威口径与日结对账。
  9. 记忆身份与删除未闭环:POC 直接接受请求体 user_id,只证明存储过滤、不证明身份不可伪造;删除未覆盖缓存/派生数据,缺可验证完成状态与 legal hold 分离。
  10. 管理面提权与公开攻击面:HiMarket Admin、Nacos、Higress 控制台若共用入口/凭据,或 17 个 @PublicAccess 端点未逐项复核,管理面可成为越权入口;必须独立入口、MFA、JIT、break-glass 审批与公开端点清单。
  11. 成本滥用(Denial of Wallet):缺按租户/用户/产品/工具的 token、调用、并发、日预算与异常熔断;攻击者可用长对话、批量工具调用或流式连接击穿预算。
  12. 文档口径越权:14–16 曾把目标态施工图写成“生产方案、不设前置验证”,与本篇证据结论冲突;本轮已由 06 ARC-02 收口(改为“目标态施工图 + E0–E4 标注”),正式会签前仍按 P0 治理项跟踪。

1.3 审核结论 ​

方案应继续保持“市场控制面 + 独立数据面 + 契约化执行层”的方向,但需要从“功能串联”升级为“可治理的生产系统”:先收口身份、凭证、租户和调用链,再补知识/记忆,最后做 HA、容量和灾备。不要把 POC 的 happy path 写成生产能力。

与 08 参考方案的关系:本文复用其“控制面与运行时解耦、实例边界/NetworkPolicy、Vault/KMS 密钥治理、生命周期回收、配额与全链路审计”的生产化原则;但市场控制面与产品契约以 06 的 HiMarket 为准,不机械复制 08 的版本与灰度细节。


二、源码与实证基线校正 ​

本次以本地源码快照 C:\Users\Administrator\Desktop\02-项目代码\himarket 为准,并核对运行中的 RAGFlow 环境。

项目原文口径校正后事实影响
HiMarket 版本多处称 v0.5.0Git 3a63fc5(2026-10-23),pom.xml 为 1.0-SNAPSHOT不能把源码快照等价为某个正式发布版
Controller 数量30 个当前快照 28 个数量应作为快照事实,不应作为稳定接口承诺
ProductType主要写 3 类实际 7 类:REST_API、HTTP_API、MCP_SERVER、AGENT_API、MODEL_API、AGENT_SKILL、WORKER“五类市场”是业务分类,不等同于 ProductType 枚举
免认证端点17 个当前快照有 17 个 @PublicAccess 注解,静态展开为 17 个 GET 端点;此前“34 个”是误把注解注释/文档引用计入17 的口径基本正确;有效端点数仍需运行时扫描,不能把注解数直接当端点数
ProductRefResult含 mcpConfig、agentConfig、modelConfig当前 DTO 仅含 productId/sourceType/gatewayId/*RefConfig/nacosIdGET /products/{id}/ref 返回的是引用元数据,不是可凭证明文
toTransportConfig()返回 url/transport/tools/凭证当前只返回 mcpServerName、transportMode、url工具清单与凭证由其他链路注入,不能混写
MCP 外网域选择过滤 intranet 后取公网域源码确实过滤 intranet,但企业私有部署可能只有内网域直接使用会返回空配置;企业版必须显式配置投递域名
MCP 元数据脱敏非管理员自动脱敏McpMetaResult.sanitize() 当前只清空 subscribeParams不能把“sanitize 已覆盖所有敏感字段”作为安全假设
OIDC 验签生产需补 JWK 验签OidcServiceImpl 明确 TODO是生产 P0,不是普通增强项
RAGFlow 版本多处称 v1.0实际运行镜像 v1.0.0-rc2RC 版本不可作为生产稳定基线

说明:源码行号会随快照变化,本文优先记录类名、方法语义与可复核结论,避免把行号当作长期契约。


三、修正后的目标架构 ​

3.1 控制面与数据面分离 ​

架构约束:

  • HiMarket 是市场控制面与人类入口,不承载业务请求转发。
  • Higress 是唯一数据面入口;模型、MCP、知识、记忆都通过受控路由访问。
  • Nacos 是配置与内容引用源,不保存长期密钥,不作为运行时强依赖进入每次请求。
  • 凭证中介负责把“消费者凭证”兑换成“上游短期凭证”,实例不持有上游长期密钥。
  • 执行层只认稳定的产品端点与授权上下文,不感知 RAGFlow、mem0、模型供应商的内部实现。

3.2 四个平面 ​

平面职责关键状态失败时的影响
控制面产品、发布、订阅、审批、配置发布强一致优先新订阅/变更受阻,已有调用尽量不受影响
数据面鉴权、路由、限流、协议转换、流式转发低延迟、可降级直接影响业务可用性
异步面文档解析、向量化、记忆提取、审计落盘最终一致、可重试影响新鲜度,不应阻塞在线查询
证据面指标、日志、链路、计量、审计可追溯、可对账无法运营与追责,属于生产阻断

四、身份、授权与凭证契约 ​

4.1 四类身份必须分开 ​

身份示例生命周期用途
人类主体员工、管理员、审核人跟随 HR/IdP登录、审批、查看自己的订阅与数据
工作负载Agent 实例、应用、CI 任务跟随实例/应用调用市场产品
Agent 委托Agent 代表某员工执行任务单次任务/短时把人类授权安全地传给工具链
平台服务网关、知识中介、记忆服务平台管理内部服务间 mTLS 与最小权限

错误做法:把 developer_id、user_id 当作 Consumer 凭证;或让 Agent 在请求体里自报 user_id。

4.2 授权链 ​

text
企业 IdP subject
  -> HiMarket Portal / Developer(人类身份)
  -> Consumer + Subscription(工作负载与产品授权)
  -> 短时 Access Token(product / tool / environment / tenant scope)
  -> Higress 鉴权
  -> AuthZ + Credential Broker 校验订阅、工具白名单、配额
  -> 注入上游短期凭证 + 签名上下文
  -> 目标 MCP / 模型 / 知识 / 记忆服务

4.3 关键规则 ​

  1. tenant_id、subject_id、consumer_id 只能来自网关验证后的令牌或签名上下文,禁止信任请求体。
  2. 人类访问使用 OIDC;工作负载访问使用 OAuth Client Credentials 或受控 API Key;两者不得混用。
  3. 每个 Consumer 至少绑定 tenant_id + environment + product scope;生产与测试凭证隔离。
  4. 订阅校验必须在数据面实时生效;订阅撤销后,已有会话设置最大存活时间。
  5. 上游密钥只存在于 Vault/KMS 或网关内存;Nacos、连接描述、日志、备份中不得出现明文。
  6. OIDC 必须校验签名、iss、aud、exp、nonce、state 与重定向白名单。仅校验 exp 不构成认证。
  7. 工具调用使用最小 scope;高风险工具(写文件、发消息、转账、删除)默认需要 HITL 审批。

4.4 凭证中介 ​

市场不应把供应商密钥直接分发给调用方。推荐两种模式:

  • 托管出口模式(默认):调用方只拿平台凭证,网关注入上游凭证。适合模型、RAGFlow、内部 MCP。
  • 令牌交换模式:网关通过 OAuth Token Exchange 获取短时下游令牌。适合支持标准 OAuth 的 SaaS MCP。

禁止“把上游 API Key 拼进 MCP 连接配置再返回给客户端”的设计。

4.5 工作负载身份与 Agent 委托 ​

四类身份必须有可验证的载体,不能只靠字段约定:

身份推荐载体关键约束
人类主体OIDC ID/Access Token短时、绑定 aud,完成 JWK 验签与 nonce/state 校验
工作负载K8s ServiceAccount + OIDC/SPIFFE,或 mTLS 证书不把静态 API Key 写入 Pod;按 namespace/service 最小权限
Agent 委托OAuth 2.0 Token Exchange(RFC 8693)或签名 JWTsub=Agent、act=人类、aud=产品、tenant_id、scope、jti,TTL ≤ 15 分钟,一任务一令牌
平台服务mTLS + 服务级授权不使用共享管理员 Token;按调用方服务授权

禁止:Agent 持有员工的 refresh token;把人类 Token 原样透传给工具;用通配 scope 或跨租户 aud 换取“省事”。

4.6 订阅与授权传播:本地快照 + fail-closed ​

数据面不能每次调用都同步访问 HiMarket,否则控制面会成为调用链的单点。推荐:

text
HiMarket 订阅状态机:PENDING → APPROVED → SUSPENDED / REVOKED / EXPIRED
  -> 发布带 epoch/version 的签名授权快照或事件
  -> AuthZ 本地缓存(key: tenant + consumer + product + version)
  -> 每次调用校验快照版本、有效期、scope、工具白名单
  • 授权快照 TTL 建议 ≤ 60 秒;撤销事件目标 ≤ 10 秒生效;
  • 快照缺失、版本过期、控制面不可达且无法确认时 fail-closed;
  • 控制面短时故障可让已确认的存量授权在 TTL 内继续,新增/变更授权拒绝;
  • 每次 allow/deny 都要记录 subscription_id / epoch / reason,便于追责与对账。

4.7 凭证中介的故障与轮换 ​

  • Credential Broker 必须多副本、跨故障域,不能成为新的单点;
  • 上游凭证使用动态短期凭证或 Token Exchange,按租户/产品隔离,禁止跨租户复用;
  • Broker 不可用时,新调用 fail-closed;不得回退到静态密钥或明文连接配置;
  • 凭证轮换、吊销、过期要有审计与告警;在途令牌到期即失效;
  • Secret Zero 由工作负载身份完成,Nacos、镜像、Git、日志、备份不得出现长期密钥。

五、MCP 数据面契约 ​

5.1 发布与调用 ​

text
供给登记:Nacos / API Definition 保存非敏感引用
  -> HiMarket 校验元数据、版本、工具 schema
  -> 配置发布器生成稳定产品端点、路由、配额、工具白名单
  -> 消费者订阅并通过审批
  -> 网关按 consumer + product + tool 放行
  -> 凭证中介注入上游凭证
  -> 目标 MCP Server

稳定端点应按“产品 + 版本 + 环境”生成,而不是直接暴露 Nacos 中的临时地址。企业私有网络必须显式配置内网投递域名,不能依赖 toTransportConfig() 的“过滤 intranet 取公网域”逻辑。

5.2 工具契约 ​

每个 MCP 工具至少要登记:

字段要求
名称与版本全局唯一,语义化版本
输入/输出 schemaJSON Schema;严格校验,拒绝额外字段或超限载荷
副作用等级read / write / external / destructive
超时与重试只对幂等工具自动重试;写操作禁止盲目重试
幂等键写操作必须支持 idempotency_key
数据分类是否接触个人信息、机密、外部网络
审批策略哪些参数组合需要人工确认
速率与并发按租户、用户、工具三层配额

5.3 Streamable HTTP 与流式 ​

  • 远程 MCP 优先使用 Streamable HTTP;对仍使用 SSE 的存量服务设置兼容期和下线计划。
  • 网关必须支持:会话 ID、SSE 透传、无缓冲、长连接超时、客户端断连回收、请求体上限。
  • 不能把 MCP 的 POST 与 GET 流式通道拆成不同鉴权策略,否则会出现绕过。
  • 网关日志只记录工具名、参数摘要与结果状态,不记录完整敏感参数或模型上下文。

5.4 配置发布、回滚与漂移检测 ​

控制面到数据面的配置变更必须按“生产变更”治理:

text
HiMarket 期望状态 -> 签名配置包(product/version/route/quota/tool allowlist)
  -> 配置发布器(outbox + 幂等 apply + 版本号)
  -> Higress 金丝雀/灰度
  -> 健康检查 + 指标对比
  -> 全量或回滚
  • 每条路由/工具配置带 config_version,网关回报实际生效版本;
  • 发布失败或版本不一致要阻断发布并告警,不能“目录显示已发布、网关仍是旧配置”;
  • 支持一键回滚到上一个已验证版本;回滚也要审计;
  • 定时对账“期望状态 vs 实际状态”,输出漂移清单与责任人;
  • Nacos namespace/ACL 按环境与租户隔离;配置内容签名/审核,防配置投毒。

六、知识与记忆的生产收敛 ​

6.1 知识库:从“直连 RAGFlow”改为“知识中介” ​

推荐链路:

text
Agent -> Higress -> AuthZ/Credential Broker -> Knowledge Broker -> RAGFlow -> 索引

Knowledge Broker 的职责:

  • 用网关签名上下文确定 tenant_id / subject_id / consumer_id。
  • 维护“Portal 租户、知识库、数据集、文档 ACL、消费产品”的映射。
  • 在服务端生成检索过滤条件,禁止只靠客户端传 dataset_ids。
  • 统一执行混合检索、rerank、引用拼装、敏感字段过滤。
  • 对检索结果做租户泄漏检测与审计。

RAGFlow 的 permission: me/team/public 只能作为底层能力之一,不能直接等同于企业 ACL。企业共享知识库建议采用“租户级 RAGFlow 空间 + 数据集 owner/ACL + 服务端过滤”;个人资料使用独立数据集或独立空间。是否按员工创建个人 RAGFlow 租户,需要基于成本与共享需求单独决策,不能默认“一人一租户”。

6.2 知识导入 ​

必须补齐:

  • 上传病毒扫描、文件类型白名单、大小/页数配额。
  • 文档版本、增量更新、删除传播、重复文档去重。
  • 解析失败隔离与重试上限;毒文档不得无限重试。
  • PII/机密识别与脱敏策略;敏感文档标记与访问审计。
  • embedding 模型版本、维度、归一化方式写入索引元数据;升级时支持双写与重建。
  • 检索黄金集与回归评测;上线前验证 recall@k、引用正确率、越权率为零。

6.3 记忆服务 ​

记忆必须按以下层级隔离,任何查询都不得只靠客户端参数:

text
tenant_id > owner_subject_id > project_id > memory_type > visibility

生产要求:

  • user_id 由鉴权上下文派生;请求体中的 user_id 仅作为断言,不一致直接拒绝。
  • 事实、画像、技能分开建模;技能记忆默认不跨用户共享,除非经过显式发布与审核。
  • 记忆写入是异步任务,必须有幂等键、去重、失败重试与死信队列。
  • 记忆提取使用独立模型策略与预算,防止攻击者通过长对话制造高额抽取成本。
  • 删除、导出、到期回收必须覆盖向量库、元数据、审计快照;删除请求要有可验证的完成状态。
  • 防记忆投毒:来源可信度、冲突检测、敏感内容过滤、人工纠错入口。

6.4 数据治理与生命周期 ​

知识、记忆、Skill/Worker 都要有统一的数据治理标签:

维度最低要求
分类分级public / internal / confidential / restricted;与 ACL、加密、导出策略联动
来源与血缘记录来源系统、导入人/服务、文档版本、解析器版本、embedding 版本
保留与删除业务保留期、审计保留期、备份保留期分别定义;删除任务可验证
合规冻结legal hold 白名单、审批、解除;冻结与普通删除失败区分
数据主体请求查询、导出、更正、删除(DSAR)流程与时限;跨副本传播
跨境/驻留模型供应商与存储区域白名单;禁止把受限数据路由到未批准区域

6.5 质量与安全评测闸门 ​

对象指标上线门槛(建议,需业务确认)
知识检索recall@k、MRR、引用正确率、无答案拒答率黄金集 ≥100 问;越权率=0;引用可定位
知识问答忠实度、答案正确率、PII 泄漏率抽样人工评审;高风险场景必须拒答/转人工
记忆事实准确率、冲突率、过期残留率、删除完成率跨会话正确引用;删除后 0 召回
工具/MCPschema 符合率、副作用误触发率、超时率写操作 100% 可审计;高风险工具 HITL
安全Prompt Injection/投毒拦截率、越权拦截率红队用例全部阻断,且有审计

评测集、脚本、基线结果要版本化;每次模型、解析器、embedding、权限策略变更都重跑回归。


七、非功能目标与容量 ​

7.1 建议 SLO(需业务确认) ​

指标建议目标说明
市场门户可用性99.9%控制面短时不可用不应影响存量调用
数据面可用性99.95%网关、鉴权、模型/MCP 出口
模型首 Token 延迟P95 < 2s(同城)不含供应商排队;需分模型统计
MCP 工具调用P95 < 1.5s(只读)写操作单独统计
知识检索P95 < 1.5s不含生成
订阅变更生效< 60s撤销可更快,目标 < 10s
异步解析95% 在 15 分钟内完成按文档大小分档
审计落盘< 5 分钟关键安全事件应近实时
计量对账差异< 0.1%以网关事件为权威源

7.2 容量规划原则 ​

  • 先按“注册用户数、日活、峰值并发、平均上下文、工具调用比、文档量与解析峰值”建立模型,再做压测;不要用容器数量代替容量结论。
  • 数据面与控制面独立扩容;RAGFlow API、ingestor、embedding、索引分别评估瓶颈。
  • 流式请求按并发连接数而非仅 QPS 估算;长连接要预留连接数与内存。
  • 向量库按“向量维度 × 文档块数 × 副本数 × 索引开销”估算,并预留重建空间。
  • 记忆服务按“日新增记忆条数 × 抽取模型成本 × 保留期”做成本上限。

7.3 高可用基线 ​

组件最低生产形态注意
Higress3 副本,跨故障域配置与证书一致性
HiMarket Server3 副本无状态,会话外置
MySQL主从/多可用区备份与 PITR
RedisSentinel/Cluster不能作为唯一计量账本
Nacos3 节点配置发布失败要可回滚
对象存储纠删码/多副本版本化与防误删
RAGFlow API多副本 + 探针拆分进程需经官方支持验证
ingestor独立扩容队列积压与毒任务隔离
Qdrant多副本/快照明确恢复与重建流程

7.4 灾备目标(建议) ​

数据RPORTO方式
控制面数据库≤ 5 分钟≤ 30 分钟跨 AZ 主从 + PITR
对象存储≤ 15 分钟≤ 1 小时版本化 + 跨域复制
知识库元数据≤ 15 分钟≤ 1 小时数据库备份 + 索引可重建
记忆数据≤ 5 分钟≤ 1 小时快照 + 事件重放
审计/计量0(同步落盘)≤ 30 分钟追加写、不可变存储

所有 RPO/RTO 必须通过演练证明,文档承诺不算完成。

7.5 容量模型工作表(必须用实测填充) ​

容量评审不接受“容器数量=容量”的结论,至少要填完以下输入与推导:

输入说明
租户数 / 用户数 / DAU活跃维度与峰值系数
峰值 QPS / 并发流式连接分别估网关、模型、MCP、知识、记忆
平均输入/输出 token按产品与模型分档
工具调用比 / 写操作比决定 MCP 与 HITL 容量
文档量 / 页数 / 解析峰值决定 ingestor、OCR、队列
文档块数 / embedding 维度 / 副本数决定向量存储与重建空间
记忆日增条数 / 保留期 / 抽取模型决定抽取 TPM 与存储成本

推导公式(示例):

text
向量存储 ≈ 块数 × 维度 × 4 bytes × 副本数 × (1 + 索引开销)
embedding TPM ≈ 峰值文档页数 × 每页块数 × 每块 token / 目标完成时间
网关连接数 ≈ 峰值流式请求数 × 平均会话时长 / 目标复用率

输出必须包含:各组件副本数、CPU/内存、连接数、队列积压上限、30% 余量、压测场景与瓶颈结论。没有压测数据时,只能写“待验证”,不能写“可支撑 N 用户”。


八、可观测、审计与计量 ​

8.1 统一上下文 ​

每个跨组件请求至少携带:

text
trace_id, request_id, tenant_id, subject_id, consumer_id,
product_id, product_version, subscription_id, tool_name,
environment, region, result, latency_ms

8.2 分层指标 ​

层必观测指标
市场产品发布成功率、订阅审批时长、配置同步延迟、目录漂移数
网关QPS、错误率、P95/P99、限流拒绝、鉴权延迟、SSE 连接数
模型输入/输出 token、TTFT、总时延、供应商错误、降级次数
MCP工具发现失败、调用成功率、工具级时延、schema 校验失败、超时
知识解析成功率、队列积压、检索 P95、空召回率、引用命中率、越权拦截
记忆提取成功率、队列延迟、命中率、删除完成率、污染告警
安全401/403、签名失败、越权尝试、异常 egress、密钥轮换失败

8.3 计量事件 ​

计量不是“双写”:网关产生权威事件,下游可重放聚合。

json
{
  "event_id": "evt_uuid",
  "occurred_at": "2026-10-26T10:00:00Z",
  "tenant_id": "tnt_001",
  "subject_id": "emp_001",
  "consumer_id": "cns_001",
  "product_id": "prd_001",
  "subscription_id": "sub_001",
  "tool_name": "knowledge.search",
  "usage": {"calls": 1, "input_tokens": 0, "output_tokens": 0, "bytes": 2048},
  "result": "success",
  "trace_id": "tr_001"
}

要求:event_id 幂等、事件时间可纠正、日结对账、异常事件可人工补录但不能篡改原始账本。

8.4 计量账本与审计的最小契约 ​

计量事件至少补齐:

text
event_id, event_type, occurred_at, received_at,
tenant_id, subject_id, consumer_id, product_id, product_version, subscription_id,
tool_name, operation, unit, quantity, billable, currency, price_version,
result, error_code, trace_id, idempotency_key, source_region

对账规则:

  • 网关事件是权威源;下游聚合表可重放,不允许反向覆盖原始事件;
  • 重复事件按 event_id 去重;迟到事件按 occurred_at 归集到原账期,并生成调整分录;
  • 每日对账:网关事件 vs 聚合账本 vs 计费系统,差异 < 0.1%,超阈值阻断结算;
  • 人工补录必须生成新事件并保留审批人,不能修改原始账本;
  • 审计与计量保留期分离:审计按合规,计量按财务;均需防篡改存储。

日志与审计的 PII 约束:

  • 禁止记录完整 Prompt、完整文档内容、上游密钥、Authorization 头;
  • 需要排障时记录哈希/摘要与采样上下文,按角色临时授权;
  • 日志、Trace、审计、备份统一保留策略与访问审计;
  • 删除请求要覆盖可检索副本;备份中的副本按保留策略到期失效,并在合同中说明。

九、安全设计补充 ​

威胁必做控制
OIDC 令牌伪造签名、iss/aud、nonce、state、时钟偏差、JWKS 轮换
凭证泄漏托管出口、短期令牌、Vault/KMS、日志脱敏、轮换与吊销
租户越权服务端 ACL、强制 tenant 过滤、交叉租户测试、行级审计
Prompt Injection把工具/文档输出当不可信数据;系统指令与数据隔离;高风险工具审批
SSRF出站域名白名单、解析后 IP 校验、禁止元数据地址、专用 egress 代理
工具投毒工具清单签名、schema 固定、版本审核、来源可信度
Skill/Worker 供应链包签名、SBOM、漏洞扫描、静态检查、隔离执行
知识泄漏检索前 ACL、结果过滤、引用权限复核、下载水印
记忆投毒来源标记、冲突检测、敏感内容过滤、人工纠错
模型供应商风险数据驻留、零留存条款、脱敏、区域路由、回退模型

委员会补充的四类风险:

  • 混淆代理(Confused Deputy):每个令牌必须绑定 aud(具体产品/工具)与租户,禁止通配;Agent 不能拿 A 产品令牌调用 B 产品。
  • Denial of Wallet:按租户/用户/产品设置 token、调用次数、并发与日预算;异常用量自动降级/熔断并告警,不能只依赖上游账单。
  • 管理面提权:HiMarket Admin、Nacos 控制台、网关控制台使用独立入口、MFA、JIT 授权与 break-glass 审批;管理面不得与业务入口共享凭据。
  • MCP/Skill 供应链:MCP Server 镜像/包签名、来源证明、SBOM、漏洞扫描、出站白名单;Skill/Worker 与 MCP 同一套审核,不能在市场里“先上架再补签”。

SSRF 修正:RAGFlow 的私网地址限制是正确护栏。生产方案应采用“显式允许 emb-service 内网地址 + 出站 NetworkPolicy/代理 + 禁止任意 URL”,而不是通过 @Builtin 驱动绕过检查。若必须支持内网模型服务,应由平台维护允许清单并做 DNS 重绑定防护。


十、交付顺序与验收闸门 ​

闸门不是“功能做完”,而是“证据达到最低等级”。P0/P1/P2 与 14–16 的 Java 模块 M0–M8 / 功能里程碑 0–3 是两条线(ADR-11);详细 ID、Owner、目标窗口与状态见 06。 证据等级:E0 文档、E1 源码/配置、E2 单机 POC、E3 负向/压测/故障/恢复、E4 生产运行与对账。P0 的身份/越权/凭证/删除类最低 E3;计量与 SLO 生产准入要 E4。

P0:让调用链真实可治理(建议 6–8 周,2 个并行小队) ​

  • 修复 OIDC 全量校验:JWK 验签、iss/aud/exp/nonce/state/PKCE/redirect、JWKS 轮换;补离职/转岗/session revocation。
  • 建立工作负载身份(SA+OIDC/SPIFFE 或 mTLS)与 Agent 委托(RFC 8693 或签名 JWT,sub/act/aud/tenant/scope/jti,TTL≤15 分钟)。
  • 实现凭证中介:动态短期凭证/Token Exchange,字段级脱敏,Broker 故障 fail-closed,禁止静态回退。
  • 订阅授权传播:签名快照+epoch,数据面 TTL≤60 秒,撤销≤10 秒,控制面不可达时 fail-closed。
  • 完成 HiMarket + Higress + Nacos + 真实 MCP/模型的凭证调用闭环;连接描述不含上游密钥。
  • 为 MCP 工具建立 schema、白名单、副作用分级、超时、载荷限制、会话绑定、出站 allowlist 与审计。
  • 删除文档与仓库中的明文口令、真实密钥和跳过校验脚本;复核 17 个公开端点。
  • 完成跨租户、跨用户、跨 Consumer、跨知识库/记忆的负向测试。
  • 记忆接口收口:请求体 user_id/tenant_id 只作断言,身份由签名上下文派生;补跨用户/跨租户负向测试。
  • 定义可验证删除与 legal hold 分离;删除覆盖向量、元数据、缓存与导出副本。
  • 管理面独立入口、MFA、JIT、break-glass 审批;按租户/用户/产品/工具设置配额、预算与 Denial of Wallet 熔断。
  • 配置发布:签名配置包+config_version+金丝雀+一键回滚+期望/实际漂移对账。
  • 计量账本:网关权威事件、幂等去重、迟到调整、日对账<0.1%。

P0 闸门证据表:

验收项最低证据(E3)不接受
OIDC伪造/过期/错 aud/重放/开放重定向全部拒绝;JWKS 轮换不停机“代码已写”
工作负载身份伪造凭证、跨 namespace 调用被拒;密钥扫描 0 命中“用了 K8s”
Agent 委托令牌交换矩阵;跨产品/跨租户/过期/重放全部拒绝“有 JWT”
凭证中介端到端调用+全链路 0 泄漏+故障 fail-closed“Vault 已装”
授权传播撤销 10 秒内 403;控制面断连行为符合 fail-closed“订阅表有状态”
租户隔离跨租户/跨用户/跨 Consumer 负向测试为 0“有 tenant_id 字段”
管理面无 MFA/JIT 无法进入;公开端点清单签字“有管理员角色”
Denial of Wallet超预算/突发流量被限;跨副本计数误差在阈值内“有 Redis 限流”
MCP/模型数据面Consumer→Higress→AuthZ→Broker→上游→计量事件 可复现“订阅 APPROVED”
知识 ACL跨数据集/跨用户 0 越权;ACL 变更可传播“RAGFlow permission”
记忆身份/删除伪造 user_id 被拒;删除完成率 100%“user_id 过滤”
配置发布发布失败自动回滚;漂移清单为 0“有发布按钮”
计量连续 7 日三方对账<0.1%(生产准入为 E4)“有日志”

P0 退出:06 中 25 项 P0 全部 Verified,或有签字且未过期的 Accepted Risk;否则生产 No-Go。

P1:让知识底座可用(建议 6–8 周) ​

  • 升级/锁定 RAGFlow 稳定版本与镜像 digest;RC 仅限隔离 POC。
  • 引入 Knowledge Broker,完成租户/数据集/文档 ACL 与服务端过滤。
  • 完成文档版本、删除传播、解析失败隔离、PII 扫描、病毒/类型/配额控制。
  • 建立黄金集评测与引用正确率门槛;模型/解析器/embedding 变更回归。
  • 完成 HA 部署与容量压测;单节点故障不中断查询。
  • 补齐来源血缘、删除可验证、备份保留策略。

闸门:黄金集 recall/引用正确率达标;跨租户越权为 0;删除后 0 召回;解析队列可控;单节点故障不中断查询。

P2:让记忆与运营闭环(建议 8–12 周) ​

  • 记忆服务按租户/用户/项目强隔离;补齐删除、导出、legal hold、同意与撤回。
  • 异步事件幂等、重试、死信、成本预算与抽取降级。
  • 统一计量账本与日结对账;成本分摊到租户/产品/模型/工具。
  • 完成故障演练、RPO/RTO 验证、FinOps 与产品生命周期/下架治理。

闸门:删除请求可验证完成;计量差异<0.1%;灾备演练通过;成本可归集且超预算可熔断。


十一、文档修订映射 ​

文档本次修订重点
00-生态市场构建总纲.md版本/数量校正;补齐 06 与 14–16 目录;把“全闭环”改为目标态;重写演进与验收口径
01-HiMarket底座与五类市场.md28 Controller、7 类 ProductType;区分业务市场与产品类型
02-三角接线…md修正 ProductRefResult/toTransportConfig;扣掉“连接配置含凭证”;补内网投递与凭证中介
03-企业落地推演…md修正 Consumer 语义与公开端点;补 HA、SLO、计量与安全闸门
04-本地部署实证…md删除明文秘密;纠正 PublicAccess 与下载权限;把危险 workaround 标为不可复用
10-知识底座开题…md修正 RAGFlow MCP 路径;以 Knowledge Broker 取代“权限嵌套继承”;补评测与治理
11-知识库落地实证…md明确 RC 版本;把“绕过 SSRF”改为受控内网访问;纠正 K8s 拆分假设
12-记忆底座实施方案.md补齐身份防伪、强隔离、幂等、删除、投毒、审计与成本控制
13-记忆底座落地实证.md从“生产方案”校正为 POC;明确 user_id 过滤不等于身份绑定,补生产差距
06-架构委员会评审与闭环台账.md新增:六视角评审、E0–E4 证据分级、50 项缺口、25 项 P0、ADR、闸门状态板
14-包皮总体架构与统一入口网关需求.md把“生产方案、不设前置”改为“生产目标态设计”;明确 HiMarket=控制面、Higress=数据面;补 06 闸门约束
15-按百炼能力面的模块需求清单(上).md统一“目标态施工图”口径;“已实证”按 E1/E2 解释;补功能里程碑≠生产闸门
16-按百炼能力面的模块需求清单(下)与实施路线对标总表.md同上;修正 Security“已实证”越权表述;补权限/审计与闸门映射

十二、最终结论 ​

这套方案的产品方向正确:用 HiMarket 做企业 AI 能力市场的控制面,用 Higress 做统一数据面,用 Nacos 承载引用,用 RAGFlow/mem0 作为可替换能力供给。真正需要纠正的不是“再加多少功能”,而是把以下四件事做成硬约束:

  1. 身份不可自报:人类、工作负载、Agent 委托三类身份分离,服务端派生上下文。
  2. 密钥不进客户端:连接描述只描述地址与协议,凭证由中介注入。
  3. 隔离必须可证明:租户、用户、知识库、记忆都要有负向测试,而不是文档声明。
  4. 生产门槛可验收:SLO、容量、灾备、计量、供应链安全必须有证据。

在这些门槛完成前,合理定位是“可演示、可继续投入的 POC”,而不是“可承载企业生产流量的 Agent 生态市场”。


十三、架构师委员会评审闭环(2026-10-26) ​

本节是 06-架构委员会评审与闭环台账.md 的摘要。详细 ID、Owner、目标窗口、证据与状态以 06 为准;本节只保留架构基准层的结论。

13.1 评审形式与结论 ​

  • 形式:桌面评审(Desk Review),AI Infra 架构师牵头,按总体架构、身份安全、知识记忆、SRE/容量、数据治理、运营发布六个视角交叉审阅。
  • 性质:不是企业正式评审会签,不替代安全、法务、合规、财务签字。
  • 结论:方向正确,有条件通过内部试点;生产上线 No-Go。
  • 根因判断:当前最大风险不是功能不够,而是证据不够 + 文档口径越权——把 E0 设计、E1 源码、E2 单机 POC 写成了生产结论。

13.2 六视角裁定 ​

视角裁定主要阻断
总体架构有条件通过边界口径、里程碑×闸门矩阵、多租户模型、fork 维护
身份与安全生产不通过OIDC 验签、工作负载身份、Agent 委托、凭证中介、授权传播、管理面 MFA/JIT、Denial of Wallet、MCP 安全
知识与记忆生产不通过Knowledge Broker ACL、RAGFlow RC、跨租户负向测试、记忆身份绑定、删除/legal hold、投毒
SRE/容量/灾备生产不通过SLO 实绩、HA 拓扑、容量压测、RPO/RTO 演练
数据治理与合规生产不通过分类分级、血缘、保留、DSAR、审计防篡改、跨境、PIPL/等保映射
运营与发布生产不通过配置发布/回滚/漂移、计量对账、产品生命周期、FinOps、滥用治理

13.3 闭环定义与当前状态 ​

闭环 = Owner + 目标窗口 + 可复现证据 + 验收人 + 回归条件,不是文档写完。状态只允许 Open / In Progress / Blocked / Verified / Accepted Risk;Verified 必须有 E3/E4 证据包,文档修改不能改变状态。

闸门当前已 Verified说明
P0 生产阻断Blocked0 / 25安全、隔离、数据面、配置、计量未闭合
P1 能力可用Blocked0 / 23依赖 P0
P2 运营闭环Blocked0 / 2依赖 P1
内部试点Conditional—仅隔离环境、非真实员工数据、有 kill switch

13.4 Top 12 P0(最小关闭集) ​

Top 12 是最小关闭集,不是全部 P0;完整 25 项见 06 §三。

  1. SEC-01 OIDC 全量校验与负向用例。
  2. SEC-03 工作负载身份,禁用静态 key。
  3. SEC-04 Agent 委托 Token Exchange。
  4. SEC-05 凭证中介与全链路密钥扫描。
  5. SEC-06 授权快照/epoch/撤销传播/fail-closed。
  6. SEC-09 MCP 工具契约、会话绑定、出站治理。
  7. KNO-01 Knowledge Broker ACL。
  8. KNO-02 RAGFlow 稳定版+digest。
  9. KNO-03 知识跨租户负向测试。
  10. MEM-01/02 记忆身份绑定、删除与 legal hold。
  11. SRE-02/03 HA 拓扑与容量压测。
  12. OPS-01/02 计量对账与配置回滚。

13.5 下一次评审入口 ​

  • SEC-01/03/04/05/06/09 证据包齐备且至少 E3,安全评审人签字。
  • KNO-01/02/03 与 MEM-01/02 的跨租户/跨用户负向测试报告齐备,越权为 0。
  • 真实数据面链路 Consumer → Higress → AuthZ → Credential Broker → MCP/模型 → 计量事件 可复现。
  • 配置发布失败可自动回滚;期望/实际漂移为 0。
  • 容量模型用实测数据填完;HA 单节点故障演练通过。
  • 计量三方对账连续 7 日差异<0.1%,或差异全部可解释并有调整分录。
  • 06 中 P0 全部 Verified 或有签字的 Accepted Risk;文档 P0 口径冲突扫描为 0。

13.6 不宣称项(与 06 一致) ​

  • 不宣称生产可用、数据面闭环、订阅即授权、多租户隔离已证明。
  • 不宣称 user_id 过滤等于身份绑定;不宣称 RAGFlow/mem0 可生产。
  • 不宣称已做 HA/DR/压测/渗透/红队/计量结算/合规批准。
  • 不宣称 08 专栏的环境证据适用于本环境;不宣称企业正式委员会已会签。

一句话收口:这套方案可以继续投入,但必须从“功能串联”切换到“证据驱动”;在 25 项 P0 以 E3/E4 证据关闭前,生产上线应保持 No-Go。

把 AI 工程讲到既懂也会用