Civitai 基座模型接入实战:基于生态系统架构为 basemodel.constants.ts 新增模型与生态
【免费下载链接】civitaiA repository of models, textual inversions, and more项目地址: https://gitcode.com/GitHub_Trending/ci/civitai
本文围绕 Civitai 平台(civitai 仓库)中「如何为生成、训练、拍卖(bounty/auction)体系新增一个基座模型(Base Model)与生态系统(Ecosystem)」这一核心主题展开。全文以仓库内的接入指南 docs/adding-basemodel-ecosystem-guide.md 为骨架,结合其落点文件 basemodel.constants.ts 的真实实现,完整覆盖从概念模型、决策树、信息采集清单,到九步实施流程、四组典型示例与上线前校验清单的全链路操作。读完本篇,你将能够独立完成一次新增模型/生态系统的改动,并理解其中的继承机制与 ID 管理约束。
核心主题与关键概念
该指南声明的使用场景是:当一个新 AI 模型需要接入平台,以支持生成(generation)、训练(training)或拍卖(auction)能力时,按此流程修改basemodel.constants.ts。在 civitai 仓库中,该文件实际位于共享包内:packages/civitai-shared/src/basemodel.constants.ts(当前约 5000 行),文件头注释声明其实现了一套「生态系统(ecosystem-based)新架构」,包含分层生态系统(父子关系)、关注点分离(身份/支持/设置三张表)与基于继承的解析逻辑。
整个架构由 6 类组件构成,每一类都对应文件中的一个 TypeScript 类型与一组数据数组:
- 生态系统(
EcosystemRecord):代表一个模型家族的组织单元。字段包括id、key(稳定标识,用于数据映射,如SDXL、Flux1)、name、displayName(UI 展示名)、description、parentEcosystemId(可选,父子关系,例如 Pony 是 SDXL 的子生态)、familyId(UI 家族分组)、sortOrder(UI 排序)。数据数组为ecosystems(当前约第 267 行)。 - 基座模型(
BaseModelRecord):生态内部的具体模型变体,字段包括id、name、description、type(image/video等 MediaType)、ecosystemId(且仅属于一个生态)、licenseId、hidden、disabled、experimental。数据数组为baseModelRecords(当前约第 2679 行)。 - 生态系统支持(
EcosystemSupport):声明某生态支持哪些模型类型,supportType取值generation/training/auction,modelTypes为ModelType[](如Checkpoint、LORA、TextualInversion、Controlnet),可用disabled: true整体禁用。数据数组为ecosystemSupport(当前约第 1020 行)。 - 生态系统设置(
EcosystemSettings):生成的默认参数,defaults包含model(默认 checkpoint 的 id)、modelLocked(用户是否不可切换底模,视频模型常用)、engine(编排器引擎标识)。数据数组为ecosystemSettings(当前约第 1256 行)。 - 跨生态规则(
CrossEcosystemRule):定义生态之间的部分兼容关系,例如 SD1 的 TextualInversion 可在 SDXL 使用;support恒为'partial'。数据数组为crossEcosystemRules(当前约第 1744 行)。 - 许可证(
LicenseRecord):模型使用条款,字段包括id、name、url、notice、poweredBy、disableMature(NSFW 限制)等。数据数组为licenses(当前约第 2253 行)。
提示:原指南中给出的行号(如 ECO 在第 111 行、BM 在第 1535 行)是基于历史版本的定位。以当前仓库源码为准,各关键对象的位置为:
ECO常量(第 122 行)、ecosystems(第 267 行)、ecosystemSupport(第 1020 行)、ecosystemSettings(第 1256 行)、crossEcosystemRules(第 1744 行)、BM常量(第 2117 行)、licenses(第 2253 行)、ecosystemFamilies(第 2543 行)、baseModelRecords(第 2679 行)。修改前建议先搜索这些符号名定位最新位置。
模型类型数组的现成定义
指南中反复用到的四个「常用模型类型数组」在源码中已有定义(basemodel.constants.ts#L992-L1013):
const checkpointOnly = [ModelType.Checkpoint]; const loraOnly = [ModelType.LORA]; const checkpointAndLora = [ModelType.Checkpoint, ModelType.LORA]; const fullAddonTypes = [ ModelType.Checkpoint, ModelType.LORA, ModelType.TextualInversion, ModelType.Controlnet, // ...(其余 addon 类型) ];另外还定义了两个跨生态专用的数组:sdxlCrossAddonTypes(父↔子规则用,包含 VAE)与sdxlSiblingAddonTypes(兄弟生态互用,不含 VAE)。ModelType枚举来自 packages/civitai-db-schema 的 enums 模块(@civitai/db-schema/enums),在basemodel.constants.ts顶部以import { ModelType, type MediaType } from '@civitai/db-schema/enums'引入。
决策树:先判断要建多少东西
指南给出的第一步不是写代码,而是回答「这个新模型到底算什么级别」:
New Model Request │ ├─ Is this a new family/brand? (e.g., first Google model, first ByteDance model) │ └─ YES: Create new ECOSYSTEM + BASE MODEL + FAMILY (if needed) │ ├─ Is this a variant of existing ecosystem? (e.g., Flux.2 Klein 9B vs Flux.1) │ └─ YES: Create new ECOSYSTEM + BASE MODEL (variant) │ ├─ Is this a fine-tune/derivative of existing model? (e.g., Pony based on SDXL) │ └─ YES: Create new ECOSYSTEM (child) + BASE MODEL │ └─ Is this just a checkpoint within existing ecosystem? (e.g., SDXL 0.9 vs SDXL 1.0) └─ YES: Create BASE MODEL only从源码可以印证「变体也建独立生态」这一原则:ECO常量中Flux2Klein_9B: 54、Flux2Klein_9B_base: 55、Flux2Klein_4B: 56、Flux2Klein_4B_base: 57是四个独立生态且均挂parentEcosystemId: ECO.Flux2;而LTXV25: 81之所以与LTXV23分开,源码注释明确写道「2.5 ships its own 22B weights, so a 2.3 LoRA is not guaranteed to load on it — separate ecosystem, bridgeable later with a crossEcosystemRule」(共享架构不等于共享权重,LoRA 是针对具体权重训练的)。
信息采集清单(动手前必答的问题)
指南将前置调研分为「必答问题」与「视情况追问的问题」两组,完整继承如下:
必答问题
- 模型名称:完整官方名(如 "Flux.2 Klein 9B");UI 中如何展示(
displayName)。 - 生成媒体类型:
image还是video。 - 归属生态:属于既有家族(SDXL、Flux、WanVideo 等),还是全新生态。
- 许可证:是否开源、具体哪个许可证(Apache 2.0、CreativeML 等);有无商业限制;是否限制 NSFW(
disableMature: true);许可证 URL/文档;是否需要 notice 或 powered-by 文案。 - 支持的模型类型:仅 Checkpoint(
checkpointOnly);Checkpoint + LORA(checkpointAndLora);完整 addon 支持(fullAddonTypes);仅 LORA(loraOnly)。 - 能力:是否支持生成;是否支持用户训练 LoRA;是否可用于 bounty/拍卖。
视情况追问
- 是否已具备生产条件:是否先隐藏(
hidden: true);是否实验性(experimental: true);是否完全禁用(disabled: true)。 - 父子关系:是否为另一生态的微调衍生(如 Pony 之于 SDXL);是否应从父生态继承支持配置;若是,父生态是谁。
- 跨生态兼容:其他生态的资源能否与之搭配(SD1 的 embedding?Flux1 的 LoRA?);具体哪些模型类型兼容。
- 默认生成设置:使用哪个引擎(如
wan、hunyuan、veo3、sora2);默认采样器、steps、CFG;默认分辨率;模型/底模是否锁定(视频模型常见)。 - 家族分组:是否与相关模型在 UI 中同组;属于哪个 family(指南写作时标注 Flux Family = familyId 1、Stable Diffusion Family = familyId 2、Google Models = familyId 3)。需要说明:以当前源码 basemodel.constants.ts#L2543-L2578 为准,家族表已扩展到 20+ 项,例如 1 = "Black Forest Labs"、2 = "Stability AI"、3 = "SDXL Community"、7 = "Google",新增时应以实际表内现有 ID 为据顺延。
- 排序:在同类列表中的相对位置(
sortOrder)。
九步实施流程
以下步骤继承自指南,行号已按当前源码校准(原文档中的行号为历史版本位置,符号名不变)。
Step 1:新增生态 ID 常量(ECO)
位置:ECO常量对象(basemodel.constants.ts#L122-L250)。
export const ECO = { // ... existing ecosystems ... NewEcosystem: 99, // Use next available ID } as const;ID 段位约定(指南原文 + 源码印证):
- 1–99:根生态(root ecosystems);
- 100–199:SDXL 系子生态(源码中
Pony: 100、Illustrious: 101、NoobAI: 102); - 200–299:AuraFlow 系子生态(源码中
PonyV7: 200)。
值得强调的是,源码在ECO定义后紧跟一段运行期防重护栏(basemodel.constants.ts#L252-L261):用Map扫描所有 id,发现重复立即throw new Error("Duplicate ECO id ...")。注释说明了原因——ecosystemById以 id 为键,冲突会静默覆盖早期条目并导致跨生态错路由。BM常量旁也有同样的护栏(basemodel.constants.ts#L2228-L2237)。因此选 ID 时务必全表搜索确认无冲突,否则模块加载阶段就会抛错。
Step 2:新增基座模型 ID 常量(BM)
位置:BM常量对象(basemodel.constants.ts#L2117-L2226)。
export const BM = { // ... existing base models ... NewModel: 106, // Use next available ID } as const;从源码结构看,BM内部存在「重排级联」先例:BM.PolyGen的注释记录了它因两次主分支合并分别让位 MAI 与 Ideogram,从 90 顺延到 91 再到 92。这说明 ID 是永不复用的全局序列号,新增时取最大值 +1 即可。
Step 3:新增许可证(若为新许可证)
位置:licenses数组(basemodel.constants.ts#L2253 起)。
{ id: 27, // Next available ID name: 'License Name', url: 'https://...', notice: 'Optional legal notice text', poweredBy: 'Optional powered by text', disableMature: true, // If NSFW content is restricted },对照源码类型定义LicenseRecord(basemodel.constants.ts#L85-L98),还可使用attribution(许可证强制要求在产品 UI 中展示的确切字符串,与免责用途的poweredBy区分开)和nonCommercial(禁止商用,驱动商用覆盖与变现拦截)。
Step 4:新增生态家族(若为新家族)
位置:ecosystemFamilies数组(basemodel.constants.ts#L2543 起)。
{ id: 22, // Next available ID name: 'Family Name', description: 'Brief description of this model family', },Step 5:新增生态记录(ecosystems)
位置:ecosystems数组(basemodel.constants.ts#L267 起),按家族分区组织。
{ id: ECO.NewEcosystem, key: 'NewEcosystem', // Stable identifier (no spaces) name: 'newecosystem', // Lowercase for matching displayName: 'New Ecosystem', // Human-readable name for UI description: 'Brief description', // Optional: for UI tooltips/help parentEcosystemId: ECO.Parent, // Optional: if this is a child ecosystem familyId: 1, // Optional: for UI grouping sortOrder: 10, // Optional: for UI ordering },注意key与name的分工:key是稳定标识(用于数据映射与 UI 路由,如SDXL),name是小写形式用于匹配。此外从类型定义可见,较新的版本还为EcosystemRecord增加了selfHosted字段(标识该生态的生成是否路由到 Civitai 自托管 GPU/worker,驱动 self-hosted 生成开关),由文件内的SELF_HOSTED_ECOSYSTEM_KEYS(basemodel.constants.ts#L936 附近)统一盖戳——若新模型走自托管 worker,还需同步更新该集合。
Step 6:新增基座模型记录(baseModelRecords)
位置:baseModelRecords数组(basemodel.constants.ts#L2679 起),按生态分区组织。
{ id: BM.NewModel, name: 'New Model Name', description: 'Model description for UI', type: 'image', // or 'video' ecosystemId: ECO.NewEcosystem, licenseId: 13, // Reference to license hidden: false, // Set to true to hide from activeBaseModels disabled: false, // Set to true to completely disable experimental: false, // Set to true to show experimental warning },Step 7:新增生态系统支持(ecosystemSupport)
位置:ecosystemSupport数组(basemodel.constants.ts#L1020 起)。指南给出的五种常见模式完整继承如下:
// Pattern 1: Checkpoint only (most API/closed-source models) { ecosystemId: ECO.NewEcosystem, supportType: 'generation', modelTypes: checkpointOnly }, // Pattern 2: Checkpoint + LORA (common for open models) { ecosystemId: ECO.NewEcosystem, supportType: 'generation', modelTypes: checkpointAndLora }, { ecosystemId: ECO.NewEcosystem, supportType: 'training', modelTypes: [ModelType.LORA] }, // Pattern 3: Full addon support (SD-based models) { ecosystemId: ECO.NewEcosystem, supportType: 'generation', modelTypes: fullAddonTypes }, { ecosystemId: ECO.NewEcosystem, supportType: 'training', modelTypes: [ModelType.LORA] }, { ecosystemId: ECO.NewEcosystem, supportType: 'auction', modelTypes: checkpointAndLora }, // Pattern 4: LORA only (for models that require a base checkpoint) { ecosystemId: ECO.NewEcosystem, supportType: 'generation', modelTypes: loraOnly }, // Pattern 5: Disabled (model exists but generation is disabled) { ecosystemId: ECO.NewEcosystem, supportType: 'generation', modelTypes: checkpointOnly, disabled: true },源码中的真实条目可以佐证这些模式的分布:SDXL 走 Pattern 3(full addon + training + auction,第 1026-1028 行);Imagen4、Veo3、OpenAI 等闭源 API 模型走 Pattern 1;Hunyuan Video(ECO.HyV1)则是loraOnly——即该生态只接受 LoRA、底模平台自持。
Step 8:新增生态系统设置(ecosystemSettings)
位置:ecosystemSettings数组(basemodel.constants.ts#L1256 起)。何时添加:模型需要特定默认参数或引擎配置时。
{ ecosystemId: ECO.NewEcosystem, defaults: { engine: 'engineName', // Orchestrator engine identifier (required for video models) modelLocked: true, // Optional: true for video models (user can't change base) model: { id: BM.NewModel },// Optional: default checkpoint model }, },指南特别说明:sampler、steps、CFG、分辨率等生成参数配置在>{ sourceEcosystemId: ECO.SourceEcosystem, targetEcosystemId: ECO.NewEcosystem, supportType: 'generation', modelTypes: [ModelType.LORA], // or other types support: 'partial', // Always 'partial' }, 指南列出的常见跨生态模式: 源码 basemodel.constants.ts#L1744-L1843 中的真实规则与上述完全一致:SD1→SDXL/Pony/Illustrious/NoobAI 四条单向 TextualInversion 规则、SDXL 与三个子生态的双向 指南在多处强调「子生态继承父生态配置」,这一行为在源码中有明确实现,值得单独展开: 以下四个示例原样继承指南的「问题清单 + 代码实现」结构,是覆盖闭源 API 模型、开源模型、视频模型、子生态微调四种主路径的最小完整改动集。 场景:为 Google 添加 "Imagen 5"。 答案速览:名称 Imagen 5;类型 image;新生态 Imagen5;许可证 Google proprietary(id: 21);仅 Checkpoint;能力仅生成;就绪、不隐藏;无父生态;无跨生态规则;无需特殊引擎;家族 Google Models。 (示例中的具体 ID/家族编号取自指南原文,实际操作时以当前文件内已有值顺延。) 场景:添加开源图像模型 "DreamFlow 1.0"。 答案速览:名称 DreamFlow 1.0;image;新生态 DreamFlow;许可证 Apache 2.0(id: 13);Checkpoint + LORA;生成 + 训练 + 拍卖;就绪;无父生态;暂无跨生态规则;标准默认;新家族。 场景:添加私有视频模型 "VidGen Pro"。 答案速览:名称 VidGen Pro;video;新生态 VidGenPro;自定义专有许可证;仅 Checkpoint;仅生成;就绪;无父生态;无跨生态规则;需要引擎 指南的 Validation Checklist 按五个维度组织,全部继承如下。 Checkpoint(底模本体)、LORA(低秩适配微调)、TextualInversion(embedding/概念注入)、Controlnet(条件控制:姿态、深度等)、Hypernetwork、VAE(颜色/细节调整)、Upscaler(分辨率增强)、MotionModule(动画/运动控制)、Poses(姿态模板)、Wildcards(动态 prompt 模板)、Workflows(完整生成管线)。 子生态(带 指南结尾给出的求助策略同样值得遵循: 总原则:永远优先提出澄清问题,而不是替需求方做假设。整套流程的核心在于: 【免费下载链接】civitaiA repository of models, textual inversions, and moresdxlCrossAddonTypes,父↔子,含 VAE);sdxlSiblingAddonTypes,兄弟,不含 VAE);sdxlCrossAddonTypes规则、以及 Pony↔Illustrious 等兄弟间的双向sdxlSiblingAddonTypes规则。规则表按「生态对 + 方向」逐条显式书写——这是下一条「继承机制」里最重要的一条边界。继承机制:什么会自动继承,什么必须显式声明
getEcosystemSupport()(basemodel.constants.ts#L3759-L3776)先查本生态的显式条目,查不到则沿parentEcosystemId递归向上查父生态。因此Pony(100)不需要自己的ecosystemSupport条目即可复用 SDXL 的 full-addon 支持。getEcosystemSetting()(basemodel.constants.ts#L3781-L3798)同样支持按 key 沿父链向上继承默认值。getRootEcosystem()(basemodel.constants.ts#L3727-L3738)沿parentEcosystemId上溯到无父者为止;baseModelSupportsClipSkip()就依赖它——只有根生态是 SD1/SDXL 时才启用 clip skip。crossEcosystemRules是纯查表,不存在沿父链上溯的逻辑;新增子生态时必须为每一对需要互通的生态显式补规则。完整示例(继承自指南的四个场景)
示例 1:新增闭源 API 模型(仅 Checkpoint)
// 1. Add ecosystem ID export const ECO = { // ... Imagen5: 60, } as const; // 2. Add base model ID export const BM = { // ... Imagen5: 101, } as const; // 3. License already exists (Google proprietary, id: 21) // 4. Family already exists (Google family, see ecosystemFamilies) // 5. Add ecosystem ecosystems: [ // ... in Google family section ... { id: ECO.Imagen5, key: 'Imagen5', name: 'imagen5', displayName: 'Imagen 5', description: 'Google\'s latest text-to-image model', familyId: 3, sortOrder: 22, }, ] // 6. Add base model baseModelRecords: [ // ... in Imagen section ... { id: BM.Imagen5, name: 'Imagen5', description: 'Text-to-image model with enhanced capabilities', type: 'image', ecosystemId: ECO.Imagen5, licenseId: 21, }, ] // 7. Add support ecosystemSupport: [ // ... { ecosystemId: ECO.Imagen5, supportType: 'generation', modelTypes: checkpointOnly }, ] // 8. No settings needed (standard image generation) // 9. No cross-ecosystem rules needed示例 2:新增开源模型(Checkpoint + LORA)
// 1. Add ecosystem ID export const ECO = { // ... DreamFlow: 61, } as const; // 2. Add base model ID export const BM = { // ... DreamFlow10: 102, } as const; // 3. License exists (Apache 2.0, id: 13) // 4. Add new family ecosystemFamilies: [ // ... { id: 6, name: 'DreamFlow', description: 'Open-source creative generation models' }, ] // 5. Add ecosystem ecosystems: [ // ... { id: ECO.DreamFlow, key: 'DreamFlow', name: 'dreamflow', displayName: 'DreamFlow', description: 'Open-source creative text-to-image model', familyId: 6, sortOrder: 0, }, ] // 6. Add base model baseModelRecords: [ // ... { id: BM.DreamFlow10, name: 'DreamFlow 1.0', description: 'First generation DreamFlow model', type: 'image', ecosystemId: ECO.DreamFlow, licenseId: 13, }, ] // 7. Add support (full support: generation, training, auction) ecosystemSupport: [ // ... { ecosystemId: ECO.DreamFlow, supportType: 'generation', modelTypes: checkpointAndLora }, { ecosystemId: ECO.DreamFlow, supportType: 'training', modelTypes: [ModelType.LORA] }, { ecosystemId: ECO.DreamFlow, supportType: 'auction', modelTypes: checkpointAndLora }, ] // 8. No special settings needed // 9. No cross-ecosystem rules initially示例 3:带引擎的视频模型
vidgen、模型锁定、默认分辨率 1280x720;新家族。// 1. Add ecosystem ID export const ECO = { // ... VidGenPro: 62, } as const; // 2. Add base model ID export const BM = { // ... VidGenPro: 103, } as const; // 3. Add new license licenses: [ // ... { id: 26, name: 'VidGen Pro License', url: 'https://vidgen.com/license', notice: 'VidGen Pro is licensed for commercial use with attribution.', poweredBy: 'Powered by VidGen', }, ] // 4. Add new family ecosystemFamilies: [ // ... { id: 7, name: 'VidGen', description: 'VidGen video generation models' }, ] // 5. Add ecosystem ecosystems: [ // ... { id: ECO.VidGenPro, key: 'VidGenPro', name: 'vidgenpro', displayName: 'VidGen Pro', description: 'Professional video generation model', familyId: 7, sortOrder: 0, }, ] // 6. Add base model baseModelRecords: [ // ... { id: BM.VidGenPro, name: 'VidGen Pro', description: 'Professional-grade text-to-video generation', type: 'video', ecosystemId: ECO.VidGenPro, licenseId: 26, }, ] // 7. Add support ecosystemSupport: [ // ... { ecosystemId: ECO.VidGenPro, supportType: 'generation', modelTypes: checkpointOnly }, ] // 8. Add settings (REQUIRED for video models with custom engine) ecosystemSettings: [ // ... { ecosystemId: ECO.VidGenPro, defaults: { engine: 'vidgen', modelLocked: true, // User cannot change the base model model: { id: BM.VidGenPro }, // Default checkpoint }, }, ] // Note: Resolution, sampler, steps, CFG are configured in>// 1. Add ecosystem ID (child ecosystem range: 100-199 for SDXL derivatives) export const ECO = { // ... AnimeXL: 103, } as const; // 2. Add base model ID export const BM = { // ... AnimeXL: 104, } as const; // 3. License exists (id: 3) // 4. Family exists (Stable Diffusion family, see ecosystemFamilies) // 5. Add ecosystem WITH parentEcosystemId ecosystems: [ // ... in SDXL family section ... { id: ECO.AnimeXL, key: 'AnimeXL', name: 'animexl', displayName: 'AnimeXL', description: 'SDXL fine-tuned for anime-style generation', parentEcosystemId: ECO.SDXL, // IMPORTANT: marks as child familyId: 2, sortOrder: 15, }, ] // 6. Add base model baseModelRecords: [ // ... in SDXL section ... { id: BM.AnimeXL, name: 'AnimeXL', description: 'SDXL model specialized for anime and manga styles', type: 'image', ecosystemId: ECO.AnimeXL, licenseId: 3, }, ] // 7. NO ecosystem support needed - inherits from parent (SDXL) // Child ecosystems automatically inherit parent's support configuration // 8. NO settings needed - uses parent defaults // 9. Cross-ecosystem rules are EXPLICIT - they do NOT inherit from parent // You must add rules for each ecosystem that needs cross-compatibility // Use sdxlCrossAddonTypes for parent↔child (includes VAE) // Use sdxlSiblingAddonTypes for sibling↔sibling (no VAE) { sourceEcosystemId: ECO.SDXL, targetEcosystemId: ECO.AnimeXL, supportType: 'generation', modelTypes: sdxlCrossAddonTypes, support: 'partial' }, { sourceEcosystemId: ECO.AnimeXL, targetEcosystemId: ECO.SDXL, supportType: 'generation', modelTypes: sdxlCrossAddonTypes, support: 'partial' }, // Also add sibling rules with other SDXL children (Pony, Illustrious, NoobAI, etc.)上线前校验清单
代码完整性
ECO(若为新生态)BMecosystems数组中新增生态记录baseModelRecords数组中新增模型记录ecosystemSupport数组中新增支持条目ecosystemSettings数组中新增设置(若需要)crossEcosystemRules数组中新增跨生态规则(若适用)ID 管理
正确性
测试
pnpm run typecheck)baseModels数组导出中(源码:baseModels即baseModelRecords.map(x => x.name),basemodel.constants.ts#L4713)activeBaseModels中(源码第 4723 行,由getActiveBaseModels()生成)baseModelGroups导出中(源码第 4718 行,取所有生态的key去重)getBaseModelGenerationConfig()包含新生态(源码第 4868 行起,以lazy缓存构建)文档
常见模式速查与关键概念辨析
六类速查模式(指南原文)
### Pattern: Standard Open-Source Image Model // Ecosystem: New root ecosystem // Support: Checkpoint + LORA for generation, LORA for training, auction support // License: Apache 2.0 or CreativeML ### Pattern: Closed-Source API Model // Ecosystem: New root ecosystem // Support: Checkpoint only for generation // License: Proprietary // Hidden: May start hidden (hidden: true) until ready ### Pattern: Video Model // Ecosystem: New root ecosystem // Support: Checkpoint only or Checkpoint + LORA // Settings: MUST have engine, usually modelLocked: true // License: Varies ### Pattern: Fine-tune/Derivative // Ecosystem: Child ecosystem (set parentEcosystemId) // Support: Inherits from parent (no explicit support needed) // License: Often same as parent ### Pattern: Experimental/Beta Model // Base Model: experimental: true // May also be: hidden: true initially ### Pattern: Deprecated/Disabled Model // Base Model: disabled: true // Ecosystem Support: disabled: true (if just disabling generation)Hidden vs Disabled
hidden: true):模型存在但不进入activeBaseModels,仍可通过 API 保留生成/训练支持——用于「已入库但未开放」的状态。disabled: true):禁用全部能力(生成、训练、拍卖),等同退役。源码注释与supportOverrides的说明(basemodel.constants.ts#L2239-L2247)进一步印证:BaseModelRecord上disabled: true的模型无需再写 override 条目,该标志即提供根级全类型禁用;当前被整体禁用的模型包括 SD3 系列、SDXLTurbo、SVD/SVDXT 等。模型类型(Model Types)词汇表
支持类型(Support Types)
generation:可用于图像/视频生成;training:用户可在该模型上训练 LoRA;auction:可用于 bounty/竞赛。继承规则总结
parentEcosystemId)自动继承:生态系统支持配置、生态系统设置(defaults);跨生态规则不继承,必须为每对生态显式添加。父↔子规则用sdxlCrossAddonTypes(含 VAE),兄弟↔兄弟规则用sdxlSiblingAddonTypes(不含 VAE)。遇到不确定情况时的处理原则
ECO/BM的 ID 常量是唯一事实来源,所有记录表引用常量而非裸数字;支持、设置可沿parentEcosystemId继承,而跨生态规则、key、sortOrder 都必须显式给定;改动后以pnpm run typecheck和四个导出面(baseModels、activeBaseModels、baseModelGroups、getBaseModelGenerationConfig())作为最小验证闭环。项目地址: https://gitcode.com/GitHub_Trending/ci/civitai
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考