Skip to main content

概述

Generator 是 Kira 的核心工作区,用于 AI 图片生成、视频生成、音乐生成和编辑。根据 mediaType 自动切换图片、视频和音频模式。

组件层次

AI 对话集成

使用 Vercel AI SDK v6 与后端通信:
import { useKiraChat } from '@/lib/chat';

interface UseKiraChatOptions {
  threadId: string;
  resourceId: string;
  onToolCall?: (params: { toolCall: ToolCall }) => void;
  onFinish?: (params: { message: UIMessage }) => void | Promise<void>;
}

const { append, reload, stop } = useKiraChat({
  threadId,
  resourceId,
  onToolCall: ({ toolCall }) => {
    // 处理工具调用,打开对应 Selector
  },
  onFinish: ({ message }) => {
    // 消息完成回调
  },
});
apibody 不是 useKiraChat 的直接参数,它们在内部 ChatManager 中配置。实际代码位于 lib/chat/kirachat.tsx

消息类型

类型说明
textAI 文本回复
tool-call工具调用请求
tool-result工具执行结果

工具调用流程

1

用户输入

用户输入 “去掉背景”
2

AI 响应

AI 返回 tool-call: removeBackground
3

打开 Selector

前端打开对应 Selector 组件
4

用户确认

用户确认/调整参数
5

执行

调用后端 API 执行
6

返回结果

返回 tool-result (新图片 URL) → 更新 ImagePanel

工具栏功能

工具组件说明
滤镜FilterSelectorAI 风格滤镜、预设滤镜
调整PCAdjustSelector / MobileAdjustSelector亮度、对比度、饱和度等
裁剪PCCropSelector / MobileCropSelector自由裁剪、比例裁剪
放大UpscaleSelector2x/4x 超分辨率
擦除EraserSelectorAI 智能擦除
重绘InpaintSelector局部重绘
扩展ExpandSelector图片扩展
换背景ReplaceBgSelector背景替换
导出ImageExport下载图片
视频生成VideoSelectorAI 视频生成 (t2v / i2v)
视频导出VideoExport下载视频(带/不带水印)
歌曲生成MusicSelectorAI 歌曲生成(含歌词)
器乐生成InstrumentalSelectorAI 器乐生成
添加人声AddVocalsSelector为器乐添加人声
音频导出AudioExport下载音频
图片生成GenerateImageSelectorAI 图片生成(独立面板)

数据流

媒体类型切换

Generator 页面根据 mediaType 切换三种模式:
// mediaType === "image" → ImagePanel + ImageToolBar
// mediaType === "video" → CanvasVideoPlayer + VideoToolBar
// mediaType === "audio" → AudioPlayerCard + AudioToolBar

图片状态管理

// usePoissonStore
type EditMode = "chat" | "upscale" | "filter" | "adjust" | "crop" | "chooseFilter"
  | "inpaint" | "expand" | "replaceBg" | "eraser" | "mask" | "video"
  | "generateMusic" | "generateInstrumental" | "addVocals" | "generateImage";

// State is per-thread, accessed via poissonMap[threadId]
interface PoissonState {
  // Accessed via getCurrentImage(threadId), getEditMode(threadId)
  currentImage: Image;
  editMode: EditMode;
  editModeData?: any;

  // Actions require threadId as first parameter
  setCurrentImage: (threadId: string, image: Image) => void;
  setEditMode: (threadId: string, mode: EditMode, editModeData?: any) => void;
}

键盘快捷键

以下快捷键尚未验证,仅供参考(TBD)。
快捷键功能
Ctrl/Cmd + Z撤销
Ctrl/Cmd + S保存
Ctrl/Cmd + E导出
Space平移图片
+/-缩放