Repository navigation
v0.2.0 — 稳定性、可观测性与基础设施全面升级
v0.2.0 — 稳定性、可观测性与基础设施全面升级
自 v0.1.1-rc.0 以来,本版本包含 206 次提交(18 项新特性、90 项修复、54 项重构、27 项文档改进、6 项测试增强、1 项性能优化),是 RTC Agent Server 迄今为止内容最丰富的一次发布。
✨ 新特性
会话与生命周期
- OpenSession RPC:新增独立 RPC 接口,改进内存管理与超时处理
- Turn 恢复机制:支持服务器重启后的 stale turn 恢复与 checkpoint 续跑
- 周期性 stale turn 扫描器:基于分布式锁的后台巡检,自动回收卡住的 turn
- 防御性消息归一化器:确保 LLM API 合规,防止异常消息序列导致崩溃
循环任务(Loop)系统
- Loop 命令:支持周期性任务执行
- Asynq 后台任务系统:基于 Redis 的可靠任务调度,支持重试、监控与仪表板
OAuth 认证
- GitHub & Google OAuth2:完整实现两大第三方 OAuth2 提供商接入
内存与记忆
- 统一内存基础设施(pkg/memory):解耦
pkg/memory与internal/model - OKF 导出 API:HTTP 接口导出记忆数据
- 基于 Tool Calling 的记忆抽取:替代原有 embedding 语义搜索
Token 与成本
- Token 用量追踪与预估:集成 tiktoken-go,支持可配置计数
- Token 成本计算:为每次 turn 提供成本核算
可观测性与监控
- 战略缓存断点(Cache Breakpoints):保护稳定内容,提升缓存命中率
- Debug 端点与 goroutine 监控:新增调试接口与 goroutine 泄漏检测
- HTTP 指标中间件:跳过 WebSocket 升级请求的精准度量
- 错误反馈告警与仪表板:Phase 8 监控体系完整落地
- 用户可见错误反馈:turn 失败时向用户插入可读错误消息
- 脚本执行异步记录器:带指标与仪表板的执行追踪
消息与内容
- user_message 内容类型:支持场景化注入
- 批量中断支持:一次操作中断多个 turn
基础设施
- 配置校验、生命周期管理器、限流器与安全加固:一站式基础能力
- 服务器重启恢复与 checkpoint 续跑:生产环境高可用保障
🐛 关键修复
并发与数据一致性 (P0/P1)
- 修复 turn 生命周期、流式传输与错误处理中的 4 个关键 bug
- 修复 split-brain 问题、互斥锁死锁、定时器泄漏
- 修复 RTC-queue 数据竞争、内存泄漏
- 修复 Redis Pub/Sub 竞态导致的 StopTurn 取消信号丢失
- 修复 toolcall_output 数据丢失的拆分事务问题
- 修复 cascade 取消子 agent 时的 goroutine 泄漏
- 修复 DB 操作与已取消 callback 上下文的耦合
上下文与生命周期
- 将 fire-and-forget callback 从已取消的调用方上下文解耦
- 将关键 DB 操作隔离于已取消的 callback 上下文之外
- 修复 context timeout 在 goroutine 内过早取消的问题
- 修复 compact 操作与父 context 生命周期耦合
- 修复 Start 与 Stop 并发执行问题
流式与消息处理
- 修复 thinking-only stream finalization 的 token usage 丢失
- 修复 appendStreamChunk 失败时的 markdown 消息 finalize
- 修复 streaming fallback 中 ContentData 结构破坏
- 修复 streamState 在 markdown 追加失败时的清理
- 修复 UTF-8 安全截断(thinking concat、memory extractor 等多处)
分布式安全
- 修复 sub-agent 通知的 session 加载失败回滚
- 修复 batch resume 中 SRem 返回值误用
- 修复 reactive compact escalation 跨 Process 重启
- 修复 Redis 原子性与错误处理
错误处理与日志
- 消除恢复与清理路径中的 error swallowing
- 修复 sanitizer 规则对 IPv6 与 token 误报
- 修复 panic recovery 堆栈追踪与 sub-agent 通知缺口
- 统一日志字段排序与命名常量替换 magic string
🔧 代码质量
重构
- 500 行合规:拆分所有超限文件(9+ 个超过 500 行的文件)
- 循环复杂度降低:使用
cenkalti/backoff替代手写指数退避;提取大量 helper 函数 - 重复消除:提取
extractSessionIDFromContext、notifyParentAndCascadeCancel、publishLifecycleFallback等共享逻辑 - Magic number/ string 替换:优先级常量、typed constants、Redis key prefix 命名化
- 日志规范化:NoopLogger 替代
logIfEnabled反模式;统一 log fields 排序
类型安全与测试
- 新增 lifecycle Manager 测试(覆盖率 0% → 97.5%)
- 新增 agent、loop、updates 包单元测试
- 修复测试 helper 未使用参数
性能
- 预分配 slice 减少分配开销
📚 文档
- 中文注释英文化:完成 27 次专项文档提交,覆盖 oauth、centrifuge-plus、updates、logger、repo、config、cache、memory、infra、cmd、handler、rtc-queue、eino-agent、turn-agent 等所有内部包
- API 注释完善:澄清 sub_agent resume 状态检查、token usage 语义、stream TTL 默认值等
🙏 致谢
本次发布涉及整个服务端代码库的系统性加固,感谢所有参与代码评审、bug 复现与压测的贡献者。v0.2.0 为后续的 RTC 协议演进与多 agent 协作奠定了坚实的工程基础。
Full Changelog: v0.1.1-rc.0...v0.2.0