Skip to content

V1.0.0

Latest

Choose a tag to compare

@jjyaoao jjyaoao released this 21 Feb 05:58
· 13 commits to main since this release

HelloAgents V1.0.0 Release Notes

📅 发布日期: 2026-02-21
📦 安装: pip install hello-agents>=1.0.0
🔗 GitHub: https://github.com/jjyaoao/HelloAgents
📚 文档: https://github.com/jjyaoao/HelloAgents/tree/main/docs


🎯 概述

HelloAgents V1.0.0 是一个里程碑版本,标志着框架从教学原型升级为生产级多智能体框架。本版本集成了 16 项核心能力,涵盖工具响应协议、上下文工程、可观测性、会话持久化、子代理机制、异步生命周期、流式输出等完整的工程化支持,为构建复杂智能体应用提供坚实基础。(感谢项目YYHDBL/MyCodeAgent给予的部分实现灵感支持~)

✨ 核心亮点

  • 🏗️ 生产级架构: Function Calling 统一架构,解析成功率 99%+
  • 🔧 16 项核心能力: 从工具协议到异步生命周期的完整工程化支持
  • 🚀 性能优化: Token 成本降低 85%,上下文压缩智能化
  • 🔍 可观测性: 双格式审计日志(JSONL + HTML)
  • 🔄 会话持久化: 断点续跑,异常自动保存
  • 🌐 多 LLM 支持: OpenAI/Anthropic/Gemini 三种适配器
  • 📊 流式输出: SSE 实时响应,支持前端集成
  • 异步架构: 工具并行执行,生命周期钩子

🔧 安装与升级

新安装

# 基础安装
pip install hello-agents>=1.0.0

# 完整安装(包含所有可选依赖)
pip install hello-agents[all]

从旧版本升级

# 升级到最新版本
pip install --upgrade hello-agents

# 指定版本
pip install hello-agents==1.0.0

验证安装

import hello_agents
print(hello_agents.__version__)  # 应输出: 1.0.0

🆕 核心特性

阶段 1:基础设施

1. 工具响应协议(ToolResponse)

问题: 旧版本工具返回纯字符串,状态不明确,错误处理依赖正则解析

解决方案: 统一 ToolResponse 协议

from hello_agents.tools import ToolResponse, ToolStatus, ToolErrorCode

# 成功响应
return ToolResponse.success(
    text="计算结果: 5",
    data={"result": 5, "expression": "2+3"},
    stats={"time_ms": 10}
)

# 部分成功(截断、回退)
return ToolResponse.partial(
    text="结果已截断...",
    error_code=ToolErrorCode.TRUNCATED,
    data={"full_path": "tool-output/xxx.json"}
)

# 错误响应
return ToolResponse.error(
    text="文件不存在",
    error_code=ToolErrorCode.NOT_FOUND
)

收益:

  • ✅ 三种状态:SUCCESS / PARTIAL / ERROR
  • ✅ 15 种标准错误码
  • ✅ 结构化数据传递
  • ✅ 自动时间统计

2. 上下文工程(Context Engineering)

问题: 长对话无限增长导致爆窗、Token 成本爆炸、缓存失效

解决方案: HistoryManager + TokenCounter + ObservationTruncator

from hello_agents import ReActAgent, HelloAgentsLLM, Config

# 配置上下文工程
config = Config(
    context_window=128000,           # 上下文窗口
    compression_threshold=0.8,       # 80% 时触发压缩
    min_retain_rounds=10,            # 保留最近 10 轮
    enable_smart_compression=False,  # 简单摘要(默认)
    tool_output_max_lines=2000,      # 工具输出截断
    tool_output_max_bytes=51200      # 50KB
)

agent = ReActAgent("assistant", HelloAgentsLLM(), config=config)

收益:

  • ✅ 自动历史压缩(summary + 最近 N 轮)
  • ✅ 缓存友好设计(只追加,不编辑)
  • ✅ Token 计数优化(O(n) → O(1))
  • ✅ 工具输出统一截断
  • ✅ 智能摘要生成(可选)

阶段 2:核心能力

3. 可观测性(TraceLogger)

问题: 无法追踪 Agent 执行轨迹,调试困难

解决方案: 双格式审计日志(JSONL + HTML)

from hello_agents import ReActAgent, HelloAgentsLLM, Config

# 启用 TraceLogger(默认启用)
config = Config(
    trace_enabled=True,
    trace_output_dir="memory/traces"
)

agent = ReActAgent("assistant", HelloAgentsLLM(), config=config)
agent.run("分析项目结构")

# 查看日志
# - memory/traces/trace-20250221-103045.jsonl(机器可读)
# - memory/traces/trace-20250221-103045.html(人类可读)

收益:

  • ✅ 实时流式追加
  • ✅ 自动脱敏(API Key、路径)
  • ✅ 内置统计(Token、工具调用、错误)
  • ✅ 可视化界面(HTML 交互式面板)

4. 熔断器(CircuitBreaker)

问题: 工具连续失败导致资源浪费

解决方案: 自动熔断机制,连续失败 3 次自动禁用工具,5 分钟后恢复

收益:

  • ✅ Token 成本节省 97%(3 次失败 vs 无限重试)
  • ✅ 自动监控工具执行
  • ✅ 定时自动恢复
  • ✅ 零配置开箱即用

📖 详细文档: circuit-breaker-guide.md


5. 会话持久化(SessionStore)

问题: 会话仅存在内存,崩溃即丢失

解决方案: 完整的会话保存/恢复机制

收益:

  • ✅ 断点续跑(长时间任务)
  • ✅ 异常自动保存(Ctrl+C / Exception)
  • ✅ 环境一致性检查(配置、工具 Schema)
  • ✅ Read 工具缓存集成(支持乐观锁)

📖 详细文档: session-persistence-guide.md


阶段 3:增强能力

6. 子代理机制(SubAgent)

问题: 复杂任务难以分解,上下文混乱

解决方案: 主子 Agent 协作,上下文隔离

核心特性:

  • ✅ 所有 Agent 类型都可作为子代理(react/reflection/plan/simple)
  • ✅ 工具过滤(ReadOnly/FullAccess/Custom)
  • ✅ 轻量模型路由(子任务用 DeepSeek,节省 70% 成本)
  • ✅ TaskTool 零配置集成

📖 详细文档: subagent-guide.md


7. Skills 知识外化

问题: 领域知识硬编码在系统提示词,Token 成本高

解决方案: 渐进式披露机制

核心特性:

  • ✅ 启动时仅加载元数据(~100 tokens/skill)
  • ✅ 按需加载完整技能(~2000+ tokens)
  • ✅ 人类可编辑(Markdown 格式)
  • ✅ 零配置(检测 skills/ 目录自动激活)

收益: Token 成本降低 85%(40K → 6K)

📖 详细文档: skills-usage-guide.md


8. 乐观锁机制(Optimistic Locking)

问题: 多 Agent 协作时文件冲突

解决方案: Read 时缓存元数据,Write/Edit 时检测冲突

核心特性:

  • ✅ 4 个文件工具(Read/Write/Edit/MultiEdit)
  • ✅ 自动冲突检测(基于 mtime)
  • ✅ 自动备份机制(.backups/)
  • ✅ 原子写入保证

📖 详细文档: file_tools.md


9. TodoWrite 进度管理

问题: 任务状态通过对话历史跟踪,易遗漏

解决方案: 结构化任务列表管理

核心特性:

  • ✅ 单线程强制(最多 1 个 in_progress)
  • ✅ 自动 Recap 生成([2/5] 进行中: xxx
  • ✅ 持久化支持断点恢复
  • ✅ 零配置集成

📖 详细文档: todowrite-usage-guide.md


阶段 4:辅助功能

10. DevLog 开发日志

问题: Agent 决策过程不透明

解决方案: 结构化开发日志工具

核心特性:

  • ✅ 7 种类别(decision/progress/issue/solution/refactor/test/performance)
  • ✅ 持久化到 memory/devlogs/
  • ✅ 支持过滤查询
  • ✅ Agent 可用工具

📖 详细文档: devlog-guide.md


11. 异步生命周期

问题: 同步执行效率低

解决方案: 完整的异步支持

核心特性:

  • arun() / arun_stream() 异步方法
  • ✅ 工具并行执行(用户工具并行,内置工具串行)
  • ✅ 生命周期钩子(on_start/on_step/on_tool_call/on_finish/on_error)
  • ✅ 向后兼容(现有 run() 方法不变)

📖 详细文档: async-agent-guide.md


阶段 5:核心架构重构

12. 流式输出与 SSE

问题: 长时间等待,用户体验差

解决方案: 真正的异步流式输出

核心特性:

  • ✅ 使用 AsyncOpenAI 原生客户端
  • ✅ SSE 标准协议(兼容浏览器 EventSource)
  • ✅ 8 种事件类型(AGENT_START/STEP_START/TOOL_CALL/LLM_CHUNK 等)
  • ✅ FastAPI 集成示例

性能提升: 首字节时间从 15 秒降低到 1.3 秒(11.7 倍

📖 详细文档: streaming-sse-guide.md


13-14. Function Calling 统一架构

问题: ReActAgent 使用正则解析,成功率 85-90%

解决方案: 所有 Agent 类型统一使用 Function Calling

核心成果:

  • ✅ LLM 基类重构(invoke_with_tools() 统一接口)
  • ✅ 3 种适配器(OpenAI/Anthropic/Gemini)
  • ✅ 4 个 Agent 完整重构(ReAct/Simple/Reflection/Plan)
  • ✅ 解析成功率提升到 99%+

📖 详细文档: function-calling-architecture.md


15. 日志系统(四种范式)

问题: 日志系统混乱,难以调试

解决方案: 分层日志设计

四种范式:

  1. TraceLogger - 生产审计轨迹(JSONL + HTML)
  2. AgentLogger - 开发日志(结构化,轮转)
  3. DevLogTool - 开发决策记录(Agent 可用)
  4. 标准 logging - 框架内部日志

📖 详细文档: logging-system-guide.md


16. 自定义工具扩展

问题: 用户不知道如何创建自定义工具

解决方案: 完整的扩展机制 + 文档 + 模板

三种实现方式:

  1. 函数式工具(最简单)- registry.register_function(my_func)
  2. 标准工具类(推荐)- 继承 Tool 基类
  3. 可展开工具(高级)- @tool_action 装饰器

📖 详细文档: custom_tools_guide.md


主要变更

  1. 工具返回值: strToolResponse 对象
  2. Agent 架构: 正则解析 → Function Calling

向后兼容

  • ✅ 函数工具自动包装为新协议
  • ✅ 现有 run() 方法完全不变
  • ✅ 配置项可选(默认启用,可禁用)

📚 迁移指南

从 v0.x 迁移到 v1.0.0

1. 更新工具实现

# 旧版本
def my_tool(input: str) -> str:
    return "结果"

# 新版本
from hello_agents.tools import Tool, ToolResponse

class MyTool(Tool):
    def run(self, parameters):
        return ToolResponse.success(text="结果")

2. 更新 Agent 创建

# 旧版本和新版本完全相同
agent = ReActAgent("assistant", llm, tool_registry=registry)

3. 启用新特性

from hello_agents import Config

config = Config(
    trace_enabled=True,           # 可观测性
    session_enabled=True,         # 会话持久化
    subagent_enabled=True,        # 子代理
    skills_enabled=True,          # Skills
    todowrite_enabled=True        # TodoWrite
)

🎉 致谢与展望

致谢

感谢所有贡献者和学习者的支持,V1.0.0 的完成离不开社区的反馈和建议。