审计追踪系统

📎 引用文件

本文引用的文件 - agent/src/live/audit.py - agent/src/governance/ledger.py - agent/src/tools/report_audit_tool.py - agent/src/goal/store.py - agent/src/api/sessions_routes.py - agent/tests/test_governance.py - agent/tests/test_report_audit_tool.py

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能与存储策略
  8. 故障排查指南
  9. 结论
  10. 附录:配置与分析工具使用

简介

本技术文档面向 Vibe-Trading 的审计追踪系统,覆盖操作日志记录、用户行为追踪、变更审计与合规性报告。重点说明: - 审计数据模型与事件类型 - 日志格式标准与脱敏策略 - 存储策略(含追加式账本、哈希链防篡改、轮转归档) - 查询接口与可观测性 - 完整审计链路、数据完整性保证与合规支持 - 敏感信息保护、日志轮转、性能优化与隐私保护实践 - 审计配置示例与分析工具使用方法

项目结构

审计相关代码主要分布在以下模块: - 实时交易审计写入与多路扇出:src/live/audit.py - 哈希链防篡改账本与归档:src/governance/ledger.py - 研究报告数值审计工具:src/tools/report_audit_tool.py - 研究目标与证据/审计行持久化:src/goal/store.py - 通过 API 检索审计记录:src/api/sessions_routes.py - 行为与正确性验证测试:tests/test_governance.py、tests/test_report_audit_tool.py

graph TB A["调用方<br/>订单/风控/合规触发"] --> B["write_live_action<br/>脱敏+三路扇出"] B --> C["专用合规账本<br/>audit.jsonl"] B --> D["可选:运行期TraceWriter"] B --> E["可选:SSE事件回调"] B --> F["可选:哈希链账本<br/>audit_chain.jsonl"] F --> G["verify_chain / rotate_if_needed"] H["会话API"] --> I["按 audit_id 读取审计记录"]

图表来源 - agent/src/live/audit.py:248-351 - agent/src/governance/ledger.py:133-200 - agent/src/api/sessions_routes.py:234-255

章节来源 - agent/src/live/audit.py:1-59 - agent/src/governance/ledger.py:1-48 - agent/src/api/sessions_routes.py:234-255

核心组件

章节来源 - agent/src/live/audit.py:172-351 - agent/src/governance/ledger.py:133-200 - agent/src/tools/report_audit_tool.py:132-382 - agent/src/goal/store.py:103-255 - agent/src/api/sessions_routes.py:234-255

架构总览

审计系统采用“一次写入、多路扇出”的设计:所有真实资金相关的动作都会生成一条不可变审计记录,先写入专用合规账本(确保持久化),再可选写入运行期 Trace 和 SSE 事件;同时可选择写入哈希链副本以提供防篡改能力。

sequenceDiagram participant Caller as "调用方" participant Audit as "write_live_action" participant Ledger as "audit.jsonl" participant Chain as "audit_chain.jsonl" participant Trace as "TraceWriter(可选)" participant Bus as "SSE事件(可选)" Caller->>Audit : 构造LiveActionEvent并调用 Audit->>Audit : to_record() 脱敏 Audit->>Ledger : 追加一行JSONL并flush/fsync alt 开启链模式 Audit->>Chain : append_record(seq/prev_record_hash/record_hash) Chain-->>Audit : 成功或异常(吞掉并记录) end opt 提供trace_writer Audit->>Trace : write({type : "live_action", ...}) end opt 提供event_callback Audit->>Bus : event_callback("live.action", record) end Audit-->>Caller : 返回脱敏后的记录

图表来源 - agent/src/live/audit.py:248-351 - agent/src/governance/ledger.py:133-200

详细组件分析

实时审计事件与写入器(LiveActionEvent 与 write_live_action)

flowchart TD Start(["进入 write_live_action"]) --> Build["构建记录并脱敏"] Build --> WriteLedger["追加到 audit.jsonl<br/>flush + fsync"] WriteLedger --> ChainCheck{"chain=True ?"} ChainCheck -- 否 --> OptionalSinks["可选:Trace/SSE"] ChainCheck -- 是 --> AppendChain["append_record 到 audit_chain.jsonl"] AppendChain --> ChainOK{"是否异常?"} ChainOK -- 是 --> LogError["记录错误但不影响主路径"] ChainOK -- 否 --> OptionalSinks OptionalSinks --> Return["返回脱敏记录"]

图表来源 - agent/src/live/audit.py:248-351

章节来源 - agent/src/live/audit.py:120-216 - agent/src/live/audit.py:248-351

哈希链防篡改账本(governance.ledger)

classDiagram class Ledger { +compute_record_hash(seq, prev_record_hash, payload) str +append_record(path, payload, fsync) void +verify_chain(path) ChainVerificationResult +build_export(path) dict +verify_export(data) ChainVerificationResult +archive_segments(path, max_bytes) list +rotate_if_needed(path, max_bytes) dict +verify_chain_with_archives(path) ChainVerificationResult } class ChainBreak { +index int +seq int? +reason string +detail string } class ChainVerificationResult { +ok bool +record_count int +first_break ChainBreak? } Ledger --> ChainVerificationResult : "返回" ChainVerificationResult --> ChainBreak : "可能包含"

图表来源 - agent/src/governance/ledger.py:133-200 - agent/src/governance/ledger.py:597-739

章节来源 - agent/src/governance/ledger.py:1-48 - agent/src/governance/ledger.py:133-200 - agent/src/governance/ledger.py:597-739 - agent/tests/test_governance.py:330-760

研究报告数值审计工具(report_audit_tool)

flowchart TD A["输入:Markdown报告"] --> B["extract_data_points<br/>抽取数值点"] B --> C["sample_points<br/>随机采样(3-30)"] C --> D["外部获取权威值"] D --> E["render_verdict<br/>PASS/FAIL/WARN"] E --> F["输出:JSON 审计结果"]

图表来源 - agent/src/tools/report_audit_tool.py:132-382

章节来源 - agent/src/tools/report_audit_tool.py:1-503 - agent/tests/test_report_audit_tool.py:1-42

研究目标与审计行持久化(goal/store)

erDiagram GOALS { text goal_id PK text session_id text status text objective text ui_summary text source text protocol text risk_tier int token_budget int tokens_used int turn_budget int turns_used int time_budget_seconds int time_used_seconds int budget_wrapup_sent text created_at text updated_at text completed_at text recap } GOAL_CRITERIA { text criterion_id PK text goal_id FK text session_id text text int required text status text freshness_requirement text protocol_step text created_at text updated_at } GOAL_EVIDENCE { text evidence_id PK text goal_id FK text session_id text criterion_id text claim_id text type text content text tool_call_id text created_at } GOAL_AUDITS { text audit_id PK text goal_id FK text session_id text audit_type text result text rows_json text created_at } GOALS ||--o{ GOAL_CRITERIA : "包含" GOALS ||--o{ GOAL_EVIDENCE : "包含" GOALS ||--o{ GOAL_AUDITS : "包含"

图表来源 - agent/src/goal/store.py:124-255

章节来源 - agent/src/goal/store.py:103-255 - agent/src/goal/store.py:896-921

审计记录查询接口(sessions_routes)

sequenceDiagram participant Client as "客户端" participant API as "sessions_routes" participant Ledger as "audit.jsonl" Client->>API : GET /sessions/{id}/messages?audit_id=la_xxx API->>Ledger : 逐行扫描匹配 audit_id Ledger-->>API : 找到匹配行 API-->>Client : 返回脱敏后的审计记录

图表来源 - agent/src/api/sessions_routes.py:234-255

章节来源 - agent/src/api/sessions_routes.py:234-255

依赖关系分析

graph LR Redact["redaction 脱敏"] --> Audit["live/audit"] Audit --> Ledger["governance/ledger"] Audit --> API["api/sessions_routes"] Report["tools/report_audit_tool"] -.->|独立| Audit Goal["goal/store"] -.->|独立| Audit

图表来源 - agent/src/live/audit.py:248-351 - agent/src/governance/ledger.py:133-200 - agent/src/api/sessions_routes.py:234-255 - agent/src/tools/report_audit_tool.py:132-382 - agent/src/goal/store.py:103-255

章节来源 - agent/src/live/audit.py:248-351 - agent/src/governance/ledger.py:133-200 - agent/src/api/sessions_routes.py:234-255 - agent/src/tools/report_audit_tool.py:132-382 - agent/src/goal/store.py:103-255

性能与存储策略

章节来源 - agent/src/live/audit.py:301-340 - agent/src/governance/ledger.py:23-47 - agent/src/governance/ledger.py:597-739

故障排查指南

章节来源 - agent/src/governance/ledger.py:152-200 - agent/src/live/audit.py:80-97 - agent/src/live/audit.py:316-340 - agent/src/api/sessions_routes.py:234-255 - agent/src/tools/report_audit_tool.py:265-382

结论

Vibe-Trading 审计追踪系统通过“专用合规账本 + 可选哈希链 + 多路扇出”的架构,实现了高可靠、可追溯、可核验的审计能力。系统在关键路径上坚持“先持久化、后通知”的原则,确保真实资金操作的审计记录不被丢失;通过脱敏与严格的链校验,兼顾隐私保护与防篡改需求。配合研究报告数值审计工具与研究目标审计行,形成了从研究到执行的闭环审计体系。

附录:配置与分析工具使用

章节来源 - agent/src/live/audit.py:248-351 - agent/src/governance/ledger.py:597-739 - agent/src/api/sessions_routes.py:234-255 - agent/src/tools/report_audit_tool.py:132-382 - agent/tests/test_governance.py:574-760 - agent/tests/test_report_audit_tool.py:1-42