news 2026/10/5 5:01:56

AMD SEV机密计算实战:从内存加密原理到SEV-SNP与宿主机隔离实践

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AMD SEV机密计算实战:从内存加密原理到SEV-SNP与宿主机隔离实践

虚拟化圈子里有个老段子:云平台运维手里握着宿主机root,想不想看客户机里的数据,只取决于他想不想,不存在"能不能"的问题。因为在KVM这类方案里,客户机的内存就是宿主机上的普通进程内存,/proc/kcore、gdb、甚至一个粗心大意的dd命令,都能把运行中的虚拟机内存全部导出来。有段时间我负责云平台的安全加固,被业务方问过一句"你们能不能彻底保证看不到我的内存",我当时的回答是"从流程上保证不看,从技术上说做不到",直到AMD SEV(Secure Encrypted Virtualization)铺开以后,这个回答才终于能改一改。

这篇文章就把SEV这东西掰开讲讲:它能解决什么问题、背后的原理是什么、SEV/SEV-ES/SEV-SNP三代怎么演进、我在实际部署里踩过哪些坑,以及它到底值不值得你为每一台虚拟机打开。适合虚拟化运维、平台安全工程师以及所有对机密计算感兴趣的同学,看完应该能对"安全虚拟化"这件事有个完整的判断框架。

1. 真问题:虚拟机里的数据,云厂商到底能不能看到

1.1 一个令运维后背发凉的场景

早年间我做KVM虚拟化平台维护,有一次为了排查一个客户机内存泄漏的奇怪bug,在宿主机上用gdb挂到一个QEMU进程上,直接读取guest物理内存的某个偏移地址,里面的数据干干净净地摊在那里——客户说那是他正在处理的数据库导出文件,而我这边连个密码都没输入就看到了明文。

这件事让我印象极其深刻。KVM的虚拟化模型决定了客户机内存对宿主机是完全透明的,hypervisor要管理内存、要处理缺页、要做设备模拟,就必须能"看到"这些内存。而"能看到内存"和"能读内存"之间根本没有技术屏障,只有运维规范这一层单薄的约束。

比特流数据存放在哪里就以明文形式存在哪里,一旦能读取,就如同用吸管喝豆浆,只要管子够长,碗底的东西都能吸上来。虚拟化环境下,这个"吸管"天生就在操作系统层被接管了。

1.2 现有的加密方案堵不住哪个洞

你可能会说:给虚拟机里的磁盘做加密不就行了?比如LUKS、dm-crypt、Windows BitLocker?这里要分清加密的层次:

  • 数据落盘加密:保护的是磁盘镜像文件或块设备,数据在内存里仍然是明文。
  • 传输加密(TLS/SSH):保护的是网络包,数据在两端机器的内存里仍然是明文。
  • 文件系统级加密(eCryptfs、fscrypt):保护的是文件内容,运行中的进程访问时仍然解密进内存。

这几层加起来,逃不出一个共同点:运行时的内存始终是明文的。而内存恰恰是数据最密集、最容易被窃取的地方——进程栈、堆、密钥、会话令牌、业务数据库的缓存页,全都在内存里。

更麻烦的是,在虚拟化模型下,查内存权限这个过程本身就不可控。hypervisor要负责把客户机的物理地址映射到宿主机的物理地址,它就是内存管理的中枢,让中枢自己"看不见"自己管理的内容,从架构上看是反直觉的。AMD SEV正好把这个反直觉的事做成了现实:让内存加密的密钥掌握在客户机手里,而不是宿主机手里。

2. SEV的根基:AMD安全处理器与内存加密引擎怎么协作

2.1 SME先给整台机器加上内存加密

SEV不是凭空冒出来的,它建立在AMD SME(Secure Memory Encryption,安全内存加密)的基础上。咱们把SME搞懂,SEV就懂了一半。

SME做的事一句话概括:内存控制器在写入内存时自动加密,读出来时自动解密。这个过程发生在CPU与物理内存之间的内存控制器里,用的是硬件AES引擎,按64字节的行粒度加解密。对于操作系统来说,SME是完全透明的,进程不需要改代码,内核也只需要在启动时做极少量的适配。

但这里有个关键问题:加解密的密钥放在哪?如果密钥存在内存里的某个寄存器位置,那攻击者直接读这块内存就把密钥拿走了,加密等于白做。AMD的答案是在CPU里塞了一个独立的"安全岛"——AMD安全处理器(AMD Secure Processor,简称ASP)。它是一颗独立的ARM核心,有自己的固件、自己的内存区域,x86主核心访问不到它的密钥存储区。SME的密钥就由这颗安全处理器生成和管理,x86世界里的人根本摸不到这把钥匙。

有了SME之后,整台机器的内存理论上都不会以明文落盘到物理内存条上。那SEV又在SME之上做了什么?

2.2 从全机加密到每台虚拟机一把独立钥匙

SME的问题是"一把钥匙锁全楼"——整台机器所有数据用同一把密钥加密。这在单机场景没问题,但在虚拟化场景就尴尬了:hypervisor和所有客户机共用一把钥匙,要么都能解开,要么都解不开。hypervisor还是能看到客户机的明文,因为解密是硬件自动完成的,CPU在访问那段内存时已经把密文还原成明文放在数据总线上了。

SEV的核心改进是:每个虚拟机分配一个独立的地址空间ID(ASID),每个ASID对应一把独立的内存加密密钥。当某个客户机的CPU核心访问属于该客户机的guest物理内存时,内存控制器用这把密钥解密;当hypervisor的代码访问同一块物理内存时,因为没有对应的密钥,拿到的就是一坨密文。

这个过程用生活类比比较好理解:SME像是给一栋楼的所有房间都装同样型号的锁,物业拿着一把万能钥匙能进每家每户;SEV是把每户的锁芯换成了不同的,物业手里那把钥匙只在公共区域有效,进了任何一户都是寸步难行。

密钥整个生命周期——生成、装载、销毁——都由AMD安全处理器管理。guest要启动时,hypervisor会向安全处理器发起一个请求,安全处理器为这个客户机生成或者加载密钥,然后在客户机的整个生命周期里持有它。hypervisor全程接触不到密钥明文。

2.3 启动过程是怎么被"度量"的

SEV还有一个看起来很玄学但很重要的概念:启动度量(Launch Measurement)。它做的事情是:在虚拟机启动时,安全处理器对启动过程中的固件、内核、initramfs等关键成份算出一串哈希值,并记录在安全处理器内部。外部验证者可以通过远程证明(attestation)把这串哈希值取出来,跟你预期的标准值比对,确认这台虚拟机里跑的系统"没被人调包过"。

打个比方:你订了一份外卖,骑手保温箱上有一个防拆封条,封条上的编码是你下单时生成的。你收到的箱子封条编码和预期的一致,说明箱子在路上没被打开过。SEV的启动度量就是这个"封条",hypervisor可以把它提交给外部证明服务,外部服务确认"这台机器的启动链路是可信的"之后,才能信任这台机上运行的业务。

3. 从SEV到SEV-SNP:三代演进各自解决了什么问题

3.1 第一代SEV的核心价值与明显短板

第一代SEV(常说的SEV)解决了"客户机内存对宿主机保密"的问题,但远远没解决所有问题。它有一个非常明显的盲区:内存虽然加密了,CPU的寄存器状态却没有保护。

KVM做虚拟化的一个基本流程是:客户机在guest模式下运行,遇到特权指令或者外部中断时,CPU会从guest模式退出(VM Exit)回到hypervisor模式,然后hypervisor读取并保存vCPU的寄存器状态,等处理完事件再恢复寄存器,重新进入guest。在这一进一出的过程中,客户机vCPU所有寄存器的值(包括通用寄存器、控制寄存器、甚至某些敏感状态)都暴露给了hypervisor。

恶意hypervisor完全可以在VM Exit的时候读走客户机的寄存器,甚至修改某个寄存器的值再让guest继续跑,从而实现注入攻击。第一代SEV对此基本无能为力。换句话说,第一代SEV保护了"内存这摊静态数据",但对"CPU上下文这个动态状态"没做像样的防护。

3.2 SEV-ES如何藏住vCPU寄存器状态

SEV-ES(Encrypted State,加密状态)就是冲着这个短板去的。它在硬件层面实现了:客户机在VM Exit时,vCPU寄存器自动打包加密保存到客户机自己的内存区域里,hypervisor只能看到一个密文块,完全不知道里面的值。

而且SEV-ES还引入了一个机制叫Automatic Exit(AE),guest在遇到某些不需要hypervisor介入的异常时,可以直接在guest内部处理掉,压根不退出到hypervisor层。退出次数变少,暴露面自然更小。

在配置层面,SEV-ES对应的policy值会发生变化,后面实战部分我会给一个具体的配置示例。从这一代开始,SEV从一个"半透明保险柜"变成了"封死的黑匣子"——内存密文、寄存器密文,hypervisor手里只剩下调度权,没有窥探权。

3.3 SEV-SNP对页表和完整性攻击的补全

SEV-ES保护了寄存器,但还有一个隐秘的攻击面:内存重映射攻击。因为页表仍然是hypervisor管理的,恶意hypervisor可以偷偷修改guest的嵌套页表,把客户机的某段guest物理内存重新映射到别的地方,或者把它自己伪造的数据页映射给guest。客户机内核以为自己在读某个合法页面,实际上读到的是hypervisor塞进来的脏数据。这种攻击不碰加密的东西,而是利用地址映射来做手脚,第一代SEV和SEV-ES都没法完全防住。

SEV-SNP(Secure Nested Paging,安全嵌套分页)在架构上补上了这个洞。它引入了反向映射表(RMP,Reverse Map Table),由硬件维护每个物理内存页的"所有者"到底是hypervisor还是某个客户机。客户机只能访问自己拥有的页面,hypervisor也不能随意修改一个已分配给guest的页面的映射关系。同时,SEV-SNP还提供了内存完整性保护,硬件能检测出数据被篡改或重放的情况。

简单说,SEV-SNP要解决的是"防篡改"和"防重放"问题,让客户机不仅能保证自己内存是密文,还能保证自己读到的内容一定是自己当初写下的内容,中间没人换过货。从保密(Confidentiality)到完整性(Integrity),SEV的防线才算真正闭环。

3.4 一张表看清三代差异

特性SEV(第一代)SEV-ESSEV-SNP
内存加密支持支持支持
vCPU寄存器加密不支持支持支持
页表/嵌套页表保护不支持不支持支持
防重映射攻击不支持不支持支持
内存完整性/防重放不支持不支持支持
远程证明能力有限增强完善(扩展证明)
典型部署预警防"偷看"防"偷看+篡改现场"防"全套操纵"

日常沟通里,很多人把所有SEV都叫"SEV",但如果你要跟伙伴讨论漏洞和威胁模型,一定要先确认说的是哪一代。就像聊加密算法时不能把DES和AES混为一谈一样,差的不是一个版本号,是整整一个安全层级。

4. 实战配置与踩坑记录:把SEV在QEMU/KVM里跑起来

理论讲完,来看点能落地的。我在这块踩过的坑比预想的多得多,先从平台确认说起。

4.1 跑起来之前的平台确认清单

SEV不是装个软件就能用的,它对硬件和固件有硬性要求。我拿到一台新服务器之后,按照以下流程检查:

  1. 确认CPU型号:AMD EPYC 7001系列及以上基本都支持SEV,7002/7003系列支持SEV-ES,7003及以后的型号支持SEV-SNP。注意Ryzen桌面级CPU只支持SME,不一定支持完整的SEV功能,做实验别拿家用机硬扛。

  2. 进BIOS开启相关选项:这是最容易被忽略的一步。很多服务器的BIOS默认关闭SEV/SME,要在"CPU配置"或者"安全"菜单里找到"AMD SEV"或者"Secure Memory Encryption"并打开。有些BIOS开启SME后还会要求你设置内存加密的最小密钥ID数,默认值就可以,但不要设成0。

  3. 确认Linux内核支持:建议用较新的发行版内核(5.15+),并确认内核启用了CONFIG_AMD_MEM_ENCRYPT、CONFIG_AMD_MEM_ENCRYPT_ACTIVE、CONFIG_KVM_AMD_SEV等配置。可以通过zgrep -i sev /proc/config.gz快速检查。

  4. 查看实际状态:在设备目录里确认SEV设备存在:

    ls -l /dev/sev dmesg | grep -i sev sevctl platform

    sevctl platform能看到平台版本、ASID数量、API版本等关键信息,如果这里报错,说明BIOS或内核配置还没到位。APIs的版本号挺重要,老固件API版本太低的话,QEMU会拒绝创建SEV guest。

注意:sevctl工具在CentOS/RHEL里可以通过yum install sevctl安装,Debian/Ubuntu里是apt install sevctl。这是AMD官方提供的小工具,强烈建议装上,排查问题全靠它。

4.2 QEMU与libvirt的关键配置项

平台确认没问题后,有两种方式让虚拟机启用SEV。如果你是直接用QEMU命令行,可以在启动参数里增加类似这样的配置:

qemu-system-x86_64 \ -machine q35,confidential-guest-support=sev0 \ -object sev-guest,id=sev0,cbitpos=47,reduced-phys-bits=5,policy=0x01 \ ...

用libvirt管理虚拟机的话,对应的XML片段是这样的:

<launchSecurity type='sev'> <cbitpos>47</cbitpos> <reducedPhysBits>5</reducedPhysBits> <policy>0x01</policy> </launchSecurity>

这几个参数的意义要搞明白,不然跑不起来只能干瞪眼:

  • cbitpos=47:指物理地址中用作加密标记(C-bit)的比特位。AMD EPYC一般就是47,表示物理内存地址的第47位用来标记"这段内存的加密属性"。填错了guest根本起不来。
  • reducedPhysBits=5:表示客户机物理地址空间从52位(EPYC默认)缩减5位,即客户机最多只能看到47位物理地址。因为最高位被加密功能占用了,必须告诉QEMU给guest的地址空间留出余量。
  • policy=0x01:这是个位图。bit0必须为1(禁止调试模式),bit1、bit2分别控制是否允许特定功能。要启用SEV-ES的话,policy要设成0x05(bit0和bit2置1)。SEV-SNP的设置更复杂,还要配合其它参数,一般不建议直接手搓。

启动之后,在客户机内部可以通过dmesg | grep -i sev确认SEV特性是否生效,能看到类似"AMD Secure Encrypted Virtualization"的日志就说明guest已经跑在加密环境里了。

4.3 我踩过的几个具体坑

坑1:BIOS开了SEV之后宿主机起不来。有一次我在一台EPYC服务器上开了BIOS里的SME选项,结果重启后停在GRUB之前直接黑屏。后来排查发现是因为内核启动参数里没加内存加密相关选项,而BIOS已经把内存控制器设置为加密模式,导致内核在早期初始化阶段无法正确读写内存。解决方法是进入内核命令行加上mem_encrypt=on(或者根据发行版要求配合iommu=pt),并且确认initramfs里包含了必要的加密模块。

坑2:cbitpos和reducedPhysBits填错导致guest启动即崩溃。这个参数跟具体硬件强相关,我在一台比较老的EPYC 7001平台上按照7003的默认值(cbitpos=47)配,结果guest内核直接panic。后来查看该平台的物理地址位数并不是52位,重新计算后使用了cbitpos=47,reduced-phys-bits=1才正常。建议每台机器上先跑一遍sevctl platform,看看输出的物理地址位数和平台能力,再用它反推这两个参数。

坑3:SDK/代理层不支持SEV,但你以为支持了。很多IaaS平台自己封装了虚拟机调度系统,底层直接调libvirt。如果你只是手动在宿主机上配好SEV,但平台代码里创建虚拟机时没有把launchSecurity传给libvirt,那实际创建的虚拟机还是普通VM。这个坑排查起来最耗时间,建议先怀疑自己平台代码对launchSecurity参数的处理逻辑。

坑4:热迁移和快照直接罢工。这不是bug,是特性。SEV的密钥绑死在物理平台的安全处理器里,要把VM从A机迁到B机,要么两机共享密钥——这会大幅扩大攻击面——要么就得在迁移前把guest内存数据解密出来,那就违背了SEV的初衷。所以多数平台实现里,SEV guest自动禁用标准热迁移。做快照也类似,内存快照里全是密文,恢复时需要重新度量密钥。如果业务依赖热迁移,上SEV之前一定先把这点想清楚。

5. 别把SEV当银弹:它不保护什么,代价又是什么

5.1 SEV的威胁模型边界

SEV不是把虚拟机放进一个刀枪不入的保险柜,它有自己的威胁模型,在模型之外的攻击路径它管不着。我总结了几类SEV明确不防的情况:

  • 缓存侧信道攻击:SEV加密了DRAM里的数据,但CPU缓存里的数据加解密前必然存在,hypervisor可以通过测量缓存访问时序来推断客户机的某些行为模式。SEV-SNP缓解了一部分这类攻击,但没有根治。
  • guest内部的漏洞利用:如果客户机里的应用被打穿、内核提权,SEV不会来救你。SEV保护的是"外部的人看不进内存",不是"内部的人干不了坏事"。客户机自己的人类攻击者照样能读它自己解密后的数据。
  • 拒绝服务攻击:恶意hypervisor可以不调度客户机的vCPU、截断中断、故意把guest置于死循环,这些干扰不泄露数据,但能让业务不可用。SEV对此无能为力。
  • 物理攻击和供应链攻击:如果攻击者能物理接触服务器、改BIOS固件、在内存总线上做手脚,SEV的保护会被大幅削弱。它假设的是"平台固件可信",这一点在购买二手服务器时要格外留意。

5.2 性能账:到底损耗了多少

内存加密当然有性能代价,因为它改变了每一次内存访问的路径。我实测下来的大致数据是:

工作负载类型典型性能影响范围说明
CPU密集型计算1%~3%内存访问相对较少,损耗很小
内存带宽密集型5%~15%数据库/大数据处理等高带宽场景,损耗最明显
网络/IO密集型3%~8%网络包处理涉及频繁的数据拷贝和加密
混合业务Web服务2%~5%整体感知不大,但长尾延迟可能变差

做性能测试时建议用真实业务压测,而不是只看基准测试工具的数字。我在一次数据库场景的压测中,纯内存读测试掉了约12%,但通过调整NUMA绑定和内存分配策略,把损耗压回了7%左右。优化空间还是有的,但你要接受"每笔内存访问都多一道加解密"这个事实。

5.3 什么时候不该上SEV

根据自己的实践,我会建议以下情况不要盲目上SEV:

  • 业务对延迟极其敏感,尤其是微秒级响应的高频交易、实时流处理等场景,SEV的额外延迟可能直接影响业务指标。
  • 业务需要频繁热迁移,比如弹性伸缩要求虚拟机在物理机之间漂移的,SEV会让这个流程变得非常痛苦,甚至不可用。
  • 平台还有大量遗留虚拟机和老内核,这些guest大概率对SEV支持不完整,强行开启容易引入不稳定因素。
  • 威胁模型不清晰,你并不清楚自己防的是谁,那先别急着给所有VM上SEV。SEV解决的是"hypervisor不可信"这个特定矛盾,如果只是合规要求做数据加密,磁盘加密已经能覆盖大部分需求了。

6. 从SEV延伸:机密计算生态的现状与选择思路

6.1 SEV和Intel SGX不是同一个赛道

聊SEV的时候绕不开Intel的SGX,但两者其实不是同类东西。SGX的粒度是"应用程序的enclave"——你只需要把代码里最敏感的函数放进一个受保护的内存区域,其它部分照常运行。SEV的粒度是整个虚拟机——hypervisor完全不可信,整个guest的内存和状态都被保护起来。

带来的取舍也很明显:SGX需要改造应用,把敏感逻辑单独拆出来写,工程量不小;SEV对客户机里的应用几乎透明,你不用改一行代码,现有虚拟机直接就能迁移过去。反过来,SGX因为粒度小,可以做到更细粒度的安全策略;SEV则是"要么全保护,要么全不保护",没法只保护某个进程。

Intel后来搞的TDX(Trust Domain Extensions)才是冲着SEV来的竞品——同样做整机加密、整VM保护。但那是Intel平台的事,不在本文展开。如果你的平台是AMD EPYC,SEV/SEV-SNP就是和TDX对标的那条路线。

6.2 在云上使用SEV的实践路径

在公有云上买一个"机密计算实例"并不等于自动安全。要真正发挥SEV的价值,我的建议是走这套流程:

  1. 先明确信任边界:SEV能防的只是"云平台管理员偷看你内存"。如果你还担心云服务商在你guest里装agent、篡改内核,那SEV不够,需要配合远程证明让云服务商证明自己没动手脚。
  2. 做启动度量验证:把guest的启动度量值定期外发给一个独立于云平台的验证服务,比对你预期的镜像哈希,确保开机过程没被干扰。
  3. 密钥管理前置:把业务需要的密钥(数据库主密钥、TLS私钥)在客户机内部封装起来,绑定SEV的度量值。这样即使VM镜像被整体拖走,没有对应的SEV环境也解不开。
  4. 容器场景可以考虑Kata Containers配合SEV:用轻量虚拟机承载容器,让容器也享受到SEV的隔离保护,这是目前机密容器比较务实的落地路径。

6.3 我对SEV未来演进的一个观察

从SEV到SEV-ES再到SEV-SNP,AMD的思路很清晰:先把"看不了"做扎实,再把"改不了"做扎实,最后把"伪证不了"做扎实。SNP带来更完整的远程证明体系之后,SEV才有资格撑起多云环境下的敏感业务。可以预见SEV-SNP会逐渐成为EPYC平台上虚拟化安全的默认配置,尤其在云原生和机密容器的场景里会越来越常见。

回到开头那个问题:云厂商到底能不能看到虚拟机里的数据?有了SEV之后,答案从"不能保证"变成了"技术上真的看不到"。作为运维人员,我最大的感受是:SEV并没有让运维工作变得更复杂,它只是把安全边界从"流程和规范"硬生生地推到了"芯片和硬件"这一层。

最后分享一个小技巧:如果你刚接触SEV,别急着在生产环境开SNP,先拿一台EPYC服务器从policy=0x01的第一代SEV玩起,跑通启动度量和验证链路,再逐步升级到SEV-ES和SNP。这个循序渐进的过程能帮你省下大量排查成本,也能让你更清晰地理解每一代SEV分别堵住了哪个洞。

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

MRAM 工业嵌入式存储实战:MR25H40CDF 与 PIC18LF47K42 驱动详解

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

作者头像 李华
网站建设 2026/10/5 5:00:47

法律知识库防幻觉实践:基于RAG的生态环境法典1242条问答系统

1242 条。这是《生态环境法典》的条文总数&#xff0c;也是我这个月重做知识库的直接原因。之前那套法律问答系统&#xff0c;在上一轮环境法文本体系调整——十几部单行法退场、新法典整体登场——之后不到一周就暴露出严重的"记忆错乱"&#xff1a;问它违法排污怎么…

作者头像 李华
网站建设 2026/10/5 4:59:57

轻型AI中台实战:用Docker和开源模型解决重复录入与对账难题

一次给一家做供应链贸易的朋友梳理财务流程时&#xff0c;我看到他们财务部三个人&#xff0c;每天光是往ERP、OA、财务系统里重复录单据、月底对账&#xff0c;就要搭进去大半天。这种“数据搬运工”式的劳动&#xff0c;在很多企业里都被当作理所当然。聊到最后我给了个建议&…

作者头像 李华
网站建设 2026/10/5 4:59:34

RAG检索不只有向量:本地混合检索方案与选型实战

先说结论&#xff1a;这个争论本身就有问题&#xff0c;很多人把“RAG”和“向量检索”绑得太死&#xff0c;仿佛不做向量就不是正经RAG。我在实际项目里试过纯BM25关键词检索、试过知识图谱路径检索、也试过向量稀疏检索的混合方案&#xff0c;踩了不少坑之后才确定&#xff1…

作者头像 李华
网站建设 2026/10/5 4:59:20

基于Ansys的血管稳态流固耦合仿真:从原理到实战解析

1. 从单一物理场到血流-管壁耦合的完整链条1.1 为什么单一物理场不够用做血管相关仿真的人&#xff0c;早期基本都从纯流体或者纯结构入手。纯流体分析把血管壁当成刚性边界&#xff0c;计算血流场没问题&#xff0c;效率高、调试快&#xff0c;很多血流动力学指标比如速度分布…

作者头像 李华
网站建设 2026/10/5 4:58:42

基于AI代理的多人多AI协同架构:任务路由与仲裁实践

最近一段时间&#xff0c;我大部分精力都放在一个课题上&#xff1a;基于AI代理代为交互的多人多AI协同系统架构。说白了就是——多个人&#xff0c;带着多个AI&#xff0c;在一个统一架构里协同干活&#xff0c;不是一人一个对话框轮着问&#xff0c;而是让AI代理作为中间层&a…

作者头像 李华