AgentByAgent 是一个基于 Model Context Protocol (MCP) 的自进化动态工具代理系统。它允许 AI Agent 根据任务需求自主创建、集成和管理工具,实现真正的"最小化预定义,最大化自进化"。
- 🔧 动态工具加载:实时监控工具目录,自动发现和加载新工具
- 🔒 环境隔离:每个工具在独立的 Python 虚拟环境中运行,避免依赖冲突
- ⚡ 智能缓存:只在工具调用时重新加载相关工具,提高性能
- 🔄 自动发现:支持 GitHub 搜索和 AI 增强的网络搜索
- 📊 变更追踪:实时检测工具变更并记录详细差异
- 🛡️ 错误隔离:工具错误不会影响主服务器稳定性
- 🌐 实时通信:基于 SSE 协议的实时工具更新推送
graph TB
A[AI Agent] --> B[Dynamic MCP Server]
B --> C[Tool Loader]
B --> D[Environment Manager]
B --> E[Proxy Manager]
B --> F[Change Manager]
C --> G[tools/]
D --> H[Virtual Environments]
E --> I[Tool Proxies]
F --> J[Change History]
G --> K[Tool 1]
G --> L[Tool 2]
G --> M[Tool N...]
- Python 3.8+
- pip
git clone https://github.com/your-username/AgentByAgent.git
cd AgentByAgentpip install -r requirements.txt编辑 config.json 文件:
{
"openai": {
"api_key": "your-openai-api-key",
"base_url": "https://api.openai.com/v1/"
},
"agent": {
"api_key": "",
"base_url": "https://api.anthropic.com",
"model": "claude-sonnet-4-20250514"
}
}npx @playwright/mcp@latest --port 8931python dynamic_mcp_server.pypython agent_demo_tool_calling.py- 协议:SSE (Server-Sent Events)
- 地址:
http://127.0.0.1:3002/sse/ - 工具目录:
./tools/
| 工具名称 | 功能描述 | 应用场景 |
|---|---|---|
search_github |
搜索 GitHub Python 项目 | 发现开源库和 API |
advanced_web_search |
AI 增强的网络搜索 | 获取最新技术信息 |
create_tool_environment |
创建新工具环境 | 快速搭建工具开发环境 |
get_tools_changes |
获取工具变更信息 | 监控工具更新 |
refresh_tools |
手动刷新工具目录 | 强制重新加载工具 |
# 使用内置工具创建新工具环境
create_tool_environment(
tool_name="stock_price_checker",
requirements=["yfinance", "requests"],
template_content="""
def get_stock_price(symbol: str) -> float:
'''获取股票实时价格'''
import yfinance as yf
stock = yf.Ticker(symbol)
return stock.history(period="1d")['Close'].iloc[-1]
"""
)- 任务分析:Agent 分析任务需求,判断是否需要新工具
- 解决方案搜索:使用
search_github和advanced_web_search寻找合适的库 - 环境创建:使用
create_tool_environment创建新工具 - 自动集成:系统自动发现并加载新工具
- 任务执行:使用新创建的工具完成任务
任务:下载数据集,用四种sklearn包中的ML模型进行回归任务的预测,其中 antibody_seq_a 是重链,antibody_seq_b 是轻链,antigen_seq 是靶点序列,delta_g是预测目标,按照8:1:1划分数据集,给出合理好看的结果图。
任务:写一个工具, 用该工具 调用PyMOL API 从 https://www.rcsb.org/ 下载 PDB 1ADQ,使用自己写的函数自动识别重链/轻链,上色并渲染抗体及抗原,最终导出高分辨率 PNG, 开头设无GUI。电脑已经安装了pymol可执行文件,你可以直接调用运行.pml。
**任务:**用rdkit生成一个阿司匹林分子的初始构象,用xTB(xtb-gfn0)工具做恒温分子动力学模拟,利用好多线程OMP_NUM_THREADS,温度300K,总时间10ps,使用恒温系综,根据最终生成的.trj文件用pymol保存一个分子动力学的gif图片。电脑已经安装了pymol可执行文件,你可以直接调用运行,xtb通过/Users/admin/miniconda3/envs/mat/bin/xtb调用
AgentByAgent/
├── 📄 README.md # 项目文档
├── ⚙️ config.json # 配置文件
├── 📦 requirements.txt # Python 依赖
├── 🚀 dynamic_mcp_server.py # 主服务器
├── 🤖 agent_demo_tool_calling.py # Agent 演示
├── 📋 system_prompt.md # 系统提示词
└── 🛠️ tools/ # 工具目录
├── 🔧 tool_env_manager.py # 环境管理器
├── 🔄 tool_proxy.py # 工具代理管理器
├── ⚡ tool_execution_script.py # 工具执行脚本
├── 📂 tool_loader_script.py # 工具加载脚本
├── 📝 logger_config.py # 日志配置
└── 🔨 json_patch.py # JSON 补丁工具
动态工具加载器,负责扫描工具目录、管理虚拟环境并注册工具。
环境管理器,为每个工具创建独立的 Python 虚拟环境,避免依赖冲突。
代理管理器,处理跨进程通信和工具执行代理。
变更管理器,检测工具的增删改操作并维护变更历史。
我们欢迎所有形式的贡献!请阅读以下指南:
- Fork 这个仓库
- 创建你的特性分支:
git checkout -b feature/amazing-feature - 提交你的更改:
git commit -m 'Add some amazing feature' - 推送到分支:
git push origin feature/amazing-feature - 打开一个 Pull Request
- 遵循 PEP 8 Python 代码规范
- 为新功能添加测试
- 更新相关文档
本项目基于 MIT 许可证开源 - 查看 LICENSE 文件了解详情。