mcpField
A
alibabacloud-das-agent

alibabacloud-das-agent

github.com/aliyun数据与数据库281391 次安装1 天前更新
代码仓库

关于 alibabacloud-das-agent

alibabacloud-das-agent 是用于向 Alibaba Cloud DAS Agent 提交自然语言问题并获取数据库诊断结果的技能,面向数据库运维与诊断场景。它支持命令行聊天、便于 Agent 调用的管道输出及 JSON 格式。

主要功能

  1. 01自然语言数据库诊断
  2. 02管道模式输出答案
  3. 03JSON 格式响应
  4. 04支持会话延续

适用场景

  1. 01排查数据库实例健康状况
  2. 02分析慢查询或锁
  3. 03连续追问诊断结果

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aliyun/alibabacloud-aiops-skills --skill alibabacloud-das-agent

安装后在 Claude Code 中输入/alibabacloud-das-agent确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
api-reference.md
ram-policies.md
scripts/
call_das_agent.py
pyproject.toml

详细介绍

DAS Agent 聊天

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

定价和免费额度

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

  • 免费额度:未设置 ALIBABA_CLOUD_DAS_AGENT_ID 时,脚本会省略 AgentId 参数,API 将使用默认 Agent ID,该 ID 附带有限的免费试用额度。
  • 付费使用:对于生产工作负载或更高用量,请购买 DAS Agent 订阅,并设置自己的 ALIBABA_CLOUD_DAS_AGENT_ID,以绑定专属 Agent 和额度。

建议:先使用免费额度(默认 Agent ID)评估服务。决定将其用于生产后,再购买订阅并配置自己的 Agent ID。

环境变量

脚本需要能够通过默认凭证链解析的 Alibaba Cloud 凭证。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)

Alibaba Cloud Credentials SDK 会自动从多个来源解析凭证(环境变量、配置文件、ECS RAM 角色等)。有关设置说明,请参阅官方凭证配置文档。

如果你已购买 DAS Agent 订阅,可在以下地址创建和管理 Agent ID:https://das.console.aliyun.com/

故障排除

凭证解析失败

如果脚本因凭证相关错误退出,说明 Alibaba Cloud Credentials SDK 无法通过默认凭证链解析出可用凭证。

支持的凭证来源:

  • 环境变量(参阅官方文档)
  • 本地配置文件:~/.aliyun/config.json 或 ~/.alibabacloud/credentials.ini
  • 在 Alibaba Cloud ECS 实例上运行时使用 ECS RAM Role 元数据

常见情况:

  • 凭证环境变量为空或缺失——请根据官方文档进行配置。
  • 错误中提及 ~/.aliyun/config.json 或 ~/.alibabacloud/credentials.ini SDK 尝试使用基于本地配置文件的凭证,但文件缺失或无效。如果想使用本地配置文件,请创建或修复默认配置文件。
  • 错误中提及 100.100.100.200 SDK 尝试获取 ECS 元数据。在 ECS 上这是预期行为,但在本地计算机上通常表示其他位置存在配置错误。

对于本地开发,如果你不使用 ECS RAM Role 凭证,可以显式禁用 ECS 元数据查询:

export ALIBABA_CLOUD_ECS_METADATA_DISABLED=true

这可以避免在非 ECS 计算机上出现令人困惑的 100.100.100.200 元数据连接错误,并让缺失凭证错误更易读。

调用

请从此技能的 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。

行为说明

DAS Agent 会在内部协调多个 API 调用和工具调用,以回答单个问题。这会带来一些重要影响:

  1. 长时间运行的任务:复杂诊断(多实例检查、全面健康检查、批量 SQL 分析)可能需要几分钟,最长可达 30 分钟,因为 DAS Agent 会依次调用监控 API、运行诊断并汇总结果。开始前请告知用户,并定期提供进度更新。

  2. 实例关联:目标数据库实例必须关联到 DAS Agent。如果看到错误代码 -1810006,表示该 Agent 未关联任何实例——请引导用户前往 DAS 控制台设置关联实例。

  3. 在问题中包含实例 ID:DAS Agent 根据 ID(例如 rm-bp1xxx、pc-2zeyyy)解析实例。为获得准确结果,请始终在问题中包含具体实例 ID。如果用户尚未提供,请询问他们,或先查询实例列表。

  4. 并行执行:诊断多个实例时,请并行启动多个脚本进程——每次调用彼此独立且无状态(除非共享会话 ID)。

  5. 多轮对话——相关问题始终复用会话 ID:如果用户的问题前后衔接或上下文相关(后续诊断、深入分析、引用先前结果、比较发现),后续每次调用都必须传入 --session <session_id>。在对话中途开启新会话会迫使 DAS Agent 从头重新运行所有先前上下文,浪费时间并降低回答质量。

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

    会话 ID 由服务端分配,并作为每次 --pipe 调用返回的第一行内容:

    SESSION: <uuid>
    

    每次调用后立即提取会话 ID,并在后续调用中继续使用。在 --json 模式下,第一行会显示为 {"type": "session", "session_id": "..."}。

    以下情况必须复用会话 ID:

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

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

输出

有关输出模式比较和格式详情,请参阅 references/api-reference.md。

运行脚本后,请将完整的 stdout 原样转达给用户。 不要总结、转述或省略脚本 stdout 的任何部分。DAS Agent 的实际诊断回答包含在输出中——用户必须看到完整内容。

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

评论

支持 Markdown