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。
可选:购买 DAS Agent 服务后设置你自己的 Agent ID
export ALIBABA_CLOUD_DAS_AGENT_ID="<agent_id>" # 从 DAS 控制台获取(可选)
阿里云凭证 SDK 会从多个来源自动解析凭证(环境变量、配置文件、ECS RAM 角色等)。设置说明请参阅[官方凭证配置文档](https://www.alibabacloud.com/help/en/sdk/developer-reference/v2-manage-python-access-credentials)。
如果你已购买 DAS Agent 订阅,在此处创建和管理你的 Agent ID:https://das.console.aliyun.com/
故障排查
凭证解析失败
如果脚本以凭证相关错误退出,意味着阿里云凭证 SDK 无法从其默认提供者链解析出可用凭证。
支持的凭证来源:
- 环境变量(见官方文档)
- 本地 profile 文件:
~/.aliyun/config.json或~/.alibabacloud/credentials.ini - 在阿里云 ECS 实例上运行时的 ECS RAM 角色元数据
常见情况:
- 凭证环境变量为空或缺失——按官方文档配置。
- 错误提及
~/.aliyun/config.json或~/.alibabacloud/credentials.ini
SDK 尝试了基于本地 profile 的凭证,但文件缺失或无效。如果想用本地 profile,创建 / 修复默认 profile。
- 错误提及
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
管道模式(Agent 推荐)——干净输出:进度到 stderr,答案清晰界定在 stdout
uv run call_das_agent.py --question "<用户问题>" --pipe
默认模式(CLI 聊天 UI)——带工具详情的实时流式
uv run call_das_agent.py --question "<用户问题>"
JSON 模式——机器可读 JSONL,stdout 每行一个 JSON 对象
uv run call_das_agent.py --question "<用户问题>" --json
多轮对话——复用服务端分配的 session ID 以保持上下文
uv run call_das_agent.py --question "列出我的实例" --pipe # 第一行返回 session_id
提取 session_id(以 "SESSION:" 开头的行),然后复用它:
uv run call_das_agent.py --question "检查第一个" --session "<上面的 session_id>" --pipe
**作为 agent 调用时始终使用 `--pipe`。** 它将所有进度 / 工具调用噪音路由到 stderr,只将 DAS 答案写入 stdout,并包在清晰分隔符中——使真实响应不可能被漏掉。
需要程序化解析响应时优先用 `--json`。JSON 事件类型和输出模式细节,见 [references/api-reference.md](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 以获得准确结果。如果用户未提供,询问他们或先查询实例列表。
- 并行执行:诊断多个实例时,并行启动多个脚本进程——每次调用独立且无状态(除非共享 session ID)。
- 多轮对话——问题相关时始终复用 session ID:如果用户的问题是连续的或上下文相连的(后续诊断、下钻分析、引用前一个结果、对比发现),你必须在每次后续调用上传递
--session <session_id>。在对话中途开始新会话会迫使 DAS Agent 从头重跑所有先前上下文,浪费时间并产生更低质量的答案。
决策规则:默认复用 session ID。仅当用户明确切换到完全不相关的话题或要求"重新开始"时才开新会话。
session ID 是服务端分配的,作为每次 --pipe 调用的第一行返回:
SESSION: <uuid>
每次调用后立即提取并向前传递。在 --json 模式下它出现在第一行 {"type": "session", "session_id": "..."}。
必须复用 session ID 的示例:
- "列出我的实例" → "检查第一个的 CPU" → "为什么高?"
- "对 rm-bp1xxx 运行健康检查" → "显示最慢的查询"
- "持有哪些锁?" → "杀掉那个会话"
DAS Agent 在服务端保留完整对话历史,因此后续问题可以简短自然——无需重复实例 ID 或先前上下文。
输出
输出模式对比和格式细节,见 references/api-reference.md。
运行脚本后,逐字将完整 stdout 转达给用户。 不要总结、转述或省略脚本 stdout 的任何部分。DAS Agent 的实际诊断答案嵌入在输出中——用户必须完整看到它。
详细 API 签名和 SSE 事件文档,见 references/api-reference.md。
阿里云skills
◯ 评论 0