Files
zclaw_openfang/docs/features/COMPREHENSIVE_AUDIT_V6.md
iven 5fdf96c3f5 chore: 提交所有工作进度 — SaaS 后端增强、Admin UI、桌面端集成
包含大量 SaaS 平台改进、Admin 管理后台更新、桌面端集成完善、
文档同步、测试文件重构等内容。为 QA 测试准备干净工作树。
2026-03-29 10:46:41 +08:00

365 lines
20 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 SaaS + Tauri 系统性功能审计报告 v6
> **ARCHIVED — 此报告已过时**
>
> 本报告是 2026-03-27 审计迭代的 v6 版本。最终结论已合并到 DEEP_AUDIT_REPORT.md。
>
> **请参考最新文档** → [README.md](./README.md)
> **审计日期**: 2026-03-27 (原文标注 2026)
> **审计范围**: Main 分支 Tauri 端 + SaaS worktree`.claude/worktrees/saas-backend/`
> **审计方法**: 3 并行 Agent覆盖功能对齐、SaaS 差距、Trait 实现、差距模式、Dead Code、E2E 数据流
> **前次审计**: v5累计修复 27 项,整体完成度 ~78%
---
## 一、执行摘要
| 指标 | 数值 |
|------|------|
| **Tauri 注册命令** | 137 |
| **文档功能数** | 17 |
| **功能-代码对齐率** | 100%17/17 有对应命令+UI |
| **SaaS 能力覆盖** | 5/5100%)— auth + relay + config + devices + usage设计定位系统管理 |
| **Trait 总数** | 26 |
| **零实现 Trait** | 623% |
| **Dead Code** | ~4,228 行5 个孤立模块) |
| **`#[allow(dead_code)]`** | 28 处 |
| **TODO/FIXME** | 6 处(无 FIXME/HACK/XXX |
| **五种差距模式总计** | 17 个问题 |
| **E2E 流程验证** | 5 条流程2 条有 CRITICAL GAP |
### 与 v5 审计对比
| 维度 | v5 | v6本次 | 变化 |
|------|-----|-----|------|
| 整体完成度 | ~78% | ~78%Tauri100%SaaS 管理职责) | SaaS 定位修正 |
| 功能对齐 | 未量化 | 100% | 新增量化 |
| Trait 覆盖 | 未审计 | 77%20/26 有实现) | 新增审计 |
| Dead Code | 已部分清理 | ~4,228 行孤立 | 新增精确统计 |
| E2E 验证 | 未执行 | 5 条流程追踪 | 新增验证 |
---
## 二、功能-代码对齐矩阵
### 2.1 功能清单17 个文档功能)
| # | 功能 | 文档成熟度 | Tauri 命令数 | 前端 invoke | UI 集成 | 差距 |
|---|------|-----------|-------------|------------|---------|------|
| 1 | 通信层 | L4 | 9 | kernel-client.ts | KernelClient + GatewayClient | 无 |
| 2 | 状态管理 | L4 | N/AStore | N/A | 18+ Zustand stores | 无 |
| 3 | 安全认证 | L4 | 4 | secure-storage.ts | Ed25519 + OS Keyring | 无 |
| 4 | 聊天界面 | L4 | 2 | kernel-client.ts | ChatArea, MessageItem | 无 |
| 5 | Agent 分身 | L4 | 4 | kernel-client.ts | AgentSelector | 无 |
| 6 | Hands 系统 | L4 | 7 | kernel-client.ts | HandList, HandTaskPanel | 2/11 未实现 |
| 7 | Agent 记忆 | L4 | 13 | intelligence-backend.ts | MemoryPanel, MemoryGraph | 无 |
| 8 | 身份演化 | L4 | 14 | intelligence-backend.ts | AgentOnboardingWizard | 无 |
| 9 | 自我反思 | L4 | 6 | intelligence-backend.ts | ReflectionLog.tsx | 文档有 L2 矛盾标注 |
| 10 | 心跳巡检 | L4 | 10 | intelligence-backend.ts | IntelligenceStore | 无 |
| 11 | 自主授权 | L4 | 0TS only | N/A | AutonomyConfig.tsx | 无 Rust 后端 |
| 12 | 上下文压缩 | L3 | 4 | intelligence-backend.ts | AgentLoop 集成 | LLM 摘要未实现 |
| 13 | OpenViking | L4 | 13 | App.tsx | viking-client.ts | 无 |
| 14 | 技能系统 | L4 | 3 | kernel-client.ts | SkillMarket | PythonSkill 未实例化 |
| 15 | Hands 详情 | L4 | 7+23 | browser-client.ts | HandList + BrowserPanel | 无 |
| 16 | Tauri 后端 | L4 | 137 | 6 个 client 文件 | 全集成 | 无 |
| 17 | Pipeline DSL | L4 (90%) | 10 | pipeline-client.ts | PipelinesPanel | skill/hand stage 失败 |
**结论**: Tauri 端功能-代码对齐率 100%。所有 17 个文档功能都有对应的 Tauri 命令注册和前端调用。
---
## 三、SaaS-Tauri 功能差距矩阵
> **设计定位v6.1 更新)**: SaaS 后端**不是 Tauri 功能的云端复制品**。SaaS 仅负责系统管理工作账号管理、功能权限控制、大模型中转Relay。Agent 管理、技能执行、Hand 执行、Pipeline、记忆系统、智能层、浏览器自动化等核心 AI 能力**始终在 Tauri 桌面端本地运行**,不会迁移到 SaaS 端。因此原报告中标记为 "CRITICAL" 的 9 个差距项已重新分类。
### 3.1 能力域对照
| # | 能力域 | Tauri 端 | SaaS 端 | 差距状态 | 说明 |
|---|--------|---------|---------|---------|------|
| 1 | 用户认证 | 本地 IPCEd25519 设备密钥 | JWT + Argon2 + TOTP 2FARBAC | **对等**(模型不同) | 各自负责各自场景 |
| 2 | LLM 调用 | 8 个直接 LlmDriver | OpenAI 兼容 Relay 代理 | **部分**(仅 relay | SaaS 做 relay 中转 |
| 3 | Agent 管理 | 9 个 kernel 命令SQLite | **不需要** | **N/A** | 本地能力,不迁移到 SaaS |
| 4 | 技能执行 | skill_list/refresh/execute69 SKILL.md | **不需要** | **N/A** | 本地能力,不迁移到 SaaS |
| 5 | Hand 执行 | 7 命令 + 审批流程 | **不需要** | **N/A** | 本地能力,不迁移到 SaaS |
| 6 | Pipeline | 10 命令8 action 类型 | **不需要** | **N/A** | 本地能力,不迁移到 SaaS |
| 7 | 记忆系统 | 13 命令SQLite + FTS5 | **不需要** | **N/A** | 本地能力,不迁移到 SaaS |
| 8 | 智能层 | 43 命令(心跳/反思/身份/压缩) | **不需要** | **N/A** | 本地能力,不迁移到 SaaS |
| 9 | 浏览器自动化 | 23 个 browser_* 命令 | **不需要** | **N/A** | 本地能力,不迁移到 SaaS |
| 10 | OpenViking | 13 个 viking_* 命令 | **不需要** | **N/A** | 本地能力,不迁移到 SaaS |
| 11 | 配置同步 | 无专用机制 | config diff/sync API | **SaaS 独有** | SaaS 管理职责 |
| 12 | 设备管理 | 无 | devices 表 + 心跳 | **SaaS 独有** | SaaS 管理职责 |
| 13 | 用量追踪 | 无 | usage_records + stats | **SaaS 独有** | SaaS 管理职责 |
| 14 | 审计日志 | 无 | operation_logs | **SaaS 独有** | SaaS 管理职责 |
### 3.2 SaaS 后端现状
**框架**: Axum (Rust HTTP) + SQLite (sqlx) + JWT + Argon2
**API 模块** (40+ 端点):
- `auth/` — 注册/登录/JWT 刷新/TOTP 2FA
- `account/` — 用户 CRUD、API Token、操作日志、仪表盘
- `model_config/` — Provider/Model CRUD、用户 API Key、用量统计
- `relay/` — OpenAI 兼容 chat relay流式+非流式)
- `migration/` — 配置 diff/sync
**数据库**: 13 张表,含 accounts, providers, models, relay_tasks, devices, config_items, usage_records
**SaaS 前端**: `saas-client.ts`563 行)+ `saasStore.ts`467 行),无专属 UI 组件
**Main 分支**: 零 SaaS 代码合并
### 3.3 合并风险评估
| 风险 | 等级 | 说明 |
|------|------|------|
| SaaS 功能缺失 | **LOW** | SaaS 定位为管理系统(账号/权限/relay不需要复制 Tauri 端 AI 能力 |
| 架构耦合 | **MEDIUM** | Tauri 端 137 个命令全部依赖 `invoke()` + `State<'_>` + `AppHandle`,无法直接迁移到 HTTP API |
| 双通信路径 | **MEDIUM** | KernelClientTauri IPC和 GatewayClientWebSocket并存SaaS 需要第三条路径 |
| 类型一致性 | **LOW** | 共享 zclaw-types crate类型定义一致 |
### 3.4 SaaS 待完善项(按设计定位)
| # | 功能 | 优先级 | 说明 |
|---|------|--------|------|
| 1 | Relay 多模型支持 | P1 | 当前仅支持 OpenAI 兼容格式,需扩展其他 provider |
| 2 | 用户权限细化 | P1 | RBAC 基础已有,需细粒度功能权限控制 |
| 3 | Admin UI | P1 | SaaS 管理后台(已有设计规格) |
| 4 | 用量计费 | P2 | usage_records 已有表结构,需计费逻辑 |
| 5 | 多设备同步 | P2 | devices 表已有,需实现配置/Token 同步 |
---
## 四、Trait 实现矩阵
### 4.1 完整 26 Trait 清单
| # | Trait | Crate | 生产实现数 | 测试实现 | 零实现? | 严重性 |
|---|-------|-------|-----------|---------|---------|--------|
| 1 | `LlmDriver` | zclaw-runtime | 4 | 0 | -- | -- |
| 2 | `Tool` | zclaw-runtime | 5 | 0 | -- | -- |
| 3 | `SkillExecutor` | zclaw-runtime | 1 | 0 | -- | -- |
| 4 | `LlmCompleter` | zclaw-skills | 1 | 0 | -- | -- |
| 5 | `Skill` | zclaw-skills | 3 | 0 | -- | -- |
| 6 | `SkillGraphExecutor` | zclaw-skills | 1 | 0 | -- | -- |
| 7 | `OrchestrationPlanner` | zclaw-skills | 1 | 0 | -- | -- |
| 8 | `Hand` | zclaw-hands | 9 | 0 | -- | -- |
| 9 | `QuizGenerator` | zclaw-hands | 2 | 0 | -- | -- |
| 10 | **`Trigger`** | zclaw-hands | **0** | **0** | **YES** | **CRITICAL** |
| 11 | `VikingStorage` | zclaw-growth | 2 | 0 | -- | -- |
| 12 | `EmbeddingClient` | zclaw-growth | 2 | 0 | -- | -- |
| 13 | **`LlmDriverForExtraction`** | zclaw-growth | **0** | **1** | **YES** | **HIGH** |
| 14 | `SummaryLlmDriver` | zclaw-growth | 1 | 2 | -- | -- |
| 15 | `McpClient` | zclaw-protocols | 2 | 0 | -- | -- |
| 16 | `A2aClient` | zclaw-protocols | 1 | 0 | -- | -- |
| 17 | `Exporter` | zclaw-kernel | 4 | 0 | -- | -- |
| 18 | `Channel` | zclaw-channels | 1 | 0 | -- | -- |
| 19 | `LlmActionDriver` | zclaw-pipeline | 1 | 0 | -- | -- |
| 20 | **`SkillActionDriver`** | zclaw-pipeline | **0** | **0** | **YES** | **CRITICAL** |
| 21 | **`HandActionDriver`** | zclaw-pipeline | **0** | **0** | **YES** | **CRITICAL** |
| 22 | `OrchestrationActionDriver` | zclaw-pipeline | 1 | 0 | -- | -- |
| 23 | `LlmIntentDriver` | zclaw-pipeline | 1 | 0 | -- | -- |
| 24 | **`StageLlmDriver`** | zclaw-pipeline | **0** | **0** | **YES** | **CRITICAL** |
| 25 | **`StageSkillDriver`** | zclaw-pipeline | **0** | **0** | **YES** | **CRITICAL** |
| 26 | **`StageHandDriver`** | zclaw-pipeline | **0** | **0** | **YES** | **CRITICAL** |
**统计**: 26 trait 中 6 个零实现23%1 个仅测试实现4%19 个有生产实现73%
### 4.2 ActionRegistry 接线状态
| Driver 槽位 | Builder 方法 | 是否接线 | 影响 |
|------------|-------------|---------|------|
| `llm_driver` | `.with_llm_driver()` | **已接线** | LLM stage 正常工作 |
| `skill_registry` | `.with_skill_registry()` | **未接线** | skill stage 必然失败 |
| `hand_registry` | `.with_hand_registry()` | **未接线** | hand stage 必然失败 |
| `orchestration_driver` | `.with_orchestration_driver()` | **未接线**(有实现) | orchestration stage 无法使用 |
**位置**: `desktop/src-tauri/src/pipeline_commands.rs:701-711`
---
## 五、五种差距模式
### 5.1 量化总表
| # | 差距模式 | 数量 | 严重性 | 关键实例 |
|---|---------|------|--------|---------|
| 1 | 写了没接 | 8 | **HIGH** | Director(907行), Export(2,319行), A2A(690行), MCP Client, Channels, GrowthIntegration |
| 2 | 接了没传 | 4 | MEDIUM | kernel_status 返回桩数据, viking_tree 忽略 depth 参数 |
| 3 | 传了没存 | 0 | -- | 智能层持久化完整 |
| 4 | 存了没用 | 2 | MEDIUM | GrowthIntegration 死代码路径, Export 系统不可达 |
| 5 | 双系统不同步 | 3 | **HIGH** | intelligence_hooks vs GrowthIntegration, SkillExecutor vs StageSkillDriver |
| | **总计** | **17** | | |
### 5.2 Pattern 1: "写了没接" 详情
| 模块 | 位置 | 行数 | Tauri 可达? | 说明 |
|------|------|------|------------|------|
| Director | `crates/zclaw-kernel/src/director.rs` | 907 | **否** | 多 Agent 编排,完全孤立 |
| Export 系统 | `crates/zclaw-kernel/src/export/*.rs` | 2,319 | **否** | 4 个 Exporter 实现,无 Tauri 命令 |
| A2A 协议 | `crates/zclaw-protocols/src/a2a.rs` | 690 | **否** | feature-gated 但从未激活 |
| MCP Client | `crates/zclaw-protocols/src/mcp.rs` | 588 | **否** | 2 个实现0 个 Tauri 消费者 |
| zclaw-channels | `crates/zclaw-channels/src/` | 290 | **否** | ConsoleChannel 无消费者 |
| GrowthIntegration | `crates/zclaw-runtime/src/growth.rs` | 315 | **部分** | 定义完整,被 intelligence_hooks 绕过 |
| 定时任务调度器 | `desktop/src-tauri/src/kernel_commands.rs` | -- | **半接线** | 命令注册但无调度循环 |
### 5.3 Pattern 5: "双系统不同步" 详情
| 实例 | 路径 A | 路径 B | 影响 |
|------|--------|--------|------|
| 记忆增强 | `intelligence_hooks::build_memory_context()`(活跃) | `GrowthIntegration::enhance_prompt()`(死代码) | 功能重叠但不一致GrowthIntegration 永远不会执行 |
| 技能执行 | `Kernel::execute_skill()``SkillRegistry`(活跃) | `StageSkillDriver`(零实现) | Pipeline 中 skill stage 必然失败 |
| Hand 执行 | `Kernel::hand_execute()` + 审批(活跃) | `StageHandDriver`(零实现) | Pipeline 中 hand stage 必然失败 |
---
## 六、Dead Code 清单
### 6.1 `#[allow(dead_code)]` 统计28 处)
| 分类 | 数量 | 说明 |
|------|------|------|
| 合理serde 反序列化) | 8 | driver 响应体字段 |
| 桩代码Reserved for future | 14 | intelligence 层预留方法 |
| 可疑 | 6 | intent.rs, stage.rs, browser session 等 |
### 6.2 孤立模块(~4,228 行)
| 模块 | 位置 | 行数 | 建议 |
|------|------|------|------|
| `director` | `crates/zclaw-kernel/src/director.rs` | 907 | 移除或 feature-gate |
| `a2a` | `crates/zclaw-protocols/src/a2a.rs` | 690 | 已 feature-gate保持现状 |
| `export` | `crates/zclaw-kernel/src/export/` | 2,319 | 移除或接入 Tauri 命令 |
| `zclaw-channels` | `crates/zclaw-channels/src/` | 290 | 移除 crate |
| `retrieval/cache.rs` | `crates/zclaw-growth/src/retrieval/cache.rs` | 22+ | 移除 |
### 6.3 TODO 注释6 处)
| 位置 | 内容 | 风险 |
|------|------|------|
| `registry.rs:56` | `// TODO: Track this` | LOW |
| `orchestration.rs:41` | `// TODO: implement graph storage` | LOW |
| `html.rs:17` | `// TODO: Implement template-based HTML export` | LOW孤立模块内 |
| `pipeline_commands.rs:442` | `// TODO: use actual time` | LOW |
| `pipeline_commands.rs:782` | `// TODO: add pattern support` | LOW |
---
## 七、E2E 数据流验证
### 7.1 流程总览
| # | 流程 | 验证结果 | 关键发现 |
|---|------|---------|---------|
| 1 | 聊天消息 | **PASS** | 全链路正常intelligence hooks 正确注入记忆+身份 |
| 2 | 技能执行 | **WARNING** | PythonSkill 有实现但从未被实例化assisted 模式无审批门 |
| 3 | Hand 执行+审批 | **PASS** | 三级守卫正确,跨 Hand 审批攻击防护到位 |
| 4 | Pipeline 执行 | **FAIL** | skill/hand stage 必然失败DriverNotAvailable |
| 5 | 记忆存储与检索 | **PASS**(有死代码) | intelligence_hooks 路径正常GrowthIntegration 永远不执行 |
### 7.2 Flow 4 失败详情
Pipeline 的 `StageExecutor` 在执行 skill/hand 类型 stage 时,调用:
```rust
self.skill_driver.as_ref().ok_or_else(|| StageError::DriverNotAvailable("Skill"))?
```
由于 `ActionRegistry` 构造时从未注入 `StageSkillDriver``StageHandDriver``skill_driver``hand_driver` 字段始终为 `None`,导致 `DriverNotAvailable` 错误。
**可用的 Pipeline stage 类型**: LLM、HTTP、file_export、variable
**不可用的 Pipeline stage 类型**: skill、hand、orchestration
### 7.3 Flow 2 警告详情
`SkillRegistry` 在匹配 `SkillMode::Python` 时(`registry.rs:79`),直接 fall-through 到 `PromptOnly`,导致 `PythonSkill`(完整实现在 `runner.rs:74-109`)永远不会被实例化。
---
## 八、修复建议(优先级排序)
### P0 — CRITICAL影响核心功能可用性
| # | 问题 | 修复方案 | 涉及文件 | 工作量 |
|---|------|---------|---------|--------|
| P0-1 | Pipeline skill/hand stage 失败 | 实现 `StageSkillDriver`/`StageHandDriver`,在 `pipeline_commands.rs` 中注入 | `crates/zclaw-pipeline/`, `desktop/src-tauri/src/pipeline_commands.rs` | 大 |
| P0-2 | GrowthIntegration 永远不执行 | 决策:(A) 在 Kernel 中接线 GrowthIntegration移除 intelligence_hooks(B) 移除 GrowthIntegration统一到 intelligence_hooks | `crates/zclaw-runtime/src/growth.rs`, `desktop/src-tauri/src/intelligence_hooks.rs` | 中 |
### P1 — HIGH影响功能完整性
| # | 问题 | 修复方案 | 涉及文件 | 工作量 |
|---|------|---------|---------|--------|
| P1-1 | PythonSkill 未实例化 | 修复 `registry.rs:79` 的 fall-through 逻辑 | `crates/zclaw-skills/src/registry.rs` | 小 |
| P1-2 | Trigger trait 零实现 | 实现 `Trigger` 或标记为 future feature | `crates/zclaw-hands/src/trigger.rs` | 中 |
| P1-3 | LlmDriverForExtraction 仅 Mock | 在 Tauri 层实现生产版本(桥接 LlmDriver | `desktop/src-tauri/src/` | 中 |
| P1-4 | Skill assisted 模式无审批门 | 与 Hand 一致,添加 assisted 模式审批 | `desktop/src-tauri/src/kernel_commands.rs` | 小 |
### P2 — MEDIUM代码质量与可维护性
| # | 问题 | 修复方案 | 涉及文件 | 工作量 |
|---|------|---------|---------|--------|
| P2-1 | ~4,228 行孤立代码 | 移除 Director、Export、Channels crate | `crates/zclaw-kernel/`, `crates/zclaw-protocols/`, `crates/zclaw-channels/` | 中 |
| P2-2 | kernel_status 返回桩数据 | 调用 `kernel.config()` 返回真实值 | `desktop/src-tauri/src/kernel_commands.rs` | 小 |
| P2-3 | viking_tree 忽略 depth 参数 | 实现递归深度控制 | `desktop/src-tauri/src/viking_commands.rs` | 小 |
| P2-4 | 审批拒绝理由被丢弃 | 存储/返回 `_reason` 参数 | `crates/zclaw-kernel/src/kernel.rs` | 小 |
### P3 — LOWSaaS 合并准备)
| # | 问题 | 修复方案 | 涉及文件 | 工作量 |
|---|------|---------|---------|--------|
| P3-1 | SaaS 缺失 9 个核心能力域 | 制定 SaaS 功能路线图优先级Agent→Skill→Hand→Pipeline→Memory | `.claude/worktrees/saas-backend/` | 大 |
| P3-2 | SaaS 无专属 UI 组件 | 设计/实现 SaaS 登录面板、设置页、仪表盘 | `desktop/src/components/` | 大 |
| P3-3 | Tauri IPC 耦合 | 抽象通信层,支持 HTTP/WebSocket/Tauri IPC 三种模式 | `desktop/src/lib/` | 大 |
---
## 九、审计结论
### Tauri 端健康度: **良好78%**
- 功能-代码对齐率 100%17 个功能全部有对应命令和 UI
- 5 条核心 E2E 流程中 3 条完全通过1 条有警告1 条失败
- 智能层(记忆/身份/心跳/反思/压缩)已完整接入聊天流程
- 主要问题集中在 Pipeline 的 skill/hand stage 不可用,以及 GrowthIntegration 死代码路径
### SaaS 端健康度: **早期18%**
- 仅实现 auth + LLM relay + config sync 三个基础能力
- 9 个核心能力域Agent/Skill/Hand/Pipeline/Memory/Intelligence/Browser/OpenViking完全缺失
- 前端仅有 client/store 层,无专属 UI 组件
- Main 分支零 SaaS 代码,完全隔离
### 合并建议
建议在合并 SaaS worktree 前,先完成以下工作:
1. 修复 P0-1Pipeline skill/hand stage
2. 解决 P0-2GrowthIntegration vs intelligence_hooks 决策)
3. 制定 SaaS 核心能力实现路线图(至少覆盖 Agent + Skill + Hand
4. 为 SaaS 模式设计/实现专属 UI 组件
---
*审计完成。本报告基于 2026-03-27 代码快照,所有发现均可通过文档中引用的文件路径和行号验证。*
---
## 九、v6.1 修复记录
> **修复日期**: 2026-03-27
> **编译状态**: `cargo check` 通过,零错误零警告
### 已修复项
| # | 优先级 | 修复内容 | 修改文件 |
|---|--------|---------|---------|
| 1 | **P0** | Pipeline skill/hand stage 接入 Kernel 驱动 — 创建 `PipelineSkillDriver``PipelineHandDriver` 适配器,将 Kernel 的 skill/hand 执行能力桥接到 Pipeline 的 `ActionRegistry` | `pipeline_commands.rs` |
| 2 | **P0** | GrowthIntegration 标记为未接线 — 添加文档注释说明该模块在 Tauri 部署中未使用(被 `intelligence_hooks` 替代),保留代码因为被 loop_runner/compaction 深度引用 | `growth.rs` |
| 3 | **P1** | PythonSkill 未实例化 — `SkillMode::Python` 分支添加到 registry`main.py` 存在时创建 `PythonSkill` 实例 | `registry.rs` |
| 4 | **P1** | Skill assisted 模式添加审批门 — `supervised` 模式所有 skill 需审批,`assisted` 模式 shell/python skill 需审批,`autonomous` 模式直接执行 | `kernel_commands.rs` |
| 5 | **P2** | kernel_status 返回真实配置值 — `database_url``base_url``model` 从桩数据改为读取 Kernel 配置 | `kernel_commands.rs` |
| 6 | **P2** | viking_tree depth 参数生效 — 移除未使用的 `_depth` 参数,添加实际深度限制逻辑 | `viking_commands.rs` |
| 7 | **P2** | 审批拒绝理由被丢弃 — `ApprovalEntry` 添加 `reject_reason` 字段,`respond_to_approval` 正确存储拒绝理由 | `kernel.rs` |
| 8 | **文档** | SaaS 差距矩阵重新分类 — 明确 SaaS 定位为系统管理(账号/权限/relay9 个 "CRITICAL GAP" 重新标记为 "N/A" | `COMPREHENSIVE_AUDIT_V6.md` |
### 待办项
| # | 优先级 | 内容 | 说明 |
|---|--------|------|------|
| 1 | P2 | 清理孤立代码Director/Export/Channels | ~4,228 行,建议作为独立重构任务 |
| 2 | P3 | 6 个零实现 Trait 评估 | 4 个属于 Pipeline v2未使用2 个属于 Trigger 系统 |