docs: V13 系统性功能审计 — 6 项新发现 + TRUTH.md 数字校准
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
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
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
This commit is contained in:
@@ -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 |
|
||||
|
||||
@@ -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 已接通,非孤儿命令 |
|
||||
|
||||
304
docs/features/audit-v13/V13-FULL-REPORT.md
Normal file
304
docs/features/audit-v13/V13-FULL-REPORT.md
Normal file
@@ -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` |
|
||||
@@ -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/` |
|
||||
|
||||
## 已修复的关键问题(历史记录)
|
||||
|
||||
|
||||
11
wiki/log.md
11
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 映射
|
||||
|
||||
Reference in New Issue
Block a user