关于 alibabacloud-das-agent
alibabacloud-das-agent 是用于向 Alibaba Cloud DAS Agent 提交自然语言问题并获取数据库诊断结果的技能,面向数据库运维与诊断场景。它支持命令行聊天、便于 Agent 调用的管道输出及 JSON 格式。
主要功能
- 01自然语言数据库诊断
- 02管道模式输出答案
- 03JSON 格式响应
- 04支持会话延续
适用场景
- 01排查数据库实例健康状况
- 02分析慢查询或锁
- 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.mdram-policies.mdscripts/call_das_agent.pypyproject.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.iniSDK 尝试使用基于本地配置文件的凭证,但文件缺失或无效。如果想使用本地配置文件,请创建或修复默认配置文件。 - 错误中提及
100.100.100.200SDK 尝试获取 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 调用和工具调用,以回答单个问题。这会带来一些重要影响:
-
长时间运行的任务:复杂诊断(多实例检查、全面健康检查、批量 SQL 分析)可能需要几分钟,最长可达 30 分钟,因为 DAS Agent 会依次调用监控 API、运行诊断并汇总结果。开始前请告知用户,并定期提供进度更新。
-
实例关联:目标数据库实例必须关联到 DAS Agent。如果看到错误代码
-1810006,表示该 Agent 未关联任何实例——请引导用户前往 DAS 控制台设置关联实例。 -
在问题中包含实例 ID:DAS Agent 根据 ID(例如
rm-bp1xxx、pc-2zeyyy)解析实例。为获得准确结果,请始终在问题中包含具体实例 ID。如果用户尚未提供,请询问他们,或先查询实例列表。 -
并行执行:诊断多个实例时,请并行启动多个脚本进程——每次调用彼此独立且无状态(除非共享会话 ID)。
-
多轮对话——相关问题始终复用会话 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。