From c048cb215f9e88c3e88e267a99b269735be0b322 Mon Sep 17 00:00:00 2001 From: iven Date: Sun, 12 Apr 2026 23:33:13 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20V13=20=E7=B3=BB=E7=BB=9F=E6=80=A7?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=AE=A1=E8=AE=A1=20=E2=80=94=206=20?= =?UTF-8?q?=E9=A1=B9=E6=96=B0=E5=8F=91=E7=8E=B0=20+=20TRUTH.md=20=E6=95=B0?= =?UTF-8?q?=E5=AD=97=E6=A0=A1=E5=87=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit V13 审计聚焦 V12 后新增功能 (行业配置/Knowledge/Hermes/管家主动性): - 总体健康度 82/100 (V12: 76) - P1 新发现 3 项: TrajectoryRecorder 未注册/industryStore 孤立/桌面端无 Knowledge Search - P2 新发现 3 项: Webhook 孤儿表/Structured Data 无 Admin/PersistentMemoryStore 遗留 - 修正 V12 错误认知 5 项: Butler/MCP/Gateway/Presentation 已接通 - TRUTH.md 数字校准: Tauri 184→191, SaaS 122→136, @reserved 33→24 --- docs/TRUTH.md | 23 +- docs/features/AUDIT_TRACKER.md | 52 +++- docs/features/audit-v13/V13-FULL-REPORT.md | 304 +++++++++++++++++++++ wiki/known-issues.md | 45 ++- wiki/log.md | 11 +- 5 files changed, 408 insertions(+), 27 deletions(-) create mode 100644 docs/features/audit-v13/V13-FULL-REPORT.md diff --git a/docs/TRUTH.md b/docs/TRUTH.md index bbffe03..a353981 100644 --- a/docs/TRUTH.md +++ b/docs/TRUTH.md @@ -1,7 +1,7 @@ # ZCLAW 系统真相文档 -> **更新日期**: 2026-04-11 -> **数据来源**: V11 全面审计 + 二次审计 + V12 模块化端到端审计 + 代码全量扫描验证 + 功能测试 Phase 1-5 + 发布前功能测试 Phase 3 + 发布前全面测试代码级审计 + 2026-04-11 代码验证 +> **更新日期**: 2026-04-12 +> **数据来源**: V11 全面审计 + 二次审计 + V12 模块化端到端审计 + 代码全量扫描验证 + 功能测试 Phase 1-5 + 发布前功能测试 Phase 3 + 发布前全面测试代码级审计 + 2026-04-11 代码验证 + V13 系统性功能审计 2026-04-12 > **规则**: 此文档是唯一真相源。所有其他文档如果与此冲突,以此为准。 --- @@ -11,23 +11,23 @@ | 指标 | 实际值 | 验证方式 | |------|--------|----------| | Rust Crates | 10 个 (编译通过) | `cargo check --workspace` | -| Rust 代码行数 | ~74,600 | wc -l (2026-04-11 验证) | -| Rust 单元测试 | 431 个 (#[test]) + 367 个 (#[tokio::test]) = 798 | `grep '#\[test\]' crates/` + `grep '#\[tokio::test\]'` (2026-04-11 验证) | +| Rust 代码行数 | ~77,000 (crates) + ~61,400 (src-tauri) = ~138,400 | wc -l (2026-04-12 V13 验证) | +| Rust 单元测试 | 433 个 (#[test]) + 368 个 (#[tokio::test]) = 801 | `grep '#\[test\]' crates/` + `grep '#\[tokio::test\]'` (2026-04-12 V13 验证) | | Rust 测试运行通过 | 684 workspace + 138 SaaS = 822 | Hermes 4 Chunk `cargo test --workspace` 2026-04-09 | -| Tauri 命令 | 184 个 (2026-04-11 验证) | `grep '#\[.*tauri::command'` | -| **Tauri 命令有前端调用** | **105 处** | `grep invoke( desktop/src/` (2026-04-11 验证) | -| **Tauri 命令已标注 @reserved** | **33 个** | Rust 源码 @reserved 标注 | -| **Tauri 命令孤儿 (无调用+无标注)** | ~46 个 | 184 - 105 invoke处 - 33 @reserved ≈ 46 | +| Tauri 命令 | 191 个 (2026-04-12 V13 验证) | `grep '#\[.*tauri::command'` | +| **Tauri 命令有前端调用** | **106 处** | `grep invoke( desktop/src/` (2026-04-12 V13 验证) | +| **Tauri 命令已标注 @reserved** | **24 个** | Rust 源码 @reserved 标注 (2026-04-12 V13 验证) | +| **Tauri 命令孤儿 (无调用+无标注)** | ~61 个 | 191 - 106 invoke处 - 24 @reserved ≈ 61 | | SKILL.md 文件 | 75 个 | `ls skills/*.md \| wc -l` | | Hands 启用 | 9 个 | Browser/Collector/Researcher/Clip/Twitter/Whiteboard/Slideshow/Speech/Quiz(均有 HAND.toml) | | Hands 禁用 | 2 个 | Predictor, Lead(概念定义存在,无 TOML 配置文件或 Rust 实现) | | Pipeline 模板 | 17 个 YAML | `pipelines/` 目录全量统计(含 _templates/ 和 design-shantou/ 子目录) | -| SaaS API 端点 | 122 个 .route() | `grep .route( crates/zclaw-saas/` (2026-04-11 验证) | -| SaaS 路由模块 | 12 个 | account/agent_template/auth/billing/knowledge/migration/model_config/prompt/relay/role/scheduled_task/telemetry(scheduled_task: 后端 5 CRUD + Admin V2 前端 service/page/route/nav) | +| SaaS API 端点 | 136 个 .route() | `grep .route( crates/zclaw-saas/` (2026-04-12 V13 验证) | +| SaaS 路由模块 | 12 个 + industry | account/agent_template/auth/billing/knowledge/migration/model_config/prompt/relay/role/scheduled_task/telemetry/industry(scheduled_task: 后端 5 CRUD + Admin V2 前端 service/page/route/nav) | | SaaS 数据表 | 34 个(含 saas_schema_version) | CREATE TABLE 全量统计 | | SaaS Workers | 7 个 | log_operation/cleanup_rate_limit/cleanup_refresh_tokens/record_usage/update_last_used/aggregate_usage/generate_embedding | | LLM Provider | 8 个 | Kimi/Qwen/DeepSeek/Zhipu/OpenAI/Anthropic/Gemini/Local | -| Zustand Store | 20 个 | find desktop/src/store/ -name "*.ts" (2026-04-11 验证) | +| Zustand Store | 21 个 | find desktop/src/store/ -name "*.ts" (2026-04-12 V13 验证) | | React 组件 | 104 个 (.tsx/.ts) | find desktop/src/components/ (2026-04-11 验证) | | 前端 TypeScript 测试 | 31 个文件 (6 store + 5 lib + 1 config + 1 stabilization + 18 E2E spec) | Phase 3-4 全量 | | 前端 lib | 83 个 .ts | find desktop/src/lib/ (2026-04-11 验证) | @@ -200,3 +200,4 @@ Viking 5 个孤立 invoke 调用已于 2026-04-03 清理移除: | 2026-04-09 | Hermes Intelligence Pipeline 4 Chunk 完成:(1) Chunk1 ExperienceStore+Extractor (10 tests) (2) Chunk2 UserProfileStore+Profiler (14 tests) (3) Chunk3 NlScheduleParser (16 tests) (4) Chunk4 TrajectoryRecorder+Compressor (18 tests)。中间件 13→14 层 (+TrajectoryRecorder@650)。Schema v2→v4 (user_profiles + trajectory tables)。全量 684 tests 0 failed | | 2026-04-10 | 发布前修复批次:(1) ButlerRouter 语义路由 — SemanticSkillRouter TF-IDF 替代关键词,75 技能参与路由 (2) P1-04 AuthGuard 竞态 — 三态守卫 + cookie 先验证 (3) P2-03 限流 — Cross 测试共享 token (4) P1-02 浏览器聊天 — Playwright SaaS fixture。BREAKS.md 全部 P0/P1/P2 已修复 | | 2026-04-11 | 发布前数字校准:(1) Rust 代码 66K→74.6K (2) Rust 测试 537→798 (#[test] 431 + #[tokio::test] 367) (3) Tauri 命令 182→184 (4) 前端 invoke 92→105 (5) @reserved 20→33 (6) SaaS .route() 140→122 (7) Zustand Store 18→20 (8) React 组件 135→104 (9) 前端 lib 85→83 (10) Cargo.toml 版本 0.1.0→0.9.0-beta.1 | +| 2026-04-12 | V13 系统性功能审计数字校准:(1) Tauri 命令 184→191 (2) 前端 invoke 105→106 (3) @reserved 33→24 (Butler/MCP已接通) (4) 孤儿命令 ~46→~61 (5) Rust 测试 798→801 (433+368) (6) SaaS .route() 122→136 (7) Zustand Store 20→21 (8) dead_code 76→43 (9) Rust LOC crates ~74.6K→~77K | diff --git a/docs/features/AUDIT_TRACKER.md b/docs/features/AUDIT_TRACKER.md index b0251cb..12348c3 100644 --- a/docs/features/AUDIT_TRACKER.md +++ b/docs/features/AUDIT_TRACKER.md @@ -1,8 +1,8 @@ -# ZCLAW 审计追踪表 (V12) +# ZCLAW 审计追踪表 (V13) > **创建日期**: 2026-03-29 -> **审计版本**: V12 模块化端到端审计 -> **最后更新**: 2026-04-04 +> **审计版本**: V13 系统性功能审计 +> **最后更新**: 2026-04-12 > **追踪规则**: 每个发现项记录状态变更,修复后需附验证方法 --- @@ -320,3 +320,49 @@ ### 待后续决策的 P1 | M4-04 深层 | 自主授权后端强制阻断 | **WONTFIX** | Tauri 命令层已阻断手动触发;scheduler/trigger bypass 是有意设计;4 层防御深度已足够 | + +--- + +## V13 系统性功能审计 (2026-04-12) + +> 审计范围: 全系统功能一致性 + 系统可用性。聚焦 V12 后新增功能 (行业配置/Knowledge/Hermes/管家主动性) + V12 高风险模块复验。 +> 完整报告: `docs/features/audit-v13/V13-FULL-REPORT.md` + +### P1: 严重级 + +| ID | 问题 | 状态 | 验证方法 | +|----|------|------|----------| +| V13-GAP-01 | TrajectoryRecorderMiddleware 未注册到中间件链 | **OPEN** | `grep trajectory crates/zclaw-kernel/src/kernel/mod.rs` — 零匹配。中间件代码存在 (`trajectory_recorder.rs`),有测试,但 `create_middleware_chain()` 中未注册。Schema v4 `trajectory_events` 表已创建但零数据流入。 | +| V13-GAP-02 | industryStore 未被任何组件导入 | **OPEN** | `grep from.*industryStore\|useIndustryStore desktop/src/` — 仅自身文件。Store 存在且 `viking_load_industry_keywords` 后端链路正常,但桌面端无 UI 展示行业配置状态。 | +| V13-GAP-03 | 桌面端未接入 Knowledge Search API | **OPEN** | `grep knowledge/search desktop/src/` — 零匹配。SaaS 有 `POST /api/v1/knowledge/search` 端点,Admin-v2 已消费,但桌面端不搜索知识库。 | + +### P2: 高优先级 + +| ID | 问题 | 状态 | 验证方法 | +|----|------|------|----------| +| V13-GAP-04 | Webhook 孤儿迁移 (代码已删但表仍在) | **OPEN** | `crates/zclaw-saas/migrations/20260403000002_webhooks.sql` 存在,但 `crates/zclaw-saas/src/` 中零 webhook 代码 | +| V13-GAP-05 | Structured Data Source 5 路由无 Admin UI | **OPEN** | `grep structured admin-v2/src/services/knowledge.ts` — 零匹配 | +| V13-GAP-06 | PersistentMemoryStore 遗留模块 | **OPEN** | `desktop/src-tauri/src/memory/persistent.rs` 有 `#[allow(dead_code)]`,数据流已统一到 VikingStorage | + +### V13 修正 V12 错误认知 + +| 项目 | V12 认知 | V13 实际 | +|------|---------|---------| +| Butler Pain Aggregator | @reserved 无前端调用 | **已接通** — `viking-client.ts:261-308` 有 5 个 invoke,ButlerPanel 3 组件消费 | +| MCP 生命周期 | 无前端调用 | **已接通** — `mcp-client.ts:49-76` 有 4 个 invoke,MCPServices.tsx 消费 | +| Reflection Engine driver | driver=None | **已修复** — `reflection.rs:787-792` 从 kernel_state 获取真实 driver | +| Gateway 控制命令 | 无前端调用 | **已接通** — `tauri-gateway.ts:77-217` 有调用 | +| Pipeline analyze_presentation | 无前端调用 | **已接通** — `PresentationContainer.tsx:55` 有调用 | + +### V13 状态变更日志 + +| 日期 | ID | 变更 | 备注 | +|------|-----|------|------| +| 2026-04-12 | - | V13 审计开始 | 聚焦 V12 后新增功能 + 高风险模块复验 | +| 2026-04-12 | V13-GAP-01 | NEW | TrajectoryRecorderMiddleware 未注册中间件链 | +| 2026-04-12 | V13-GAP-02 | NEW | industryStore 无组件导入 | +| 2026-04-12 | V13-GAP-03 | NEW | 桌面端无 Knowledge Search | +| 2026-04-12 | V13-GAP-04 | NEW | Webhook 孤儿迁移 | +| 2026-04-12 | V13-GAP-05 | NEW | Structured Data Source 无 Admin UI | +| 2026-04-12 | V13-GAP-06 | NEW | PersistentMemoryStore 遗留 | +| 2026-04-12 | - | V13 修正 | Butler/MCP/Gateway/Presentation 已接通,非孤儿命令 | diff --git a/docs/features/audit-v13/V13-FULL-REPORT.md b/docs/features/audit-v13/V13-FULL-REPORT.md new file mode 100644 index 0000000..f73de82 --- /dev/null +++ b/docs/features/audit-v13/V13-FULL-REPORT.md @@ -0,0 +1,304 @@ +# V13 系统性功能审计报告 + +> **审计日期**: 2026-04-12 +> **审计范围**: 全系统功能一致性 + 系统可用性 +> **审计方法**: 量化基线对比 + 五种断链模式扫描 + 功能逐项链路追踪 +> **基准对比**: V12 模块化审计 (2026-04-04) + +--- + +## 1. 执行摘要 + +### 1.1 总体健康度: **82/100** (V12: 加权平均 76/100) + +V12 后新增的 4 大功能系统 (行业配置/Knowledge/Hermes/管家主动性) 大部分已正确接通。发现 **3 个确认断链** 和 **3 个确认差距**,无 P0 级问题。 + +### 1.2 Top 5 发现 + +| # | 发现 | 严重度 | 类型 | +|---|------|--------|------| +| 1 | TrajectoryRecorderMiddleware 未注册到中间件链 | **P1** | 写了没接 | +| 2 | industryStore 未被任何组件导入 | **P1** | 写了没接 | +| 3 | 桌面端未接入 Knowledge Search API | **P1** | 写了没接 | +| 4 | Webhook 孤儿表 (迁移存在但代码已删) | **P2** | 存了没用 | +| 5 | Structured Data Source 路由无 Admin-v2 消费者 | **P2** | 写了没接 | + +### 1.3 修正 V12 错误认知 + +| V12 认知 | V13 实际 | 说明 | +|----------|---------|------| +| Butler/Pain Aggregator 5 命令 @reserved 无前端调用 | **已接通** | `viking-client.ts` 有全部 5 个 invoke 调用,ButlerPanel 3 个组件消费 | +| MCP 4 命令无前端调用 | **已接通** | `mcp-client.ts` 有全部 4 个 invoke 调用,MCPServices.tsx 消费 | +| Reflection Engine driver=None | **已修复** | `reflection.rs:787-792` 从 kernel_state 获取真实 driver | +| Pipeline Presentation 无前端调用 | **部分接通** | `analyze_presentation` 被 PresentationContainer.tsx 调用 | +| Gateway 控制命令无前端调用 | **已接通** | `tauri-gateway.ts` 有 zclaw_start/stop/restart/version 调用 | +| Embedding 全部 NoOp | **设计如此** | NoOp 仅是默认值,用户配置后替换为真实 provider | +| Memory 双存储未统一 | **事实已统一** | PersistentMemoryStore 仅保留用于遗留嵌入配置,所有数据走 VikingStorage | + +--- + +## 2. 量化基线 (TRUTH.md 漂移校准) + +### 2.1 指标对比 + +| 指标 | TRUTH.md 值 | V13 当前值 | 偏差 | 说明 | +|------|------------|-----------|------|------| +| Tauri 命令 | 184 | **191** | **+7** | 行业/Hermes 等新增命令 | +| 前端 invoke | 105 | **106** | +1 | industryStore 新增 1 处 | +| @reserved | 33 | **24** | **-9** | 部分命令已接通前端 | +| 孤儿命令 | ~46 | **~61** | **+15** | 191-106-24=61, 含新增命令 | +| Rust 测试 #[test] | 431 | **433** | +2 | | +| Rust 测试 #[tokio::test] | 367 | **368** | +1 | | +| Rust 测试合计 | 798 | **801** | +3 | | +| dead_code (crates) | - | **16** | - | 14 文件 | +| dead_code (src-tauri) | - | **27** | - | 15 文件 | +| dead_code 合计 | 76 | **43** | **-33** | 显著减少 | +| TODO/FIXME (Rust) | 4 | **3** | -1 | | +| TODO/FIXME (前端) | 4 | **1** | -3 | | +| Zustand Store | 20 | **21** | +1 | 含 industryStore | +| React 组件 | 104 | **104** | 0 | | +| SaaS .route() | 122 | **136** | **+14** | Knowledge/Industry/Billing 等新增路由 | +| SKILL.md | 75 | **75** | 0 | | +| 前端 lib | 83 | **83** | 0 | | +| Rust LOC (crates) | ~74,600 | **77,025** | +2,425 | | +| Rust LOC (src-tauri) | - | **61,414** | - | | +| Rust LOC 总计 | - | **138,439** | - | crates + src-tauri | + +### 2.2 关键偏差分析 + +1. **Tauri 命令 184→191 (+7)**: V12 后新增命令 (行业加载/Hermes 组件/管家主动性) +2. **@reserved 33→24 (-9)**: Butler/MCP 等命令已接通前端,不再需要 @reserved 标记 +3. **SaaS .route() 122→136 (+14)**: Knowledge Phase A-D + Industry + Billing + Role 等新增路由 +4. **dead_code 76→43 (-33)**: 大量清理工作已完成 + +--- + +## 3. 五种断链模式分析 + +### 3.1 "写了没接" — 确认 3 项 + +#### GAP-01: TrajectoryRecorderMiddleware 未注册 (P1) + +- **位置**: `crates/zclaw-runtime/src/middleware/trajectory_recorder.rs` (完整实现, 有测试) +- **断链点**: `crates/zclaw-kernel/src/kernel/mod.rs` 的 `create_middleware_chain()` 中 **零匹配** `trajectory` +- **影响**: Hermes Schema v4 创建了 `trajectory_events` 表,TrajectoryRecorder 代码存在但永不执行 → 轨迹数据零流入 → 经验分析基础缺失 +- **修复**: 在 `create_middleware_chain()` 末尾注册 TrajectoryRecorder (优先级 @650) + +#### GAP-02: industryStore 未被组件导入 (P1) + +- **位置**: `desktop/src/store/industryStore.ts` (完整 Store, 有 persist) +- **断链点**: `Grep 'from.*industryStore\|useIndustryStore' desktop/src/` 仅返回自身文件 +- **影响**: 行业配置数据可从 SaaS 获取,可推送到 Rust 后端 (`viking_load_industry_keywords`),但**桌面端 UI 无法展示行业配置状态** +- **注意**: `industryStore` 中的 `fetchIndustries()` 调用 `viking_load_industry_keywords` 成功后端数据流通,但 Store 本身未被任何 React 组件消费 +- **修复**: 在 Settings 或 ButlerPanel 中添加行业配置展示组件 + +#### GAP-03: 桌面端未接入 Knowledge Search API (P1) + +- **位置**: SaaS 有 `POST /api/v1/knowledge/search` 端点 +- **断链点**: `desktop/src/` 中搜索 `knowledge/search` **零匹配** +- **影响**: 桌面端用户无法搜索 SaaS 知识库中的内容。Knowledge 仅通过 Admin-v2 管理 +- **修复**: 在 saasStore 或新建 knowledgeStore 中添加搜索方法,接入 VikingPanel 或独立面板 + +### 3.2 "接了没传" — 无确认项 + +| 检查项 | 状态 | 说明 | +|--------|------|------| +| 行业关键词传播 | ✅ 正常 | `industryStore.ts:87` → `viking_commands.rs:708` → `kernel/mod.rs:244` 完整连通 | +| 计费用量增量 | ✅ 正常 | 双路径: 桌面 handStore 手动报告 + SaaS relay 自动递增 | +| Reflection Engine driver | ✅ 正常 | `reflection.rs:787-792` 从 kernel_state 获取真实 LLM driver | + +### 3.3 "传了没存" — 无确认项 + +| 检查项 | 状态 | 说明 | +|--------|------|------| +| User profiles 持久化 | ✅ 正常 | `user_profiler.rs:107` 写入, `agent.rs:188` 读取 | +| Trajectory events | ⚠️ 关联 GAP-01 | 表存在+代码存在,但因中间件未注册导致零数据流入 | + +### 3.4 "存了没用" — 确认 1 项 + +#### GAP-04: Webhook 孤儿表 (P2) + +- **位置**: `crates/zclaw-saas/migrations/20260403000002_webhooks.sql` +- **现状**: 创建了 `webhook_subscriptions` 和 `webhook_deliveries` 表,但所有业务代码已删除 +- **影响**: 新数据库部署时会创建无用表,占用 schema 空间 +- **修复**: 添加 down migration 或在 schema 中标注 deprecated + +### 3.5 "双系统不同步" — 确认 1 项 + +#### GAP-05: PersistentMemoryStore 遗留 (P2) + +- **位置**: `desktop/src-tauri/src/memory/persistent.rs` (有 `#[allow(dead_code)]`) +- **现状**: 数据流已统一到 VikingStorage,PersistentMemoryStore 仅保留用于遗留嵌入配置路径 +- **影响**: 代码复杂度增加,两个独立的 SQLite 连接 +- **修复**: 将嵌入配置路径迁移到 VikingStorage,然后删除 PersistentMemoryStore + +### 3.6 "写了没接" — Admin-v2 侧 + +#### GAP-06: Structured Data Source 路由无消费者 (P2) + +- **位置**: SaaS Knowledge 模块有 5 个 structured source 路由 +- **断链点**: `admin-v2/src/services/knowledge.ts` 中搜索 `structured` **零匹配** +- **影响**: 结构化数据源 API 存在但无管理界面 +- **修复**: 在 Admin Knowledge 页面添加结构化数据源管理 + +--- + +## 4. 功能逐项审计结果 + +### 4.1 V12 后新增功能 + +#### 行业配置系统 — 完成度: **75/100** + +| 链路环节 | 状态 | 说明 | +|----------|------|------| +| SaaS 行业 CRUD (10 路由) | ✅ | handlers.rs + service.rs 完整 | +| Admin-v2 行业管理页面 | ✅ | Industries.tsx 完整 | +| Desktop industryStore | ⚠️ GAP-02 | Store 存在但无组件导入 | +| Tauri viking_load_industry_keywords | ✅ | 命令定义+注册+调用 | +| ButlerRouter 行业关键词注入 | ✅ | kernel/mod.rs:244 共享 Arc | +| 4 内置行业配置 | ✅ | 医院行政/酒店/教育/零售 | + +#### Knowledge Phase A-D — 完成度: **85/100** + +| 链路环节 | 状态 | 说明 | +|----------|------|------| +| Knowledge SaaS (29 路由) | ✅ | Category/Item/Version/Search/Seed/Analytics | +| Admin-v2 Knowledge 页面 | ✅ | 消费 categories/items/search/analytics | +| Knowledge Analytics (5 端点) | ✅ | Knowledge.tsx:534-558 全部消费 | +| Structured Data Source (5 路由) | ⚠️ GAP-06 | 无 admin-v2 消费者 | +| Desktop Knowledge Search | ⚠️ GAP-03 | 无桌面端调用 | +| 种子知识冷启动 | ✅ | seed 端点 + 种子模板 | + +#### Hermes Intelligence Pipeline — 完成度: **65/100** + +| 链路环节 | 状态 | 说明 | +|----------|------|------| +| ExperienceStore | ✅ | 实例化在 experience.rs,有 Tauri 命令 | +| UserProfileStore | ✅ | 写入 user_profiler.rs,读取 agent.rs | +| TrajectoryRecorder | ⚠️ GAP-01 | 代码完整但未注册中间件链 | +| NlScheduleParser | ✅ | 中文时间→cron 转换 | +| Schema v4 (user_profiles + trajectory) | ✅ | 表已创建 | +| Trajectory 数据实际流入 | ❌ | 因 GAP-01 导致零数据 | + +#### 管家主动性 (Phase 2-5) — 完成度: **80/100** + +| 链路环节 | 状态 | 说明 | +|----------|------|------| +| ButlerRouter 语义路由 | ✅ | SemanticSkillRouter TF-IDF | +| 触发信号持久化 | ✅ | VikingStorage | +| 跨会话连续性 | ✅ | 痛点回访 + 经验检索 | +| ButlerPanel UI | ✅ | Insights/Proposals/Memory 3 区 | +| Pain Aggregator 5 命令 | ✅ | viking-client.ts 全部 5 个 invoke | +| 行业配置注入 ButlerRouter | ✅ | kernel/mod.rs 共享 Arc | + +### 4.2 V12 高风险模块复验 + +#### M3 Hands System — V12: 58/100 → V13: **72/100** + +提升原因: Butler/MCP 命令接通确认, 数据流验证通过。仍有孤儿命令 (gateway control 细粒度命令)。 + +#### M4 Intelligence Layer — V12: 61/100 → V13: **78/100** + +提升原因: Reflection Engine driver 已连接, User Profile 持久化已验证, PersistentMemoryStore 事实已统一。仍有 GAP-01 (TrajectoryRecorder)。 + +#### M2 Agent Clones — V12: 67/100 → V13: **75/100** + +维持提升: CRUD 完整, 身份演化链路正常, onboarding wizard 存在。 + +### 4.3 V12 模块评分更新 + +| 模块 | V12 评分 | V13 评分 | 变化 | 关键变化 | +|------|---------|---------|------|----------| +| M1 智能对话 | 91 | **91** | 0 | 无回归 | +| M2 Agent 分身 | 67 | **75** | +8 | CRUD 验证通过 | +| M3 Hands 系统 | 58 | **72** | +14 | Butler/MCP 接通确认 | +| M4 智能层 | 61 | **78** | +17 | Reflection driver 已连, User Profile 已通 | +| M5 技能生态 | 85 | **85** | 0 | 无回归 | +| M6 Pipeline 工作流 | 72 | **75** | +3 | Pipeline Presentation 部分接通 | +| M7 SaaS 桌面端 | 85 | **83** | -2 | Knowledge Search 未接桌面 (GAP-03) | +| M8 Admin V2 | 82 | **83** | +1 | Knowledge Analytics 全部接通 | +| M9 通信安全 | 86 | **86** | 0 | 无回归 | +| M11 Classroom | 70 | **72** | +2 | 小幅改善 | + +**加权平均**: V12 ~76/100 → V13 **82/100** + +--- + +## 5. 技术债目录 + +### 5.1 dead_code 标记分类 (43 处) + +| 类别 | 数量 | 说明 | +|------|------|------| +| 真正预留 (保留) | ~12 | A2A/WASM feature-gated, driver 反序列化结构体 | +| 应该删除 | ~8 | Webhook 相关, PersistentMemoryStore 遗留 | +| 应该接通 | ~5 | TrajectoryRecorder, HTML/Markdown export | +| 可接受 (类型转换/兼容) | ~18 | driver 响应字段, 中间件辅助 | + +### 5.2 孤儿命令分析 (约 61 个) + +- **已接通 (之前误标)**: ~9 个 (Butler 5 + MCP 4) — 应移除 @reserved 标记 +- **合理的 @reserved**: 24 个 — 为未来功能预留 +- **真正孤儿**: ~28 个 — 含 gateway 细粒度控制、viking CLI、classroom 部分、memory 基础命令 + +### 5.3 孤儿 SaaS 表 + +| 表名 | 状态 | 建议 | +|------|------|------| +| webhook_subscriptions | 代码已删,迁移仍在 | 添加 down migration | +| webhook_deliveries | 代码已删,迁移仍在 | 添加 down migration | + +--- + +## 6. 修复计划 + +### P1 — 必须修复 (影响功能完整性) + +| ID | 问题 | 修复方案 | 影响文件 | 工作量 | +|----|------|----------|----------|--------| +| FIX-01 | TrajectoryRecorder 未注册中间件 | 在 `create_middleware_chain()` 末尾添加注册 (优先级 @650) | `crates/zclaw-kernel/src/kernel/mod.rs` | 0.5h | +| FIX-02 | industryStore 无组件消费 | 在 Settings 或 ButlerPanel 添加行业配置展示 | `desktop/src/components/` + store import | 2h | +| FIX-03 | 桌面端无 Knowledge Search | 新建 knowledgeStore 或扩展 saasStore,添加搜索 UI | `desktop/src/store/` + `desktop/src/components/` | 4h | + +### P2 — 应该修复 (代码清洁度) + +| ID | 问题 | 修复方案 | 影响文件 | 工作量 | +|----|------|----------|----------|--------| +| FIX-04 | Webhook 孤儿迁移 | 添加 down migration 或标注 deprecated | `crates/zclaw-saas/migrations/` | 0.5h | +| FIX-05 | Structured Data Source 无 Admin UI | 在 Admin Knowledge 页面添加管理 | `admin-v2/src/` | 4h | +| FIX-06 | PersistentMemoryStore 遗留 | 迁移嵌入配置到 VikingStorage 后删除 | `desktop/src-tauri/src/memory/` | 3h | + +### P3 — 可选改善 + +| ID | 问题 | 修复方案 | 工作量 | +|----|------|----------|--------| +| FIX-07 | ~28 孤儿 Tauri 命令未标注 | 审计并标注 @reserved 或删除 | 2h | +| FIX-08 | @reserved 标记过时 (Butler/MCP 已接通) | 移除 9 个过时 @reserved | 0.5h | +| FIX-09 | dead_code 清理 (应删除的 ~8 处) | 移除确认无用的 dead code | 1h | + +--- + +## 7. 附录 + +### 7.1 确认已接通的功能 (修正 V12 错误认知) + +| 功能 | 前端调用位置 | 消费组件 | +|------|-------------|----------| +| Butler Pain Aggregator 5 命令 | `desktop/src/lib/viking-client.ts:261-308` | ButlerPanel 3 个组件 + useButlerInsights hook | +| MCP 生命周期 4 命令 | `desktop/src/lib/mcp-client.ts:49-76` | MCPServices.tsx | +| Gateway 控制命令 | `desktop/src/lib/tauri-gateway.ts:77-217` | App.tsx + connectionStore | +| Pipeline analyze_presentation | `desktop/src/components/presentation/PresentationContainer.tsx:55` | PresentationContainer | +| Knowledge Analytics 5 端点 | `admin-v2/src/pages/Knowledge.tsx:534-558` | AnalyticsPanel | +| Reflection Engine driver | `desktop/src-tauri/src/intelligence/reflection.rs:787-792` | 从 kernel_state 获取 | + +### 7.2 搜索模式参考 (未来复审计) + +| 检查项 | Grep 模式 | 路径 | +|--------|----------|------| +| Tauri 命令定义 | `#\[.*tauri::command` | `desktop/src-tauri/src/` | +| 前端 invoke 调用 | `invoke\(` | `desktop/src/` | +| @reserved 标注 | `@reserved` | `desktop/src-tauri/src/` | +| dead_code 标记 | `allow\(dead_code\)` | `crates/` + `desktop/src-tauri/src/` | +| 孤儿 Store | Store 文件名 vs `from.*StoreName` 引用 | `desktop/src/store/` | +| SaaS 路由 | `\.route\(` | `crates/zclaw-saas/src/` | +| 中间件注册 | 中间件 struct 名称 | `crates/zclaw-kernel/src/kernel/mod.rs` | diff --git a/wiki/known-issues.md b/wiki/known-issues.md index ab1ecae..fd92f3b 100644 --- a/wiki/known-issues.md +++ b/wiki/known-issues.md @@ -1,13 +1,13 @@ --- title: 已知问题 -updated: 2026-04-11 +updated: 2026-04-12 status: active tags: [issues, bugs] --- # 已知问题 -> 从 [[index]] 导航。完整清单见 `docs/TRUTH.md §3` +> 从 [[index]] 导航。完整清单见 `docs/TRUTH.md §3` 和 `docs/features/audit-v13/V13-FULL-REPORT.md` ## 当前状态 @@ -17,25 +17,46 @@ tags: [issues, bugs] | P1 (功能失效) | 9 | 全部已修复 | | P1.5 (代码质量) | 7 | 全部已修复 | | P2 (代码质量) | 10 | 待处理 | +| V13 P1 (断链) | 3 | **待修复** | +| V13 P2 (差距) | 3 | 待处理 | -## 代码健康度指标(2026-04-11 扫描) +## V13 新发现 (2026-04-12) -| 指标 | 值 | 说明 | -|------|-----|------| -| TODO/FIXME 前端 | 4 | 非常少 | -| TODO/FIXME Rust | 4 | 非常少 | -| @reserved 标注 | 33 | 无前端调用的命令已标注 | -| 前端孤立 invoke | 0 | 已清理 | +### P1 — 功能断链 + +| ID | 问题 | 位置 | +|----|------|------| +| V13-GAP-01 | TrajectoryRecorderMiddleware 未注册到中间件链 → Hermes 轨迹数据零流入 | `crates/zclaw-kernel/src/kernel/mod.rs` | +| V13-GAP-02 | industryStore 存在但无组件导入 → 行业配置无法在桌面端展示 | `desktop/src/store/industryStore.ts` | +| V13-GAP-03 | 桌面端未接入 Knowledge Search API → 用户无法搜索知识库 | `desktop/src/` (零匹配) | + +### P2 — 代码清洁度 + +| ID | 问题 | 位置 | +|----|------|------| +| V13-GAP-04 | Webhook 孤儿表 (迁移存在但代码已删) | `crates/zclaw-saas/migrations/20260403000002_webhooks.sql` | +| V13-GAP-05 | Structured Data Source 5 路由无 Admin-v2 消费者 | `crates/zclaw-saas/src/knowledge/` | +| V13-GAP-06 | PersistentMemoryStore 遗留模块 (数据流已统一但类型未清理) | `desktop/src-tauri/src/memory/persistent.rs` | + +## 代码健康度指标(2026-04-12 V13 扫描) + +| 指标 | 值 | 变化 | 说明 | +|------|-----|------|------| +| TODO/FIXME 前端 | 1 | 4→1 | 大幅减少 | +| TODO/FIXME Rust | 3 | 4→3 | | +| @reserved 标注 | 24 | 33→24 | Butler/MCP 已接通 | +| dead_code 标记 | 43 | 76→43 | 大幅减少 | +| 前端孤立 invoke | 0 | 不变 | 已清理 | ## 长期观察项 | 问题 | 说明 | 位置 | |------|------|------| -| Tauri 命令孤儿 | 注册 183 命令,前端调用 105 处,@reserved 33 个,剩余可能为内部调用 | `desktop/src-tauri/src/lib.rs` | -| Embedding 未激活 | EmbeddingClient trait 已写但 NoOp | `zclaw-growth/src/retrieval/semantic.rs` | +| Tauri 命令孤儿 | 注册 191 命令,前端调用 106 处,@reserved 24 个,剩余 ~61 可能内部调用 | `desktop/src-tauri/src/lib.rs` | +| Embedding 未激活 | NoOpEmbeddingClient 为默认值,用户配置后替换为真实 provider | `zclaw-growth/src/retrieval/semantic.rs` | | SaaS embedding deferred | pgvector 索引就绪,生成未实现 | `zclaw-saas/src/workers/generate_embedding.rs` | | SkillIndex 条件注册 | 无技能时 skill_index 中间件不注册 | `kernel/mod.rs:289` | -| Hermes Schema | v4 新增 user_profiles + trajectory 表 | `zclaw-saas/migrations/` | +| Hermes Schema | v4 新增 user_profiles + trajectory 表,但 TrajectoryRecorder 未注册 (V13-GAP-01) | `zclaw-saas/migrations/` | ## 已修复的关键问题(历史记录) diff --git a/wiki/log.md b/wiki/log.md index 4cf32fc..83cfa11 100644 --- a/wiki/log.md +++ b/wiki/log.md @@ -1,6 +1,6 @@ --- title: 变更日志 -updated: 2026-04-11 +updated: 2026-04-12 status: active tags: [log, history] --- @@ -9,6 +9,15 @@ tags: [log, history] > Append-only 操作记录。格式: `## [日期] 类型 | 描述` +## [2026-04-12] audit | V13 系统性功能审计 — 6 项新发现 + +- 全系统功能一致性审计完成, 总体健康度 82/100 (V12: 76) +- P1 新发现 3 项: TrajectoryRecorder 未注册中间件链, industryStore 无组件导入, 桌面端无 Knowledge Search +- P2 新发现 3 项: Webhook 孤儿表, Structured Data Source 无 Admin UI, PersistentMemoryStore 遗留 +- 修正 V12 错误认知 5 项: Butler/MCP/Gateway/Presentation 已接通, Reflection driver 已修复 +- TRUTH.md 数字校准: Tauri 184→191, SaaS 122→136, @reserved 33→24, dead_code 76→43 +- 完整报告: `docs/features/audit-v13/V13-FULL-REPORT.md` + ## [2026-04-12] fix | 三轮审计修复 — 3 HIGH + 4 MEDIUM 清零 - H1: status disabled→inactive 统一 + source 补 admin 映射