Phase 0: 知识库
- docs/knowledge-base/loco-rs-patterns.md — loco-rs 10 个可借鉴模式研究
Phase 1: 数据层重构
- crates/zclaw-saas/src/models/ — 15 个 FromRow 类型化模型
- Login 3 次查询合并为 1 次 AccountLoginRow 查询
- 所有 service 文件从元组解构迁移到 FromRow 结构体
Phase 2: Worker + Scheduler 系统
- crates/zclaw-saas/src/workers/ — Worker trait + 5 个具体实现
- crates/zclaw-saas/src/scheduler.rs — TOML 声明式调度器
- crates/zclaw-saas/src/tasks/ — CLI 任务系统
Phase 3: 性能修复
- Relay N+1 查询 → 精准 SQL (relay/handlers.rs)
- Config RwLock → AtomicU32 无锁 rate limit (state.rs, middleware.rs)
- SSE std::sync::Mutex → tokio::sync::Mutex (relay/service.rs)
- /auth/refresh 阻塞清理 → Scheduler 定期执行
Phase 4: 多环境配置
- config/saas-{development,production,test}.toml
- ZCLAW_ENV 环境选择 + ZCLAW_SAAS_CONFIG 精确覆盖
- scheduler 配置集成到 TOML
139 lines
2.9 KiB
TOML
139 lines
2.9 KiB
TOML
[workspace]
|
|
resolver = "2"
|
|
members = [
|
|
# ZCLAW Core Crates
|
|
"crates/zclaw-types",
|
|
"crates/zclaw-memory",
|
|
"crates/zclaw-runtime",
|
|
"crates/zclaw-kernel",
|
|
# ZCLAW Extension Crates
|
|
"crates/zclaw-skills",
|
|
"crates/zclaw-hands",
|
|
"crates/zclaw-channels",
|
|
"crates/zclaw-protocols",
|
|
"crates/zclaw-pipeline",
|
|
"crates/zclaw-growth",
|
|
# Desktop Application
|
|
"desktop/src-tauri",
|
|
# SaaS Backend
|
|
"crates/zclaw-saas",
|
|
]
|
|
|
|
[workspace.package]
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
license = "Apache-2.0 OR MIT"
|
|
repository = "https://github.com/zclaw/zclaw"
|
|
rust-version = "1.75"
|
|
|
|
[workspace.dependencies]
|
|
# Async runtime
|
|
tokio = { version = "1", features = ["full"] }
|
|
tokio-stream = "0.1"
|
|
futures = "0.3"
|
|
async-stream = "0.3"
|
|
|
|
# Serialization
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
toml = "0.8"
|
|
|
|
# Error handling
|
|
thiserror = "2"
|
|
anyhow = "1"
|
|
|
|
# Concurrency
|
|
dashmap = "6"
|
|
parking_lot = "0.12"
|
|
|
|
# Logging / Tracing
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
|
|
# Time
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
|
|
# IDs
|
|
uuid = { version = "1", features = ["v4", "v5", "serde"] }
|
|
|
|
# Database
|
|
sqlx = { version = "0.7", features = ["runtime-tokio", "sqlite", "postgres"] }
|
|
libsqlite3-sys = { version = "0.27", features = ["bundled"] }
|
|
|
|
# HTTP client (for LLM drivers)
|
|
reqwest = { version = "0.12", default-features = false, features = ["json", "stream", "rustls-tls"] }
|
|
|
|
# URL parsing
|
|
url = "2"
|
|
|
|
# Async trait
|
|
async-trait = "0.1"
|
|
|
|
# Base64
|
|
base64 = "0.22"
|
|
|
|
# Bytes
|
|
bytes = "1"
|
|
|
|
# Secrets
|
|
secrecy = "0.8"
|
|
|
|
# Random
|
|
rand = "0.8"
|
|
|
|
# Crypto
|
|
sha2 = "0.10"
|
|
aes-gcm = "0.10"
|
|
|
|
# Home directory
|
|
dirs = "6"
|
|
|
|
# Regex
|
|
regex = "1"
|
|
|
|
# Shell parsing
|
|
shlex = "1"
|
|
|
|
# WASM runtime
|
|
wasmtime = { version = "43", default-features = false, features = ["cranelift"] }
|
|
wasmtime-wasi = { version = "43" }
|
|
|
|
# Testing
|
|
tempfile = "3"
|
|
|
|
# SaaS dependencies
|
|
axum = { version = "0.7", features = ["macros"] }
|
|
axum-extra = { version = "0.9", features = ["typed-header"] }
|
|
tower = { version = "0.4", features = ["util"] }
|
|
tower-http = { version = "0.5", features = ["cors", "trace", "limit", "timeout"] }
|
|
jsonwebtoken = "9"
|
|
argon2 = "0.5"
|
|
totp-rs = "5"
|
|
hex = "0.4"
|
|
|
|
# Internal crates
|
|
zclaw-types = { path = "crates/zclaw-types" }
|
|
zclaw-memory = { path = "crates/zclaw-memory" }
|
|
zclaw-runtime = { path = "crates/zclaw-runtime" }
|
|
zclaw-kernel = { path = "crates/zclaw-kernel" }
|
|
zclaw-skills = { path = "crates/zclaw-skills" }
|
|
zclaw-hands = { path = "crates/zclaw-hands" }
|
|
zclaw-channels = { path = "crates/zclaw-channels" }
|
|
zclaw-protocols = { path = "crates/zclaw-protocols" }
|
|
zclaw-pipeline = { path = "crates/zclaw-pipeline" }
|
|
zclaw-growth = { path = "crates/zclaw-growth" }
|
|
zclaw-saas = { path = "crates/zclaw-saas" }
|
|
|
|
[profile.release]
|
|
lto = true
|
|
codegen-units = 1
|
|
strip = true
|
|
opt-level = 3
|
|
|
|
[profile.release-fast]
|
|
inherits = "release"
|
|
lto = "thin"
|
|
codegen-units = 8
|
|
opt-level = 2
|
|
strip = false
|