Skip to content

refactor audit chain & risk routing; add 1.0.3 migration#22

Closed
kidbei wants to merge 6 commits intomainfrom
codex/audit-chain-and-ui-timeline
Closed

refactor audit chain & risk routing; add 1.0.3 migration#22
kidbei wants to merge 6 commits intomainfrom
codex/audit-chain-and-ui-timeline

Conversation

@kidbei
Copy link
Copy Markdown
Contributor

@kidbei kidbei commented Apr 21, 2026

改了什么

1) 审计日志链路重构(Go + UI)

  • 重写审计链路跟踪:以“最后一条 role=user 消息”创建一条审计链,后续 tool_call -> tool_result -> assistant 通过 tool_call_id 关联到同一 log_uuid
  • 增加 tool_call_id 归一化与缺失补齐能力,降低不同 provider / 协议差异带来的关联失败。
  • 强化并发与内存生命周期:
    • 修复并发请求下链路串写、链路合并问题。
    • 增加 pending 映射回收、TTL 清理、完成态回收,避免内存泄露。
  • 审计日志详情“原始”区域改为时间线展示,按时序展示 user/toolcall/toolresult/assistant。
  • 保持审计为旁路:审计写入失败不阻断代理主流程。

2) 风险处置路由改造为 asset_id

  • 风险处置请求路由从 source_plugin 切换为 asset_id(实例级路由)。
  • Risk / RiskInfo 增加并透传 asset_id;Flutter Web/Desktop 处置请求统一携带 asset_id
  • 扫描结果读写链路补齐 asset_id(可唯一判定时),并在 PluginManager 中清理同插件历史实例,避免旧实例残留导致无法注入 asset_id

3) 1.0.3 启动迁移

  • 新增启动迁移步骤:1.0.2 -> 1.0.3
  • 按约定采用破坏性重建:
    • 审计日志表 audit_logs 直接删除重建。
    • 风险检测相关表(scans/assets/risks/skill_scans)评估后同样删除重建(旧结构与新语义缺少稳定映射,保留迁移风险高)。
  • 应用版本改为 1.0.3pubspec.yaml),并同步 Web 默认 current_version

4) 规范与文档同步

  • 更新全局规范:涉及数据库迁移逻辑,必须同步提升当前版本号。
  • 更新插件增量开发文档中的风险处置路由描述(改为 asset_id)。
  • 新增审计日志聚合技术方案文档。

为什么改

  • 现有审计链路在多轮、多并发、跨请求 toolresult 场景下会出现错链/串链/缺失,无法满足“整条链路一条日志”的目标。
  • 风险处置用插件名路由在多实例场景下存在歧义,且不符合实例隔离原则;必须切到 asset_id 才能确保精确路由。
  • 本次审计与风险结构已发生不兼容变更;继续兼容旧表会引入大量隐式兼容代码和不确定行为,不符合当前重构目标。

影响范围

  • Go:core/proxy 审计链路、core/plugin_manager 风险处置路由、core/repository 启动迁移、core/service 扫描结果处理。
  • Flutter:审计详情时间线展示、风险模型与处置请求参数、Web 默认版本参数。
  • 数据层:升级到 1.0.3 时会清空旧审计与旧风险扫描历史(由新结构重建后重新累积)。
  • 代理主流程:保持不阻断;审计异常仅记录日志。

如何验证

  1. 单元与集成测试
  • go test ./... -count=1
  • dart analyze lib/models/risk_model.dart lib/services/plugin_service_io.dart lib/services/plugin_service_web.dart lib/services/scan_database_service.dart lib/services/scanner_service.dart lib/web/web_home_page.dart
  1. 关键场景手测
  • 审计链路:
    • 输入一条 user 指令触发多次 toolcall/toolresult,确认在审计详情中为同一条链路。
    • 并发发送多条指令,确认不会互相串链。
    • 原始区按时间线展示 user/toolcall/toolresult/assistant。
  • 风险处置:
    • 点击“执行修复”时请求携带 asset_id,不再依赖 source_plugin
    • 多实例同名资产下,修复命中正确实例。
  • 版本迁移:
    • 1.0.2 旧库启动 1.0.3,确认执行 1.0.2 -> 1.0.3 迁移,旧审计/风险数据清空并按新结构重建。
  1. 运行方式
  • ./scripts/build_go.sh
  • ./scripts/run_with_pprof.sh

@kidbei
Copy link
Copy Markdown
Contributor Author

kidbei commented Apr 21, 2026

Closing per request: mitigation routing regression (asset_id required) blocks risk disposal flow.

@kidbei kidbei closed this Apr 21, 2026
@kidbei kidbei reopened this Apr 21, 2026
@kidbei kidbei changed the title refactor audit chain aggregation and timeline rendering refactor audit chain & risk routing; add 1.0.3 migration Apr 21, 2026
@hudyac
Copy link
Copy Markdown
Collaborator

hudyac commented Apr 21, 2026

24统一合并

@hudyac hudyac closed this Apr 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants