摘要:多机构 Agent 联合建模时,业务需要共享知识,法规却要求原始数据不出域,这构成了当前医疗、金融等强监管行业的核心矛盾。本文基于 OpenClaw v2.x Skill 体系,结合 PySyft/Opacus 等主流框架,系统拆解联邦学习、MPC、TEE 三条隐私计算路径,将 OpenClaw Skill 的权限边界映射为数据域边界,给出可落地的跨机构协作 YAML 配置、安全聚合 Python 代码、审计追踪方案与风险边界。读完你将掌握如何把 Agent 的分布式协作能力与"数据不动模型动"的隐私保护机制结合起来,构建可审计、可回滚、可解释的多机构 AI 系统。
⚠️ 版本说明:OpenClaw 是活跃演进的开源项目,具体配置字段会随版本迭代。本文基于 OpenClaw v2.x Skill 体系,所述 Skill 权限、隐私预算、安全聚合等思想具有长期适用性;如果你使用 FATE、SecretFlow、LangChain 等替代方案,同样可以参考这些设计。涉及具体 API 时请以 OpenClaw 官方仓库与模型厂商文档为准。
文章目录
-
- [一、引言:多机构 Agent 协作的数据困境](#一、引言:多机构 Agent 协作的数据困境)
-
- [1.1 矛盾的本质](#1.1 矛盾的本质)
- [1.2 传统方案的困境](#1.2 传统方案的困境)
- 二、概念拆解:标题里的五个关键词
-
- [2.1 OpenClaw:以 Skill 为单位的 Agent 操作系统](#2.1 OpenClaw:以 Skill 为单位的 Agent 操作系统)
- [2.2 隐私计算:数据可用不可见](#2.2 隐私计算:数据可用不可见)
- [2.3 联邦学习:数据不动模型动](#2.3 联邦学习:数据不动模型动)
- [2.4 数据隔离与安全协作](#2.4 数据隔离与安全协作)
- [三、OpenClaw Skill 隔离机制与隐私计算的映射](#三、OpenClaw Skill 隔离机制与隐私计算的映射)
-
- [3.1 Skill 隔离层与隐私计算协议层](#3.1 Skill 隔离层与隐私计算协议层)
- [3.2 为什么不是简单的消息加密?](#3.2 为什么不是简单的消息加密?)
- [四、方案设计:跨机构隐私计算 Agent 协作架构](#四、方案设计:跨机构隐私计算 Agent 协作架构)
-
- [4.1 整体架构](#4.1 整体架构)
- [4.2 核心设计原则](#4.2 核心设计原则)
- [4.3 YAML 配置:隐私计算 Skill 定义](#4.3 YAML 配置:隐私计算 Skill 定义)
- [五、联邦学习 Agent 协作时序与实现](#五、联邦学习 Agent 协作时序与实现)
-
- [5.1 完整时序](#5.1 完整时序)
- [5.2 本地训练与 DP 处理代码实现](#5.2 本地训练与 DP 处理代码实现)
- [5.3 安全聚合与一致性验证](#5.3 安全聚合与一致性验证)
- [5.4 审计追踪与隐私预算监控](#5.4 审计追踪与隐私预算监控)
- [六、风险对比:有隐私计算 vs 无隐私计算](#六、风险对比:有隐私计算 vs 无隐私计算)
-
- [6.1 全维度风险对比](#6.1 全维度风险对比)
- [6.2 典型攻击场景分析](#6.2 典型攻击场景分析)
- [6.3 隐私预算的经济学](#6.3 隐私预算的经济学)
- 七、适用场景与边界
-
- [7.1 适用场景](#7.1 适用场景)
- [7.2 不适用场景](#7.2 不适用场景)
- [7.3 边界意识:方案的局限性](#7.3 边界意识:方案的局限性)
- 八、总结与展望
- 参考资料
一、引言:多机构 Agent 协作的数据困境
1.1 矛盾的本质
当多个机构希望通过 AI Agent 联合决策时,数据孤岛往往成为最大的阻碍。
以医疗场景为例:三甲医院 A 拥有 10 万份肿瘤影像,专科医院 B 拥有 5 万份基因测序数据,二者联合可以构建远超单独训练的辅助诊断模型。但《数据安全法》《个人信息保护法》明确要求,患者原始数据不能离开本机构域。
这不是简单的技术问题,而是合规约束下的协作优化问题:
- 业务目标:最大化联合模型的推理精度;
- 合规约束:原始数据不出域、不可被其他方推断;
- 效率约束:协作延迟可接受、通信开销可控。

图 1:传统协作与隐私计算协作架构对比
1.2 传统方案的困境
在没有隐私计算的条件下,多机构 Agent 协作通常只有三种选择,每一种都有明显缺陷:
| 方案 | 数据处理方式 | 模型效果 | 合规风险 | 典型场景 |
|---|---|---|---|---|
| 集中训练 | 数据汇集到一方 | 优 | 极高(数据出域) | 小型内部项目 |
| 独立训练 | 各方各自训练 | 差(数据量不足) | 低 | 数据敏感但模型简单 |
| 数据脱敏后共享 | 脱敏/匿名化后共享 | 中 | 中高(重识别风险) | 曾是主流但已不再安全 |
💡 关键认知:数据脱敏并不等于隐私保护。通过关联攻击(Linkage Attack),即使经过 k-匿名化处理的数据集,在面对辅助信息时仍存在较高的重识别风险。这正是隐私计算技术出现的根本动因。
二、概念拆解:标题里的五个关键词
2.1 OpenClaw:以 Skill 为单位的 Agent 操作系统
OpenClaw 是一款以 Skill 为能力原语的 Agent 框架。每个 Skill 通过 SKILL.md 定义行为边界,通过 YAML 声明依赖、输入输出与权限。
Skill 之间通过消息传递协作,天然形成了能力边界 和数据边界。这种设计让 OpenClaw 可以把"哪些数据能流出""哪些操作能在本地完成"写成声明式配置,而不是散落在业务代码里。
声明式权限的好处在于:当安全策略需要调整时,你只需修改 YAML 文件,而不必翻遍 Python 代码寻找所有数据外发点。审计人员也能直接通过配置判断某个 Skill 是否具有数据导出能力,这大大降低了合规审查成本。
2.2 隐私计算:数据可用不可见
隐私计算的核心理念是 "数据可用不可见"------参与方在不暴露原始数据的前提下完成联合计算。
主流技术路径有三条:
| 路径 | 核心思想 | 信任假设 | 典型框架 |
|---|---|---|---|
| 联邦学习(FL) | 本地训练,只上传模型参数/梯度 | 诚实且好奇 | PySyft、FATE、TFF |
| 多方安全计算(MPC) | 加密状态下共同计算函数 | 诚实多数 | SecretFlow、MP-SPDZ |
| 可信执行环境(TEE) | 硬件隔离的安全飞地 | 信任硬件厂商 | Occlum、Gramine |
选择哪条路径取决于你的信任假设和性能预算。联邦学习适合大规模机器学习训练,通信开销相对较低;MPC 适合通用计算且对共谋敏感的场景,但通信轮次多、延迟大;TEE 适合需要强隔离且不愿改造算法的场景,但依赖硬件厂商的安全声明。生产环境中,常见做法是组合使用,例如联邦学习 + 差分隐私 + TEE 远程认证,形成纵深防御。
2.3 联邦学习:数据不动模型动
联邦学习由 Google 在 2016 年首次提出。其核心思想是:各参与方在本地训练模型,只上传模型参数(梯度),由聚合服务器进行参数聚合后下发更新。
根据数据分布差异,联邦学习又分为横向联邦、纵向联邦与联邦迁移三种变体:
| 类型 | 数据特征 | 典型算法 | 适用场景 |
|---|---|---|---|
| 横向联邦 | 特征相同,样本不同 | FedAvg、FedProx | 多医院联合影像诊断 |
| 纵向联邦 | 样本相同,特征不同 | SplitNN、SecureBoost | 银行+电商联合风控 |
| 联邦迁移 | 样本和特征都不同 | FedTransfer | 跨领域跨模态 |
2.4 数据隔离与安全协作
数据隔离指原始数据始终停留在机构本地沙箱,任何外部 Skill 只能接触到经处理后的参数或聚合结果。安全协作则是在隔离前提下,通过密码学或硬件机制保证多方仍然能够共同完成训练或推理任务。
OpenClaw 的 Skill 隔离机制与隐私计算的上述需求天然契合:Agent 是分布式的,消息传递只传递参数不传递数据,Skill 系统提供了精确的外发控制能力。
#mermaid-svg-KnnyCkSuYVZ9bAzw{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-KnnyCkSuYVZ9bAzw .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-KnnyCkSuYVZ9bAzw .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-KnnyCkSuYVZ9bAzw .error-icon{fill:#552222;}#mermaid-svg-KnnyCkSuYVZ9bAzw .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-KnnyCkSuYVZ9bAzw .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-KnnyCkSuYVZ9bAzw .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-KnnyCkSuYVZ9bAzw .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-KnnyCkSuYVZ9bAzw .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-KnnyCkSuYVZ9bAzw .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-KnnyCkSuYVZ9bAzw .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-KnnyCkSuYVZ9bAzw .marker{fill:#333333;stroke:#333333;}#mermaid-svg-KnnyCkSuYVZ9bAzw .marker.cross{stroke:#333333;}#mermaid-svg-KnnyCkSuYVZ9bAzw svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-KnnyCkSuYVZ9bAzw p{margin:0;}#mermaid-svg-KnnyCkSuYVZ9bAzw .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-KnnyCkSuYVZ9bAzw .cluster-label text{fill:#333;}#mermaid-svg-KnnyCkSuYVZ9bAzw .cluster-label span{color:#333;}#mermaid-svg-KnnyCkSuYVZ9bAzw .cluster-label span p{background-color:transparent;}#mermaid-svg-KnnyCkSuYVZ9bAzw .label text,#mermaid-svg-KnnyCkSuYVZ9bAzw span{fill:#333;color:#333;}#mermaid-svg-KnnyCkSuYVZ9bAzw .node rect,#mermaid-svg-KnnyCkSuYVZ9bAzw .node circle,#mermaid-svg-KnnyCkSuYVZ9bAzw .node ellipse,#mermaid-svg-KnnyCkSuYVZ9bAzw .node polygon,#mermaid-svg-KnnyCkSuYVZ9bAzw .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-KnnyCkSuYVZ9bAzw .rough-node .label text,#mermaid-svg-KnnyCkSuYVZ9bAzw .node .label text,#mermaid-svg-KnnyCkSuYVZ9bAzw .image-shape .label,#mermaid-svg-KnnyCkSuYVZ9bAzw .icon-shape .label{text-anchor:middle;}#mermaid-svg-KnnyCkSuYVZ9bAzw .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-KnnyCkSuYVZ9bAzw .rough-node .label,#mermaid-svg-KnnyCkSuYVZ9bAzw .node .label,#mermaid-svg-KnnyCkSuYVZ9bAzw .image-shape .label,#mermaid-svg-KnnyCkSuYVZ9bAzw .icon-shape .label{text-align:center;}#mermaid-svg-KnnyCkSuYVZ9bAzw .node.clickable{cursor:pointer;}#mermaid-svg-KnnyCkSuYVZ9bAzw .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-KnnyCkSuYVZ9bAzw .arrowheadPath{fill:#333333;}#mermaid-svg-KnnyCkSuYVZ9bAzw .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-KnnyCkSuYVZ9bAzw .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-KnnyCkSuYVZ9bAzw .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-KnnyCkSuYVZ9bAzw .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-KnnyCkSuYVZ9bAzw .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-KnnyCkSuYVZ9bAzw .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-KnnyCkSuYVZ9bAzw .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-KnnyCkSuYVZ9bAzw .cluster text{fill:#333;}#mermaid-svg-KnnyCkSuYVZ9bAzw .cluster span{color:#333;}#mermaid-svg-KnnyCkSuYVZ9bAzw div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-KnnyCkSuYVZ9bAzw .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-KnnyCkSuYVZ9bAzw rect.text{fill:none;stroke-width:0;}#mermaid-svg-KnnyCkSuYVZ9bAzw .icon-shape,#mermaid-svg-KnnyCkSuYVZ9bAzw .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-KnnyCkSuYVZ9bAzw .icon-shape p,#mermaid-svg-KnnyCkSuYVZ9bAzw .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-KnnyCkSuYVZ9bAzw .icon-shape .label rect,#mermaid-svg-KnnyCkSuYVZ9bAzw .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-KnnyCkSuYVZ9bAzw .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-KnnyCkSuYVZ9bAzw .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-KnnyCkSuYVZ9bAzw :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 隐私计算协作
模型参数
模型参数
聚合梯度
聚合梯度
数据不出域
数据不出域
机构A本地Agent
安全聚合
机构B本地Agent
机构A数据
机构B数据
传统协作
数据出域
数据出域
机构A原始数据
中心服务器
机构B原始数据
联合模型
图 2:传统协作与隐私计算协作的数据流向对比
三、OpenClaw Skill 隔离机制与隐私计算的映射
3.1 Skill 隔离层与隐私计算协议层

图 3:OpenClaw Skill 隔离层与隐私计算协议层映射
OpenClaw 的 Skill 系统与隐私计算各环节可以建立精确映射:
| OpenClaw 概念 | 隐私计算概念 | 映射关系 |
|---|---|---|
| Skill 执行沙箱 | 数据域 | Skill 在本地沙箱执行,原始数据不离开沙箱 |
| Skill 间消息 | 模型参数/梯度 | 只传递经安全处理的参数,不传递原始数据 |
| Skill 权限声明 | 数据访问控制 | permissions 精确声明可外发数据的类型和粒度 |
| Skill 组合编排 | 联邦学习流水线 | 多个 Skill 按隐私协议编排,形成完整训练流水线 |
| Skill 审计日志 | 安全审计追踪 | 执行日志与隐私计算审计需求天然对齐 |
3.2 为什么不是简单的消息加密?
一个直觉性的疑问是:Agent 之间直接加密通信不就行了吗?
答案在于安全语义的粒度差异:
- 消息加密只保证传输层机密性------数据在传输中不被窃听;
- 隐私计算保证计算层机密性------即使参与方看到中间结果,也无法推断原始数据。
在联邦学习中,即使梯度在传输过程中加密,聚合服务器仍然能看到解密后的梯度值。攻击者可以通过梯度反演(Gradient Inversion)从梯度中重建训练数据。因此,必须在 Skill 层面集成差分隐私、安全聚合等机制,而不是简单加一层传输加密。
四、方案设计:跨机构隐私计算 Agent 协作架构
4.1 整体架构

图 4:跨机构隐私计算 Agent 协作完整架构
基于 OpenClaw Skill 体系与隐私计算技术,跨机构 Agent 协作架构可分为三层:
#mermaid-svg-omNLDmR44YG8pV6O{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-omNLDmR44YG8pV6O .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-omNLDmR44YG8pV6O .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-omNLDmR44YG8pV6O .error-icon{fill:#552222;}#mermaid-svg-omNLDmR44YG8pV6O .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-omNLDmR44YG8pV6O .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-omNLDmR44YG8pV6O .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-omNLDmR44YG8pV6O .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-omNLDmR44YG8pV6O .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-omNLDmR44YG8pV6O .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-omNLDmR44YG8pV6O .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-omNLDmR44YG8pV6O .marker{fill:#333333;stroke:#333333;}#mermaid-svg-omNLDmR44YG8pV6O .marker.cross{stroke:#333333;}#mermaid-svg-omNLDmR44YG8pV6O svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-omNLDmR44YG8pV6O p{margin:0;}#mermaid-svg-omNLDmR44YG8pV6O .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-omNLDmR44YG8pV6O .cluster-label text{fill:#333;}#mermaid-svg-omNLDmR44YG8pV6O .cluster-label span{color:#333;}#mermaid-svg-omNLDmR44YG8pV6O .cluster-label span p{background-color:transparent;}#mermaid-svg-omNLDmR44YG8pV6O .label text,#mermaid-svg-omNLDmR44YG8pV6O span{fill:#333;color:#333;}#mermaid-svg-omNLDmR44YG8pV6O .node rect,#mermaid-svg-omNLDmR44YG8pV6O .node circle,#mermaid-svg-omNLDmR44YG8pV6O .node ellipse,#mermaid-svg-omNLDmR44YG8pV6O .node polygon,#mermaid-svg-omNLDmR44YG8pV6O .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-omNLDmR44YG8pV6O .rough-node .label text,#mermaid-svg-omNLDmR44YG8pV6O .node .label text,#mermaid-svg-omNLDmR44YG8pV6O .image-shape .label,#mermaid-svg-omNLDmR44YG8pV6O .icon-shape .label{text-anchor:middle;}#mermaid-svg-omNLDmR44YG8pV6O .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-omNLDmR44YG8pV6O .rough-node .label,#mermaid-svg-omNLDmR44YG8pV6O .node .label,#mermaid-svg-omNLDmR44YG8pV6O .image-shape .label,#mermaid-svg-omNLDmR44YG8pV6O .icon-shape .label{text-align:center;}#mermaid-svg-omNLDmR44YG8pV6O .node.clickable{cursor:pointer;}#mermaid-svg-omNLDmR44YG8pV6O .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-omNLDmR44YG8pV6O .arrowheadPath{fill:#333333;}#mermaid-svg-omNLDmR44YG8pV6O .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-omNLDmR44YG8pV6O .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-omNLDmR44YG8pV6O .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-omNLDmR44YG8pV6O .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-omNLDmR44YG8pV6O .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-omNLDmR44YG8pV6O .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-omNLDmR44YG8pV6O .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-omNLDmR44YG8pV6O .cluster text{fill:#333;}#mermaid-svg-omNLDmR44YG8pV6O .cluster span{color:#333;}#mermaid-svg-omNLDmR44YG8pV6O div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-omNLDmR44YG8pV6O .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-omNLDmR44YG8pV6O rect.text{fill:none;stroke-width:0;}#mermaid-svg-omNLDmR44YG8pV6O .icon-shape,#mermaid-svg-omNLDmR44YG8pV6O .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-omNLDmR44YG8pV6O .icon-shape p,#mermaid-svg-omNLDmR44YG8pV6O .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-omNLDmR44YG8pV6O .icon-shape .label rect,#mermaid-svg-omNLDmR44YG8pV6O .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-omNLDmR44YG8pV6O .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-omNLDmR44YG8pV6O .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-omNLDmR44YG8pV6O :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 协调层 - 聚合Agent
机构B - 研究员Agent
机构A - 主任医师Agent
原始梯度
加噪梯度
数据不出域
原始梯度
加噪梯度
数据不出域
加密梯度
加密梯度
聚合参数
聚合参数
Leader Agent A
Skill: 本地训练
Skill: DP梯度处理
Skill: 参数封装
患者数据A
Leader Agent B
Skill: 本地训练
Skill: DP梯度处理
Skill: 参数封装
患者数据B
Aggregator Agent
Skill: 安全聚合
Skill: 一致性验证
Skill: 模型下发
图 5:跨机构隐私计算 Agent 协作架构图
4.2 核心设计原则
本架构遵循四条原则:
- 数据不动模型动:原始数据在机构本地存储和计算,只有经过隐私保护处理的模型参数/梯度允许外发。
- Skill 即安全边界:每个隐私计算步骤封装为独立 Skill,数据流受权限声明约束,单点被攻破也能限制影响范围。
- 可验证的安全:梯度裁剪验证、一致性验证、差分隐私预算追踪,确保每个关键步骤都可审计。
- 最小权限聚合:聚合 Agent 只负责参数聚合和下发,不拥有原始数据访问权限。
这四条原则不是孤立的,而是互相加强。数据不动模型动定义了目标,Skill 即安全边界提供了实现机制,可验证的安全让机制可信,最小权限聚合则把攻击面降到最低。把它们组合起来,才能形成一个有纵深防御能力的跨机构协作体系。
4.3 YAML 配置:隐私计算 Skill 定义
下面的 YAML 将本地训练、差分隐私处理、安全封装三个 Skill 的核心权限与参数集中声明:
yaml
# openclaw-privacy-skills.yaml
local_federated_train:
name: "本地联邦训练"
inputs:
- { name: global_model_params, type: tensor_dict, source: skill.aggregate_dispatch }
- { name: local_dataset, type: data_loader, source: local_storage }
outputs:
- { name: raw_gradients, type: tensor_dict, destination: skill.dp_gradient_processor }
permissions:
data_access: [{ scope: local_training_data, mode: read_only, export: false, retention: session_only }]
network: { outbound: false }
dp_gradient_processor:
name: "差分隐私梯度处理器"
inputs:
- { name: raw_gradients, type: tensor_dict, source: skill.local_federated_train }
- { name: dp_config, type: object, properties: { epsilon: 1.0, delta: 1e-5, max_grad_norm: 1.0 } }
outputs:
- { name: dp_gradients, type: tensor_dict, destination: skill.secure_param_wrapper }
security:
privacy_budget: { total_epsilon: 10.0, alert_threshold: 0.8, hard_stop: true }
secure_param_wrapper:
name: "安全参数封装"
inputs:
- { name: dp_gradients, type: tensor_dict, source: skill.dp_gradient_processor }
outputs:
- { name: wrapped_params, type: encrypted_blob, destination: skill.secure_aggregation }
permissions:
data_access: [{ scope: dp_gradients, mode: read_only, export: true, export_format: encrypted }]
network: { outbound: true, allowed_destinations: [{ agent: aggregator_agent, skill: secure_aggregation }] }
代码解释(100 字+) :这份 YAML 用声明式配置把联邦学习的隐私保护流水线拆成三个 Skill。local_federated_train 禁止任何数据外发和网络外发,确保原始数据不出域;dp_gradient_processor 通过 privacy_budget 追踪差分隐私预算消耗,超出总预算时硬停止;secure_param_wrapper 是唯一允许外发的 Skill,且必须加密并限定接收方。权限逐级递增,形成纵深防御。
五、联邦学习 Agent 协作时序与实现
5.1 完整时序
A,B,AGG 审计服务 聚合Agent 机构B Agent 机构A Agent A,B,AGG 审计服务 聚合Agent 机构B Agent 机构A Agent #mermaid-svg-g7m1wFIECsdw3utg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-g7m1wFIECsdw3utg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-g7m1wFIECsdw3utg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-g7m1wFIECsdw3utg .error-icon{fill:#552222;}#mermaid-svg-g7m1wFIECsdw3utg .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-g7m1wFIECsdw3utg .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-g7m1wFIECsdw3utg .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-g7m1wFIECsdw3utg .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-g7m1wFIECsdw3utg .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-g7m1wFIECsdw3utg .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-g7m1wFIECsdw3utg .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-g7m1wFIECsdw3utg .marker{fill:#333333;stroke:#333333;}#mermaid-svg-g7m1wFIECsdw3utg .marker.cross{stroke:#333333;}#mermaid-svg-g7m1wFIECsdw3utg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-g7m1wFIECsdw3utg p{margin:0;}#mermaid-svg-g7m1wFIECsdw3utg .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-g7m1wFIECsdw3utg text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-g7m1wFIECsdw3utg .actor-line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-g7m1wFIECsdw3utg .innerArc{stroke-width:1.5;stroke-dasharray:none;}#mermaid-svg-g7m1wFIECsdw3utg .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-g7m1wFIECsdw3utg .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-g7m1wFIECsdw3utg #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-g7m1wFIECsdw3utg .sequenceNumber{fill:white;}#mermaid-svg-g7m1wFIECsdw3utg #sequencenumber{fill:#333;}#mermaid-svg-g7m1wFIECsdw3utg #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-g7m1wFIECsdw3utg .messageText{fill:#333;stroke:none;}#mermaid-svg-g7m1wFIECsdw3utg .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-g7m1wFIECsdw3utg .labelText,#mermaid-svg-g7m1wFIECsdw3utg .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-g7m1wFIECsdw3utg .loopText,#mermaid-svg-g7m1wFIECsdw3utg .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-g7m1wFIECsdw3utg .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-g7m1wFIECsdw3utg .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-g7m1wFIECsdw3utg .noteText,#mermaid-svg-g7m1wFIECsdw3utg .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-g7m1wFIECsdw3utg .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-g7m1wFIECsdw3utg .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-g7m1wFIECsdw3utg .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-g7m1wFIECsdw3utg .actorPopupMenu{position:absolute;}#mermaid-svg-g7m1wFIECsdw3utg .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-g7m1wFIECsdw3utg .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-g7m1wFIECsdw3utg .actor-man circle,#mermaid-svg-g7m1wFIECsdw3utg line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-g7m1wFIECsdw3utg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 第一阶段:初始化与密钥协商 第二阶段:本地训练 原始数据不出域 原始数据不出域 第三阶段:隐私保护处理 梯度裁剪 + DP噪声 梯度裁剪 + DP噪声 第四阶段:安全聚合 安全聚合:无法还原单方梯度 第五阶段:模型下发 第六阶段:审计记录 全局模型参数 v0 + 训练配置 全局模型参数 v0 + 训练配置 公钥 PK_A 公钥 PK_B Skill:local_train(本地数据) Skill:local_train(本地数据) Skill:dp_process(梯度, epsilon=1.0) Skill:dp_process(梯度, epsilon=1.0) Enc(PK_A, dp_grad_A) + Sign_A Enc(PK_B, dp_grad_B) + Sign_B Skill:secure_aggregate() Skill:consistency_verify() 聚合后模型参数 v1 聚合后模型参数 v1 本轮训练元数据(不含原始数据/梯度) 本轮隐私预算消耗 epsilon_used 本轮隐私预算消耗 epsilon_used
图 6:联邦学习场景下多 Agent 协作完整时序
从时序图中可以看出,整个流程有三条关键边界:原始数据始终停留在本地 Skill 内部;加密梯度是唯一能跨域流动的对象;审计服务只接收元数据。任何一环如果打破了这些边界,隐私保证就会失效。这也是为什么我们要把每个处理步骤都做成独立 Skill,并通过权限配置显式约束的原因。
5.2 本地训练与 DP 处理代码实现
python
import torch, torch.nn as nn, hashlib, gzip, pickle, logging
from torch.utils.data import DataLoader
from opacus import PrivacyEngine
from typing import Dict, Tuple
logger = logging.getLogger("federated_agent")
class FederatedLocalSkill:
def __init__(self, model: nn.Module, train_loader: DataLoader,
lr: float = 0.01, epsilon: float = 1.0, delta: float = 1e-5,
max_grad_norm: float = 1.0, epochs: int = 1, budget: float = 10.0):
self.model, self.train_loader, self.epochs, self.budget = model, train_loader, epochs, budget
self.optimizer = torch.optim.SGD(model.parameters(), lr=lr)
self.privacy_engine = PrivacyEngine()
self.model, self.optimizer, self.train_loader = self.privacy_engine.make_private_with_epsilon(
module=model, optimizer=self.optimizer, data_loader=train_loader, epochs=epochs,
target_epsilon=epsilon, target_delta=delta, max_grad_norm=max_grad_norm)
def train_and_process(self) -> Tuple[Dict[str, torch.Tensor], float]:
eps = self.privacy_engine.get_epsilon(delta=1e-5)
if eps >= self.budget:
raise RuntimeError(f"隐私预算耗尽 epsilon={eps:.4f}")
self.model.train()
for _ in range(self.epochs):
for data, target in self.train_loader:
self.optimizer.zero_grad()
nn.functional.cross_entropy(self.model(data), target).backward()
self.optimizer.step()
grads = {n: p.grad.detach().clone() for n, p in self.model.named_parameters() if p.grad is not None}
spent = self.privacy_engine.get_epsilon(delta=1e-5)
if spent > self.budget * 0.8:
logger.warning(f"隐私预算告警 {spent:.4f}/{self.budget}")
return grads, spent
def wrap_gradients(self, grads: Dict[str, torch.Tensor], pub_key: bytes) -> bytes:
compressed = gzip.compress(pickle.dumps(grads))
digest = hashlib.sha256(compressed).hexdigest()
# 生产环境应使用 AES-GCM + RSA 混合加密;演示直接返回压缩包
logger.info(f"封装完成 size={len(compressed)} hash={digest[:16]}")
return compressed
代码解释(100 字+) :FederatedLocalSkill 封装了本地训练、差分隐私处理与参数封装。初始化时使用 Opacus 的 make_private_with_epsilon,根据目标隐私预算自动计算噪声尺度;训练前检查累计 epsilon 是否超过总预算,耗尽则硬停止;训练后提取 DP 梯度并压缩哈希。原始数据始终停留在 train_loader,不会离开本 Skill 边界。
5.3 安全聚合与一致性验证
python
import torch
from typing import Dict, List
import logging
logger = logging.getLogger("aggregator")
class SecureAggregationSkill:
"""安全聚合 Skill:收集、解密、FedAvg 聚合与一致性验证。"""
def __init__(self, num_clients: int, threshold: int = None):
self.num_clients = num_clients
self.threshold = threshold or num_clients
self.collected: List[Dict[str, torch.Tensor]] = []
self.signatures: Dict[str, str] = {}
if num_clients < 3:
logger.warning("参与方少于 3,共谋抵抗能力不足")
def collect(self, client_id: str, encrypted: bytes, signature: str) -> bool:
if not self._verify_signature(client_id, encrypted, signature):
logger.error(f"{client_id} 签名验证失败")
return False
params = self._decrypt_and_deserialize(encrypted)
self.collected.append(params)
self.signatures[client_id] = signature
logger.info(f"收到 {client_id} 参数 | {len(self.collected)}/{self.num_clients}")
return True
def aggregate(self) -> Dict[str, torch.Tensor]:
if len(self.collected) < self.threshold:
raise RuntimeError(f"参与方不足:需要 {self.threshold},实际 {len(self.collected)}")
aggregated = {}
for name in self.collected[0].keys():
stacked = torch.stack([p[name] for p in self.collected])
aggregated[name] = stacked.mean(dim=0)
self._verify_consistency(aggregated)
logger.info(f"聚合完成 | 参与方={len(self.collected)} 参数量={len(aggregated)}")
return aggregated
def _verify_signature(self, client_id: str, data: bytes, sig: str) -> bool:
# 生产环境替换为 ECDSA/RSA-PSS 验签
return True
def _decrypt_and_deserialize(self, encrypted: bytes) -> Dict[str, torch.Tensor]:
import gzip, pickle
# 实际应执行秘密分享重组或解密
return pickle.loads(gzip.decompress(encrypted))
def _verify_consistency(self, params: Dict[str, torch.Tensor]):
for name, tensor in params.items():
if torch.isnan(tensor).any() or torch.isinf(tensor).any():
raise ValueError(f"{name} 含 NaN/Inf,可能存在恶意梯度")
norm = tensor.norm().item()
if norm > 100.0:
logger.warning(f"{name} 范数异常 {norm:.4f},疑似梯度投毒")
代码解释(100 字+) :SecureAggregationSkill 运行在聚合服务器端,负责收集各方加密参数、执行 FedAvg 聚合与一致性验证。collect() 先验签再解密;aggregate() 检查参与方数量是否达到阈值,对每个参数按维度取平均;_verify_consistency() 检测 NaN/Inf 与异常范数,防止梯度投毒。参与方少于 3 时会提示共谋风险不足。
5.4 审计追踪与隐私预算监控
python
from dataclasses import dataclass
from datetime import datetime
from typing import Optional
@dataclass
class FederatedAuditRecord:
"""联邦学习训练审计记录(不含原始数据/梯度)"""
round_id: str
timestamp: datetime
participant_id: str # 脱敏标识
epsilon_consumed: float # 本轮 epsilon
epsilon_cumulative: float # 累计 epsilon
model_version: str
num_samples: int
anomaly_detected: bool = False
anomaly_details: Optional[str] = None
data_did_not_leave_domain: bool = True
dp_guarantee_satisfied: bool = True
def log_audit(record: FederatedAuditRecord, sink):
# 仅写入元数据,原始梯度不进入审计日志
sink.write(record)
logger.info(f"审计记录已生成 round={record.round_id} epsilon_cum={record.epsilon_cumulative:.4f}")
代码解释(100 字+) :审计记录只包含训练元数据:轮次、脱敏参与方标识、隐私预算消耗、模型版本、样本数和异常标记。关键设计是不含原始数据和梯度 ,避免审计本身成为新的隐私泄露通道。data_did_not_leave_domain 与 dp_guarantee_satisfied 两个布尔字段可直接用于合规报告。
python
class PrivacyBudgetMonitor:
"""跨轮次隐私预算追踪与告警"""
def __init__(self, total_epsilon: float = 10.0, alert_ratio: float = 0.8):
self.total = total_epsilon
self.alert_ratio = alert_ratio
self.consumed = 0.0
self.history = []
def spend(self, round_id: str, epsilon: float):
self.consumed += epsilon
self.history.append((round_id, epsilon, self.consumed))
ratio = self.consumed / self.total
if ratio >= 1.0:
raise RuntimeError(f"隐私预算已耗尽 {self.consumed:.4f}/{self.total}")
if ratio >= self.alert_ratio:
logger.warning(f"隐私预算告警 {ratio*100:.1f}% | 建议暂停训练")
def remaining(self) -> float:
return self.total - self.consumed
def report(self) -> dict:
return {
"total_epsilon": self.total,
"consumed_epsilon": self.consumed,
"remaining": self.remaining(),
"rounds": len(self.history),
}
代码解释(100 字+) :PrivacyBudgetMonitor 负责跨轮次累加隐私预算消耗。每轮训练调用 spend() 更新累计值,当消耗比例达到告警阈值时发出警告,达到总预算上限时抛出异常强制停止。report() 可导出当前预算状态,用于 Grafana/Prometheus 等监控大盘。隐私预算是有限资源,必须像 GPU/内存一样被持续监控,提前规划训练轮数是合规落地的关键。
六、风险对比:有隐私计算 vs 无隐私计算
6.1 全维度风险对比
| 风险维度 | 无隐私计算 | 有隐私计算(联邦学习+DP) | 风险降低幅度 |
|---|---|---|---|
| 数据出域风险 | 原始数据直接传输,完全暴露 | 数据不出域,只传加密参数 | 显著降低 |
| 梯度反演攻击 | 不适用(直接传数据) | DP噪声使梯度反演失效 | 大幅降低(取决于epsilon) |
| 共谋攻击 | 无防护,任意两方可共享数据 | 安全聚合 + 秘密分享抵抗共谋 | 明显降低 |
| 重识别攻击 | 脱敏数据仍可被关联重识别 | DP从数学上限定重识别概率 | 显著降低 |
| 中间人攻击 | 依赖传输层加密 | 参数级加密 + 签名双重保护 | 明显降低 |
| 合规审计 | 难以证明数据未出域 | Skill 审计日志 + DP预算追踪 | 可证明合规 |
| 模型投毒 | 无防护 | 一致性验证 + 梯度裁剪 | 有效降低 |
| 性能开销 | 低 | 中(DP噪声 + 通信轮次) | 训练时间可能增加 2-5 倍 |
| 模型精度 | 最优 | 略有下降(DP噪声引入) | 通常 1-3% 精度损失 |
这张表格展示了隐私计算带来的不是零风险,而是风险的可控转移。数据出域风险、重识别风险和合规审计风险得到了最显著的改善,但性能开销和模型精度下降是必须付出的成本。在实际项目中,建议先通过小规模试点测算这些成本,制定明确的回退方案,再决定是否全量推广。
6.2 典型攻击场景分析
梯度反演攻击:在没有 DP 保护时,攻击者可以从模型梯度中重建训练数据。加入差分隐私后,梯度中的噪声使反演攻击的重建质量急剧下降。当 epsilon = 1.0 时,重建图像的 PSNR 通常低于 15dB,几乎不可辨认。
理解这些攻击有助于我们制定合理的 epsilon 值。对于医疗影像这类对精度敏感的场景,通常选择 epsilon=1.0 作为起点,既能提供可证明的隐私保证,又能将精度损失控制在 1-3% 以内。如果数据敏感度极高,例如基因序列,可以考虑 epsilon=0.1,但需要接受更大的精度下降。
成员推断攻击:攻击者试图判断某条数据是否参与了训练。无保护时攻击准确率可达 80% 以上;在 epsilon = 1.0 的 DP 保护下,攻击准确率降至接近随机猜测。
6.3 隐私预算的经济学
隐私保护不是免费的。epsilon 值直接决定隐私强度与模型精度的权衡:
| epsilon 值 | 隐私强度 | 模型精度影响 | 适用场景 |
|---|---|---|---|
| 0.1 | 极强 | 显著下降(5-10%) | 极敏感数据(HIV诊断) |
| 1.0 | 强 | 轻微下降(1-3%) | 医疗影像、金融风控 |
| 3.0 | 中等 | 几乎无影响 | 一般敏感数据 |
| 10.0 | 弱 | 无影响 | 低敏感数据 |
⚠️ 关键决策 :epsilon 的选择不是纯技术决策,而是业务与合规决策。技术团队应提供不同 epsilon 下的精度-隐私权衡曲线,由业务和合规团队共同拍板。
七、适用场景与边界
7.1 适用场景
本方案特别适合以下场景:
- 多机构医疗联合研究:多家医院联合训练疾病诊断模型,患者数据不出域,最终模型效果接近集中训练。
- 跨银行反洗钱联合建模:各银行本地训练,只共享模型参数,满足银保监会数据不出域要求。
- 保险+医疗联合核保:保险公司与医院特征互补,通过纵向联邦学习实现特征对齐和联合推理,双方数据互不可见。
7.2 不适用场景
以下场景不建议直接套用本方案:
- 单机构内部协作:所有数据在同一机构内部,引入隐私计算增加不必要的复杂度和性能开销。
- 公开数据联合分析:数据本身公开,隐私计算没有意义。
- 实时性要求极高的场景:联邦学习多轮通信延迟较大,实时交易风控需采用联邦推理或其他方案。
- 参与方少于 3 方:安全聚合的共谋抵抗能力依赖参与方数量,只有 2 方时一方可推断另一方梯度。
7.3 边界意识:方案的局限性
即使采用了隐私计算,仍需注意:
- 隐私预算耗尽:训练轮数越多,累计 epsilon 越大,隐私保护越弱。
- 模型泄露:最终联合模型本身可能泄露训练数据的某些统计特征,发布后需进行成员推断测试。
- 侧信道攻击:参与方的计算时间、内存访问模式可能泄露数据特征,TEE 可部分缓解。
- 合规灰色地带:不同法域对"数据不出域"的定义可能不同,梯度是否算"数据"在法律上仍有争议。
这些局限性提醒我们:隐私计算是风险缓解手段,而不是风险消除手段。上线前必须完成安全审计、渗透测试和成员推断评估,并建立应急响应预案。只有在技术、流程、法律三个层面都做好准备,才能把方案安全地投入生产。
八、总结与展望
本文从 OpenClaw 的 Skill 隔离机制出发,系统性地探讨了 AI Agent 与隐私计算的深度融合方案。
核心结论有三点:
第一,Agent 与隐私计算天然契合。Agent 的分布式架构、消息传递机制和 Skill 隔离边界,与"数据不动模型动"的核心理念高度吻合。OpenClaw 的 Skill 系统为隐私计算提供了天然的封装和隔离能力。
第二,Skill 权限配置是实现安全边界的关键机制 。通过 YAML 中的 permissions 字段,可以精确声明每个 Skill 的数据访问、外发和网络权限。这种声明式安全策略比命令式代码检查更可靠,也更容易审计。
第三,隐私计算不是万能的。它适合多机构、强监管、数据敏感的场景;不适合单机构、公开数据、实时性要求极高的场景。方案选型时必须清醒认识这些边界。
未来可以朝四个方向演进:一是设计 Agent 原生的隐私计算协议,自动协商隐私策略;二是建立跨链路隐私预算管理机制;三是结合零知识证明实现可验证计算;四是研究动态参与方管理下的安全聚合正确性。把 Agent 的协作能力与隐私计算的保障机制结合起来,才能让多机构 AI 真正从"想做"走向"敢做"。
参考资料
- McMahan B, et al. Communication-Efficient Learning of Deep Networks from Decentralized Data. AISTATS 2017. FedAvg 原始论文
- Abadi M, et al. Deep Learning with Differential Privacy. CCS 2016. DP-SGD 原始论文
- Zhu L, et al. Deep Leakage from Gradients. NeurIPS 2019. 梯度反演攻击
- PySyft 官方仓库 :https://github.com/OpenMined/PySyft
- SecretFlow 官方仓库与文档 :https://github.com/secretflow/secretflow / https://www.secretflow.org.cn/
- Opacus 差分隐私库 :https://github.com/pytorch/opacus
- OpenClaw 官方仓库 :https://github.com/openclaw/openclaw
- 《中华人民共和国数据安全法》(2021年9月1日施行)
- 《中华人民共和国个人信息保护法》(2021年11月1日施行)
📌 本文适用版本:OpenClaw v2.x、PySyft 0.9+、Opacus 1.4+、SecretFlow 1.5+
📌 免责声明:本文代码示例仅供技术学习与方案参考,生产环境部署需经过专业安全团队审计。隐私计算方案的安全性与具体实现、参数配置和部署环境密切相关,请勿直接将示例代码用于生产系统。