Skip to main content

A self-evolving AI agent with dynamic toolkit management

Project description

TeaAgent

TeaAgent 是一个自主进化型智能助手,基于 OpenAI 兼容接口的 Function Calling 功能实现。它不仅能够调用预设的工具,还具备动态创建、加载和管理工具的能力,实现能力的自我扩展。

仅仅依赖 python 的 tk 库,非常小巧,当然界面上比不过那些基于浏览器的大家伙 :)

最初的代码框架由豆包辅助生成,手动实现了 toolkit_save 和 toolkit_reload 两个基础工具后,绝大多数代码都是 LLM 生成的,主要使用了 qwen3.6-plus 和 glm-5

警告

本项目未作安全沙盒,建议在虚拟机中执行,起始也不会闯什么大祸,当然你需要明白在做啥!!!

核心特性

  • 自主进化 (Self-Evolution): 智能体可以根据任务需求,自动编写 Python 代码并调用 toolkit_save 创建新工具,随后通过 toolkit_reload 立即获得新能力。
  • 动态工具库 (Dynamic Toolkit): 支持工具的热加载与卸载,所有工具均以独立的 Python 文件形式存储在 toolkit 目录中。
  • 双模型架构 (Dual-Model Architecture): 支持主模型与廉价模型配置。主模型(如 GLM-5, Qwen)负责核心对话与工具调用,廉价模型(如轻量级模型)专用于摘要提取、信息压缩等高频低成本任务,显著优化 API 调用费用。
  • DeepSeek 推理模型兼容: 完整支持 DeepSeek 推理模型的 reasoning_content 处理,自动管理思维链的生命周期(会话内回传、跨会话清除),避免 400 错误。
  • YAML 配置系统: 支持通过 $HOME/.tea_agent/config.yaml 灵活配置模型参数,优先使用该配置,未找到时回退到 tea_agent/config.yaml(本地 ollama 部署)。
  • 流式对话与思考过程: 支持流式输出,并可选展示模型的思考过程(Thinking Process)。
  • GUI 交互界面: 提供基于 Tkinter 的图形界面,支持多主题管理、自动对话摘要、历史记录查询及工具状态实时监控。
  • 工具版本管理: 支持工具的热更新、版本回滚(toolkit_rollback)和历史版本查看(toolkit_list_versions)。
  • 持久化存储 (Persistent Storage): 所有对话及主题均保存在 SQLite 数据库中,支持历史记录查询, 数据库存储在 $HOME/.tea_agent/ 下,自动创建的工具保存在 toolkit 目录中。

快速开始

环境要求

  • Python 3.10+
  • OpenAI 兼容的 API 密钥(如 DeepSeek, Qwen, GLM 等)
  • tkinter 包 (通常随 Python 自带)

安装依赖

pip install -e .

运行

通过配置文件启动。优先使用 $HOME/.tea_agent/config.yaml,若不存在则回退到 tea_agent/config.yaml(预配置为本地 ollama 部署)。

python -m tea_agent.main_db_gui

项目结构

  • tea_agent/: 核心包目录
    • config.py: YAML 配置加载器 (ModelConfig/AgentConfig),支持主模型与廉价模型配置。
    • basesession.py: 聊天会话抽象基类 BaseChatSession,含 reasoning_content 清除逻辑。
    • onlinesession.py: OnlineToolSession 主类,组合各 mixin,编排对话流程。
    • session_summarizer.py: 历史摘要、Topic 摘要、消息压缩,含 _call_summarize_api 统一入口(显式禁用 thinking)。
    • session_tool.py: 工具执行、rounds 收集、工具调用解析。
    • session_api.py: API 调用、流式响应处理、thinking 检测(主/便宜模型分别记录)、token 统计(双模型独立)。
    • session_prompts.py: Prompt 模板常量。
    • session_pipeline.py: 插件化 Pipeline 架构,步骤可配置、可跳过。
    • store.py: 基于 SQLite 的持久化存储(对话历史、主题),含摘要跟踪字段。
    • tlk.py: 工具库 (Toolkit) 的加载、校验与保存逻辑。
    • toolkit/: 存放动态生成的工具函数 (.py 文件)。
    • main_db_gui.py: 基于 Tkinter 的 GUI 实现。

配置

支持通过 $HOME/.tea_agent/config.yaml 进行详细配置。若该文件不存在,将回退到 tea_agent/config.yaml(本地 ollama 配置)。

main_model:
  api_key: "your_main_model_api_key"
  api_url: "https://api.deepseek.com/v1"
  model_name: "deepseek-chat"

cheap_model:
  api_key: "your_cheap_model_api_key"
  api_url: "https://api.deepseek.com/v1"
  model_name: "deepseek-chat"

# 会话参数
max_history: 10          # 最大历史消息数
max_iterations: 50       # 最大工具调用迭代次数
enable_thinking: true    # 是否启用 thinking 功能

# Token 优化参数
keep_turns: 5            # 保留最近 N 轮完整对话,更早的自动摘要
max_tool_output: 131072  # 工具输出截断字符数 (128KB)
max_assistant_content: 131072  # 助手回复截断字符数 (128KB)

配置项说明

  • main_model: 主任务模型配置(用于核心对话、代码生成等)。
  • cheap_model: 低成本模型配置(用于摘要生成、信息压缩等场景)。摘要调用会自动禁用 thinking,避免浪费 reasoning tokens。
  • keep_turns: 保留最近 N 轮完整对话,超过此数量的旧对话会通过 cheap_model 自动摘要压缩(默认 5 轮)。
  • enable_thinking: 是否为主模型启用 thinking 模式(DeepSeek 推理模型的思维链展示)。

使用示例:

  1. 去年12月26号到今天过去多少天了? 一般来说,会自动创建一个工具函数用于获取当前时间,然后在计算间隔的天数

  2. 创建一个 powershell 脚本,获取我的公网 ip,然后将该 ip 地址通过邮件发送到 sunkwei@gmail.com,测试成功后,将脚本加到windows计划任务,每天执行一次 需要提供你的 smtp,然后大模型都能轻松搞定

  3. 字体太小了, 将输入框和 html render 窗口字体改为 14 号, 并且将字体替换为开源字体, 支持无衬中文. 然后巴拉巴拉就搞定了, 重启, 就能看到效果了.

  4. 好的, 修改 pyproject.toml 将版本号修改为 0.2.3, 然后根据今天修改的内容, 先更新到 CHANGELOG.md 中, 打包测试, 如果成功, 生成一次 git 提交并 push 到远程仓库

  5. 记住,每次修改代码时, 在代码的修改位置增加一条注释, 格式为: "@{date} generated by {model name}, {简单描述}", {date} 通过获取当前系统时间得到, {model name} 为 class OnlineToolSession 使用的模型, 通过配置文件指定, {简单描述} 说明修改的目的和内容

  6. 修改 tea_agent/main_db_gui.py : 1. ctrl+c 打断,改为 ESC 键打断,同时修改界面提示; 2. 当 HtmlFrame 为前台时(render 完成), 按 ctrl+= 放大 HtmlFrame 中的内容,ctrl+- 缩小. 搞定后修改版本,生成 git 提交

模型测试

  • 本地通过 ollama 部署 gemma4:26b 测试效果也不错,完成了修改 tea_agent/config.py 的任务
  • 在线模型:
    • deepseek-chat (reasoning), glm-5, qwen3.6-plus 都很靠谱,都能完成代码修改任务

开源协议

MIT License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tea_agent-0.3.3.tar.gz (70.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tea_agent-0.3.3-py3-none-any.whl (85.2 kB view details)

Uploaded Python 3

File details

Details for the file tea_agent-0.3.3.tar.gz.

File metadata

  • Download URL: tea_agent-0.3.3.tar.gz
  • Upload date:
  • Size: 70.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for tea_agent-0.3.3.tar.gz
Algorithm Hash digest
SHA256 2982f25c16e3568856d1453b8441c1d2e0152b2b99d88470ac77177070f20667
MD5 105d5b32edec99ec35ba9379a35777db
BLAKE2b-256 567772e1747558a9ca892654ee7313ca394d4a665d3f42dd3d77a4781f58b3cb

See more details on using hashes here.

File details

Details for the file tea_agent-0.3.3-py3-none-any.whl.

File metadata

  • Download URL: tea_agent-0.3.3-py3-none-any.whl
  • Upload date:
  • Size: 85.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for tea_agent-0.3.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ecf064671b2d7e0eed33f530bad1dad6594c62e59a3eb7911e9745f94c5819e3
MD5 87a504d9e6270ae8ded23c39904fe872
BLAKE2b-256 860349150c7c63b2784dcf3fd932b186a0444b9b681795bb63cf81c4e6d90e9c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page