Mem0实践:给大模型装上海马体,实现AI长期记忆与个性化对话

1. 项目概述

1.1 这个项目是做什么的

“Mem0:给 AI 加上长期记忆”,光看标题就很有意思——它解决的是一个让所有搞 AI 应用的人都头疼的问题:大模型记不住事儿。

用过 ChatGPT 的朋友都知道,你上午跟它聊完项目方案,下午再打开新会话,它就把你忘得一干二净。这不是某个模型笨,而是现在的 LLM 本质上就是个“无状态”的计算引擎:你来一个 prompt,它给你一个 response,中间不保留任何对话上下文——除非你手动把历史消息全部塞进输入框。

而 Mem0 做的事情,通俗点说,就是给大模型装一个“长期记忆库”。它不再依赖对话窗口里那几千个 token 的临时上下文,而是把重要的信息抽取出来、结构化存储、再在合适的时候自动检索回来,让 AI 真正“记得住”用户偏好、历史决策、项目状态,甚至几个月前的某句话。

这套东西适合谁?两类人,第一类是正在做 AI 应用的开发者——比如你做客服机器人、Copilot、Agent、AI 助手,你肯定遇到过“模型失忆”的痛点;第二类是关注 AI 工程化落地的产品和技术负责人,想搞清楚“记忆”这个抽象概念到底怎么变成可落地的系统设计。搞明白 Mem0 的思路,你就能给自己的项目设计出一套靠谱的“记忆方案”,不一定要用这个库本身,但它的设计思路非常值得借鉴。

1.2 核心需求与背景分析

先说一个基本事实:所有基于 LLM 的应用,本质上都在做“对话”或者“任务执行”,但对话本身是碎片化的。用户不会每次把背景信息完整说一遍,比如“我之前提过我们公司是做跨境电商的,主要走欧美市场”,这种信息消失了,AI 的回答质量就断崖式下跌。

现在主流的解决思路主要有几种:

  • 微调(Fine-tuning):把特定知识固化进权重,但成本高、更新慢,不适合个性化记忆这种动态数据
  • RAG(检索增强生成):把文档切块存向量库,按相关性检索,但它是“知识检索”,不是“对话记忆”,存不了用户偏好
  • 上下文窗口硬撑:把全部历史消息都塞进去,短会话还行,长了就爆 token、费用爆炸、越久越慢
  • 多轮摘要:每次把之前的对话摘要压进新的上下文,但摘要过程会丢细节,session 一多照样失效

Mem0 的思路跟上面这些都不一样。它把“记忆”当成一个独立的数据产品来做——不是临时拼接上下文,而是一个专门的存储、更新、检索层,跑在 LLM 和业务逻辑之间。它会自动判断“这段对话里有没有值得记住的信息”,然后抽取成结构化的记忆条目,持久化存储下来;等下次对话需要用到的时候,再跟当前输入一起检索回来,喂给模型。

这本质上是在做一个“AI 的外挂海马体”。

1.3 设计亮点速览

Mem0 的核心设计在我看来有几个很聪明的点:

  • 抽取式记忆:不存原始对话全文,而是提取成精简的结构化条目,避免冗余
  • 分级存储:短期记忆(最近的互动)和长期记忆(跨会话保持)分开放,符合人类记忆的规律
  • 可更新可删除:记忆不是一成不变的,用户纠正或信息过期时,系统会自动更新旧的记忆条目,而不是一股脑堆进去
  • 与业务数据对齐:每条记忆都关联到用户、AI 代理或会话,方便按主体隔离
  • 检索注入:当用户新问题时,先查记忆,再把相关记忆作为上下文附加到大模型的输入中

这套设计兼顾了存储效率、检索精准度和模型输入的经济性,实用性很强。

2. 核心设计思路与技术原理

2.1 为什么“长期记忆”这么难

要真正理解 Mem0,得先搞清楚问题为什么难。

大模型本身是无状态的推理引擎。你给它一段文字,它根据训练出来的权重分布预测最可能的回复,仅此而已。它没有“昨天聊过什么”的概念,因为推理时根本没有昨天的任何状态保留下来。

有人会说:那把历史记录存下来,下次一起发过去不就行了吗?确实,这是最朴素的做法,也是很多初学者的第一反应。但这样做有两个硬伤:

第一,上下文窗口有限。Claude 的上下文有 200K token,看起来很大,但真实业务场景里,一个重度用户的会话历史可以轻松超过这个量级,更不用说多用户、多 Session 的场景。token 一旦超限,要么截断,要么报错。

第二,费用和延迟。每次把全部历史发一遍,意味着每次对话的 token 消耗都在线性增长。企业级应用一个月下来,光 token 成本就是天文数字,延迟也会越来越明显。

第三,噪声问题。历史记录里到处都是“嗯嗯”“好的”“谢谢”这样的废话,直接把原文全量塞回去,检索效率极低,还可能干扰模型对当前意图的判断。

所以“长期记忆”本质上是一个信息管理问题:怎么在有限的预算和延迟下,保留最有价值的信息,并在正确的时间回传给模型。

2.2 抽取、存储、更新、检索四步闭环

Mem0 的工作流程可以概括为“提取-存储-更新-检索”四个环节,我拆开讲:

第一步:提取(Extraction)

每次对话结束(或者在一个合适的时间点),Mem0 会把对话内容发给 LLM,让模型判断:这段对话里有没有值得记住的事实?比如:

  • 用户说“我叫张三,在某某公司做后端开发”——这是身份信息,值得记
  • 用户说“这个方案我有三个顾虑,第一成本太高……”——这是决策偏好,值得记
  • 用户说“今天天气真不错”——这是闲聊,不值得记

这个判断是由一次专门的 LLM 调用完成的,输出是结构化的 JSON,每条记忆包含主体(user/agent/session)、内容、重要度等信息。这一步看似简单,但 prompt 的设计很讲究,后面我会给一套可参考的提示词。

第二步:存储(Storage)

提取出的记忆条目被写入存储层。Mem0 的架构里存储层是可插拔的,技术上支持向量数据库(存储嵌入向量用于语义检索,比如 Qdrant)也可以与图数据库结合(存储实体关系和时间上下文,比如 Neo4j),默认情况下用向量存储。

每条记忆不仅有文本内容,还带了元数据——属于哪个用户、创建时间、更新时间、当前状态(如 scored 等)。这里的核心是维度管理:按用户隔离记忆,避免串号,这是做多租户 AI 应用的基本功。

第三步:更新(Merge & Update)

这是 Mem0 区别于大多数“对话历史存储”方案的分水岭。当新记忆要写入时,系统不是简单地追加,而是先做相似度匹配,看这条新记忆跟现有的哪条(或哪几条)相关:

  • 如果相关度极高,且存在冲突,则更新旧记忆(用户的偏好变了)
  • 如果相关度中等,则合并进旧条目,丰富上下文细节
  • 如果相关度低,则作为全新的记忆条目存入

这一步确保了记忆库是“活的”,会跟着用户变化而演进,而不是堆满过期垃圾。从上图可以看到,旧的记忆会被新记忆覆盖更新,同时记忆条目的状态也会不断进化,从 need_confirmation 到 active 等状态。

第四步:检索(Retrieval)

当用户发起新对话时,Mem0 把当前输入和用户ID作为查询条件,在记忆库中做语义检索,找出最相关的若干条记忆,将它们作为额外上下文注入到大模型的系统提示词或对话历史中。

检索策略上,Mem0 同时支持向量相似性和时间衰减加权,也就是说不仅考虑“语义像不像”,还会适当给最近的记忆更高权重。这很合理,人类的记忆也是越近的事越容易想起。

2.3 实操笔记:从设计到代码

以 Python 为例,你可以在项目里快速接入:

from mem0 import Memory # 1. 初始化记忆模块,这里默认使用 Qdrant 做向量存储 m = Memory.from_config({"vector_store": {"provider": "qdrant", "config": {"host": "localhost", "port": 6333}}}) # 2. 提取并存储一条记忆 result = m.add("我喜欢用 Python 做数据分析,最近在学 SQL", user_id="alice") print(result) # 输出抽取出来的记忆条目 JSON # 3. 检索相关记忆 search_result = m.search("我平时用什么工具分析数据?", user_id="alice") # 返回与问题相关的历史记忆 # 4. 根据用户的新输入更新已有记忆(部分 API 版本接口略有差异) m.update("我现在主要用 SQL 做数据分析,Python 用得少了", user_id="alice")

注意:不同版本 API 可能存在细微差异,建议以你当前使用版本为准查看对应文档。核心的架构思想是一致的。

这样一个简单的步骤,就实现了“记住用户偏好 → 下次对话自动想起”的能力。你不需要手工管理上下文,记忆模块自己完成提取、存储、更新和检索的全流程。

3. 实操过程与核心环节

3.1 环境准备与会话建立

在项目里实测 Mem0 需要一个基本环境,我这里记录一套完整流程。

第一步:安装所需依赖

pip install "mem0ai[qdrant]" openai

这里我选了 Qdrant 做向量库,因为它在 Docker 里跑得很轻,适合本地实验。如果你用 Chroma、FAISS 或者 PGVector,安装方式类似,核心代码不用改。

第二步:启动向量库

我直接用 Docker 起一个 Qdrant 单机实例:

docker run -p 6333:6333 -p 6334:6334 \ -v $(pwd)/qdrant_storage:/qdrant/storage \ qdrant/qdrant

注意这里把数据持久化到本地目录,否则容器一重启记忆就全丢了,那还谈什么“长期记忆”。

第三步:初始化记忆模块

from mem0 import Memory config = { "llm": { "provider": "openai", "config": { "model": "gpt-4o-mini", "temperature": 0.1 # 抽取任务要低温度,保证稳定输出 } }, "vector_store": { "provider": "qdrant", "config": { "host": "localhost", "port": 6333 } } } m = Memory.from_config(config)

第四步:写入几条记忆并检索

m.add("我在负责公司的一个电商平台,主要市场是北美", user_id="u_101") m.add("我们的客单价大概在 80 美元左右", user_id="u_101") m.add("用户经常抱怨物流太慢,我等下得催一下物流部门", user_id="u_101") # 模拟用户再次提问 result = m.search("跨境电商方面,我最关心什么问题?", user_id="u_101") print(result)

我第一次跑这个实验的时候,比较意外的是它能把“催物流”这种临时任务也作为记忆存下来,并且检索时能提到“用户当前最关心物流问题”。当然,这种短期动态信息是否会污染长期记忆,是值得在实际产品中调优的点,后面我会单独聊一聊。

3.2 逐步实现:配置深度解析

上面的流程能跑通,但如果你想把它用到正式项目里,有几个地方值得花时间调:

LLM 选择

  • 抽取任务选便宜且响应快的模型即可,比如 gpt-4o-mini 或本地部署的 Qwen2.5-7B,不需要用最强旗舰模型
  • 温度调到 0 到 0.2 之间,减少抽取结果的随机性,这步很重要——如果你不调,模型有一点概率会抽取奇怪的信息出来
  • 不同 LLM provider 只需要修改 config 中的 provider 字段,Mem0 对 OpenAI、Claude、Gemini、Ollama 都有适配

向量数据库选型

从实测体验出发,我给出一个简单的选型表:

向量库优点适合场景缺点
QdrantRust 写的,性能好,Docker 部署简单中小型生产项目单机模式下高可用内存受限
Chroma零配置,pip 装完就能用实验、Demo生产不够稳
FAISS元老级,Meta 出品,检索快本地批量检索动态增删弱一点
PGVector基于 PostgreSQL,事务强已有 PG 体系的公司向量检索性能有上限

Embedding 模型

默认会跟随选用的 LLM provider 方案,但你完全可以自己指定 embedding 模型。比如本地用 bge-m3 或者 text-embedding-3-small。决定检索效果好坏的一半因素在 embedding 模型上,值得花时间选个适合你领域的模型。

3.3 核心调优:让她更懂你

每天处理大量记忆条目之后,你需要关注几个指标:

  • 保存率:对话中到底有多少比例被保存成记忆(太低说明抽取阈值过严,太高说明存了太多噪声)
  • 检索命中率:用户提问时,检索到的记忆里有多少是与当前问题真正相关
  • 更新准确率:新旧记忆冲突时,系统是否能正确判断该覆盖还是保留,这个直接影响用户信任度

我比较建议用“短会话 + 多次对话”的方式做测试,也就是模拟一个用户,连续五轮对话后,隔一天再问,看系统能回忆多少关键信息。我自己在测试中比较直观的感受是:提取质量对最终效果有明显影响。如果抽取 prompt 不调,模型的“保存欲”会很强,连“用户说今天吃了碗拉面”都存成记忆,那就是信息灾难。

为了控制抽取质量,Mem0 的配置里其实可以调整记忆提取频率和阈值。如果你需要更强的控制力,可以绕开默认的自动提取,自己在业务层判断“这段对话是否有保存价值”,再调用 add 方法存入——这适合对记忆纯度要求较高的产品。

3.4 实测效果与使用体验

我自己用 Mem0 搭了一个“个人 AI 助手”的 Demo,核心逻辑是让助手记住我的技术栈偏好、项目进度和工作节奏。连续聊了三天,每天十几轮,之后我从零重启服务,再问“我们规划的下一步是什么”,它准确说出了我在三天前定的一个重要决策,这确实比“每次塞一堆历史记录”的方案要舒服。

另外一点体验优势是 token 成本。传统全量历史方案,同一话题聊到第 10 轮时,历史 token 已经 2 万多了;而 Mem0 模式下,每次只检索 3~5 条记忆(约 500~1000 token),加上当前对话内容,总 token 能控制在一个很低的水平。对于 token 计费敏感的商业项目,这是一个不小的优势。

不过它也有短板:如果用户在一个 Session 内快速连续聊了几十个话题,记忆的“新鲜度”和“覆盖度”之间需要平衡。Mem0 默认的相似度合并策略倾向于保留新信息、覆盖旧信息,但在某些场景下旧信息很快被新信息“挤掉”,导致用户早期表达的偏好丢失。使用的时候要留意这个问题,必要时调整 update 策略参数或在业务层做保留保护。

4. 高级玩法与扩展

4.1 Agent 专属记忆

最近 Agent(智能体)的数量呈现井喷式增长,一个 Agent 要真正用起来,“记忆”就是门槛。没有一个跨会话状态,Agent 每次对话都得重启数据,所有计划和上下文都丢失。

Mem0 对此提供了 AI Agent 层级的记忆管理,也就是把存储主体从 user 换成 agent。这在实现多个 Agent 协作时有明确的隔离优势。每个 Agent 有各自的记忆空间,不会相互污染。

更实用的用法是给 Agent 添加“工具调用记忆”。比如 Agent 做过数据分析后,把数据结论存在记忆中,下次遇到类似问题的时候,它可以直接从记忆里调出历史结论,而不是重新执行一遍工具或调用外部 API。

这对于那些“Tool Calling”为重的 Agent 使用场景效果明显。

4.2 结合 RAG 使用

把 Mem0 和 RAG 一起用,是一条正确的架构路线。

RAG 管的是“说明书、文档、知识库”,属于公司的通用知识;Mem0 管的是“用户、会话、Agent 的个人状态”,属于个性化记忆。两者结合之后:

  • RAG 负责给大模型提供“世界知识”(产品规格、政策法规、内部文档)
  • Mem0 负责给大模型提供“用户上下文”(偏好、历史行为、关系球)

在电商客服机器人里,用户可以同时挂两个检索模块:先把用户的问题拿去 RAG 里查知识库,再把用户ID 拿去 Mem0 里查历史偏好,两者各自返回 top-k 结果,拼进系统提示词。这样既保证了回答基于最新资料,又带上了用户个性化的上下文,效果有显著提升。

4.3 多模态扩展

记忆不该只停留在文本上。用户上传的图片、语音片段,同样包含大量有价值的记忆信息。

Mem0 的设计也在向多模态方向扩展——比如做一个会议记录机器人,它可以把开会时的语音转成文本后存入记忆,也可以把白板照片上的内容抽成文字,形成“视觉记忆”。文本记忆管关系,多模态记忆管“线索”。比起硬把图片塞进向量库,核心在于“提取关键信息转成结构化条目”,这样才不会让存储膨胀。

5. 问题排查与踩坑实录

5.1 常见问题速查

这里把我实际用下来碰到的问题整理成一个速查表,如果你也遇到下面这些情况,可以直接对号入座:

现象可能原因解决办法
检索出的记忆跟问题无关embedding 模型维度低或领域差距大换更强的 embedding 模型,或尝试给记忆条目补充关键词
记忆库里垃圾太多抽取阈值太低,模型把闲聊也存了调低保存频率,或在业务代码里手动过滤后再调用 add
用户纠正后旧记忆没更新相似度阈值不合适,新记忆没匹配到旧记忆调整 update 相关配置,或手动指定 memory_id 进行更新
多用户数据互相串user_id 没有正确传入每次调用 add/search 都显式传入 user_id
Docker 重启后记忆全丢没有挂载磁盘卷用 -v 参数把 qdrant 存储目录映射到宿主机

5.2 排查流程实录

遇到“记忆检索不准”类问题,我一般按照这样的顺序排查:

  1. 先确认记忆是否写对。在向量库后台里查一下最近新增的记录,看抽取出来的内容是不是用户本意。如果连写入都错了,检索必然不准
  2. 再确认 embedding 是否合理。试几个典型的用户问题,跟记忆库里的人工标注答案做相似度排序,看 top3 里是否真的有正确结果
  3. 如果 top1 不准,但 top3 里出现了正确答案——说明阈值问题或者排序策略问题,可以调 retrieval 参数,看看是否能通过调整 top_k 或阈值改善
  4. 如果 top3 完全没有正确答案——说明这个用户问题方向跟存储的内容根本不相关,得回过去看记忆抽取环节是不是漏了关键信息

这套思路适用于大多数记忆系统,不只是 Mem0。你把它当“排查方法论”记下来,以后换东家做类似系统也能用上。

5.3 避坑经验分享

有几个坑值得单独记一下:

坑一:过度依赖默认提示词

Mem0 自带了一套不错的 prompt,但这不意味着它适配你的业务。我强烈建议你在项目里把自己领域的 few-shot 示例加进记忆抽取的 prompt 里。比如你是做心理咨询 AI 的,就要让模型特别关注用户的情绪状态和亲密关系这类信息,而这些通用 prompt 可能不会优先提取。

坑二:把记忆当聊天记录全文存

有个朋友刚上手时把完整对话历史全塞进 Mem0 当记忆条目,一天后数据库膨胀了几万条,检索速度直线下降。记忆不是全文存档,而是“信息密度最高的少量事实集合”。每条记忆最好控制在 100 字以下,重点突出。

坑三:忘记处理用户隐私

记忆会自动保存用户个人信息,这在真实产品中涉及数据合规问题。用户删除账号后,必须同步删除该用户所有记忆条目。Mem0 提供了 delete(user_id=xx) 方法,一定记得在注销流程里调用。别问我为什么强调这个,等你收到合规那边的邮件就懂了。

坑四:在正式环境里用默认配置

默认配置全跑在本地,没有配置持久化和高可用。生产环境至少要考虑:向量库集群化部署、LLM 调用限流与重试、记忆写入异步队列。Mem0 在这种场景下需要你做一定的架构加持,不是开箱即做到生产级。

6. 更多可能性与经验总结

6.1 跨平台集成

Mem0 的 API 暴露得很干净,你可以在任何有 HTTP 请求能力的地方使用它。我见过有人把它接在微信机器人上,也有人把它接到 Slack、Discord 机器人上,或者作为企业内部知识助手的状态后端。

它的价值在于:让每一段对话都能“留下点东西”。只要是文本交互,都可以流进记忆系统,过一段时间,你相当于给 AI 应用攒了一个用户画像库、决策库和偏好库。

这个积累下来的“行为资产”往往比单个模型本身的智商更值钱。

6.2 记忆驱动的产品设计

说到这,我想聊一个更宽泛的话题:当 AI 有了记忆,产品交互方式会怎么变化?

以前做 AI 产品,默认假设是“每次对话都是第一次”,所以你必须把背景信息说清楚。这导致 AI 回答平庸、重复、没有成长。有了长期记忆之后,产品可以做很多以前做不到的事:

  • 老用户回家不用重新自我介绍(“欢迎回来,上次你提到……”
  • 推荐算法能结合用户的历史决策逻辑,而不仅仅是行为数据
  • AI 助手能主动提醒“距离你上次检查服务器已经三周了,要不要现在看看?”
  • Agent 能顺着上次的计划继续推进,而不是每次都从零开始

这些场景的共同点:产品开始“更懂用户”。而“懂”的前提,就是记忆。

6.3 个人的实操心得

我在自己的项目里用下来的一个体会是:记忆系统最难的既不是存储也不是检索,而是“如何在时机上平衡”。你要在用户交互最自然的时候提取记忆,在用户提问最关键的时候注入记忆。晚一点都不行,早一步又会显得突兀。

另外一个经验是:记忆的“不确定性”必须暴露给产品层。系统说“这个用户之前提过他对价格很敏感”,这个判断有 80% 的置信度吗?还是只有 50%?我觉得产品层面如果能把这种不确定性可视化,或者让 AI 在低置信度时主动反问用户,用户体验会比“系统闷头猜测”好很多。

这个方向目前还没有标准答案,但我想它会成为下一代 AI 产品差异化竞争的一个关键点。

说到底,Mem0 不只是给你一个“记忆库”,它给了你一套关于“AI 如何更懂人”的设计范式。无论你是在做的客服机器人、AI 助手,还是 Copilot、Agent,你都需要认真想一想:你这个系统的“记忆”到底由谁来管?怎么管?管多久?

把这个问题想透,你的 AI 应用可能就真正开始“活”了。

我最后的建议是:不要一上来就追求大而全的记忆系统。先在你的业务里跑通一个最小闭环——把用户最常问的几类事实记住,下次对话自动复用,验证效果后再逐步扩展。记忆这个东西,不在于存得多,而在于在关键时刻“恰好记起”的那一条。

相关新闻

Matlab/Simulink下的5MW海上永磁直驱风电并网仿真全解析

Matlab/Simulink下的5MW海上永磁直驱风电并网仿真全解析

看到“Matlab/Simulink 平台—5MW海上永磁风电直驱1200V风电并网”这个标题,估计不少做风电仿真的人第一反应是“又一套毕业设计模型”。但说实话,把“5MW海上直驱”和“1200V直流母线”这两个数字摆在一起,再配上真实风速时序数据去跑并网&a…

2026/10/20 6:43:40 阅读更多 →
学生党云GPU训练全攻略:从SSH连接到省钱实战

学生党云GPU训练全攻略:从SSH连接到省钱实战

最近好几个朋友都跑来跟我吐槽:实验室的卡只有6G显存,跑个预训练语言模型都要看它脸色,再往上做点生成式模型的微调,内存和显存直接爆掉。学生党想认真做深度学习模型训练,最现实的路径还真不是攒钱买卡,而…

2026/10/20 6:43:40 阅读更多 →
I2S输出场景通话回音排查指南:AEC参考路径与增益调试实战

I2S输出场景通话回音排查指南:AEC参考路径与增益调试实战

先说一个我自己调试时经常遇到的场景:在杰理平台做蓝牙音箱、车载免提这类项目时,音频通路为了接外置D类功放或者独立Codec,会习惯性地把音源输出配置成I2S输出。音乐和提示音一切正常,但只要一进入通话,对方马上反馈听…

2026/10/20 6:43:40 阅读更多 →

最新新闻

Abaqus隧道空洞模拟:地表沉降有限元分析建模方法与工程应用

Abaqus隧道空洞模拟:地表沉降有限元分析建模方法与工程应用

从实际项目出发,我接到过一个很有意思的模拟任务:用Abaqus分析隧道施工中形成的空洞对地表沉降的影响规律。这类问题在岩土工程里特别典型——城市地下管线破损、盾构注浆不密实、矿山采空区塌落,都会在地层内部留下空洞,而地表沉…

2026/10/20 7:38:07 阅读更多 →
轻量级Coding Agent设计:如何通过架构减法节省58.7% Token

轻量级Coding Agent设计:如何通过架构减法节省58.7% Token

1. 项目概述:一个轻量级 Coding Agent 的诞生逻辑“我做了一个 Coding Agent,结果比 Claude Code 少用了 58.7% Token”——这句话刚在技术社区刷屏时,我第一反应不是惊讶,而是立刻点开原文代码仓库,翻看它的 prompt 结…

2026/10/20 7:38:07 阅读更多 →
用APIKit与Param Miner挖掘隐藏API端点:Burp Suite主动探测实战指南

用APIKit与Param Miner挖掘隐藏API端点:Burp Suite主动探测实战指南

先问个扎心的问题:做接口测试或者安全评估的时候,你是不是还停留在“开Burp、挂代理、点开HTTP History看请求”这个阶段?如果是,那我要说一句可能不太中听的话——你手里的Burp Suite,至少有一半的潜力被你浪费了。经…

2026/10/20 7:38:07 阅读更多 →
MIL-C-5015军规连接器振动加速度传感器:选型安装与排查

MIL-C-5015军规连接器振动加速度传感器:选型安装与排查

干设备状态监测好些年,有一类传感器是小众但特别关键的——带军规连接器的振动加速度传感器。光看名字“MIL-C-5015振动加速度传感器5/8-24UNF军标连接器”就够劝退了,但如果你在航空发动机试车台、燃气轮机厂房、重型机械现场转过一圈,一定会…

2026/10/20 7:38:07 阅读更多 →
杰理平台time PWM实战:定时器比较输出的配置与踩坑指南

杰理平台time PWM实战:定时器比较输出的配置与踩坑指南

前阵子帮朋友调一块杰理平台的小板子,现象很蹊跷:按键控制LED亮度时,IO口确实有电平变化,但用示波器一看,波形完全不是PWM该有的样子,反而是一串不规则的脉冲,频率还飘。翻遍SDK里的例程&#x…

2026/10/20 7:38:07 阅读更多 →
纯.NET自绘打印模板设计器:拖拽式可视化与动态渲染

纯.NET自绘打印模板设计器:拖拽式可视化与动态渲染

简介:这是一套面向.NET开发者的C#可视化打印模板设计源码,纯.NET实现、不依赖任何第三方控件,适合需要为发票、报告、证书、标签及单据类业务快速搭建打印能力的初中级工程师。资源提供模板编辑器、图形设计工具与布局管理器等组件&#xff0…

2026/10/20 7:37:06 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

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

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

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

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

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

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 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/19 2:54:50 阅读更多 →
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/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →