活文档 · 技术地图

LIA 如何构建,一层一层

系统的各个层——从屏幕到数据库——每个模块做什么、用了哪些技术、位于代码仓库的哪里,以及一个请求会走过哪些路径。

  • 59技术模块
  • 10层
  • 7带讲解的流程
  • 57基础设施模块
  • 63服务的业务领域

版本 4.6.02026年11月10日每次提交都会根据仓库数据保持最新

总览

系统的各层

从屏幕到数据库。悬停在模块上可描出它的联系,点击可查看它的技术、文件和决策。

依赖被依赖

客户端

用户直接接触的部分:Web 应用及其离线模式、移动端外壳,以及消息渠道。

边缘

位于互联网与应用之间的部分:隧道、内容策略、限流、会话。

API 与应用底座

按业务领域拆分的 FastAPI API,及其 SSE 流、有序启动和配置。

智能体编排

LangGraph 图:路由、规划或 ReAct 循环、人工确认、工具与回复。

模型与费用

访问各提供商的模型、推理、结构化输出、嵌入,以及每次调用的记账。

集成

外部服务的客户端、开放协议、沙箱以及语音通道。

后台任务

不靠请求就会运行的部分:单一领导者调度器、主动引擎、持久任务、自我诊断。

数据

状态存放在哪里:PostgreSQL 与 pgvector、Redis、文件,以及记录 LIA 做过、读过和决定过什么的登记簿。

可观测性

度量、查看、告警、回溯:指标、仪表盘、告警、日志、链路追踪。

交付

代码如何变成服务:镜像、持续集成及其守卫、经过验证的发布、安装器、演示实例。

流程

选择一个场景:它的步骤会在地图上逐一亮起。

层

点击某一层,单独显示它。

流程

一次请求、一次调用、一次交付的路径

每一步都会点明执行的模块,以及它所保证的事。

一条聊天消息的流程

从键盘到屏幕,途经图:一个请求、一条流,不暴露任何令牌。

  1. Web 应用
    浏览器把消息发送到同源的 API。
  2. 隧道、CSP 与限流
    隧道将其转发;调用方的速率受到检查。
  3. 会话与认证
    会话 Cookie 在服务器端得到验证。
  4. 按领域划分的 FastAPI
    聊天路由打开一条流并启动图。
  5. LangGraph 图
    从检查点重新加载对话状态。
  6. 路由器
    请求被分类,工具被打分。
  7. 规划器与执行器
    写出一份计划,验证后并行执行。
  8. 工具与清单
    每个工具都要通过授权门,并记入登记簿。
  9. 连接器客户端
    调用提供商时,没有任何打开的数据库事务。
  10. 回复合成
    根据结果合成回复。
  11. SSE 流式传输
    回复连同费用,在同一条流上逐字到达。

一次模型调用的全过程

事前设限,为提供商做转换,按当下价格计价,事后留痕。

  1. 版本化提示词
    组装提示词:稳定的部分在前,只有一条缓存边界。
  2. 记账与上限
    花钱之前,先查询两个上限——账户和实例。
  3. 推理
    推理意图针对这个具体模型进行转换。
  4. 模型工厂
    由提供商的原生客户端发送请求。
  5. 结构化输出
    被 token 上限截断的输出会成为一次明确的拒绝。
  6. 记账与上限
    用量只读取一次,并按调用所在的时段计价。
  7. 可追溯的登记簿
    实际发送的参数会写入该次调用的记录。
  8. 指标
    token 数、延迟和费用都会变成指标。

一个主动的后台任务

一个领导者、一次抖动、一次认领、一次依据结果结算的发送。

  1. 单一领导者调度器
    领导者触发扫描,时间因抖动而错开。
  2. 主动引擎
    按全部规则筛选出符合条件的账户。
  3. 连接器客户端
    读取各个来源,每个都在一个短事务中完成。
  4. 模型工厂
    在开销上限之内撰写消息。
  5. 可追溯的登记簿
    发送前先认领。
  6. 推送通知
    通知发往浏览器或手机。
  7. 可追溯的登记簿
    依据发送的实际结果结算这项操作。

委托式 Live 会话

委托流程:浏览器与供应商通信,每个请求回到图中处理。

  1. Web 应用
    用户开启一次 Live 会话。
  2. Live 传输
    API 签发一个一次性凭据,并渲染给语音的任务指令。
  3. Live 传输
    浏览器打开提供商的传输通道(WebSocket 或 WebRTC)。
  4. 按领域划分的 FastAPI
    被委托的请求会成为一个普通的聊天回合。
  5. LangGraph 图
    图执行它,确认环节和登记簿一个不少。
  6. Live 传输
    回复经过限长和扁平化处理后,交还给语音。
  7. 持久任务
    结束时,由唯一的收尾流程负责归档、核算并转交。

从提交到生产环境

每道守卫都在推送前运行;未经验证,一律不发布。

  1. 持续集成与守卫
    Git 钩子与 CI 执行相同的 Task 命令:lint、棘轮检查、测试。
  2. 持续集成与守卫
    打上 tag 后,候选镜像被构建出来,并按摘要打上标签。
  3. 发布、部署与安装器
    一次性安装对候选版本进行验证。
  4. 发布、部署与安装器
    发布流程核对证据,并发布版本标签。
  5. 镜像与容器编排
    固定版本的镜像被拉取到服务器上。
  6. 发布、部署与安装器
    分离式部署把结论写入一个会被回读的文件。
  7. 演示实例
    演示实例被重新部署并通过验证。

观察、告警、自我诊断

每个信号都有读取者;每条告警都有运维手册;LIA 会读取自己的证据。

  1. 指标
    各进程发布自己的指标,包括内存。
  2. 日志
    不含个人数据的结构化日志汇入 Loki。
  3. 仪表盘
    Grafana 展示每个子系统。
  4. 告警
    告警发出时附带其运维手册。
  5. 自我诊断
    LIA 收集事故的证据并加以诊断。

执行应用命令

持久身份与当前前置条件;打开续接界面仍属于待完成状态。

  1. Web 应用
    客户端使用向此账户提供的操作目录。
  2. 工具与清单
    声明确定操作、模式、范围及所需能力。
  3. 持久化应用命令
    准备阶段把变更前后值、摘要、执行者、来源和过期时间绑定到加密命令。
  4. 确认与草稿
    操作需要批准时,效果关口检查对应的准确批准内容。
  5. 持久化应用命令
    执行阶段重新读取权限和能力;令牌隔离的 claim 与来源服务的 compare-and-set 分别保护各自边界。
  6. 会话与认证
    私密续接绑定会话,必要时还绑定指定设备;秘密不进入模型。
  7. 持久化应用命令
    Committed、waiting、冲突、失败与取消保持区分;响应丢失不会触发自动重放。
  8. Web 应用
    定向提示使相关资源失效;客户端重新读取对应的认证查询。