# 能力目录

诊断 Agent 使用本系统内的 **Builtin 内置工具**。对用户单次请求 / 单次响应；内部可多步调用工具。

---

## 1. 入口预处理（不是 Agent 工具）

| 步骤 | 作用 |
| --- | --- |
| 错误归类 | 根据 status / code / message 写入 `errorCategory`，注入 User Prompt |

在 `/sql/diagnose/stream` 入口完成，不注册为可调用工具。

---

## 2. 内置工具 Builtin

| 工具名 | 作用 | 输入 | 输出 |
| --- | --- | --- | --- |
| `validate_sql_syntax` | Druid SQL Parser 本地再解析（收口） | sql, dialect | ok / parseError |
| `get_table_schema` | 只读获取表列/类型/键（权限内） | table, connectionId | schema |
| `list_tables` | 只读列出可见表（可过滤） | connectionId, keyword? | tables[] |

约束：
- 全部在本系统内实现，走当前用户权限模型。
- **不执行**业务写 SQL；`validate_sql_syntax` 仅本地解析。
- schema / list 与执行门禁同源权限。

---

## 3. 推荐调用策略

```
PARSE_ERROR
  → 预处理归类
  → 按 System Prompt 语法修复要点生成 fixedSql
  → validate_sql_syntax
  → （失败则内部再修）

EXEC_ERROR（对象/语义 · diagnosable）
  → 预处理归类
  → get_table_schema / list_tables（按需）
  → 生成 fixedSql
  → validate_sql_syntax

PERMISSION_DENIED / 不可诊断 EXEC
  → 不进入 Agent
```

前端负责结果展示中的 SQL 美化与差异对照。
