外观
如何理解把整体架构讲清楚?
项目版本说明
这些问答整合历史设计与实现资料;当前 main 分支 README 以工作包描述建设状态。具体能力、实验数据与设计目标的边界见项目状态与证据。
标准回答
Go Core 管平台规则和正式写入;Python 处理器做抽取、向量化等计算;PostgreSQL 保存状态与记忆;客户端通过 API、SDK 或 MCP 使用这些能力。
人:Console·开发者:SDK / API·Agent:MCP
统一进入平台的鉴权与业务路径
Go Core
权限 · 检索 · 任务调度 · Trusted Commit · 撤销
PostgreSQL + pgvector
记忆、权限、状态、任务与向量
S3 兼容对象存储
原始资料与对象数据
Core 向处理器提供限定输入,处理器返回候选结果
Python Processor· 抽取 / 向量化 / 合并 / 归纳
每一层具体负责什么
| 模块 | 职责 | 可用的类比 |
|---|---|---|
| Go Core | HTTP、身份与授权、检索、任务租约、校验和正式写入 | Android 里负责规则与状态的服务层。 |
| Python Processor | 处理限定输入,调用模型,返回候选结果 | 后台计算执行者;结果仍要经过业务校验。 |
| PostgreSQL | 保存结构化数据、关系、事务与查询状态 | 持久化事实与关系的数据库。 |
| pgvector | 让 PostgreSQL 能保存和比较向量 | 为数据库增加语义检索能力的扩展。 |
| S3 / MinIO | 保存原始文件等对象 | 原始附件所在的对象仓库。 |
| Next.js Console | 供人查看、纠正记忆和管理连接 | 用户操作这些能力的界面。 |
| MCP / SDK / API | 为 Agent 或程序提供调用入口 | 不同调用方式访问同一套核心规则。 |
为什么 Go 和 Python 分开
平台层需要稳定地处理权限、状态、并发和存储;模型处理层需要接入不同算法与模型。通过有版本的协议分开,可以独立替换或重启处理器。处理器离线时,已提交记忆的读取、撤销和任务查看仍应可用。
代价也要说出来:多一个运行时,就多一份部署、接口版本和故障定位成本。分层是否值得,取决于是否需要这些隔离和扩展能力,不能只说“Go 快、Python 适合 AI”。
一个容易讲错的细节:查询向量怎么生成
写入时的向量化属于后台处理任务。读取时,用户问题需要及时转换成查询向量;真实模型场景使用独立的私有 Python 查询向量服务,通过有超时限制的同步调用完成。
这个查询服务没有数据库写权限,也不是异步任务 Worker。它失败时,语义检索通道不可用,关键词检索仍继续,并返回降级标记。
自查:Processor 全部停了,是不是整个系统就不能用了?
已有正式记忆的读取、授权撤销和任务检查仍应可用。新内容的抽取等后台任务会受影响;真实查询向量服务是另外一条依赖,失败时只降级语义检索通道。
内容来源
- EachOf Wiki · 记忆与上下文 · 原条目
architecture