SuperAPI AI 工具集

alibabacloud-das-agent

数据与分析

查看项目

更新于 10-15 15:27

技能介绍

用途

本技能用于通过自然语言与阿里云 DAS(Database Autonomy Service,数据库自治服务)Agent 交互,发送自然语言问题并接收诊断结果。适用于用户需要排查数据库性能问题(如高 CPU、慢查询等)以及管理阿里云数据库的场景。

主要能力

  • 以自然语言向 DAS Agent 提问并获取诊断结果。
  • 支持多轮对话:通过复用服务端分配的 session ID 维持上下文,后续问题可以简短自然,无需重复实例 ID 或先前上下文。
  • 支持多种输出模式:管道模式(推荐给智能体,进度输出到 stderr,答案清晰分隔在 stdout)、默认 CLI 聊天界面(实时流式输出并显示工具详情)、JSON 模式(机器可读的 JSONL,每行一个 JSON 对象)。
  • 支持并行执行:诊断多个实例时可并行启动多个脚本进程,每次调用独立且无状态(除非共享 session ID)。

使用方式

环境变量

脚本需要可通过默认凭证链解析的阿里云凭证。DAS Agent ID 为可选——若未提供,将省略 AgentId 参数,API 使用带有限免费配额的默认 Agent ID。

# Optional: Set your own Agent ID after purchasing DAS Agent service
export ALIBABA_CLOUD_DAS_AGENT_ID="<agent_id>"               # Obtain from DAS console (optional)

阿里云凭证 SDK 会自动从多个来源解析凭证(环境变量、配置文件、ECS RAM 角色等)。若已购买 DAS Agent 订阅,可在 https://das.console.aliyun.com/ 创建和管理 Agent ID。

调用

在本技能的 scripts/ 目录下运行:

cd scripts

# Pipe mode (RECOMMENDED for agents) — clean output: progress to stderr, answer clearly delimited on stdout
uv run call_das_agent.py --question "<user's question>" --pipe

# Default mode (CLI chat UI) — real-time streaming with tool details
uv run call_das_agent.py --question "<user's question>"

# JSON mode — machine-readable JSONL, one JSON object per line on stdout
uv run call_das_agent.py --question "<user's question>" --json

# Multi-turn conversation — reuse the server-assigned session ID to maintain context
uv run call_das_agent.py --question "List my instances" --pipe  # Returns session_id on first line
# Extract session_id (line starting with "SESSION:"), then reuse it:
uv run call_das_agent.py --question "Check the first one" --session "<session_id_from_above>" --pipe

作为智能体调用时始终使用 --pipe,它将所有进度/工具调用噪音路由到 stderr,仅将 DAS 答案写入 stdout 并用清晰分隔符包裹。需要以编程方式解析响应时优先使用 --json。

适用场景

  • 数据库性能问题排查(高 CPU、慢查询等)。
  • 阿里云数据库管理。
  • 多实例诊断、综合健康检查、批量 SQL 分析。
  • 需要多轮追问的诊断流程,例如:"List my instances" → "Check CPU on the first one" → "Why is it high?";"Run a health check on rm-bp1xxx" → "Show me the top slow queries";"What locks are held?" → "Kill that session"。

限制与注意事项

  • 收费:这是付费服务,提供有限免费试用额度。未设置 ALIBABA_CLOUD_DAS_AGENT_ID 时使用默认 Agent ID 及有限免费配额;生产工作负载或更高用量需购买 DAS Agent 订阅并设置自己的 Agent ID。建议先用免费层评估,决定生产采用后再购买订阅并配置自己的 Agent ID。
  • 长时任务:复杂诊断(多实例检查、综合健康检查、批量 SQL 分析)可能耗时数分钟至 30 分钟,因为 DAS Agent 会顺序调用监控 API、运行诊断并综合结果。开始前应告知用户并提供周期性进度更新。
  • 实例注册:目标数据库实例必须注册在 DAS Agent 下。若出现错误码 -1810006,表示该 agent 未关联任何实例,需引导用户在 DAS 控制台设置中关联实例。
  • 问题中需包含实例 ID:DAS Agent 通过 ID(如 rm-bp1xxx、pc-2zeyyy)解析实例,问题中应始终包含具体实例 ID;若用户未提供,需询问或先查询实例列表。
  • 多轮对话应始终复用 session ID:若问题连续或上下文相关(后续诊断、下钻分析、引用先前结果、对比发现),必须在每次后续调用中传入 --session <session_id>。会话中途新建会话会迫使 DAS Agent 从头重跑所有先前上下文,浪费时间并降低答案质量。默认复用 session ID,仅当用户明确切换到完全不相关主题或要求"重新开始"时才新建会话。session ID 由服务端分配,在每次 --pipe 调用的第一行返回:SESSION: <uuid>;在 --json 模式下第一行显示为 {"type": "session", "session_id": "..."}。
  • 输出:运行脚本后,需将完整 stdout 原样转达给用户,不要总结、改写或省略任何部分,因为 DAS Agent 的实际诊断答案嵌入在输出中。

故障排查

凭证解析失败:若脚本因凭证相关错误退出,说明阿里云凭证 SDK 无法从默认提供程序链解析可用凭证。支持的凭证来源包括环境变量、本地配置文件(~/.aliyun/config.json 或 ~/.alibabacloud/credentials.ini)、在阿里云 ECS 实例上运行时的 ECS RAM 角色元数据。常见情况:凭证环境变量为空或缺失;错误提及 ~/.aliyun/config.json 或 ~/.alibabacloud/credentials.ini 表示 SDK 尝试本地配置文件凭证但文件缺失或无效;错误提及 100.100.100.200 表示 SDK 尝试 ECS 元数据,在 ECS 上属预期,在其他机器上通常是本地配置错误。本地开发若不使用 ECS RAM 角色凭证,可显式禁用 ECS 元数据查找:

export ALIBABA_CLOUD_ECS_METADATA_DISABLED=true

这可以避免非 ECS 机器上令人困惑的 100.100.100.200 元数据连接错误,并使缺失凭证的失败更易读。

详细的 API 签名和 SSE 事件文档参见 references/api-reference.md。