> ## Documentation Index
> Fetch the complete documentation index at: https://docs.myrmagent.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 安全架构

> 六层纵深防御：加密、审计追踪与 PII 保护。

# 安全架构

Myrm 六层纵深防御，确保 Agent 在广泛自主权下仍安全运行。

## 安全层

| 层        | 功能     | 机制                              |
| -------- | ------ | ------------------------------- |
| **L1**   | 预算控制   | Token/WU 花费上限，3 级警告（35/45/48 轮） |
| **L2**   | 权限     | 12 维工具与资源访问策略                   |
| **L3**   | 限流     | HTTP 签名检测 + 最小恢复时间 + SSE 事件节流   |
| **L4**   | 循环检测   | 5 检测器（重复、乒乓、无进展、发散、输出递减）        |
| **L5**   | PII 保护 | 自动检测、脱敏、污点追踪                    |
| **L5.5** | 轨迹分类   | 行为分析 + 盲轨迹分类器异常检测               |

## 审批模式

| 模式               | 说明                                |
| ---------------- | --------------------------------- |
| **Auto**         | 只读自动批准，写入需确认                      |
| **YOLO**         | 全部自动批准（可信环境）                      |
| **HITL**         | 每步人工审批                            |
| **Always-Allow** | 按工具永久批准，支持 4 级粒度（权限/工具/精确参数/命令模式） |
| **Domain-HITL**  | 按域/资源分类审批                         |

### 会话级安全预设

在输入框工具栏一键切换安全姿态，无需修改全局设置：

| 预设           | 行为                                    | 适用场景         |
| ------------ | ------------------------------------- | ------------ |
| **HITL**（默认） | 每个工具调用都需审批                            | 敏感任务、生产环境    |
| **自动批准编辑**   | 文件读写自动批准；Shell、浏览器、MCP 需审批并开启 AI 智能审查 | 编码、文档编辑、日常开发 |
| **只读模式**     | 所有写操作被拒绝，读操作自动批准                      | 代码审查、探索、调研   |

* 预设与 YOLO 模式**双向互斥** —— 选择非默认预设自动关闭 YOLO，反之亦然。
* "自动批准编辑"预设开启**轨迹分类器**（LLM 智能审查）审核 Shell 命令 —— 比一律放行更安全，可疑命令仍触发人工审批。
* "只读模式"精确拒绝 12 类写操作（文件写入/编辑/删除、Shell、代码解释器、浏览器自动化、技能/定时任务管理），同时保留读取和智能体委派。
* 仅在 Agent 模式下可见；快速搜索模式下选择器自动隐藏。

### 10 层渐进式审批架构

每个工具调用经过最多 10 层确定性和智能检查后才会呈现给用户：

| 层级  | 机制                  | 作用                                            |
| --- | ------------------- | --------------------------------------------- |
| L0  | **YOLO 全量自动**       | 除 DENY 硬规则外全部自动批准                             |
| L1  | **能力声明引擎**          | 检查已声明的能力集，负向规则优先                              |
| L2  | **命令风险分类器**         | 按风险级别分类 Shell 命令（SAFE / UNKNOWN / DANGEROUS）  |
| L3  | **URL 域名白名单**       | 自动允许访问受信域名                                    |
| L4  | **路径策略**            | 强制文件访问边界（仅工作区、禁止列表等）                          |
| L5  | **只读 MCP 快速通道**     | 自动批准 `readOnlyHint=true` 且无破坏性/开放世界标志的 MCP 工具 |
| L6  | **白名单持久化**          | 4 级匹配：权限 → 工具 → 精确参数哈希 → 命令 glob 模式           |
| L7  | **污点感知升级**          | 当会话包含被污染数据（PII、凭证）时，将已 ALLOW 的工具升级为 ASK       |
| L8  | **Cron 能力围栏预批**     | 在定时任务中自动批准已声明的能力；无声明时 fail-closed             |
| L9  | **Domain HITL 运行时** | 在同一会话中自动批准已审批过的域名                             |
| L10 | **LLM 安全审核**        | AI 分类器处理 ASK/污点/Shell 升级/出站检查场景               |

### 多平台审批交互

所有审批在 WebUI 与消息渠道提供统一的四种操作：

| 操作          | WebUI                                       | Telegram/Slack/飞书               |
| ----------- | ------------------------------------------- | ------------------------------- |
| **批准**（单次）  | 按钮                                          | `/approve`、`1`、`y`、👍 emoji     |
| **编辑后批准**   | 内联编辑器 + 自动安全校验                              | 需在 WebUI 操作                     |
| **拒绝**（带反馈） | 按钮 + 反馈输入框                                  | `/deny`、`2`、`n`、👎 emoji        |
| **永久允许**    | 按钮 → 确认弹窗（Shell 四级：权限 / 工具 / 精确 / **命令模式**） | `/approve-always`、`!y`、♾️ emoji |

**永久允许**提供四级粒度：

* **权限级**：允许该权限类型的所有工具（如：允许所有文件写入）
* **工具级**：允许该工具的所有调用（如：允许 bash\_tool）
* **精确级**：仅允许该工具 + 相同参数的调用（Shell 默认，最安全）
* **模式级**（仅 Shell）：允许匹配推导 glob 的命令（如 `curl -sS *`）。复合 shell（`&&`、`|`、`;`）**永不保存**。所有模式规则在**设置 → 允许记录**中展示，可随时删除。

<Note>
  **迁移收益**：部署脚本第一次选「始终允许（此命令模式）」后，后续同类命令自动放行，无需 YOLO。Claude Code / OpenClaw 多止于工具名白名单或 CLI 签名；Myrm 提供 GUI 管理、可撤销的模式规则，并有 Chrome LIVE E2E 签收（2026-07）。
</Note>

批量审批支持 `/batch a,d,aa`（批准、拒绝、永久允许）及 WebUI 批量按钮。

### 侧边栏注意力指示

当 Agent 暂停等待审批时，侧边栏会在对应会话旁显示实时琥珀色脉冲指示点 — 即使你正在查看其他会话也能一眼发现需要操作的对话：

* **琥珀色脉冲点**：Agent 正在等待你的审批/澄清
* **绿色脉冲点**：Agent 正在生成中
* **无指示点**：会话空闲

指示器在页面刷新后自动恢复（通过服务端审批恢复机制），并通过 SSE 多路复用在所有浏览器标签页之间实时同步。当你完成审批后，指示器立即消失，Agent 恢复执行。

### 审批超时竞态保护

当审批超时自动触发与用户手动审批几乎同时发生时，系统通过幂等 `resolve_if_first` 守卫确保**恰好执行一次**：

* **WebUI**：后端返回 HTTP 409 → 前端显示友好提示并自动移除过期审批卡片
* **IM 频道**：Agent 以本地化消息（中/英）告知用户该审批已被处理
* **并发安全**：仅首个决策者生效，后续尝试全部为 no-op

这杜绝了 Agent 双重执行、重复 LLM 消耗和矛盾操作——这是大多数竞品框架存在的安全缺口。

### 审批纠错学习

当你编辑已审批动作的参数或拒绝工具调用时，系统自动学习你的偏好：

* **零 LLM 成本**：确定性 dict-diff 分类（无额外推理调用）
* **路径偏好**：对文件操作的拒绝或编辑 → 记忆为工作区约定
* **命令规则**：对 shell 命令的拒绝 → 写入程序性记忆作为永久规则
* **重复追踪**：相似模式的反复拒绝 → 自动拒绝（不再询问）

随着使用时间增长，审批弹窗会自然减少，Agent 逐渐与你的工作风格对齐。

## 错误自愈

14 层错误恢复自动处理故障。详见[错误恢复](/zh/core-concepts/error-recovery)。

## 认证与健康监控

实时监控凭证有效性和系统健康状态，自动告警：

| 能力         | 说明                                                      |
| ---------- | ------------------------------------------------------- |
| **认证检测器**  | 识别 15+ 种认证失败模式（覆盖 OpenAI、Anthropic、Google 等主流 Provider） |
| **熔断保护**   | 永久性认证失败时立即停止重试，避免无意义的 Token 消耗                          |
| **探测策略**   | 智能恢复探测（会话过期 60s / 永久认证 600s），自动检测 Key 何时恢复可用            |
| **暴力破解告警** | 后台监控异常认证模式（10+ 次/IP/小时），创建去重系统通知                        |
| **健康历史**   | 每 3 分钟记录系统健康分数到数据库，保留 7 天趋势                             |
| **实时推送**   | 健康状态变更和内存指标通过 ServerEventBus 专用通道实时推送前端（与聊天工具进度 SSE 分轨） |
| **部署感知**   | Local 模式跳过网络审计（省资源），远程模式启用全量监控                          |

## 提示词注入防御

### 内容边界（输出侧）

5 层防御包装外部内容与工具输出，**覆盖全工具链**（内置工具 + 第三方 MCP 工具 + PTC 内置工具）：

| 层     | 技术         | 拦截                        |
| ----- | ---------- | ------------------------- |
| **1** | Unicode 折叠 | 隐形字符走私                    |
| **2** | 结构框架剥离     | 仿系统标签的 XML/HTML           |
| **3** | 标记消毒       | 已知边界/分隔符模式                |
| **4** | 随机边界       | 不可预测 `===BOUNDARY_xxx===` |
| **5** | 模式检测       | 角色/指令覆盖、系统模拟              |

第三方 MCP 工具返回的数据自动经过 5 层防护后才进入 LLM 上下文，恶意 MCP 服务器无法通过工具输出注入指令。

### Prompt Guard（输入侧）

113 条模式、26 个威胁类别扫描用户消息、项目规则、技能文件；含反混淆与双语（如「忽略之前的指令」）检测。

### 子 Agent 安全

| 控制          | 机制                                                                                                                                                                                                        |
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **工具白名单**   | `DelegationCapabilityManifest`                                                                                                                                                                            |
| **记忆隔离**    | EPHEMERAL / READ\_ONLY\_GLOBAL / COLLABORATIVE                                                                                                                                                            |
| **污点传播**    | `TaintTracker` 子→父；外网数据污染则父会话污点                                                                                                                                                                           |
| **Sink 策略** | 污点会话对危险工具组合升级 HITL                                                                                                                                                                                        |
| **预算边界**    | 4 维 `DelegationBudget` 防失控子 Agent 链                                                                                                                                                                       |
| **递归熔断**    | 5 层递进防护：L1 全局深度硬限（最多 3 层）+ L2 配置级深度（LEAF 强制 depth=0）+ L3 后代预算制（最多 20 含并行分支，原子预扣）+ L4 并发限制（信号量=5 + 每 Agent 子代=5）+ L5 LoopGuard 7 类行为检测（重复/乒乓/无进展/发散/递减）。拒绝时发送前端 STATUS 事件 + 结构化建议行动帮助 LLM 自纠正。父中止时级联取消全部后代 |

## 技能安装安全

从任何来源（GitHub、SkillHub、文件上传）安装技能时，每个技能必须通过**三层安全门禁**才能激活：

| 层级         | 机制               | 检测目标                                         |
| ---------- | ---------------- | -------------------------------------------- |
| **正则扫描**   | 113 规则覆盖 26 类威胁  | Shell 注入、凭证窃取、数据外泄、混淆攻击载荷                    |
| **AST 分析** | Python 抽象语法树结构分析 | 危险导入（`os.system`、`subprocess`）、隐藏函数调用、可疑代码模式 |
| **LLM 审计** | 语言模型语义威胁评估       | 社工攻击、多步外泄链、意图伪装的恶意逻辑                         |

### 信任等级

技能被分配四个信任等级之一，决定其运行时能力范围：

| 等级            | 来源        | 能力                    |
| ------------- | --------- | --------------------- |
| **TRUSTED**   | 内置/官方     | 完整工具访问                |
| **INSTALLED** | 用户安装，扫描通过 | 限定 `allowed_tools` 范围 |
| **UNTRUSTED** | 扫描标记警告    | 仅只读工具，无网络/文件系统        |
| **REJECTED**  | 扫描发现严重问题  | 隔离，无法执行               |

`quarantine_aware` 装饰器在运行时自动过滤被隔离的技能——被隔离的技能从 Agent 可用工具列表中静默消失，不会产生错误。

### GUI 安全审查

三处前端组件协同展示安全扫描结果，每个发现都包含**精确行号定位**（如 `L42 Command injection: recursive delete`），帮助开发者快速跳转到问题代码：

| 组件                      | 触发场景                | 展示内容                                 |
| ----------------------- | ------------------- | ------------------------------------ |
| **ScanConfirmDialog**   | 从 SkillHub 搜索安装时    | 扫描发现列表 + 严重程度徽章 + 行号 + 确认/取消         |
| **Blocked Dialog**      | 启用含 CRITICAL 发现的技能时 | 阻止原因 + 发现详情 + 行号 + "Force Enable" 选项 |
| **SecurityScanSection** | 技能详情页               | 按严重程度分组的完整发现列表 + 行号 + 安全评分（0-100）    |

安全评分采用百分制，从 100 分起扣：CRITICAL 扣 25、HIGH 扣 15、MEDIUM 扣 8、LOW 扣 3。同时生成 `trust_recommendation`（trusted/installed/untrusted/reject）指导信任决策。

## MCP 工具安全

### 配置安全扫描

每个 MCP 服务器在激活前会自动扫描 13 种威胁类型：

| 威胁类型                    | 检测内容            |
| ----------------------- | --------------- |
| `prompt_injection`      | 配置中嵌入的恶意系统提示    |
| `name_injection`        | 设计用于误导 LLM 的工具名 |
| `concealment`           | 描述中隐藏的指令        |
| `exfiltration`          | 通过外部通道窃取数据      |
| `credential_harvesting` | 收集用户凭证的企图       |
| `context_leak`          | 向外部服务泄露对话上下文    |
| `arbitrary_execution`   | 不受限的代码执行能力      |
| `risky_profile`         | 已知高风险服务器配置      |
| `suspicious_url`        | 非 HTTPS 或可疑域名   |
| `sensitive_path`        | 访问敏感文件系统路径      |
| `hardcoded_secret`      | 配置中硬编码的凭证       |
| `supply_chain`          | 依赖链受损指标         |
| `supply_chain_malware`  | 已知恶意包签名         |

扫描结果通过 `ScanConfirmDialog` 展示严重程度徽章，用户可信任、拒绝或强制启用（自担风险）。

### 基础安全

工具名 `mcp__{server}__{tool}` 隔离；OSV 恶意包检测；按 Agent 工具过滤；`destructiveHint` 默认禁用。

### 动态工具变更安全

当 MCP 服务器在运行时添加或移除工具（通过 `tools/list_changed` 通知）时，Myrm 在不打断工作流的前提下确保安全：

* **自动安全审查** — 新增工具会经过与配置时相同的 13 类威胁扫描，不通过则拒绝并记录警告，不安全的工具绝不会被静默激活
* **提示词缓存保护** — Agent 面向的工具列表保持冻结状态，动态变更仅更新内部执行层，确保提示词前缀缓存命中率不受外部 MCP 服务器行为影响
* **零用户打断** — 与需要手动 `/reload` 确认的 CLI 竞品不同，Myrm 透明处理工具变更，用户不会被无法有效评估的确认对话框打断

### SSRF 防护

* **统一出站 HTTP 层**：web\_fetch、HTTP 工具、OpenAPI 执行器、技能 ZIP 安装、媒体解析、robots/sitemap、渠道媒体下载、飞书附件等全部收敛到 `secure_fetch` / `async_pin_url`，消除历史裸 httpx 盲区
* **手动重定向循环**：`follow_redirects=False`，逐跳重新验证目标地址，消除 DNS 重绑定 TOCTOU 攻击
* **DNS Pinning**：解析后的 IP 直接替换域名，绕过 DNS TTL 刷新窗口
* **全面 IP 黑名单**：RFC1918 私网、CGNAT、链路本地、多播、云元数据端点（AWS/GCP/阿里云/腾讯云）+ IPv4-mapped IPv6 检测
* **数据外泄检测**：6 类模式（API 密钥、文件路径、base64、JWT、密钥模式、数据库连接串）防止敏感数据通过 URL 参数泄漏
* **Domain HITL 审批**：非白名单域名自动触发人工审批（`domainHitlEnabled`），每个 Agent 可独立配置网络域名白名单
* **URL 解析混淆防护**：阻断 Tab/换行/反斜杠等混淆字符，防止 urlparse 与 HTTP 客户端的解析歧义（CVE 级 SSRF 绕过防御）
* **内网后缀阻断**：`.local`、`.svc`、`.cluster.local`、`.home.arpa` 等后缀默认拦截，防止 mDNS 和 Kubernetes 内网访问
* **审计链**：拦截请求写入 `SSRF_BLOCKED` 安全决策，可在审计面板追溯
* **Agent API 范围**：`/v1/chat/completions` 仅运行 Myrm 智能体（无 LLM 直通）。用户配置的 Provider apiUrl 在智能体内 LLM 调用路径仍执行 SSRF 检查，deploy 模式感知——本地模式允许 localhost/127.0.0.1 等 loopback（Ollama/vLLM），云/沙箱模式阻断私网和云元数据端点
* **461+ 项专项测试**：覆盖核心守卫、Agent 安全、浏览器导航、DNS Pinning、媒体验证、A2A 解析、深度爬取、SessionVault、权限引擎和 Provider URL 校验

### 恶意 URL 架构级免疫

面对钓鱼/诈骗网站，Myrm 不依赖静态域名黑名单（如 2.5M 钓鱼域名库），而是通过架构级机制从根本上消除威胁：

* **SessionVault 域名绑定**：凭证（cookie/密码）严格按域名隔离，`bank.com` 的登录态不会被发送到 `bank-secure-login.xyz` 等钓鱼域名，从机制上杜绝凭证窃取
* **浏览器沙箱隔离**：Agent 在独立沙箱中运行浏览器，即使访问恶意网站也不影响用户主系统
* **四层深度域名过滤**：CSP 策略（浏览器内核级网络限制）+ 协议拦截（context.route 阻断非白名单域名）+ 主线程加固（WebRTC/WebTransport/ServiceWorker 阻断）+ CDP 审计监控

这一架构使得维护庞大的钓鱼域名库变得不必要——域名库每天有数千个新域名产生，静态列表迅速过时，且占用 50-100MB 内存。

## 操作级语义风险检测

不同于将整个网站标记为"高风险"（维护成本高、法律风险大），Myrm 在**单次操作层面**实时检测风险——每次点击、表单提交、命令执行都经过分析。

### 7 类语义 DOM 风险检测

Agent 点击网页上的按钮或链接时，元素文本会自动匹配 7 类风险（中英双语）：

| 风险类别    | 触发关键词                | 触发效果      |
| ------- | -------------------- | --------- |
| **破坏性** | delete, 删除, 移除       | 需 HITL 审批 |
| **金融**  | pay, 付款, 购买, 结账      | 需 HITL 审批 |
| **账号**  | deactivate, 注销, 关闭账号 | 需 HITL 审批 |
| **管理**  | admin, 管理, 权限, 设置    | 需 HITL 审批 |
| **发布**  | publish, 发布, 发表, 提交  | 需 HITL 审批 |
| **分享**  | share, 分享, 发送, 转发    | 需 HITL 审批 |
| **敏感**  | password, 密码, 信用卡    | 需 HITL 审批 |

优于域名级风险标签的原因：

* **零维护**：无需维护"高风控网站名单"
* **全覆盖**：任何网站通用，包括新网站
* **精准**：在亚马逊"查看购物车"自动通过，"确认下单"需审批
* **零法律风险**：不歧视任何特定平台

### Smart Intent Guard

AI 分类器（`TranscriptClassifier`）审查工具调用是否符合用户原始意图：

* **推理盲**：仅看用户消息+工具调用序列，不看 Agent 推理过程，防止自我合理化
* **确定性**：`temperature=0` 确保同一输入永远得到同一结论
* **结构化输出**：Pydantic 强制 JSON + `reason` 字段支持审计追溯
* **失败安全**：错误或歧义回退到 HITL 而非自动放行

### 风险治理系统（Risk Governance）

完整的双向风险检测与治理框架，包含内置规则、自定义规则管理和全栈事件处理。同一规则引擎同时保护 **WebUI 输入** 和 **IM 渠道入站消息** —— 无死角。

**31 条内置规则**覆盖 7 大类别，在数据到达 LLM 之前完成拦截：

| 类别       | 示例                                            | 数量 |
| -------- | --------------------------------------------- | -- |
| **个人信息** | 邮箱、电话、身份证号、护照号、地址                             | 8  |
| **安全凭证** | API 密钥（OpenAI、AWS、GCP、Azure）、SSH 私钥、JWT Token | 7  |
| **公司信息** | 内网 IP、工号、项目代号、内部 URL                          | 5  |
| **客户数据** | 客户 ID、订单号、工单号                                 | 4  |
| **财务法务** | 银行账号、信用卡号、税号、合同编号                             | 4  |
| **政治敏感** | 政治敏感内容模式                                      | 3  |

**入站/出站对称门控**：IM 渠道消息在路由层通过 `RiskDetectionService.detect()` 检测，阻断后自动向发送方发送本地化通知（6 种语言）并记录审计日志。出站 Agent 响应通过 `_apply_outbound_risk_gate` 使用同一引擎检测 —— 形成闭环防护。

**GUI 规则管理**：WebUI 设置面板完整 CRUD —— 创建自定义正则规则、单条/批量开关、部署前规则测试，无需编码。

**审计追踪**：每次风险命中记录 `trace_id`、`session_id`、匹配规则与严重等级，满足合规审计要求。

**全栈事件闭环**：输入风险触发时，服务端发送 `risk_blocked` SSE 事件，前端 `riskEvents` 处理器拦截并以 Toast 通知用户触发了哪些规则 —— 无静默丢弃。

### 测试覆盖

30000+ 项测试验证安全全链路，包括 PII/DLP/隐私路由(1136)、Shell 命令审批（Harness 1209 + Server 261）、语义 DOM 风险(75)、Shell 分类(379)、SQL 语句守卫(68, 覆盖率 99.1%)、安全引擎集成(163+74)、凭据扫描(35)、工具守卫(9)、权限引擎(119)、工具注册表与继承(67)、护栏中间件(15)、架构注册表(4)、服务端权限(18)、Agent 工具 API(12)、配置解析(36)、前端审批与消息(15)、风险治理(117)、Webhook 路由(2)、动态授权拦截(845)、MCP 对标验证(166) 等。

## Shell 命令安全

5 层引号感知流水线：

| 层        | 检测                                                                                    | 响应                |
| -------- | ------------------------------------------------------------------------------------- | ----------------- |
| **L1**   | 二进制字符、12 类不可见 Unicode（零宽、方向覆盖等）                                                       | BLOCK             |
| **L1.5** | ANSI-C 引号 `$'...'`、区域引号 `$"..."`                                                      | BLOCK             |
| **L2**   | 6 种注入向量（`$()`、反引号、`${}`、`;`、进程替换）+ 70+ 危险命令模式                                         | BLOCK → DENY      |
| **L2.5** | SQL 语法级守卫：检测 DB 客户端命令中的破坏性 SQL（`psql`、`mysql`、`sqlite3` 等），防御多语句注入和 WITH CTE 绕过       | ESCALATE → ASK    |
| **L3**   | 可疑模式（`curl\|sh`、`eval`、`base64 -d`、kill/pkill）                                        | ESCALATE → ASK    |
| **L4**   | 递归分析嵌套命令：`bash -c '...'`、`sh -lc '...'`、`zsh -c '...'`、`trap '...'` 中的内层命令——深度限制防 DoS | 递归 BLOCK/ESCALATE |

**引号感知预处理**：字符级状态机 `_strip_quoted_content` 在 L2/L3 扫描前将单引号内容替换为占位符，避免 `echo 'rm -rf /'` 误报，同时保留双引号中命令替换的检测能力。

**特权提升无条件地板**：所有 `sudo` 命令在 L2 层被无条件 BLOCK——包括 `sudo apt install`、`sudo -S`（stdin 管道密码注入）、`env sudo cmd`、以及 `bash -c 'sudo ...'`（由 L4 递归捕获）。此规则不可被 YOLO 模式、Smart Guard 或用户审批绕过。竞品 Hermes 仅阻断 `sudo -S`（密码猜测向量），仍允许配合 SUDO\_PASSWORD 的常规 sudo——攻击面更大。其他 6 家竞品无任何 sudo 防护。

**破坏性命令自动快照**：匹配破坏性模式的命令（`rm`、`mv`、`git reset/clean/checkout/restore/apply` 含任意前置 flag、`sed -i`、重定向覆盖）会在执行前自动触发工作区快照，确保无论结果如何均可完整恢复。

**SQL 守卫（L2.5）**：分析*原始命令*（引号去除前）以检测嵌入在数据库客户端命令中的破坏性 SQL 操作（`DROP`、`DELETE`、`TRUNCATE`、`ALTER`、`INSERT`、`UPDATE`、`CREATE`）。防御两种高级绕过向量：多语句注入（`SELECT 1; DROP TABLE`）和 WITH CTE 包裹（`WITH x AS (...) DELETE FROM`）。支持 flag 模式（`psql -c '...'`）和管道模式（`echo '...' | psql`）。竞品无此能力。

**安全执行路径**：无 Shell 元字符的简单命令通过 `create_subprocess_exec` 直接执行（不经 shell 解释器），从结构上消除 `$IFS`、通配符展开、命令替换等注入类型。

### AI 轨迹分类器（Layer 5.5）

静态分析返回 ASK（不确定）时，AI 分类器提供语义级判断：

* **推理盲设计**：仅看到用户消息和工具调用序列，永远不接触助手推理或工具输出，防止 Agent 通过合理化推理欺骗分类器
* **结构化输出**：Pydantic Schema 强制 JSON 格式（非自由文本），缩小注入面
* **确定性**：`temperature=0`、`max_tokens=200`，确保可复现
* **失败安全**：任何错误、超时或解析失败均返回 UNCERTAIN → 回退到人工审批
* **上下文感知**：接收污点标签（EXTERNAL\_NETWORK、SECRET）和可信域名列表，支持细粒度判断

### Smart DENY → 用户一次性覆写

当智能审查器判定 DENY 时，**不会**静默拒绝，而是弹出审批卡片让用户决定：

| 行为        | 说明                                          |
| --------- | ------------------------------------------- |
| **视觉指示**  | 琥珀色警告框，显示审查器的拒绝理由                           |
| **可用操作**  | 仅"覆写一次"和"拒绝"（隐藏 session/always/edit）        |
| **覆写行为**  | 本次执行，但不写入 allowlist——下次相同命令仍触发审查            |
| **审计追踪**  | 记录 `LLM_REVIEW_DENY_USER_OVERRIDE` 事件及理由    |
| **无人值守**  | Cron 和 Shadow Agent 直接拒绝，无覆写选项（fail-closed） |
| **高风险路径** | 污点升级、出站委托、Shell 升级始终硬拒绝——不可覆写（安全红线）         |

防止"误判锁死"——AI 审查器误分类合法操作时用户不会被困住，同时保持完整审计可追溯。

**vs 竞品**：Hermes 仅提供 CLI 的 `once`/`deny` 按钮，无可视化理由展示，无审计日志，无分层硬拒绝。

### 高风险场景隐藏「始终允许」

在 6 种高风险场景下，审批卡片自动隐藏「始终允许」按钮——用户只能逐次审批或拒绝，防止误操作永久放行危险命令：

| 触发场景            | 隐藏原因                        |
| --------------- | --------------------------- |
| **污点升级**        | 会话包含外部网络数据——永久允许将绕过后续所有污点检查 |
| **出站审查不确定**     | AI 审查器对出站委托安全性不确定           |
| **Shell 升级不确定** | 非安全 Shell 命令在 AI 审查下存在不确定性  |
| **LLM 审查不确定**   | AI 审查器对任意工具调用的通用不确定判定       |
| **自动模式暂停**      | 连续拒绝次数超阈值——系统回退到人工审批        |
| **Shell 威胁检测**  | 命令分析器标记了威胁模式                |

普通低风险审批仍正常显示「始终允许」。用户对安全操作的体验零影响。

**vs 竞品**：Hermes 仅在 `tirith` 内容安全告警时隐藏永久允许（1 个触发点）。OpenClaw 通过后端 `allowedDecisions` 控制并显示"始终允许不可用"警告文案。Myrm 覆盖 6 种触发场景——行业最全面。

### 双语命令解释

每个触发审批的命令都会显示确定性生成的双语人话解释（`humanize_command`）——零 LLM 调用、微秒级延迟：

* **73 个常见命令覆盖**，参数感知描述（提取 URL/文件名/包名等关键参数）
* **sudo 前缀自动标注**，危险管道模式高亮
* 用户无需 Shell 专业知识也能理解命令含义后做出审批决策
* 纯规则引擎：不可被 prompt injection 操控（优于 LLM 方案）

### Install Slopcheck（防包名幻觉 / Anti-Slopsquatting）

每次 `pip install` / `npm install` / `yarn add` / `bun add` 执行前，预检链自动验证所有包名是否真实存在：

| 方面        | 细节                                                                     |
| --------- | ---------------------------------------------------------------------- |
| **检测方式**  | HEAD 探活 PyPI JSON API (`/pypi/{name}/json`) 和 npm registry (`/{name}`) |
| **名称标准化** | PEP 503 规则（下划线、点、大小写 → 统一小写连字符）                                        |
| **并发**    | 所有包名通过 `asyncio.gather()` 并发探活                                         |
| **缓存**    | 会话内内存缓存已验证包名，零重复网络请求                                                   |
| **私有仓库**  | 含 `--index-url`、`--extra-index-url`、`--registry` 的命令自动跳过               |
| **容错**    | 网络超时或 DNS 异常 → 放行安装（不阻断正常工作）                                           |
| **响应**    | 未知包 → `ToolError` 阻断安装并说明哪些包未找到                                        |

此机制防范 **slopsquatting 攻击**——攻击者注册 LLM 常见幻觉包名并植入恶意代码。

## 加密与企业网络兼容

静态 AES-256-GCM；传输 TLS 1.3；API Key 加密库；可选记忆加密；无痕模式物理隔离与阅后即焚。

### 企业 TLS 兼容

企业网络常部署 TLS 检查代理（Zscaler、Netskope、Palo Alto Prisma 等），可能导致 Agent 的所有 HTTPS 出口连接失败。Myrm 提供一键企业网络兼容：

* **设置 → 高级 → Enterprise Network Compatibility** 开启，或设置环境变量 `MYRM_TLS_STRICT=0`
* 精确放松 Python 3.13+ 的 `VERIFY_X509_STRICT` 标志，不禁用证书验证
* 支持自定义 CA 证书：`SSL_CERT_FILE`（替换系统信任库）或 `NODE_EXTRA_CA_CERTS`（追加到系统信任库）
* **MCP 服务器级 TLS**：每个 MCP server 可独立配置 `ssl_verify`（true/false/自定义CA路径）和 `client_cert`/`client_key`/`client_key_password` 实现完整 mTLS 双向认证
* 4 层自动注入：infra (`tls_compat.py`) → server (`tls_config.py`) → MCP (`client.py`) → LLM (`llm.py`)，覆盖 28+ 个 HTTP 客户端调用点
* TLS 连接失败时自动诊断：8 种错误模式检测 + 5 语言修复提示
* **144 项 TLS 专项测试验证**（38 项 TLS 核心 + 31 项 MCP TLS + 75 项错误诊断）

### 无痕模式深度解析

消息输入区一键 Toggle 激活 per-session 隐私隔离：

* **Harness 层**：`IncognitoPolicy` 物理跳过 MEMORY 和 ARCHIVE 上下文场景的所有写入
* **Server 层**：不绑定 memory manager，不挂载全部记忆工具（`memory_search_tool`、`memory_save`、`memory_manage`），不注入记忆上下文，禁用归档检查点与会话清理回调
* **数据库层**：`is_incognito` 标记确保无痕会话不在侧边栏显示、不可被全文搜索命中
* **Self-hosted 架构优势**：竞品（如 SaaS 产品）需要额外的"本地模式"开关来防止数据上传至厂商服务器；Myrm 的 self-hosted 架构意味着用户数据天然不离开本机——无痕模式在此基础上叠加了会话级的非持久化保护

## 凭证保护

### 表单凭证库

密码与 TOTP **永不进 LLM 上下文**。在 **设置 → 凭证** 配置带标签凭证；Agent 只见标签名（如 `github-personal`），调用统一的 `fill_credential`（浏览器与桌面相同动作）；Harness 在 DOM/OS 层注入，明文不回流对话或工具日志。Server 侧 AES-256-GCM 加密存储，启动时同步到 Harness 内存金库。

Provider API 密钥（OpenAI、Anthropic、Gemini 等）通过 LiteLLM `api_key` 参数传递，**零 `os.environ` 写入**——配合 agent-in-sandbox 进程级隔离，从架构层面杜绝跨用户凭证泄漏。**279 项**凭证安全测试全通过。

### 泄漏检测

40+ 正则检测 API Key、连接串、JWT、SSH 私钥等；熵检测未知格式。

### PII 脱敏与隐私感知路由

Myrm 提供 8 层 PII 纵深防御，具备 57+ 种检测能力 — 市场上隐私保护最深的 AI Agent 平台：

**检测（3 引擎，57+ 种类型）：**

* **正则 PII 扫描器**：12+ 种结构化类型（手机号、身份证含校验位验证、护照、银行卡 Luhn 校验、SSN、邮箱、地址、快递单号、私有 IP 等）
* **LLM 语义扫描器**：20+ 种非结构化类型（医疗健康、政治观点、金融记录、精确位置、生物特征）PL2/PL3/PL4 三级分类
* **凭证泄漏扫描器**：25+ 种密钥模式（AWS/OpenAI/Anthropic/GitHub/Slack/JWT/PEM 私钥等）含 Shannon 熵分析

**保护（4 种用户可选模式）：**

| 模式               | 动作                                 | 场景              |
| ---------------- | ---------------------------------- | --------------- |
| **WARN**         | 仅记录检测结果                            | 纯监控环境           |
| **REDACT**       | 类型感知不可逆脱敏（如 `138****5678`）         | S2 数据生产默认       |
| **PSEUDONYMIZE** | SQLite 持久化可逆假名替换 + 流式 chunk 边界安全还原 | AI 需要上下文但用户看到原文 |
| **BLOCK**        | 完全阻断消息                             | S3 级机密数据        |

**隐私感知模型路由**：根据敏感度自动路由 — S1 发云端，S2 脱敏后发云端或本地处理，S3 纯本地（数据永不离机）。可配置回退策略：阻断或强制脱敏后发云端。

**GUI 完整配置**：设置面板提供隐私开关、逐级动作选择、深层扫描开关、本地模型连接测试、自定义关键词/正则/敏感工具标记、实时测试匹配。

### 摘要路径保护

长对话压缩为结构化摘要时，PII 和凭证可能在摘要过程中残留。Myrm 在摘要持久化前对所有字段执行双重脱敏（`redact_leaks` + `redact_pii`），确保手机号、邮箱、API Key 等敏感数据不会残留在压缩后的对话历史中。

### 污点追踪

跟踪敏感数据流经工具执行的间接泄漏路径。

### 智能体导出安全

导出智能体配置时自动剔除所有凭据：

| 剔除字段                                                           | 来源                        | 目的                |
| -------------------------------------------------------------- | ------------------------- | ----------------- |
| `api_key`、`bearer_token`、`client_secret`、`password`、`username` | `openapi_services[].auth` | 防止共享配置中的 API 凭据泄漏 |
| `auth_token`                                                   | `tool_gateway_config`     | 防止网关令牌泄漏          |

团队智能体支持递归导出（自动包含所有成员配置），导入时原子性创建（全部成功或全部回滚）。

<Note>
  导出保留 `auth.type` 字段（如 "api\_key"、"bearer"、"oauth2"），方便导入方知道需要配置哪种认证方式。
</Note>

### 隐私安全规则分享

分享程序性记忆规则（如与队友或社区）时，自动应用额外的隐私保护：

* **路径匿名化** — 用户目录路径自动替换为 `<USER>` 占位符
* **凭证脱敏** — API Key 和密钥截断为安全前缀（如 `sk-pro...f456`）
* **元数据剥离** — 时间戳、更新计数、内部 ID 从导出规则中移除

确保分享的规则中不会泄露个人文件路径或凭证。完整说明参见[记忆系统 → 隐私安全规则分享](/zh/core-concepts/memory-system#隐私安全规则分享)。

### Agent 密钥管理——零明文暴露架构

每个 Agent 的自定义密钥（API Key / Token / 环境变量）采用**零明文暴露架构**：

| 安全特性               | 实现方式                                                           |
| ------------------ | -------------------------------------------------------------- |
| **前端永不接收密钥值**      | `listAgentSecrets` API 仅返回 key 名列表（`string[]`），绝不返回值           |
| **无 reveal 端点**    | 竞品需要"显示明文"端点，Myrm 没有这个路径                                       |
| **编辑必须输入新值**       | 密码输入框，占位符"输入新值以覆盖"                                             |
| **无需 sentinel 防护** | 旧值从未到达前端，不存在 "\*\*\*\*" 回传覆盖风险                                 |
| **静态加密**           | AES-256-GCM + 服务端主密钥                                           |
| **原子文件写入**         | tempfile + `os.replace` + `fsync` 防崩溃                          |
| **日志自动脱敏**         | `SensitiveDataFilter` 自动替换 token/key/secret 为 `***REDACTED***` |
| **Agent 隔离**       | 每个 Agent 只能通过 `agent_id` 访问自己的密钥                               |

<Note>
  竞品（如 Multica）向前端返回明文环境变量，必须依赖 sentinel 值（"\*\*\*\*"）防止意外覆盖。Myrm 从架构上消除了这个攻击面。
</Note>

## 审计追踪

结构化审计日志：37 种安全决策类型 + Prometheus 实时指标 + TaintTracker 信息流追踪。

## 配置审计引擎

**配置审计引擎**为每个智能体配置提供实时风险评估。打开智能体设置中的安全选项卡时，**健康评分卡**会即时显示安全态势：

* **评分**：0–100（越高越安全），按发现严重程度扣分
* **风险等级**：安全 / 低 / 中 / 高 / 严重（5 级颜色编码）
* **6 维分组视图**：发现按 checker 维度分组展示，每个维度独立颜色标识 — 展开任一维度可查看单条发现的严重程度边框、标题和可操作建议
* **一键修复**：策略缺口类发现提供 Fix（开关切换）或 Configure（导航到配置区域）按钮，即刻修复

### 六维检测

| 检查器        | 颜色 | 检测内容                                  |
| ---------- | -- | ------------------------------------- |
| **工具暴露**   | 橙色 | 危险的内置工具组合（如 shell + 文件写入 + MCP）和过大工具面 |
| **MCP 认证** | 紫色 | 无认证、不安全传输或高危扫描发现的 MCP 服务器             |
| **技能聚合**   | 天蓝 | 导入扫描时被标记为不信任或拒绝的技能                    |
| **子代理风险**  | 玫红 | 多层委托链创建不可审计的权限路径                      |
| **定时任务风险** | 琥珀 | 使用高权限工具的无人值守定时任务                      |
| **策略缺口**   | 青灰 | 相对于已启用能力缺少的安全控制（支持一键修复）               |

每个维度显示 issues 数量或「Pass」状态。有问题的维度可展开查看详情。

### 设计特点

* **零 LLM**：纯确定性规则引擎 — 零 token 消耗，即时响应
* **插件架构**：每个检查器独立实现 `BaseChecker`，可独立扩展
* **自动刷新**：保存智能体配置后自动更新审计结果
* **框架级能力**：任何使用 harness 引擎的项目都可开箱即用
* **测试覆盖**：37 项后端单元测试 + 15 项前端组件测试（共 52 项）

## 工作区规则安全

Myrm 自动从 **17 个发现点**（13 个根级文件名 + 4 个子目录模式）发现并加载项目级规则文件，覆盖所有主流 AI 工具生态：

* **根级文件**：`.myrm.md`、`AGENTS.md`、`CLAUDE.md`、`SOUL.md`、`.cursorrules`、`.clinerules`、`.windsurfrules` 及大小写变体
* **子目录**：`.myrm/rules/*.md`、`.cursor/rules/*.mdc`、`.claude/CLAUDE.md`、`.github/copilot-instructions.md`
* **首匹配优先**：每个目录仅加载最高优先级文件，防止冲突
* **零配置迁移**：Hermes（`SOUL.md`）、Cline（`.clinerules`）、Cursor（`.cursorrules`）、Claude Code（`CLAUDE.md`）、Windsurf（`.windsurfrules`）用户可直接使用现有规则文件

所有发现的文件在注入前进行安全扫描：113 模式 26 类威胁检测（含中文注入）。被拦截内容替换为结构化 `[BLOCKED]` 占位符。

## 紧急控制

E-Stop、会话终止、工具黑名单、预算硬顶。

## 安全态势大盘

`/security` 页面提供完整的 GUI 安全可视化——无需 CLI 命令：

| Tab      | 展示内容                                                 |
| -------- | ---------------------------------------------------- |
| **依赖安全** | 漏洞告警（Critical/High/Medium/Low）+ Dependabot PR + SBOM |
| **限流状态** | 实时 per-user/per-resource 限流（当前/上限/剩余/窗口）             |
| **审计日志** | 安全事件流 + 多维过滤（用户ID/事件类型/结果）+ CSV/JSON 导出              |
| **审计统计** | 24小时分析：时间序列、Top IP、事件分布、成功/失败率                       |

支持多数据源（GitHub / Control Plane / 合并）、一键刷新、配置引导面板。远超 Hermes 的 CLI 命令（`hermes config view security`）。

## 智能审批（Auto Mode）

智能意图守护**默认对所有新用户开启**。辅助 LLM（Transcript Classifier）实时审查工具调用，实现长时间无人值守 Agent 会话。如果未配置专用审查模型，Myrm 会自动使用用户的默认模型作为 fallback——无需额外设置即可享受智能审批：

| 层级                        | 机制                                   | 触发时机                     |
| ------------------------- | ------------------------------------ | ------------------------ |
| **确定性规则**                 | 静态权限引擎评估                             | 始终（第一层）                  |
| **CommandRiskLevel**      | Shell 管道感知分级：SAFE 自动放行 / UNKNOWN 需审查 | Auto Mode + shell\_exec  |
| **Allowlist 记忆**          | 「始终允许」选择永久免打扰                        | 曾被用户批准的 ASK 操作           |
| **Taint 升级**              | 会话含 PII/凭据 → 即使 ALLOW 也送 LLM 审查      | ALLOW + 受污染会话            |
| **Transcript Classifier** | 推理盲 LLM → ALLOW/DENY/UNCERTAIN       | Auto Mode + ASK 操作       |
| **Outbound 委派检查**         | delegate\_agent 强制 LLM 审查            | 委派操作                     |
| **Shell 升级检查**            | 非 SAFE 命令即使规则 ALLOW 仍送 LLM           | shell\_exec + UNKNOWN 风险 |
| **阈值熔断**                  | 连续拒绝 → 停止自动审批，回落 HITL                | 过多拒绝                     |

故障安全保证：分类器报错 → 回落 HITL（绝不在失败时自动批准），`temperature=0` 确保确定性，Pydantic 强制结构化输出。

## 命令黑名单（用户自定义安全地板）

用户可以定义 glob 模式永久拦截特定命令 — 无论 YOLO 模式、智能意图守护决策还是权限规则，均不可绕过。这是用户可控的最终安全防线。

| 特性                 | 工作原理                                                                  |
| ------------------ | --------------------------------------------------------------------- |
| **Glob 模式匹配**      | 大小写不敏感的 `fnmatch` 匹配（如 `git push --force*`、`rm -rf /*`、`DROP TABLE*`） |
| **全局 + Per-Agent** | 在安全设置中配置全局黑名单，在 Agent 配置中设置独立黑名单                                      |
| **并集合并**           | Per-Agent 黑名单与全局黑名单取并集合并 — Agent 只能增加限制，不能移除全局规则                      |
| **YOLO 不可绕过**      | 被拒绝的命令即使在 YOLO 模式下也会被阻断 — 这是所有审批层之下的硬地板                               |
| **GUI 可视化编辑器**     | 可视化模式编辑器，支持添加/移除、示例占位符和验证 — 无需 CLI 或 YAML 编辑                          |

命令黑名单在审批管道的 **Layer 2a.5** 位置运行 — 在权限规则之后、YOLO 绕过之前，确保被拒绝的命令始终被阻断。

## 记忆写入信任隔离

所有记忆写入都经过统一安全管道 — 即使是 AI 内部触发的也不例外：

| 防护层                   | 防止什么                                                                              |
| --------------------- | --------------------------------------------------------------------------------- |
| **审批队列**              | Cognitive Deriver 提取的隐式偏好走标准审批队列（无绕过），外部内容无法静默污染用户 Profile                        |
| **安全扫描**              | 每次记忆写入均执行 `scan_and_clean_memory` 注入检测（CLEAN/WARN/REDACTED/BLOCKED）               |
| **偏好稳定性**             | 多轮观测生命周期验证（Candidate → Provisional → Active），确保只有经过验证的偏好才能进入 Profile — 过滤单次对话的偶然性 |
| **AGENT\_SELF 优先级上限** | Agent 自生成的程序性规则优先级上限为 HIGH — 无法占据 CRITICAL（免压缩）位，防止提示词膨胀                          |
| **Profile 安全晋升**      | 核心偏好（沟通风格/认知深度/主动性）仅在稳定性验证通过后，经 `set_system_profile_attribute` 安全写入 Profile       |

没有竞品实现记忆写入信任隔离 — 大多数 Agent 将提取的偏好直接写入用户画像，无审批、无验证、无优先级护栏。

## 安全配置档位：一键切换安全模式

MyRM 提供三种内置安全配置档位，用户可在设置页一键切换：

| 档位        | 权限策略                                  | 适用场景       |
| --------- | ------------------------------------- | ---------- |
| **只读模式**  | 所有写操作禁止（文件/Shell/浏览器/技能/定时任务），读操作自动放行 | 研究、规划、代码审查 |
| **工作区模式** | 文件操作限制在允许的根目录内，Shell 需审批              | 日常开发       |
| **完全访问**  | 所有操作允许（YOLO 模式）                       | 可信本地环境     |

档位持久化到数据库，服务器重启后保留。每个 Agent 也可独立配置安全策略——支持"只读分析助手"与"全权开发助手"并行的场景。

## 定时任务执行策略（按任务最小权限）

定时 Agent 任务在绑定智能体之外，还支持**双层执行策略**：

| 层级                                | 控制内容                                  | 用户收益                               |
| --------------------------------- | ------------------------------------- | ---------------------------------- |
| **能力围栏**（`required_capabilities`） | PermissionEngine 拦截 Shell/写文件/MCP/代码等 | 即使智能体配置很宽，单个任务仍可禁止危险操作             |
| **工具范围**（`tools_allowed`）         | 收窄 Turn1 挂载的内置工具（运行时与智能体配置求交）         | 更小 schema、利于 prompt cache、无人值守最小权限 |

**编辑入口：** 设置 → 定时任务 → 打开任务 → 运行历史中的**执行策略**编辑器（与「允许的路径」同一产品模式）。新建任务默认不限制。

**内置保护：**

* **默认 fail-closed** — 未显式声明能力的任务自动拒绝危险操作（Shell、代码执行、MCP），并在 UI 显示警告引导用户配置能力围栏或在智能体安全设置中启用 YOLO 模式。
* **预设组合**（仅联网 / 研究 / 运维）一键双写能力围栏 + 工具范围，与蓝图 SSOT 对齐。
* **稍后读蓝图** 使用 **router 模式**（`__wiki_source_sync__`），**无工具挂载** — 服务端确定性 pull，零 LLM agent turn，不会误开浏览器或代码执行。
* **生命周期守卫** 拒绝 prompt/命令/**预检脚本**中的 `./myrm restart/stop`、`pkill myrm-agent` 等 — 防止定时任务把服务打挂。
* **受限任务不偷偷继承基线工具** — 仅 file\_ops 的任务不会自动启用 `code_execute`；未限制任务仍继承智能体基线。

**对比竞品：** Hermes 仅提供全局 `cron_mode: deny/approve` 布尔开关——所有任务共享同一策略。OpenClaw/LobsterAI/CoPaw/deer-flow/jiuwenclaw 无定时任务功能。Myrm 提供按任务粒度的能力声明 + GUI 编辑 + 蓝图自动填充 + fail-closed 默认策略。

## 子代理递归隔离：5 层防护

当 Agent 将任务委派给子代理时，最常见的失控场景是子代理无限递归衍生，耗尽 Token 预算。

MyRM 实施 5 层隔离防护：

| 层级     | 机制                                       |
| ------ | ---------------------------------------- |
| **L0** | 类型准入白名单（仅目录注册的 Agent 类型）                 |
| **L1** | 全局黑名单（LEAF 角色下 7 种编排工具 + 2 种特权工具被剥离）     |
| **L2** | 配置级黑名单 + readonly 模式额外拦截                 |
| **L3** | 子⊆父工具交集（子代理的工具永远不会多于父代理）                 |
| **L4** | 双重深度限制（全局最大 3 层 + 按配置 max\_spawn\_depth） |

额外安全网：Payload hash 去重防止委派循环、结果缓存避免冗余工作、3 种记忆隔离策略（EPHEMERAL / READ\_ONLY\_GLOBAL / COLLABORATIVE\_SESSION）防止跨代理数据污染。

## 多代理文件保护：8 层纵深防护

当多个代理在同一工作空间并行工作时，文件冲突是数据损坏的首要原因。MyRM 实施 8 层防护 — 全部代码强制，零 Prompt 依赖：

| 层级     | 机制                                   | 防护目标                                    |
| ------ | ------------------------------------ | --------------------------------------- |
| **L1** | **先读后写**（staleness\_guard）           | 阻止盲改 — 必须先读取文件才能写入                      |
| **L2** | **版本匹配**（file\_integrity\_guard）     | 阻止过期编辑 — 文件内容变更后拒绝基于旧版本的写入              |
| **L3** | **完整读取前置**（file\_integrity\_guard）   | 阻止部分读取 — 仅读取文件片段不允许编辑                   |
| **L4** | **行级冲突检测**（file\_conflict\_guard）    | 阻止重叠编辑 — 两个代理修改同一行范围时拦截                 |
| **L5** | **跨代理活动追踪**（file\_activity\_tracker） | 追踪并发访问 — 记录每个代理在每个文件的写入行范围              |
| **L6** | **自动工作空间隔离**（workspace\_policy）      | 防止共享状态污染 — 并行写入时自动升级为 ISOLATED\_COPY 策略 |
| **L7** | **延迟串行合并**（batch\_merge）             | 防止合并冲突 — 隔离的工作空间逐个串行合并回主空间              |
| **L8** | **完成自动清理**（subagent\_manager）        | 清除过期追踪 — 子代理完成后自动清理所有追踪记录               |

**实际运行流程：**

1. 父代理将 3 个编码任务委派给并行子代理
2. `workspace_policy` 检测到 ≥2 个并行写入者 → 自动升级为 ISOLATED\_COPY
3. 每个子代理获得独立的 COW（写时复制）工作空间克隆
4. 子代理独立工作 — 无锁竞争、无阻塞
5. 完成后 `batch_merge` 将变更逐个串行合并回父工作空间
6. 若两个子代理编辑了重叠行范围，`file_conflict_guard` 在合并时抛出冲突

**对比竞品：** AWS Codex Agent Team 依赖 Prompt 指示（"不能让两个活跃任务写同一文件"）— LLM 可以无视此约束。MyRM 在应用代码层面强制每一层防护 — 无论模型行为如何，均不可绕过。

## vs CaMeL Guard

CaMeL 单信任边界；Myrm **6 层**洋葱防御、5 域循环检测、3 层错误分类、4 策略凭证池、PTC 沙箱隔离、20+ 模块上下文流水线等更深覆盖。

### 后台任务隐式凭证拦截 (Anti-Leak Background Tasks)

在 Myrm Agent 中，安全防护不仅限于主对话流程，还深入到每一个后台辅助任务（如自动生成会话标题、自动总结）。

* **O(1) 早期截断**：彻底消除超大文本在异步事件循环中执行正则和香农熵计算导致的 CPU Blocking DoS 隐患。
* **军工级脱敏管线**：内置凭证探测器（Shannon Entropy + 正则），在发送给廉价模型生成标题前，自动抹除 API Key 等敏感凭证。
* **深度结构降噪与隔离**：自动剥离代码块、URL 链接、HTML 标签等噪音，并使用 `<user_input>` XML 标签严格隔离用户输入，防止 Prompt 注入攻击。
