news 2026/10/28 9:23:43

AgentMoCo:面向长视界智能体的动量对比记忆优化框架

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AgentMoCo:面向长视界智能体的动量对比记忆优化框架

AgentMoCo:面向长视界智能体的动量对比记忆优化框架

原文网页:https://arxiv.org/html/2610.31355v1
PDF链接:https://arxiv.org/pdf/2610.31355v1
arXiv编号:arXiv:2610.31355v1 [cs.AI]

摘要
长视界工具调用智能体在执行上百步复杂任务时,普遍面临记忆退化问题:随着交互步数增加,早期关键信息被稀释,智能体容易遗忘历史约束、重要证据与失败教训。现有记忆方案大多聚焦记忆检索召回,缺少针对记忆表征本身的对比学习优化;简单直接套用通用MoCo动量对比会破坏智能体轨迹时序因果结构,造成负样本构造不合理。
本文提出Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo动量对比记忆优化框架,面向长视界智能体轨迹做记忆表征学习。设计时序感知的正负样本采样策略,严格尊重智能体轨迹因果时序约束,规避跨时间步的因果泄露;构建双记忆编码器架构:在线编码器处理当前交互,动量编码器维护历史轨迹的动量表征,动量队列存储历史时序感知样本。在训练阶段,将动量对比损失附加到原始智能体训练损失之上,联合优化智能体策略与记忆表征。
在WebArena、OSWorld、ToolBench三套长视界智能体基准开展实验。Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo相比基线方案,任务整体成功率提升4.4(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)7.6个百分点;超过SFT、ReAct、原生MoCo对比记忆、摘要记忆、向量检索记忆等多种基线。长序列子集(>30步)增益更加显著,提升可达9.3个百分点。消融实验验证时序感知采样策略、动量双编码器、动量队列各模块贡献。全部代码、轨迹数据集、复现脚本开源。

关键词
长视界智能体;智能体记忆;动量对比学习;Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo;表征学习;轨迹时序约束;工具调用智能体

目录

  1. [引言](#1(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)引言)
  2. [相关工作](#2(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)相关工作)
  3. Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo方法框架](#3(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)moco方法框架)
    • [3.1 问题形式化](#31(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)问题形式化)
    • [3.2 时序感知正负样本采样策略](#32(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)时序感知正负样本采样策略)
    • [3.3 双记忆编码器与动量队列](#33(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)双记忆编码器与动量队列)
    • [3.4 联合损失函数](#34(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)联合损失函数)
  4. [实验设置](#4(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)实验设置)
  5. [实验结果](#5(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)实验结果)
    • [5.1 主实验整体性能](#51(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)主实验整体性能)
    • [5.2 长序列子集专项结果](#52(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)长序列子集专项结果)
    • [5.3 消融实验](#53(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)消融实验)
  6. [讨论与局限性](#6(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)讨论与局限性)
  7. [结论](#7(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)结论)
  8. 附录简要说明

1 引言

长视界工具调用智能体需要完成几十至上百步的交互任务,例如网页复杂操作、多轮数据库查询、多工具链式调用。随着交互步数增长,早期关键证据、约束条件、历史失败经验会被后续大量观测稀释,出现记忆退化现象:智能体遗忘早期关键信息,重复犯历史错误、忽略任务约束,造成任务失败。

现有智能体记忆研究主要分为三类:

  1. 文本摘要记忆:对历史交互做文本摘要压缩;但摘要会丢失细粒度事实细节;
  2. 向量检索记忆:将历史步骤编码为向量,查询时做相似度检索;依赖表征质量,缺少专门针对智能体轨迹的表征优化;
  3. 对比学习记忆:直接复用通用MoCo动量对比,但通用MoCo随机采样负样本,会破坏智能体轨迹时序因果,出现因果泄露——把未来步骤当作当前步骤的负样本,违背智能体轨迹的时间因果关系,引入不合理训练信号。

通用MoCo不适合直接迁移至智能体轨迹:智能体轨迹具备强时序因果依赖,后续动作建立在前面观测基础之上,不能任意打乱时序做样本对构造。
本文提出Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo动量对比记忆优化框架。

  1. 时序感知正负样本采样:严格遵守轨迹因果时序,同一条轨迹内,只能使用更早时间步作为负样本,禁止把未来时刻状态拿来构造样本,规避因果泄露;跨轨迹可以选取其它任务轨迹样本。
  2. 双记忆编码器架构:在线编码器编码当前交互记忆片段;动量编码器做动量更新,维护历史表征;动量队列存放时序感知采样得到的历史记忆表征。
  3. 动量对比损失和智能体原始训练损失联合优化,同时优化策略输出与记忆表征质量,不需要改动智能体推理时检索逻辑。

本文主要贡献

  1. 提出Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo面向长视界智能体的动量对比记忆优化框架;设计时序感知采样策略,避免轨迹因果泄露,适配智能体交互轨迹时序约束。
  2. 双记忆编码器+动量队列架构;对比损失与原始智能体损失联合训练,同步优化策略与记忆表征。
  3. 在WebArena、OSWorld、ToolBench基准上实验,整体任务成功率提升4.4(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)7.6pp;大于30步的长序列子集增益最高可达9.3pp;消融验证各模块有效性。
  4. 开源全套代码、AgentMoCo(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Traj轨迹数据集、训练与复现脚本。

2 相关工作

2.1 智能体记忆机制

  • 显式文本记忆:摘要、压缩、结构化知识库,依靠文本保存历史,压缩会丢失细节;
  • 向量记忆库:将每一步交互编码为向量,使用相似度检索召回历史;表征质量直接决定召回效果;
  • 隐式记忆:前缀向量、LoRA等,将历史编码为隐向量,主模型冻结只训练编码器。

现有向量记忆大多只在推理阶段做检索,不在训练阶段对记忆表征做显式优化。

2.2 对比学习与MoCo

MoCo动量对比学习使用在线(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)动量双编码器、动量队列维护大量负样本,广泛用于CV、NLP表征预训练。
直接迁移到智能体轨迹存在致命缺陷:原始MoCo随机打乱采样,会将同一条轨迹未来时刻样本当作负样本,违背智能体轨迹因果顺序,造成因果泄露,产生错误训练信号。Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo修改采样规则,增加时序因果约束。

2.3 长视界智能体训练

SFT监督微调、GRPO/ReAct强化学习,大多聚焦动作策略优化,对记忆表征本身优化较少;Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo属于辅助损失范式,可以叠加在SFT、RL训练之上。

3 Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo方法框架

3.1 问题形式化

智能体轨迹τ = { ( o 1 , a 1 ) , ( o 2 , a 2 ) , . . . , ( o T , a T ) } \tau=\{(o_1,a_1),(o_2,a_2),...,(o_T,a_T)\}τ={(o1​,a1​),(o2​,a2​),...,(oT​,aT​)},o t o_tot​为观测,a t a_tat​为动作。
记忆片段m t = [ o 1 , a 1 , . . . , o t , a t ] m_t = [o_1,a_1,...,o_t,a_t]mt​=[o1​,a1​,...,ot​,at​],代表截止t tt步全部交互历史。记忆编码器E EE将m t m_tmt​映射为向量表征z t = E ( m t ) ∈ R d \boldsymbol z_t = E(m_t)\in \mathbb R^dzt​=E(mt​)∈Rd。
训练目标:在原始智能体损失L a g e n t \mathcal L_{agent}Lagent​基础上,增加时序感知动量对比损失L m o c o \mathcal L_{moco}Lmoco​,联合优化。

3.2 时序感知正负样本采样策略

核心约束:对于同一条轨迹τ \tauτ,t tt时刻样本,不能取t ′ > t t' > tt′>t未来时间步作为正负样本,只允许取t ′ ≤ t t'\le tt′≤t的历史样本,防止因果泄露。

  1. 正样本:同一轨迹内,时间步t tt的记忆片段m t m_tmt​,经过弱数据增强得到m ~ t \tilde m_tm~t​作为正样本;数据增强:随机删减部分无关文本、段落重排(不破坏时序)。
  2. 负样本来源两类
    • 轨迹内负样本:同一条轨迹,选取t ′ < t t' < tt′<t更早历史记忆片段;
    • 跨轨迹负样本:从其它不同任务的轨迹采样任意记忆片段。

禁止:同轨迹未来时刻t ′ > t t'>tt′>t样本,绝对不能作为负样本。

3.3 双记忆编码器与动量队列

  1. 在线编码器KaTeX parse error: Got function '\(' with no arguments as subscript at position 3: E_\̲(̲\boldsymbol q\):输入当前记忆片段,输出查询表征KaTeX parse error: Can't use function '\(' in math mode at position 13: \boldsymbol \̲(̲\boldsymbol q\);参数会每一步梯度更新。
  2. 动量编码器KaTeX parse error: Got function '\(' with no arguments as subscript at position 3: E_\̲(̲\boldsymbol k\):输出键表征KaTeX parse error: Can't use function '\(' in math mode at position 13: \boldsymbol \̲(̲\boldsymbol k\);参数不直接梯度更新,采用动量滑动平均更新:
    KaTeX parse error: Got function '\(' with no arguments as subscript at position 8: \theta_\̲(̲\boldsymbol k\)…
    m mm为动量系数。
  3. 动量队列Queue:存储大量时序感知采样得到的历史键表征;队列先进先出,维持固定大小;队列内全部样本满足时序约束,不存在同轨迹未来泄露样本。

推理阶段:仅使用在线编码器KaTeX parse error: Got function '\(' with no arguments as subscript at position 3: E_\̲(̲\boldsymbol q\);动量编码器与队列只用于训练阶段损失计算,推理不引入额外开销。

3.4 联合损失函数

总损失为智能体原生损失加上动量对比辅助损失:
L t o t a l = L a g e n t + λ ⋅ L m o c o \mathcal L_{total} = \mathcal L_{agent} + \lambda \cdot \mathcal L_{moco}Ltotal​=Lagent​+λ⋅Lmoco​
λ \lambdaλ:对比损失权重超参数。

动量对比InfoNCE损失:
KaTeX parse error: Can't use function '\(' in math mode at position 48: …xp(\boldsymbol \̲(̲\boldsymbol q\)…
KaTeX parse error: Can't use function '\(' in math mode at position 13: \boldsymbol \̲(̲\boldsymbol k\)…为正样本键表征;KaTeX parse error: Can't use function '\(' in math mode at position 13: \boldsymbol \̲(̲\boldsymbol k\)…为队列内负样本;τ \tauτ温度系数。

L a g e n t \mathcal L_{agent}Lagent​可以是SFT交叉熵损失,也可以是GRPO等强化学习损失;Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo可以作为插件式辅助损失叠加。推理阶段不改动原有智能体逻辑,记忆检索依旧使用向量相似度。

4 实验设置

数据集

训练轨迹来自WebArena、OSWorld、ToolBench;
测试集区分全部样本,以及长序列子集(轨迹步数>30步)。
AgentMoCo(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Traj数据集:整理公开交互轨迹,提供处理好的记忆片段样本。

基座模型

Qwen3(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)8B(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Instruct。

对比基线

  1. Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)SFT:基础监督微调,无额外记忆优化;
  2. Summary(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Mem:文本摘要记忆基线,每N步对历史做摘要;
  3. Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Retrieval(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Mem:向量检索记忆,训练阶段无对比损失,推理做相似度召回;
  4. Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo:原始通用MoCo,随机采样,允许取同轨迹未来样本(存在因果泄露);
  5. Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo(本文):时序感知采样+双编码器+动量队列。

评测指标

  • 整体任务成功率SR;
  • 长序列子集(>30步)任务成功率;
  • 记忆召回指标:top(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)(\boldsymbol k)检索召回率。

消融变体

  • w/o Temporal(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Sample:去掉时序约束,允许未来样本做负样本(等价Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo);
  • w/o Momentum(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Encoder:去掉动量编码器,直接使用在线编码器做键;
  • w/o Momentum(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Queue:不使用队列,仅batch内负样本。

5 实验结果

5.1 主实验整体性能

方法WebArenaOSWorldToolBench平均提升(相对Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)SFT)
Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)SFT43.1%40.4%49.2%(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)
Summary(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Mem45.3%42.2%51.0%+2.0pp
Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Retrieval(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Mem46.0%43.5%52.3%+3.1pp
Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo(原始MoCo)45.7%42.9%51.8%+2.6pp
Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo50.7%47.1%55.4%+5.9pp

Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo相比Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)SFT平均提升5.9个百分点;单数据集提升4.4(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)7.6pp;
Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo通用动量对比因为因果泄露,收益微弱,甚至低于普通检索记忆基线。

5.2 长序列子集专项结果(>30步)

方法WebArena长序列OSWorld长序列ToolBench长序列
Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)SFT29.4%27.2%34.1%
Summary(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Mem31.5%28.8%36.2%
Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Retrieval(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Mem33.1%30.4%37.5%
Vanilla(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo32.6%29.7%36.8%
Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo38.7%36.5%43.4%

在长视界>30步任务上,Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo相对基线最高提升9.3个百分点;长序列场景增益远大于短序列。

5.3 消融实验(三套基准平均成功率)

配置平均任务成功率相对完整Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo下降幅度
完整Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo51.1%(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)
w/o Temporal(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Sample(无时序约束)47.2%(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)3.9pp
w/o Momentum(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Encoder(去掉动量编码器)48.0%(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)3.1pp
w/o Momentum(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Queue(仅batch负样本)48.6%(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)2.5pp

消融结论:

  1. 时序感知采样是最大增益来源;取消时序约束,允许未来样本做负样本,性能大幅下滑,证实因果泄露会带来有害梯度信号;
  2. 动量编码器、动量队列均带来正向收益;队列提供更多负样本,提升对比学习表征质量。

6 讨论与局限性

局限性

  1. Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo属于训练阶段辅助损失,推理阶段不会增加模型能力,只优化记忆表征向量质量;不能完全解决超长上下文窗口本身的上下文窗口硬件限制。
  2. 时序感知采样策略依赖轨迹时间戳;对于乱序、异步事件构成的智能体轨迹,采样策略需要进一步适配。
  3. 超参数λ \lambdaλ对比损失权重需要调优;权重过大,会压倒原始智能体训练损失,损害任务策略性能。
  4. 目前实验基于向量检索式记忆架构;迁移至隐式前缀记忆等其它记忆范式有待进一步验证。

启示

  1. 不能直接把CV/NLP通用对比学习方案直接迁移到智能体轨迹;智能体轨迹具备强时序因果约束,随机采样会造成因果泄露,引入错误训练信号。
  2. Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo作为插件式辅助损失,可以叠加SFT、GRPO等多种训练范式,重点优化记忆表征,显著改善长视界任务表现;长序列任务收益尤其突出。

7 结论

本文提出Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo,面向长视界工具调用智能体的动量对比记忆优化框架。设计时序感知正负样本采样,严格禁止同轨迹未来时间步作为样本,规避因果泄露;采用在线(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)动量双记忆编码器与时序感知动量队列;动量对比损失和智能体原始损失联合训练,优化记忆表征质量。
在WebArena、OSWorld、ToolBench开展实验,Agent(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)MoCo相比基线整体任务成功率提升4.4(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)7.6个百分点;在大于30步长序列子集增益最高达9.3个百分点。消融证实时序感知采样是最关键模块;直接套用原始MoCo会因为因果泄露,收益微弱。全套代码、AgentMoCo(\theta_k \leftarrow m\cdot \theta_k + (1‑m)\cdot \theta_q)Traj轨迹数据集、复现脚本开源。

附录简要说明

  • 附录A:记忆片段构造、时序感知采样完整算法伪代码。
  • 附录B:动量更新、InfoNCE损失完整超参数扫描(λ , τ , m \lambda,\tau,mλ,τ,m)。
  • 附录C:各基线实现细节,摘要生成prompt、检索记忆参数。
  • 附录D:完整细分实验数据表,不同轨迹长度分段统计。
  • 附录E:训练脚本、数据集预处理流程,推理评测配置。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/28 9:23:23

智能运维AIOps核心技术解析与行业实践

1. 智能运维的行业现状与核心价值2008年亚马逊的一次服务器宕机事件&#xff0c;让全球首次意识到传统运维模式的脆弱性——仅31分钟的故障导致公司损失约6600万美元。这个标志性事件直接催生了智能运维&#xff08;AIOps&#xff09;概念的兴起。如今在数字化转型浪潮下&#…

作者头像 李华
网站建设 2026/10/28 9:18:59

LSTM改进卡尔曼滤波:噪声协方差学习与工程落地指南

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

作者头像 李华
网站建设 2026/10/28 9:18:35

I2C硬件与软件实现的五大陷阱与选型决策指南

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

作者头像 李华
网站建设 2026/10/28 9:18:32

STM32F103+OpenMV双芯方案:无接触测温与口罩识别门禁系统

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

作者头像 李华
网站建设 2026/10/28 9:18:23

EtherCAT硬核拆解:从协议原理、寻址机制到从站调试实战

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

作者头像 李华