土法炼钢兴趣小组的算法知识备份

【系统架构设计】架构即 AI 上下文:让 AI 读懂你的系统

文章导航

分类入口
architecture
标签入口
#adr#c4#architecture-as-context#rag#openapi#topology#ai-agent#documentation#ssot

目录

101 约束破坏半径,102 用流水线兜底变更。两者都假设 Agent 或模型 知道系统长什么样——服务边界、既有决策、禁止事项、当前拓扑。若这些知识只存在于某人脑中或过期 Wiki,生成物会在局部自洽的同时系统性违反架构意图。

本文讨论:如何把架构工件变成 AI 可读、可检索、可版本化的上下文,而不是会话里一段随时过期的粘贴。ADR 与 C4 的基础写法见 0306;向量检索算法与 Milvus 内核见 vector-engine;RAG 工程见 llm-infra。本文不写 embedding 怎么训,只写 权威源与新鲜度

系列导航: ← AI 时代工程基础设施 · 系统架构设计索引 · AI 原生开发流程 →

相关专题: 架构决策与 ADR · C4 与架构文档 · 复杂性管理 · lakehouse 湖上向量边界


一、问题:上下文失败比模型失败更常见

1.1 失败模式

模式 表现 后果
幻觉边界 模型编造不存在的服务名、API、配置键 生成对接幽灵依赖的代码
过期文档 Wiki 写着「订单在 Mongo」,实际已迁 Postgres 正确文风、错误事实
局部切片 只看到当前仓,不知下游契约 破坏跨仓不变量
提示词膨胀 把整本设计文档塞进 context window 截断、注意力稀释、成本上升
无权威排序 多份互相矛盾的「架构说明」同等检索 随机遵守其中一份

Lewis 等人提出的 RAG(Retrieval-Augmented Generation)范式,核心是用检索到的外部知识约束生成[1]。工程上常被简化成「挂个向量库」;架构师要关心的是:检索命中的是不是当前权威,以及 权威如何更新

1.2 本文核心问题

  1. 哪些架构工件适合作为 Agent 上下文?机器可读性要求是什么?
  2. 单一真相源(SSOT)如何与多视图(C4 多层、运行时拓扑)共存?
  3. 与 RAG/向量引擎的分工边界在哪?
  4. 「文档即上下文」是否制造新的单点故障?

二、谱系:从 ADR/C4 到可检索上下文

2.1 ADR 作为决策记忆

Michael Nygard 提出的 Architecture Decision Records 用轻量文本记录背景、决策与后果,并随代码版本管理[2]。站内展开见 03。对 AI 而言,ADR 的价值是:

2.2 C4 作为结构视图

Simon Brown 的 C4 模型提供 Context / Container / Component / Code 分层视图[3]。站内见 06。对 Agent:

C4 图若只存在于绘图工具专有格式且无导出,对 Agent 几乎无用。优先 文本化(Structurizr DSL、Mermaid、纯 Markdown 列表)并进仓。

2.3 OpenAPI 与事件 schema 作为接口真相

相对散文架构文档,OpenAPI / AsyncAPI / JSON Schema 是 可执行的接口真相。它们既服务 101 的契约闸门,也服务检索:「这个 RPC 的字段是什么」应命中 spec,而不是命中某次聊天总结。

2.4 运行时拓扑

静态 C4 描述意图;运行时拓扑描述现状(服务发现、网格、副本数)。二者冲突时,事故排查以运行时为准,架构演进以决策+目标拓扑为准。自动导出(从 Kubernetes API、服务目录)可降低过期,但必须标注 观测时刻信任边界(导出管道被污染则上下文被污染)。

flowchart TB
  ADR["ADR repo"] --> Idx["Versioned index"]
  C4["C4 text / DSL"] --> Idx
  Spec["OpenAPI / schemas"] --> Idx
  Topo["Topology export"] --> Idx
  Idx --> Ret["Retriever"]
  Code["Source code"] --> Ret
  Ret --> Agent["Coding / ops Agent"]

三、工件清单与机器可读要求

3.1 推荐纳入上下文索引的工件

工件 格式偏好 更新触发
ADR Markdown,状态字段明确 架构决策变更 PR
C4 Context/Container DSL 或 Mermaid + 短文 边界/容器变更
OpenAPI / 事件 schema 规范文件 API 变更同一 PR
运行手册中的 禁止事项 短 Markdown,条目化 事故复盘后
服务目录元数据 YAML/JSON(owner、SLO 链接) 服务注册变更
拓扑快照 带时间戳的导出 定期 job 或发布钩子

3.2 不宜作为权威上下文的材料

3.3 分块与引用纪律

检索命中应带回 路径 + 版本(commit)+ 章节锚点,生成回答或补丁时应能引用。无法引用到仓库路径的「架构事实」,默认视为不可靠——与本站证据等级精神一致。


四、新鲜度与单一真相源

4.1 SSOT 不是「只准有一份文档」

SSOT 指 每个事实有一个权威出处

C4 与 ADR 可以同时存在:一个描述结构,一个描述决策;冲突时用 ADR 状态与 PR 审查解决,而不是让检索「平均」两份矛盾文本。

4.2 新鲜度策略

策略 做法 风险
同 PR 更新 API 变更必须改 spec;决策变更必须加/改 ADR 需门禁强制(102)
过期即失败 CI 检查「文档与 stub 生成物哈希」 维护成本
定时导出 拓扑每日快照 快照与意图图混淆
检索降权 对过期标记文档降分 依赖元数据质量

4.3 与 RAG / 向量引擎的分工

负责 不负责
本篇(架构上下文) 选哪些工件、权威与新鲜度、给 Agent 的引用纪律 HNSW/IVF 参数、分段算法
llm-infra RAG 篇 检索管线、重排、引文 grounding 替团队写 ADR
vector-engine Milvus/pgvector 等引擎内核 业务 SSOT 治理

把「架构文档丢进向量库」当成架构完成,是范畴错误:向量库解决相似检索,不解决 谁有权声明真相


五、争论:文档即上下文是否制造新 SPOF

5.1 双方

立场 主张
文档中心派 没有稳定文档层,Agent 只能读代码,跨服务意图不可见,幻觉边界必然
代码中心派 文档必过期;唯一可信是代码与测试;额外文档层是单点,污染则全局误导

5.2 机制层结论

双方都有工程事实支撑:文档过期是经典问题(03 开篇即讨论口头传统失败);纯代码检索在缺少跨仓契约时也会系统性犯错。

可辩护的折中不是「都要一点」,而是:

  1. 可执行契约(schema、测试、策略)优先于散文;
  2. 散文限用于决策与边界(ADR、C4 上层),并强制与变更同 PR;
  3. 检索默认附带 commit 与路径;无法落地文件的命中降权;
  4. 拓扑导出带时间戳,不得默认为目标架构。

这样「文档 SPOF」被弱化为「受门禁约束的版本化输入」;风险转移到与代码相同的评审流程——见 102/104


六、开放问题

  1. 运行时拓扑自动导出的信任边界
    控制面被攻破或错误标注时,Agent 会「正确引用」错误拓扑。如何对导出签名/认证仍缺通行实践。

  2. 多仓上下文一致性
    单仓 ADR 完善不等于平台级上下文一致。跨仓索引的权限与租户隔离(尤其面向外部 Agent)仍开放。

  3. 何时允许 Agent 写回文档
    自动更新 C4/ADR 可降新鲜度成本,也可能把幻觉写进权威源。写回是否必须人审晋升,尚无标准协议。


七、落地检查清单

  1. ADR 是否在仓内、有状态、可被路径引用?
  2. C4 上层是否文本化进仓,而非只在专有绘图工具?
  3. OpenAPI 是否与实现同 PR 更新并有 CI 校验?
  4. Agent 检索结果是否带 commit/路径?
  5. 拓扑快照是否标注时间,是否与意图图区分?
  6. 过期/废弃文档是否有降权或删除策略?

参考资料

论文

经典与官方

站内交叉

核心文献(本主题)

文献 引用点
Lewis et al., RAG 检索约束生成的范式
Nygard ADR 决策记忆格式
Brown C4 分层结构视图

实验与数据


系列导航: ← AI 时代工程基础设施 · 系统架构设计索引 · AI 原生开发流程 →

同主题继续阅读

把当前热点继续串成多页阅读,而不是停在单篇消费。

2026-04-13 · architecture

【系统架构设计】架构决策与 ADR:如何做出可追溯的技术决策

口头约定的架构决策会在人员流动中丢失,会在争论中反复翻车。ADR(Architecture Decision Records)用一种轻量的文档格式,把每一个关键技术决策的背景、选项、理由和代价写下来,跟着代码一起版本管理。本文从 ADR 的三种主流格式讲到 Git 仓库中的实操管理,再拆解 Spotify 和 Uber 的工业实践。

2026-07-29 · architecture

【系统架构设计】AI 原生架构:LLM 时代的系统设计

当 LLM 从离线批处理变成在线运行时组件,超时预算、按 token 计费、非确定性输出与多轮 Agent 编排必须进入架构的一等公民。本文从依赖语义差异出发,衔接弹性与过载保护,讨论网关成本治理、结构化输出与人审闸门、checkpoint 恢复与隐私友好的可观测,并划定与 RAG、向量引擎及训练基础设施的分工边界。

2026-04-22 · architecture / ai-infra

大模型基础设施工程

面向中国工程团队的大模型基础设施系列。从 GPU/CUDA/互联、训练框架与 3D 并行、vLLM/SGLang 推理引擎、量化与推测解码、RAG/Agent 到服务化、网关、可观测性与安全合规,覆盖 LLMOps 全链路。


By .