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的错误 - 提及
100.100.100.200的错误
SDK 尝试使用基于本地配置文件的凭证,但文件缺失或无效。如果要使用本地配置文件,请创建或修复默认配置。
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 调用和工具调用,以回答单个问题。这会产生以下重要影响:
- 长时间运行的任务:复杂诊断(多实例巡检、全面健康检查、批量 SQL 分析)可能需要数分钟,最长可达 30 分钟,因为 DAS Agent 会依次调用监控 APIs、执行诊断并汇总结果。开始前必须告知用户,并定期提供进度更新。
- 实例接入:目标数据库实例必须接入 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> ` 每次调用后立即提取该值,并在后续调用中继续使用。在 --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)。