Skip to content

v0.4.0-rc.1 — 企业级生产发布候选 (Enterprise Release Candidate)

Pre-release
Pre-release

Choose a tag to compare

@dahai80 dahai80 released this 31 Aug 03:35
· 1 commit to main since this release
5123e9d

v0.4.0-rc.1 — 企业级生产发布候选(Enterprise Release Candidate)

本次 RC 在 v0.3.3 基础上落地完整企业级演进路线图(审计 P0-P3 全清零 + 6 步路线图全合并),代码与测试层面具备企业级生产商用发布条件。

RC 说明:代码冻结候选。发布前须 ops 补两项确认(见下方「部署前置条件」),确认后转 v0.4.0 正式版。

鉴定结论

维度 状态
审计 P0-P3 ✅ 全清零(PR #17/#24),无阻断缺陷
测试 ✅ 536 全绿,CI 8/8
企业级路线图 ✅ 6 步全合并
发布判定 代码层面具备企业级生产商用发布条件

路线图(6 步,2026-08-31)

  1. P2 收尾(PR #17)— 幂等键去重(_idempotency_key TTL 600s,防客户端断连重复副作用)+ infra_log 双流汇集(基础层错误桥接至环形缓冲,运维可查)。
  2. 可观测性(PR #19/#20)— 新增 metrics.py(Prometheus 文本暴露,纯进程内注册表零外部依赖)。计数器 plugin_executions_total/plugin_errors_total/mcp_tool_calls_total/mcp_tool_errors_total/sandbox_spawns_total;瞬时 gauge active_plugins/active_sessions/vram_used_mb。transport 未鉴权 GET /metrics 短路(text/plain; version=0.0.4),供 Prometheus/K8s scrape。493 测试,CI 8/8。
  3. 压测(PR #21)— (a) 确定性并发安全回归 tests/test_load.py(8 项入 CI):50 路并发 execute 无丢失 + max_concurrent 限流;指标 8 线程×500 inc 零竞态;token-meter 1000 条高频无丢失;沙箱 spawn 风暴 10 轮零泄漏。(b) live MLX 吞吐基准 scripts/bench_mlx_load.py:concurrency 8/16 → 6.25 req/s 持平、延迟线性涨 → 瓶颈在下游单引擎,插件层零开销。501 测试,CI 8/8。
  4. 多节点(PR #22)— 新增 cluster_bridge.py 桥接 fusion-cowork 分布式状态层。插件 enabled/disabled + vRAM 跨节点同步;节点心跳 + 失效 failover(stale 节点 evict 清理状态/vRAM)。降级语义:FUSION_CLUSTER_ENABLED 未启用或 cowork 缺失时全 no-op,单机行为不变。9 项回归测试。510 测试,CI 8/8。
  5. 长时稳定性 soak(PR #23)— (a) 确定性长时回归 tests/test_soak.py(8 项入 CI):token-meter 50k record 容量封顶、日志缓冲 10k 封顶、会话 2000 LRU 封顶、计数器 100k 单调无溢出。(b) live MLX soak scripts/soak_mlx.py(60s):23 调用,RSS 50.0→50.3MB 后半段 plateau delta 0.1MB 无泄漏,exec_total==calls,err_total=0。verdict: STABLE。518 测试,CI 8/8。
  6. P3 工程化清理(PR #24)— (a) TokenMeter WAL 追加写(JSON Lines O(batch) + 周期压缩 snapshot,seq 单调去重防崩溃恢复重复,旧版 list 向后兼容)。(b) cpu_limit 默认 0.0=不限(RLIMIT_CPU 累计秒,1.0 会 SIGXCPU 杀合法计算)。(c) 结构化 JSON 日志 logging_setup.pycorrelation_id ContextVar 全链路关联)+ SSE 队列 maxsize=256 满队丢弃不阻塞 + _enable_with_retry 仅 vRAM 暂态重试。18 项回归测试。518→536 测试,CI 8/8。

安全

  • Bearer 鉴权 + 非 loopback 绑定强制 token(FUSION_PLUGIN_AUTH_TOKEN),拒绝对外裸奔
  • API 密钥 Fernet 加密存储
  • 会话上限 LRU(256),错误响应脱敏截断(300 字符)
  • 远程传输鉴权拒绝走 stderr 收窄改动面

运维闭环

  • 看门狗心跳判死 + atexit 兜底回收(防子进程孤儿)
  • token WAL 崩溃恢复(停机 flush→单文件可恢复)
  • 结构化 JSON 日志便于 ELK/Loki 聚合

⚠️ 部署前置条件(ops 侧,非代码阻断)

  1. 多节点 CI 未覆盖tests/test_cluster_bridge.pypytest.importorskip("fusion_cowork"),CI 单仓环境无 fusion_cowork → 9 项测试静默跳过。生产前须在含 fusion_cowork 的 monorepo 环境跑一次该文件,确认集群桥真实生效(本地已验证 510 绿)。
  2. Soak 实测仅 60s生产前须运维延长 scripts/soak_mlx.py --duration 86400 跑 24h,确认无慢泄漏(second-half plateau delta 法)。

两项均为「发布前 ops 跑一次确认」,非代码缺陷。确认后转 v0.4.0 正式版。

已知边界

  • 多节点 HA 的 quorum/脑裂配置在 fusion-cowork 侧,本仓 cluster_bridge 只桥接状态,不解决分布式共识(超本仓范围)。
  • 系统级吞吐上限受 fusion-mlx 单引擎约束(吞吐 8→16 并发持平 ~6.25 req/s),多并发场景需多引擎/多节点分摊。

测试

536 passed, CI 8/8 green on main.


Full Changelog: v0.3.3...v0.4.0-rc.1