Skip to content
阅读进度

如何理解把整体架构讲清楚? ​

返回 EachOf 项目 目录

项目版本说明

这些问答整合历史设计与实现资料;当前 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 CoreHTTP、身份与授权、检索、任务租约、校验和正式写入Android 里负责规则与状态的服务层。
Python Processor处理限定输入,调用模型,返回候选结果后台计算执行者;结果仍要经过业务校验。
PostgreSQL保存结构化数据、关系、事务与查询状态持久化事实与关系的数据库。
pgvector让 PostgreSQL 能保存和比较向量为数据库增加语义检索能力的扩展。
S3 / MinIO保存原始文件等对象原始附件所在的对象仓库。
Next.js Console供人查看、纠正记忆和管理连接用户操作这些能力的界面。
MCP / SDK / API为 Agent 或程序提供调用入口不同调用方式访问同一套核心规则。

为什么 Go 和 Python 分开 ​

平台层需要稳定地处理权限、状态、并发和存储;模型处理层需要接入不同算法与模型。通过有版本的协议分开,可以独立替换或重启处理器。处理器离线时,已提交记忆的读取、撤销和任务查看仍应可用。

代价也要说出来:多一个运行时,就多一份部署、接口版本和故障定位成本。分层是否值得,取决于是否需要这些隔离和扩展能力,不能只说“Go 快、Python 适合 AI”。

一个容易讲错的细节:查询向量怎么生成 ​

写入时的向量化属于后台处理任务。读取时,用户问题需要及时转换成查询向量;真实模型场景使用独立的私有 Python 查询向量服务,通过有超时限制的同步调用完成。

这个查询服务没有数据库写权限,也不是异步任务 Worker。它失败时,语义检索通道不可用,关键词检索仍继续,并返回降级标记。

自查:Processor 全部停了,是不是整个系统就不能用了?

已有正式记忆的读取、授权撤销和任务检查仍应可用。新内容的抽取等后台任务会受影响;真实查询向量服务是另外一条依赖,失败时只降级语义检索通道。

内容来源 ​

用完整回答理解机制,用真实证据解释项目。