A self-evolving AI agent with dynamic toolkit management.
Project description
Tea Agent v0.13.15
⚠️ AI 写 AI 的实验项目,自行承担责任。
会自我进化的 AI 编程助手 — 不只是完成编码任务,还能修改自己的代码、创造新工具、优化自己的提示词,越用越强。
🎯 一句话看懂 Tea Agent
| 🧠 自进化 | AI 写 AI —— 能改自己的代码、造新工具、优化提示词,任务越多越强 |
| 🧰 工具驱动 | 75+ 内置工具(文件/代码/搜索/截图/浏览器/包管理/Git),运行时热插拔 |
| 🖥️ 多形态 | GUI / Web V2 / REST API / ACP / Telegram / 微信 六种界面,一套引擎 |
| 🧠 真记忆 | 类人长期记忆:分层优先级、语义检索、自然衰减、去重合并,跨会话不忘 |
| 🤖 多 Agent | 6 阶段全栈协作:角色化 Agent + 事件流 + 消息总线 + 并行执行 + DAG 编排 |
| 📡 远程协同 | toolkit_remote_agent 连接边缘设备(RK3588/BM1688),主机 ↔ 设备协同 |
✨ 核心特点
1. 🧠 自进化引擎(AI 写 AI)— 本项目灵魂
Agent 在运行中改造自己,全程五层安全防护:
toolkit_save → 运行时创建/更新工具,即时生效,自动版本管理
toolkit_self_evolve → 五层安全修改源码:Git 快照 → .bak → 语法检查 → 编译 → LSP → 测试
toolkit_prompt_evolve → 基于反思 + 记忆,自我优化系统提示词
toolkit_experience_solidify → 成功→技能,失败→教训,自动结晶复用
⚠️ 上下文感知:自进化能力只在 tea_agent 自身项目内激活;在外部项目中自动禁用,专注完成你的任务,不做有害改动。
2. 🧰 工具驱动 — 75+ 内置工具
| 类别 | 代表工具 |
|---|---|
| 📁 文件 / 代码 | toolkit_file, toolkit_edit, toolkit_diff, toolkit_code_review, toolkit_format_code |
| 🔍 搜索 / 智能 | toolkit_search, toolkit_lsp, toolkit_explr, toolkit_query_chat_history |
| 🖥️ 屏幕 / 浏览器 | toolkit_screenshot, toolkit_ocr, toolkit_input, toolkit_js_fetch, toolkit_browser_tab |
| 🧠 记忆 / 反思 | toolkit_memory, toolkit_kb, toolkit_reflection, toolkit_proactive |
| 🤖 多 Agent | toolkit_parallel_subtasks, toolkit_subagent, toolkit_subagent_msg, toolkit_remote_agent |
| 📋 规划 / 调度 | toolkit_plan, toolkit_todo, toolkit_scheduler, toolkit_task_resume |
| 🔧 系统 / 工程 | toolkit_exec, toolkit_pkg, toolkit_build, toolkit_git_commit, toolkit_config |
工具引擎(tlk.py)支持动态加载/卸载/重载 — 对话中创建一个新工具,下一轮就能用。
3. 🧠 类人长期记忆系统
模拟人类记忆的工作方式,底层 SQLite + 语义向量:
- 优先级分层:
CRITICAL / HIGH / MEDIUM / LOW,关键指令优先注入 - 语义检索:embedding 余弦相似度,从 ≤30 条活跃记忆中选最相关
- 自然衰减:Ebbinghaus 遗忘曲线,旧记忆逐步降级,
pinned豁免 - 去重合并:Jaccard + embedding 双通道,相似记忆自动合并提权
- 跨主题汇总(v0.13.3+):每 3 轮后台分析,发现跨会话模式
4. 🤖 多 Agent 系统(v0.11+)
6 阶段全栈协作框架:
RoleAgent(角色化) + FlowEngine(事件流) + MessageBus(消息总线)
+ Agent-as-Tool(Agent 即工具) + ExecutionPool(并行执行)
+ WorkflowDAG(DAG 编排) + PatternMarket(模式市场) + TraceEngine(调用追踪)
零代码触发:对话中直接说「并行分析这几个文件」,自动拆分子任务并发执行。内置双 AI 辩论赛 Demo,左右分屏实时交锋。
5. 📡 远程设备 Agent(v0.13.10+)
通过 toolkit_remote_agent 连接边缘设备上的 tea_agent.server:
register → exec(下发任务,session_id 控制上下文) → status(心跳) → unregister
适用于嵌入式调试(RK3588/BM1688/X3)、边缘节点管理、分布式协同。
6. 🏎️ Token 经济 — 四级历史压缩
L0 系统层 → L3 语义摘要 → L2 历史对 → L1 当前对话 四级组装上下文,在有限 token 窗口内最大化信息密度,长对话不爆上下文。
🚀 30 秒快速开始
# 1. 安装
pip install tea_agent
# 2. 启动(Web V2 全功能界面)
tea-agent-api
# 或 python -m tea_agent.server
# 3. 打开浏览器
# http://127.0.0.1:8282
首次启动自动弹出配置窗口,填入 LLM API Key 即可对话。
💻 界面形态
| 界面 | 启动方式 | 适用场景 |
|---|---|---|
| Web V2(推荐) | tea-agent-api |
单页应用 SPA,全功能浏览器体验:聊天 + 记忆 + 调度 + 历史 |
| GUI 桌面 | tea-agent-gui |
Tkinter 原生桌面窗口,离线可用 |
| REST API | python -m tea_agent.server --port 8081 |
OpenAI 兼容接口,第三方集成 |
| ACP 协议 | tea-agent-acp |
VS Code / IDE 集成(JSON-RPC 2.0) |
| Telegram | tea-agent-telegram |
手机远程对话 |
| 微信 | tea-agent-wechat |
微信个人号接入(iLink Bot,扫码登录) |
| Mini 版 | tea-agent-mini |
嵌入式 / Docker / 低配 VPS |
🗺️ 深度能力地图
想深入了解某一项?展开对应章节。
🧠 长期记忆系统 — 工作原理
存储结构:每条记忆含 content / priority(0-3) / importance(1-5) / category / tags / embedding / expires_at / pinned。
选择算法(每次对话注入 ≤30 条):
score = 关键词相关性 × 重要度 × 时效因子 × 优先级因子
分层保底:CRITICAL 优先(上限 10)→ HIGH ≥3 → MEDIUM ≥2 → LOW ≥1 → 剩余按分竞争。
年龄衰减(Ebbinghaus):CRITICAL>30天→HIGH,HIGH>60天→MEDIUM,MEDIUM>90天→LOW。
提取分类:instruction→CRITICAL、preference/reminder→HIGH、fact→MEDIUM、general→LOW,LLM 自动提取 + 4 级容错解析。
去重合并:Jaccard ≥0.6 合并(保留长内容、低优先级、高重要度);embedding 余弦 ≥0.92 批量去重。
CRITICAL FIFO:上限 30 条,超出软删除最旧,防指令记忆膨胀。
📜 四级历史压缩 — Token 效率
L0 系统层 系统提示词 + 任务恢复 + 记忆注入
L3 语义摘要 L2 溢出时 LLM 生成关键结论(50→20 裁剪)
L2 历史对 SQLite 环形缓冲(50 条),Jaccard 相关性筛选注入
L1 当前对话 128KB 截断 + 旧工具输出占位 + 5 级渐进裁剪
# L0 组装顺序
result.append({"role": "system", "content": system_prompt})
if has_pending_tasks:
result.append({"role": "user", "content": resume_info})
if memories:
result.append({"role": "user", "content": memories})
L3 注入格式([System Memory] 区)包含长期背景/偏好/关键结论 + 历史工具链回顾两块。
🔄 自进化引擎 — 安全机制
修改自身代码时五层防护,任一层失败自动回滚:
Layer 0 Git 快照(仅工作区干净时)
Layer 1 时间戳 .bak(永不覆盖)
Layer 1.5 语法严格检查(换行/缩进/括号/冒号)
Layer 2 py_compile 编译验证 → 失败回滚
Layer 2.5 LSP 智能检查(影响分析 + lint 对比 + 签名对比)
Layer 3 pytest 测试验证 → 失败 git reset --hard
| 能力 | 工具 | 安全 |
|---|---|---|
| 创建新工具 | toolkit_save + toolkit_reload |
版本回滚 |
| 修改源码 | toolkit_self_evolve |
五层安全 |
| 优化提示词 | toolkit_prompt_evolve |
版本回滚 |
| 固化经验 | toolkit_experience_solidify |
分类标签 |
| 代码智能 | toolkit_lsp |
只读 |
🤖 多 Agent — 核心组件
四种协作方式:
| 方式 | 说明 |
|---|---|
| FlowEngine | 事件驱动流:@flow_start / @flow_listen / @flow_route,Mermaid 可视化 |
| Agent-as-Tool | 把子 Agent 包装成 toolkit_xxx,对话中直接调用 |
| MessageBus | 发布/订阅 + 点对点,Agent 间自由通信 |
| ExecutionPool | 线程池并行执行,批量 + 超时 + 状态查询 |
WorkflowDAG 节点:TASK / CONDITION / LOOP / PARALLEL / WAIT / END 六种类型,静态编排复杂流程。
内置模式市场(4 个预制):代码审查专家 / 高级工程师 / 测试工程师 / 分析专家,一键实例化。
✅ 优势:并行快、专注高、可组合、可观测、零代码触发 ⚠️ 限制:Token 成本高(子任务×每任务)、协调开销、上下文隔离、并发改文件需串行化
📡 远程设备 Agent — 使用示例
# ① 注册设备
toolkit_remote_agent(action="register", device_id="bm1688-1",
host="172.16.1.49", port=8282, working_path="/app/zkfs/")
# ② 下发任务(不传 session_id → 自动新建远程主题)
r = toolkit_remote_agent(action="exec", device_id="terminal-49",
goal="分析 /record/dbs/log/ 今日日志")
# ③ 同一 session_id → 追加上下文继续对话
r2 = toolkit_remote_agent(action="exec", device_id="terminal-49",
goal="继续排查网络问题", session_id=r["session_id"])
# ④ 任务完成 → 断开
toolkit_remote_agent(action="unregister", device_id="terminal-49")
📦 Mini 版(tea_agent_mini)
针对嵌入式设备 / 资源受限 / 仅需 Web 场景的瘦身版 —— 只依赖 7 个核心包(~5 MB vs Full 版 ~80 MB),保留 Agent 核心、Web V2、REST API、记忆、多 Agent 全部能力。
pip install tea_agent_mini # 独立包
python build_mini.py # 或从源码构建
python build_nuitka.py # 或编译为单文件可执行文件(无需 Python 环境)
| 剔除内容 | 说明 |
|---|---|
| GUI / ACP / Telegram | 桌面与协议层 |
| NumPy 向量 | 替换为纯 Python math+struct |
| Playwright / PyAutoGUI / MSS | 可选自行安装 |
| 12 个重型工具 | JS 渲染、截图、OCR、LSP 等按需启用 |
🔧 配置
配置文件 ~/.tea_agent/config.yaml:
main_model:
api_key: "sk-xxx"
api_url: "https://api.openai.com/v1"
model_name: "gpt-4o"
max_context_tokens: 0 # 0=不限制,>0 启用渐进式 token 裁剪
cheap_model: # 独立配置,用于摘要/记忆等廉价任务
max_context_tokens: 0
embedding:
provider: openai
model: text-embedding-3-small
- 上下文窗口控制:
max_context_tokens超预算时按 5 级渐进裁剪(删旧历史 → 工具输出占位 → 清 thinking → 截长文 → 删旧轮) - 运行时调优:Agent 可用
toolkit_config自主调整参数 - Ruff 规范:内置
pyproject.tomlRuff 配置(E/F/W/I/N/UP/B/C4/SIM),Python 3.10 类型注解
🧪 测试
pytest # 全部单元测试(870+ 用例)
python tests/test_server_api.py --port 8282 # Server API 黑盒测试(8 套件 30+ 测试点)
测试覆盖:会话、工具、存储、多 Agent、LSP、ACP 协议、Server 路由、记忆系统。
🏗️ 项目结构
tea_agent/
├── agent.py # Agent 统一入口
├── onlinesession.py # 在线会话(工具循环 + 流式)
├── litesession.py # 轻量会话
├── tlk.py # 工具加载/注册/执行引擎(75+ 工具)
├── memory.py # 长期记忆系统
├── config.py # 配置管理
├── providers.py # 50+ LLM 提供商适配
├── server/ # REST API + Web V2(Starlette + SSE)
├── protocol/ # ACP 协议
├── channel/ # Telegram / 微信适配器
├── toolkit/ # 75+ 工具模块
├── session/ # 历史压缩 / L1/L2/L3 / JSON 校验
├── store/ # 数据存储(10 子模块)
├── multi_agent/ # 多 Agent 系统
├── lsp/ # 代码智能(Jedi + Tree-sitter)
├── skills/ # 技能结晶
├── tests/ # 870+ 测试用例
└── demo/ # 演示应用(辩论赛 / 钢琴 / DAG)
📄 许可证
MIT License © 2024-2026 sunkw
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tea_agent-0.13.15.tar.gz.
File metadata
- Download URL: tea_agent-0.13.15.tar.gz
- Upload date:
- Size: 968.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d2c14fec78c198418aec7ce37c01d7d7ef3350bd3f7f28aee89158da1925220
|
|
| MD5 |
84e6d8089042b050a20673bd89311189
|
|
| BLAKE2b-256 |
a9d6a7231fa944b93bf6ab0364b6fbd89b0b077d535fc838330530a7aada37c4
|
File details
Details for the file tea_agent-0.13.15-py3-none-any.whl.
File metadata
- Download URL: tea_agent-0.13.15-py3-none-any.whl
- Upload date:
- Size: 1.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b02a6abc96b3c81bc7bf05789e2ba5d76e0eb6c5fc04b716552fd1c6da6a7f92
|
|
| MD5 |
edf3f3eee3aa72800ba6692ef0864836
|
|
| BLAKE2b-256 |
92a807eeb91f7f5838a11365d1a29b06e677e1fd529607c1aa426e1a5f0e8cb0
|