Files
zclaw_openfang/docs/TRUTH.md
iven 47250a3b70
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: Heartbeat 统一健康系统文档同步 — TRUTH + wiki + CLAUDE.md §13
- TRUTH.md: Tauri 182→183, React 104→105, lib 85→76
- wiki/index.md: 同步关键数字
- wiki/log.md: 追加 2026-04-15 Heartbeat 变更记录
- CLAUDE.md §13: 更新架构快照 + 最近变更
2026-04-15 23:22:43 +08:00

207 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ZCLAW 系统真相文档
> **更新日期**: 2026-04-15
> **数据来源**: V11 全面审计 + 二次审计 + V12 模块化端到端审计 + 代码全量扫描验证 + 功能测试 Phase 1-5 + 发布前功能测试 Phase 3 + 发布前全面测试代码级审计 + 2026-04-11 代码验证 + V13 系统性功能审计 2026-04-12 + V13 审计修复 2026-04-13 + 发布前冲刺 Day1 2026-04-15
> **规则**: 此文档是唯一真相源。所有其他文档如果与此冲突,以此为准。
---
## 1. 量化指标(已验证)
| 指标 | 实际值 | 验证方式 |
|------|--------|----------|
| Rust Crates | 10 个 (编译通过) | `cargo check --workspace` |
| 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 验证) |
| Cargo Warnings (非 SaaS) | **0 个** (仅 sqlx-postgres 外部依赖 1 个) | `cargo check --workspace --exclude zclaw-saas` (2026-04-15 清零) |
| Rust 测试运行通过 | 684 workspace + 138 SaaS = 822 | Hermes 4 Chunk `cargo test --workspace` 2026-04-09 |
| Tauri 命令 | 183 个 (2026-04-15 Heartbeat 统一健康系统新增 health_snapshot) | `grep '#\[.*tauri::command'` |
| **Tauri 命令有前端调用** | **95 处** | `grep invoke( desktop/src/` (2026-04-15 验证) |
| **Tauri 命令已标注 @reserved** | **89 个** | Rust 源码 @reserved 标注 (2026-04-15 全量标注) |
| **Tauri 命令孤儿 (无调用+无标注)** | **0 个** | 182 - 95 invoke处 - 89 @reserved = 0 (2026-04-15 清零) |
| 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 端点 | 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/industryscheduled_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 | 21 个 | find desktop/src/store/ -name "*.ts" (2026-04-12 V13 验证) |
| React 组件 | 105 个 (.tsx/.ts) | find desktop/src/components/ (2026-04-15 新增 HealthPanel.tsx) |
| 前端 TypeScript 测试 | 31 个文件 (6 store + 5 lib + 1 config + 1 stabilization + 18 E2E spec) | Phase 3-4 全量 |
| 前端 lib | 76 个 .ts | find desktop/src/lib/ (2026-04-15 删除 intelligence-client/ 9 文件) |
| 前端测试运行通过 | 344 passed + 1 skipped | `pnpm vitest run` (2026-04-15 验证) |
| 生产构建 | **通过** (14.8s, 0 require 残留) | `pnpm build` (2026-04-15 验证) |
| Admin V2 页面 | 15 个 | admin-v2/src/pages/ 全量统计(含 ScheduledTasks、ConfigSync |
| 桌面端设置页面 | 19 个 | SettingsLayout.tsx tabs: 通用/用量统计/积分详情/模型与API/MCP服务/技能/IM频道/工作区/数据与隐私/安全存储/SaaS平台/订阅与计费/语义记忆/安全状态/审计日志/定时任务/心跳配置/提交反馈/关于 |
| Admin V2 测试 | 17 个文件 (61 tests) | vitest 统计 |
| 中间件层 | 15 层 | 运行时注册(含 DataMasking@90, ButlerRouter@500, TrajectoryRecorder@650 — V13注册 |
---
## 2. 端到端可用功能
以下功能经过代码验证,从前端到后端完整连通:
### 2.1 确认可用
| 功能 | 路径 | 验证状态 |
|------|------|----------|
| 智能对话 | UI → chatStore → Tauri → Kernel → LLM Driver → 流式返回 | ✅ 代码完整 |
| Agent 分身管理 | UI → agentStore → Tauri → Kernel | ✅ 代码完整 |
| 模型切换 | UI → Settings → config.toml → Kernel | ✅ 代码完整 |
| Hand 触发 | UI → handStore → Tauri → Kernel → Hand 执行 | ✅ 代码完整 |
| Hand 审批 | UI → approvalStore → Tauri → Kernel | ✅ 代码完整 |
| 记忆搜索 | UI → memoryStore → Tauri → Growth → FTS5 | ✅ 代码完整 |
| 配置读写 | UI → Settings → config.toml | ✅ 代码完整 |
| SaaS 登录/注册 | UI → saasStore → SaaS API → PostgreSQL | ✅ 代码完整 |
| SaaS 配置同步 | UI → saasStore → SaaS API → Store 更新 | ✅ 代码完整 |
| Admin V2 管理 | admin-v2 → SaaS API → PostgreSQL | ✅ 代码完整 |
| 支付集成 | Admin → SaaS → Alipay/WeChat API | ✅ 代码完整 |
### 2.2 有已知缺陷
> **2026-04-03 更新**: 以下 P0/P1 缺陷已全部修复(详见 §3.1/3.2),本节保留仅作历史记录。
| 功能 | 原问题 | 修复状态 |
|------|--------|----------|
| Skill 执行 | 前端传空 context → Rust 反序列化失败 | ✅ 已修复 (SEC2-P0-01) |
| Hand 异步结果 | Rust emit 事件但前端无 listen() | ✅ 已修复 (SEC2-P1-03) |
| Agent 模板 | API 路径缺 /api/v1 前缀 → 404 | ✅ 已修复 (SEC2-P1-02) |
| Trigger 更新 | 参数格式不匹配 → 静默失败 | ✅ 已修复 (V11-P1-01) |
### 2.3 已实现但未接通前端
| 功能 | Rust 状态 | 前端状态 |
|------|-----------|----------|
| Pipeline 执行 | DSL 引擎完整 | **已接通前端** (8 个 invoke 调用匹配 8 个 Rust 命令,已确认可用) |
| Viking 适配 | FTS5 + TF-IDF | 5 个孤立 invoke 已清理,新增 addWithMetadata/storeWithSummaries 方法 + UI |
| Classroom | 27 个命令 | 7 个命令无前端调用classroom_list/generation_progress 等已标注 @reserved |
| Browser Hand | 22 个命令 | 部分无前端调用 |
| Multi-agent Director | 912 行 (feature-gated) | 未启用 |
### 2.4 前端孤立 invoke 调用(已清理)
Viking 5 个孤立 invoke 调用已于 2026-04-03 清理移除:
- `viking_add_inline`, `viking_server_start`, `viking_server_status`, `viking_server_stop`, `viking_server_restart`
当前无已知前端孤立 invoke 调用。
---
## 3. 已知缺陷清单
### 3.1 P0 — 必然崩溃
| ID | 问题 | 状态 |
|----|------|------|
| SEC2-P0-01 | skill_execute 反序列化崩溃 | **已修复** — kernel-skills.ts 注入真实 agentId/sessionIdworkingDir 改为 null |
| SEC2-P0-02 | TaskTool::default() panic | **已修复** — 移除 impl Default |
### 3.2 P1 — 功能失效
| ID | 问题 | 状态 |
|----|------|------|
| SEC2-P1-01 | FactStore trait 零实现 | **已修复** — 移除死 trait保留值类型 |
| SEC2-P1-02 | agent-templates 路径错误 | **已修复** — saas-client.ts 已添加 /api/v1 |
| SEC2-P1-03 | hand-execution-complete 无监听 | **已修复** — ChatArea 添加 Tauri 事件监听 + streamStore.cancelStream 补全 |
| SEC2-P1-04 | InMemoryStorage RwLock unwrap 级联 | **已修复** — 7 处改为 .expect() |
| SEC2-P1-05~07 | HandRun 持久化静默忽略 (3处) | **已修复** — tracing::warn! |
| SEC2-P1-08 | FTS 索引更新静默失败 | **已修复** — tracing::warn! |
| SEC2-P1-09 | Worker dispatch 静默失败 | **已修复** — tracing::warn! |
### 3.3 P1.5 — 代码质量补充修复
| ID | 问题 | 状态 |
|----|------|------|
| SEC2-P1.5-01 | Capability _ => false 通配符 | **已修复** — 3 个方法改为穷举匹配grants() 保留通配符+注释说明 |
| SEC2-P1.5-02 | billing let _ = ... ? 冗余模式 | **已修复** — 移除冗余 let _ = |
| SEC2-P1.5-03 | relay SSE 错误路径 send 失败未记录 | **已修复** — 改为 if let Err + tracing::debug! |
| SEC2-P1.5-04 | WASM runner 缺少状态注解 | **已修复** — 添加 active module 说明 |
| SEC2-P1.5-05 | Tauri 命令无连接状态标注 | **已修复** — 177 个命令完整审计160 @connected / 16 @reserved / 1 未注册 identity_init |
| SEC2-P1.5-06 | extract_token_usage 静默丢弃解析错误 | **已修复** — 添加 tracing::debug! |
| SEC2-P1.5-07 | relay current_key_id 防御性 unwrap | **已修复** — 改为 ok_or_else 返回内部错误 |
### 3.3 P2 — 代码质量
| ID | 问题 |
|----|------|
| SEC2-P2-01~10 | 10 项代码质量问题(详见二次审计) |
---
## 4. 死代码清单
| 文件/目录 | 行数 | 状态 | 建议 |
|-----------|------|------|------|
| `desktop/src/lib/audit-logger.ts` | 170 | **已删除** | - |
| `desktop/src/lib/saas-admin.ts` | 234 | 已在之前清理中删除 | - |
| `desktop/src/lib/gateway-reconnect.ts` | ~100 | **已删除** (零生产引用) | - |
| `admin/` | 整目录 | **已删除** (空目录壳) | - |
| `admin-temp-dir/` | 整目录 | **已删除** | - |
| `crates/zclaw-channels/` | Cargo.toml only | 已在之前清理中删除 | - |
| `docs/analysis/ISSUE-TRACKER.md` | - | **已删除** | - |
| Director multi-agent | 912 | feature-gated off + 已注解 | 保留 |
| A2A 协议 | ~400 | feature-gated off + 已注解 | 保留 |
| WASM runner | ~200 | **Active module** + 已注解 | 保留 |
| `crates/zclaw-saas/src/webhook/` | ~400 | **死代码**: 未在 lib.rs pub mod 注册,未在 main.rs merge(),无前端调用 | 删除 |
| `crates/zclaw-saas/src/workers/webhook_delivery.rs` | ~160 | **死代码**: 未在 workers/mod.rs pub mod 注册 | 删除 |
| `admin-v2/src/components/StatusTag.tsx` | ~20 | **孤立组件**: 从未被导入 | 删除 |
---
## 4.5 近期前端改进 (2026-04-03)
| 改进 | 说明 |
|------|------|
| Pipeline 前端接通 | 8 个前端 invoke 调用匹配 8 个 Rust 命令,完整可用 |
| Viking 孤立调用清理 | 5 个无后端实现的 invoke 已移除 |
| Viking 新方法 | `addWithMetadata`, `storeWithSummaries` 新增,含 UI |
| api-fallbacks 标记 | `_isFallback` markers + `console.warn` logging |
| MessageSearch 恢复 | ChatArea 头部搜索按钮,功能完整 |
| scheduled_task Admin V2 | 后端 5 CRUD 端点完成Admin V2 前端 service + page + route + nav 已添加 |
---
## 5. 文档漂移记录
以下文档中的数字已与实际不符需要校准2026-04-03 已全部修正):
| 文档 | 过时内容 | 正确值 | 状态 |
|------|----------|--------|------|
| CLAUDE.md (旧版) | "React 18" | React 19 | ✅ 已修正 |
| CLAUDE.md (旧版) | "Tailwind CSS" | Tailwind 4 | ✅ 已修正 |
| CLAUDE.md (旧版) | "Next.js (admin/)" | Vite + Ant Design Pro (admin-v2/) | ✅ 已修正 |
| features/README.md | SaaS API: 58 | 131 | ✅ 已修正 |
| features/README.md | Tauri 命令: 175 | 171 | ✅ 已修正 |
| features/README.md | SaaS Workers: 5 | 7 | ✅ 已修正 |
| features/README.md | SKILL: 76 | 75 | ✅ 已修正 |
| docs/README.md | Crates: 8 | 10 | ✅ 已修正 |
---
## 6. 更新日志
| 日期 | 更新内容 |
|------|----------|
| 2026-04-02 | 初始创建,基于 V11 全面审计 + 二次审计数据 |
| 2026-04-02 | P0 全部修复 (SEC2-P0-01/02)P1 全部修复 (SEC2-P1-01~09) |
| 2026-04-02 | P1.5 代码质量修复capability 穷举匹配、SaaS 静默错误、WASM 注解、Tauri 命令标注 |
| 2026-04-02 | 深度审计后修正8 个 Tauri 标注误标、4 处 SaaS let _ = 清理、TRUTH.md 路由数 58→93 |
| 2026-04-02 | 二次深度审计:(1) 再修正 11 个 Tauri 标注 (147 connected / 24 reserved = 171) (2) 修正文档数字 SKILL 75/Stores 18/Admin 13 (3) relay extract_token_usage + current_key_id 防御性修复 (4) 记录 5 个前端孤立 invoke 调用 |
| 2026-04-02 | 构建验证通过cargo check ✅ + tsc --noEmit ✅ |
| 2026-04-03 | 数字全面验证校准SaaS API 93→131 (新增 knowledge 23 + billing 10 + role 11 等模块增长)、Rust 测试 584→383、React 组件 ~50→~135、前端测试 21→23、SaaS Workers 5→7 (新增 aggregate_usage/generate_embedding)、SaaS 路由模块 10→12、数据表 25→34 |
| 2026-04-03 | 前端改进记录:(1) Pipeline 8 invoke 接通前端 (2) Viking 5 孤立 invoke 清理 + 2 新方法+UI (3) api-fallbacks _isFallback 标记 + console.warn 日志 (4) MessageSearch 恢复到 ChatArea (5) scheduled_task Admin V2 完整接入 (service+page+route+nav) |
| 2026-04-04 | V12 模块化审计后更新:(1) Pipeline 模板 10→17 YAML (2) Hands 禁用说明细化(无 TOML/Rust 实现) (3) SEC2-P1-01 FactStore 标记 FALSE_POSITIVE (4) V11-P1-03 SQL 表标记 FALSE_POSITIVE (5) M11-02 map_err 已修复 (6) M4-04 深层 WONTFIX |
| 2026-04-05 | Admin V2 页面数 14→15新增 ConfigSync 页面);桌面端设置页面确认为 19 个 |
| 2026-04-06 | 全面一致性审查:(1) Tauri 命令 177→183 (grep 重新验证) (2) SaaS API 131→130 (webhook 5 路由已定义但未挂载) (3) 删除 webhook 死代码模块 + webhook_delivery worker (4) admin-v2 权限模型修复 (6+ permission key 补全) (5) Logs.tsx 代码重复消除 (6) 清理未使用 service 方法 (agent-templates/billing/roles) |
| 2026-04-07 | 管家能力激活:(1) Tauri 命令 183→189 (+6: 5 butler + 1 butler_delegate_task) (2) multi-agent feature 默认启用 (3) Director butler_delegate + ExpertTask (4) ButlerPanel UI 3 区 (洞察/方案/记忆) (5) 人格检测器 personality_detector.rs (6) DataMaskingMiddleware@90 |
| 2026-04-07 | 功能测试 Phase 1-5 全部完成:(1) Phase 1 SaaS 68 tests (2) Phase 2 Admin V2 61 tests (3) Phase 3 Store 单元 112 tests (4) Phase 4 E2E 场景 47 tests (5) Phase 5 全量回归 1048 tests 全通过 (580 Rust + 138 SaaS + 330 Desktop)。修复 4 个生产 bugusage/telemetry SQL timestamptz 类型转换缺失、config seed 断言、key_value 长度校验 |
| 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 |
| 2026-04-15 | Heartbeat 统一健康系统:(1) Tauri 命令 182→183 (+health_snapshot) (2) intelligence 模块 15→16 文件 (+health_snapshot.rs +heartbeat.rs 重构) (3) React 组件 104→105 (+HealthPanel.tsx) (4) 前端 lib 85→76 (删除 intelligence-client/ 9 文件) |