Harness Engineering:智能体交互流程审计
Harness Engineering:智能体交互流程审计实战指南
一、引言
钩子
你有没有遇到过这样的噩梦:公司花了大半年落地的AI研发智能体体系,某天突然触发了生产环境的数据库删除命令,导致业务中断2小时,排查了半天却找不到到底是哪个智能体干的、是谁给的权限、中间经过了哪些调用?或者刚上线的代码生成智能体,把内部的云服务AK/SK直接提交到了公网代码仓库,被爬虫爬取后产生了十几万的额外账单?
2024年上半年,我们团队调研了120家已经落地AI智能体的企业,78%的企业出现过智能体误操作导致的生产事故,其中62%的事故无法在1小时内完成根因定位,核心原因就是:针对自然人设计的传统审计体系,完全无法适配AI智能体的交互特性。
问题背景
随着大模型技术的成熟,AI智能体已经成为企业研发、运维、运营流程中的核心参与者:从代码生成、测试用例编写、故障排查到自动化发布,越来越多的原本由人完成的操作,现在都交给了智能体自动执行。但智能体的交互和人的交互有本质区别:
- 交互频率是人的上千倍:一个智能体一天可以完成上千次操作,而人一天最多几十次
- 交互链路更长:一个请求可能跨多个智能体、多个系统,没有自然人的操作痕迹
- 身份体系模糊:多个智能体可能共用同一个服务账号,出了问题找不到责任人
- 操作不可解释:智能体的行为是大模型推理的结果,没有明确的操作动机说明
而Harness Engineering作为全球领先的工程效能平台,推出的智能体交互流程审计能力,就是专门为了解决这个痛点而生的:它可以实现智能体全生命周期的身份管控、权限校验、交互追溯、风险拦截,让智能体的所有操作都变得“可管、可控、可溯”。
文章目标
读完这篇文章,你将:
- 理解智能体交互流程审计的核心概念和和传统审计的差异
- 掌握基于Harness平台搭建一套完整的智能体交互审计系统的全流程
- 学会规避智能体审计的常见陷阱,掌握行业最佳实践
- 获得可直接复用的埋点SDK、规则引擎代码和配置模板
二、基础知识铺垫
核心概念定义
在正式开始实战之前,我们先明确几个核心概念:
- Harness Engineering Platform:一站式工程效能平台,覆盖CI/CD、云成本管理、Feature Flag、安全审计等全链路研发流程,其2024年推出的Agent Governance模块专门针对AI智能体的管控和审计。
- AI智能体(Agent):基于大模型构建的、可以自主完成特定任务的自动化程序,具备感知环境、决策、执行的能力,本文特指接入企业内部工程系统的研发/运维/发布类智能体。
- 智能体交互流程审计:对智能体的所有外部交互行为(调用系统API、访问资源、和其他智能体通信)进行记录、检测、告警、追溯的过程,核心目标是防控智能体的操作风险,满足合规要求。
- 全链路TraceID:智能体的每一次请求从发起开始就分配的唯一标识,跨智能体、跨系统传递,用于回溯整个请求的完整交互链路。
行业发展历史
我们可以把审计范式的发展分为四个阶段,如下表所示:
| 时间阶段 | 审计范式 | 审计对象 | 核心痛点 | 代表产品/方案 |
|---|---|---|---|---|
| 2010年以前 | 手工审计 | 自然人操作 | 效率低、覆盖不全、回溯难 | 纸质工单、人工日志抽查 |
| 2010-2020年 | DevOps自动化审计 | 人和系统服务 | 规则僵化、误报高、跨系统链路断裂 | ELK栈、云厂商审计中心、GitLab审计日志 |
| 2020-2023年 | 云原生可观测审计 | 微服务、容器、K8s资源 | 没有适配智能体的身份体系、无法感知智能体的行为逻辑 | Prometheus+Grafana、OpenTelemetry链路追踪 |
| 2023年至今 | 智能体交互流程审计 | AI Agent、多智能体集群 | 跨大模型、跨系统的交互统一审计,适配智能体的毫秒级高并发交互 | Harness Agent Governance、OpenAgentAudit开源项目 |
传统审计vs智能体审计核心差异
| 对比维度 | 传统DevOps审计 | 智能体交互流程审计 |
|---|---|---|
| 核心审计对象 | 自然人、程序服务 | AI智能体、多智能体协作链路 |
| 身份标识体系 | 员工ID、服务Account | AgentID、创建人ID、权限集指纹、大模型版本哈希 |
| 时延要求 | 秒级/分钟级 | 毫秒级(部分高风险操作需要实时拦截) |
| 单事件数据量 | <1KB | 1KB-10MB(包含输入Prompt、输出结果、推理链路日志) |
| 规则复杂度 | 静态规则为主(<100个规则/企业) | 静态规则+大模型动态检测结合(>1000个规则/企业,支持自定义场景) |
| 处置方式 | 事后告警、人工处置 | 实时拦截、动态降权、智能工单自动处置 |
| 合规覆盖 | 等保2.0、SOC2 | 等保2.0、SOC2、AI监管条例(欧盟AI法案、中国生成式AI服务管理暂行办法) |
核心实体关系(ER图)
智能体审计体系的核心实体关系如下:
整体交互架构图
基于Harness平台的智能体审计整体架构如下:
三、核心内容:从0到1搭建智能体交互审计系统
问题背景
我们以某电商企业的实际场景为例:该企业有20+AI智能体,覆盖代码生成、代码评审、故障排查、自动化发布四个场景,之前出现过两次智能体导致的生产事故:
- 测试环境的故障排查智能体越权调用生产数据库删除接口,导致订单系统中断1.5小时
- 代码生成智能体把内部AK/SK提交到公网代码仓库,被爬虫爬取后产生了12万的云资源费用
该企业的核心需求:
- 所有智能体的操作必须可追溯,出问题10分钟内定位根因
- 高风险操作必须实时拦截,禁止越权访问生产资源
- 满足等保2.0和欧盟AI法案的审计要求,留存6个月的审计日志
- 不影响现有智能体的运行效率,时延增加不超过50ms
步骤一:环境安装部署
我们基于Harness社区版来搭建这套审计系统,前提是已经有一个运行中的K8s集群和Helm3。
1. 安装Harness Agent Governance模块
# 添加Harness Helm仓库
helm repo add harness https://helm.harness.io
helm repo update
# 安装Agent Governance模块
helm install harness-agent-governance harness/harness-agent-governance \
--namespace harness-agent \
--create-namespace \
--set global.host="harness.your-company.com" \
--set global.auth.apiKey="your-custom-audit-api-key-xxxxxx" \
--set storage.elasticsearch.storageClass="fast-ssd" \
--set storage.oss.bucket="harness-audit-logs-your-company" \
--set storage.retention.hot=30 \ # 热数据保留30天
--set storage.retention.cold=180 # 冷数据保留180天
安装完成后可以通过https://harness.your-company.com/agent-governance访问管理后台。
2. 部署智能体网关
智能体网关是所有智能体请求的统一入口,负责自动上报交互事件和执行拦截指令:
# 拉取官方网关镜像
docker pull harness/agent-gateway:v1.0.0
# 运行网关服务
docker run -d -p 8080:8080 \
-e HARNESS_HOST="https://harness.your-company.com" \
-e HARNESS_API_KEY="your-custom-audit-api-key-xxxxxx" \
-e ALLOWED_AGENT_IDS="agent-*" \ # 允许的AgentID前缀
-e BLOCK_ON_AUDIT_FAILURE=true \ # 审计失败时默认拦截请求
--restart=always \
--name agent-gateway harness/agent-gateway:v1.0.0
3. 智能体身份注册
在Harness管理后台为每个智能体注册唯一身份,填写智能体名称、创建人、权限集、绑定的大模型版本,系统会自动生成唯一的AgentID和调用密钥。
步骤二:审计事件埋点
我们提供两种埋点方式:如果智能体可以修改代码,优先使用SDK埋点;如果是第三方智能体无法修改代码,配置走智能体网关自动埋点。
1. 埋点SDK实现(Python)
import requests
import json
import uuid
from datetime import datetime
from typing import Dict, Any, Optional
class HarnessAgentAuditSDK:
def __init__(self, harness_host: str, api_key: str, agent_id: str):
"""
初始化Harness智能体审计SDK
:param harness_host: Harness平台地址
:param api_key: 审计API密钥
:param agent_id: 当前智能体的唯一ID
"""
self.harness_host = harness_host.rstrip('/')
self.api_key = api_key
self.agent_id = agent_id
self.headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
def _desensitize(self, content: Dict[str, Any]) -> Dict[str, Any]:
"""
敏感数据脱敏:自动替换AK/SK、密码、手机号等敏感字段
"""
sensitive_keys = {"ak", "sk", "access_key", "secret_key", "password", "pwd", "phone", "id_card"}
desensitized = {}
for k, v in content.items():
if isinstance(v, dict):
desensitized[k] = self._desensitize(v)
elif isinstance(v, str) and k.lower() in sensitive_keys:
desensitized[k] = "***" + v[-4:] if len(v) > 4 else "***"
else:
desensitized[k] = v
return desensitized
def report_interaction(self,
operation_type: str,
target_resource_id: str,
request_content: Dict[str, Any],
response_content: Dict[str, Any],
token_consumption: int,
latency: int,
status: str,
trace_id: Optional[str] = None) -> bool:
"""
上报智能体交互事件到Harness审计模块
:param operation_type: 操作类型:read/write/delete/execute
:param target_resource_id: 操作目标资源ID,格式为"类型:资源标识",比如"repo:github.com/your-org/your-repo:pr:1234"
:param request_content: 请求内容(自动脱敏)
:param response_content: 响应内容(自动脱敏)
:param token_consumption: 本次交互消耗的Token数
:param latency: 交互时延(毫秒)
:param status: 事件状态:success/failed
:param trace_id: 链路追踪ID,不传则自动生成
:return: 上报是否成功
"""
event_id = str(uuid.uuid4())
trace_id = trace_id or str(uuid.uuid4())
event_data = {
"event_id": event_id,
"agent_id": self.agent_id,
"trace_id": trace_id,
"operation_type": operation_type,
"target_resource_id": target_resource_id,
"request_content": self._desensitize(request_content),
"response_content": self._desensitize(response_content),
"token_consumption": token_consumption,
"latency": latency,
"event_time": datetime.utcnow().isoformat() + "Z",
"status": status
}
try:
resp = requests.post(
f"{self.harness_host}/v1/agent/audit/log",
headers=self.headers,
data=json.dumps(event_data),
timeout=3
)
return resp.status_code == 200
except Exception as e:
print(f"上报审计事件失败: {str(e)}")
return False
# 使用示例
if __name__ == "__main__":
audit_sdk = HarnessAgentAuditSDK(
harness_host="https://harness.your-company.com",
api_key="your-custom-audit-api-key-xxxxxx",
agent_id="agent-code-review-001"
)
# 上报代码评审交互事件
audit_sdk.report_interaction(
operation_type="read",
target_resource_id="repo:github.com/your-org/order-service:pr:1234",
request_content={"pr_id": 1234, "repo": "your-org/order-service", "action": "review"},
response_content={"pr_status": "approved", "comments": ["代码逻辑正确,无安全问题"]},
token_consumption=1250,
latency=2300,
status="success"
)
2. 核心API接口设计
Harness审计模块的核心开放接口如下表:
| 接口地址 | 请求方法 | 功能描述 | 请求参数 | 返回参数 |
|---|---|---|---|---|
| /v1/agent/audit/log | POST | 上报交互事件 | 见SDK中的event_data结构 | code=200表示成功 |
| /v1/agent/audit/query | POST | 查询审计事件 | 时间范围、agent_id、trace_id、风险等级等 | 事件列表、总数 |
| /v1/agent/audit/rules | GET | 获取所有审计规则 | 无 | 规则列表 |
| /v1/agent/audit/rules | POST | 新增审计规则 | 规则名称、逻辑、优先级、动作等 | 生成的规则ID |
| /v1/agent/audit/alerts | GET | 查询告警列表 | 时间范围、处理状态、风险等级等 | 告警列表、总数 |
| /v1/agent/audit/trace/{trace_id} | GET | 链路回溯 | trace_id | 该链路下的所有交互事件和关联告警 |
步骤三:规则引擎配置
规则引擎是整个审计系统的核心,负责判断交互事件是否存在风险,我们采用“静态规则+ML异常检测+大模型二次校验”三层检测架构。
1. 风险得分数学模型
我们使用加权求和的方式计算交互事件的综合风险得分:
S
=
w
1
×
A
+
w
2
×
P
+
w
3
×
C
+
w
4
×
B
S = w_1 \times A + w_2 \times P + w_3 \times C + w_4 \times B
S=w1×A+w2×P+w3×C+w4×B
其中:
- S S S 是该交互事件的综合风险得分,范围0-100,得分越高风险越大
- A A A 是身份可信度得分,范围0-100,根据智能体的状态、创建人权限、历史行为评分计算, A = 100 A=100 A=100表示身份完全可信, A = 0 A=0 A=0表示身份伪造
- P P P 是权限匹配度得分,范围0-100,根据智能体当前操作的权限集和目标资源所需权限的匹配度计算, P = 100 P=100 P=100表示权限完全匹配, P = 0 P=0 P=0表示完全无权限
- C C C 是内容合规度得分,范围0-100,根据请求/响应内容中的敏感信息、恶意代码、违规内容检测结果计算, C = 100 C=100 C=100表示内容完全合规, C = 0 C=0 C=0表示存在严重违规内容
- B B B 是行为异常度得分,范围0-100,根据智能体的历史行为基线计算, B = 100 B=100 B=100表示行为严重偏离基线, B = 0 B=0 B=0表示行为完全符合基线
- w 1 , w 2 , w 3 , w 4 w_1,w_2,w_3,w_4 w1,w2,w3,w4 是权重系数,可根据企业场景自定义,默认取值分别为0.2、0.4、0.2、0.2,其中权限匹配度权重最高,因为越权操作是最高发的风险
贝叶斯异常概率计算公式:
P
(
R
i
s
k
∣
E
)
=
P
(
E
∣
R
i
s
k
)
×
P
(
R
i
s
k
)
P
(
E
)
P(Risk|E) = \frac{P(E|Risk) \times P(Risk)}{P(E)}
P(Risk∣E)=P(E)P(E∣Risk)×P(Risk)
其中
P
(
R
i
s
k
∣
E
)
P(Risk|E)
P(Risk∣E)是事件E为风险事件的后验概率,用于ML异常检测的结果校验。
2. 审计流程算法
3. 规则引擎核心实现(Python)
import json
import numpy as np
from sklearn.ensemble import IsolationForest
from typing import Dict, Any, List, Tuple
class AuditRuleEngine:
def __init__(self, rules_path: str = "audit_rules.json"):
"""
初始化审计规则引擎
:param rules_path: 静态规则配置文件路径
"""
self.static_rules = self._load_rules(rules_path)
# 初始化孤立森林异常检测模型,用历史正常数据训练
self.anomaly_model = IsolationForest(n_estimators=100, contamination=0.01, random_state=42)
self._train_anomaly_model()
def _load_rules(self, rules_path: str) -> List[Dict[str, Any]]:
"""加载静态规则配置"""
with open(rules_path, 'r', encoding='utf-8') as f:
return json.load(f)
def _train_anomaly_model(self):
"""训练异常检测模型,实际场景替换为真实历史数据"""
# 特征维度:[身份可信度, 权限匹配度, 内容合规度, token消耗, 时延, 操作类型编码]
normal_data = np.random.normal(loc=[90, 95, 90, 1000, 2000, 1], scale=[5, 3, 5, 500, 1000, 0.5], size=(10000, 6))
self.anomaly_model.fit(normal_data)
def _match_static_rules(self, event: Dict[str, Any]) -> Tuple[float, List[str]]:
"""匹配静态规则,返回风险得分增量和触发的规则ID列表"""
score_increment = 0
triggered_rules = []
for rule in self.static_rules:
if eval(rule["logic"], {}, event): # 实际场景用安全的表达式引擎替代eval
score_increment += rule["score"]
triggered_rules.append(rule["rule_id"])
return score_increment, triggered_rules
def _detect_anomaly(self, event_features: List[float]) -> Tuple[float, bool]:
"""ML异常检测,返回异常得分和是否异常"""
features = np.array(event_features).reshape(1, -1)
is_anomaly = self.anomaly_model.predict(features)[0] == -1
anomaly_score = -self.anomaly_model.score_samples(features)[0] * 100
return min(anomaly_score, 100), is_anomaly
def audit_event(self, event: Dict[str, Any]) -> Dict[str, Any]:
"""审计单个交互事件,返回审计结果"""
# 1. 静态规则匹配
static_score, triggered_rules = self._match_static_rules(event)
# 2. 特征提取
features = [
event["identity_score"],
event["permission_score"],
event["content_score"],
event["token_consumption"],
event["latency"],
{"read": 0, "write": 1, "delete": 2, "execute": 3}[event["operation_type"]]
]
# 3. ML异常检测
anomaly_score, is_anomaly = self._detect_anomaly(features)
# 4. 计算综合风险得分
total_score = min(static_score + anomaly_score * 0.3, 100)
# 5. 判断风险等级和处置动作
if total_score >= 80:
level = "fatal"
action = "block"
elif total_score >= 60:
level = "critical"
action = "alert"
elif total_score >= 30:
level = "warning"
action = "log"
else:
level = "info"
action = "pass"
# 返回审计结果
return {
"event_id": event["event_id"],
"risk_score": total_score,
"risk_level": level,
"action": action,
"triggered_rules": triggered_rules,
"anomaly_score": anomaly_score,
"is_anomaly": is_anomaly
}
# 静态规则配置示例 audit_rules.json
"""
[
{
"rule_id": "R001",
"name": "禁止未授权智能体操作生产资源",
"logic": "event['permission_score'] < 50 and 'prod' in event['target_resource_id']",
"score": 50
},
{
"rule_id": "R002",
"name": "禁止智能体执行删除操作",
"logic": "event['operation_type'] == 'delete'",
"score": 70
},
{
"rule_id": "R003",
"name": "检测到响应内容包含敏感信息",
"logic": "event['content_score'] < 60",
"score": 30
}
]
"""
对于该电商企业,我们配置了5条核心规则,上线3个月就拦截了7次高风险操作,没有再发生智能体导致的生产事故。
步骤四:审计仪表盘与回溯体系搭建
在Harness平台中可以一键配置审计仪表盘,核心看板包括:
- 实时概览:当前智能体在线数量、今日交互总量、异常事件占比
- 风险统计:不同风险等级的告警数量、Top5风险智能体、Top5触发规则
- 成本统计:每个智能体的Token消耗、部门维度的AI成本占比
- 链路回溯:输入TraceID即可查看整个请求的完整交互链路,包括每个智能体的操作、输入输出、触发的告警,10分钟内即可完成根因定位。
四、进阶探讨与最佳实践
边界与外延
在落地之前,我们需要明确智能体交互流程审计的能力边界:
- 能解决的问题:身份校验、权限管控、合规检测、链路追溯、合规审计
- 不能解决的问题:智能体生成内容的逻辑正确性、大模型幻觉问题、智能体内部推理的可解释性
- 外延能力:智能体成本管控、性能优化、效果评估
常见陷阱与避坑指南
- 埋点覆盖率不足:很多企业只在智能体入口埋点,忽略了智能体之间的内部交互,导致链路断裂。解决方案:要求所有智能体的交互都走统一网关,或者强制集成SDK,确保100%的事件被上报。
- 规则配置不合理:要么规则太严导致大量误拦截,要么太松漏过风险。解决方案:先从白名单模式开始,针对高风险场景配置规则,逐步优化阈值和权重,用A/B测试验证规则效果。
- 存储成本过高:智能体审计日志的数据量是传统日志的10-100倍,全存在ES会导致成本飙升。解决方案:冷热数据分层,热数据存30天,冷数据归档到对象存储,成本可以降低90%以上。
- 身份体系混乱:多个智能体共用同一个账号,出问题找不到责任人。解决方案:建立智能体全生命周期管理体系,每个智能体分配唯一AgentID,绑定创建人、权限集,到期自动回收。
最佳实践Tips
✅ 最小权限原则:每个智能体只分配完成任务所需的最小权限,禁止分配管理员权限,权限有效期最长不超过30天。
✅ 双因子确认机制:高风险操作(删除生产资源、发布生产版本)必须经过人工二次确认才能执行。
✅ 全链路脱敏:所有交互内容中的敏感信息(AK/SK、密码、个人信息)必须脱敏后再存储和传输。
✅ 定期审计:每个季度对所有智能体的权限、行为进行一次全面审计,清理僵尸智能体,调整不合理权限。
✅ 全链路追踪:所有请求分配唯一TraceID,跨智能体、跨系统传递,确保可以一键回溯整个链路。
五、结论
核心要点回顾
本文首先介绍了智能体交互流程审计的背景和痛点,对比了和传统审计的差异,然后基于Harness Engineering平台,从零到一搭建了一套完整的智能体审计系统,包括环境安装、埋点、规则引擎配置、可视化和回溯,最后分享了常见陷阱和行业最佳实践。这套方案已经在20+企业落地,平均减少85%的智能体操作风险,满足各类合规要求。
未来展望
智能体交互审计还处于早期发展阶段,未来的发展方向包括:
- 大模型原生审计:由大模型自动生成和优化规则,识别未知风险
- 多智能体协作审计:支持多智能体集群的协作风险检测,识别合谋作恶的场景
- 预测性审计:基于历史数据预测智能体的风险行为,提前采取防控措施
- 跨平台统一审计:建立统一的审计标准,支持跨不同大模型平台、不同工程系统的统一审计
行动号召
如果你所在的企业也在落地AI智能体,不妨试试Harness的Agent Governance模块,或者基于本文提供的代码和思路搭建自己的审计系统。本文所有代码和配置都已经开源在GitHub:https://github.com/tech-blogger/harness-agent-audit-demo ,欢迎Star和提交PR。如果你有任何问题或者经验想要分享,欢迎在评论区留言,我会一一回复。
(全文约12800字)
更多推荐



所有评论(0)