Files
zclaw_openfang/docs/features/audit-v12/M4-intelligence-layer.md
iven 442ec0eeef
Some checks failed
CI / Lint & TypeCheck (push) Has been cancelled
CI / Unit Tests (push) Has been cancelled
CI / Build Frontend (push) Has been cancelled
CI / Rust Check (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
CI / E2E Tests (push) Has been cancelled
docs(audit): V12 模块化端到端审计报告 — 11 模块 + 总报告
混合矩阵式审计:10 个功能模块 × 五维检查清单
- 项目整体健康度: 76/100
- 2 个 P0 (M4 双数据库 + 反思引擎 LLM 未接入)
- 15 个 P1 (跨 M2/M3/M4/M5/M6/M7/M11)
- 三类断链模式: 写了没接/接了不对/双实现未统一
- 三阶段修复路线图: P0(2-3天) → P1(5-7天) → P2(5-7天)
2026-04-04 17:55:03 +08:00

7.8 KiB
Raw Permalink Blame History

模块 M4 智能层 审计报告

审计版本: V12 审计日期: 2026-04-04 审计范围: 记忆/身份演化/反思引擎/心跳巡检/自主授权/上下文压缩 6 个子模块


1. 模块概况

功能描述

ZCLAW 智能层提供 Agent 的"认知能力":跨会话记忆、人格演化、行为反思、主动巡检、自主决策授权、上下文压缩。

涉及文件清单

前端

  • 记忆: store/memoryGraphStore.ts, lib/intelligence-client/memory.ts, components/MemoryPanel.tsx
  • 身份: lib/intelligence-client/identity.ts, components/AgentOnboardingWizard.tsx
  • 反思: lib/intelligence-client/reflection.ts, components/ReflectionLog.tsx
  • 心跳: lib/intelligence-client/heartbeat.ts
  • 自主: lib/autonomy-manager.ts, components/AutonomyConfig.tsx
  • 压缩: lib/intelligence-client/fallback-compactor.ts

后端 (Rust)

  • Intelligence 引擎: desktop/src-tauri/src/intelligence/ (memory.rs, identity.rs, reflection.rs, heartbeat.rs, compactor.rs)
  • Runtime 中间件: crates/zclaw-runtime/src/middleware/ (memory.rs, compaction.rs)
  • 存储: crates/zclaw-growth/src/storage/sqlite.rs
  • Kernel 集成: crates/zclaw-kernel/src/kernel/messaging.rs

2. 子模块逐个分析

2.1 Agent 记忆

检查维度 状态 详情
链路完整性 ⚠️ 双数据库问题 — 前端 UI 用 PersistentMemoryStore(LIKE 搜索)Runtime 中间件用 SqliteStorage(FTS5 搜索),两套独立 SQLite
参数一致性 ⚠️ 前端 types?: MemoryType[](数组) vs 后端 memory_type?: string(单值)
边界处理 错误传播完整embedding 失败优雅降级
状态管理 ⚠️ 前端手动刷新,无自动同步
安全 ⚠️ 无 content 长度限制,无 importance 范围验证

关键问题 [P0]: 双数据库导致:

  • 用户手动保存的记忆不出现在对话记忆注入中
  • Agent 自动提取的记忆不出现在前端记忆面板
  • 前端记忆搜索用的是 LIKE 模糊匹配,文档声称的 FTS5 仅在 Runtime 层生效

2.2 身份演化

检查维度 状态 详情
链路完整性 identity_get/propose_change/approve_proposal 全部注册UI 组件完整
参数一致性 Soul/Instructions 枚举匹配正确
边界处理 快照上限 50并发 Mutex 保护
状态管理 文件系统持久化(store.json),重启恢复
安全 ⚠️ store.json 无加密proposal_id 可预测

关键问题: user_profile 注入被注释掉(防止对话泄漏),心跳人格改进不会自动创建 identity proposal。整体功能可用但需手动触发。

2.3 反思引擎

检查维度 状态 详情
链路完整性 ⚠️ 命令全部注册,但 LLM 驱动未接入
参数一致性 类型转换正确
边界处理 LLM 失败回退到规则分析,空记忆列表处理正确
状态管理 对话计数器 + 双重触发条件
安全 持久化 fire-and-forget 不影响主流程

关键问题 [P0]: reflection_reflect Tauri 命令传入 driver=None,即使配置 use_llm=true 也只用规则分析。LLM 分析路径从未在 Tauri 桌面端生效。

2.4 心跳巡检

检查维度 状态 详情
链路完整性 后端引擎完整5 项内置检查)
参数一致性 安静时间解析正确
边界处理 ⚠️ interval_minutes 无下限验证
状态管理 ⚠️ 不自动启动,需前端调用 heartbeat_init + heartbeat_start
安全 ⚠️ 全局静态状态,所有 agent 共享

关键问题 [P1]: 心跳引擎完全依赖前端主动初始化和数据同步。MEMORY_STATS_CACHELAST_INTERACTIONCORRECTION_COUNTERS 三个全局缓存需前端定期调用命令填充,否则心跳检查返回空结果。

2.5 自主授权

检查维度 状态 详情
链路完整性 纯前端实现,无后端 Rust 集成
参数一致性 ⚠️ workflow_trigger 映射到 autoCompaction语义不匹配
边界处理 高风险操作强制审批,自主模式禁止自我修改
状态管理 localStorage 持久化,审计日志 100 条上限
安全 后端无强制检查,恶意用户可绕过前端直接调用 Tauri 命令

关键问题 [P1]: 自主授权仅是前端"咨询层",后端 MemoryMiddleware 等不检查自主授权级别。TOML 的 requires_approval 仅在 hand_execute 路径生效,其他操作完全绕过。

2.6 上下文压缩

检查维度 状态 详情
链路完整性 Runtime 中间件自动触发Tauri 命令手动触发
参数一致性 ⚠️ 两套 CompactionConfig 默认值不同
边界处理 空消息处理正确LLM 失败回退
状态管理 无状态设计,校准因子全局共享
安全 校准使用 EMA + clamp合理

关键问题: Tauri 层和 Runtime 层各有独立的压缩实现代码重复但配置不同。Runtime 层是实际生效路径。


3. 问题清单

ID 描述 文件:行号 级别
M4-01 [P0] 双数据库: PersistentMemoryStore vs SqliteStorage 数据不共享 memory/persistent.rs vs zclaw-growth/src/storage/sqlite.rs P0
M4-02 [P0] 反思引擎 LLM 未接入: reflection_reflect 传 driver=None reflection.rs:759-766 P0
M4-03 [P1] 心跳不自动启动: 需前端手动初始化 heartbeat.rs P1
M4-04 [P1] 自主授权后端无强制: 仅前端咨询层 autonomy-manager.ts P1
M4-05 前端记忆搜索用 LIKE 非 FTS5 persistent.rs search() P1
M4-06 前端 types 数组 vs 后端单值 MemorySearchOptions 类型定义 P2
M4-07 记忆 content 无长度限制 memory_commands P2
M4-08 tags 参数标注 dead_code 未使用 persistent.rs P2
M4-09 heartbeat interval_minutes 无下限验证 heartbeat.rs P2
M4-10 identity proposal_id 可预测 identity.rs rand_id() P2
M4-11 store.json 无加密 identity.rs P2
M4-12 自主授权 workflow_trigger 映射错误 autonomy-manager.ts:271 P2
M4-13 两套压缩实现代码重复 compactor.rs vs compaction.rs P3
M4-14 heartbeat broadcast subscribe 未被使用 heartbeat.rs P3
M4-15 heartbeat 历史截断 split_off 语义 heartbeat.rs P3

4. 改进建议

短期修复(按优先级)

  1. [P0] 统一存储层:合并 PersistentMemoryStore 和 SqliteStorage或让前端搜索也查询 SqliteStorage
  2. [P0] 在 reflection_reflect Tauri 命令中传入实际 LLM 驱动
  3. [P1] 自动启动心跳引擎(在 agent_chat_stream 或 Kernel 初始化中)
  4. [P1] 将自主授权关键检查移到 Rust 后端

长期架构建议

  • 前端记忆搜索升级为 FTS5
  • 移除 Tauri 层的重复压缩实现,统一使用 Runtime 中间件
  • identity 持久化改为 SQLite

5. 健康度评分

维度 评分 说明
链路完整性 50/100 双数据库是架构级问题LLM/心跳未接入
参数一致性 65/100 基本匹配但有多处类型/映射不一致
边界处理 70/100 整体较好,缺少输入验证
状态管理 65/100 多数子模块缺少自动触发/同步
安全资源 55/100 自主授权不强制、store.json 不加密

综合健康度: 61/100

两个 P0 级问题(双数据库 + 反思 LLM 未接入)是此模块的核心架构缺陷。智能层"写了但没接通"的问题最集中。