返回技能市场
开发运维 安全

阿里云DAS数据库自治助手

@aliyun/alibabacloud-das-agent

基于阿里云数据库自治服务(DAS),通过自然语言对话实现数据库的智能诊断与自治管理。支持对 RDS、PolarDB、MongoDB、Redis(Tair)、Lindorm 等全系数据库产品进行实例状态查询、性能分析、慢 SQL 诊断与优化、空间分析、锁与会话分析、安全基线检测及异常行为识别。可自动编排多步骤复杂任务,生成完整诊断报告与可落地的优化建议,面向 DBA、开发者及架构师提供全场景数据库管理能力。

云Skills门户 热度 37v0.0.2

DAS Agent 对话

向阿里云 DAS(数据库自治服务)Agent 发送自然语言问题并接收诊断结果。

定价和免费额度

这是一项付费服务,并提供用于试用的免费额度。

  • 免费额度:未设置 ALIBABA_CLOUD_DAS_AGENT_ID 时,脚本会省略 AgentId 参数,API 将使用一个默认 Agent ID,其附带有限的免费试用额度。
  • 付费使用:对于生产工作负载或更高使用量,请购买 DAS Agent 订阅,并设置您自己的 ALIBABA_CLOUD_DAS_AGENT_ID,以绑定您的专属 agent 和额度。
建议:先使用免费额度(默认 Agent ID)评估服务。决定将其用于生产后,请购买订阅并配置您自己的 Agent 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 订阅,请在以下地址创建和管理您的 Agent ID:https://das.console.aliyun.com/

故障排查

凭证解析失败

如果脚本因凭证相关错误而退出,则表示阿里云凭证 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 元数据连接错误,并让凭证缺失错误更易读懂。

调用方式

从此 skill 的 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

作为 agent 调用时,必须始终使用 --pipe该选项会将所有进度信息和工具调用产生的干扰输出路由到 stderr,并仅将 DAS 回答写入 stdout,再用清晰的分隔符将其包裹起来——因此真正的响应绝不会被遗漏。

需要以编程方式解析响应时,优先使用 --json。有关 JSON 事件类型和输出模式的详细信息,请参阅 [references/api-reference.md](references/api-reference.md)。

行为说明

DAS Agent 会在内部编排多次 API 调用和工具调用,以回答单个问题。这会产生以下重要影响:

  1. 长时间运行的任务:复杂诊断(多实例巡检、全面健康检查、批量 SQL 分析)可能需要数分钟,最长可达 30 分钟,因为 DAS Agent 会依次调用监控 APIs、执行诊断并汇总结果。开始前必须告知用户,并定期提供进度更新。
  1. 实例接入:目标数据库实例必须接入 DAS Agent。如果看到错误码 -1810006,则表示该 agent 未关联任何实例——请引导用户前往DAS 控制台设置关联实例。
  1. 在问题中包含实例 ID:DAS Agent 通过 ID 识别实例(例如 rm-bp1xxxpc-2zeyyy)。为获得准确结果,问题中必须始终包含具体实例 ID。如果用户未提供,请向其询问,或先查询实例列表。
  1. 并行执行:诊断多个实例时,请并行启动多个脚本进程——每次调用都相互独立且无状态(除非共享会话 ID)。
  1. 多轮对话——问题相关时必须始终复用会话 ID:如果用户的问题前后连续或在上下文上相关(后续诊断、下钻分析、引用先前结果、对比分析结论),则在之后的每次调用中都必须传入 --session <session_id>。在对话过程中启动新会话会迫使 DAS Agent 从头重新处理此前的全部上下文,既浪费时间,也会降低回答质量。

决策规则:默认复用会话 ID。仅当用户明确切换到完全无关的主题或要求“重新开始”时,才启动新会话。

会话 ID 由服务器分配,并作为每次 --pipe 调用返回内容的第一行: `` SESSION: <uuid> ` 每次调用后立即提取该值,并在后续调用中继续使用。在 --json 模式下,该值会以 {"type": "session", "session_id": "..."}` 的形式出现在第一行。

以下场景必须复用

  • “列出我的实例” → “检查第一个实例的 CPU” → “为什么这么高?”
  • “在 rm-bp1xxx 上运行健康检查” → “显示排名靠前的慢查询”
  • “当前持有哪些锁?” → “终止该会话”

DAS Agent 会在服务器端保留完整的对话历史,因此后续问题可以简短、自然——无需重复实例 ID 或先前的上下文。

输出

有关输出模式的对比和格式详情,请参阅 [references/api-reference.md](references/api-reference.md)。

运行脚本后,必须将完整的 stdout 原样转发给用户。 不得总结或改述脚本的 stdout,也不得省略其中任何部分。DAS Agent 的实际诊断答案包含在输出中——用户必须看到完整答案。

有关详细的 API 签名和 SSE 事件文档,请参阅 [references/api-reference.md](references/api-reference.md)。

qianwen skills install @aliyun/alibabacloud-das-agent