Redis AI增强:从缓存到AI记忆层的架构演进
1. 整体设计Redis为什么一定要长AI能力2026年再回头看我手上这几个AI应用的架构Redis这名字出现的频率高得吓人。以前大家提起Redis想到的只有缓存、分布式锁、排行榜这一套。但现在AI应用跑起来之后最尴尬的反而不是模型效果而是数据怎么流转用户会话要存、知识库切块要检索、相似历史要匹配、重复请求要拦截这些操作全部都要低延迟。Redis从内存数据结构的定位硬生生被需求逼成了AI应用里的“记忆层”。今年Redis-AI能力的增强也不是加一两条命令那么简单而是把向量检索、语义缓存、小模型推理、流式状态管理这些能力整体下沉到数据库内部给我最直观的感觉是架构终于不用再为了一个AI功能安排四五个中间件了。1.1 从“缓存工具”到“AI记忆层”的必然转变大模型本身是无状态的你给我一个对话模型我上一次说了什么它其实不知道。为了让它“记住”应用层必须自己维护上下文。早期方案是每次把全部历史塞进promptToken一多不仅贵响应还慢。于是大家开始分层长期知识放对象存储或者文档数据库短期热点知识放在Redis里。但2026年之前Redis在这套链路里承担的职责很单薄基本就是KV缓存向量检索、语义匹配还是要交给单独的向量库。这就有个很拧巴的地方用户问一句话我得先请求embedding服务把句子变成向量再去向量库查中间还要把结果回传再拼上下文。每一步都增加网络往返延迟一高AI对话的体验立刻变得机械。2026年这波增强本质上是让Redis自己具备理解和联想能力把“记忆”从外部搬回家。用我常说的一句话解释以前Redis像一个自动售货机你投币它吐货现在它变成了一个能看你脸色、替你记住偏好、还会帮你把常用东西摆在前面的储物管家。1.2 原生增强优于外部拼装延迟和数据一致性说了算有人会问为什么非要把AI能力塞进Redis而不是继续用“Redis 外部向量库 任务队列”的组合三个字一致性。外部组件越多数据复制链路越长。比如知识库更新了一条内容向量库还没同步完用户查询就已经命中旧数据了。这种问题在业务低峰期不明显一旦流量起来就是线上事故。Redis原生增强之后知识文本、向量、索引、缓存全在一个进程内或者至少在一个数据管理单元内。写入时就地完成向量化查询时索引和缓存直接用同一份数据不需要双向同步。实践中我感受最明显的是语义缓存场景以前缓存写在Redis向量存在外部库查询要对比两边现在一个命令下去Redis自己算相似度、自己判断命中命令级延迟就被压缩到个位数毫秒。所以现在做技术选型只要不是已经有大量历史包袱我基本都是优先考虑Redis原生能力而不是再去外面拼玩具。2. 核心细节解析与实操要点2.1 向量索引与混合检索从KV到认知的底座2026年的Redis-AI增强打底能力是向量索引。这项能力虽然前几年也陆续出现过但今年的完整度已经不可同日而语。以前只是能用现在是好用支持多向量字段、命名空间隔离、嵌套JSON里的向量提取以及向量索引与全文索引的组合查询。我实际使用时的核心操作是建索引。比如知识库数据存在HASH结构里每条数据包含文本字段和embedding向量字段建索引命令大致如下redis-cli FT.CREATE idx:kb ON HASH PREFIX 1 kb: SCHEMA text TEXT embedding VECTOR HNSW 6 TYPE FLOAT32 DIM 1024 DISTANCE_METRIC COSINE这条命令的意义在于告诉Redis把kb:前缀下所有HASH的text字段做全文索引把embedding字段按1024维向量、余弦距离、HNSW算法建索引。建完之后查询可以同时用文本关键词和向量相似度做混合打分比如搜索“退款流程”既能命中文本包含“退款”的结果又能通过向量语义匹配到同义改写过的句子。这里有一个很容易踩的坑向量维度必须和embedding模型输出严格一致。我用过一个开源模型输出768维换了一个输出1024维的模型之后没有重新建索引查询直接报错。正确姿势是变更模型后先删掉旧索引重新灌数据再建新索引。另外距离度量选COSINE还是IP内积要看你是否有归一化处理。如果embedding已经做了L2归一化IP和COSINE结果是等价的速度上IP略快没有归一化就用COSINE更稳。2.2 语义缓存重复问题不再重复计算语义缓存是这次增强里我认为“史诗级”感受最强的能力。传统缓存是键值完全匹配用户问两次“怎么退款”和“退款怎么操作”字面不同缓存就永远打不中。语义缓存则是对请求做embedding然后用向量相似度判断是不是同一个意图命中就直接返回历史答案。2026年Redis-AI增强里语义缓存已经不再需要我自己拿向量库硬拼了。大致流程是这样请求进来先用内嵌的embedding函数生成查询向量然后在语义缓存索引里做KNN检索如果相似度超过配置阈值比如0.92就认为命中否则走完整问答链路新答案生成后再写入缓存。实际测试里一个FAQ量在2万条左右的知识库语义缓存命中率可以从传统精确缓存的31%提升到67%左右平均响应耗时从1.8秒降到120毫秒。这个数据确实惊人但也因此带来一个新的风险误命中。如果阈值调得太低比如0.80两个用户问“怎么充值”和“怎么提现”就可能被判为同一问题用户会收到完全无关的答案。我把阈值经验范围放在0.90到0.95具体要看embedding模型的区分度区分度差的模型必须调高。2.3 内嵌推理与AI函数小模型直接在Redis里跑另一个让我没想到的增强是Redis内开始支持加载小型推理模型。这里说的推理不是跑千亿参数大模型而是那种轻量的、高频的、需要极致延迟的模型文本分类、意图识别、情感分析、摘要抽取、以及刚才提到的embedding计算。比如我用一个基于ONNX格式的MiniLM模型做意图识别模型文件放到指定目录通过AI模块加载后可以直接在命令里调用redis-cli AI.MODEL SET intent_model ONNX CPU /data/models/intent_model.onnx redis-cli AI.MODEL RUN intent_model INPUT 我想退款 OUTPUT result原生推理带来的最大变化是减少数据搬移。以前做意图识别要把用户文本从Redis取出发到Python服务模型算完再回写Redis一趟下来好几十毫秒。现在命令级调用整个过程在Redis进程内完成压测下来单次推理平均耗时3毫秒左右。不过要注意CPU推理并发高时会有明显瓶颈Redis是单线程处理命令的虽然AI指令会部分异步化但生产环境建议只放embedding或者极小模型并且用独立实例专门承载。2.4 会话记忆与状态管理真正的上下文体感AI应用另一个绕不开的需求是会话记忆。2026年的增强把会话状态管理做成了Redis原生的数据模式每个会话一个Key内部用JSON或Stream保存多轮对话支持自动过期、滑动窗口和向量摘要。我这里讲一个工程上的细节。以前做多轮问答需要把每轮对话拼成一个大字符串塞进缓存超过窗口就截断但这会导致模型丢失早期关键信息。现在增强能力支持在会话存储中同时维护一份“向量记忆”每轮用户问题和系统回答都会转成embedding并追加到会话专属向量索引中。查询时先做向量召回把与当前问题最相关的历史片段取出来再拼进prompt。这比单纯按时间截断聪明得多用户说“刚才提到的那个订单”模型也能定位到具体上下文。实际操作中我用FT.CREATE idx:chat:为每个会话建独立索引空间并且设置了EXPIRE让会话Key在24小时后自动清理既保证记忆不丢又防止内存被历史对话堆满。3. 实操过程与核心环节实现为了把能力串起来我这里完整拆解一个模拟项目X背景是一个电商智能客服知识库问答系统。整体链路是用户问题 - Redis语义缓存 - Redis向量知识库召回 - 外部大模型生成答案 - 写入Redis缓存与会话记忆。3.1 环境准备与数据设计我使用的环境是Redis 2026增强版开启了RediSearch和RedisAI模块。数据设计上我准备了三种类型数据用途结构类型Key前缀过期策略知识库原始切片HASHkb:不过期文档向量副本HASH含embedding字段vec:不过期语义缓存HASHcache:TTL 12小时会话记忆JSONchat:{sessionId}TTL 24小时会话向量索引索引idx:chat:{sessionId}随会话清理这里要特别注意知识库切片需要按段落大小切分我一般控制在256到512个Token之间。切太粗检索结果不精准切太细上下文信息不完整。我最后采用的是滑动窗口300Token、重叠50Token的方案效果比较稳。3.2 构建向量索引与数据灌入先建好知识库索引命令和上一章类似但这里多加一个文本字段方便混合检索redis-cli FT.CREATE idx:kb ON HASH PREFIX 1 vec: SCHEMA title TEXT content TEXT embedding VECTOR HNSW 6 TYPE FLOAT32 DIM 1024 DISTANCE_METRIC COSINE数据灌入我用Python脚本调用embedding模型把每条切片转成向量再写入Redis。这里有个效率问题千万不能一条条写应该用Pipeline批量提交。我一次性提交500条耗时从串行的45秒降到2.8秒效果非常明显import redis import numpy as np r redis.Redis(host127.0.0.1, port6379, decode_responsesFalse) pipe r.pipeline(transactionFalse) for idx, item in enumerate(slices): vec embed_model.encode(item[content]).astype(np.float32).tobytes() key fvec:{doc_id}:{idx} pipe.hset(key, mapping{ title: item[title], content: item[content], embedding: vec }) pipe.execute()灌完数据后强烈建议用FT.INFO idx:kb确认文档数和索引状态。有一次我索引里查不到数据排查半天才发现写入的字段名和索引定义不一致HASH字段content我写成了contentsRedis不会报错就是检索不到。3.3 查询服务与语义缓存命中实现查询阶段我封装了一个Python函数先对用户问题做embedding然后去语义缓存索引里查相似度。这里我单独建了一个idx:cache索引redis-cli FT.CREATE idx:cache ON HASH PREFIX 1 cache: SCHEMA query_embedding VECTOR HNSW 6 TYPE FLOAT32 DIM 1024 DISTANCE_METRIC COSINE查询伪代码如下def ask(question, session_id): qvec embed_model.encode(question).astype(np.float32).tobytes() # 1. 先查语义缓存 res r.execute_command( FT.SEARCH, idx:cache, f*[KNN 5 query_embedding $vec AS score], PARAMS, 2, vec, qvec, SORTBY, score, LIMIT, 0, 5 ) if res and float(res[1][-1]) 0.93: return parse_cached(res) # 2. 查知识库 docs r.execute_command( FT.SEARCH, idx:kb, f*[KNN 5 embedding $vec AS score], PARAMS, 2, vec, qvec, SORTBY, score, LIMIT, 0, 5 ) context build_context(docs) # 3. 查会话记忆 history load_chat_memory(session_id) # 4. 调用大模型生成 answer llm.chat(history context question) # 5. 写入语义缓存 r.hset(fcache:{uuid}, mapping{ans: answer, query_embedding: qvec}) r.expire(fcache:{uuid}, 43200) # 6. 写入会话记忆 r.json().arrappend(fchat:{session_id}, $.messages, {q: question, a: answer}) r.expire(fchat:{session_id}, 86400) return answer这段代码里最关键的是第1步的语义缓存查询。实测下来当缓存索引里已经有1万多个历史问答时单次相似度检索大概在2到4毫秒。命中后直接返回完全不碰知识库和大模型整个接口的P95延迟从原来的2.1秒降到了580毫秒用户的体感是“秒回”。3.4 参数调优与监控部署上线后我盯了三个关键指标指标推荐区间调参思路语义缓存阈值0.90-0.95调低提升召回但误命中风险上升KNN返回条数5-10条太少容易漏太多上下文过杂向量索引HNSW M值16-32M越大召回越准内存占用越高知识库切片长度256-512 Token短了语义不完整长了检索不精准监控方面我使用INFO modules查看向量索引状态和AI推理耗时用MEMORY USAGE idx:kb观察索引内存。出现内存涨幅过快时第一反应不是加内存而是检查是不是有人在跑全量写入或者缓存Key没有设置TTL。有一次就是我把缓存HASH忘写expire一晚上内存涨了4个G这个教训相当深刻。4. 常见问题与排查技巧实录4.1 向量召回质量差搜出来的内容牛头不对马嘴这个问题我花了一整天才排查清楚。首先是文本切块方式如果你把一篇5000字的文档直接切成一个向量无论用什么模型召回精度都会很惨因为语义被平均稀释了。解决方法是按段落或按语义边界切块块与块之间重叠一部分。其次要检查embedding模型本身是否匹配你的领域通用模型在金融、医疗等专业术语上表现通常不好领域微调过的模型会好很多。最后还有一个隐蔽问题HNSW索引的EF_RUNTIME参数。默认值较低时查询只会在图的一小部分区域搜索召回率会下降。我自己的经验是把EF_RUNTIME设为200召回效果有明显改善代价是单次查询耗时从2毫秒涨到4.5毫秒完全值得。4.2 语义缓存误命中用户被回怼语义缓存最怕的就是“看似相同实则不同”的请求。比如“我不想买了怎么退款”和“我不想买怎么退款”就差一个“了”字语义基本一致但“我要退款”和“我要退货”在客服语境里可能是两个不同流程如果阈值太低就会误判。我录到过一次线上事故某用户问“怎么开发票”系统误命中“怎么开发票抬头”然后直接返回了不相关的答案。排查后发现是因为当时阈值调到了0.85而且embedding模型对“发票”和“发票抬头”区分度不够。解决方案是提升阈值到0.94同时对高价值操作退款、发票、赔偿开启强制确认机制即相似度在0.90到0.94之间时不直接返回而是把缓存内容作为候选再经过一个小的意图分类模型二次判断。4.3 内存暴涨向量索引吃掉所有可用空间向量索引是内存大户。一个常见的计算公式是占用内存 向量数量 × 向量维度 × 4字节Float32再乘以HNSW图的额外开销一般再翻1.5到3倍。100万条1024维向量光原始向量就要4GB索引膨胀后可能到12GB这不是开玩笑。我在测试环境里就吃过这个亏导入80万条商品数据后Redis内存直接飙到18GB碰上了最大内存限制写入全被拒绝。当时的解决办法是先把maxmemory-policy临时改为allkeys-lru让部分非热点旧数据先淘汰保住写入通道然后再把数据拆到多个分片。这里提醒一句向量索引数据非常不适合LRU淘汰因为索引内部结构对失效Key的处理并不干净长期跑会产生大量内存碎片。生产环境一定要给向量索引实例预留足够独立的内存不要把热数据业务和AI向量业务混在同一个实例。4.4 权限与安全配置AI能力越强越要管住入口Redis-AI增强之后攻击面比传统缓存大很多。AI命令可以加载模型、执行推理如果暴露在公网等于把服务器内部能力敞开给人玩。我强烈建议至少做三件事第一用ACL把AI相关命令限制到专用账号普通业务账号只给读写缓存权限第二设置rename-command把高危险命令重命名比如AI.MODEL只能从管理通道调用第三开启TLS并禁止公网直连Redis只监听内网或Service Mesh的加密通道。还有一个细节模型文件本身要放在受控目录并校验文件的哈希值防止模型目录被写入恶意文件。虽然Redis不是沙箱环境但至少要做到启动前加载固定路径的模型不接受运行时随意上传。5. 影响范围与应用场景落地5.1 典型场景哪些业务最适合吃这波红利我盘点了2026年这套增强能力最适用的四类场景第一RAG知识库问答也就是我上面演示的客服场景Redis同时完成知识存储、向量检索、缓存与会话记忆第二实时内容推荐比如新闻流和商品流用向量检索做“相似内容”和“猜你喜欢”反馈延迟控制在10毫秒内第三AIOps日志分析用语义缓存把重复告警归因减少运维被相似告警轰炸第四多智能体协作中的共享记忆多个Agent实例通过Redis交换状态和检索历史决策避免各自为政。在这些场景里Redis-AI增强不能简单理解为“换了一个数据库”而是把原本散落在外部的组件收缩到数据层让应用代码更短、链路更短、问题更好排查。5.2 对现有架构的影响与迁移成本如果你现在已经在用Redis做传统缓存同时在外面接了一个向量库迁移成本其实不大。核心步骤是把向量库中的向量数据连同原始文本导出重新写入Redis的HASH结构然后按前面说的命令建索引。业务代码改动集中在查询逻辑把原先“查向量库 - 查Redis”两步改成“直接查Redis”一步。但如果你的向量规模上亿并且纯靠内存成本会很高。这类超大规模场景老实说还是交给专用的分布式向量引擎更合理Redis更适合作为热数据缓存层和会话记忆层。做架构选型时要有这个边界意识别被“史诗级增强”冲昏头脑所有技术都有适合它的半径。5.3 哪些能力不要轻易全部依赖原生2026年的增强虽然很大但至少在目前我实测的经验里有三类工作不要全部塞给Redis第一大模型主推理尤其是百亿参数以上的生成模型资源消耗远超数据库范畴第二海量离线向量构建如果知识库有上千万条数据并且需要全量周期重建建议离线批次处理后再导回Redis而不是在线逐条算第三强一致性的交易记录比如订单流水仍然应该落在关系型数据库里Redis做加速可以做唯一事实源不合适。把握住这些边界Redis-AI增强才能真正成为架构里的加速器而不是替别人扛雷。我个人从2026年前几个月的实践里最深的感受是别一上来就把所有AI能力全部迁到Redis先从语义缓存或者会话记忆这种小切口入手跑通之后再逐步扩展。最后再分享一个小技巧语义缓存的Key设计成cache:sha1(归一化问题语句)同时保留向量字段这样一旦发生误命中可以直接按业务维度手动删Key排查事故时非常方便。这套组合拳打下来Redis在AI应用里的角色就不再是配角了。

相关新闻

Python importlib 深度解析:动态导入、热重载与插件系统实战

Python importlib 深度解析:动态导入、热重载与插件系统实战

1. 为什么 importlib 值得你花时间搞懂很多人写 Python 好几年,对 import 的理解还停留在“写个 import xxx 就完事了”的阶段。直到某天遇到这些场景:想根据配置文件动态加载不同模块、想重载一个已经改过的模块而不用重启进程、想自己写一个插件系统让…

2026/10/14 0:04:27 阅读更多 →
Query Store 实战:SQL Server 与 Azure SQL 性能调优与计划回归排查指南

Query Store 实战:SQL Server 与 Azure SQL 性能调优与计划回归排查指南

1. 为什么我们需要 Query Store数据库性能调优这件事,干过几年的人都有一个共同感受:最怕的不是问题本身,而是问题“时好时坏”。早上跑得好好的查询,到了下午突然变慢;你连上去一看,执行计划跟昨天完全不一…

2026/10/14 2:06:21 阅读更多 →
字符串按指定字符分割:从原理到实战的边界处理与性能优化

字符串按指定字符分割:从原理到实战的边界处理与性能优化

字符串处理是每个开发者绕不开的基本功,而"按指定字符分割"这件事,看起来简单到不值一提,实际上手写起来坑一点都不少。split这个操作,几乎每种语言都内置了,但真到了业务里——日志解析、CSV读取、配置项拆…

2026/10/12 21:51:54 阅读更多 →

最新新闻

DLMS协议实战解析:从HDLC帧结构到AARQ/AARE调试指南

DLMS协议实战解析:从HDLC帧结构到AARQ/AARE调试指南

简介:这是IEC62056协议族(DLMS协议族)的中文说明手册,面向电能量数据采集终端研发与调试人员,解决与DLMS电能表通讯时的协议理解与报文解析问题。手册按三层模型展开:物理层负责底层硬件操作与连接建立&…

2026/10/14 3:00:31 阅读更多 →
QPdfium集成指南:Qt 5 MSVC2017 64位下的PDF渲染与避坑

QPdfium集成指南:Qt 5 MSVC2017 64位下的PDF渲染与避坑

简介:面向64位MSVC-2017编译环境下的Qt应用开发者,这份资源是一个名为QPdfimu的二进制版本库。QPdfimu借助谷歌pdfium引擎把PDF页面渲染成QImage,从而让Qt程序可以集成PDF阅读、页面显示、解析打印等功能,无需开发者从底层算法开始…

2026/10/14 3:00:31 阅读更多 →
BP神经网络卡壳?遗传算法和粒子群优化权重阈值实战指南

BP神经网络卡壳?遗传算法和粒子群优化权重阈值实战指南

做预测的朋友们,BP神经网络训练卡壳的情况我太熟了。收敛慢、陷入局部最优、精调半天误差还是掉不下来,反复跑实验跑到怀疑人生。今天咱们换条路子:用遗传算法(GA)和粒子群算法(PSO)给BP神经网络…

2026/10/14 3:00:31 阅读更多 →
期货做空机制解析与文华财经实操指南

期货做空机制解析与文华财经实操指南

1. 期货做空机制的本质解析"做空必须先买入"这个说法在期货新手圈子里流传甚广,但实际上是对期货交易机制的典型误解。期货市场的做空操作与股票市场存在本质区别,这要从期货合约的双向交易特性说起。期货合约本质上是买卖双方对未来某一时点交…

2026/10/14 3:00:31 阅读更多 →
JDBC连接失败01S00错误的根源与实战排查指南

JDBC连接失败01S00错误的根源与实战排查指南

/* 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 3:00:31 阅读更多 →
批量插入性能优化全解析:从一次线上事故到系统设计落地

批量插入性能优化全解析:从一次线上事故到系统设计落地

上周刚处理完一个线上事故——业务方导了一份几百万行的数据文件过来,平台接口直接卡死,数据库连接数被打满,单条INSERT平均耗时飙到几十毫秒,整个写入链路像堵死了一样。翻监控的时候我发现一个很扎心的事实:这批数据…

2026/10/14 2:59:30 阅读更多 →

日新闻

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/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

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

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

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

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

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

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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 阅读更多 →