Documentation Index
Fetch the complete documentation index at: https://tech.illasoft.com/llms.txt
Use this file to discover all available pages before exploring further.
技术栈
| 类别 | 技术 | 说明 |
|---|---|---|
| 运行时 | Bun | 高性能 JavaScript 运行时 |
| Web 框架 | Hono | 轻量级、高性能 Web 框架 |
| AI SDK | Vercel AI SDK | AI 对话和工具调用 |
| 数据库 | Supabase (PostgreSQL) | 数据存储 + Auth + Storage |
| 缓存 | Dragonfly (Redis 兼容) | Agent task 状态、embedding 缓存、cancel flag |
| Vector DB | LanceDB | Feed embedding 去重(512D) |
| AI 模型 | xAI Grok, OpenAI, Google, Mistral | 按用户 plan 选路 |
| 图片生成 | BytePlus, FAL, OpenAI, Google, Illustrious | 多 Provider |
| 视频生成 | Seedance, Grok; WAN 2.7, KIE Seedance 2, TencentCloud Kling | generate + edit/extend/motionControl |
| 音乐生成 | Suno 三路 (KIE AI) | generateMusic / generateInstrumental / addVocals |
| 任务编排 | Inngest(自托管) | 替代原 NATS JetStream;事件驱动 + durable steps |
| 实时推送 | Centrifugo | WebSocket,任务状态 |
| 分析 | PostHog | 事件追踪 + 成本计量 |
| 监控 | BetterStack (OTEL) + Sentry | trace/metric/log + 错误 |
| 支付 | Stripe(通过 kira-sg-billing) | 订阅 + Booster + Webhook |
2026-04 架构变化:NATS JetStream 已被 Inngest 完全替代(kira-be
commit 45d54f5)。
所有异步任务通过 Inngest 事件派发,workers 由 long-lived consumer 改为 HTTP function。详见 Kira Inngest。项目结构
src
bootstrap.ts
index.ts
lib.ts
hono
ai
db
lib
types
analytics
telemetry
核心架构
AI Agent 系统
Kira 使用 Vercel AI SDK 构建 Agent,按用户 plan 动态选模型(src/ai/agents/index.ts:80-102):
| Mode | 模型 | Plan 门槛 | 用途 |
|---|---|---|---|
lite | grok-4-1-fast-reasoning (xAI) | 所有用户 | 默认 |
nova | grok-4-1-fast-reasoning (xAI) | pro+ | 标准 prompt |
crazy | grok-4-1-fast-reasoning (xAI) | pro+ | CRAZY_PROMPT |
ultra | gpt-5.4 (OpenAI) | max / max_year | 最强推理 |
src/hono/agent/index.ts:265-273)。
工具系统 (src/ai/tools/,30+ 个)
- 图像:
generateImageWithAI、imageEdit、upscale、redux、inpaintWithPrompt、inpaintWithImage、expand、eraser、removeBackground、replaceBackgroundWithPrompt、replaceBackgroundWithImage、readImage - 视频:
generateVideo、videoEdit、videoExtend、trimVideo、motionControl、initializeWithImage、initializeWithVideo、readVideo - 音乐:
generateMusic、generateInstrumental、addVocals、trimAudio、initializeWithAudio、readMusic - 搜索 / 交互:
googleSearch、getMaskImageFromUser、getExpandMaskImageFromUser、getFilterChoiceFromUser、getAutoCropResultFromUser
Agent 流式传输架构
长对话用 Redis 做持久化,断线重连可恢复。cleanupStaleTasks() 清理 > 5 min 的 running 任务(视为崩溃遗留)。
图片处理管道
详见 Image Pipeline。 存储结构:{userId}/{threadId}/{imageId}(非 gen_* 前缀图片走 CSAM;gen_* 跳过)。
视频处理管道
事件命名video/{action}-{provider}.requested,详见 Video Pipeline 和 Kira Inngest。
音乐处理管道
三路 Suno:generateMusic / generateInstrumental / addVocals。详见 Music Pipeline。
任务取消
认证
所有受保护路由使用supabaseAuth() 中间件(src/hono/middleware/auth.ts),验证 ES256 JWT via Supabase JWKS:
optionalSupabaseAuth():验证失败不阻断,只清空 jwtPayload。Sentry 用户上下文在中间件中自动注入。
数据模型
| 表名 | 说明 | ||
|---|---|---|---|
threads | 对话容器,flag: text[](nsfw 等 moderation 标记) | ||
messages | 用户/AI 消息,支持 v4→v5 自动迁移 | ||
thread_version | 版本快照,images / videos / audios JSONB | ||
user_profiles | plan / credit / addon_credits / customer_id(_sg) / billing_region | ||
feed | 社交作品,`media_type: image | video | audio,flag: text[]` |
user_liked_feeds | Feed 点赞 | ||
filters | 预设滤镜(JSONB) | ||
user_liked_filters | 用户收藏滤镜 | ||
failed_uploads | Worker CSAM 命中记录(审计) | ||
announcements / home_cards_v2 / trending | 运营配置(由 kira-cms 管理) |
thread_version 的 images/videos/audios 采用 input/output envelope 结构。Zod schema 有 transform 兼容旧 flat 格式。详见 src/types/ 下的 VideoInputSchema / VideoOutputSchema / AudioInputSchema / AudioOutputSchema。通信流程
AI 对话流程
Billing 流程
所有 Stripe 交互走 kira-sg-billing(billing.kira.art),详见 Kira SG Billing。kira-be 只负责:
- 使用时的 credit 扣减:
src/ai/libs/billing.ts(RPCdeduct_credits) - 删除用户时清 Stripe customer:
src/hono/user/index.ts:33-88
账户删除流程
国际化
getI18nValue(key, locale, format) 支持 12 种 locale:
en-US / zh-CN / zh-TW / ja-JP / ko-KR / de-DE / fr-FR / es-ES / pt-PT / it-IT / ru-RU / ms-MY
内容审核(CSAM)
触发点
| 端点 | 触发方式 | 源文件 | 失败行为 |
|---|---|---|---|
POST /thread/ | 非阻塞 Promise.all | src/hono/thread/index.ts:159-171 | 标 thread.flag=[“nsfw”] |
PUT /user/profile | 同步 await | src/hono/user/index.ts:626-632 | 返回 451,删头像 |
POST /publish/* | 同步 await | src/hono/publish/index.ts:58, 171, 286 | 拒发,feed.flag=“nsfw” |
POST /image/check/:imageId | 同步 await | src/hono/image/index.ts:32-41 | 返回 451,删派生文件 |
| Video worker post-process | step.run | kira-video-worker/src/csam.ts | 删文件 + failed_uploads + csam_blocked 通知 不退款 |
| Music worker post-process | step.run | kira-music-worker/src/csam.ts | 同上 |
审核实现
| 函数 | 位置 | 用途 |
|---|---|---|
moderateImageUrl(imageId) | src/ai/libs/moderation.ts | OpenAI omni-moderation-latest,图片多模态 |
moderateText(text) | 同上 | 文本审核 |
detectNsfw({text?, imageId?}) | 同上 | 视频 provider 路由(NSFW → seedance,safe → grok) |
sexual=0.2、sexual/minors=0.01、其余类别 0.7。
Thread Flag
text[]。带 nsfw flag 的 thread 中的 feed 在非作者查看时隐藏;rewind 访问也会被 GET /rewind/check/:originImageId 阻断。
启动与优雅关闭
入口src/bootstrap.ts 先初始化 Telemetry,再导入 src/index.ts。
kill_timeout = 600s 配合长耗 agent 的 graceful drain。
部署
- 运行在 Fly.io
- 端口:8080
- 内部服务互联:
*.internal(kira-inngest、kira-dragonfly、kira-centrifugo)
环境变量(摘要)
Core:SUPABASE_URL / _KEY / REDIS_URL / LANCEDB_URI / _API_KEY / PORT / NODE_ENVAI:
OPENAI_API_KEY / GOOGLE_GENERATIVE_AI_API_KEY / XAI_API_KEY / MISTRAL_API_KEY / NOVITA_API_KEYImage:
FAL_API_KEY / BYTEPLUS_API_KEY / ILLUSTRIOUS_API_KEY / SERPER_API_KEYProcessing:
IMGPROXY_URL / _KEY / _SALT / VOYAGE_API_KEYObservability:
POSTHOG_API_KEY / BETTERSTACK_HOST / _TOKEN / SENTRY_DSNIntegration:
RESEND_API_KEY / CMS_URL / FRONT_CHAT_SECRET
详细说明见各 pipeline 文档。