功能清单
画布多窗口实时协作
同一账号在多个窗口打开同一画布时,在画布顶部正中间以紧凑入口显示在线设备数量,展开后查看“设备1、设备2”等会话。服务端统一编号,各窗口名称和颜色一致,自己所在行标记“此窗口”。只显示远端光标的小标签和轻量拖拽轮廓;只剩一个窗口时全部隐藏并停止采集光标。高频坐标按帧直接更新独立浮层,不触发 React 重渲染。WebSocket 广播临时预览和提交后的同步通知,最终内容仍经过原有 operations 保存与并发合并;正常空闲连接改为低频状态校验,断线保留轮询。未配置 Redis 支持单后端进程,配置后支持跨实例分发;不增加跨账号编辑权限。真实浏览器与部署验收见待测试,协议见画布操作同步。
用户登录日志
管理员在“用户与运营 → 用户登录日志”查看密码、邮箱/短信验证码、Linux.do 的成功/失败登录、注册自动登录和主动退出。支持用户、事件、方式、结果、IP、时间范围筛选、分页、刷新、详情和失败重试;显示账号快照、设备信息和安全原因。成功记录与会话操作原子提交,重复/伪造/过期退出不产生成功事件;刷新和自然过期不计为登录/主动退出。普通用户不可访问,不记录密码或会话凭据,不补造历史。
用户意见与反馈
工作台提供“意见与问题反馈”入口,可提交 Bug、功能提议、体验建议或其他意见,并附图片/视频;单个附件最大 50 MiB,可选择附带浏览器环境快照。设置页“我的反馈”展示处理状态、管理员回复与历史归档;管理员在后台反馈收件箱中筛选、答复、更新状态、归档或删除。用户只能读取自己的提交,管理写入由后端校验管理员权限。
个人信息
“更换头像”弹窗集中提供上传图片和系统头像两种方式。头像上传支持固定 1:1 裁剪:拖动裁剪框、调整大小、键盘移动和重置,确认裁剪后返回弹窗预览,在弹窗内保存。系统头像提供默认人像、导演、摄影师、小猫、小兔、机器人、探索者和灵感 8 款,在同一弹窗内选择并保存;保存后全局同步,刷新保持。
“账户与设置”新增“个人信息”,展示账号名称与绑定邮箱状态。用户可预览并保存个人头像或恢复系统默认头像,顶栏、侧栏、账户卡片与创作消息同步更新。密码修改与邮箱更换分别保存;修改密码需要当前密码,邮箱更换还需要新邮箱验证码,成功后退出所有登录会话。纯 Linux.do 账号可重新授权核验身份后设置本地密码或更换邮箱。沿用现有设置页、表单、按钮反馈与主题,未增加昵称、用户名或角色编辑。
生图与视频工作台
普通用户可分别使用生图、视频工作台。通过工具卡片选择场景,套用预设提示词,按所选模型能力配置参数和参考素材;生成结果、运行任务及历史详情在同一页面查看。管理员在「工作台工具」维护分类、图标/封面、预设、使用说明与示例素材,并在「功能开放」分别控制两个入口。新入口默认关闭;工作台任务经过统一任务与计费服务创建。
详见生图与视频工作台。
百炼 MiniMax 视频
dashscope-minimax-video 独立插件接入百炼 MiniMax/MiniMax-H3,支持文生视频、首帧、仅尾帧、首尾帧与图像/视频/音频多模态参考。插件校验 4–15 秒、768P/2K、7000 字符提示词及媒体角色和数量,模型能力由渠道配置。任务经统一宿主鉴权、轮询与结果持久化,恢复时查询原任务;真实文生视频创建、轮询与下载已验证,多模态及应用内完整链路仍待验收。配置见百炼 MiniMax 视频。
可美 KM Seedream 图片
km-kemei-seedream 声明式插件接入 Seedream 5.0 Pro / Flash 的文生图与参考图编辑,支持 URL / Base64 响应并由宿主统一保存图片。精确模型 ID 与扩展参数见插件包内 docs/interface.md。
协议默认 2K 方图、单张生成、最多十张参考图,提供 1K / 1.5K / 2K 共二十四个精确尺寸预设。后台能力编辑、画布选择与服务端校验同步支持 1.5K。蒙版与通用质量开关关闭;透明输出通过插件命名空间配置,并要求单张含 alpha 的参考图。供应商错误和空结果保留失败语义。
卡藏 Midjourney
画布接收一次任务返回的全部图片,四张结果自动组成收起的图片堆叠,可展开、选择主图和分别使用。每张图保留独立资源及素材绑定,保存、刷新和任务重复同步不会将后续图片覆盖为第一张。已有仅显示首图的成功 Midjourney 节点在重新打开画布时从原任务恢复遗漏结果,无需再次生成。
kacang-midjourney 统一声明式插件提供 V6/V8 特惠、V7 特惠、稳定/高速三个生图协议。选择协议后自动填入供应商比例、默认比例、参考图上限和一次提交;禁用无合同的蒙版和通用输出参数。稳定版数值 quality 通过插件命名空间设置,不与宿主分辨率档混用。
特惠使用标准图片端点,稳定/高速使用受理和任务查询端点。结果支持顶层与 data 信封,全部单图及可选四宫格封面交给宿主立即保存;失败和空结果保留真实失败语义。完整模型和字段合同见插件包内 docs/interface.md。
存储空间套餐
账号文件容量由后台全局基础容量和用户购买的扩容组成。管理员在「支付 → 充值商品」新建“存储空间扩容”类型的商品,设置容量(整 GB)、有效期(按天或永久)、价格和上架策略;用户点击侧栏或素材页的容量入口打开存储空间弹窗,查看已用、基础与已购容量,购买扩容并查看扩容记录。多份扩容的容量叠加,各自按有效期到期。积分功能关闭时存储空间商品仍可购买。
已用超过容量后立即暂停上传和生成;7 天宽限期结束仍超额时账号只读,只能查看、下载、删除素材、购买空间和修改账号设置。删除素材或扩容后刷新容量即可恢复。管理员可在用户详情的「存储空间」页赠送或撤销扩容。
沧元 Midjourney
cangyuan-midjourney 声明式插件分别提供 V7 与 1K/2K(供应商默认 V8.2)协议。V7 使用 midjourney-v7;1K/2K 使用 midjourney-1k、midjourney-2k,可在提示词显式写 --v 8.2。一次提交固定 n=1,全部结果交由宿主下载保存,参考图按供应商合同发送 HTTPS URL 字符串。
两条线路的参数、编辑端点和响应格式分别适配,不自动换模型。1K/2K 返回官网 CDN 原链,HTTP 403 会如实保留保存失败与原任务重试能力;插件不能消除供应商 CDN 的访问限制。完整字段与接口合同见插件包内 README 和 docs/interface.md。
创作页按整个任务一次消费返回图片,保留各图片的输出序号;一次请求返回多张时,素材与消息幂等去重不会再把后续结果当作第一张合并。
后台选择这两个协议时,“能力与参数”自动使用线路专属默认值:V7 为 4000 字符、五张参考图、不支持蒙版;V8.2 默认单张编辑源图、支持蒙版和十五种比例。两者默认自动尺寸、一次提交,关闭不支持的质量、透明背景、响应格式和输出格式选项。V8.2 在模型名未明确时暂用 1K,识别到上游 midjourney-2k 后改为 2K,切换档位保留管理员的参考限制、默认比例和价格。像素预设由宿主换算供页面展示,提交上游仍使用比例,实际尺寸由供应商决定。
自定义更新公告
「站点及外观 → 更新公告」提供开关、当前版本、多版本文字/图片/视频编辑、内容排序、整行/半行布局与即时预览。关闭展示原日志,开启展示自定义内容,保存后同步工作台和后台入口;后台系统更新保留真实构建版本。详见 自定义更新公告。
AutoDL 画面规格
AutoDL 视频模型在“能力与参数 → 画面规格”直接多选当前插件工作流声明的完整分辨率,并设置默认值;配置始终可编辑并生效。卡片沿用原有标题、副标题与字段样式,不再显示自定义开关或额外说明。AutoDL ComfyUI 视频与音频 v2.3.0 通过完整分辨率标签控制横、竖、方形,不显示未声明的独立比例控件。时长、音频与参考素材配置继续各自生效。
后台保存、用户模型目录、画布参数归一化、计费规格选择、服务端校验及插件请求使用同一套所选规格。仅允许选择插件预设,不能输入新标签;至少选一项,默认值必须属于所选列表。价格档可保留全部插件预设的价格,但不会扩大实际允许生成的分辨率范围。
画布媒体产出模型
图片、视频、音频在生成成功并写入节点后,会冻结当时提交的产出模型。提示词面板里的模型下拉仍是下一次要用的选用模型,改下拉不会改掉已经生成的内容。画布外观中的「媒体信息」打开后,有内容的媒体节点在左下角显示产出模型;图片右下角继续显示尺寸和体积。上传、粘贴、截取、合并、提取音频和本地加工不记录产出模型。本次改动之前的节点不回填。分享页和版本预览画布不显示这块信息。
画布媒体版本
图片、视频、音频节点在原位重新生成或替换文件时,会把旧媒体保留为节点内的历史版本(V1、V2…,每个节点保留最近 30 个)。单张重新生成已有生成结果时直接在原节点产出新版本,节点 ID 和连线不变;多张输出、上传素材和「创建参数变体」仍新建节点。生成失败时旧版本保留在历史中,可以切回。
有可回看的版本时,节点右上角显示「V3/4」角标,浮动工具条出现「版本 N」按钮,右键菜单「版本历史」可用;只有一个版本时右键项置灰,工具条和角标不显示。版本面板底部的缩略图条支持悬停预览、方向键浏览、Enter 或双击切换;图片可开启「对比当前」,拖动分隔线比较。右侧显示模型、比例与分辨率、耗时、参考素材数量和提示词,并标出与当前版本不同的提示词。切换只替换媒体字段,提示词和下一次生成参数不变;锁定或生成中的节点不能切换。另可把任一版本另存为新节点,或删除非当前版本。
版本记录在画布文档的 metadata.mediaVersions,媒体字段沿用 storageKey / content 等原字段名,后端资源引用扫描和本地缓存清理都会把历史版本的资源视为在用。复制节点不带版本历史。只读分享页不提供版本入口。
画布资产视图
画布顶栏正中提供「画布 / 资产」切换(窄屏在画布菜单里切换),视图写在 URL 的 ?view=assets 上,刷新后保持。资产视图把当前画布里有内容的节点整理成「类型 → 资产 → 版本」目录:类型固定为文本、Markdown、图片、视频、音频;上传的 .md 文本归入 Markdown。同一 versionOfNodeId 的 A/B 节点合并为一个资产,批量生成和拆层的子图归到批次下,节点内的 V1/V2 历史展开为版本,主版本带星标。
点选分类显示缩略图网格,点选资产或版本显示预览、尺寸、时长、模型和提示词,可重命名、下载、设为主版本或「在画布中定位」(切回画布并选中、聚焦该节点)。目录完全由画布节点派生,不新增数据表或接口;重命名和设为主版本走画布原有写路径。资产视图打开时画布快捷键暂停,左侧工作区轨道仍可用,原工作区的「资产」页签改名为「素材库」。实现见 web/src/lib/canvas/canvas-asset-catalog.ts、web/src/components/canvas/canvas-asset-view.tsx。
画布 Agent 名称、文案与形象
「站点及外观 → 画布配置」提供独立助手名称、入口文字、面板标题和欢迎/输入文案。助手名称同步用于界面和后续对话的自我介绍;名称只是数据,不改变工具权限,历史消息保留原文。支持导入授权的 Live2D Cubism 3/4 运行时 ZIP,预览后保存启用、调整高度、切回默认动态球。加载失败保留可点击的默认入口,上传和资源访问具有管理员校验和引用保护。Cubism Core 由部署者提供,真实播放待验收;不含图片自动建模。详见 画布 Agent 外观与 Live2D。
素材库分类与画布媒体链路
素材库支持用户手动新增、重命名和删除分类,也可以按分类或“未分类”筛选素材,并批量移动素材。删除分类不会删除素材,分类内素材会回到“未分类”。
画布中的远程图片、视频和音频展示统一使用资源文件地址,不把浏览器 Blob Object URL 写入节点或预览状态;Blob 缓存只用于导出、抽帧、供应商输入等字节处理。画布生成的视频在进入成功态前会先完成资源 Blob 缓存,缓存失败会保留失败语义,不会显示为已成功。
相关实现
web/src/pages/assets/index.tsx:素材库分类筛选、新建、重命名、删除和批量移动入口。web/src/services/api/user-data.ts:素材分类及素材移动 API。web/src/services/file-storage.ts、web/src/services/image-storage.ts:远程资源地址解析。web/src/services/resource-blob-cache.ts:按用户 scope 隔离的媒体字节缓存。web/src/lib/canvas/canvas-generation-task-sync.ts、web/src/services/project-asset-sync.ts:生成视频缓存完成后再写入成功结果。
大规模画布保存
单次变更多于 500 条 operations 时,客户端按原顺序分批提交,并在每批发出前保存可恢复的请求。全部批次确认后才完成整份画布保存;中途失败保留未确认内容和未提交操作,响应丢失则用原请求 ID 与正文重放。每批是独立事务,部分批次成功不等于整份画布已经保存。协议边界见 HTTP API。
画布连线可读性与底部工作条
画布左下角自动整理节点旁提供“设置隐藏节点连线”开关。开启后默认隐藏连线;鼠标划过、聚焦或选中节点时显示该节点关联的连线,已选中的连线保持可见。设置按浏览器保存,并同时应用于视觉层和连线命中层,避免隐藏连线仍可点击。
底部工作条将素材入口改为“素材 + 数量”标签按钮;手势切换保持纯图标胶囊滑块,使用指针 / 抓手图标和单个圆形选中滑块,保留悬停提示、键盘语义和原有操作。
相关实现
web/src/lib/canvas/canvas-connection-visibility.ts:隐藏连线筛选和本地设置。web/src/pages/canvas/project.tsx、web/src/components/canvas/canvas-zoom-controls.tsx:画布状态、开关和渲染接线。web/src/components/canvas/canvas-asset-tray.tsx、web/src/lib/canvas/tool-registry/definitions/main-toolbar-tools.tsx:底部工作条入口。
文本节点尺寸联动
文本节点的普通文本、富文本和编辑态输入框共用同一套字号缩放规则。节点尺寸变大时字号随宽高联动增长,并保留最小、最大字号边界,避免极端尺寸造成不可读或失控的排版。
相关实现
web/src/lib/canvas/canvas-text-scale.ts:字号缩放和边界规则。web/src/components/canvas/canvas-node-content.tsx:文本节点展示与编辑态应用字号。
支付订单与对账导出
管理员在 /admin/payments 可按关键词、状态、渠道和创建/支付/入账日期筛选订单,并导出全部匹配记录的 CSV。对账支持按渠道、执行状态和账单日期导出每日汇总;单次对账明细支持按结果或“仅异常”导出。单次最多 10000 行,超限明确提示,不静默截断。文件使用中文表头和北京时间,保留完整订单号、精确金额/积分及失败原因。导出不触发查单或积分补发;对账运行中不能导出明细。具体字段和参数见 HTTP API 合同。
首页常驻滚动通知
工作台首页顶部可展示运营配置的常驻滚动通知。管理员在「运营 → 常驻通知」维护标题、类型(公告 / 活动 / 更新 / 警告)、生效窗口和跳转链接;标题支持分段样式和光标处插入 emoji。公开接口 GET /api/banner-announcements 只返回当前生效条目,前台轮播展示,用户可本地关闭。
相关实现
web/src/components/layout/banner-announcements-slider.tsx:首页顶部滚动通知条。web/src/pages/admin/components/admin-banner-announcements-panel.tsx:后台配置面板。GET /api/banner-announcements与/api/admin/banner-announcements:公开生效列表与管理 CRUD。
工作区签到加油站
积分功能开启且后台「每日签到积分」大于 0 时,首页侧栏容量条上方固定显示领取卡片:标题为「{站点品牌名}加油站」,副文案为今日可领积分,黑色按钮「立即领取」。未领取时一直显示;当天领取成功后立即消失。关闭积分、签到积分为 0,或未登录时不显示。卡片用白底、黑按钮和青绿积分数字,不套浅蓝舞台底。
相关实现
web/src/components/layout/workspace-sidebar-checkin.tsx:侧栏领取卡片。POST /api/wallet/checkin:每日签到入账,同一天不可重复领取。
工作区账号容量
登录后,首页侧栏左下角用户头像上方显示账号文件容量进度:左侧硬盘图标,右侧已用容量与总容量,进度条旁显示剩余容量。用量达到 70% 变为警告色,达到 90% 或已满变为危险色。点击进入素材库;资产页页头仍展示同一用量。收起侧栏时保留图标和细进度条,悬停可看到已用、剩余与总容量。统计包含素材文件和 Agent 会话附件。
相关实现
web/src/components/layout/workspace-sidebar-storage-meter.tsx:侧栏容量进度。web/src/pages/assets/asset-storage-usage.tsx:资产页同一查询。GET /api/resources/storage-usage:账号已用字节与配额总容量。
云端 Agent(写入与生成仍待真实环境验收)
浮窗支持移动、调整大小和浏览器偏好恢复;后端支持逐轮对话、可信历史、取消、Skills 快照、画布摘要/精读、审批后的画布写入及媒体生成。运行中可插话(下一步生效,不打断正在飞的调用);多步任务可用 plan_update 维护待办清单并在输入框上方展示,未完成项会催办;request_approval 下首次 ≥2 项清单会先确认,auto 直接建立。ask_user 可弹出选项并结束本轮。个人记忆由 remember_lesson 写入待审,用户在「设置 → Agent 记忆」自己批准、添加、导出导入,并可用自己的文本模型手动或按日/周/月压缩相近条目。系统提示只带已批准记忆的索引(标题+适用场景),完整做法由 recall_lessons 按 topic/关键词取;管理员可按用户查看和删除,不能代批。只读模式不能写记忆。终态旧轮次按其冻结合同保留为不可变历史,新消息使用当前合同创建新轮,不篡改父运行;旧合同下仍活动或待审批的运行不会被新版服务恢复执行。生成由预算和独立审批控制,画布写入使用内容快照哈希;未开放外部 MCP。系统行为策略以版本化资源发布,用户/项目/画布可编辑常驻偏好;偏好正文固定在运行快照并按层只读,不整段塞入 system prompt,也不能提权或跳过审批。节点创建、更新字段、摘要投影和连线限制来自服务端能力 registry;能力卡同时描述用途、适用场景、不适用场景、维护代价和可用动作,由 Agent 结合镜头数量、连续性、逐镜审查和交接需求自主选择,不强制所有任务使用分镜。分镜脚本支持结构化创建、分页读取及按真实行 ID 追加、修改和删除;普通文本和 Markdown 不会被宣称为具备镜头级维护能力的分镜表。图片、视频和音频节点可安全修改标题与下一版提示词草稿,既有媒体、已提交提示词和任务状态不会被草稿编辑覆盖;媒体模型按生成模式和真实参考节点从统一目录筛选。审批和执行记录明确展示目标节点、类型、修改字段、名称变化及连线两端,前端不再依靠内部 ID 猜测;这些预览不替代服务端归属、快照、Capability、锁、预算与调用哈希校验。真实模型计费与浏览器联调仍待验收。
云端画布 Agent 已分离行为策略、用户目标、参考事实和运行状态。续聊保留已送达插话,不再继承代码预设的创作自由;旧待办只作上下文,可移除取消项,催办不会强制工具调用或无限重复。提示词来源与发布约束见画布 Agent 提示词与用户意图,真实模型行为仍待场景验收。
同账号设备可在同一画布接续同一段 Agent 对话,恢复完整轮次和事件,并同步运行进度及审批结果。未发送草稿、未确认提交和下一轮设置保留在本机;手动选择的旧历史不会被其他会话抢占。原有画布互斥及幂等提交保护保留,旧父轮不能另开分支。
图片生成审批支持连续切换宽高比、分辨率和质量,同一次点击产生的多个参数更新会累积;扩展参数中的旧规格不再覆盖当前选项,提交时使用最终展示的规格。
3D 预演台(持续完善,待用户验收)
预演台从画布镜头节点打开,统一提供摆场、姿态、动画、摄影机与时间轴。镜头焦段和画幅共同决定取景,机位视图显示安全框;构图截图、白模视频、深度图与深度视频使用同一镜头摄影机输出。深度产物回写为独立画布节点,不自动作为普通图片参考提交给模型。
工作台内可下载当前模式的镜头截图、录制镜头画面,或通过浏览器共享选择器录制含面板与操作过程的窗口。实时镜头录制要求标签页保持可见。第二屏监看用独立窗口显示镜头画面,支持全屏;自动定位外接屏依赖浏览器授权,也可以手动拖动。工具条与帮助面板提供预演台快捷键。
画布 Agent 使用 previs_scene_read 读取摘要,使用 previs_scene_create、previs_apply_patch 经审批创建和修改场景。路径操作生成真实变换关键帧,设置路径替换对象原变换轨道,清除路径清空该轨道;焦段修改同步取景。previs_preview 仍依赖已打开的浏览器工作台执行,尚无完成回执。
演员使用本地打包的 CC0 光滑人体模型(Quaternius Universal Animation Library 的 Mannequin,许可见 web/public/previs/LICENSE-mannequin.txt),姿势与动作写在规范骨架上再重定向到蒙皮,存档与模型无关。落地规则在前端提交与 Agent 写入两侧一致:演员高度锁为地面,道具可抬高但底面不得低于地面,打开旧场景时自动拉回地下对象并提示。检查器按变换、体型、外观、姿态、动作分组,道具库为按比例缩略图卡片并可折叠。程序化布景、排戏和离线逐帧编码仍属后续工作。
技能库个人分类与画布 Agent 筛选
技能库保留原有头部和技能广场共享分类;在“我的技能 / 我创建的”视图增加左侧个人技能库分类及技能数量。用户可为已加入或自建技能创建、分配个人分类;管理员也可创建对所有用户可见、可选、可用于筛选的分类。个人分类仅影响当前用户的技能库和画布 Agent,不改动技能广场共享分类。删除分类只解除相关归类,技能仍保留。画布 Agent 的“我的技能 / 已启用”列表可按个人或平台技能库分类快速筛选,市场页仍按共享分类浏览。
画布 operations 同步与本地恢复
画布内容按字段和对象生成 operations,节点、连线和顶层业务字段分别提交;平移、缩放等 viewport 只保存在本地。每次请求携带唯一 mutationId 和可选基线版本,服务端在同一事务中校验对象存在性、字段基线、资源归属并保存回执。可选顶层字段不存在时用 JSON null 表示,避免 undefined 被序列化为缺失属性。相同请求安全重放,响应丢失、断网、刷新或服务端暂时不可用时,浏览器保留已确认基线与未确认请求,后台使用原 ID 和原 payload 自动继续处理。结构化配额只聚合当前用户素材与画布数据,不扫描任务和 API 日志大字段,容量上限与事务语义不变。
不同字段的并发修改可以合并;同一字段或同一对象的基线不一致会返回冲突,当前本地修改继续保留。删除后的迟到节点、连线或媒体更新不会重新创建对象,只有显式新增 operation 可以创建实体。界面只显示同步状态,不提供版本记录、加载云端版、覆盖云端或手动恢复入口。
此合同不提供多人实时协同;它保证局部变更、幂等重放和删除保护,避免旧缓存静默覆盖新内容。内部历史表仍用于资源完整性维护和审计,不作为用户编辑入口。
相关实现见后端 画布 operations 同步、web/src/services/user-data-sync.ts、web/src/services/api/user-data.ts 和 web/src/pages/canvas/canvas-sync-status.tsx。
画布智能引用
节点提示词面板提供“智能引用”入口,支持 AutoLink 开关和“一键引用全文”。输入已连接素材的名称、标签或素材栏序号后,按 Tab 或点击光标旁的候选项插入引用;全文引用会批量转换匹配到的指代,没有可转换内容时按钮禁用。
匹配仅覆盖当前已连接且激活的画布素材,跳过技能、素材库条目、重名歧义和已有引用。支持 图1、图片1、image1、image 1 及独立序号;普通数字文本如“约2秒”保持原样。AutoLink 默认在节点面板开启,开关为面板临时状态。
批量创作表
批量创作表每行是一项任务,每个参考图格子绑定一张图片;同一行可通过多个参考图列使用多张图。点击格子可选择画布图片或上传,也可把图片连线接到指定格子。已有图片替换前确认,清除格子保留源图片节点;保留列排序和表内跨行、跨列交换。
左侧 1、2 等列端口直接生效:一张图片供该列各行共用,多张图片按连接顺序分配。单格更换或清空后成为独立配置,不被列变化覆盖;“按列填充”可在确认后恢复已连接列的统一配置。列同步只更新参考图,不重建任务行;AI 文本列表创建的表格保留独立行、动态文本列和原有生成流程,未开放普通文本节点直接连入批量表。
顶栏、普通表头、行号和非交互留白均可拖动整表;输入框、参考格、按钮、列排序和原生滚动条保留各自操作。表内支持文字拖选、内部滚动、底部添加和在指定行下方插入。放大编辑与行内编辑使用同一份提示词。全局提示词非空时统一覆盖各行的生效提示词,清空后恢复各行原文;界面显示实际生效来源,Agent 的 set_global_prompt 和 generationPreview 沿用此规则。“批量换装”和“创意生图”的预设保留。
任务入队时保存提示词与参考资源快照,排队期间修改或旋转源图不会改变已提交的输入;旧结果在输入变化后标记“输入已变更”,由用户决定是否重新生成。超过 20 行时仅挂载可见行、附近行及正在编辑的行,减少大表 DOM 和重绘开销。最终浏览器联调与性能验收见待测试。
图片尺寸与方向
图片节点按原图比例确定显示尺寸,可用角点调整大小或打开图片预览。普通滚轮保留原画布操作;单选一张未锁定的普通图片后,按住 Ctrl 滚轮可等比例改变其显示尺寸,鼠标移到画布空白处仍作用于选中图片。连续滚动合并为一次撤销和保存,不重采样图片或改变生成参数。编辑框、表格内部、多选、锁定、图层图片和只读页不进行这种尺寸调整;触控板捏合仍操作画布。
在原图工具中选择“向左转 90°”或“向右转 90°”,首次会保留原图、自动创建已经旋转的编辑副本,并连接和选中它。副本顶部保留左右转按钮,之后在同一副本上继续旋转或恢复创建时的方向;也可提前用“创建编辑副本”。
旋转生成实际图片资源,副本的下载和新提交引用使用校正后的方向;原图及其既有引用保持原样。引用编辑副本的格子会随副本更新,已入队任务仍使用提交时的快照。原方向与已生成方向保留,重复切换可复用资源。锁定、只读或尚在上传的图片不能旋转;此入口不提供任意角度或镜像操作。节点工具组菜单使用统一宽高限制,长说明单行显示并保留完整悬停说明。
工具栏根据侧栏以外的实际可用宽度收起次要操作;节点编辑面板根据剩余高度调整位置或内部滚动,避免遮住底部控件。未选择显示模式时,窄于 1024px 的窗口默认使用专注模式;用户明确进入或退出后,窗口变化与刷新保留该选择。
提示词放大编辑
图片和视频节点的提示词面板支持放大编辑:窗口默认约 min(1200px, 92vw),编辑区最小高度 200px,右下角可对角拖拽,方向键可微调。切换节点后尺寸恢复默认,节点上的紧凑面板外观不变。
画布抓手与框选
画布底部主工具栏用一个胶囊开关切换「区域选择」和「抓手工具」。默认是区域选择,空白处拖动框选节点;切到抓手后拖动平移画布。按住空格或中键仍可临时平移,不改变当前工具。
框选多个节点后,悬浮栏默认提供对齐、等距、创建分镜组和批量连接。右键选区或画布空白处可「自适应整理画布」,按当前相对布局加大边距,而不是重排成宫格或媒体泳道。
相关实现
web/src/lib/canvas/tool-registry/definitions/main-toolbar-tools.tsx:抓手与框选作为同一开关项注册。web/src/components/ui/aceternity/floating-dock.tsx:dock 内胶囊开关与圆形滑块。web/src/lib/canvas/tool-registry/definitions/selection-toolbar-tools.tsx:多选悬浮栏默认工具。web/src/lib/canvas/canvas-layout.ts:spreadCanvasNodes按相对占位加大边距。
完整 AI 拆图工作流
图片节点的 AI 拆图可先用支持视觉输入的文本模型规划图层,再选择专用拆图模型,或用普通图片模型分别重建背景与前景。规划发送经过资源归属校验的实际像素;规划结果校验图层数量、区域与提示词,失败保留可修正的错误。
生成结果组成同尺寸图层组,支持展开、显隐、合成预览、复制、删除、失败重试和刷新恢复。前景可按需去背景,Image Tools 强制输出 PNG;透明内容可按有效区域裁切并另存为独立素材。派生图片使用独立资源与素材标识,避免覆盖原图或其他图层。
规划、生图及可选去背景沿用已有任务与计费;本地合成、显隐和素材裁切不调用生成模型。普通生图是语义重建,不能保证与原图逐像素一致。图层数、像素与输出比例受前端限制,供应商失败如实显示。
图片节点多角度、宫格切分与多选框
图片节点「多角度」使用贴在节点下方的 3D 编辑器(天空盒/摄像头、常用角度、方向箭头),拖动节点或平移画布时面板跟着走。宫格切分放在「图片工具」菜单的「拆分与标记」里,提供 4/9/16/25 预设和 5×5 自定义点选;自定义面板留在菜单内,切分后的子图按网格排开。框选多张图后拖动,虚线选框跟随被选节点。
相关实现
web/src/components/canvas/canvas-node-angle-dialog.tsx、web/src/components/canvas/canvas-angle-scene.tsx:多角度面板与 3D 预览。web/src/components/canvas/canvas-grid-split-picker.tsx、web/src/lib/canvas/canvas-grid-split.ts:宫格预设、自定义点选与切分子节点布局。web/src/lib/canvas/canvas-selection.ts、web/src/lib/canvas/canvas-live-viewport.ts:多选虚线框随拖动预览平移。
系统渠道排序与前台别名
系统渠道模型选择器直接读取渠道下的模型列表:一级跨渠道按“模型展示名”分组并显示原色 Logo,二级显示该模型的“渠道展示名”及规格售价;留空使用所属渠道名称。模型调用标识不必相同,也不反查逻辑模型。系统渠道的“前台名称”已移除。调用保留用户选中的具体渠道,收起后显示“模型 · 渠道”,不因另一渠道更便宜而自动切换。图标优先使用图标库的原色版本,缺少彩色版本时使用单色版本;缺少配置时显示通用图标,不猜测产品品牌。
渠道模型价格档支持管理员单独配置积分成本价;后台请求记录同时显示销售金额和成本金额。成本按下单快照计算,不追随之后改价;普通用户页面及接口不返回成本字段。
系统渠道模型列表按规格显示成本价 / 销售价及利润率;文本输入、输出、缓存 Token 分开呈现。勾选多个模型可统一调价:弹窗一行一个模型,展示模型名、渠道展示名(上游 ID)、规格、成本与可编辑售价,多规格在模型行内纵向对齐。输入目标利润率并选择保留 0–6 位小数(默认 2 位),按 成本 / (1 − 利润率) 四舍五入实时计算;也可点击「重新计算」覆盖手动值,再逐项修改。保存最终输入售价,服务端校验价格与版本并原子保存,不改变成本或启停状态。
后台系统渠道通过“设置排序”、模型管理通过“自定义排序”打开完整列表。支持搜索选择条目后输入目标位置,也可拖动、上移和下移;列表显示从 1 开始的位置,点击“保存排序”统一生效,取消不会修改线上顺序。渠道行的“更多”菜单支持复制渠道,复制会生成独立的渠道、模型和价格档,并保留原连接配置与凭证。排序不受筛选及分页影响;并发修改会提示重新加载,避免覆盖其他管理员的调整。系统渠道模式下,用户端模型选择器沿用同一渠道及模型顺序。模型排序独立保存,不改变价格、能力版本或启用状态。
系统渠道可设置可选的前台别名;为空时显示渠道名,设置后公开目录和用户会话只返回别名,后台仍保留原名。别名最长 80 字,支持后台搜索。前台模型目录模式保留其独立配置。
注册默认每 IP 每小时允许 30 次注册请求、60 次验证码请求,单邮箱每小时另限 10 次且发送后间隔 60 秒。失败尝试也占请求额度,达到上限后的拒绝不会继续增加计数或延长窗口;限流响应携带真实剩余等待时间,注册页面显示倒计时并防止重复提交。已保存的运行策略仍需管理员按实际共用网络规模调整,不随默认值升级自动覆盖。
定时闲置资源清理与后台手动删除共同保护外观配置引用的浅色 Logo、深色 Logo、登录视频及封面;即使资源超过闲置期限也不会删除,外观配置无法读取时停止相关清理。
章节资产提取与任务浏览
画布视频支持鼠标悬停 350ms 后静音预览前 3 秒,不循环;全局仅一个悬停解码器,离开或操作画布立即停止并恢复封面。手动播放优先,系统开启减弱动态效果时不自动预览。
剧情章节支持一次提取角色、场景与道具,分别写入角色、环境和道具待确认资产。输出必须包含三类数组;无人章节可以只产生场景或道具,不把缺失字段当作提取成功。
场景和道具确认后保留描述与生图提示词,尚未出图时显示「待生成图片」。可使用项目画风生成参考图,或绑定素材库中已有图片;提取和确认不会自动发起收费生图。图片绑定创建新资产版本,已有镜头、画布继续引用原图片。生成任务的成功状态与图片绑定共同提交,取消或失去租约的任务不能换图;晚到图片不覆盖较新资产版本,原生成结果仍可在任务中心恢复使用。
任务详情只读取任务与日志,不因打开详情写入画布。视频任务列表和网格优先展示已有封面;没有封面时,在进入视口后提取首帧缩略图。后台请求明细默认仅显示请求,可切换仅下载或全部明细,导出沿用当前筛选条件。
站点及外观
管理员可以在“系统配置 → 站点及外观”统一管理品牌识别、登录页、SEO、首页收尾与备案、皮肤主题。品牌识别包括站点名、英文品牌标识、浅色与深色 Logo 和 Logo 外框;登录页包括主标题、说明、品牌视频和可选封面。Logo 可以只上传任意一套并自动复用,也可以分别适配浅色与深色界面;关闭外框后 Logo 会在原导航占位内等比放大。
前端入口在加载 React 应用之前先读取 GET /api/public/appearance。初始 HTML 不包含内置品牌名、Logo 或默认 favicon;只有公开配置成功或明确回退到内置外观后才渲染应用,避免自定义品牌访问时先闪现“微昕·砚”。自定义视频未设置封面时保持纯色背景直至视频首帧就绪,不复用内置视频封面。
浅色 Logo、深色 Logo、视频和封面通过后台专用上传接口进入现有资源存储,并由稳定的公开 slot URL 读取;公开响应不暴露资源 ID。正在使用的外观资源会阻止管理员从资源管理页直接删除。英文品牌标识可作为对象存储路径前缀建议,但不会自动覆盖已经保存的前缀或改写历史资源。“恢复微昕·砚默认”会恢复内置品牌值、SEO/页脚默认值、经典皮肤和默认 Logo 外框,同时保留已经上传的素材文件。
SEO 标题、描述、可选关键词会投影到浏览器 metadata、Open Graph、Twitter Card 与 canonical;版权信息在公共登录场景页脚显示。ICP备案默认关闭,启用后必须填写备案号,并链接至工信部备案系统。注册验证码与密码重置邮件的标题、正文和继承型发件人名称都会使用当前站点名。
皮肤主题以语义令牌集中管理浅色/深色背景、文字、表面、边界、主色、控件状态、hover/active/focus、图标、圆角、尺寸、动效和阴影。默认“经典黑白”不可修改或删除;“青瓷工作室”“暖柿纸境”“霓光紫境”作为重新校色的可编辑初始数据。每套主题还可独立设置警告色、危险操作常态/悬停/按下/前景,以及开关开/关轨道、悬停和滑块色。管理员可从经典或当前主题完整复制、新建、改名、编辑、启用和删除自定义主题;页面只消费语义变量,不按皮肤 ID 分叉业务组件。
主题卡顶部会按语义使用频次展示该主题浅色与深色令牌的全部去重颜色,宽度不足时保留高频色并截断尾部。颜色编辑器只在直接点击色块时打开系统取色器,点击名称、说明或 HEX 输入不会误触。
相关实现
backend/internal/service/appearance.go:外观配置校验、公开投影、资源绑定与媒体类型校验。backend/internal/handler/appearance.go:公开读取、公开资源流和管理员读写/上传接口。web/src/services/appearance-bootstrap.ts:应用渲染前的公开外观解析与安全回退。web/src/pages/admin/settings/appearance-settings-page.tsx:站点及外观、草稿预览与原子保存流程。backend/internal/service/appearance_skins.go、web/src/lib/skin-themes.ts:主题库合同、校验、亮暗语义令牌、CSS Variables 与 Ant Design 组件映射。web/src/components/layout/site-compliance-footer.tsx:公共版权与ICP备案展示。
邮箱找回密码
登录页在密码字段标题行提供“忘记密码?”入口。已配置账户邮件服务时,本地密码账号可以通过绑定邮箱获取 6 位验证码,并在 10 分钟内设置新密码;发送接口对存在和不存在的邮箱返回相同结果,避免公开账号状态。
密码更新、验证码消费和该账号全部旧登录会话撤销在同一个数据库事务内完成。验证码按注册与密码重置用途隔离,不能跨流程复用;Linux.do 单点登录账号继续通过原身份提供方登录,不会由找回流程隐式创建本地密码。
相关实现
web/src/pages/auth/login.tsx、web/src/pages/auth/forgot-password.tsx:登录入口与两阶段邮箱验证界面。backend/internal/service/password_reset.go:发送策略、验证码校验和密码重置业务边界。backend/internal/repository/repository.go:密码更新、验证码消费和登录会话撤销事务。
官方提示词模板
平台级 LLM 任务只走后端提示词目录,不在页面里手写整段系统指令。运营可在管理后台维护版本,用户可在设置里跟随、追加或改写创作层;动态上下文和 JSON 输出契约由服务端编译时注入,不能被模板或个人偏好覆盖。
当前操作包括:章节资产提取、分镜规划/修复、分镜首帧、分镜视频、角色卡提取、角色三视图、短剧大纲、技能草稿。短剧一句话生成和技能库 AI 草稿只提交 promptTemplateOperation 与变量,占位 prompt 不会成为模型看到的正文。
画布内置预设、反推提示词、工作流起步稿、文本改写包装、视频操作包装和字幕高亮指令属于客户端目录 web/src/lib/prompts。云端 Agent 的行为策略在后端版本化 md 资源中,用户常驻偏好可编辑;工具权限和计费规则仍由服务端代码强制执行,不由浏览器或偏好文档覆盖。
相关实现
backend/internal/service/prompt_template.go、prompt_template_defaults.go:操作定义、编译、受保护契约和结果校验。web/src/lib/prompts/:前端操作名、客户端起始/包装提示词和短剧大纲解析。web/src/pages/settings/prompt-preferences-pane.tsx、web/src/pages/admin/storyboard-prompts/storyboard-prompts-page.tsx:用户偏好与运营版本。
AI 提示词优化器
提示词优化器是一个内置 AI 能力插件,用于把模糊的生图或生视频想法整理成可以直接使用的提示词。它复用宿主已经配置的文本模型和渠道,不在浏览器中保存或拼接第三方密钥。
使用入口
- 创作页
/create的提示词输入框中,点击“优化”。 - 画布中的图片或视频节点提示词编辑器中,点击“优化”。
面板使用紧凑的聊天式交互,跟随当前输入框定位,支持拖动、边缘调整尺寸和窗口尺寸变化。打开与关闭不使用延迟动效,避免遮挡画布或让用户误以为请求卡住。
优化方式
| 方式 | 用途 |
|---|---|
| 扩展想法 | 从模糊想法补齐主体、场景、构图、光线、镜头等可执行细节。 |
| 精修已有提示词 | 尽量保留原意,只修正表达并补充必要细节。 |
| 强化风格 | 保留主体和动作,强化色彩、材质、光影与指定风格。 |
| 适配模型 | 按当前生成模型和协议调整提示词结构,避免使用未确认的参数语法。 |
| 结合参考 | 使用已连接的图片或文本补充外观、一致性、构图和关联关系。 |
面板底部可以单独选择优化所使用的文本模型;目标生成模型仍取当前图片或视频生成配置。两者职责不同:前者负责整理提示词,后者负责最终生成内容。
结果与安全边界
- 优化结果以结构化内容返回,包含正向提示词、规避项、修改说明、假设和可选备选版本。
- 结果可以继续编辑;只有点击“采用”才会回填当前输入框,并自动关闭面板。
- 请求支持流式反馈、取消和错误提示,不会在优化失败时覆盖原提示词。
- 参考素材只提交当前已连接且符合类型的内容;插件不自行访问素材库或后端密钥。
相关实现
web/src/lib/plugins/builtin/prompt-optimizer.ts:插件清单、优化方式和模型适配策略。web/src/components/canvas/canvas-prompt-optimizer-drawer.tsx:聊天面板、拖动缩放和结果采用交互。web/src/services/plugin-host.ts:将插件文本请求接入宿主现有模型渠道。web/src/pages/create/index.tsx、web/src/components/canvas/canvas-node-prompt-panel.tsx:两个入口的接入。
首页图片预览与画布同款查看器
创作页 /create 的生成结果、参考图片和故事板图片,打开后使用与画布图片节点相同的全屏图片查看器。首页不再维护独立的图片缩放和拖拽实现,避免两个入口的交互行为逐渐分叉。
图片查看器支持移动、缩放和关闭,缩放范围为 0.5 到 12,步进为 0.25;视频仍使用创作页原有的视频播放弹窗。该能力只统一图片预览交互,不改变缩略图、媒体资源地址或生成流程。
相关实现
web/src/components/canvas/canvas-image-preview.tsx:画布与创作页共用的图片预览组件。web/src/pages/canvas/canvas-project-status-dialogs.tsx:画布图片节点预览入口。web/src/pages/create/index.tsx:生成结果、参考图片和故事板图片预览入口。
可自定义工作台导航
内置工作台插件将常用创作入口统一交给宿主渲染。用户可以在设置页的“自定义区域”(/settings?section=workbench)预览侧边栏,分别控制入口显示状态,并通过拖拽或上下按钮调整同一分组内的顺序;“恢复默认”可以还原初始布局。
布局只属于当前账号在当前浏览器中的界面偏好,按账号 scope 保存在本机浏览器,不会上传素材、密钥或插件代码。功能开关不可用的入口不会展示;工作台入口使用宿主预注册的内部路由,插件不能直接注入工作区脚本。
相关实现
web/src/lib/workspace-sidebar-layout.ts:入口清单、分组、布局归一化、排序和账号 scope 存储。web/src/lib/plugins/builtin/workbench.ts:内置工作台插件 Manifest。web/src/components/layout/workspace-sidebar-nav.tsx:按功能开关和用户布局渲染侧边栏。web/src/pages/settings/workbench-settings-pane.tsx:预览、显示切换、排序和恢复默认。
用户诊断包导出
设置页的“问题诊断”入口和任务失败快捷入口支持导出脱敏诊断包,帮助普通用户提交问题时保留足够的排障上下文。
当前能力
- 浏览器内存中保留最近的全局错误、未处理 Promise、API 请求和任务创建事件。
- 后端按当前登录用户、时间范围、任务或项目聚合
Task、TaskLog和ApiCallLog。 - 下载前显示数据量预览,并生成包含清单、运行时信息和 JSONL 日志的 ZIP。
- 默认排除提示词、任务输入、API Key、Cookie、上游请求/响应体和 URL 查询参数。
使用入口
- 设置页:
/settings?section=diagnostics。 - 失败任务详情中的“导出诊断包”按钮会自动带入任务和项目范围。
相关设计和接口边界见用户诊断包设计。
Eagle 外部素材库
内置 Eagle 插件可以从用户配置的 Eagle 服务读取素材、文件夹和标签,并将素材映射为工作台可引用的外部资源。
当前能力
- 支持按文件夹、关键词和素材类型查询 Eagle 素材。
- 素材没有文件夹或标签时,仍返回稳定的空集合,工作台可以继续展示和引用素材。
- 保留素材的文件夹路径、标签、扩展名、尺寸、大小和修改时间等排障与展示信息。
相关实现
backend/internal/service/eagle.go:Eagle 响应解析和集合字段归一化。web/src/lib/plugins/builtin/eagle.ts:外部素材映射、预览和引用处理。
自由空白画布起点
新建且没有节点的自由画布会显示“从哪里开始”引导。除短剧流水线和 Agent 生成外,用户可以选择“自由空白画布”,在不预设工作流的情况下开始创作。
进入自由空白画布后,画布中央保留一个带加号的起始框。点击加号会打开与底部工具栏相同的添加菜单,可新建文本、绘图、分镜、背板、文件夹、图片、视频、音频和工作流,也可上传文件或打开素材库。插件提供的节点继续由同一命令注册表控制,不维护第二份素材类型清单。
自由起点选择按画布持久化;画布仍为空时刷新页面不会重新回到起始引导。中央起始框只负责提供入口,不创建占位节点。
相关实现
web/src/components/canvas/canvas-short-drama-entry.tsx:起始引导、自由空白起始框和中央加号。web/src/components/canvas/use-canvas-create-commands.ts:工具栏与空白起点共用的添加命令解析。web/src/lib/canvas/canvas-starter.ts:空画布起点状态决策。web/src/stores/canvas/use-canvas-store.ts:按画布保存自由起点选择。
画布同步与离线恢复
画布编辑会先写入浏览器本地持久化,再由统一同步队列提交 operations。浏览器在线时自动保存;断网、响应丢失或服务端暂时不可用时,未确认请求会保留在本地 journal,恢复连接后按原 mutationId 和原操作内容自动重放。同步状态会区分保存中、已完成、待处理和错误,用户无需选择本地版或云端版,也无需手动强制覆盖。
媒体素材先完成资源归属和就绪校验,再提交引用画布的 operations。服务端返回并发或资源冲突时,本地修改继续保留,系统等待下一次基线校验;删除后的迟到更新会被拒绝,不会凭空创建节点。相关同步细节见 画布 operations 同步。
相关实现
web/src/stores/canvas/use-canvas-store.ts:本地画布持久化与 journal。web/src/services/user-data-sync.ts:operations diff、自动保存、回执重放和远端删除保护。web/src/services/canvas-asset-repair.ts:提交前媒体引用与素材记录校验。web/src/pages/canvas/canvas-sync-status.tsx:同步状态显示。
画布外观
底部工具栏的“画布外观”面板支持浅色、深色、自定义三种主题,以及点阵、线稿、空白三种网格。浅色画布使用比白色节点更沉的中性雾灰背景,深色画布使用比原深色节点更亮的中性灰背景,让画布底层与内容表面保持稳定区分,同时避免蓝灰背景与黑色工具浮层产生色温割裂。
自定义主题会继承用户进入前的浅色或深色基础界面,并允许在“浅色界面”和“深色界面”之间切换。界面样式复用原项目整套节点、工具浮层、文字、边框和交互状态,不开放这些元素的任意改色;切换界面样式不会覆盖已经选择的画布背景和网格颜色。
自定义主题还允许调整画布背景色、背景明亮度、网格颜色和网格强度。颜色输入支持三位或六位 HEX,可带或不带 #;形成合法色码后实时写入当前画布,编辑过程中不会被父级状态覆盖,关闭外观面板也不会撤销。选择新的画布背景色时明亮度自动归零,确保画布首先精确显示输入色;之后仍可沿 OKLCH 亮度轴单独调整。不提供背景透明度,避免画布底色与底层颜色混合后产生偏色。“网格强度”使用 0% 最淡、100% 最明显的方向,避免“透明度”命名歧义。
自定义外观可以应用到当前画布,也可以保存为当前浏览器、当前账号 scope 下的新建画布默认值。当前画布外观沿用画布项目的既有持久化和同步流程;浏览器默认值不跨设备同步。
相关实现
web/src/lib/canvas-theme.ts:浅色、深色画布固定背景与原有节点、浮层 token。web/src/lib/canvas/canvas-appearance.ts:自定义外观归一化、解析和本机账号默认值。web/src/components/canvas/canvas-toolbar.tsx:画布外观面板入口。web/src/components/canvas/canvas-appearance-controls.tsx:主题、颜色、明亮度和网格控件。web/src/components/canvas/canvas-viewport.tsx:应用主题背景并保持网格渲染参数。
画布节点自动整理
画布底部的“自动整理节点”按钮用于快速改善节点排布,适合处理节点散落、间距不一致或流程方向不清晰的画布。
使用规则
- 选中了两个或以上节点时,只整理选中的可移动节点;没有选中节点时,整理所有顶层可移动节点。
- 候选节点存在连线时,横向保持从左到右的依赖层级,纵向按文本、图片、视频、音频分泳道;没有连线时,各媒体类型分别使用网格布局,不再把图片与视频混排。
- 锁定节点、容器节点和折叠批次中的隐藏子节点不会被移动。
- 节点位置变化会进入现有画布历史记录,可使用“撤销”恢复整理前的布局,并继续由画布生命周期自动保存。
相关实现
web/src/components/canvas/canvas-zoom-controls.tsx:底部视图控制 Dock 与“自动整理节点”入口。web/src/pages/canvas/use-canvas-node-operations.ts:候选节点筛选、流程/网格布局选择和位置提交。web/src/lib/canvas/canvas-layout.ts:媒体泳道、拓扑流程、网格、行列排列和对齐算法。
积分充值支付插件
积分中心在线充值通过 yan.payment/v1 支付插件接入。宿主只保存订单、加密配置、回调入账和对账;渠道协议由插件包提供。当前官方包包括微信支付 Native、支付宝电脑网站支付和虎皮椒聚合支付,包内同时带有 macOS、Linux、Windows 的 amd64/arm64 可执行文件,宿主启动时按本机系统选择。管理员在插件中心开放插件后,到支付设置填写渠道密钥即可出现在用户积分中心弹窗。扫码区固定白底深色码点;虎皮椒 url_qrcode 是现成二维码图片,钱包直接展示,不再二次编码。用户顶栏积分、账户卡片、命令面板、画布余额和 /wallet 回跳都打开同一弹窗,不再进入独立钱包页。
相关实现
plugin-packages/official-payment-xunhupay/:虎皮椒聚合支付插件包与 RPC 入口。backend/payment-plugins/xunhupay.go:虎皮椒下单、查单、验签与关单适配。docs/content/docs/plugins/payment-plugin-runtime.mdx:支付插件运行时协议。
剪辑成片(时间线编辑器)
“剪辑成片”是项目详情里的时间线编辑器入口(/projects/:id/editor),用于把已就绪的分镜视频编排成一段可播放、可导出的成片。它运行在浏览器本地时间线模型之上,通过后端任务队列完成语音转写与成片导出,编辑器本身不直接触碰原始媒体大文件。
使用入口
- 项目详情“制作流程 → 剪辑成片”步骤卡,或地址栏直接访问
/projects/:id/editor。 - 编辑器按项目隔离时间线状态;离开后再次进入会恢复该项目的编辑器快照。
当前能力
- 轨道与命令:时间线支持添加、删除、拆分、移动、修剪片段等操作,全部通过统一命令状态机执行并进入 200 层历史记录,可撤销与重做;非法操作整批拒绝,不产生半应用状态。
- 预设面板:左侧“添加”分类提供 8 个内置片段/字幕插件,按分类分组接入同一插槽注册链,第三方插件可与内置面板共存。
- 权限与执行边界:命令执行遵循失败关闭(fail-closed)策略,
timeline.command权限与全局plugins.run权限分开控制;未授权插件或命令不会被执行或回显。 - 语音转写(字幕):对时间线音视频发起转写任务,转写进度沿任务 SSE 回流,完成后生成字幕轨。
- 成片导出(渲染):发起渲染任务,由服务端 ffmpeg 按渲染计划输出成片;渲染成功后在项目概览的“剪辑成片”步骤卡呈现“已输出 N 个成片”,并作为该步骤完成度的判定依据。
- AI 编辑助手:可以用自然语言描述剪辑意图,系统将其解析为受支持的命令序列;不超过 3 条命令时直接执行,多于 3 条先给出差异预览,确认后才批量执行。
运行环境要求
- 语音转写依赖本地 whisper.cpp 服务(
CANVAS_WHISPER_BASE_URL),未配置时转写任务明确失败。 - 成片导出依赖服务端 ffmpeg(
CANVAS_FFMPEG_PATH,留空时在 PATH 中查找)。 - AI 编辑助手需要可用的文本模型渠道。
相关实现
web/src/pages/projects/detail/editor.tsx、web/src/pages/projects/detail.tsx:编辑器页面与路由入口。web/src/pages/projects/detail/overview.tsx:制作流程步骤卡与成片完成度展示。web/src/lib/timeline/:时间线命令状态机、历史记录、命令 schema 与摘要(editor-commands.ts、editor-history.ts、ai-command-schema.ts、timeline-summary.ts)。web/src/stores/editor/editor-store.ts:编辑器状态与快照持久化。web/src/lib/plugins/editor-slot-registry.ts、web/src/lib/plugins/builtin/editor/:插槽注册链与内置预设插件。web/src/lib/plugins/plugin-permission-check.ts:命令执行权限与失败关闭策略。web/src/services/api/timeline-tasks.ts:转写与渲染任务客户端。backend/internal/service/task_timeline.go、task_render.go、timeline_render_plan.go、transcription_whisper.go:后端转写、渲染与渲染计划任务。backend/internal/repository/project_workbench_read.go:项目概览指标聚合(含成片完成度计数)。
画布生成工具(待本地验收)
画布支持风格、运镜、九宫格提示词工具及自定义特效工具,提供收藏和私有自定义工具。工具仅加入提示词或创建待生成子节点,选择工具不自动发起生成。画布左侧提供主页、折叠、节点、资产、任务和历史菜单,不再提供独立工具菜单,展开面板沿用主分支主题。资产支持分类、搜索、分页和直接插入,复用现有素材服务及插入合同;任务和历史独立,历史明确展示最近 30 条。图片节点直接展示风格和预设,不再展示提示词模板入口;其他节点的提示词模板保持不变。
平台技能策展
后台可选开启子分类维护,市场和技能库支持子分类浏览;默认关闭,保留原行为。
开启时一级分类也可在后台新增、改名、排序、停用和选择图示,未归入技能仍有默认入口。
创作首页、最近画布与灵感大厅
根路径 / 与 /create 共用创作首页。空态首屏提供紧凑标题、文本/图片/视频/Agent 模式、真实提示词输入区和快捷创作入口。下方一行展示创建画布与最近更新的 4 个画布,支持打开、查看全部和窄屏横向浏览;读取失败提供重试,创建后明确区分本机保存与云端同步。
灵感大厅合并到创作首页下方,不再提供独立灵感导航或 /inspirations 页面路由。类型与搜索常驻,来源、分类、收藏/隐藏和排序收拢在更多筛选中;默认每页 12 条。新建、编辑、隐藏/恢复、收藏与 JSON 导入导出继续保留,本地改动按账号 scope 持久化。使用灵感会关闭详情、回填首页提示词并返回输入区,不自动生成。
内置提示词统一提供中文正文,详情阅读、复制、编辑和回填创作使用同一份中文内容。已有中文来源直接采用中文版本,其余外文正文翻译后随静态目录发布;模型名、引用标记和模板参数保留原有用途。来源及原页链接显示遵循后台来源展示开关。
译文维护在 web/scripts/data/inspiration-prompts-zh.json,记录原文 SHA-256;导入脚本写入目录前校验原文版本,缺译会停止导入。
外部提示词由 web/scripts/import-inspirations.mjs 同步。web/public/inspirations/*.json 继续提供静态目录数据,灵感大厅进入可视区域附近后才按需加载全量目录,浏览器缓存与会话内缓存避免重复请求;封面保持稳定比例,加载失败显示占位内容。
相关实现
web/src/pages/create/index.tsx、creation-product.css:首页组合、提示词回填与紧凑布局。web/src/pages/create/creation-recent-canvases.tsx:最近画布查询、创建与快捷入口。web/src/pages/inspirations/:内嵌灵感大厅、详情/编辑弹窗与样式。web/src/lib/inspirations/:来源登记、条目类型、解析、原创条目与上游版本。web/src/services/inspiration-catalog.ts:静态目录的运行时加载与内存缓存。web/src/stores/use-inspiration-store.ts:自建、覆盖、隐藏与收藏的本地持久化。web/scripts/import-inspirations.mjs:外部来源同步、缩略图生成与目录落盘。
画布外观预设
顶部保留浅色、深色和自定义三个入口。浅深切换恢复该色调最近的预设或微调;自定义仅展开、收起当前色调的设置,切换浅深不会改变展开状态。浅色提供经典浅灰、粉色、米色、浅绿,深色提供经典深色和柔和深灰;可调整明亮度、网格强度,并在“更多颜色”中修改背景和网格颜色。
单个画布自动保存预设快照、浅深色各自的微调和网格样式,工作台主题切换不覆盖已有画布。未设置新画布默认时,新建画布随工作台明暗选择经典预设,并默认使用线网格;旧画布缺省仍按点网格处理,已有显式颜色和参数继续读取。“设为新画布默认”仅作用于当前账号与本浏览器。外观及添加节点面板限制高度并允许内部滚动。