基于RAG的Claude记忆库管理:从对话混乱到结构化知识库的实战指南
1. 项目缘起当Claude的记忆开始“失控”最近几个月我几乎把所有需要深度思考、内容创作和代码审查的工作都交给了Claude。它强大的上下文理解和连贯的对话能力让我感觉像是拥有了一位不知疲倦、知识渊博的私人助理。但用久了一个恼人的问题开始浮现它的“记忆”越来越混乱了。我说的“记忆”指的是Claude在单次对话中能记住的上下文。虽然官方宣称的上下文窗口很大但实际使用中我发现它经常“记岔了”。比如在讨论一个项目的技术架构时我中途让它帮忙写一段API接口的代码之后再回到架构讨论它有时会混淆前后两个话题的细节把接口的参数设计错误地关联到架构的组件描述上。更常见的情况是在一个漫长的对话线程里当我引用几个小时前提到的某个概念或数据时Claude的回应会变得模糊、不准确甚至完全跑偏需要我不断地翻看历史记录去“提醒”它。这感觉就像你的书房里堆满了各种书籍和笔记虽然每一本你都看过但当你急需找到半年前写在一张便签上的关键公式时却不得不把整个房间翻个底朝天。Claude的对话历史就是这样一个不断膨胀、缺乏索引的“书房”。每一次对话都是一次线性的追加信息虽然都在那里但缺乏有效的结构化管理导致检索和关联效率极低。这种混乱直接影响了工作效率和体验。我不得不花费额外的时间来整理对话、手动总结关键点或者开启多个并行的对话窗口来隔离不同主题但这又导致了信息孤岛。我开始寻找解决方案一个能帮我管理Claude对话历史、提炼核心记忆、并能让我在需要时快速精准调用的工具。这就是我接触到“记忆库管理”概念的起点而Auto-Memory这类工具的出现恰好瞄准了这个痛点。2. 理解“记忆库管理”从信息洪流到知识图谱在深入工具之前我们有必要厘清“Claude记忆库管理”到底要解决什么本质问题。这不仅仅是整理聊天记录那么简单。2.1 大模型对话的“记忆”本质与局限Claude这类大语言模型的“记忆”在技术层面依赖于其庞大的上下文窗口Context Window。你可以把这个窗口想象成一个正在工作的“短期记忆白板”。当用户输入一段话包括之前的对话历史模型会基于这个白板上的所有内容来生成回复。这个白板虽然大但有三个核心局限线性堆叠与信息稀释所有信息按时间顺序平铺。随着对话轮次增加早期的重要信息会被淹没在大量的后续文本中。模型在生成回复时需要对整个上下文进行加权处理越靠后的、越频繁出现的信息权重可能越高这可能导致关键但出现较早的信息被“稀释”。缺乏结构化索引模型内部是理解了语义但对用户而言历史记录只是一条条文本。我们无法像查询数据库那样通过“项目A的架构决策”、“关于用户认证的讨论”、“2024年5月10日的代码片段”这样的标签来快速定位。“幻觉”与混淆风险当上下文充满多个相似或关联的话题时模型可能会错误地交叉引用信息产生事实性错误或逻辑矛盾也就是所谓的“幻觉”。这在技术讨论、数据核对等场景下是致命的。因此所谓的“记忆库管理”其核心目标是将线性的、非结构化的对话历史转化为结构化的、可查询的、抗干扰的“长期记忆”或“知识库”。2.2 Auto-Memory类工具的核心工作流以Auto-Memory为代表的工具其工作原理可以概括为一个智能的“对话摘要与归档系统”。它通常以后端服务或浏览器插件的形式运行监听你与Claude通常通过Web界面或API的对话。其核心工作流包含几个关键环节实时监听与捕获工具在后台运行自动捕获你与Claude交互的每一轮问答。智能摘要与向量化这是最关键的一步。工具不会简单地存储原始文本。它会利用一个通常是另一个轻量级或本地运行的AI模型对每一段有意义的对话块可能是一轮完整的问答或一个逻辑段落进行分析提取核心实体人物、项目、技术名词、关键结论、行动项、代码片段等并生成一段凝练的文本摘要。同时它会将这段摘要或原始文本的关键部分转化为“向量”Vector——一种高维度的数学表示能够捕捉语义信息。结构化存储与索引生成的摘要、关键实体标签以及对应的向量会被存储在一个结构化的数据库通常是向量数据库如ChromaDB、Weaviate或简单的SQLite with vector extension中。这个过程为原本杂乱无章的对话建立了索引。智能检索与注入当你开启一段新对话或在进行中的对话里提及某个历史话题时工具会发挥作用。它分析你当前的问题或上下文将其也转化为向量然后在它的记忆库中进行相似性搜索向量检索找出语义上最相关的历史记忆片段摘要。上下文优化与注入工具不会把找到的所有历史记录都原封不动地塞给Claude那样会浪费宝贵的上下文窗口。相反它会将检索到的、最相关的几条记忆摘要以一种结构化的提示词Prompt格式巧妙地“注入”到你当前对话的上下文开头或系统指令中。例如它可能会添加这样一段话“根据我们之前的讨论相关记忆如下1. [项目Alpha] 于5月10日决定采用微服务架构。2. [API设计] 用户登录接口的响应格式已确定为JSON包含字段token, userId。请基于以上记忆进行后续对话。” 这样Claude在回答时就“回忆”起了这些关键信息从而保证了对话的连贯性和准确性。这个过程实质上是在Claude原有的、被动的、线性的记忆机制之上叠加了一个主动的、结构化的、基于检索增强生成RAG原理的外部记忆系统。3. 实战搭建你的Claude记忆管理系统了解了原理我们来看看如何具体落地。这里我以一类典型的开源解决方案为例它通常包含一个本地服务器和一个浏览器插件。我会详细拆解部署和配置过程中的每一个步骤并解释为什么这么做。3.1 环境准备与工具选型首先你需要一个能运行Python服务的基础环境。我强烈推荐使用Docker来部署记忆管理服务端。原因有三第一它能解决环境依赖的噩梦所有组件Python版本、库、向量数据库都被封装在一个干净的容器里第二部署和升级极其简单第三便于在不同机器间迁移。基础环境需求操作系统Windows (WSL2)、macOS 或 Linux。本文以 macOS/Linux 命令行环境为例。Docker Docker Compose必须安装。这是当前管理此类服务栈最主流、最简洁的方式。Git用于克隆代码仓库。一个可用的Claude API Key或能够被浏览器插件监听的Claude Web会话。大多数工具会优先支持Web端监听因为更通用。工具选型考量目前社区有几个知名的项目如ChatGPT-Memory、AI-Memory-Bank等其设计理念类似。在选择时我主要关注以下几点活跃度GitHub仓库最近是否有更新Issue和PR处理是否及时架构清晰度是否采用前后端分离是否使用主流的向量数据库如Chroma配置复杂度是否提供了清晰的docker-compose.yml和配置文件隐私性数据是否默认存储在本地这是一个关键点我不希望我的对话数据被上传到第三方服务器。假设我们选定了一个名为claude-memory-server的虚构开源项目用于示意实际部署时请替换为真实项目它包含后端服务、Chroma向量数据库和一个配套的浏览器插件。3.2 服务端部署与配置详解我们开始一步步部署服务端。步骤1获取项目代码打开终端找一个合适的目录克隆项目代码。git clone https://github.com/example/claude-memory-server.git cd claude-memory-server步骤2剖析与修改配置文件在项目根目录通常会有一个docker-compose.yml文件和一个config目录。我们先看docker-compose.yml它定义了整个服务栈。version: 3.8 services: chromadb: image: chromadb/chroma:latest container_name: claude-memory-chroma volumes: - ./data/chroma:/chroma/chroma ports: - 8000:8000 environment: - IS_PERSISTENTTRUE - PERSIST_DIRECTORY/chroma/chroma memory-server: build: ./server container_name: claude-memory-server depends_on: - chromadb volumes: - ./data/server:/app/data - ./server/config.yaml:/app/config.yaml:ro ports: - 5000:5000 environment: - CHROMA_HOSTchromadb - CHROMA_PORT8000这个配置定义了两个服务chromadb向量数据库和memory-server我们的记忆管理后端。数据通过volumes映射到了本地的./data目录确保容器重启后数据不丢失。接下来查看server/config.yaml配置文件。这是核心你需要根据情况修改。model: embedding_model: BAAI/bge-small-en-v1.5 # 用于生成向量的模型 embedding_device: cpu # 使用CPU还是GPUcpu更通用 llm_for_summarization: claude-3-haiku-20240307 # 用于生成摘要的模型 claude_api_key: ${CLAUDE_API_KEY} # 从环境变量读取 storage: vector_db_type: chroma chroma: host: chromadb port: 8000 server: host: 0.0.0.0 port: 5000 processing: summary_enabled: true auto_save_interval: 5 # 每5轮对话自动触发一次摘要保存关键配置解析embedding_model选择一个合适的嵌入模型。BAAI/bge-small-en-v1.5是一个在英文语义相似度上表现很好且体积较小的开源模型适合本地运行。如果你的对话主要是中文可以考虑BAAI/bge-small-zh-v1.5。llm_for_summarization指定用哪个模型来生成对话摘要。这里用了Claude的Haiku模型因为它速度快、成本低且摘要任务不需要太复杂的推理。你需要将${CLAUDE_API_KEY}替换为你的真实API Key或者更安全的方式在docker-compose.yml的memory-server环境变量里设置。auto_save_interval这个值需要权衡。设置太小如1会频繁调用API生成摘要可能造成浪费和干扰设置太大如20则记忆更新不及时。我建议从5开始根据对话节奏调整。步骤3启动服务在项目根目录下运行一条命令即可启动所有服务docker-compose up -d-d参数表示在后台运行。使用docker-compose logs -f memory-server可以实时查看后端日志确保没有报错。看到类似Application startup complete.和Connected to ChromaDB at chromadb:8000的日志就表示服务启动成功了。此时记忆管理后端API已经在本地http://localhost:5000运行向量数据库在8000端口。3.3 浏览器插件安装与对接服务端跑起来了现在需要让工具能“看到”你和Claude的对话。这就需要浏览器插件。步骤1安装插件以 Chrome 或 Edge 浏览器为例进入扩展程序管理页面chrome://extensions/开启“开发者模式”。然后点击“加载已解压的扩展程序”选择项目代码中browser-extension目录或类似名称的目录。插件就会被安装。步骤2配置插件点击浏览器工具栏上新出现的插件图标通常需要进行初始配置。服务器地址填入http://localhost:5000即我们刚启动的后端服务地址。目标网站添加https://claude.ai/*和https://claude.ai/chat/*Claude的Web聊天地址。这样插件就知道需要监听哪个标签页。自动捕获模式一般可以选择“智能捕获”即当检测到对话有实质性内容而非寒暄时才将其发送给后端处理。手动保存快捷键建议设置一个比如CtrlShiftS(CmdShiftS on Mac)用于在觉得某段对话特别重要时立即触发保存记忆。步骤3测试连接配置好后打开claude.ai开始一次对话。在插件面板或后端日志中你应该能看到连接状态变为“已连接”并且随着对话进行会有“捕获到消息”、“正在生成摘要”、“记忆已保存”之类的日志出现。注意隐私与安全务必确认你部署的工具是开源的且网络流量仅在“你的浏览器 - 你的本地服务器”之间循环。避免使用来历不明的第三方托管服务防止对话数据泄露。检查插件权限确保它只访问你指定的Claude网站。4. 高级技巧与实战避坑指南工具跑通只是第一步要用得好让它真正成为你的“第二大脑”还需要一些策略和技巧并避开一些常见的坑。4.1 优化记忆质量不只是自动保存完全依赖工具的自动摘要有时会产生过于笼统或偏离重点的记忆。为了提升记忆库的质量我总结了几条手动干预策略主动“打标”与提炼在一段有价值的对话结束时不要立刻关闭窗口。花一分钟用你自己的话向Claude发出一个总结指令。例如“请将我们刚才关于‘用户服务数据库选型’的讨论提炼出三个核心结论和两个待定事项用Markdown列表格式输出。” 然后手动触发插件保存使用你设置的快捷键。这样保存的记忆其摘要就是你刚刚要求生成的、高度结构化的内容远比自动生成的更优质。建立记忆分类体系虽然工具会自动提取一些实体标签但你可以有意识地建立自己的命名规范。例如在所有涉及“项目A”的对话开头或结尾都加上“#项目A”这样的标签。一些高级工具支持自定义元数据Metadata过滤你可以为记忆添加project: 项目A,type: 架构决策等字段方便日后按项目、按类型检索。定期“修剪”与合并记忆库不是只增不减的。每隔一两周可以打开工具提供的管理界面如果有的话或者通过API查看最近的记忆条目。将那些重复的、临时的、已过时的记忆进行删除或合并。例如同一个Bug的排查过程可能产生了5条记忆你可以手动将其合并成一条“XX Bug根本原因与修复方案”的终极记忆。4.2 常见问题排查与解决在实际使用中你可能会遇到以下问题问题1插件无法捕获Claude对话。检查点1网站匹配确认Claude网页的URL确实在插件的监听列表里。Claude有时会更新域名或路径。检查点2页面加载状态确保Claude聊天页面完全加载完毕后再开始对话。有时插件脚本在页面动态加载完成前就已注入失败。检查点3浏览器控制台打开浏览器的开发者工具F12切换到Console控制台标签查看是否有来自插件的错误信息如网络请求失败、权限错误等。问题2保存的记忆检索不出来或者检索结果不相关。根因分析这通常是向量检索环节的问题。核心在于“嵌入模型”Embedding Model和“检索策略”。解决方案A调整嵌入模型。如果你主要用中文对话但配置了英文嵌入模型如bge-small-en语义理解就会偏差。务必切换为对应的中文模型。解决方案B优化检索查询。工具在检索时会将你当前的问题转化为向量去搜索。如果你的问题太简短或模糊如“上次说的那个事”检索效果自然差。尝试在提问时使用更完整、包含关键实体的句子例如“我们上周四讨论的关于‘使用Redis缓存会话’的方案最终结论是什么”。解决方案C检查摘要质量。如果自动生成的摘要质量很差比如只是一句“用户讨论了天气”那么无论怎么检索都没用。这就需要回到上一步通过手动干预提升摘要质量。问题3服务运行一段时间后响应变慢或内存占用高。可能原因向量数据库如Chroma在本地运行如果记忆条目成千上万且没有做分页或定期归档可能会影响性能。此外嵌入模型在CPU上运行处理长文本时也比较耗时。应对策略硬件层面如果条件允许将embedding_device改为cuda如果你有NVIDIA GPU速度会有数量级提升。数据层面在工具配置中寻找是否有“记忆条目数量上限”或“自动归档旧记忆”的选项。如果没有可以定期手动导出并清理较早的记忆比如3个月前的仅保留摘要原始对话可存档到本地文件。服务层面检查docker stats命令看是哪个容器占用资源高。如果是内存服务器可能是嵌入模型加载问题如果是数据库可能是索引膨胀。可以考虑重启容器或者寻找更高性能的向量数据库方案如Qdrant。4.3 将记忆库价值最大化超越对话管理一个管理良好的Claude记忆库其价值可以延伸到对话之外个人知识库PKM的素材来源你与Claude深度讨论产生的精华——架构图描述、解决方案对比、学习心得——都是极佳的知识卡片。可以定期将高质量的记忆导出为Markdown文件导入到Obsidian、Logseq等笔记软件中形成你的永久知识资产。项目文档的初稿一个项目的设计决策、API变更记录、会议纪要很可能就散落在与Claude的多次对话中。利用记忆库的检索功能快速搜集所有相关记忆拼接、润色后就能生成一份不错的项目文档初稿。团队知识共享如果团队多人使用Claude可以考虑部署一个共享的记忆服务器需妥善处理权限和隐私。这样关于某个技术难题的解决方案一旦被一位成员探索出来并形成记忆其他成员在遇到类似问题时就能通过检索直接获得指引避免重复劳动。管理Claude的记忆库本质上是在管理我们与AI协作过程中产生的“思想火花”和“工作痕迹”。它不是一个一劳永逸的工具而是一个需要你稍加规划和偶尔维护的系统。投入一点点时间设置它并养成好的使用习惯回报将是长期、持续的高效与清晰。我的体验是自从用了这套系统我再也没有对Claude说过“你还记得我们之前讨论过的XXX吗”因为相关的记忆总能在需要的时候恰到好处地出现在对话的上下文里。这种顺畅感才是人机协作应该有的样子。

相关新闻

YOLO-EMAC:基于深度学习的PCB缺陷检测模型优化与工程实践

YOLO-EMAC:基于深度学习的PCB缺陷检测模型优化与工程实践

1. 项目概述:当YOLO遇上PCB缺陷检测在电子制造业,尤其是PCB(印制电路板)的生产线上,缺陷检测是保证产品质量的关键环节。传统的检测方式依赖人工目检或基于固定规则的机器视觉,不仅效率低下,且容…

2026/10/15 7:00:35 阅读更多 →
RAG文本分块策略:从基础原理到LangChain/LlamaIndex实战

RAG文本分块策略:从基础原理到LangChain/LlamaIndex实战

1. 从“切豆腐”到“切文本”:为什么分块是RAG的命门 如果你最近在折腾RAG(检索增强生成),想把一堆文档喂给大模型,让它能精准地回答你的问题,那你大概率已经踩过“分块”这个坑了。你可能试过把一篇PDF按固…

2026/10/5 10:13:18 阅读更多 →
医疗RAG系统设计:为何effectivePeriod比自由文本更可靠?

医疗RAG系统设计:为何effectivePeriod比自由文本更可靠?

1. 从一次真实的临床对话说起:为什么“还在吃吗”是个难题“现在还在吃吗?”这可能是医生在诊室里最常问的问题之一,尤其是在面对慢性病患者时。患者可能患有高血压、糖尿病,需要长期服药。医生打开电子健康记录(EHR&a…

2026/10/5 4:38:11 阅读更多 →

最新新闻

Django 5模型层数据库连接实战:从配置到迁移再到ORM优化

Django 5模型层数据库连接实战:从配置到迁移再到ORM优化

Django 5 发布之后,我把手头一个模拟项目从 4.x 升级到了 5.x,前后折腾最久的地方,不是新特性研究,反而是最不起眼的“模型层连接数据库”这一环。很多人觉得连数据库不就是填个配置吗?等真开工就会发现,驱…

2026/10/15 6:59:51 阅读更多 →
天鹰优化算法AO实现多无人机三维协同避障路径规划

天鹰优化算法AO实现多无人机三维协同避障路径规划

1. 从"能飞"到"飞得聪明":多无人机三维路径规划到底难在哪多无人机协同集群避障路径规划,说白了就是让一群无人机从各自的起点出发,在充满山峰、雷达威胁区和禁飞区的三维空间里,找到一条既安全又省油、还能按…

2026/10/15 6:59:51 阅读更多 →
无铜点击化学荧光探针:生物标记技术新突破

无铜点击化学荧光探针:生物标记技术新突破

1. 项目概述:绿色荧光探针的技术突破在生物标记和分子检测领域,荧光探针就像黑夜中的信号灯,能够精准标记目标分子并发出光学信号。传统铜催化点击化学(CuAAC)虽然应用广泛,但铜离子容易导致荧光淬灭&#…

2026/10/15 6:59:51 阅读更多 →
测试工程师数据库操作实战指南:从SELECT到事务与性能排查

测试工程师数据库操作实战指南:从SELECT到事务与性能排查

作为测试工程师,你日常的工作流里有一个绕不开的坎:不管是功能测试、接口测试还是自动化脚本,跑完用例之后总要回到数据库里查一笔数据、改一个状态、造一条测试记录。我见过太多测试同行的日常状态是——业务逻辑和用例设计都很熟练&#xf…

2026/10/15 6:59:51 阅读更多 →
多模态大模型对齐幻觉:检测、缓解与工程实践指南

多模态大模型对齐幻觉:检测、缓解与工程实践指南

1. 从“对齐幻觉”说起:多模态大模型的一个隐蔽陷阱第一次看到“对齐幻觉”这个词,我脑子里蹦出来的不是学术定义,而是一个特别具体的画面:你给一个多模态大模型看一张图,图里是一只猫趴在键盘上,然后问它“…

2026/10/15 6:59:51 阅读更多 →
Windows本地部署SAM3:从环境配置到图像分割Demo全流程实战

Windows本地部署SAM3:从环境配置到图像分割Demo全流程实战

聊一个最近折腾完的活儿:在Windows系统上把SAM3本地部署起来,跑通了一个图像分割demo。如果你对“点一下就把图上物体抠出来”这种能力感兴趣,又不想把图片传到任何在线平台,这篇文章应该正好合适。这里的SAM3,指的是第…

2026/10/15 6:58:51 阅读更多 →

日新闻

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 阅读更多 →