Krea 2 AI图像生成模型:从技术原理到API实战全解析
如果你正在寻找一个能够真正理解创作意图而非简单执行文字指令的AI图像生成模型那么Krea 2的技术报告发布绝对值得你花时间深入研究。与市面上大多数听话但缺乏灵魂的图像生成工具不同Krea 2的核心突破在于它重新定义了人机协作的创作边界——不是让AI替代创作者而是让AI成为真正理解美学语言的创作伙伴。在测试过数十个主流图像生成模型后我发现大多数模型都存在一个共同痛点它们倾向于将复杂的艺术表达压平为安全但平庸的结果。而Krea 2的技术架构从根源上解决了这个问题通过完全从零训练的基础模型实现了对图像外观、质感和创作方向的精准控制。这对于需要品牌一致性商业项目、追求独特艺术风格的创作者来说意味着真正的生产力革命。本文将基于Krea 2最新发布的技术报告深入解析其技术架构的创新之处并通过完整的API实战演示带你掌握如何在实际项目中发挥其最大价值。无论你是需要集成AI图像生成能力的开发者还是寻求更高效创作工具的设计师都能找到可立即落地的解决方案。1. Krea 2解决了什么真实痛点在深入技术细节之前我们需要先理解为什么Krea 2的出现具有标志性意义。当前图像生成领域普遍存在三个核心问题风格同质化严重大多数模型基于相似训练数据导致输出结果缺乏独特性。当你需要为特定品牌或项目生成具有一致美学语言的图像时传统模型往往无法保持风格的一致性。创作控制粒度不足简单的文本提示词难以精确传达复杂的视觉概念。比如具有电影感的玻璃小屋这样的提示不同模型会给出截然不同的解读而调整细节往往需要多次重试。艺术表现力受限商业模型倾向于生成安全的结果牺牲了艺术性和表现力。这对于需要独特视觉冲击力的创意项目来说是个硬伤。Krea 2的技术架构直接针对这些痛点进行了重构。其完全从零训练的基础模型避免了继承现有模型的风格偏见而创新的风格迁移、情绪板和创造力调节机制则为创作者提供了前所未有的控制精度。2. 核心架构解析为什么Krea 2与众不同2.1 基础模型设计哲学Krea 2采用完全从零开始训练的架构这与基于迁移学习或微调现有模型的方案有本质区别。这种设计确保了模型没有继承任何预设的风格偏好能够真正根据用户的指令和参考材料学习并生成独特的视觉语言。从技术实现角度看Krea 2的训练流程包含了多阶段优化基础视觉概念学习阶段风格解耦与重组能力训练创作意图理解与执行优化这种分层训练策略使得模型能够理解抽象的视觉概念如电影感、复古而不仅仅是识别具体物体。2.2 双变体策略Medium vs LargeKrea 2提供了两个不同规模的变体这不是简单的好坏区分而是针对不同使用场景的专门优化特性Krea 2 MediumKrea 2 Large模型规模较小超过Medium 2倍推理速度更快较慢成本效益更高较低输出稳定性极高相对灵活擅长领域插画、动漫、绘画等艺术风格写实摄影、原始质感、表现力艺术技术深度解读Medium变体经过大量后训练在生成一致性方面表现优异特别适合需要批量生成风格统一内容的商业项目。Large变体则保留了更多的原始质感细节在单次生成的质量上限方面更具优势。2.3 核心创新功能解析风格迁移技术Krea 2的风格迁移系统能够从一张或多张参考图像中提取风格特征并以可调节的强度应用到新生成的图像上。这与简单的图像滤镜有本质区别——它理解的是深层的风格语义而不仅仅是表面纹理。技术实现上这涉及到风格特征解耦将内容与风格分离表示多尺度风格融合在不同语义层次进行风格迁移强度控制机制精确控制风格影响程度情绪板理解情绪板功能是Krea 2最具创新性的特性之一。传统模型只能处理单张参考图像而Krea 2能够理解包含数十张图像的完整情绪板提取整体的创作方向配色、质感、氛围、构图等。这对于品牌视觉设计、电影概念艺术等需要复杂视觉语言的项目来说意味着能够大幅减少人工调整成本。可调节创造力参数creativity参数的设计体现了Krea 2对创作过程的理解深度。它不是一个简单的随机性控制而是调节模型在用户提示基础上进行美学扩展的程度raw严格遵循提示词适合艺术指导明确的场景low轻微扩展保持接近字面意思medium平衡模式在忠实与创意间取得平衡high强力创意发挥适合探索性创作3. 环境准备与API接入实战3.1 获取API密钥首先需要访问Krea AI平台注册账号并获取API密钥# 访问Krea AI官网完成注册 # 在控制台获取你的API密钥 export KREA_API_KEYyour_actual_api_key_here3.2 安装SDKKrea提供了多语言SDK支持这里以Node.js为例// 安装SDK npm install krea-ai/sdk // 初始化客户端 import { Krea } from krea-ai/sdk; const krea new Krea({ apiKey: process.env.KREA_API_KEY });Python用户可以使用requests库直接调用REST APIimport requests import os API_KEY os.getenv(KREA_API_KEY) API_URL https://api.krea.ai/generate/image/krea/krea-2/medium headers { Authorization: fBearer {API_KEY}, Content-Type: application/json }3.3 基础生成示例让我们从一个简单的文生图请求开始// 基础图像生成 const result await krea.subscribe(image/krea/krea-2/medium, { input: { prompt: a cinematic glass cabin beside a frozen lake at sunrise, soft morning light, atmospheric, aspect_ratio: 16:9, resolution: 1K, creativity: medium } }); console.log(生成结果URL:, result.data?.urls[0]);对应的Python实现def generate_basic_image(prompt, aspect_ratio16:9): payload { input: { prompt: prompt, aspect_ratio: aspect_ratio, resolution: 1K, creativity: medium } } response requests.post(API_URL, jsonpayload, headersheaders) if response.status_code 200: return response.json()[data][urls][0] else: raise Exception(fAPI请求失败: {response.text}) # 使用示例 image_url generate_basic_image( 现代简约风格的客厅大面积落地窗午后阳光室内绿植 )4. 高级功能实战演示4.1 风格迁移深度应用风格迁移是Krea 2的杀手级功能以下是实际应用示例// 准备风格参考图像 const styleReferences [ { url: https://example.com/style-image-1.jpg, intensity: 80 // 风格强度0-100 }, { url: https://example.com/style-image-2.png, intensity: 60 } ]; const styledResult await krea.subscribe(image/krea/krea-2/medium, { input: { prompt: 一位骑士站在山巅俯瞰王国, aspect_ratio: 16:9, image_style_references: styleReferences, creativity: high } });关键技术要点多图风格融合可以同时使用多张参考图像模型会自动融合不同风格元素强度精确控制每张参考图都可以独立设置影响强度风格语义理解模型理解的是艺术风格而非简单纹理复制4.2 情绪板实战应用情绪板功能适合需要复杂视觉语言的项目def generate_with_moodboard(prompt, moodboard_urls): 使用情绪板生成图像 payload { input: { prompt: prompt, aspect_ratio: 16:9, moodboards: [ { urls: moodboard_urls, # 情绪板自动提取整体视觉方向 } ], creativity: medium } } response requests.post(API_URL, jsonpayload, headersheaders) return response.json() # 实际应用品牌视觉生成 moodboard_urls [ https://example.com/brand-colors.jpg, https://example.com/typography-samples.png, https://example.com/texture-references.jpg ] brand_images generate_with_moodboard( 科技公司办公场景体现创新与协作, moodboard_urls )4.3 生成滑杆精细控制Krea 2的三个生成滑杆提供了额外的控制维度// 使用生成滑杆进行精细调整 const preciseResult await krea.subscribe(image/krea/krea-2/large, { input: { prompt: 暴风雨中的灯塔强烈的戏剧性光线, aspect_ratio: 16:9, intensity: 75, // 强度影响视觉冲击力 complexity: -20, // 复杂度简化或丰富细节 movement: 45, // 动感静态或动态表现 creativity: high } });滑杆参数详解intensity(-100到100)控制图像的视觉强度正值增强对比度和冲击力complexity(-100到100)调节细节复杂度负值简化画面正值增加细节层次movement(-100到100)影响画面的动态感适合调整运动模糊等效果5. 生产环境最佳实践5.1 错误处理与重试机制在生产环境中稳健的错误处理至关重要class KreaClient { constructor(apiKey, maxRetries 3) { this.krea new Krea({ apiKey }); this.maxRetries maxRetries; } async generateWithRetry(endpoint, params) { let lastError; for (let attempt 1; attempt this.maxRetries; attempt) { try { const result await this.krea.subscribe(endpoint, params); return result; } catch (error) { lastError error; console.warn(生成尝试 ${attempt} 失败:, error.message); // 指数退避重试 if (attempt this.maxRetries) { await this.delay(Math.pow(2, attempt) * 1000); } } } throw new Error(所有重试尝试均失败: ${lastError.message}); } delay(ms) { return new Promise(resolve setTimeout(resolve, ms)); } } // 使用增强客户端 const client new KreaClient(process.env.KREA_API_KEY); const result await client.generateWithRetry( image/krea/krea-2/medium, { input: { prompt: ... } } );5.2 批量生成优化策略对于需要大量生成的场景考虑以下优化import asyncio import aiohttp from datetime import datetime class BatchKreaGenerator: def __init__(self, api_key, concurrency5): self.api_key api_key self.semaphore asyncio.Semaphore(concurrency) async def generate_single(self, session, prompt, style_refsNone): async with self.semaphore: payload { input: { prompt: prompt, aspect_ratio: 16:9, resolution: 1K } } if style_refs: payload[input][image_style_references] style_refs async with session.post( https://api.krea.ai/generate/image/krea/krea-2/medium, headers{Authorization: fBearer {self.api_key}}, jsonpayload ) as response: return await response.json() async def generate_batch(self, prompts, style_refsNone): async with aiohttp.ClientSession() as session: tasks [ self.generate_single(session, prompt, style_refs) for prompt in prompts ] return await asyncio.gather(*tasks, return_exceptionsTrue) # 批量生成示例 async def main(): generator BatchKreaGenerator(your_api_key) prompts [ 春季花园盛开的花朵, 夏日海滩夕阳景色, 秋日森林落叶纷飞, 冬季雪山宁静场景 ] results await generator.generate_batch(prompts) for i, result in enumerate(results): if not isinstance(result, Exception): print(f图片 {i1}: {result[data][urls][0]})5.3 成本控制与监控Krea 2按生成次数计费成本控制很重要// 成本监控装饰器 function withCostTracking(originalFunction, costPerCall) { let totalCost 0; let callCount 0; return async function(...args) { const startTime Date.now(); try { const result await originalFunction.apply(this, args); callCount; totalCost costPerCall; console.log(本次调用成本: $${costPerCall}); console.log(累计调用: ${callCount}次, 总成本: $${totalCost.toFixed(3)}); return result; } finally { const duration Date.now() - startTime; console.log(生成耗时: ${duration}ms); } }; } // 应用成本监控 const trackedGenerate withCostTracking( krea.subscribe.bind(krea), 0.030 // Medium变体单次成本 );6. 常见问题与解决方案6.1 生成质量相关问题问题1图像细节不符合预期解决方案检查creativity参数设置对于细节要求高的场景使用raw或low优化提示词使用更具体、更具描述性的语言尝试不同变体Medium更适合稳定输出Large适合质感丰富的场景问题2风格迁移效果不明显解决方案增加风格参考图的强度值最高100使用多张同风格参考图增强效果确保参考图本身具有清晰的风格特征6.2 API使用技术问题问题3API响应超时解决方案// 设置合理的超时时间 const krea new Krea({ apiKey: process.env.KREA_API_KEY, timeout: 30000 // 30秒超时 }); // 对于Large变体使用webhook避免轮询超时 const result await krea.subscribe(image/krea/krea-2/large, { input: { /* 参数 */ } }, { headers: { X-Webhook-URL: https://your-app.com/webhooks/krea } });问题4生成结果不一致解决方案// 使用seed参数确保可重复性 const consistentResult await krea.subscribe(image/krea/krea-2/medium, { input: { prompt: 完全相同的提示词, seed: 12345, // 固定seed值 aspect_ratio: 16:9 } });6.3 性能优化问题问题5批量生成速度慢解决方案使用Medium变体获得更快的生成速度实现并发请求控制避免API限制考虑使用webhook异步处理模式7. 进阶应用场景探索7.1 品牌视觉系统自动化Krea 2的情绪板功能特别适合品牌视觉自动化class BrandStyleGenerator: def __init__(self, brand_moodboards): self.brand_moodboards brand_moodboards def generate_brand_content(self, content_type, themes): 生成符合品牌规范的营销内容 base_prompts { social_media: 社交媒体横幅{theme}现代简约风格, product_shot: 产品展示图{theme}专业摄影质感, illustration: 插画风格{theme}品牌色彩应用 } results [] for theme in themes: prompt base_prompts[content_type].format(themetheme) result generate_with_moodboard(prompt, self.brand_moodboards) results.append({ theme: theme, image_url: result[data][urls][0], prompt_used: prompt }) return results # 初始化品牌生成器 brand_generator BrandStyleGenerator([ https://example.com/brand-primary-moodboard.jpg, https://example.com/brand-secondary-references.png ]) # 生成季度营销素材 q3_content brand_generator.generate_brand_content( social_media, [夏季促销, 新品发布, 客户案例] )7.2 个性化内容生成平台结合用户偏好数据实现真正的个性化内容生成class PersonalizedContentEngine { constructor(userPreferences) { this.preferences userPreferences; } generatePersonalizedImage(scenario, userContext) { // 基于用户偏好调整生成参数 const styleIntensity this.preferences.styleConsistency ? 80 : 40; const creativityLevel this.preferences.creativeFreedom ? high : medium; const styleRefs this.getUserStyleReferences(userContext); return krea.subscribe(image/krea/krea-2/medium, { input: { prompt: this.buildPersonalizedPrompt(scenario, userContext), image_style_references: styleRefs, creativity: creativityLevel, intensity: styleIntensity } }); } buildPersonalizedPrompt(baseScenario, userContext) { // 基于用户数据丰富提示词 return ${baseScenario}${userContext.preferredStyle}风格${userContext.mood}氛围; } }8. 与其他方案的对比分析8.1 技术架构对比特性Krea 2传统文生图模型优势分析训练基础完全从零训练基于现有模型微调无风格偏见更好的创作自由度风格控制多参考图情绪板单一参考图或文本描述更精确的风格一致性保持创作协作可调节创造力参数固定随机性控制真正的人机协作创作体验商业化支持清晰的API定价复杂的计费模式成本可控适合企业应用8.2 适用场景建议推荐使用Krea 2的场景品牌视觉内容生成需要风格一致性艺术创作探索需要高创意自由度营销素材批量生产需要效率与质量平衡概念设计可视化需要快速迭代可能不适合的场景极简图标生成过度复杂需要特定版权风格的商业应用对生成速度有极端要求的实时应用9. 未来发展方向与生态建设从技术报告和API设计可以看出Krea AI的技术路线图具有清晰的长期规划模型能力演进更高分辨率的支持2K、4K视频生成能力的集成3D资产生成扩展开发者生态建设更丰富的SDK支持社区模型共享平台企业级部署方案应用场景拓展建筑设计可视化游戏资产生成教育内容创作对于开发者而言现在投入Krea 2生态建设具有先发优势。其开源版本的发布也为技术深度定制提供了可能。Krea 2的技术突破不仅体现在生成质量上更重要的是它建立了一种新的AI创作范式——让AI真正理解并扩展人类的创作意图而不是简单执行指令。这种范式转变对于整个AIGC行业的发展方向具有重要的启示意义。在实际项目接入时建议从具体业务场景出发逐步探索Krea 2的各项高级功能。先从基础的文生图开始验证效果再逐步引入风格迁移、情绪板等高级特性最终构建完整的AI辅助创作工作流。这种渐进式的接入策略能够确保技术投入产生实实在在的业务价值。

相关新闻

物理信息机器学习与CFD融合:Fluent仿真加速与工程实践

物理信息机器学习与CFD融合:Fluent仿真加速与工程实践

如果你正在使用 ANSYS Fluent 进行流体仿真,可能会遇到这样的困境:一个复杂的湍流模型需要运行数天甚至数周,每次参数调整都意味着漫长的等待;或者面对海量仿真数据,却难以快速提取有价值的工程洞察。这正是传统计算流…

2026/10/14 5:18:19 阅读更多 →
HTTP TRACE方法:从安全风险到调试利器的实战指南

HTTP TRACE方法:从安全风险到调试利器的实战指南

1. 项目概述:被遗忘的HTTP侦探在Web开发和运维的日常里,我们打交道最多的HTTP方法无非是GET、POST,偶尔用用PUT、DELETE。但有一个方法,就像工具箱里那把蒙尘的专用扳手,平时想不起它,可一旦遇到某些棘手的…

2026/10/12 20:42:54 阅读更多 →
SAP系统HTTPS连接报错ICM_HTTP_SSL_PEER_CERT_UNTRUSTED的排查与解决

SAP系统HTTPS连接报错ICM_HTTP_SSL_PEER_CERT_UNTRUSTED的排查与解决

1. 项目概述:当SAP系统说“我不信任你” 在SAP Basis和接口开发的世界里,ICM_HTTP_SSL_PEER_CERT_UNTRUSTED这个错误代码,就像一位不苟言笑的守门人,冷不丁地就把你精心配置的HTTPS出站连接给挡在了门外。这个错误直译过来就是“S…

2026/10/13 16:35:04 阅读更多 →

最新新闻

Ubuntu 22.04 搭建 Hadoop 3.3.6 生产级三节点集群实战

Ubuntu 22.04 搭建 Hadoop 3.3.6 生产级三节点集群实战

1. 为什么现在还要亲手搭Hadoop集群?——一个老手的真实观察“Ubuntu搭建Hadoop集群的详细操作流程”这个标题,乍一看像十年前的技术文档。但过去三年我带过的十几个实际项目里,仍有超过七成需要在物理机或私有云环境里从零部署一套可控、可调…

2026/10/14 5:18:03 阅读更多 →
AI Agent长任务韧性设计:规划-状态-恢复三位一体实战手册

AI Agent长任务韧性设计:规划-状态-恢复三位一体实战手册

1. 这不是“AI面试题”,而是一套真实可用的Agent任务韧性设计手册你点开这个标题,大概率是被“AI Agent”“强化面试题”这些词吸引来的。但我要先说清楚:这根本不是什么刷题指南,也不是为应付某家公司技术面准备的应试套路。它是…

2026/10/14 5:18:03 阅读更多 →
Ventoy 1.0.93 多镜像U盘引导与批量部署实战指南

Ventoy 1.0.93 多镜像U盘引导与批量部署实战指南

简介:Ventoy 1.0.93 是一款面向 Windows 用户的多合一 U 盘启动制作工具,支持 EFI 启动,适合系统安装、故障救援、运维工具盘制作等场景,无论是装机新手还是日常维护人员都能快速上手。其核心思路是把多个 ISO 镜像直接拷贝到 U 盘…

2026/10/14 5:18:03 阅读更多 →
Spring IOC容器加载流程:从BeanDefinition注册到refresh()与Bean生命线深度解析

Spring IOC容器加载流程:从BeanDefinition注册到refresh()与Bean生命线深度解析

直接切入正题。Spring 的 IOC 容器是很多人学习框架源码的第一站,但也是最容易劝退的一站。原因很简单:refresh()方法里十几个子方法一环扣一环,BeanFactory、ApplicationContext、BeanDefinition这些概念满天飞,光是搞清楚先后顺…

2026/10/14 5:18:03 阅读更多 →
券商信创改造公告里_那条被保留的非信创回路

券商信创改造公告里_那条被保留的非信创回路

10 月 11 日,甘肃经济信息网挂出一份券商的单一来源采购公告。公告的采购标的是网上行情交易系统的国产化扩容,替换清单写得很全:国产服务器、国产操作系统、国产中间件、国产数据库、国产浏览器。但公告里有一句话,比这份清单更值…

2026/10/14 5:18:03 阅读更多 →
内容创作合规之道:如何选择安全且高效的博客主题

内容创作合规之道:如何选择安全且高效的博客主题

抱歉,我无法基于这个标题生成内容。这个标题指向的方向超出了我可安全创作的范围,相关主题无法提供任何形式的文章、解释或延伸内容。为了确保内容合规稳妥,建议换一个明确的、可公开讨论的项目主题重新提交,例如工具类、生活技巧…

2026/10/14 5:17:02 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →