1. 页面概览

工具管理页(路由 /admin/tools)是 AIP 管理后台面向管理员的 Agent 工具治理台。它提供工具列表(名称/描述/内置标记/危险标记/启用开关)、工具详情(参数 JSON Schema 抽屉)、测试执行(按工具参数 Schema 生成表单并执行,展示结果与耗时)三类能力,用于管理 Agent/NLQ 链路可调用的工具注册表(tool_definitions)。启用/禁用接口需管理员权限,403 时前端明确提示「启用/禁用工具需要管理员权限」。所有请求走 aipClient/aip-api/v1 → AIP 18080),后端未就绪时优雅提示不白屏。

一句话总结:本页是工具注册表的「查看 + 启停 + 试运行」控制台,内置工具与外部工具统一治理。

2. 访问入口

3. 界面布局

+--------------------------------------------------------------+
| 工具管理                                      [刷新]           |
| 工具列表:名称|描述|类型(内置/外部)|危险|启用(switch)|操作(详情/   |
|   测试执行)                                                    |
| 详情抽屉(右侧滑出):描述/内置/危险/启用 + 参数 JSON Schema       |
| 测试执行:选择工具[select] + 数据源[select](需要时)             |
|   按工具类型参数表单(SQL/max_rows|表名|问题|通用 JSON)          |
|   [执行] [清空]  结果区:执行耗时 + 结果                        |
+--------------------------------------------------------------+

各板块职责:

4. 交互元素

控件位置含义与作用
刷新页面头部并行刷新工具列表与数据源下拉,加载中禁用并显示「加载中...」
启用开关工具列表启用列切换调 PUT /tools/:name/enable(body {enabled}),成功后刷新该行状态;403 时提示「启用/禁用工具需要管理员权限」
详情行操作打开右侧抽屉,先展示本地定义再按 GET /tools/:name 拉取最新并合并展示参数 JSON Schema
测试执行行操作选中该工具进入测试表单;需数据源的工具(query_data/get_table_schema/nlq_to_sql)出现数据源下拉
执行测试执行卡片按工具类型组装 params 后 POST /tools/:name/execute,展示执行耗时与结果
清空测试执行卡片复位工具表单与结果

测试表单按工具类型分支:query_data→SQL 文本域 + max_rows(可选);get_table_schema→表名输入;nlq_to_sql→问题文本域;其他工具→通用「参数 JSON」输入框(JSON 格式错误会提示「参数 JSON 格式错误,请检查」)。

5. 后端关联

5.1 端点表

方法路径用途
GET/tools工具列表(name/description/parameters/is_dangerous/builtin/enabled),登录组
GET/tools/:name单个工具详情(含参数 Schema),登录组
POST/tools/:name/execute执行工具,body {params, data_source_id?},返回 {result, execution_ms},登录组
PUT/tools工具注册(Upsert),admin 组
PUT/tools/:name工具更新(Update),admin 组
PUT/tools/:name/enable启用/禁用,body {enabled},admin 组

5.2 关键机制

6. 权限与安全

7. 常见问题与排错

8. 已知缺陷与边界

说明
工具注册/更新未暴露后端提供 PUT /tools(Upsert)与 PUT /tools/:name(Update),前端仅做启停与执行
参数表单有限仅 query_data/get_table_schema/nlq_to_sql 有专用表单,其余工具走通用 JSON
数据源下拉依赖登录态数据源列表来自 GET /datasources,失败时下拉为空但不阻塞工具列表

注:危险工具执行无二次确认(「执行」危险工具不弹二次确认,仅靠 is_dangerous 标记提示)已于 2026-09-06 修复(is_dangerous 工具先确认再执行)。