Changelog
All notable changes to this project will be documented in this file.
格式说明:
- Features / 新特性:新增能力、重要增强。
- Bugfixes / 缺陷修复:行为错误、并发问题、稳定性修复。
- Breaking Changes / 兼容性变更:可能影响现有代码的 API 或行为变更。
[0.4.0] - 2025-12-09
Features / 新特性
Observability & Telemetry
-
统一可观测性体系
- 增强
gecko/core/telemetry.py:- 使用
opentelemetry-sdk>=1.38推荐方式创建Resource,支持service.name、service.version、deployment.environment等标准字段。 - 新增
TelemetryConfig配置项:batch_export_interval_ms、max_export_batch_size,可根据生产环境吞吐和延迟需求调优。
- 使用
get_telemetry()支持 自动初始化:首次调用时会创建默认GeckoTelemetry并立即setup(),降低接入门槛。- Telemetry 与
logging的trace_id/span_id通过ContextVar打通,保证日志与 Trace 关联一致。
- 增强
-
Metrics 指标体系
- 引入轻量级指标模块
gecko/core/metrics.py(Counter/Gauge/Histogram):- 支持高并发下的分片锁(shard-based locking)减少锁竞争。
- 提供计时场景的上下文管理器,便捷记录接口耗时。
- 支持导出 Prometheus 文本格式,便于对接监控系统。
- 引入轻量级指标模块
-
ExecutionStats 执行统计
- 新增
gecko/core/engine/stats.py(或同名模块):- 统一记录引擎执行维度的统计信息:
total_steps、total_time、input_tokens、output_tokens、tool_calls、errors、estimated_cost。 - 内部使用
threading.Lock保证并发安全。 - 提供
get_avg_step_time()、get_error_rate()、get_total_tokens()等便捷方法。
- 统一记录引擎执行维度的统计信息:
- 各 Engine 通过 Hook 在每步执行后更新统计,为后续成本监控与性能分析打基础。
- 新增
Memory / 记忆系统
- HybridMemory:短期 + 长期混合记忆
- 新增
gecko/core/memory/hybrid.py:- 基于
TokenMemory(短期上下文)与向量库(长期记忆)的组合设计。 get_history()中并行执行短期与长期检索(asyncio.gather),在给模型的上下文中按照:
System Prompt → Long-term Context(System) → Short-term History的顺序拼装消息。- 长期检索使用
embedder.embed_query+vector_store.search(filters={"session_id": self.session_id}),保证多会话隔离。 archive_message()仅归档长度大于一定阈值的消息,减少噪声数据写入向量库。
- 基于
- 在
gecko/core/memory/__init__.py中导出HybridMemory,可直接:
from gecko.core.memory import HybridMemory使用。
- 新增
Workflow / 组合与工作流
-
Workflow Engine DAG 并行与恢复能力增强
gecko/compose/workflow/graph.py:- 负责管理 Workflow DAG:节点/边维护、拓扑排序、并行层级构建。
- 增强静态校验:环检测(cycle detection)、孤立节点检测,异常一律使用
WorkflowError子类。
gecko/compose/workflow/engine.py:- 按层级并行执行 DAG(每一层使用 TaskGroup 并行)。
- 引入 COW + Diff Merge 的上下文管理策略:
- 并行节点使用 copy-on-write 视图,避免互相污染;
- 执行结束后按“最后写入优先”策略合并变更。
- 支持
Next(...)动态控制流:- 节点返回
Next指令可以覆盖默认拓扑路径,实现条件跳转与动态分支。
- 节点返回
- 支持断点恢复:
- 可以从持久化状态恢复并从指定节点继续执行。
-
Team 执行策略扩展(并行/赛马)
gecko/compose/team.py:- 新增
ExecutionStrategy:ALL与RACE模式:ALL:等待所有 Agent 成员执行完成(Map-Reduce 默认模式)。RACE:赛马模式,取第一个成功结果,其它任务自动取消。
- 新增
input_mapper,支持从一个输入生成多个子输入(Sharding)后分配给不同成员。 - 为 RACE 模式引入
_winner_lock,保证并发场景下只有一个“获胜者”被选中。
- 新增
Structure / 结构化输出
-
结构化输出自愈修复能力
- 新增
gecko/core/structure/repair.py:- 提供基于 LLM 的 JSON 自修复功能:
- 将「破损/不合法 JSON + 解析错误信息」作为 Prompt,交给模型生成修复后的结构化输出。
- 提供基于 LLM 的 JSON 自修复功能:
gecko/core/structure/engine.py更新解析策略:- 结构化解析路径分为三层:
- 优先从 ToolCall 直接解析为结构化数据;
- 从文本中提取 JSON(
json_extractor),再做 Pydantic 校验; - 如仍失败,调用
repair模块进行 LLM 自愈(有限次数)。
- 结构化解析路径分为三层:
- 新增
-
JSON 提取器增强
gecko/core/structure/json_extractor.py:- 提供多策略 JSON 提取:正则、括号匹配、Markdown 代码块等;
- 支持插件式扩展提取策略。
Resilience / 系统韧性
- 熔断器(Circuit Breaker)模块
- 新增
gecko/core/resilience.py:- 实现通用熔断器,可包装模型调用或任意外部 IO。
- 支持失败计数、半开窗口、冷却时间等配置。
- 防止下游服务连续失败导致整系统被拖垮。
- 新增
Models / Provider 适配
-
统一 Provider 异常体系
- 新增
gecko/plugins/models/exceptions.py:- 引入
ProviderError及其子类(RateLimit/Auth/ServiceUnavailable 等),统一继承自ModelError。 - 将模型服务相关错误统一编码为
ErrorCode,便于上层统一处理与监控。
- 引入
- 新增
-
LiteLLM Driver 生产级化
gecko/plugins/models/drivers/litellm_driver.py:- 引入 tokenizer 预加载:优先使用 tiktoken,不可用时退回字符长度估算,提升 Token 计数精度。
- 使用
gecko/core/resilience的熔断器包装请求,增强对 LiteLLM / 模型代理不稳定的容错能力。 - 将 LiteLLM 错误统一映射到
ProviderError子类,填充ErrorCode和可重试信息。 - 增加响应适配层,将 LiteLLM 输出转换为框架统一的响应结构。
Bugfixes / 缺陷修复
Concurrency / 并发安全
-
ToolBox 统计并发问题修复
gecko/core/toolbox.py:get_stats()中改为在持有锁时对self._tools做快照(tool_names = list(self._tools.keys())),并在迭代时检查name in self._execution_count,防止工具在统计过程中被移除引发KeyError。
-
流式缓冲区完整性修复
gecko/core/engine/buffer.py:- 增强对流式
tool_calls的索引和分片处理:记录_max_tool_index,保证乱序/分片场景下的结果正确重组。 - 增加
_max_content_chars上限,防止异常长返回撑爆内存。 - 引入
RLock保护更新和构建逻辑,在多线程/异步混用场景下保持一致性。
- 增强对流式
Engine / Workflow 行为修复
-
ReAct 引擎 Message 参数不兼容问题
gecko/core/engine/react.py:- 修复
Message.assistant(tool_calls=...)与Message模型签名不一致导致的TypeError。 - 优先从
tool_calls解析结构化结果,其次才回退到content文本解析,避免丢失 ToolCall 信息。
- 修复
-
Next 控制流透传问题
gecko/compose/workflow/executor.py:- 修复部分路径下
Next(...)被当作普通返回值处理的问题,确保由 Executor 识别并作为控制流指令传回WorkflowEngine。
- 修复部分路径下
-
Workflow 图校验增强
gecko/compose/workflow/graph.py:- 增强环检测和孤立节点检测逻辑,并统一使用
WorkflowError子类抛出,避免工作流在运行时才暴露拓扑问题。
- 增强环检测和孤立节点检测逻辑,并统一使用
Logging & Tracing
- 日志上下文一致性修复
gecko/core/logging.py与gecko/core/telemetry.py:- 统一使用同一组
ContextVar(trace_id_var、span_id_var、extra_context_var),确保日志和 OTEL trace 共享相同的 TraceId/SpanId。 - 修复少量日志消息与 ImportWarning 文本中的小拼写问题。
- 统一使用同一组
其他稳定性修复
-
DI 容器线程安全
gecko/core/container.py:- 使用
RLock保护依赖注册和解析流程,修复多线程环境下潜在的状态竞争。
- 使用
-
记忆系统执行器关闭
gecko/core/memory/__init__.py:- 确保
shutdown_token_executor对外可见,避免在进程结束前遗留线程池或任务。
- 确保
Breaking Changes / 兼容性变更
注意:0.4.0 版本在设计上尽量保持向后兼容,未主动引入显式的 API 破坏性调整。
下面列出的是潜在行为变更,可能会在极少数场景中影响已有系统行为。
-
Telemetry 自动初始化行为
get_telemetry()现在会在首次调用时自动创建并初始化默认GeckoTelemetry实例。- 如果已有代码在自定义 Telemetry 之前调用了
get_telemetry(),可能会导致实际使用的是默认配置。推荐做法:- 在应用启动阶段显式调用
configure_telemetry(...)设置自定义配置。
- 在应用启动阶段显式调用
-
结构化解析策略调整
StructureEngine现在优先从 ToolCall 中解析结构化数据,其次才从文本 JSON 中解析,最后才通过 LLM 自愈修复。- 如果上层逻辑依赖于“始终从纯文本中解析”这一旧行为,结果可能略有差异(但通常是更合理的解析路径)。
-
Workflow 并行与上下文合并行为
- 引入 COW + Diff Merge 的上下文管理策略后,多个并行节点对上下文的写入冲突将按“最后写入优先”规则处理。
- 如果之前依赖于共享可变对象的“非确定性行为”,现在可能会变得更稳定和可预测。
总体而言:未发现 API 层面的硬性 Breaking Change。若在升级 0.4.0 后遇到行为差异,建议重点检查:
- 是否依赖旧的 Telemetry 初始化方式;
- 是否依赖旧的结构化输出解析路径;
- 是否在 Workflow 中存在对并行写共享状态的特殊假设。
[0.3.1]
Summary / 概述
- 0.3.1 是在 0.3.0 基础上的小版本维护更新:
- 对部分核心模块(Workflow Models、Memory、Storage 等)做了工程化整理;
- 同步文档与版本元数据(
gecko/version.py中更新__version__等); - 为后续 0.4.0 的 Telemetry / Workflow / Memory 重构铺路。
该版本未引入已知的 Breaking Changes。
Notes
- 从 0.3.1 → 0.4.0 的升级建议:
- 在应用启动阶段显式调用
configure_telemetry(),而不是依赖默认自动初始化。 - 如有自定义 Workflow 或 Team 执行逻辑,建议补充集成测试,验证在并行执行、Next 跳转和断点恢复场景下行为符合预期。
- 如对结构化输出高度依赖,建议开启日志,观察
StructureEngine的解析与修复过程,评估新策略的效果。
- 在应用启动阶段显式调用