基于《Agent Exchange》论文的核心思想,将AI智能体从被动执行的"工具"转变为能够参与市场化选择的"经济参与者"。
AEX实现了一个完整的核心工作流:
- 用户提交自然语言任务
- 系统通过市场选择机制自动挑选最合适的智能体团队
- 真实执行任务并返回结果
AEX/
├── main.py # 主程序入口
├── .env # 环境变量配置
├── hubs_config.json # Hub配置文件
├── requirements.txt # 依赖包
├── cache/ # 缓存目录
│ ├── embeddings/ # 向量嵌入缓存
│ └── capabilities.json # 能力配置缓存
└── src/
├── usp.py # 用户端平台 (User-Side Platform)
├── aex.py # 代理交换平台 (Agent Exchange)
├── agent_hub.py # Agent Hub基类
├── embedding_service.py # 向量嵌入服务
├── capability_mapper.py # 智能能力映射器
└── hubs/
├── content_creation_hub.py # 内容创作团队
├── tech_analysis_hub.py # 技术分析团队
├── test_hub.py # 测试团队
└── ... # 更多Hub(自动发现)
文件: src/usp.py
功能:
- 提供CLI输入接口
- 任务关键词提取和能力映射
- 创建TaskRequest对象
核心类:
UserSidePlatform: 处理用户输入和任务解析TaskRequest: 任务请求数据结构
智能能力映射:
- 动态能力发现: 自动从Hub类中提取能力和描述
- 语义搜索: 使用Jina嵌入模型进行语义理解
- 向量缓存: 自动缓存嵌入向量,提高响应速度
- 关键词备用: 语义搜索失败时自动回退到关键词匹配
工作原理:
- 系统启动时自动扫描
src/hubs/目录下的所有Hub类 - 从每个Hub的
description和get_capabilities()方法提取能力信息 - 动态构建能力描述库,用于语义搜索
- 用户输入任务时,使用语义搜索匹配最相关的能力
映射示例:
# 动态发现的能力(来自实际Hub)
"chemistry_simulation" -> "专注于计算化学模拟和文献挖掘,用于预测化学反应..."
"content_creation" -> "专注于信息研究和高质量内容撰写..."
# 语义搜索示例
"帮我分析市场趋势" -> ["research", "analysis"] (相似度: 0.85)
"写一份技术报告" -> ["writing", "report", "technical"] (相似度: 0.92)文件: src/aex.py
功能:
- 加载和管理Hub配置
- 实现Hub选择算法
- 协调整个工作流程
核心类:
AgentExchange: 核心控制器HubInfo: Hub信息数据结构
选择算法:
# 计算匹配分数
base_score = 交集数量 / 所需能力数量
coverage_bonus = 交集数量 / Hub总能力数量 * 0.3
perfect_match_bonus = 0.2 (如果完全匹配)
final_score = base_score + coverage_bonus + perfect_match_bonus文件: src/embedding_service.py
功能:
- 使用Jina API生成文本向量嵌入
- 自动缓存向量,提高响应速度
- 计算余弦相似度进行语义匹配
- 支持批量处理和异常处理
文件: src/capability_mapper.py
功能:
- 动态发现和加载所有Hub类
- 从Hub描述和能力列表构建能力库
- 使用语义搜索匹配任务需求
- 提供关键词匹配作为备用方案
文件: src/agent_hub.py, src/hubs/
基类: BaseAgentHub
- 定义Hub的抽象接口
- 提供通用的初始化和执行逻辑
- 处理错误和异常
- 支持自动发现和动态加载
具体实现:
- 能力: research, writing, summary, analysis, report
- 成员: 研究员Agent + 作家Agent
- 模式: coordinate (协调执行)
- 工具: DuckDuckGoTools (网络搜索)
- 能力: coding, data_analysis, debugging, optimization, technical
- 成员: 代码分析师Agent + 技术顾问Agent
- 模式: collaborative (协作模式)
- 系统启动时自动扫描
src/hubs/目录 - 动态导入所有继承自
BaseAgentHub的类 - 无需手动注册,添加新Hub文件即可自动识别
graph TD
A[用户输入任务] --> B[USP解析任务]
B --> C[提取关键词]
C --> D[映射到能力]
D --> E[创建TaskRequest]
E --> F[AEX加载Hub配置]
F --> G[计算匹配分数]
G --> H[选择最佳Hub]
H --> I[实例化Hub]
I --> J[执行任务]
J --> K[返回结果]
# OpenRouter API配置
OPENAI_API_KEY=sk-or-v1-xxx # OpenRouter API Key
OPENAI_BASE_URL=https://openrouter.ai/api/v1
OPENAI_MODEL=moonshotai/kimi-k2:free
# Jina嵌入API配置
JINA_API_KEY=jina_xxx # Jina API Key
# AEX配置
USE_SEMANTIC_SEARCH=true # 启用语义搜索[
{
"hub_id": "content_creation_hub",
"name": "内容创作团队",
"description": "专注于信息研究和高质量内容撰写",
"capabilities": ["research", "writing", "summary", "analysis", "report"],
"hub_class": "ContentCreationHub"
}
]pip install -r requirements.txt复制并编辑 .env 文件,填入您的API密钥。
python main.py输入: "请帮我调研一下2025年AI Agent技术的发展趋势,并生成一份总结报告"
匹配: ContentCreationHub (research + writing)
执行: 研究员搜集信息 → 作家撰写报告
输入: "请分析这段Python代码的性能问题并提供优化建议"
匹配: TechAnalysisHub (coding + optimization)
执行: 代码分析师分析 → 技术顾问提供建议
- 在
src/hubs/目录创建新的Python文件,如my_new_hub.py - 创建继承自
BaseAgentHub的类:
from agno.agent import Agent
from agno.team import Team
from agno.models.openai import OpenAIChat
from ..agent_hub import BaseAgentHub
class MyNewHub(BaseAgentHub):
def __init__(self):
super().__init__(
name="我的新团队",
description="专注于特定领域的智能体团队,擅长XXX、YYY和ZZZ"
)
def get_capabilities(self) -> list:
return ["capability1", "capability2", "capability3"]
def setup_team(self) -> Team:
# 创建Agent和Team
# ...
return team- 在
hubs_config.json中添加配置:
{
"hub_id": "my_new_hub",
"name": "我的新团队",
"description": "专注于特定领域的智能体团队",
"capabilities": ["capability1", "capability2", "capability3"],
"hub_class": "MyNewHub"
}- 重启系统,新Hub将自动被发现和加载
- 自动发现: 系统启动时自动扫描
src/hubs/目录 - 动态能力: 从Hub的
description和get_capabilities()自动提取能力 - 语义匹配: 无需手动维护关键词映射,系统自动进行语义匹配
- 即插即用: 添加新Hub文件后重启即可使用,无需修改核心代码
- Python 3.10+
- Agno: AI智能体框架
- OpenRouter: LLM API服务
- Jina AI: 向量嵌入服务
- NumPy: 数值计算和向量操作
- Requests: HTTP请求库
- Rich: 终端UI库
- DuckDuckGo: 网络搜索工具
- 模块化设计: 清晰的组件分离,易于扩展
- 智能语义搜索: 使用Jina嵌入模型进行语义理解
- 向量缓存: 自动缓存嵌入向量,提高响应速度
- 动态Hub发现: 自动扫描和加载新的Agent Hub
- 动态选择: 基于能力匹配的智能Hub选择
- 真实执行: 集成Agno框架,真实执行任务
- 用户友好: Rich库提供美观的CLI界面
- 可配置: JSON配置文件,易于管理Hub
- 添加更多专业化的Hub
- 实现更复杂的选择算法
- 添加任务历史和学习机制
- 支持异步任务执行
- 添加Web界面