数据源集成

AI智能体的能力很大程度上取决于它能够访问和处理的数据。OpenClaw提供了丰富的数据源集成能力,让Agent可以连接外部API、数据库、文件系统和消息队列,实现数据的实时获取、处理和流转。本章将详细介绍各种数据源的集成方法和最佳实践。

API数据源连接

OpenClaw支持通过HTTP/REST和GraphQL接口连接任意外部API。内置的API连接器提供了认证管理、请求限流、错误重试和响应缓存等功能。

# 在config.yaml中配置API数据源
data_sources:
  apis:
    weather_api:
      type: rest
      base_url: https://api.weather.com/v2
      auth:
        type: api_key
        header: X-API-Key
        key_env: WEATHER_API_KEY
      rate_limit: 100/min
      cache:
        enabled: true
        ttl: 300  # 缓存5分钟
      timeout: 10

    internal_api:
      type: graphql
      base_url: https://internal.example.com/graphql
      auth:
        type: oauth2
        token_url: https://auth.example.com/token
        client_id_env: INTERNAL_CLIENT_ID
        client_secret_env: INTERNAL_CLIENT_SECRET
      headers:
        Content-Type: application/json

在Agent中使用API数据源时,可以通过工具定义来声明需要的API:

# tools/weather_tool.py
from openclaw.tools import APITool

class WeatherTool(APITool):
    name = "get_weather"
    description = "获取指定城市的天气信息"
    data_source = "weather_api"

    async def execute(self, city: str, days: int = 1):
        response = await self.client.get(
            "/forecast",
            params={"city": city, "days": days}
        )
        return {
            "city": city,
            "forecast": response.data["forecast"],
            "temperature": response.data["temp"],
            "humidity": response.data["humidity"]
        }

提示:API认证安全

始终使用环境变量存储API密钥,切勿硬编码在配置文件中。OpenClaw支持多种认证方式:API Key、Bearer Token、OAuth 2.0、HMAC签名和自定义认证头。对于OAuth 2.0,平台会自动管理Token刷新。

数据库连接

OpenClaw支持连接主流的关系型数据库和NoSQL数据库,让Agent可以直接查询和操作数据。数据库连接通过连接池管理,确保高性能和资源安全。

  • 关系型数据库:PostgreSQL、MySQL、SQLite、SQL Server
  • NoSQL数据库:MongoDB、Redis、Elasticsearch、DynamoDB
  • 向量数据库:Qdrant、Pinecone、Weaviate、Milvus
  • 时序数据库:InfluxDB、TimescaleDB
# 数据库数据源配置
data_sources:
  databases:
    main_db:
      type: postgresql
      host: ${DB_HOST}
      port: 5432
      database: production
      user: openclaw_reader
      password_env: DB_PASSWORD
      pool:
        min_size: 5
        max_size: 20
      ssl: true
      # 安全设置:只允许只读查询
      read_only: true
      query_timeout: 30
      allowed_schemas:
        - public
        - analytics

    cache_db:
      type: redis
      host: ${REDIS_HOST}
      port: 6379
      password_env: REDIS_PASSWORD
      db: 0

文件系统数据源

Agent可以通过文件系统连接器访问本地文件、网络存储和云存储中的文档。OpenClaw支持多种文件格式的自动解析,包括PDF、Word、Excel、CSV、Markdown和纯文本。

# 文件系统数据源配置
data_sources:
  file_systems:
    local_docs:
      type: local
      base_path: /data/documents
      allowed_extensions:
        - .pdf
        - .docx
        - .xlsx
        - .csv
        - .md
        - .txt
      max_file_size: 50MB
      watch_changes: true  # 监控文件变化

    cloud_storage:
      type: s3
      bucket: company-docs
      prefix: knowledge-base/
      region: cn-north-1
      credentials_env:
        access_key: S3_ACCESS_KEY
        secret_key: S3_SECRET_KEY

    # 文档解析和向量化管道
    pipeline:
      parsers:
        pdf: pytesseract  # OCR支持
        docx: python-docx
        xlsx: openpyxl
      chunking:
        strategy: semantic
        max_chunk_size: 1000
        overlap: 200
      embedding:
        model: text-embedding-3-small
        batch_size: 100

核心概念:文档处理管道

当Agent需要处理大量文档时,OpenClaw会自动启动文档处理管道。该管道包括文件解析、文本提取、分块(chunking)、向量化和索引存储等步骤。处理结果会缓存到向量数据库中,避免重复处理。

消息队列集成

对于需要实时数据流的场景,OpenClaw支持连接各种消息队列系统。Agent可以作为消费者订阅消息主题,也可以作为生产者发布消息。

# 消息队列数据源配置
data_sources:
  message_queues:
    kafka:
      type: kafka
      brokers:
        - kafka-1:9092
        - kafka-2:9092
        - kafka-3:9092
      consumer_group: openclaw-agents
      topics:
        - name: user-events
          handler: process_user_event
          auto_offset_reset: latest
        - name: system-alerts
          handler: process_alert
          auto_offset_reset: earliest

    rabbitmq:
      type: amqp
      host: ${RABBITMQ_HOST}
      port: 5672
      virtual_host: /openclaw
      queues:
        - name: task_queue
          prefetch: 10
          durable: true

数据管道与ETL

OpenClaw内置了轻量级的数据管道引擎,允许您定义从数据源到Agent的数据流转规则。这对于需要定期同步数据或进行数据转换的场景非常有用。

# 数据管道配置
pipelines:
  daily_report_pipeline:
    schedule: "0 8 * * *"  # 每天早上8点
    steps:
      - name: fetch_sales_data
        source: main_db
        query: |
          SELECT * FROM sales
          WHERE date = CURRENT_DATE - INTERVAL '1 day'
      - name: transform_data
        transform: python
        script: |
          def transform(data):
              total = sum(row['amount'] for row in data)
              return {
                  "date": data[0]['date'],
                  "total_sales": total,
                  "order_count": len(data),
                  "avg_order_value": total / len(data)
              }
      - name: send_to_agent
        target_agent: report_agent
        input_template: |
          昨日销售报告:
          日期:{{date}}
          总销售额:{{total_sales}}
          订单数量:{{order_count}}
          平均订单金额:{{avg_order_value}}

流式数据源

对于需要实时处理的数据流(如WebSocket、SSE或gRPC流),OpenClaw提供了流式数据源连接器。Agent可以持续接收数据更新,并实时做出响应。

  • WebSocket:适用于双向实时通信场景,如聊天应用、实时协作
  • Server-Sent Events (SSE):适用于服务器向客户端推送更新,如股票行情、监控数据
  • gRPC Stream:适用于高性能的流式数据传输

警告:数据源安全

连接外部数据源时,请遵循最小权限原则。数据库连接应使用只读账户,API调用应限制请求频率,文件系统访问应限制在必要的目录范围内。所有数据源连接都应配置超时和重试策略,防止因外部服务不可用导致Agent阻塞。

通过灵活组合这些数据源集成能力,您可以构建出能够访问和处理各种数据的强大AI智能体。OpenClaw的数据源系统设计遵循插件化架构,您也可以轻松开发自定义的数据源连接器来满足特定需求。