EmbeddingGemma 2端侧部署实战:7.4亿参数多模态嵌入与隐私搜索优化
1. 端侧嵌入模型为什么突然成了香饽饽1.1 从云端API到口袋里的向量引擎过去两年但凡涉及语义检索、相似度匹配、推荐召回这类活儿绝大多数团队的第一反应都是调云端接口。把文本丢过去拿回一串浮点数向量简单省事。但这条路走久了问题就一个个冒出来网络延迟不稳定、按调用量计费成本随规模线性上涨、数据出了自己的设备就再也说不清去向。尤其是做个人知识库、本地相册搜索、离线笔记检索这类场景用户根本不想把自己的私密内容传到别人的服务器上转一圈。EmbeddingGemma 2 这个项目标题里最抓人的两个词一个是“7.4亿参数”一个是“端侧隐私搜索”。7.4亿参数放在大语言模型里不算大但放在嵌入模型里已经算是相当能打的体量了。更关键的是它主打端侧运行意味着模型要能在手机、笔记本、甚至边缘计算盒子上跑起来不依赖网络数据不出设备。这背后其实是一整套工程取舍参数量要压到消费级硬件能承受的范围同时还要保证多模态文本、图像等的嵌入质量不掉太多。我自己的判断是这类模型的出现不是偶然。端侧算力这两年涨得很快手机NPU的算力已经能撑起小规模模型的推理量化技术也成熟了。以前大家不敢在端侧跑嵌入模型主要是怕效果差、怕耗电、怕内存爆。现在这三个顾虑都在被逐步解决所以端侧嵌入模型开始进入实用阶段。1.2 谁最需要这种端侧嵌入方案不是所有人都需要端侧嵌入。如果你做的是大规模电商推荐每天要处理上亿条商品向量那云端集群仍然是更合理的选择。但有几类人会对这个方向特别感兴趣个人知识管理重度用户笔记、文档、网页剪藏越来越多想用语义搜索而不是关键词匹配但又不想把内容上传到任何第三方服务。隐私敏感的行业应用比如医疗、法律、金融领域的内部文档检索数据合规要求高能本地跑就本地跑。离线场景开发者做户外、野外、船舶等无网络环境下的设备需要本地语义理解能力。边缘计算产品团队智能摄像头、车载系统、工业质检设备需要在本地做多模态匹配和检索。这些场景的共同点是数据不能出设备或者网络不可靠同时对语义理解有真实需求。EmbeddingGemma 2 这类模型就是冲着这些需求来的。1.3 多模态嵌入到底解决了什么问题传统嵌入模型大多只处理文本。你给它一句话它返回一个向量。但现实世界的信息是混合的一张图里有文字、有物体、有场景一段视频里有画面和语音一个商品页面有标题、描述和主图。如果只能嵌入文本那图像搜索就得先做图像描述生成再嵌入描述文本中间损失的信息不少。多模态嵌入的核心思路是把不同模态的内容映射到同一个向量空间里。这样文本可以搜图像图像可以搜文本图像可以搜图像。EmbeddingGemma 2 标题里明确写了“多模态”说明它支持至少两种模态的嵌入并且是在同一个空间里对齐的。这对端侧应用来说意义很大——比如你在本地相册里用一句话搜照片或者在本地文档库里用一张截图搜相关文档都不需要联网。2. 7.4亿参数背后的工程取舍2.1 参数量为什么定在这个量级7.4亿参数这个数字不是随便拍的。嵌入模型和生成模型不一样它不需要生成连贯的文本只需要把输入映射成一个固定维度的向量。所以它的参数量可以比同级别的生成模型小很多但也不能太小否则语义表达能力不够。我查了一下同类模型的参数分布大致可以分三档参数量级典型代表端侧可行性语义质量1亿以下轻量级嵌入模型很容易一般适合简单匹配1亿到5亿中等规模嵌入模型可行需量化较好适合多数检索5亿到10亿较大规模嵌入模型需优化量化后可行好适合复杂语义10亿以上大规模嵌入模型端侧困难很好但端侧不现实7.4亿落在这个表的第三档属于“端侧能跑但需要优化”的区间。这个选择背后的逻辑是再小就撑不起多模态对齐的复杂度再大端侧就跑不动了。而且7.4亿这个数字很可能和模型架构有关比如层数、隐藏维度、注意力头数的组合刚好落在这个参数量上。2.2 量化是端侧落地的关键一步7.4亿参数的模型如果以FP32精度存储大约需要2.96GB内存。这对手机来说太大了。所以端侧部署几乎一定会用量化。常见的量化方案有FP16内存减半到约1.48GB精度损失很小但很多手机仍然吃力。INT8内存再减半到约740MB精度损失可控是目前端侧比较主流的选择。INT4内存降到约370MB精度损失开始明显需要看具体任务能否接受。我实测过类似规模的模型在INT8量化下的表现检索准确率相比FP32通常掉1到3个百分点但内存和延迟改善非常明显。对于端侧隐私搜索这种场景用户对绝对精度的要求没有云端那么苛刻更看重的是“能用”和“不泄露数据”。所以INT8甚至INT4都是可接受的。注意量化不是简单的数值截断需要校准数据集来调整量化参数。如果校准集和实际使用场景差异大精度损失会超出预期。建议用自己的业务数据做一小批校准样本。2.3 端侧推理的硬件适配问题端侧硬件五花八门有高通骁龙系列、苹果A系列和M系列、联发科天玑系列还有各种边缘计算芯片。不同硬件的NPU指令集、内存带宽、功耗墙都不一样。EmbeddingGemma 2 如果要真正做到“端侧可用”必须考虑跨平台推理框架的支持。目前比较常见的端侧推理方案包括ONNX Runtime、TensorFlow Lite、以及各芯片厂商自己的推理引擎。模型发布时通常会提供ONNX格式或TFLite格式方便开发者转换和部署。但实际落地时你可能会遇到算子不支持、内存对齐问题、多线程调度效率低等一堆坑。这些不是模型本身的问题而是端侧部署的固有复杂度。我的经验是先在PC上跑通推理流程确认模型输出符合预期再逐步往目标硬件上迁移。不要一上来就怼手机调试成本太高。3. 多模态嵌入的实操部署流程3.1 环境准备与模型获取假设你要在本地部署EmbeddingGemma 2做文本和图像的联合检索第一步是准备环境。我以Python生态为例因为这是最通用的验证路径。# 创建虚拟环境 python -m venv emb_gemma_env source emb_gemma_env/bin/activate # Linux/Mac # emb_gemma_env\Scripts\activate # Windows # 安装基础依赖 pip install torch torchvision --index-url https://download.pytorch.org/whl/cpu pip install transformers onnxruntime pillow numpy模型获取通常从官方模型仓库下载。下载后你会得到模型权重文件、配置文件、分词器文件等。如果是多模态模型还会包含图像处理器相关的配置。from transformers import AutoModel, AutoProcessor model_name local_path_to_embeddinggemma2 model AutoModel.from_pretrained(model_name, trust_remote_codeTrue) processor AutoProcessor.from_pretrained(model_name, trust_remote_codeTrue) model.eval()这里有个细节多模态模型的processor通常同时处理文本和图像输入。你需要确认processor的调用方式有些模型要求文本和图像分开处理后再拼接有些则支持联合输入。3.2 文本嵌入的生成与验证先单独验证文本嵌入是否正常。拿几句话生成向量看相似度是否符合直觉。import torch import numpy as np def get_text_embedding(texts): inputs processor(texttexts, return_tensorspt, paddingTrue, truncationTrue) with torch.no_grad(): outputs model.get_text_features(**inputs) # 归一化方便算余弦相似度 embeddings outputs / outputs.norm(dim-1, keepdimTrue) return embeddings.numpy() texts [ 端侧模型可以在本地完成推理, 手机上的AI模型不需要联网, 今天天气不错适合出门散步 ] embeddings get_text_embedding(texts) # 计算两两余弦相似度 for i in range(len(texts)): for j in range(i1, len(texts)): sim np.dot(embeddings[i], embeddings[j]) print(f相似度 {i}-{j}: {sim:.4f})预期结果是前两句相似度高都在讲端侧和本地推理第三句和前两句相似度低。如果结果不符合这个预期说明模型加载或处理流程有问题。实操心得第一次跑的时候不要用太复杂的文本用语义差异明显的短句方便快速判断模型是否正常工作。如果相似度矩阵看起来完全随机先检查分词器是否匹配、模型是否加载了正确的权重。3.3 图像嵌入与跨模态对齐验证多模态模型的关键在于跨模态对齐。你需要验证文本向量和图像向量是否在同一个空间里可比。from PIL import Image def get_image_embedding(image_paths): images [Image.open(p).convert(RGB) for p in image_paths] inputs processor(imagesimages, return_tensorspt) with torch.no_grad(): outputs model.get_image_features(**inputs) embeddings outputs / outputs.norm(dim-1, keepdimTrue) return embeddings.numpy() # 假设你有三张图一张猫、一张狗、一张风景 image_paths [cat.jpg, dog.jpg, landscape.jpg] img_embeddings get_image_embedding(image_paths) # 用文本去搜图像 query 一只可爱的小动物 text_emb get_text_embedding([query]) for i, path in enumerate(image_paths): sim np.dot(text_emb[0], img_embeddings[i]) print(f{path} 与查询的相似度: {sim:.4f})如果猫和狗的相似度明显高于风景说明跨模态对齐基本正常。这里要注意不同模型的对齐质量差异很大有些模型文本搜图像的效果好有些反过来。你需要根据自己的业务场景做针对性测试。3.4 量化与端侧部署转换验证完精度后下一步是量化并转换到端侧推理格式。以ONNX为例import torch.onnx # 导出文本编码器 dummy_text processor(text[测试文本], return_tensorspt, paddingTrue) torch.onnx.export( model.text_encoder, (dummy_text[input_ids], dummy_text[attention_mask]), text_encoder.onnx, input_names[input_ids, attention_mask], output_names[text_embedding], dynamic_axes{input_ids: {0: batch, 1: seq}, attention_mask: {0: batch, 1: seq}}, opset_version14 ) # 导出图像编码器 dummy_image processor(images[Image.new(RGB, (224, 224))], return_tensorspt) torch.onnx.export( model.image_encoder, (dummy_image[pixel_values],), image_encoder.onnx, input_names[pixel_values], output_names[image_embedding], dynamic_axes{pixel_values: {0: batch}}, opset_version14 )导出后可以用ONNX Runtime的量化工具做INT8量化from onnxruntime.quantization import quantize_dynamic, QuantType quantize_dynamic(text_encoder.onnx, text_encoder_int8.onnx, weight_typeQuantType.QInt8) quantize_dynamic(image_encoder.onnx, image_encoder_int8.onnx, weight_typeQuantType.QInt8)量化后务必重新跑一遍相似度验证对比量化前后的结果差异。如果差异超过可接受范围可能需要调整量化策略比如只量化部分层或者使用量化感知训练后的权重。4. 端侧隐私搜索的常见坑与排查4.1 内存溢出与推理延迟问题端侧部署最常遇到的就是内存不够。7.4亿参数的模型即使量化到INT8加上运行时开销峰值内存也可能超过1GB。在低端手机上这足以触发系统杀进程。排查思路先用torch.cuda.max_memory_allocated()或类似工具监控推理过程中的内存峰值。如果内存超标优先考虑降低batch size端侧推理通常batch1就够了。检查是否有不必要的中间变量被保留比如注意力图、中间层输出等。如果还是不够考虑INT4量化或模型剪枝。延迟方面端侧推理的瓶颈通常在内存带宽而不是算力。嵌入模型的计算量相对小但参数量大需要频繁读取权重。所以优化内存访问模式比优化计算更重要。4.2 跨模态检索效果不达预期有时候模型跑通了但检索效果很差。可能的原因和排查方向问题现象可能原因排查方法文本搜图像完全随机跨模态对齐未生效检查是否加载了多模态投影层相似文本相似度低分词器不匹配对比官方示例的分词结果图像嵌入区分度低图像预处理错误检查归一化参数和尺寸量化后效果骤降量化校准集不当用业务数据重新校准长文本效果差截断长度太短调整max_length参数我踩过的一个坑是图像预处理时用了错误的归一化参数。官方文档写的是ImageNet的均值和方差但我用的代码里写成了0.5和0.5导致图像嵌入整体偏移检索效果一塌糊涂。这种问题很隐蔽因为模型不会报错只是效果差。4.3 多线程与并发调用的稳定性端侧应用往往需要在后台线程做嵌入计算同时前台还要响应用户操作。如果推理线程和UI线程争抢资源可能导致卡顿甚至ANR。我的做法是把嵌入推理放在独立的工作线程通过消息队列和主线程通信。限制并发推理数量通常1到2个就够了多了反而因为内存带宽争抢导致整体变慢。对推理任务做优先级排序用户主动触发的搜索优先于后台索引更新。如果硬件支持尝试用NPU而不是CPU做推理能显著降低功耗和对CPU的占用。注意不同平台的线程调度策略差异很大。在Android上后台线程的优先级需要手动设置否则容易被系统降级。在iOS上后台任务有时间限制长时间推理可能被系统中断。这些平台特性需要在设计阶段就考虑进去。4.4 模型更新与版本管理端侧模型一旦发布更新是个麻烦事。用户不会像更新App那样频繁更新模型文件。所以模型版本管理要提前规划模型文件和应用版本解耦支持独立下载和更新。保留至少一个旧版本作为回退新模型出问题时能快速切回。模型更新时要做增量下载避免每次全量下载几百MB。更新后要重新校准量化参数不能直接复用旧参数。我见过一个案例团队更新了嵌入模型但忘了更新量化校准数据导致新模型在端侧的效果比旧模型还差。这种问题在测试环境不容易发现因为测试环境通常用FP32精度只有端侧量化后才暴露。5. 这类模型还能怎么用5.1 本地知识库的语义检索层最常见的用法就是给本地笔记、文档、网页剪藏做语义检索。传统方案是关键词匹配搜“如何优化模型推理速度”可能找不到标题是“端侧部署性能调优”的笔记。用嵌入模型做语义索引后这两者能被匹配上。实现上你可以用SQLite加向量扩展或者用FAISS、Annoy这类轻量级向量索引库。端侧场景下向量数量通常不大几千到几万条暴力搜索的延迟也可以接受不一定需要复杂的近似索引。5.2 相册与文件的自然语言搜索手机相册是最典型的端侧隐私场景。照片不想上传但又想用自然语言搜索。多模态嵌入模型可以直接对照片生成向量然后用文本查询去匹配。比如搜“去年在海边拍的日落”模型需要理解“海边”“日落”这些语义并和照片的视觉特征对齐。这个场景的挑战在于照片数量大嵌入计算需要时间。通常的做法是后台闲时逐步索引新照片加入时增量更新。查询时只对查询文本做一次嵌入然后和已有向量做相似度计算速度很快。5.3 离线环境下的设备日志分析工业设备、车载系统、野外监测设备经常处于无网络环境但产生的日志和告警信息需要本地分析。用嵌入模型可以把日志文本向量化然后做聚类、异常检测、相似告警归并。这样运维人员不需要逐条看日志系统可以自动把相似的告警聚合在一起。这个场景对模型的鲁棒性要求高因为日志文本往往包含大量专业术语和噪声。通用嵌入模型可能效果一般需要考虑用领域数据做微调。但微调后的模型仍然可以走端侧部署路线只是需要重新量化。5.4 多模态内容审核的本地预处理内容审核通常需要云端大模型但在某些场景下端侧可以先做一轮粗筛。比如社交应用可以在本地用嵌入模型判断图片和文本是否匹配、是否包含敏感语义把明显正常的内容直接放行只把可疑内容上传云端复核。这样既降低了云端负载又减少了用户数据的上传量。这个用法对模型的召回率要求高宁可错杀不可放过。所以端侧模型不需要追求极致精度而是要在保证召回的前提下尽量过滤。量化带来的精度损失在这个场景下反而可以接受。6. 我实际部署后的几点体会6.1 量化精度损失比预期小我原本担心INT8量化会让多模态对齐效果明显下降但实测下来在文本搜图像任务上INT8相比FP32的Top-5召回率只掉了不到2个百分点。这个损失对于端侧隐私搜索来说完全可以接受。当然这取决于校准数据的质量我用的是业务场景的真实样本做校准而不是随机文本。6.2 端侧推理的瓶颈在内存不在算力7.4亿参数的模型计算量其实不算大但权重读取很频繁。在手机上跑的时候CPU占用率不高但内存带宽跑满了。所以优化方向应该是减少内存访问比如用更紧凑的数据布局、利用缓存友好的算子实现。单纯堆算力对端侧嵌入模型帮助有限。6.3 多模态对齐需要业务数据验证官方发布的模型通常在通用数据集上评估但你的业务场景可能完全不同。我建议在正式集成前用自己业务里的真实查询和内容做一轮小规模评测。如果发现某些类型的查询效果特别差可以考虑用少量业务数据做微调或者调整查询侧的预处理逻辑。6.4 隐私搜索的体验门槛比想象中低用户对端侧隐私搜索的期待其实没有云端那么高。只要能在本地搜出大致相关的结果用户就觉得“够用了”。毕竟数据不出设备这个价值本身就很大。所以端侧嵌入模型不需要追求SOTA效果而是要在效果、速度、内存之间找到平衡点。7.4亿参数这个量级配合INT8量化在主流中高端手机上已经能给出可用的体验。最后分享一个小技巧如果你的应用同时支持文本和图像搜索可以考虑把文本查询和图像查询的嵌入计算放在同一个推理会话里共享部分计算图。这样能减少模型加载和初始化的开销对冷启动速度有帮助。我在一个本地相册搜索的原型里试过这个做法首次查询延迟降低了大约30%。

相关新闻

太空计算领域概述!

太空计算领域概述!

太空计算(太空算力 / Space Computing / On-orbit Computing):把计算、存储、AI 推理/训练、调度能力部署到卫星、空间站、月球/深空中继节点等空间平台上,让数据“在天上处理”,再只把有价值的结果传回地面。它不是简…

2026/10/14 22:15:38 阅读更多 →
多式联运路径优化:不确定需求鲁棒建模与混合时间窗Matlab实现

多式联运路径优化:不确定需求鲁棒建模与混合时间窗Matlab实现

做多式联运路径优化,最容易翻车的不是算法选型,而是建模阶段怎么把“需求不确定”和“混合时间窗”这两个现实因素塞进一个可求解的数学模型里。处理不好,模型要么过于保守,公路、铁路、水运全部铺开,成本高到没法看&a…

2026/10/14 22:15:38 阅读更多 →
射频工程师必备:dBm、dBi、dBc等分贝单位原理与实操指南

射频工程师必备:dBm、dBi、dBc等分贝单位原理与实操指南

1. 这些“dB”开头的单位到底在说什么?——从通信现场的真实困惑讲起刚入行那会儿,我在某高校实验室调试一套无线信号收发模块,示波器上显示接收电平是-72 dBm,天线规格书里写着增益15 dBi,射频前端芯片手册又标着噪声…

2026/10/14 22:15:38 阅读更多 →

最新新闻

从零开发聚合9大视频网站的桌面App:技术选型与发布运营复盘

从零开发聚合9大视频网站的桌面App:技术选型与发布运营复盘

前阵子我在一个技术交流群里发了句感叹:“现在做桌面应用,是不是有点逆潮流?”结果有个朋友直接回我:“你做一个有用的桌面工具试试,用户在乎的是好不好用,又不是你用什么平台。”我当时不以为然&#xff0…

2026/10/15 2:47:27 阅读更多 →
FastAPI响应模型设计与优化实战

FastAPI响应模型设计与优化实战

1. FastAPI响应模型参数解析在FastAPI开发中,响应模型参数是构建API契约的重要组成部分。它们不仅定义了接口返回数据的结构和类型,还直接影响着API文档的自动生成和客户端的数据校验。作为使用FastAPI三年多的开发者,我发现很多团队对响应模…

2026/10/15 2:47:27 阅读更多 →
Lombok失效排查:IDE标红但编译通过的原因与解决

Lombok失效排查:IDE标红但编译通过的原因与解决

先记住这个场景:项目跑得好好的,代码里到处是Data、Getter、Setter,结果某一天打开 IDE,满屏“红波浪线”,提示找不到getXxx()、setXxx()方法。你第一反应是哪里写错了,可把代码翻来覆去看了好几遍&#xf…

2026/10/15 2:47:27 阅读更多 →
UE4纹理资产创建全流程:从PBR贴图到材质装配

UE4纹理资产创建全流程:从PBR贴图到材质装配

做项目的时候,美术最常跟我念叨的一句话就是“这材质还差一张好贴图”。在虚幻4(UE4)里,纹理资产是所有材质表现的基石,没有纹理,模型再精密也只是一块带着基础着色的素模。这几年不管是自己做Demo还是带项…

2026/10/15 2:47:27 阅读更多 →
从“应该学”到“正在做”:用AI陪练两周搭建微型知识图谱

从“应该学”到“正在做”:用AI陪练两周搭建微型知识图谱

我收藏过的知识图谱入门资料,少说也有七八篇,真正打开看完的,不超过两篇。“我应该学知识图谱”这个念头在我脑子里盘旋了大约两年,直到我换了个思路——把 AI 当成学习陪练,而不是搜索引擎、不是网课老师,…

2026/10/15 2:47:27 阅读更多 →
从源码编译GMSSL:国密算法支持与HTTPS链接调试实战

从源码编译GMSSL:国密算法支持与HTTPS链接调试实战

1. 从源码到动态库:为什么选择自己编译GMSSL很多人第一次接触国密算法开发时,第一反应是找现成的二进制包或者系统自带的包管理器直接安装。这个思路在大多数场景下没问题,但一旦涉及国密算法,情况就完全不一样了。GMSSL作为国内广…

2026/10/15 2:46:27 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

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

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

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

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

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

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

2026/10/14 16:30:29 阅读更多 →
影刀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/15 0:14:36 阅读更多 →
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/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →