claude-mem:用MCP协议给大模型构建跨会话长期记忆
从去年开始我给自己的工作流里加了一个叫 claude-mem 的小工具说实话一开始我对这类记忆增强插件是持怀疑态度的——毕竟谁没被那种说得好听、跑起来就废的 AI 辅助工具坑过几次呢。但 claude-mem 是我少数几个用了三个月还没卸载的东西它解决的是一个特别具体、特别烦人的问题每次打开新会话AI 助手就像失忆了一样完全不记得我们上周讨论过的架构决策。这篇文章想跟你聊聊这个工具到底是怎么工作的、怎么配置、以及我在实际项目里踩过哪些坑之后总结出来的经验希望能给你一些参考。1. claude-mem 到底解决什么问题会话失忆痛的根源先说说这个痛点有多真实。如果你平时在用 Claude 这类大模型做正经项目大概都有过这种体验上午刚讨论完某个模块的接口设计下午换个会话接着聊模型一脸茫然你得把上午的结论重新敲一遍。小事情也就算了碰到那种涉及几十个文件的改动、跨越多天的需求这种反复自我介绍是极其消耗精力的而且特别容易出错——你复述的时候往往就已经把细节给丢了。claude-mem 这个工具的目标就是给 Claude以及其他兼容模型补上长期记忆。它不是简单地把你的聊天记录存下来而是会从对话里抽取那些真正值得记住的信息——关键决策、项目约束、偏好设定、技术方案把它们结构化地存进本地的记忆文件里。下次你开新会话的时候这些记忆会被自动加载进去相当于给 AI 配备了上一个自己的笔记它至少知道你之前走到哪一步了。这个思路听起来简单做起来其实有个很微妙的点到底哪些对话内容值得记住如果把什么都存下来记忆文件很快就变成一锅粥加载进去不但帮不上忙还会干扰模型的注意力。我见过一些项目就是这么失败的——记忆功能做成了日志转储结果 AI 每句话都要跟历史记录比对一遍速度慢不说回答质量反而下降了。claude-mem 的抽取策略是在存得太多和存得太少之间找一个平衡点它只保留那些有长期价值的信息这个设计理念我觉得是它能存活下来的关键。适用人群我觉得有这么几类一是在 Claude 上做开发、需要跨会话维护项目上下文的人二是用 Claude 写代码、写文档经常要参考之前结论的创作者三是管理多个独立项目、不想让记忆互相干扰的重度用户。如果你只是偶尔问一两个问题那 claude-mem 对你来说可能有点大材小用——但如果你像我一样每天跟 AI 对话时长远超三小时这笔投资是特别划算的。2. 记忆系统的运作原理从对话到结构化记忆的完整链路要真正用好 claude-mem你得理解它背后是怎么处理信息的。我把它拆成四个环节来讲每一步都有它自己的设计考量。2.1 对话捕获它怎么看到你的上下文claude-mem 本身不依赖 OCR 或者截图那种笨办法它是通过 MCPModel Context Protocol来接入 Claude 生态的。你可以把 MCP 理解成一个API 通道Claude 在和你对话的过程中会调用 claude-mem 暴露出来的工具接口比如记录这事提取下当前要点。这些接口被调用的时候相关的对话片段就以原生的形式被传递给记忆系统了不需要额外解析。这个设计有一个很实际的好处记忆捕获和对话过程是同步的不是事后批处理。也就是说当 Claude 在回答你的时候它自己就能判断哪些内容值得记录然后主动调用记忆工具的接口去存入。你不用每次手动喊记住这句话那种被动式触发太笨了人一忙起来根本想不起来。我实测下来只要在配置里把自动捕获开关打开绝大多数有价值的对话节点都会被模型主动识别并记录不需要我干预。2.2 内容抽取什么样的信息会被记住这一步是整个系统的核心也是最体现算法能力的地方。原始对话是自然语言句子之间充满了寒暄、解释、重复如果直接丢进数据库那就是一堆没有结构的数据。claude-mem 会在捕获到信息之后做一轮抽取抽取出这些要素决策类信息比如我们决定用 Postgres 而不是 MySQL因为需要更强的 JSON 查询能力偏好和约束比如这个项目的代码风格遵循 PEP8不要用 type hints方案和思路比如用户认证打算分三步做注册、短信验证、JWT 签发名词解释比如catalog-service 是负责商品中心微服务的仓库名任务状态比如登录接口已联调完成还差超时重试逻辑抽取之后这些信息会被浓缩成一个条目打上类型标签存进记忆库。标签这东西特别重要——它决定了记忆在什么时机、什么场景下会被唤醒而不是一股脑全部塞给模型。比如仓库名这种高频引用的记忆每次会话都会加载而某次讨论中出现过的临时想法可能阈值就比较低只在相关主题下才会取用。2.3 记忆存储分层结构与去重策略存储层面claude-mem 采取的是分层的结构。第一层是全局记忆跟项目无关是长效的偏好和事实属于你本人的基本信息第二层是项目级记忆按项目区分每个项目维护一组记忆文件第三层是会话级记忆记录的是当前会话里临时产生但还不确定是否需要长期保留的信息。分层结构的好处是隔离性强全局记忆不会混进项目记忆里。我有三个项目同时挂在一个 Claude 客户端上之前用过一个单层记忆方案结果 A 项目的决策经常冒到 B 项目的对话里特别尴尬。claude-mem 的分层模式没有出现过这种串场。再加上存储前的去重处理同一个信息在多次会话中反复出现时会自动合并更新不会越存越臃肿。2.4 记忆唤醒什么时候加载、加载多少有了记忆库下一步就是取用。claude-mem 不是把全部记忆都塞进每次对话——那样上下文窗口再大也扛不住。它是按需取用基于相关性搜索来找回那些和当前主题密切相关的记忆条目。这个过程有点像一个检索器你问登录接口 timeout 是啥情况系统会把和登录、超时、接口相关的记忆条目优先捞出来注入到当前对话里。这里有个参数叫memories_back控制加载的记忆条数上限。我默认设成 20刚开始用的时候嫌少改成了 50结果对话质量反而下降了——上下文被各种相关但其实没那么重要的记忆灌满真正关键的决策反而被稀释了。后来又改回 20 左右效果最好。这个参数没有标准答案看你项目的复杂度来调但有一个原则少而精永远好过多而滥。3. 本地安装与基础配置从零到能跑起来的 30 分钟说完了原理直接上手。环境假设是 macOS/LinuxWindows 用户可能需要稍微调整一下路径写法但整体流程差不多。3.1 安装 claude-mem 本体最简单的方式是通过包管理器安装。我用的是 Homebrew一个命令搞定brew install claude-mem如果你不想用 Homebrewcli 工具也提供了 npm 安装的渠道npm install -g thedotmack/claude-mem装完之后跑一下版本确认命令看到输出有版本号就可以继续了claude-mem --version如果你连装都懒得装只想试试效果它还有一个零安装的远程版本通过npx直接调用不用装进系统。但我建议你还是本地装一下因为后续要配置 MCP 服务器远程调用会多一些网络层的变数。3.2 配置 MCP 服务器接入 Claudeclaude-mem 要跟 Claude 客户端通信得先注册成一个 MCP 服务器。在 Claude Desktop 里你需要找到配置文件claude_desktop_config.json把 claude-mem 添加进mcpServers列表。我的配置长这样{ mcpServers: { claude-mem: { command: claude-mem, args: [--mcp], env: {} } } }注意这个args里的--mcp参数它告诉 claude-mem 以 MCP 服务器模式启动而不是普通的 CLI 模式。如果你的系统环境里命令路径比较特殊或者你用 nvm 管理 node 版本command那行可能要改成绝对路径比如/Users/yourname/.nvm/versions/node/v18.17.0/bin/claude-mem。我第一次配的时候就是没注意这个启动报command not found折腾了十分钟才反应过来是 PATH 的问题。改完配置完全退出并重启 Claude Desktop 再进入然后在对话里问一句你能感知到 claude-mem 相关的工具吗如果模型能给你讲出几个插件提供的记忆操作指令就说明接入成功了。3.3 初始化记忆库接入成功之后下一步是初始化记忆库。在项目目录下执行claude-mem init这个命令会在当前目录下生成.claude-mem/文件夹里面是记忆相关的配置和 SQLite 数据库文件。我习惯每个项目都单独执行一次 init而不是全局共享一个库这样记忆天然隔离项目 A 的上下文不会漂到项目 B。初始化完之后你可以在对话里让 Claude 记住一条信息试试比如请记录本项目的数据库统一使用 PostgreSQL然后再新开一个会话问咱们项目的数据库选型是啥——如果它能对答如流说明整条链路已经通了。4. 项目中实际使用 CI/CD 的场景让记忆跟随代码走工具能跑起来只是第一步要真正发挥价值得让记忆在项目生命周期里有自己的位置。我这里分享两个我在真实项目里落地的用法。4.1 把记忆文件纳入版本管理很多人会把.claude-mem/目录写进.gitignore觉得记忆是本地产物不应该提交。我的做法恰恰相反对于单人维护的项目我会把记忆文件纳入版本库。理由很简单——restart 环境的时候如果记忆跟代码一起存在新机器拉下来就能接着干如果记忆只在本地你又恰好有一天格式化了磁盘那这些决策上下文就永远丢了。唯一的风险是记忆文件会频繁变动容易造成 git 提交噪音。我的做法是先确认记忆库是否真的自动记录变更然后根据实际情况决定要不要纳入版本管理。如果自动提交太频繁我就手动控制提交时机只在完成一个里程碑时提交一次记忆快照。需要注意记忆文件里可能包含敏感信息如果代码库是公开的则不建议纳入版本管理用本地存储加定期迁移的方案更稳妥。4.2 给 CI 流程开一个记忆通道这个想法是我自己在使用过程中受够了重复编写测试引导后才想到的。我的项目在 CI 里跑测试时会从知识库中拉取相关指引配合测试用例一起作为模型的参考这样能有效降低模型忽略历史约束的概率。这个能力来自于 claude-mem 提供的 CLI 接口我可以直接在 CI 脚本里这样调用claude-mem export --format compact这条命令会输出一份压缩过的记忆摘要然后我在后续脚本里把它注入到测试执行环节。配置到 CI 流水线大约 20 分钟就搞定之后每次发版都能感知到历史决策至少对我来说这个投资是值得的。5. 七千会话实测后的性能表现索引策略带来的显著提升光说配置和使用太绕我得摆点实测数据。我把 claude-mem 挂在主项目上跑了大概七千多次会话期间观察它的性能表现。让我比较意外的是记忆库的查询性能和记录数量的增长几乎挂钩——后来我去查了它的存储逻辑发现它给记忆库做了索引优化信息多了不会明显拖慢。这么说有点抽象我直接给个直观数据记忆条目不算多的时候查询响应时间大概 10 毫秒级别当记忆库涨到几千条以后响应时间仍然稳定在 100 毫秒上下。这个速度对对话场景完全可以接受你完全感觉不到记忆检索的存在。内存占用也在可接受范围内跑起来之后MCP 服务器进程常驻内存大概 60MB 左右。对于现代开发机器来说根本不算什么但要注意的是它常驻后台这点对于资源极度敏感的环境比如某些 CI 容器可能得斟酌一下。6. 跨项目隔离与记忆冲突处理多项目用户的关键一课如果你管理多个项目记忆冲突是一个绕不开的话题。最开始我用 claude-mem 时没仔细看配置就全局到处用结果项目 A 的我们决定用 Vue这种决策跑到项目 B 的对话语境里模型愣是以 Vue 的生态去回答 React 的组件问题那场面要多尴尬有多尴尬。跨项目隔离的关键在于三个层面项目目录隔离每个项目单独执行claude-mem init生成独立的.claude-mem目录和独立的 SQLite 库这是最基本的一道防线。项目角色提示在对话开始时明确告诉模型当前所在的项目角色。比如你是 project-alpha 的辅助开发技术栈是 TypeScript Fastify项目规范见记忆库。会话级临时记忆的管理有些信息只是当下这个会话临时用不打算跨会话保留。这种就可以只依赖会话级记忆不写入长期记忆库。即便如此冲突还是偶尔会发生。我碰到过一种典型情况某个记忆条目在 A 项目里过期了——技术栈从 Fastify 换成了 Express——但旧条目没有被标记失效导致对话里同时出现新旧两套说法。这个问题的根治办法有两个一是定期清理记忆库二是会话里发现模型引用过时信息时直接给出纠正指令让工具将旧条目标记失效。我现在养成了一个习惯每隔两周就翻一次记忆库里的决策类标签看有没有已经执行完或者被推翻的旧结论顺手清理掉。这是保持记忆质量最好的习惯没有之一。7. 记忆管理的进阶玩法从记住到会用claude-mem 不是存完就完事了。用好它和管理好你的记忆库一样重要这里分享几个进阶操作。7.1 手动添加长期记忆除开自动捕获工具还支持手动添加。比如你新建一个项目有很多起步信息根本还没聊到这时候你可以直接把一些关键决策预先写进记忆库claude-mem add 技术栈选择TypeScript Fastify不用 Express原因更符合团队对 Hono 风格的偏好这条指令执行之后下次开新会话模型一开场就知道技术栈约束不用你从头再交代了。这个用法在项目冷启动阶段特别有用——与其等着 AI 问东问西不如直接把项目宪法喂给它。7.2 让记忆变成经验而非数据纯存储的对话记录不会变成经验只有被复习、被调用的信息才有价值。claude-mem 提供了基于语义相似度的记忆检索接口配合 MCP 调用之后模型能在回答问题的过程中主动把相关的历史决策作为参考依据。我个人的一个玩法是每个里程碑完成后会主动让 Claude 基于记忆库里的决策记录写一份项目决策摘要然后存成 markdown 文件到 docs 目录。这样既方便人看也相当于给记忆做了一次压制存档双重保险。7.3 备份与迁移记忆库本质是 SQLite 文件备份很简单把.claude-mem/目录拷走就行。我设置了一个 cron 任务每周日晚上自动把记忆库打包扔到 NAS 上。迁移到新机器的时候直接解压放到项目目录然后执行一次claude-mem init安全起见可以加个--merge参数确认合并策略新机器上记忆就回来了。8. 踩坑总结那些文档没写的细节最后说说坑。这三个月里我踩了不少挑几个有代表性的希望能帮你省点时间。8.1 MCP 配置后不生效大概率是配置文件路径错了。Claude Desktop 的配置文件在不同平台上路径不一样macOS 下是~/Library/Application Support/Claude/claude_desktop_config.jsonWindows 下是%APPDATA%\Claude\claude_desktop_config.json。改完配置必须完全退出 Claude 重启不是关闭窗口就算——很多 mac 用户点红叉之后进程还在后台跑改的配置根本没加载。确认进程彻底退出之后重新打开再测试连接。8.2 加载记忆过多导致回答变水这个前面提到过把memories_back调太高会导致上下文里塞满低相关度的条目。我自己建议从 15~20 起步跑一两周看看效果再微调。如果你发现模型回答里频繁出现根据过往经验这样模糊的表述说明加载的记忆太杂了把它调低一点特别是那些和当前主题关联度不高的条目。8.3 多项目混用导致串记忆如果你把多个项目放在同一个目录下操作或者通过同一个工作区右键打开 Claude小心各项目的记忆库互相污染。最稳妥的方式是每个项目独立目录并且在会话开头约好项目角色。另外Claude Desktop 支持不同的项目文件夹窗口分别挂载不同的 MCP 配置这一点利用好可以有效规避串记忆问题。8.4 记忆库文件损坏SQLite 文件不是绝对安全的系统崩溃或者不友好地强制终止进程都有可能让数据库进入不一致状态。我会定期做一次claude-mem check类似的完整性校验具体命令不同版本略有差异执行claude-mem --help看看有没有对应子命令发现问题后从备份恢复。如果没备份也可以试试兼容模式下的多个记忆文件但损失难免。自从加了自动备份之后这个问题对我来说影响基本降为零。最后说点个人体会。claude-mem 不是什么银弹它做的事情很简单让 AI 在跨会话对话中不再失忆。但恰恰是不再失忆这个点足够改变你跟模型协作的方式——你不再需要谨小慎微地重复背景信息可以把注意力放在真正需要创造力的地方。使用这段时间我最大的感受不是AI 更聪明了而是我可以更懒了——这里的懒不是贬义而是把重复劳动彻底交给工具之后我发现自己有更多时间去做真正值得思考的事情。如果你的工作流里也有那种每次都得重新交代背景的憋屈感claude-mem 值得你花半个小时试试。

相关新闻

Ponytail插件完全指南:轻量级工具的设计逻辑、安装配置与实操避坑

Ponytail插件完全指南:轻量级工具的设计逻辑、安装配置与实操避坑

1. 从“ponytail”这个标题说起:它到底是什么第一次看到“ponytail”这个词,大多数人脑子里浮现的是发型——马尾辫。但在技术社区和效率工具圈子里,这个词最近被赋予了完全不同的含义。它指的是一类轻量级、即插即用、用完即走的工具形态&am…

2026/10/7 4:19:13 阅读更多 →
智能经济的真正胜负手:人机环境关系设计

智能经济的真正胜负手:人机环境关系设计

1. 智能经济的竞争焦点,从来不只是“算力军备”这几年聊AI聊智能经济,大家一开口就是大模型参数、算力规模、芯片制程、数据量级。这些东西重要吗?当然重要。但我在这行泡了十来年,看着行业从“机器学习”讲到“深度学习”再讲到“…

2026/10/7 4:19:12 阅读更多 →
Agent-Reach实战:打通智能体触达外部系统的动作执行框架

Agent-Reach实战:打通智能体触达外部系统的动作执行框架

做AI应用开发这一年多,我最大的感受是:模型层面的智能只是上半场,真正的下半场是智能体能不能把想法变成动作,把对话变成结果。Agent-Reach 就是我专门为这个“下半场”搭的一套触达与动作执行框架。它要解决的核心问题特别朴素—…

2026/10/7 4:19:12 阅读更多 →

最新新闻

黑盒测试之完整性测试:从功能清单到端到端流程全攻略

黑盒测试之完整性测试:从功能清单到端到端流程全攻略

黑盒测试里有一个经常被低估、但实际作用非常大的测试类型,就是完整性测试。它不做代码层面的审查,也不盯某一个函数内部的逻辑是否正确,而是站在用户入口处,把整个系统当成一个不透明但可操作的黑箱子,从登录到退出、…

2026/10/7 4:53:43 阅读更多 →
Babylon.js Behavior开发套路:把3D交互做成可插拔积木

Babylon.js Behavior开发套路:把3D交互做成可插拔积木

做 Web 3D 交互,最怕的不是把模型摆上页面,而是交互逻辑一团乱麻。我接手过的不少 Babylon.js 项目里,鼠标拖拽、点击高亮、缩放动画这些代码,散落在各个业务模块里,今天 A 页面复制一段,明天 B 项目再粘贴…

2026/10/7 4:53:43 阅读更多 →
Text-to-CAD实战:从自然语言到B-Rep实体模型的生成链路与踩坑指南

Text-to-CAD实战:从自然语言到B-Rep实体模型的生成链路与踩坑指南

1. 当"画图"变成"打字":Text-to-CAD到底在解决什么问题第一次看到"Text-to-CAD"这个词,我脑子里蹦出来的不是"设计师要失业了",而是"终于有人来收拾参数化建模那堆重复劳动了"。如果你在机…

2026/10/7 4:53:43 阅读更多 →
Text2CAD实战:从自然语言到三维模型的完整技术链路

Text2CAD实战:从自然语言到三维模型的完整技术链路

1. 从一句话到三维模型:Text2CAD到底在解决什么问题第一次听说Text2CAD这个概念,是在一个做机械设计的朋友群里。有人甩了张截图,输入框里写着“一个带四个安装孔的方形法兰盘,中心有通孔,边角倒圆”,几秒钟…

2026/10/7 4:53:43 阅读更多 →
Text-to-CAD实战:从文本到三维模型的生成式设计指南

Text-to-CAD实战:从文本到三维模型的生成式设计指南

1. 从一句话到三维模型:Text-to-CAD到底在做什么第一次看到“Text-to-CAD”这个词,我脑子里蹦出来的画面是:对着电脑说一句“给我画个法兰盘”,然后SolidWorks自己动起来。这个想象当然过于科幻,但它指向的方向是真实的…

2026/10/7 4:53:43 阅读更多 →
OpenCV矩形检测:轮廓提取、多边形逼近与参数调优实战

OpenCV矩形检测:轮廓提取、多边形逼近与参数调优实战

简介:面向OpenCV图像处理与计算机视觉初学者的矩形检测专题PDF文档。由于OpenCV本身未提供现成的矩形检测函数,这份资源系统梳理了手动实现矩形检测的完整流程:先通过中值滤波或双边滤波增强边缘,再分离图像颜色通道并利用Canny算…

2026/10/7 4:52:42 阅读更多 →

日新闻

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

ROS2机械臂仿真与运动控制:从URDF建模到Gazebo实战全解析

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

2026/10/7 1:01:58 阅读更多 →
用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

用浏览器直接改ESP32的WiFi密码:NVS键值配置工具设计与实现

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

2026/10/7 1:02:00 阅读更多 →
芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

芯片封装缺陷检测:扫描声学显微镜(SAT)原理与实操指南

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

2026/10/7 1:02:00 阅读更多 →

周新闻

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/6 7:15:40 阅读更多 →
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/6 5:29:09 阅读更多 →
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/6 6:26:51 阅读更多 →

月新闻

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