Skip to main content

架构图

服务清单

服务技术栈部署平台数据库用途
kira-beBun + Hono + AI SDKFly.io (sjc/fra)Supabase后端 API
kira-webNext.js 16 + React 19Fly.io (sjc/fra)-Web 前端
kira-queueBun + PGMQFly.io (sjc)Supabase后台任务
kira-cmsPayload CMS 3.xFly.io (sjc)Neon内容管理
kira-imgproxyimgproxyFly.io (sjc)-图片处理
kira-infisicalInfisicalFly.io (sjc)Neon密钥管理
kira-video-workerBunFly.io (sjc)Supabase视频生成任务处理(via NATS)
kira-centrifugoCentrifugoFly.io (sjc/fra)-WebSocket 实时消息
kira-natsNATS JetStreamFly.io (sjc)-消息队列
kira-dragonflyDragonfly DBFly.io (sjc/fra)-Redis 缓存

数据库 & 存储

Supabase (PostgreSQL)

kira-be, kira-web, kira-queue 使用的主数据库,提供:
  • PostgreSQL 数据库
  • 实时订阅 (Realtime)
  • 用户认证 (Auth)
  • 对象存储 (Storage)
  • PGMQ 消息队列
主要表
  • threads - 对话容器
  • messages - 用户和 AI 消息
  • thread_version - 生成图片快照
  • user_profiles - 用户信息和订阅
  • feed - 公开分享的作品
  • user_liked_feeds - 用户点赞

Neon (PostgreSQL)

kira-cms, kira-infisical 使用的 Serverless PostgreSQL:
  • CMS 内容数据
  • Infisical 密钥存储
  • 按需扩展

Dragonfly (Redis 缓存)

双区域部署 (sjc/fra) 的高性能缓存:
  • signed_url 缓存
  • 速率限制
  • 临时数据
  • 内部访问: kira-dragonfly.internal:6379

LanceDB

向量数据库:
  • 图片 embedding 存储
  • 相似度搜索(防止重复发布)

AWS S3

CMS 媒体存储:
  • 博客图片
  • 静态资源

AI 服务

LLM 提供商

提供商模型用途价格 ($/M tokens)
Novitapa/grok-4-1-fast-reasoninglite/nova/crazy 模式0.20/0.20 / 0.50
Novitapa/grok-4-1-fast-reasoningultra 模式0.20/0.20 / 0.50

图片生成

服务模型/功能用途
BytePlus/Seedreamseedream图片生成、编辑、背景替换
FAL.aiFlux-Pro, Kontext高质量图片生成
Illustrious自定义模型插画风格
OpenAIgpt-image-1图片编辑
Google GeminiFlash Image图片生成(备用)
Replicate多模型通用图片处理 (Legacy - 未使用,保留为历史依赖)

图片处理工具

工具功能
generateImageWithAIAI 生图
imageEdit图片编辑
redux图片微调(Seedream)
replaceBackgroundWithImage用图片替换背景(Seedream)
replaceBackgroundWithPrompt用提示词替换背景(Seedream)
upscale图片放大
removeBackground移除背景
inpaint局部重绘
expand图片扩展

图片处理

组件用途
Sharp图片缩放、格式转换、压缩
imgproxy动态图片处理和 CDN 优化
blurhash图片模糊占位符

监控 & 遥测

BetterStack

OpenTelemetry 集成,收集:
  • Logs - 应用日志
  • Traces - 请求追踪
  • Metrics - 性能指标
覆盖服务:kira-be, kira-imgproxy

错误追踪 (Sentry 兼容)

使用 BetterStack 的 Sentry 兼容层:
  • 异常捕获
  • 性能监控
  • 用户上下文关联
  • 与日志/指标统一管理
覆盖服务:kira-be, kira-web

PostHog

产品分析:
  • 用户行为追踪
  • 功能使用统计
  • 漏斗分析
覆盖服务:kira-be, kira-web, supabase functions

支付

Stripe

  • 订阅管理 (Basic/Pro/Max 计划)
  • 一次性购买 (Booster)
  • Webhook 集成
  • 客户门户

Booster Pack (加油包)

加油包是一次性购买的额外积分,存储在 user_profiles.addon_credits 字段中,独立于订阅积分 (credit)。

档位

档位积分购买模式
Small5,000一次性支付 (Stripe payment mode)
Medium10,000一次性支付
Large20,000一次性支付

购买条件

  • 仅订阅用户可购买plan 不能为 free 或空
  • 未订阅用户调用会返回 403 Subscription required to purchase booster pack

积分使用

系统在检查积分余额时合并计算两个池:
// 计费检查
if (data.credit + data.addon_credits < creditsCost) {
  return { eligible: false, reason: "insufficient_credits" };
}
扣费通过 PostgreSQL RPC deduct_credits 原子执行,自动从 creditaddon_credits 中扣除。

Webhook 处理

加油包购买通过 checkout.session.completed 事件处理(mode === "payment"),与订阅的 mode === "subscription" 区分:
Stripe checkout.session.completed (mode=payment)
  → 获取 line items → 匹配 price ID
  → 查找用户 → 累加 addon_credits
  → PostHog booster_purchase 事件

账号删除

概述

账号删除采用 30 天延迟执行 机制,通过 PGMQ 队列实现定时触发,用户在倒计时期间可以随时取消。

API 端点

端点方法说明
/support/delete-accountPOST发起删除请求,启动 30 天倒计时
/support/deletion-statusGET查询删除状态和预计删除时间
/support/cancel-delete-accountPOST取消已排程的删除
/support/hashGET获取 Front Chat 身份验证 hash

删除流程

队列配置

队列名延迟说明
account_deletion30 天 (2,592,000 秒)实际删除触发
account_deletion_reminder27 天 (2,332,800 秒)删除前 3 天提醒邮件

删除内容

执行删除时,系统按以下顺序清理数据:
步骤操作说明
1删除 Stripe Customer取消所有订阅和支付方式
2删除 PostHog PersonGDPR 合规,delete_events=true
3删除 Auth Usersupabase.auth.admin.deleteUser(),级联删除关联数据
4删除消息图片/视频agent_message bucket 下 {userId}/ 所有文件
5删除 Feed 图片agent_message bucket 下 feed/{userId}/
6删除头像public_material bucket 下 avatars/{userId}/
Auth User 删除会通过 Supabase 级联机制自动删除 user_profilesthreadsmessagesthread_versionfeeduser_liked_feeds 等关联表数据。

邮件

Resend

  • 交易邮件
  • 每日摘要
  • 欢迎邮件

其他服务

Serper API

Google 搜索功能,用于 Agent 的 googleSearch 工具。

Front Chat

客服聊天组件,集成在 kira-web。

Voyage AI

图片 embedding (multimodal) 生成,使用 voyage-multimodal-3.5,用于向量搜索。

Tinify

图片压缩 API。

环境变量汇总

数据库 & 存储

# Supabase (kira-be/web/queue)
SUPABASE_URL
SUPABASE_KEY
POSTGRES_URL

# Dragonfly (缓存)
REDIS_URL                    # redis://:password@kira-dragonfly.internal:6379

# LanceDB (向量)
LANCEDB_URI
LANCEDB_API_KEY

AI 提供商

# LLM
OPENAI_API_KEY
GOOGLE_GENERATIVE_AI_API_KEY
XAI_API_KEY
MISTRAL_API_KEY

# 图片生成
FAL_API_KEY
REPLICATE_API_TOKEN
ILLUSTRIOUS_API_KEY
BYTEPLUS_API_KEY
IDEOGRAM_API_KEY
RECRAFT_API_KEY

# 其他
SERPER_API_KEY
VOYAGE_API_KEY

消息队列 & 服务

# NATS
NATS_URL
NATS_AUTH_TOKEN

# CMS
CMS_URL

# Front Chat
FRONT_CHAT_SECRET

监控

# BetterStack (日志/指标)
BETTERSTACK_HOST
BETTERSTACK_TOKEN

# BetterStack Sentry 兼容层 (错误追踪)
SENTRY_DSN                   # https://xxx@o.betterstack.com/xxx

# PostHog (分析)
POSTHOG_API_KEY
POSTHOG_PROJECT_ID

支付 & 邮件

STRIPE_SECRET_KEY
STRIPE_WEBHOOK_SECRET
RESEND_API_KEY

图片处理

IMGPROXY_URL
IMGPROXY_KEY
IMGPROXY_SALT

部署架构

所有服务部署在 Fly.io,核心服务双区域部署 (sjc/fra)。
┌─────────────────────────────────────────────────────────────┐
│                     Fly.io (sjc + fra)                      │
├─────────────────────────────────────────────────────────────┤
│  ┌──────────┐  ┌──────────┐  ┌───────────────┐              │
│  │ kira-be  │  │ kira-web │  │kira-dragonfly │              │
│  │ sjc+fra  │  │ sjc+fra  │  │   sjc+fra     │              │
│  └──────────┘  └──────────┘  └───────────────┘              │
│                                                             │
│  ┌──────────┐  ┌──────────┐  ┌────────────────────┐        │
│  │ kira-cms │  │kira-queue│  │  kira-infisical    │        │
│  │   sjc    │  │   sjc    │  │ infisical.kira.art │        │
│  └──────────┘  └──────────┘  └────────────────────┘        │
│                                                             │
│  ┌────────────────┐                                        │
│  │ kira-imgproxy  │                                        │
│  │ img.kira.art   │                                        │
│  └────────────────┘                                        │
└─────────────────────────────────────────────────────────────┘

测试环境

kira-be 和 kira-web 有独立的测试环境,用于验证 develop 分支的功能。

测试环境服务

服务Fly App域名
后端kira-be-devkira-be-dev.fly.dev
前端kira-web-devkira-web-dev.fly.dev

部署流程

分支策略

分支部署目标说明
developkira-be-dev, kira-web-dev开发测试
mainkira-be, kira-web生产环境

共享基础设施

测试环境与生产环境共享以下服务:
  • Dragonfly: kira-dragonfly.internal:6379
  • imgproxy: img.kira.art
  • Infisical: infisical.kira.art
测试环境使用独立的 Supabase 项目,与生产数据隔离。