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目录中。 - 长期记忆 (Long-term Memory): 集成了 LLM 驱动的记忆提取机制,能从对话中自动识别并提取用户偏好、技术决策、事实等有价值的信息,并进行持久化存储。
- 流式对话与思考过程: 支持流式输出,并可选展示模型的思考过程(Thinking Process)。
- GUI 交互界面: 提供基于 Tkinter 的图形界面,支持多主题管理、历史记录查询及工具状态实时监控。
- 持久化存储 (Persistent Storage): 所有对话、记忆及主题均保存在 SQLite 数据库中,支持历史记录查询, 数据库存储在 $HOME/.tea_agent/ 下,自动创建的工具保存在
toolkit目录中。
- Python 3.10+
- OpenAI 兼容的 API 密钥(如 Qwen, GLM 等)
pip install -e .export TEA_AGENT_API=<YOUR API KEY>
export TEA_AGENT_URL=<YOUR API URL>
export TEA_AGENT_MODEL=<YOUR MODEL NAME>
python -m tea_agent.main_db_gui maintea_agent/: 核心包目录onlinesession.py: 处理 LLM 对话流、工具调用循环及流式输出。memory.py: 记忆提取与管理逻辑。store.py: 基于 SQLite 的持久化存储(对话历史、记忆、主题)。tlk.py: 工具库 (Toolkit) 的加载、校验与保存逻辑。toolkit/: 存放动态生成的工具函数 (.py 文件)。main_db_gui.py: 基于 Tkinter 的 GUI 实现。
三个环境变量
- TEA_AGENT_API=YOUR API KEY
- TEA_AGENT_URL=YOUR API URL
- TEA_AGENT_MODEL=YOUR MODEL NAME
-
去年12月26号到今天过去多少天了? 一般来说,会自动创建一个工具函数用于获取当前时间,然后在计算间隔的天数
-
创建一个 powershell 脚本,获取我的公网 ip,然后将该 ip 地址通过邮件发送到 sunkwei@gmail.com,测试成功后,将脚本加到windows计划任务,每天执行一次 需要提供你的 smtp,然后大模型都能轻松搞定
-
字体太小了, 将输入框和 html render 窗口字体改为 14 号, 并且将字体替换为开源字体, 支持无衬中文. 然后巴拉巴拉就搞定了, 重启, 就能看到效果了.
-
好的, 修改 pyproject.toml 将版本号修改为 0.2.3, 然后根据今天修改的内容, 先更新到 CHANGELOG.md 中, 打包测试, 如果成功, 生成一次 git 提交并 push 到远程仓库
-
记住,每次修改代码时, 在代码的修改位置增加一条注释, 格式为: "@{date} generated by {model name}, {简单描述}", {date} 通过获取当前系统时间得到, {model name} 为 class OnlineToolSession 使用的模型, 一般通过环境变量 TEA_AGENT_MODEL 指定, {简单描述} 说明修改的目的和内容
-
修改 tea_agent/main_db_gui.py : 1. ctrl+c 打断,改为 ESC 键打断,同时修改界面提示; 2. 当 HtmlFrame 为前台时(render 完成), 按 ctrl+= 放大 HtmlFrame 中的内容,ctrl+- 缩小. 搞定后修改版本,生成 git 提交
MIT License