fix(audit): Batch 0-1 文档校准 + let _ = 静默错误修复
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

Batch 0:
- TRUTH.md 中间件层 14→15 (补 EvolutionMiddleware@78)
- wiki/middleware.md 同步 15 层 + 优先级分类更新
- Store 数字确认 25 个

Batch 1:
- approvals.rs: 3 处 map_err+let _ = 简化为 if let Err
- director.rs: oneshot send 失败添加 debug 日志
- task.rs: 4 处子任务状态更新添加 debug 日志
- chat.rs: 流消息发送和事件 emit 添加 warn/debug 日志
- heartbeat.rs: 告警广播添加 debug 日志 + break 优化

全量测试通过: 719 passed, 0 failed
This commit is contained in:
iven
2026-04-19 08:30:33 +08:00
parent e94235c4f9
commit 924ad5a6ec
7 changed files with 75 additions and 47 deletions

View File

@@ -20,24 +20,27 @@ tags: [module, middleware, runtime]
## 代码逻辑
### 14 层 Runtime 中间件(注册顺序见 `kernel/mod.rs:248-361`
### 15 层 Runtime 中间件(注册顺序见 `kernel/mod.rs:248-361`,执行按 priority 升序
| # | 中间件 | 文件 | 职责 | 注册条件 |
|---|--------|------|------|----------|
| 1 | ButlerRouter | `middleware/butler_router.rs` | 语义技能路由 + system prompt 增强 | 始终 |
| 2 | DataMasking | `middleware/data_masking.rs` | 手机号/身份证等敏感数据脱敏 | 始终 |
| 3 | Compaction | `middleware/compaction.rs` | 超阈值时压缩对话历史 | `compaction_threshold > 0` |
| 4 | Memory | `middleware/memory.rs` | 对话后自动提取记忆 | 始终 |
| 5 | LoopGuard | `middleware/loop_guard.rs` | 防止工具调用无限循环 | 始终 |
| 6 | TokenCalibration | `middleware/token_calibration.rs` | Token 用量校准 | 始终 |
| 7 | SkillIndex | `middleware/skill_index.rs` | 注入技能索引到 system prompt | `!skill_index.is_empty()` |
| 8 | Title | `middleware/title.rs` | 自动生成会话标题 | 始终 |
| 9 | DanglingTool | `middleware/dangling_tool.rs` | 修复缺失的工具调用结果 | 始终 |
| 10 | ToolError | `middleware/tool_error.rs` | 格式化工具错误供 LLM 恢复 | 始终 |
| 11 | ToolOutputGuard | `middleware/tool_output_guard.rs` | 工具输出安全检查 | 始终 |
| 12 | Guardrail | `middleware/guardrail.rs` | shell_exec/file_write/web_fetch 安全规则 | 始终 |
| 13 | SubagentLimit | `middleware/subagent_limit.rs` | 限制并发子 agent | 始终 |
| 14 | TrajectoryRecorder | `middleware/trajectory_recorder.rs` | 轨迹记录 + 压缩 | 始终 (V13-FIX-01 已注册) |
| # | 中间件 | 优先级 | 文件 | 职责 | 注册条件 |
|---|--------|--------|------|------|----------|
| 1 | EvolutionMiddleware | 78 | `middleware/evolution.rs` | 推送进化候选项到 system prompt | 始终 |
| 2 | ButlerRouter | 80 | `middleware/butler_router.rs` | 语义技能路由 + system prompt 增强 | 始终 |
| 3 | DataMasking | 90 | `middleware/data_masking.rs` | 手机号/身份证等敏感数据脱敏 | 始终 |
| 4 | Compaction | 100 | `middleware/compaction.rs` | 超阈值时压缩对话历史 | `compaction_threshold > 0` |
| 5 | Memory | 150 | `middleware/memory.rs` | 对话后自动提取记忆 + 进化检查 | 始终 |
| 6 | Title | 180 | `middleware/title.rs` | 自动生成会话标题 | 始终 |
| 7 | SkillIndex | 200 | `middleware/skill_index.rs` | 注入技能索引到 system prompt | `!skill_index.is_empty()` |
| 8 | DanglingTool | 300 | `middleware/dangling_tool.rs` | 修复缺失的工具调用结果 | 始终 |
| 9 | ToolError | 350 | `middleware/tool_error.rs` | 格式化工具错误供 LLM 恢复 | 始终 |
| 10 | ToolOutputGuard | 360 | `middleware/tool_output_guard.rs` | 工具输出安全检查 | 始终 |
| 11 | Guardrail | 400 | `middleware/guardrail.rs` | shell_exec/file_write/web_fetch 安全规则 | 始终 |
| 12 | LoopGuard | 500 | `middleware/loop_guard.rs` | 防止工具调用无限循环 | 始终 |
| 13 | SubagentLimit | 550 | `middleware/subagent_limit.rs` | 限制并发子 agent | 始终 |
| 14 | TrajectoryRecorder | 650 | `middleware/trajectory_recorder.rs` | 轨迹记录 + 压缩 | 始终 |
| 15 | TokenCalibration | 700 | `middleware/token_calibration.rs` | Token 用量校准 | 始终 |
> **注意**: 注册顺序(代码中的 chain.register 调用顺序与执行顺序不同。Chain 按 priority 升序排列后执行。
### 10 层 SaaS HTTP 中间件(`zclaw-saas/src/main.rs`
@@ -58,10 +61,12 @@ tags: [module, middleware, runtime]
| 范围 | 类别 | 包含的中间件 |
|------|------|-------------|
| 70-79 | 进化 | EvolutionMiddleware |
| 80-99 | 路由+安全 | ButlerRouter, DataMasking |
| 100-199 | 上下文塑造 | Compaction, Memory |
| 200-399 | 能力 | SkillIndex, Guardrail |
| 400-599 | 安全 | LoopGuard, DataMasking |
| 600-799 | 遥测 | TokenCalibration, Title, TrajectoryRecorder |
| 200-399 | 能力 | SkillIndex, DanglingTool, ToolError, ToolOutputGuard |
| 400-599 | 安全 | Guardrail, LoopGuard, SubagentLimit |
| 600-799 | 遥测 | TrajectoryRecorder, TokenCalibration, Title |
### 中间件执行流
@@ -97,7 +102,7 @@ trait AgentMiddleware: Send + Sync {
### 注册位置
`crates/zclaw-kernel/src/kernel/mod.rs:248-361``create_middleware_chain()` 方法14`chain.register()` + 1 个条件注册 (SkillIndex)
`crates/zclaw-kernel/src/kernel/mod.rs:248-361``create_middleware_chain()` 方法15`chain.register()`(含 2 个条件注册: SkillIndex, Compaction。注册顺序与执行顺序不同chain 按 priority 升序排列后执行
## 关联模块
@@ -111,6 +116,6 @@ trait AgentMiddleware: Send + Sync {
| 文件 | 职责 |
|------|------|
| `crates/zclaw-runtime/src/middleware.rs` | AgentMiddleware trait + MiddlewareChain |
| `crates/zclaw-runtime/src/middleware/` | 14 个中间件实现 (14个 .rs 文件) |
| `crates/zclaw-runtime/src/middleware/` | 15 个中间件实现 (15个 .rs 文件) |
| `crates/zclaw-kernel/src/kernel/mod.rs:248-361` | 注册入口 |
| `crates/zclaw-saas/src/main.rs` | SaaS HTTP 中间件注册 (10 层) |