ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Happier后端架构剖析:Fastify、Postgres与Redis如何协同编排AI Agent

Happier后端架构剖析:Fastify、Postgres与Redis如何协同编排AI Agent 【免费下载链接】happierWeb, Desktop Mobile client and orchestrator for Codex, Claude Code, OpenCode, Pi, Cursor, Grok, Antigravity, Kimi, Augment Code, Qwen, fully end-to-end encrypted项目地址https://gitcode.com/gh_mirrors/hap/happier点击查看免费下载Happier是 Codex、Claude Code、OpenCode、Pi、Grok 等 AI 编程 Agent 的 Web、桌面与移动端客户端及编排器。它的后端apps/server由Fastify Postgres Redis三大件组成Fastify 负责 HTTP API 与 Socket.IO 实时推送Postgres经 Prisma 访问持久化端到端加密的会话数据Redis 则在多副本部署时承担 Socket.IO 扇出与 Presence 心跳队列。本文带你读懂这套后端如何协同编排你的 AI Agent 会话。一、整体架构一图看懂数据流后端核心分工如下组件技术栈职责API 层Fastify ZodHTTP 路由、认证、限流、参数校验实时层Socket.IO挂载于/v1/updates推送会话更新、机器状态、临时事件持久层Postgres Prisma存储加密的 Account/Session/Artifact 数据协同层Redisioredis Redis Streams 适配器多副本 Socket 扇出、Presence 心跳队列对象存储S3/MinIO头像等公开文件加密privacy-kit零知识认证、服务端令牌加密客户端CLI、移动端、机器 Daemon既走 HTTP API也建立 Socket.IO 长连接事件路由器Event Router把持久化更新写入 Postgres把临时事件如在线状态直接广播给感兴趣的连接。二、Fastify API 层认证、路由与实时通道服务入口是 main.ts它初始化 Sentry 后调用 startServer.ts 完成整套启动流程HTTP 部分则由 api.ts 中的startApi()装配类型安全使用fastify-type-provider-zod所有请求体用 Zod Schema 校验与序列化编译期即可发现接口变更安全注册fastify/cors与fastify/rate-limit并通过authenticate装饰器校验 Bearer 令牌——后端不存密码客户端用公钥签名挑战完成认证见 authRoutes路由按领域划分认证、会话sessionRoutes、机器machinesRoutes、制品artifactsRoutes、访问密钥、KV 存储、账户、动态流、推送令牌等十余组路由全部注册在 api.ts实时通道Socket.IO 服务挂在 Fastify 的 HTTP Server 上路径固定为/v1/updates连接按 user/session/machine 三种作用域划分房间见 socket.ts。也就是说Fastify 同时充当 HTTP 网关和 WebSocket 宿主一个进程即可对外提供全部服务能力。三、Postgres加密数据的持久化中枢数据模型定义在 schema.prisma核心表围绕Account展开Account以公钥为身份维护全局单调递增的seq更新游标Session SessionMessage会话元数据与消息均为端到端加密后的不透明数据块Machine机器 Daemon 的加密元数据与在线状态Artifact / UserKVStore / AccessKey加密制品、乐观锁 KV 存储、按会话按机器的访问密钥。值得新手注意的两个工程细节inTx()事务封装inTx.ts以可串行化隔离级别执行事务遇到 Postgres 序列化冲突P2034自动重试并支持afterTx回调——事务提交成功后才通过 Socket 推送更新保证多端一致零知识模型服务端只用HANDY_MASTER_SECRET派生的 KeyTree 加解密第三方服务令牌如 GitHub OAuth会话内容对服务端永远是密文。四、Redis从可选到扩容必选项单机部署时 Redis 完全可选但一旦运行多个 API 副本Redis 就变成协同编排的关键Socket.IO Redis Streams 适配器设置REDIS_URL与HAPPIER_SOCKET_ADAPTERredis-streams后任意副本收到的update/ephemeral事件都能通过 Redis 房间扇出到连在其他副本上的客户端并支持跨副本的 Socket RPC 路由见 socket.ts 与 redis.tsAPI / Worker 角色分离SERVER_ROLEapi的进程负责接连接SERVER_ROLEworker的进程跑后台循环超时扫描、DB 指标并通过 Redis 发布实时事件、消费presence:alive:v1流把机器在线心跳落库见 startServer.ts 与 presenceRedisQueue.tsPresence 批处理sessionCache.ts 在内存中做 30 秒去抖、5 秒批量把高频心跳聚合后再写 PostgresRedis 流则用XADD ... MAXLEN ~ 100000防止无界增长。五、可观测性与部署形态/health与/ready分别报告进程存活与依赖就绪独立 Metrics 端口暴露 Prometheus/metrics含 WebSocket 连接数、心跳事件计数等metrics2.tsfull 版生产推荐默认 Postgres S3/MinIOlight 版自托管/测试友好默认 SQLite 本地文件PORT3005 yarn dev:light即可零 Docker 跑起来数据库支持postgres | mysql | pglite | sqlite四种提供方迁移脚本齐全README。六、总结这套架构好在哪职责单一Fastify 管请求、Postgres 管持久、Redis 管协同各自可独立替换与扩容隐私默认服务端只转发密文加密边界在客户端自托管与官方托管安全性一致平滑扩容单机零依赖起步水平扩展只需开启 Redis 适配器并拆分 API/Worker 角色。想深入源码推荐按 docs/backend-architecture.md 的脉络依次阅读 startServer.ts、api.ts、eventRouter 与 inTx.ts——它们分别对应启动编排、API 装配、事件路由、事务重试四大支柱。赞分享【免费下载链接】happierWeb, Desktop Mobile client and orchestrator for Codex, Claude Code, OpenCode, Pi, Cursor, Grok, Antigravity, Kimi, Augment Code, Qwen, fully end-to-end encrypted项目地址https://gitcode.com/gh_mirrors/hap/happier点击查看免费下载相关推荐OpenPanel架构解析Postgres、Clickhouse、Redis如何协同工作OpenPanel架构解析Postgres、Clickhouse、Redis如何协同工作 OpenPanel作为一款开源的产品分析平台巧妙地将Postgre数据可视化后端前端MCP 服务MiMoCode多智能体系统实战指南Build、Plan、Compose三大模式详解MiMoCode多智能体系统实战指南Build、Plan、Compose三大模式详解 MiMoCode是一款开源的AI编码助手它通过强大的多智能体系统为开发人工智能AI Agent代码智能体CLIAgent 记忆工具调用MCP ClientsWSABuilds容器技术解析WSA与Hyper-V虚拟化架构深度探讨WSABuilds容器技术解析WSA与Hyper V虚拟化架构深度探讨 WSABuilds项目作为Windows Subsystem for Android™开发工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进