返回市场
网格

网格

作者:heurist-network704 星标更新:2025-11-20

项目介绍

Heurist Mesh

mesh-2

🧩 Heurist Mesh 是一个由模块化和专用AI代理组成的开放网络。每个代理都是一个专门处理数据、生成报告或参与对话的单元,同时作为一个智能群体共同解决复杂任务。基于去中心化的计算并由多种开源AI模型驱动,Mesh代理可以组合成强大的工作流,提供成本效益高且高度灵活的解决方案。一旦Mesh代理被添加到这个Github主分支中,它就会自动部署并通过REST API和MCP即时可用。

使用Mesh代理

[!NOTE] 如需详细的API文档,包括同步和异步使用的示例,请参阅官方Heurist Mesh文档

托管在Heurist上的Mesh代理可以通过两个接口访问:

  • 同步API - 对于快速查询和操作,提供直接即时响应
  • 异步API - 适用于长时间运行的任务或需要跟踪推理过程的情况

要使用任何Mesh代理,您需要一个Heurist API密钥,可以在https://heurist.ai/credits获取。

MCP(模型上下文协议)

模型上下文协议允许像Claude这样的AI助手直接与Heurist Mesh代理作为工具进行交互。

Heurist Mesh MCP门户 - 快速开始我们的MCP集成,无需设置!

对于完全控制的自托管,请查看我们的heurist-mesh-mcp-server

工作原理

  • Mesh代理可以从外部API处理信息,或访问其他Mesh代理。
  • 代理运行在一个去中心化的计算层上,每个代理可以选择性地使用外部API、大型语言模型或其他由Heurist和第三方提供的工具。
  • 代理开发者可以通过向网络添加专业代理来贡献。每次调用代理时,都可以为代理作者产生按使用付费的收入。
  • 用户或开发者可以获得丰富的预构建、目的驱动的AI代理库,他们可以通过REST API或前端界面无缝集成到产品或工作流程中。

构建新的Mesh代理

设置与开发

  1. 创建虚拟环境
cd mesh
uv sync
source .venv/bin/activate  # Linux/Mac
.venv\Scripts\activate     # Windows
  1. 创建您的代理
from mesh.mesh_agent import MeshAgent
from typing import Dict, Any, List

class MySpecialAgent(MeshAgent):
    def __init__(self):
        super().__init__()
        self.metadata.update({
            'name': '我的特殊代理',
            'version': '1.0.0',
            'author': '您的名字',
            'author_address': '0x您的以太坊地址',
            'description': '此代理可以……',
            'external_apis': ['API 名称'],
            'tags': ['类别1', '类别2'],
            'image_url': 'https://example.com/image.png',
            'examples': ['示例查询1', '示例查询2'],
        })

    def get_system_prompt(self) -> str:
        """返回代理的系统提示"""
        return """
        您是一个有用的助手,可以[描述代理的目的]。
        [在这里包含对LLM的具体指令]
        """

    def get_tool_schemas(self) -> List[Dict]:
        """定义您的代理暴露的工具"""
        return [
            {
                "type": "function",
                "function": {
                    "name": "my_tool_name",
                    "description": "该工具的功能描述",
                    "parameters": {
                        "type": "object",
                        "properties": {
                            "param1": {"type": "string", "description": "参数1的描述"},
                            "param2": {"type": "number", "description": "参数2的描述"},
                        },
                        "required": ["param1"]
                    }
                }
            }
        ]

    async def _handle_tool_logic(self, tool_name: str, function_args: dict) -> Dict[str, Any]:
        """处理您的代理工具的执行逻辑"""
        if tool_name == "my_tool_name":
            # 实现您的工具逻辑
            param1 = function_args.get("param1")
            param2 = function_args.get("param2", 0)  # 如果未提供,默认值

            # 调用您的API或处理数据
            result = await self._api_request(
                url="https://api.example.com/endpoint",
                method="GET",
                headers={"Authorization": "Bearer your_api_key"},
                params={"query": param1}
            )

            # 检查错误
            if errors := self._handle_error(result):
                return errors

            # 返回处理过的数据
            return {
                "status": "success",
                "data": {"result": result}
            }

        return {"error": f"不支持的工具:{tool_name}"}
  1. 测试您的代理

    • mesh/tests/my_special_agent.py中创建一个基本测试:
    import asyncio
    import yaml
    from mesh.agents.my_special_agent import MySpecialAgent
    
    async def test_agent():
        agent = MySpecialAgent()
        # 测试自然语言查询
        response = await agent.call_agent({"query": "运行一个测试查询"})
        print(yaml.dump(response))
    
        # 测试直接工具调用
        response = await agent.call_agent({
            "tool": "my_tool_name",
            "tool_arguments": {"param1": "测试值", "param2": 123}
        })
        print(yaml.dump(response))
    
    if __name__ == "__main__":
        asyncio.run(test_agent())
    
    • 运行:python mesh/tests/my_special_agent.py
  2. 启动本地服务器

uvicorn mesh.mesh_api:app --reload

贡献者指南

  1. 分叉并创建分支仓库
  2. 添加您的代理mesh/
  3. 测试本地和外部依赖项
  4. 提交PR,清楚描述代理功能
  5. 部署合并后自动进行

编码风格和最佳实践

  • 使用Python 类型提示文档字符串以提高清晰度
  • 设计为模块化,每个代理专注于单一领域
  • 使用装饰器进行API缓存和重试
  • 支持query参数中的自然语言(例如,“告诉我关于以太坊”和“分析ETH”都应该被接受)

元数据要求

每个代理的metadata字典至少应包含:

  • name: 代理的人类可读名称。
  • version: 代理版本(例如,1.0.0)。
  • author: 贡献者的姓名或用户名。
  • author_address: 以太坊地址(或其他相关地址),用于潜在的收入分享。
  • description: 您代理目的的简短清晰总结。
  • external_apis: 您代理访问的任何外部服务(例如,['DefiLlama'])。
  • tags: 关键词或类别,帮助用户发现您的代理。

X402支付集成(可选)

Mesh代理可以通过Coinbase X402 Bazaar公开,以启用按使用付费访问,并使用USDC支付。要启用您的代理以支持X402:

在您的代理元数据中添加x402_config

self.metadata.update({
    # ... 其他元数据字段 ...
    "x402_config": {
        "enabled": True,
        "default_price_usd": "0.02",  # 所有工具的默认价格(美元)
        "tool_prices": {  # 可选:特定工具的价格覆盖
            "search_projects": "0.01",
            "get_market_summary": "0.02",
        },
    },
})

X402资格标准:

  • 代理必须将x402_config.enabled设置为True才能在X402 Bazaar中被发现
  • author_address必须是有效的以太坊地址(这是USDC支付发送的地方)
  • 工具价格以美元指定,并由X402中间件自动转换为USDC(6位小数)
  • 如果未指定特定工具的tool_prices,则将使用default_price_usd

示例: 查看aixbt_project_info_agent.py以了解完整的实现。

示例

我们在本文件夹中包含了示例代理:

  1. Allora价格预测代理allora_price_prediction_agent.py

    • 使用Allora API获取和预测短期加密货币价格。
    • 展示如何集成外部API,处理异步调用以及组织多步骤逻辑。
  2. DuckDuckGo搜索代理duckduckgo_search_agent.py

    • 使用DuckDuckGo API获取和分析网络搜索结果。
    • 展示如何处理用户查询,连接到外部搜索服务并返回结构化结果。

每个示例代理都有一个对应的测试脚本在mesh/tests/中,演示如何运行代理并生成示例输出文件(YAML格式)。

使用Docker在本地测试

按照以下步骤在类似生产环境的本地开发环境中测试Mesh代理,确保在将其合并到主分支之前,您的代理按预期工作。

  1. 使用Docker启动本地Mesh API服务器:
# 从仓库根目录
docker compose -f docker-compose.dev.yml up --build mesh-api

这将构建并在本地http://localhost:8000启动Mesh API服务。

  1. 安装heurist-mesh-client:
# 在另一个终端
cd heurist-mesh-client
pip install -e .
  1. 将您的API密钥设置为环境变量:
# Windows
set HEURIST_API_KEY=your_api_key

# Linux/Mac
export HEURIST_API_KEY=your_api_key

或者在项目目录中使用.env文件:

# .env 文件
HEURIST_API_KEY=your_api_key
  1. 针对本地服务器测试代理:
# 这将测试所有代理并将结果保存到test_results.json
# `--dev` 将使其针对本地服务器进行测试
python examples/test_agents.py test-agent --dev

# 测试特定代理和工具
python examples/test_agents.py test-agent "CoinGeckoTokenInfoAgent,get_token_info" --dev
  1. 附加选项:
--include-disabled     包括标记为禁用的代理
--no-trim              禁用长输出字符串的修剪
--json FILE            将测试结果保存到JSON文件(自动禁用存储结果的修剪)

测试输入存储在test_inputs.json,它将代理ID映射到工具名称及其测试输入。

联系与支持

  • 问题:如果您发现错误或有任何疑问,请在GitHub仓库上打开一个问题。
  • 社区聊天:加入我们的DiscordTelegram Builder Group以获得实时支持或展示您的新代理。

愉快地编程与欢迎来到Mesh!


附录:所有可用的Mesh代理

代理ID描述可用工具源代码外部API
AIXBTProjectInfoAgent此代理可以使用aixbt API检索热门项目信息,包括基本面分析、社交活动和最新发展• search_projects<br>• get_market_summary源代码aixbt
AaveAgent此代理可以报告部署在以太坊、Polygon、Avalanche和Arbitrum上的Aave v3协议的状态,包括流动性、借款利率等详细信息• get_aave_reserves源代码Aave
AlloraPricePredictionAgent此代理可以使用Allora价格预测API预测ETH/BTC的价格及其置信区间• get_allora_prediction源代码Allora
ArbusAgent此代理使用Arbus AI提供专业级别的加密货币分析、情绪追踪和市场情报。获取AI驱动的市场洞察和结构化报告。• ask_ai_assistant<br>• generate_report源代码Arbus AI
ArkhamIntelligenceAgent此代理使用Arkham的API提供区块链情报,包括地址分析、实体识别、投资组合快照和跨18条以上链的代币持有者数据• get_address_intelligence<br>• get_contract_metadata<br>• get_portfolio_snapshot<br>• get_token_holders源代码Arkham Intelligence
BitquerySolanaTokenInfoAgent此代理使用Bitquery API提供Solana代币的全面分析。它可以分析代币指标(成交量、价格、流动性)、追踪持有者和买家、监控交易活动并识别趋势代币。代理支持特定代币分析和市场范围的趋势发现。• query_token_metrics<br>• query_token_holders<br>• query_token_buyers<br>• query_top_traders<br>• query_holder_status<br>• get_top_trending_tokens源代码Bitquery
CarvOnchainDataAgent此代理可以使用CARV API通过自然语言查询以太坊、Base、比特币或Solana的区块链指标。• query_onchain_data源代码CARV
CoinGeckoTokenInfoAgent此代理可以从CoinGecko获取代币信息、市场数据、热门硬币和分类数据。• get_token_info<br>• get_trending_coins<br>• get_token_price_multi<br>• get_categories_list<br>• get_category_data<br>• get_tokens_by_category<br>• get_trending_pools<br>• get_top_token_holders源代码Coingecko
CookieProjectInfoAgent此代理使用Cookie API提供有关加密项目的市场数据、社交媒体指标和心智份额增长指标的信息。它可以通过推特用户名或合约地址识别项目。• get_project_by_twitter_username<br>• get_project_by_contract_address源代码Cookie API
DeepResearchAgent高级研究代理,执行多层次的网络搜索,递归探索,跨来源分析内容,并生成包含关键见解的综合研究报告。• deep_research源代码Firecrawl, Exa
DexScreenerTokenInfoAgent此代理使用DexScreener API获取多个链上的实时DEX交易数据和代币信息。• search_pairs<br>• get_specific_pair_info<br>• get_token_pairs源代码DexScreener
DuckDuckGoSearchAgent此代理可以使用DuckDuckGo API获取和分析网络搜索结果,并提供智能摘要。• search_web源代码DuckDuckGo
ElfaTwitterIntelligenceAgent此代理使用Twitter数据和Elfa API分析代币、主题或Twitter账户。它突出显示智能影响者。• search_mentions<br>• search_account<br>• get_trending_tokens源代码Elfa, Apidance
EtherscanAgent此代理可以使用区块链浏览器和Firecrawl进行数据提取,分析多个链上的区块链交易、地址和ERC20代币。• get_transaction_details<br>• get_address_history<br>• get_erc20_token_transfers<br>• get_erc20_top_holders源代码Firecrawl
EvmTokenInfoAgent此代理使用Bitquery API分析多个链上的EVM代币的大额交易。它通过识别实际交易者及其交易详情来追踪鲸鱼移动。交易类型从交易者的角度显示(而非DEX角度)。• get_recent_large_trades源代码Bitquery
ExaSearchAgent此代理可以使用Exa的API搜索网络,并提供问题的直接答案。• exa_web_search<br>• exa_answer_question源代码Exa
ExaSearchDigestAgent使用Exa API的网络搜索代理,具有简洁的LLM摘要。• exa_web_search<br>• exa_scrape_url源代码Exa
FirecrawlSearchAgent高级搜索代理,使用Firecrawl执行智能查询生成和内容分析的研究。• firecrawl_web_search<br>• firecrawl_extract_web_data<br>• firecrawl_scrape_url源代码Firecrawl
FirecrawlSearchDigestAgent高级网络搜索代理,使用Firecrawl执行智能查询生成和内容分析的研究,然后使用小型快速LLM处理结果,生成简洁的相关摘要。• firecrawl_web_search<br> • firecrawl_extract_web_data<br> • firecrawl_scrape_url源代码Firecrawl
FundingRateAgent获取Binance USDⓈ-M资金费率及持仓量,总结持仓量趋势,并从资金费率间隔计算APR