# 🎨 FortiAI Agent — 创意总监方案

**角色:** 创意总监 · **日期:** 2026-04-27 · **前提:** FortiAI 运行在 FortiManager 内部，通过内置 MCP Server 获取数据

---

## 一句话愿景

**FortiAI = 从"点五页看仪表盘"变成"一句话问答案"**

把 FortiManager 日常运维的每一个多步操作压缩成一个自然语言交互。

---

## 目标用户画像

| 角色 | 核心痛点 | FortiAI 价值点 |
|------|----------|---------------|
| **NOC 值班工程师** 🏢 | 6屏监控，半夜告警，逐个排查 | 秒级诊断，无需切 ADOM |
| **安全管理员** 🛡️ | 审计合规、策略合理性检查 | 自动巡检 + 异常标记 |
| **Tier 2/3 运维专家** 🧠 | 批量配置、故障根因分析 | 一句话出结果，加速器 |

**核心用户 = NOC 工程师 + 安全管理员**

---

## 五个核心痛点

### 痛 #1 — 排查问题：N 步 → N+5 步
用户说连不上数据库。查 FW 策略 → 查 NAT → 查路由 → 查策略命中 → 查 Session。5 个不同菜单，每次切 ADOM。

### 痛 #2 — 仪表盘疲劳
20 个 widgets 轮着看，90% 时间只是找"今天有什么异常"。手动扫十几个设备状态，纯体力活。

### 痛 #3 — 批量操作 = 手工地狱
"100 个 IP 加白名单。GUI 点 100 次，或者写 Python 脚本跑完再调试。"

### 痛 #4 — 配置合规靠"记得"
"检查所有策略有没有 disable 的、any any 的策略。50 台 FG 每台 50 条策略，逐条看？"

### 痛 #5 — 知识断层
"离职同事的 FG 配置注释只有 'temporarily allow for project alpha'，没日期没 ticket 号。"

---

## 量化效益框架

| 场景 | 现在 | FortiAI 后 | 提升 |
|------|------|-----------|------|
| 单个 issue 排查 | 3-15 分钟 | 10-30 秒 | ~30x |
| 50 设备巡检 | 手工 2 小时 | 自动 3 分钟 | ~40x |
| 100 个批量白名单 | 写脚本 30分+调试 20 分 | 说需求 10秒+确认 5秒 | ~300x |
| 新手上手 | 2 周了解环境 | 问 FortiAI，3 天 | ~5x |
| 审计准备 | 手工收集 1 天 | 10 分钟出报告 | ~48x |

---

## 12 个功能创意

---

### 🚀 P0 — 王牌功能

#### F1: 一句话排查 (Troubleshoot Agent)

**痛点:** 排查问题 6 步，3 个 ADOM 切换

**场景:**

> **用户:** "APP 服务器 10.0.1.50 连不上 8.8.8.8 的 53 端口"
>
> **FortiAI:**
> 查 FGT-A 出口策略 → 源 NAT → 路由表 → 策略命中统计...
> "发现策略 ID 15 从 FGT-A 出，但 NAT 策略配了 10.0.1.0/24 → 192.168.x.x，APP 是 10.0.1.50/32 不在范围内。建议扩大 NAT 源范围或加一条 /32 规则。"

**实现:** Pipeline 模式 — 理解问题 → 查策略 → 查 NAT → 查路由 → 查日志 → 综合判断

---

#### F2: 智能巡检 — 健康检查报告 (Health Check Agent)

**痛点:** 每周手工检查 N 台 FG，漏检率高

**场景:**

> **用户:** "做 FGT-A、FGT-B、FGT-C 的周度健康检查"
>
> **FortiAI:** 检查 3 台设备...
>
> ✅ FGT-A: 正常 (CPU 30%, 内存 45%, Session 利用率 62%)
>
> ⚠️ FGT-B: 策略 ID33 'allow-all-test' 规则过宽 (any→any)，无日志
>
> ❌ FGT-C: HA 状态异常 (集群成员 2/4 离线)

**实现:** Generator 模式 — 定义检查模板，逐项检查，分级输出 ✅/⚠️/❌，支持定时调度

---

#### F3: 策略影响分析 (What-If Agent)

**痛点:** 改策略前不知道影响什么，改完出问题再回滚

**场景:**

> **用户:** "如果 FGT-A 策略 ID 47 从 permit 改成 deny，会有什么影响？"
>
> **FortiAI:**
> 分析策略 ID 47 过去 7 天影响：
> - 10.0.1.x → 10.2.0.x (SMTP, 日均 12000 条 session)
> - 涉及 3 个关键业务系统
> - 命中率 92% 的 SMTP 走这条策略
>
> 建议：如需封锁请确认邮件迁移已完成

**实现:** Pipeline 模式 — 读策略 → 查命中统计 → 关联业务 → 输出影响评估

---

### ⭐ P1 — 高频高价值

#### F4: 对象/策略关联查询 (Cross-Reference)

**痛点:** "这个地址组被哪些策略引用了？" → 一个个 ADOM 看

**场景:** "prod-db-addrgroup 被哪些策略用了？" → 10 秒出结果（现需 5 分钟）

---

#### F5: 配置差异对比 (Diff Agent)

**痛点:** 两个 ADOM 或策略修改前后，人工 diff 需要 GUI 截图对比

**场景:** "对比 FGT-A v1 和 FGT-B v2" → 15 秒出差异表

---

#### F6: 谁改了配置？什么时间？(Audit Trail)

**痛点:** "这个策略谁改的？什么时候？" → 翻 admin log 5 分钟

**场景:** "FGT-A 上周策略 ID 33 被谁改成 any→any？" → 直接定位修改人和关联 ticket

---

### 🥈 P2 — 日常帮手

#### F7: 批量对象管理 (Bulk Object Manager)

**痛点:** 加 100 个 IP 白名单，GUI 点 100 次

**场景:** 贴列表 → 确认 → 自动添加，10 秒完成

---

#### F8: 告警关联分析 (Alert Correlation)

**痛点:** NMS 告警震天响，不知道症状还是原因

**场景:** "FGT-A CPU 98%，同时 FGT-B BGP flapping，有关联吗？" → 一次关联出根因

---

#### F9: 策略优化建议 (Policy Optimizer)

**痛点:** "策略越积越多，哪些该清理？"

**场景:** "清理僵尸策略" → 零命中策略、被覆盖策略、引用已删除地址组的策略

---

#### F10: 配置语法/最佳实践检查 (Config Linter)

**痛点:** 配置不遵循最佳实践，但没人有空一条条对

**场景:** "检查 FGT-A 安全合规性" → 发现 CRITICAL / WARNING / INFO 级别问题

---

### 🥉 P3 — 锦上添花

#### F11: 网络拓扑简图

**场景:** "FGT-A 出口走哪条线？邻居是谁？" → 文本拓扑表
*(GUI 本身不太难查，优先级不高)*

#### F12: 配置备份/回滚助手

**场景:** "回退 FGT-A 到昨天的配置版本"
*(依赖 FMG 是否保留 revision backup)*

---

## 建议发布路线图

| Phase | 功能 | 一句话价值 |
|-------|------|-----------|
| **MVP (v1)** | F1 一句话排查 + F2 智能巡检 | "说人话查问题、看一眼知健康" |
| **v1.1** | F4 引用查询 + F6 审计追踪 | "这谁改的、被谁用了" |
| **v2** | F3 影响分析 + F7 批量对象 | 决策支持 + 操作效率 |
| **v2.1** | F5 Diff + F10 配置 Lint | 变更管理 + 安全基线自动化 |
| **v3** | F8 告警关联 + F9 策略优化 | 从被动响应到主动运维 |

**建议 MVP 做 F1+F2** — 覆盖运维 80% 的日常高频问题。F1 快速让用户"哇"，F2 建立日活粘性。

---

## 核心设计原则

1. **读优先，写授权** — 只读直接执行，写操作必须返回人类可读变更摘要 + 用户确认
2. **上下文记忆** — 排查问题时记住已查过的设备和 ADOM
3. **渐进式披露** — 给摘要不给原始 JSON，用户追问才展开
4. **可追溯** — 每个结论都能回答"你怎么知道的？"（引用具体数据源）

---

## 总结

FortiAI 不是在 FMG 上加个聊天窗口。它是把 FMG 的运维能力从"GUI 驱动的多步操作"变成"意图驱动的自然语言交互"。用户不需要记住 20 个菜单的位置，只需要知道自己要查什么问题。
