审计证据生成器

AuditCopilot是一个轻量级教育原型,展示自主AI代理如何交换结构化审计证据并使用MCP和A2A生成审计报告。

  • by shwetak345
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 shwetak345/auditcopilot

使用说明

AuditCopilot:内部控制洞察生成器(MCP + A2A)

1. 目的

AuditCopilot(可译为“审计助手”或根据具体语境译为更贴切的名称,如“审计小帮手”等) 这是一个轻量级的教育原型,展示了自主AI代理如何利用两种新兴的互操作性理念来交换结构化的审计证据并生成发现结果:

  • MCP(模型上下文协议) — 一种标准化接口,用于向AI代理暴露工具功能。
  • A2A(代理到代理)消息传递 — 一种用于合作代理之间结构化通信的模式。

目标是说明审计风格的代理如何收集系统证据、分析风险,并输出一份简洁的报告。


2. 高层架构

以下是系统图,概括了主要组件之间的交互方式:


3. 关键概念

模型上下文协议(MCP)

像大型语言模型(LLMs)这样的现代人工智能系统功能强大,但它们有一个很大的局限性——它们主要只知道自己在训练过程中学到的内容。
他们并不能自动获得 实时数据, 公司制度/公司体系,或者 专用工具。
这意味着,仅凭它们自身,它们并不总是能给出最准确或最新的答案。

这个 模型上下文协议(MCP) 通过创建一个(解决方案/系统/方法)来解决这个问题 人工智能模型连接现实世界数据和工具的标准方式。
借助MCP(机器认知平台),人工智能不仅仅“猜测”或依赖记忆——它可以直接获取信息、进行检查,或使用其被允许访问的API。

这使得人工智能系统 更相关、更可信、更有用 在实际环境中。

参考: Hugging Face MCP课程——第一单元:简介。

技术观点:
MCP定义了一个 工具界面 这使得AI代理能够安全地调用结构化API。

在这个演示中:

  • MCPControlsServer 起着……的作用 模拟MCP提供者.
  • 它暴露了以下方法:
    • get_system_list
    • get_control_state
    • get_audit_log
  • 这些模拟了来自外部环境的系统元数据、控制状态和审计日志。

这有助于 证据代理 以可重复、模式驱动的方式与“系统”进行交互。

代理到代理(A2A)消息传递

技术视角:
A2A(Agent-to-Agent)定义了多个代理如何通过共享总线交换消息。

在这个原型中:

  • 这个(或“它”) A2A巴士 是一个简单的内存消息队列。
  • 证据代理(或证据处理模块) 获取并打包证据包。
  • 审计代理 消耗这些数据包,分析风险,并生成建议。
  • 消息模式(evidence_bundle, findings(等)模拟了分布式系统中独立进程如何协调工作的方式。

4. 组件

组件 角色 备注
A2A 公交车 代理之间的消息传输 处理序列化的审计消息
证据代理 通过MCP工具收集证据 生成结构化的JSON证据
审计代理 消耗证据并执行基于规则的分析 生成丰富的表格+Markdown报告
MCP控件服务器(模拟) 模拟的MCP工具端点 提供系统数据和控制状态
样本数据/systems.json 静态系统元数据 作为模拟证据源
`run_demo.py` 翻译成中文是“运行演示脚本.py” 交响乐编排器脚本 在本地启动两个代理

5. 执行流程

  1. 用户(审计员)运行:
    python run_demo.py
    
  2. A2A总线已初始化。
  3. EvidenceAgent 从模拟的 MCP 服务器请求数据。
  4. AuditAgent(审计代理)接收证据并识别问题。
  5. 两个代理通过A2A总线进行通信。
  6. 系统会在控制台打印一个汇总表(使用rich库),并将报告保存至: 报告/审计报告.md

6. 运行演示:

python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
pip install -r requirements.txt
python run_demo.py

7. 示例输出

控制台视图:

系统 环境 所有者 问题
(内容/项目) (数量/指标) (类别/类型) (描述/详细信息)
支付服务 生产环境 支付团队 TLS 禁用,API 无认证
CatalogService 阶段环境 目录团队 备份已禁用