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
问题: 旧 wiki 按文档类型组织(architecture/data-flows/file-map), 修复 Butler Router 需要读 4 个文件才能拼凑全貌。 且 SaaS Relay 主路径 vs 本地降级的优先级描述不准确。 重构为模块化结构,每个模块页自包含: - 设计思想: 为什么这样设计 - 代码逻辑: 数据流 + 关键代码 - 关联模块: 依赖关系 新增模块页: - routing.md: 客户端路由 (明确 SaaS Relay 是主路径,不是本地模式) - chat.md: 聊天系统 (3种实现 + Token Pool 中转机制) - butler.md: 管家模式 (路由/冷启动/痛点/双模式UI) - memory.md: 记忆管道 (提取→FTS5→检索→注入) - saas.md: SaaS平台 (认证/Token池/计费/Admin) - middleware.md: 中间件链 (14层 + 优先级) - hands-skills.md: Hands(9) + Skills(75) - pipeline.md: Pipeline DSL 删除旧文件: architecture.md, data-flows.md, module-status.md, file-map.md (内容已分布到对应模块页中) 添加 .gitignore 排除 Obsidian 工作区状态文件
1.9 KiB
1.9 KiB
title, updated, status, tags
| title | updated | status | tags | |||
|---|---|---|---|---|---|---|
| 中间件链 | 2026-04-11 | active |
|
中间件链
设计思想
中间件是请求处理的管道,按优先级顺序执行。
- 优先级 0-100,数值越大越先执行
- 每层中间件可以: 修改请求 / 拦截响应 / 记录日志 / 注入上下文
- 所有消息流(聊天、管家)都经过完整中间件链
代码逻辑
14 层中间件
关键中间件(按优先级排序):
| 优先级 | 中间件 | 文件 | 职责 |
|---|---|---|---|
| 90 | DataMasking | middleware/data_masking.rs |
请求发送前数据脱敏 (手机号/身份证) |
| ~500 | ButlerRouter | middleware/butler_router.rs |
4域关键词分类 + system prompt 增强 |
| 650 | TrajectoryRecorder | middleware/trajectory_recorder.rs |
轨迹记录 + 压缩 |
其他 11 层: 认证、速率限制、日志、技能注入、记忆注入等。
中间件执行流
用户消息
→ [优先级 90] DataMasking — 脱敏敏感数据
→ [优先级 ~500] ButlerRouter — 关键词分类 + prompt 增强
→ [优先级 650] TrajectoryRecorder — 记录请求轨迹
→ [其他层] 认证/限流/日志/技能/记忆
→ LLM 调用
→ 响应原路返回
注册位置
中间件在 crates/zclaw-runtime/ 中注册,Kernel 启动时加载。
关联模块
关键文件
| 文件 | 职责 |
|---|---|
crates/zclaw-runtime/src/middleware/ |
所有中间件实现 |
crates/zclaw-runtime/src/middleware/butler_router.rs |
管家路由器 |
crates/zclaw-runtime/src/middleware/data_masking.rs |
数据脱敏 |
crates/zclaw-runtime/src/middleware/trajectory_recorder.rs |
轨迹记录 |