尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
多智能体系统架构设计实战:从单Agent到协同协作的演进路线
多智能体系统这个词这两年快被聊烂了。学术圈从协同群集运动控制那批理论文献开始早就在研究多个体之间的协作问题而工程圈真正开始讨论多智能体系统的落地架构还是因为大模型让每个智能体都能做出相对靠谱的决策变成了现实。但说实话我见过太多团队在第一个Demo里堆了三五个Agent、让它们互相发消息结果跑起来一团乱麻任务重复执行、上下文互相覆盖、某个Agent把另一个Agent的中间结果当最终答案最后整个系统变成昂贵的聊天室。这篇文章不聊理论只聊架构。我会从多智能体系统到底适合什么场景开始拆到落地时你必须面对的分层设计、协同模式、通信协议、状态管理、可观测性这些工程问题最后给出一条从单Agent平滑迁移到多智能体的务实路线。适合已经在做Agent开发、准备把系统从单兵作战升级到团队协作的工程师和架构师也适合那些还没动手、但想搞清楚多智能体系统架构设计重点的产品和技术负责人。1. 先把概念掰清楚多智能体系统到底是什么1.1 多智能体不等于多个大模型API并行调用很多人的第一反应是多智能体系统不就是同时调用好几个大模型、让它们各自干活嘛。这个理解差得远。多智能体系统的核心不是多个模型而是多个具备自主决策能力的实体通过某种协作机制去完成单个智能体难以独立完成的任务。这里的重点在协作机制不在模型数量。我习惯用一个类比多智能体系统就像一个编辑部。编辑协调者负责把一篇深度报道拆成选题、采访、撰稿、校对、配图几个环节记者研究Agent出去搜集素材撰稿人生成Agent负责行文校对员审查Agent挑错返工摄影师工具Agent负责调用外部API获取图片。每个人只做自己擅长的事通过稿件流转消息通信和共享的选题大纲共享状态来协作。如果只是把五个写手拉进同一个群里让他们各自写一段那不叫编辑部那叫各写各的。多智能体系统具备几个关键特征自主性每个Agent能独立感知环境并做出决策不需要中央指令逐条驱动反应性能对任务结果和其他Agent的消息做出响应社会性它们之间存在消息传递、任务委派、结果协商这些交互行为协作性多个Agent的目标通常服务于同一个上层任务而不是各干各的。这些特征决定了架构设计的复杂度远超单体Agent。1.2 真需要多智能体的场景和不值得用的场景先泼一盆冷水不是所有任务都适合上多智能体。单Agent加工具调用能解决的事硬拆成多智能体只会增加延迟、成本和故障率。适合多智能体系统的场景有这些共同点任务可以被拆成多个独立阶段或子任务子任务之间存在明确的依赖关系子任务需要不同领域的知识或不同的工具能力系统需要引入审查-反馈-修改这种对抗式流程来保证输出质量或者你需要模拟多个角色之间的博弈、讨论、协商过程。比如复杂的行业报告生成、需要多轮测试反馈的代码工程任务、需要多角色评审的内容创作流水线、供应链调度模拟等这些场景多智能体的价值非常明显。不适合的场景恰恰相反单轮问答、简单信息抽取、单一知识领域的生成任务一个Agent加检索和工具调用就能完成得很好。为了显得高级硬拆多智能体你只会得到翻倍的Token消耗和成倍的调试难度。我做架构选型时有一个决策清单判断维度适合多智能体不适合多智能体任务可拆分性能清晰拆成多个子任务且有依赖单体任务拆了就碎知识/技能跨度涉及多个专业领域或多种工具单领域、单工具即可解决质量要求需要多角色审查和反复修订一次生成即可接受协作复杂度需要模拟讨论、博弈、协商直接链路调用就够2. 落地架构的分层设计五个层次决定系统能走多远2.1 五层架构逐层拆解每一层到底管什么多智能体系统的落地架构我习惯用五层模型来看。从下往上分别是基础设施层、通信与调度层、Agent运行时层、记忆与工具层、可观测层。下面这张表是每一层的核心职责和常见选型。层级核心职责常见实现基础设施层模型网关、API负载均衡、算力分配LLM Gateway、模型路由、请求转发通信与调度层Agent间消息传递、任务分发、执行顺序控制消息队列、事件总线、工作流引擎Agent运行时层角色定义、提示词管理、决策循环、工具调用Agent Runtime、Prompt模板、Function Calling记忆与工具层短期/长期记忆、共享状态、技能注册向量库、Redis、PostgreSQL、工具注册表可观测层链路追踪、日志、评估指标、成本核算OpenTelemetry、Langfuse、自定义审计日志这里我重点说说为什么通信与调度层必须独立出来。很多失败的多智能体项目就是直接把Agent之间用Python函数互相调用来实现协作看起来代码简单但一旦Agent数量超过三个调用关系变成网状你根本说不清楚某条消息是如何流转的、卡在哪个环节、重复执行了几次。把通信和调度独立成一层的核心目的是让消息流转路径变成显式的、可审计的这跟你写微服务要把服务注册和网关独立出来是一个道理。2.2 单机进程内架构 vs 分布式微服务式架构很多团队纠结第一个版本要不要上消息队列。我的建议是先区分你的多智能体系统是重协同还是重并行。重协同型系统比如多角色内容创作、多Agent代码协作这类系统的Agent数量通常在个位数每个Agent的工作时长是秒级Agent间交互频繁但整体计算量不大。这种系统用单机进程内的调度器完全够用比如用一个事件循环加任务队列就能撑住。我之前帮一个团队排查过他们用Kafka搭的多智能体系统三个Agent发消息延时30毫秒但系统总耗时却比进程内调度多了好几倍因为每个Agent都在等消息、序列化、反序列化。这里我补充一个经验Agent协同的主要开销通常来自大模型推理本身消息传递的损耗在Agent规模不大时完全可以忽略分布式架构带来的收益十分有限。真正需要上分布式架构的场景是Agent数量达到几十上百个或者不同Agent需要部署在不同机器上访问不同的私有数据源或者某个环节的Agent需要水平扩展扛高并发请求。这时候才引入消息队列、事件总线和独立的调度服务。还要考虑你的Agent是否需要长期运行、是否支持跨进程通信这些需求才是分布式架构的入场券。3. 协同模式选型编排式、自治式还是混合式3.1 三种协同模式的差异与适用边界多智能体系统里最核心的架构决策是Agent之间的协同模式。目前工程上主流的就三种编排式、自治式、混合式。编排式架构也叫中央调度模式系统里有一个明确的 Orchestrator编排者它负责把任务拆解成子任务决定执行顺序把每个子任务分发给对应的Agent然后收集结果、汇聚成最终输出。这种模式的优点是流程可控、逻辑清晰、容易追踪问题特别适合任务流程相对固定的场景比如内容生成流水线、数据处理管道。缺点是编排者容易成为性能瓶颈和单点故障且对任务结构变化的适应性较差。自治式架构也叫对等模式没有中央调度者Agent之间直接通信通过协商、投标、消息传递来推进任务。它的优点是灵活、适应性强特别适合探索性任务和需要多角色碰撞的场景。缺点是极度依赖通信协议的质量容易陷入死循环和发散调试起来非常痛苦。完全自治的多智能体系统在工程上其实很少见因为它违背了可预测性这个工程底线。混合式架构是目前落地最多的形态保留一个轻量级的协调者但协调者不做死板的流程编排而是根据任务动态决定是直接指派某个Agent、还是让多个Agent自由讨论后汇总结果。混合式结合了前两者的优点既保证了主干流程可控又给局部协作留了灵活性。我先给一张选型对照表维度编排式自治式混合式流程可控性高流程显式定义低流程动态涌现中主干可控、分支自治灵活性低变更需改流程高可动态协商中高可根据任务切换调试难度低链路清晰高难复现中需要对局部做额外观测适用场景固定流水线、强流程约束探索型、博弈型任务大多数真实业务系统3.2 编排式架构的核心实现任务循环与分发逻辑编排式架构的实现核心就是一个任务队列 执行循环 结果路由的结构。说直白点它就是一个带优先级和路由规则的任务分发器。先看一段极简的Python实现from dataclasses import dataclass from queue import PriorityQueue dataclass class Task: task_id: str agent_name: str payload: dict priority: int 5 class Orchestrator: def __init__(self): self.task_queue PriorityQueue() self.registry {} # agent_name - agent_instance self.results {} def register_agent(self, name, agent): self.registry[name] agent def submit(self, task): self.task_queue.put((task.priority, task)) def run(self): while not self.task_queue.empty(): _, task self.task_queue.get() agent self.registry.get(task.agent_name) if not agent: print(f[orchestrator] no agent: {task.agent_name}) continue print(f[orchestrator] dispatch {task.task_id} - {task.agent_name}) result agent.execute(task.payload) self.results[task.task_id] result next_tasks agent.route(result) for nt in next_tasks: self.submit(nt)这个例子虽然简单但透露了编排式的几个关键设计点。第一每个Agent执行完任务后要返回下一步任务列表这相当于把流程定义从编排器下沉到了Agent内部让每个Agent只知道自己该把结果传给谁避免编排器维护一张全局状态机。第二用优先级队列控制执行顺序保证关键路径上的任务不会被旁路任务阻塞。第三所有任务的入队和出队都经过编排器天然形成了一条可审计的执行链路。实际落地时队列可以直接用Redis的List或Stream实现编排器可以做成独立服务Agent则通过HTTP或gRPC暴露任务执行接口。这样编排器本身变成了一个无状态的调度服务Agent可以水平扩展但它们的协作流程却被牢牢控制住了。3.3 自治式架构的通信协议消息流转不能只靠喊自治式架构能不能落地几乎完全取决于通信协议的质量。我见过一个团队用自然语言让Agent们自由对话推进任务结果两个Agent就开始互相道歉半小时没干正事。自治式架构里Agent之间的消息必须是结构化的而不是纯文本聊天。我建议至少包含这些字段的消息协议{ message_id: msg_20250322_001, sender: planner, receiver: researcher, intent: request_task, ref_task_id: task_007, payload: { query: 需要调研多智能体落地中消息队列的选型, constraints: [返回不超过500字, 给出对比表格] }, timestamp: 1742630400000, trace_id: trace_abc123 }字段含义很简单message_id用于去重和追踪sender和receiver用于路由intent是消息意图发任务、回结果、请求澄清、报告错误等ref_task_id把消息和任务关联起来payload放实际内容trace_id贯穿全链路用于观测。如果你做的是集群式自治系统还有一个经典模型值得参考黑板系统。黑板是一个共享的、结构化的工作区所有Agent往黑板上写信息、读取信息通过黑板的内容变化来驱动自己的行为。类比一下就像项目组共用的那块白板每个人把进展写在上面其他人看到相关内容后响应。黑板模型的好处是Agent之间完全解耦不需要点对点通信坏处是容易出现多个Agent同时修改同一块内容导致冲突所以实际落地时黑板往往配合领域划分和写入权限来控制冲突。3.4 混合式协同的典型形态主管-专家模式工程上最常见的混合式架构是主管-专家模式Supervisor Specialists。系统里有一个主管Agent它不直接干活而是充当调度和判断中枢接收用户请求判断任务复杂度决定分发给哪些专家Agent去执行收集专家结果后做汇总或裁决。这套架构在多个成熟框架里都有对应实现。LangGraph里的Supervisor模式就是这个思路AutoGen的GroupChat配合Manager也能搭出来CrewAI的Process则支持按层级编排。具体落地时可以这样组织主管Agent维护一个专家注册表注册表里记录每个专家擅长什么、接受什么输入、输出什么格式。主管在收到任务后先从注册表里选出候选专家再根据任务描述生成分发计划逐一把子任务派出去。主管-专家模式的一个工程要点是主管本身也要有流程兜底能力。比如某个专家连续两次执行失败主管应该能感知到并换一个专家或者降低任务粒度重新分发。我一般会要求主管Agent在每次分发后都输出一个结构化决策记录选了谁、为什么选它、期望输出是什么这个记录不仅用于审计更重要的是在结果异常时能回溯主管的决策逻辑。4. 关键组件工程化落地通信、状态、记忆与可观测4.1 通信与消息路由队列选型与协议版本控制通信层落到具体技术选型上核心问题就是用什么管道传消息、消息格式如何演进。Agent数量在10个以内时进程内的事件总线就够了像Python里的EventBus或用asyncio的Queue都能做。超过10个Agent、或者要跨进程通信我会建议引入轻量级消息队列Redis Stream是最常见的选型它支持消费者组、消息确认、消息持久化足够满足大多数多智能体场景。通信协议一定要做版本控制。我踩过一个坑某个Agent把自己输出格式从返回markdown改成了返回JSON但没有同步更新注册表里的协议描述结果下游三个Agent全部解析失败。后来我把协议描述放进Agent注册表并且规定任何格式变更必须附带新的schema版本消息里也带上这个版本号接收方先做schema校验再处理消息。这个改动虽然简单但让系统稳定性提升了一个量级。消息路由上我比较推荐基于意图的路由而不是基于内容的路由。基于内容的路由是让大模型读消息内容再决定发给谁这有概率性和延迟问题基于意图的路由是让发送方在消息里明确写清楚intent要干什么路由只根据intent和receiver字段做转发快且可控。所有需要理解的部分都交给接收方Agent完成。4.2 共享状态与上下文管理防止Agent各自为战多智能体系统最容易出现的工程灾难是上下文分裂。每个Agent都有自己的Prompt上下文如果它们之间不共享任务背景信息就会出现记者写了一篇关于A的稿子校对员却在按B的标准改稿这种状况。解决思路是引入一个全局工作区Shared Workspace它保存任务的全局状态任务目标、已确认的约束条件、各阶段产物、关键决策记录。每个Agent在开始工作前必须读取工作区里的全局上下文在产出结果后把关键结果回写到工作区。实现上可以用Redis存结构化的JSON或者直接用PostgreSQL存带版本号的记录。这里要注意写冲突多个Agent同时向工作区写同一块内容如果不上锁后写的会覆盖先写的。我的做法是给每个数据项设置owner负责写入的Agent其他Agent要修改必须发起变更请求由owner或协调者决定是否采纳。长期记忆和短期记忆也要分层。短期记忆指当前任务轮的上下文比如每轮对话的摘要和各Agent的中间输出通常放Redis或进程内存里。长期记忆指跨任务沉淀的知识比如某个Agent总结出的业务规则、领域偏好、历史错误放向量库里供检索。我在落地时习惯给每个Agent单独配一个记忆库而不是让所有Agent共享一个否则互相污染会让记忆很快失效。上下文管理有个黄金法则Agent之间传递的是摘要而不是全文。每轮协作结束后协调者把本轮的核心结论压缩成200字以内的摘要更新到全局工作区。把全文丢给下一个Agent会让上下文爆炸的速度远超你更换模型规格的速度Token成本翻倍响应质量反而下降。4.3 工具注册与能力发现让Agent具备可插拔的能力多智能体系统的价值一半在Agent的决策能力一半在Agent能调用的工具广度。工程上我建议把工具能力做成注册表模式不要写死在某个Agent的代码逻辑里。比如一个数据分析场景系统里可能有SQL执行工具、数据可视化工具、外部搜索工具这些工具以统一接口注册到工具注册表Agent通过工具ID发起调用调度层负责执行并返回结构化结果。工具注册表的每个条目至少包含工具名称、功能描述、输入参数schema、输出结果schema、调用地址、鉴权方式。为了稳定可靠调度层要统一做结果规范化把工具的原始返回转成统一的返回结构避免每个Agent对接不同工具时都要写一套解析逻辑。还有一个很实用的细节给每个工具加上适用边界和典型错误字段这样Agent在调用失败时能根据工具给出的错误提示调整调用参数减少无效重试。能力发现机制也很重要。当系统里的工具数量超过几十个后Agent不可能每次都遍历所有工具我一般做法是在工具注册表之上加一个轻量级的检索层Agent在发起调用前先传入意图必要参数由检索层用Embedding召回Top K个匹配工具再交给Agent选择。这个机制让Agent的注意力集中在少数高相关性工具上冒烟效率和准确率都会提升。4.4 可观测性与成本控制没有追踪就别上线多智能体系统最显眼的工程债就是黑盒化。一个任务经过五六个Agent、几十次工具调用结果不对时你根本不知道是哪个环节出的问题。所以可观测性不是上线之后补的功能而是架构设计时就该埋进去的基础设施。我用三个级别的观测来构成多智能体系统的可观测体系。第一级别是链路追踪每个任务生成一个trace_id贯穿所有Agent的调用每步记录输入摘要、输出摘要、耗时、模型或工具名称用OpenTelemetry收集后可以在看板上直观看到整条链路。第二级别是结构化日志每个Agent上报自己的决策记录包括任务ID、意图、参考了哪些上下文、调用了哪些工具、结果是否重试。第三级别是质量评估针对每类任务定义评估指标比如任务成功率、返工率、Agent间无效沟通占比、上下文命中率。成本控制同样要建立在观测数据上。我建议给每个任务记录Token消耗按Agent维度的汇总这样你能一眼看出哪个Agent是Token消耗大户。实践中最常见的情况是某个Agent在一个简单子任务上反复重试消耗占了系统总成本的80%而它的任务只需一次高质量调用就能完成。针对这个情况我对不同职责的Agent分配不同的模型等级比如核心决策Agent用强模型执行性Agent用轻量模型同时给重试次数设硬上限。观测层次数据来源使用方式链路追踪trace_id串联各Agent调用定位任务卡点和失败环节结构化日志Agent决策记录、工具调用记录复现问题、审计决策逻辑质量评估任务成功率、返工率、成本指标优化Agent分工和模型选级5. 常见问题与排查技巧实录5.1 典型问题速查表这些是我在多个多智能体项目中反复踩过的坑整理成速查表症状根因解决方案两个Agent不断互相发消息不结束缺少终止条件设置最大消息轮数、添加结束意图、由协调者强制收敛Agent输出结果互相覆盖共享状态无写入控制数据项设置 owner增加变更审批流上下文越来越长Token费用飙升传递完整历史记录改为只传递摘要全局工作区只保留结论某个Agent调用工具连续失败工具schema不匹配或权限过期检查注册表中schema版本给工具增加错误码反馈任务结果发散多个Agent各说各话缺少全局目标和约束传递把任务目标和不可妥协的约束写进全局工作区供所有Agent读取编排器成为性能瓶颈所有Agent串行等待编排器分发引入异步回调、结果路由编排器只做策略决策不做数据搬运5.2 三个我实际踩过的坑第一个坑是死循环。早期做多Agent代码Review系统Reviewer发现代码问题就返回给Developer修改Developer改完再给Reviewer但如果Reviewer始终不满意这个循环就会无限执行下去。当时流量一上来直接烧掉大量额度。后来我加了硬性指标最多允许三轮循环第三轮Reviewer如果still不通过直接把问题升级给人类维护者做决定。这个收敛策略后来成了我所有多智能体项目的标配。第二个坑是状态冲突。两个Agent同时处理同一个用户需求一个在更新全局方案文档另一个在根据旧方案生成执行计划等第二个Agent执行时发现方案已经被改掉了。这个问题的根因不是Agent不聪明而是架构上没有状态版本管理。我后来给全局工作区的每条记录都加了版本号Agent在读取后执行前要校验版本是否变化变化就要重新拉取。第三个坑是盲目追求Agent自治。早先我觉得Agent越自治越智能于是让它们自由讨论任务方案结果三个Agent在一个细枝末节问题上讨论了整整六轮产出却非常有限。后来我才意识到自治度必须和任务复杂度匹配低复杂度任务用强编排高复杂度探索任务才适合放开自治。工程系统的第一目标是可控其次才是智能。这几类问题的排查其实有个通用思路先看链路追踪定位是哪两个Agent之间出现了异常交互再看这两个Agent间的协议和执行日志确认是消息路由的问题还是Agent自身决策的问题最后看全局工作区的状态记录确认是不是共享状态下发或数据版本不一致导致的。按这个顺序排查大部分问题都能在半小时内定位到具体环节。6. 从单体到多智能体的务实演进路线6.1 最小可行多智能体系统的落地步骤如果之前只有单Agent系统面向多智能体架构迁移我建议按下面的步骤走不要一上来就拆一二十个Agent。以下每一步都可以独立验证效果。第一步梳理现有单Agent里的所有子任务按需要不同领域知识、需要不同工具、需要独立验证环节三个维度做拆分。这一步不做代码改动只做任务梳理。第二步整理出Agent清单一个Agent只承担一个明确职责给每个Agent写清楚输入输出格式和它需要访问的工具。第三步选最简单的两个Agent加一个协调者搭建编排式骨架先不用消息队列进程内队列即可。验证两个Agent的任务交接是否流畅。第四步引入全局工作区把任务目标、约束、各阶段关键结论放进去让所有Agent读一份共享上下文。这一步能显著减少各说各话的问题。第五步加可观测性给每个任务打上trace_id记录各Agent的输入输出与耗时。这一步完成后系统才算看得懂。第六步根据观测结果优化识别哪个Agent是瓶颈、哪个Agent频繁返工、哪类子任务不必要地开了多Agent删繁就简。6.2 团队规模增长时的架构演进信号系统跑通后怎么判断该上分布式了或者该调整协同模式了我总结了几个信号。当消息量使单机进程内队列出现堆积延迟或者编排器在单位时间内的路由决策次数明显超过单线程处理能力时就该考虑独立的消息队列和调度服务。当混合式架构里主管Agent开始成为新的单点瓶颈它在分发任务、汇总结果上的处理耗时占比持续走高时就应该考虑把主管的决策逻辑下沉到配置或规则引擎减少不必要的模型推理。当一个方向上的Agent数量增长到开始互相抢共享状态写入权时就该引入更细粒度的领域隔离而不是继续堆Agent数量。还有一个容易被忽略的架构信号调试时间成本超过开发时间成本。如果你花在定位是哪个Agent哪一步出了问题上的时间已经超过写一个新Agent功能的时间说明当前架构的通信和观测设计已经跟不上复杂度了。这时候你的首要任务不是加Agent而是重构通信和可观测层。我个人的体会是多智能体系统的架构设计只能用克制两个字概括。克制地决定用几个Agent克制地设计语义通信克制地放开自治区域的边界。系统的复杂度增长是指数级的但这个指数不用一口气承受。从最小的两个Agent加一个协调者开始让每一层架构决策都由真实的运行数据来触发会比一次性铺开大而全的分布式多智能体平台稳妥得多。
RELATED

相关推荐

AI做PPT不再翻车:A+B人机协作模式全流程指南

AI做PPT不再翻车:A+B人机协作模式全流程指南

做PPT这件事,这几年因为AI的介入变得有点魔幻。我的理解是,把AI当“全自动设计师”的人,十个里有九个在返工;把AI当“哑巴素材库”的人,效率提升又非常有限。真正好用的路径,反而是把AI和人的优势叠在一起&…

📅 2026/10/6 6:09:55
DeepSeek大模型如何落地量化策略:因子评估与多策略融合实战

DeepSeek大模型如何落地量化策略:因子评估与多策略融合实战

简介:这份PDF文档面向证券量化投资从业者、量化研究员及金融工程方向学习者,聚焦大模型时代因子研究的效率与精度难题,系统探讨如何借助DeepSeek大模型优化量化投资策略。文档共213页、55个大章节,支持目录跳转与左侧书签大纲快速…

📅 2026/10/6 6:09:55
2026 AI Agent工程化指南:从Demo到生产扛住并发

2026 AI Agent工程化指南:从Demo到生产扛住并发

2026 年的 Agent 开发者生态正在经历一场从“能跑 Demo”到“扛住生产”的集体转向。过去一年我接触了大量做 Agent 的团队,从个人开发者到企业级平台,大家关心的问题惊人的一致:Agent 到底怎么从玩具变成工具?多智能体协作是不是…

📅 2026/10/6 6:04:55
MORE NEWS

更多资讯

📰

波特图关键指标解读:相位裕度与增益斜率如何决定系统稳定性

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

📰

Boost变换器CCM与DCM模式切换原理及临界电感设计

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

📰

Git基本命令实战:从安装配置到分支合并与冲突解决

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

📰

ROS2多设备深度相机部署指南:从单台到多台的完整避坑实战

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

📰

用74LS194移位寄存器搭建环形计数器:原理、电路与实操指南

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

📰

AR眼镜硬件设计实战:H616+Micro OLED+嘉立创EDA全链路拆解

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

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬