claude-mem实战:为Claude构建长期记忆的原理与调优指南
做AI应用的朋友们多半都被同一个问题折磨过Claude聊得好好好的窗口一关它就把你当新用户之前交代的事情全忘了。我在做AI助手的时候被这种“对话一关就失忆”的状态折腾到怀疑人生。后来我把claude-mem接进项目里才算是真正给Claude装上了长期记忆——它现在能记住用户的偏好、项目背景、甚至上周聊到一半的想法。这篇就围绕claude-mem把我从零接入到生产环境的全过程、核心原理和踩过的坑都拆开讲清楚适合那些正在给AI应用补记忆能力的开发者和对AI记忆机制感兴趣的同学参考。我最早接触claude-mem是因为团队做了一个面向客户的AI顾问系统。需求很简单客户第二次来的时候AI得记得第一次聊了什么否则每次都要客户从头自我介绍产品根本没法用。刚开始我想的是“多塞点上下文”把历史对话全部拼到系统提示词里结果窗口一下就爆了而且Claude总是被无关的历史细节带偏。后来换成claude-mem这类记忆中间件问题才算真正解决。这篇文章不是官方文档的搬运而是我在实际项目中反复试错之后沉淀下来的一套可复现经验。1. 为什么我给Claude配了个外接记忆仓库1.1 一次对话失忆带来的崩溃现场先说个具体的场景。我早期的AI助手只负责回答产品问题看起来够用。直到有个客户在会话里详细描述了他们的业务场景、数据规模和预期目标Claude也给了一套非常匹配的解决方案。客户很满意说“明天我把详细需求发你”。第二天他来了直接发了一句话“按照昨天说的方案帮我细化执行步骤。”结果系统傻了。Claude完全不记得什么方案甚至不记得这位客户是谁。我的第一反应是“把聊天记录存数据库然后重新塞回上下文”。于是我写了个工具把昨天的对话全部拼进prompt里再发给Claude。你能猜到结果吗上下文长度直接爆掉而且Claude把三天前闲聊的内容也当成当前需求给出了一个完全跑偏的答案。那段时间我才意识到具备上下文窗口不等于具备记忆能力。Claude的上下文窗口再大也只是临时工作台窗口一关所有信息就没了。真正的记忆需要一种能持久化、能按需提取、还不会干扰当前对话的机制。这就是我后来引入claude-mem的起点。1.2 Claude本身的上下文窗口不等于记忆我们得把概念理顺上下文context和记忆memory是两回事。上下文是模型在当前请求中能看到的所有token可以理解成桌面上摊开的文件。记忆是模型在多次请求之间能调用的持久信息相当于文件柜里按索引存放的资料。Claude这样的大模型本身没有“记忆”功能。你每次调用API它接收的就是你给它的那堆文本生成完就结束。所谓“多轮对话记忆”本质上是应用层把之前的对话文本一直带着假装模型记住了。但这种做法很笨对话一长token成本飙升信息一多模型注意力被稀释相关性反而下降。claude-mem的思路不一样。它不把所有历史都堆给模型而是把历史对话切碎、清洗、建索引存到一个可检索的记忆仓库里。当下一次对话需要某个信息时它只取出最相关的一小部分塞回上下文。这样既保留了关键信息又不污染当前会话。下面这张表能帮你快速看明白区别方案存储方式每次读取成本相关性控制适合场景全量历史拼接原样存文本线性增长很快爆炸无短会话demo窗口滑动只留最近N轮较低中但丢失早期信息客服机器人claude-mem式记忆结构化向量摘要固定成本高按需检索长期用户/复杂项目2. claude-mem的定位不是插件是记忆中间件2.1 核心功能拆解你可能在网上看到过各种“给Claude加记忆”的项目有的做成Chrome插件有的做成API封装。claude-mem的定位不太一样它更像一个插在应用与模型之间的记忆中间件用起来像我下面画出的这个流程文字版避免图用户消息 - claude-mem记忆接口 - 检索相关记忆 - 注入系统提示词 - 调用Claude API - 返回回复 - claude-mem把对话写入记忆库 - 下一轮继续具体来说claude-mem主要负责四件事对话入库每完成一轮对话它会把这段内容经过摘要压缩后写入记忆存储而不是存原始冗长文本。相关回忆新问题进来时它会把问题向量化去记忆库里做相似度检索找出历史记录中最相关的几条。记忆注入把检索到的记忆按固定格式拼进系统提示词上下文让Claude“想起”关键信息。记忆维护包括去重、失效、时间衰减和会话边界清理避免记忆库变成垃圾堆。我用的版本是0.4.x安装非常简单就一步pip install claude-mem。当然它还可以作为模块嵌入到你的Python项目里搭配FastAPI、Django或者其他任何调用Claude API的框架使用。2.2 与RAG、微调、上下文压缩的区别很多人会问这跟RAG检索增强生成不是一回事吗确实底层原理相似但目标不同。RAG通常面向知识库问答检索的是外部文档比如公司手册、产品说明而claude-mem检索的是用户与助手之间的历史对话和个性化信息聚焦的是“这个用户的背景”和“之前聊到哪了”。它的记忆对象不是通用知识而是会话上下文中的专属事实。微调则是另一个方向。微调能改变模型本身的参数让它学会某种行为模式但成本高、周期长也不适合存储随时变化的用户信息。今天客户说他喜欢简洁回复明天另一个客户说喜欢详细步骤这种动态信息显然不能靠微调去记录。上下文压缩也是常见技巧把多轮历史用一次Claude调用压缩成摘要继续带着走。但它依然是“把所有信息一股脑塞在上下文里”时间一长还是会超长、还是会被无关信息干扰。claude-mem的做法是把摘要再拆细、再索引取用的时候只掏最相关的那几段而不是把整袋资料都倒桌上。3. 本地部署与首次接入的完整步骤3.1 环境准备与安装先说环境。我这边是Ubuntu 22.04的服务器Python 3.10Claude API key已经就位。如果你的机器上装了Python 3.9基本没什么坑。pip install claude-mem跑完这步可以执行claude-mem --version确认装成功。我遇到过一个小问题依赖的chromadb版本和项目里其他库冲突。解决办法是单独建一个虚拟环境而不是直接往全局环境里塞。生产环境一定要用虚拟环境这是我踩过几次坑换来的教训。装好之后还需要初始化配置目录。claude-mem默认会把配置放在~/.claude-mem/里面包括一个config.yaml以及记忆库文件存放目录。claude-mem init执行完你可以看到目录下生成了config.yaml。打开看一下里面有几个关键字段我调整之后是这样的storage: type: sqlite # 也可以用 chroma对应向量存储 path: ~/.claude-mem/memories.db embedding: model: text-embedding-3-small # 用于生成向量 dimension: 1536 memory: max_items_in_context: 5 # 每次注入几条记忆 similarity_threshold: 0.35 # 相似度阈值低于这个值不召回 decay_days: 30 # 超过30天未提及的记忆降权 api: model: claude-3-5-sonnet-20241022 max_tokens: 2048初次使用建议保持默认值跑通流程后再调优。特别是max_items_in_context我一开始图省事设成了20结果Claude返回答复时老是自己脑补记忆里的内容反而变得啰嗦。后来压到5条效果好了很多。3.2 配置存储后端与API接入claude-mem默认的存储后端是SQLite内部嵌了向量索引适合个人项目和中小规模应用。如果你的记忆库会超过几十万条记录建议换成chroma并指定持久化目录storage: type: chroma path: ~/.claude-mem/chroma_db切换后端不需要改业务代码这个设计我很喜欢。API接入方面claude-mem不需要单独申请什么它直接读取环境变量里的ANTHROPIC_API_KEY来调用Claude同时用同一个Key或者你另外配置的OpenAI兼容Key来调Embedding接口。注意Embedding模型不一定非用OpenAI的。我后来换成了本地的bge-m3通过Ollama跑成本更低但检索效果会有一点差别后面再细说。3.3 在对话循环里挂载记忆模块接入起来很简单核心代码其实就几行。我用FastAPI写了个聊天接口大致长这样import os from fastapi import FastAPI from pydantic import BaseModel from claude_mem import MemoryClient app FastAPI() memory MemoryClient() class ChatRequest(BaseModel): user_id: str message: str app.post(/chat) def chat(req: ChatRequest): # 1. 检索相关记忆 memories memory.recall(req.user_id, req.message) # 2. 拼接到系统提示词里 sys_prompt 你是一位耐心的AI助手。请结合记忆中的历史信息回答用户当前问题。\n\n相关记忆\n for m in memories: sys_prompt f- [{m[time]}] {m[content]}\n # 3. 调用Claude API client anthropic.Anthropic() response client.messages.create( modelclaude-3-5-sonnet-20241022, max_tokens2048, systemsys_prompt, messages[{role: user, content: req.message}] ) # 4. 把这一轮对话存入记忆库 memory.remember(req.user_id, req.message, response.content[0].text) return {reply: response.content[0].text}这里最关键的是recall和remember两个方法。recall根据user_id和当前消息从记忆库里检索相关内容remember把用户新消息和助手回复一起写入记忆库。如果你用的不是FastAPI也没关系只要在调用Claude API之前插入recall、拿到回复之后调用remember逻辑都是一样的。我自己还试过把记忆模块挂到LangChain的callback里效果也行但多了一层抽象排查问题时反而绕建议直接写在业务代码里。4. 记忆是怎么写入和取回的核心原理细说4.1 对话切分与摘要生成很多AI记忆方案失败就是因为直接把原始对话丢进记忆库。想想看一次长聊可能有几千字其中包含大量闲聊、重复更正和无意义的语气词。把这些原样存下来不仅浪费存储空间检索时还会因为噪音太多而召回一堆没用的片段。claude-mem在写入前会先做两件事切分和摘要。它按时间或轮次把对话切成一段段每段大概几十条消息。然后调用Claude模型为这段对话生成一个结构化摘要提取的信息包括用户的核心目标、提到的关键事实、明确表达过的偏好、尚未完成的待办事项。摘要不会太长默认控制在150个token以内但信息密度很高。举个例子用户说“我喜欢简洁的回复上次您给的那个分步方案太啰嗦了”。这段原文如果存下来以后检索时可能只匹配到“啰嗦”这种词容易漏掉真正的偏好。但生成摘要后存储的是“用户偏好希望回复简洁不喜欢分步长方案”下次任何涉及“回复风格”的提问都能精准召回。你会发现这个摘要过程本身也在消耗Claude的API额度。所以claude-mem支持配置批量写入攒够一定量的对话再统一摘要能有效降低成本。4.2 嵌入向量、相似度检索与评分阈值记忆的取回靠的是一套经典的向量检索流程。每次摘要生成后claude-mem会调用嵌入模型把摘要转成一串浮点数向量也就是高维空间里的一个坐标。用户的新消息进来时同样被转成向量然后去记忆库里做相似度计算。向量相似度常用余弦相似度范围从-1到1。越接近1说明方向越一致语义越相关。claude-mem内部会计算新消息向量与所有记忆向量的余弦相似度按分数从高到低排序取前max_items_in_context条同时只保留高于similarity_threshold的结果。这个阈值非常关键。设得太低会召回无关记忆可能把几天前聊的午饭话题当成当前需求设得太高又什么都召不回。我排障时发现一个规律如果Claude总是“莫名提到历史内容”多半是阈值太低如果用户明明上次说过需求但Claude完全没反应多半是阈值太高。先用0.3起步再根据实际对话逐步微调是比较稳妥的路径。4.3 遗忘与去重机制记忆不能只增不减否则运行半年后记忆库会乱成一锅粥。claude-mem里内置了一个类似“遗忘曲线”的机制每条记忆除了向量和文本还会记录时间戳和最后访问时间。检索时超过decay_days未访问的记忆会乘以一个衰减系数比如0.5这样即使相似度很高排序也会被往后压。去重也很有必要。我遇到过一个案例用户连续三次说“我公司在做跨境电商”系统就存了三遍内容相似的记忆。检索时三条都召回Claude以为这是什么重要信息回复里反复强调显得很傻。claude-mem的解决方式是合并重复摘要当新摘要与已有记忆的相似度超过0.9时只更新时间戳并保留信息更全的那条。如果你自己实现记忆系统这两点一定要从一开始就设计进去。避免记忆膨胀和干扰比你想象的重要得多。5. 实测中踩过的坑与调优建议5.1 记忆串味会话边界没设对第一个大坑是多用户数据混在一起。刚开始我偷懒所有用户共用一个记忆库只靠user_id字段区分。结果线上出现了“A用户的问题被B用户的记忆污染”的情况。排查后才发现claude-mem虽然支持按user_id过滤但如果你初始化MemoryClient时没有传命名空间它默认走同一个集合某些版本的快速检索可能会漏掉过滤。正确的做法是在实例化或者调用接口时明确指定作用域memory MemoryClient(namespaceprod) # 全局命名空间 memories memory.recall(user_iduser_123, ...) # 再按用户细分同时生产环境一定要给每个项目分配独立的存储目录或数据库文件不要图省事全塞一个库里。5.2 陈旧记忆干扰时间衰减参数怎么调第二个坑是“过期记忆当宝贝”。我有个客户在1月份提过一个技术方案到了4月份项目方向已经变了。但因为那几天聊的内容很多、摘要很长向量相似度一直很高每次新对话都把它召回Claude反复推荐过时的方案。后来我把decay_days从30调到了14并且把相似度阈值从0.3提到0.45。效果立竿见影——过时信息的权重被压下去新近对话的优先级自然上来了。当然阈值也不能一刀切不同业务场景差异很大。如果是做个人助理用户几个月前聊的旅行偏好可能是重要记忆不该被遗忘如果是做项目协作助手两周前的计划可能确实该过时。我的建议是先按业务场景设定衰减周期然后抽样回看导出结果再微调。5.3 成本与延迟缓存和批量写入策略接入claude-mem之后每次用户消息多了一次向量检索毫秒级可忽略和一次摘要生成要调模型几十到几百毫秒。如果你的接口对延迟敏感这就有问题了。我在性能调优时做了三件事把remember的摘要生成改成异步批量执行。用户先拿到Claude回复摘要后台慢慢算不卡主链路。对高频重复的问题做缓存。比如用户问“你们怎么收费”第一次存好第二次直接走缓存不触发记忆检索。本地部署Embedding模型。把text-embedding-3-small换成通过Ollama跑的bge-m3单条向量化延迟从平均80ms降到了20ms以下成本也接近零。代价是本地Embedding的召回质量比商业API稍微差一点尤其是中英文混合场景。我实测下来bge-m3在中文场景其实不弱英文专业领域还是API更稳。如果你的用户主要是中文本地模型完全够用。6. 从玩具到生产权限、持久化与可观测性6.1 多用户隔离怎么做生产环境里“用户A的记忆不能被用户B看到”是安全底线。claude-mem支持在存储后端加user_id前缀做物理隔离但我更推荐在架构层直接拆库或者拆集合。比如SaaS应用给每个租户分配独立数据库表或者至少独立的命名空间。如果不想大改也可以在Embedding生成或者摘要文本里注入用户标识。不过这只是软隔离万一检索逻辑有漏洞数据还是可能串。我个人的习惯是核心业务里软隔离都不够必须用硬隔离——每个user_id对应一个独立的记忆库文件。claude-mem的SQLite后端天然支持这种模式创建时指定不同路径即可。6.2 记忆文件的备份与迁移记忆库是业务数据丢了对用户体验的打击近乎毁灭。我建议像备份数据库一样定期备份记忆文件。SQLite模式下直接复制.db文件就行但要注意在业务低峰期操作避免写冲突。Chroma持久化目录的话记得带上chroma.sqlite3以及同级其他文件一起备份。迁移这块我踩过一个坑把SQLite记忆库从测试环境拷贝到生产环境时发现向量索引没同步。后来搞明白了claude-mem对SQLite的向量索引是单独文件存储的不能只备份主数据库文件。最稳妥的办法是先用自带导出命令claude-mem export --user user_123 --output memories.json迁移过去之后再导入claude-mem import --user user_123 --file memories.json这样会重建索引不会出现“库里没数据”的诡异情况。6.3 后续扩展方向claude-mem解决的是“会话间记忆”这个核心问题但距离真正完善的助手记忆还差几步。我现在在尝试的方向有三个记忆分层把短期事实今天聊的内容、中期偏好最近一个月的行为习惯、长期画像用户身份和稳定特征分开存储分别设置不同的衰减策略。主动记忆提炼不只等用户提问才召回而是在会话进入新主题时主动把相关背景推给Claude让它提前“想起来”而不是用户反复提醒。多模型共享记忆同一个记忆库让Claude负责对话、让其他模型负责摘要和分类各取所长整体表现会更稳。我也会继续基于claude-mem做二次开发把记忆质量评估加进去定期抽样检测召回内容的准确率和有用性。毕竟记忆系统最怕的不是“记不住”而是“记错了还一本正经地用”。如果你也在做类似的事情建议从最小闭环开始先把记忆接上、跑通再逐步优化召回质量。等你真正处理好一次“客户昨天说的需求今天自动记起来”的场景你会明白这套机制值所有折腾。

相关新闻

SpringBoot留守儿童爱心网站实战:从需求拆解到结对帮扶闭环设计

SpringBoot留守儿童爱心网站实战:从需求拆解到结对帮扶闭环设计

看到“基于SpringBoot的留守儿童爱心网站的设计与实现”这个课题时,很多人的第一反应是:又是一个公益版CMS——登录、列表、增删改查,凑完功能就完事。说实话,如果只按这个思路去做,这项目确实没什么含金量。但你把“帮…

2026/10/9 6:59:46 阅读更多 →
UVM打印信息管理:从uvm_info链路到日志瘦身实践

UVM打印信息管理:从uvm_info链路到日志瘦身实践

UVM验证环境里,打印信息这件事说大不大,说小不小。说它简单,是因为你写第一行uvm_info的时候根本不用思考;说它麻烦,是因为等你跑起几百上千个testcase的回归,线上日志动不动几个GB,真正有用的信…

2026/10/9 6:59:46 阅读更多 →
Control as Inference:用概率推理重构智能控制

Control as Inference:用概率推理重构智能控制

1. 这不是又一个强化学习变体,而是对“控制”本质的重新发问Control as Inference(简称CAI)这个标题乍看像某篇冷门论文里的缩写,但如果你在机器人决策、自动驾驶规划、甚至大模型智能体(Agent)行为建模的讨…

2026/10/9 6:59:46 阅读更多 →

最新新闻

编写恰到好处的产品退市(EOL)通知:Product-Manager-Skills 的 eol-message 技能实战指南

编写恰到好处的产品退市(EOL)通知:Product-Manager-Skills 的 eol-message 技能实战指南

AI 技能AI 插件 【免费下载链接】Product-Manager-Skills Product Management skills framework built on battle-tested methods for Claude Code, Cowork, Codex, and AI agents. 项目地址: https://gitcode.com/gh_mirrors/pr/Product-Manager-Skills 点击查看 免…

2026/10/9 7:31:10 阅读更多 →
用面试转录预测 Culture Index 特质:interpreting-culture-index 的 predict-from-interview 工作流实战指南

用面试转录预测 Culture Index 特质:interpreting-culture-index 的 predict-from-interview 工作流实战指南

AI 技能AI 插件应用安全网络安全AI 评测 【免费下载链接】skills Trail of Bits Claude Code skills for security research, vulnerability detection, and audit workflows 项目地址: https://gitcode.com/gh_mirrors/skills8/skills 点击查看 免费下载 本文是 T…

2026/10/9 7:31:10 阅读更多 →
遗传算法求解电力系统经济调度:爬坡约束与网损的Matlab实现

遗传算法求解电力系统经济调度:爬坡约束与网损的Matlab实现

搞电力系统优化的同行应该都有同感:经济调度(Economic Dispatch)这个题目看起来不难——把负荷分给几台机组让总成本最低,但一旦把爬坡约束、网损这些工程细节塞进去,"简单"就变成了"复杂"。尤其是…

2026/10/9 7:31:10 阅读更多 →
Arcane 贡献指南:搭建 Go + SvelteKit 双端热重载开发环境并提交高质量 PR

Arcane 贡献指南:搭建 Go + SvelteKit 双端热重载开发环境并提交高质量 PR

云原生运维容器运行时 【免费下载链接】arcane Modern Docker Management, Designed for Everyone 项目地址: https://gitcode.com/gh_mirrors/arcane2/arcane 点击查看 免费下载 Arcane 是一个面向所有人的现代化 Docker 管理平台,采用 Go 后端、Svelt…

2026/10/9 7:31:10 阅读更多 →
wp-calypso 的 createSelector 详解:用 @automattic/state-utils 构建带缓存失效机制的 Redux 记忆化选择器

wp-calypso 的 createSelector 详解:用 @automattic/state-utils 构建带缓存失效机制的 Redux 记忆化选择器

前端CMS 【免费下载链接】wp-calypso The JavaScript and API powered WordPress.com 项目地址: https://gitcode.com/gh_mirrors/wp/wp-calypso 点击查看 免费下载 wp-calypso(WordPress.com 的前端应用)的 Redux 状态树刻意保持精简&#…

2026/10/9 7:31:10 阅读更多 →
Playnite 主题改 3 处 XAML 就能加动画

Playnite 主题改 3 处 XAML 就能加动画

Playnite 主题改 3 处 XAML 就能加动画 【免费下载链接】Playnite Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games. 项目地址: https://gitcode.com/GitHub_T…

2026/10/9 7:30:09 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 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/8 21:13:17 阅读更多 →
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/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练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/9 6:17:20 阅读更多 →