定义 AI Agent 的操作权限分三级: - L1 自动执行(不需要通知) - L2 执行后通知 - L3 必须先问(等确认)
流程图:权限执行流程
flowchart TD
A[触发操作请求] --> B[查询 permission_policy]
B --> C{权限等级?}
C -->|L1 自动执行| D[直接执行操作]
D --> E[记录 execution_log
approval_status=auto]
C -->|L2 执行后通知| F[执行操作]
F --> G[记录 execution_log]
G --> H[推送通知到飞书]
C -->|L3 必须先问| I[生成审批请求]
I --> J[推送审批到飞书]
J --> K{用户响应?}
K -->|确认| L[执行操作]
L --> M[记录 execution_log
approval_status=manual]
K -->|拒绝| N[记录 execution_log
status=rejected]
K -->|超时| N
E --> O[检查执行结果]
H --> O
M --> O
N --> O
O --> P{是否成功?}
P -->|是| Q[完成]
P -->|否| R[触发告警]
R --> J
class C,K,P decision
class Q done
class R warning
class A,B,D,E,F,G,H,I,J,L,M,N,O process
classDef process fill:#1a2744,stroke:#58a6ff,stroke-width:1px,color:#c9d1d9
classDef decision fill:#3a2a1a,stroke:#f0883e,stroke-width:2px,color:#f0883e
classDef done fill:#1a3a2a,stroke:#3fb950,stroke-width:1px,color:#3fb950
classDef error fill:#3a1a1a,stroke:#f85149,stroke-width:2px,color:#f85149
classDef warning fill:#3a2a1a,stroke:#d29922,stroke-width:1px,color:#d29922
classDef skip fill:#21262d,stroke:#484f58,color:#8b949e
数据模型
CREATE TABLE permission_policy (
id BIGSERIAL PRIMARY KEY,
action_category VARCHAR(64) NOT NULL, -- restart_service/cleanup_logs/supplier_circuit_break/...
action_name VARCHAR(128) NOT NULL,
level VARCHAR(8) NOT NULL, -- L1/L2/L3
description TEXT,
conditions JSONB, -- 额外条件(如 L2 级操作在非工作时间升级为 L3)
created_at TIMESTAMPTZ DEFAULT now(),
updated_at TIMESTAMPTZ DEFAULT now()
);
CREATE TABLE execution_log (
id BIGSERIAL PRIMARY KEY,
action_category VARCHAR(64) NOT NULL,
action_name VARCHAR(128) NOT NULL,
level VARCHAR(8) NOT NULL,
status VARCHAR(16) NOT NULL, -- approved/executed/rejected/timeout
approval_status VARCHAR(16), -- null(L1)/auto(L2)/pending/manual(L3)
result JSONB,
executed_at TIMESTAMPTZ,
approved_by VARCHAR(64),
created_at TIMESTAMPTZ DEFAULT now()
);
API 接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/permissions/policies | 获取权限策略列表 |
| PUT | /api/permissions/policies/{id} | 更新权限策略 |
| GET | /api/permissions/execution-log | 获取执行日志 |
业务逻辑
AI Agent 在执行任何操作前,先查询 permission_policy 匹配 action_category + action_name,获得对应的权限级别。L1 操作直接执行并记录日志;L2 操作先执行,完成后通过飞书通知;L3 操作发送审批请求,等待人工确认。conditions 字段支持时间窗口、环境等额外条件,例如 L2 操作在非工作时间自动升级为 L3。