```
feat(lzwcai-agile-db): 更新版本至0.4.4并优化数据库管理技能文档 - 更新版本号从0.4.2到0.4.4 - 优化API密钥权限管理说明,明确grant_api_key_permissions仅支持追加不支持撤销 - 新增add_sql_tool_to_datasource工具,提供一键创建SQL工具功能 - 调整create_sql_tool说明,强调需技能已存在 - 强化数据写操作安全机制,插入/更新/删除前必须预览并等待用户确认 - 完善导入数据功能说明,详细解释confirm_import_data参数传递方式 - 补充技能与工具管理流程,提供更清晰的操作指引 - 新增数字员工平台数据库技能配置指南文档 ```
This commit is contained in:
BIN
.kilo/skills/lzwcai-agile-db.zip
Normal file
BIN
.kilo/skills/lzwcai-agile-db.zip
Normal file
Binary file not shown.
@@ -2,7 +2,7 @@
|
||||
name: lzwcai-agile-db
|
||||
description: AgileDB 数据库管理平台的 MCP 技能。为 AI Agent 提供完整的数据库操作工作流指导,适合零基础用户。
|
||||
metadata:
|
||||
version: 0.4.2
|
||||
version: 0.4.4
|
||||
---
|
||||
|
||||
# lzwcai-agile-db
|
||||
@@ -97,17 +97,16 @@ AgileDB 数据库管理平台的 MCP 技能。为 AI Agent 提供完整的数据
|
||||
| `toggle_api_key_status` | 启用/禁用 API 密钥 | 中等 |
|
||||
| `delete_api_key` | 删除 API 密钥 | **危险** |
|
||||
| `get_api_key_permissions` | 查看指定密钥的权限配置 | 安全 |
|
||||
| `grant_api_key_permissions` | 批量为 API 密钥授予权限 | **危险** |
|
||||
| `revoke_api_key_permissions` | 撤销/删除已授予的权限(按权限记录 ID) | **危险** |
|
||||
| `grant_api_key_permissions` | 批量为 API 密钥授予权限(仅追加,不可撤销) | **危险** |
|
||||
|
||||
### 九、技能与工具管理(7 个工具)
|
||||
|
||||
| 工具 | 功能 | 危险等级 |
|
||||
|------|------|----------|
|
||||
| `add_sql_tool_to_datasource` | 把 SQL 沉淀为工具(一步到位,自动建技能+配模板+建工具,去重幂等)**唯一推荐入口** | 中等 |
|
||||
| `get_skill_by_datasource` | 根据数据源获取技能信息 | 安全 |
|
||||
| `get_skill_tools` | 获取技能下的工具列表 | 安全 |
|
||||
| `create_skill` | 为数据源创建技能 | 中等 |
|
||||
| `create_sql_tool` | 将 SQL 查询创建为可复用工具 | 中等 |
|
||||
| `create_sql_tool` | 将 SQL 创建为可复用工具(底层积木,需技能已存在) | 中等 |
|
||||
| `delete_skill_tool` | 删除技能下的工具 | **危险** |
|
||||
| `update_skill_config` | 更新技能配置(名称/描述/模板) | 中等 |
|
||||
| `update_skill_tool` | 修改技能工具(id+description+uniqueName) | 中等 |
|
||||
@@ -188,16 +187,19 @@ AgileDB 数据库管理平台的 MCP 技能。为 AI Agent 提供完整的数据
|
||||
|
||||
当执行以下类型的操作时,**必须先询问用户确认**,不得擅作主张:
|
||||
|
||||
1. **删除操作**:删除数据源、删除表数据、删除 API 密钥、删除技能工具等
|
||||
1. **数据写操作(增 / 删 / 改)**:插入数据(`insert_table_row`)、更新数据(`update_table_row`)、删除数据(`delete_table_rows`)、导入数据(`confirm_import_data`)等
|
||||
- 说明:写操作会改变库中数据,**执行前必须把将要写入/修改/删除的具体内容预览给用户,等待用户明确确认后才执行**;删除不可恢复
|
||||
|
||||
2. **删除操作**:删除数据源、删除表数据、删除 API 密钥、删除技能工具等
|
||||
- 说明:此操作不可恢复,数据将永久丢失
|
||||
|
||||
2. **泄密风险操作**:导出包含敏感数据的表、创建 API 密钥、查看密钥详情等
|
||||
3. **泄密风险操作**:导出包含敏感数据的表、创建 API 密钥、查看密钥详情等
|
||||
- 说明:可能导致敏感信息泄露,需确认用户授权
|
||||
|
||||
3. **政治敏感操作**:涉及政治相关数据的查询、修改、删除等
|
||||
4. **政治敏感操作**:涉及政治相关数据的查询、修改、删除等
|
||||
- 说明:可能涉及合规风险,需确认用户意图
|
||||
|
||||
4. **疑似违规内容**:涉及色情、暴力、违法等内容的操作
|
||||
5. **疑似违规内容**:涉及色情、暴力、违法等内容的操作
|
||||
- 说明:可能违反法律法规,必须拒绝执行并告知用户
|
||||
|
||||
#### 确认格式
|
||||
@@ -448,6 +450,8 @@ AgileDB 数据库管理平台的 MCP 技能。为 AI Agent 提供完整的数据
|
||||
|
||||
当用户需要修改表中的数据时,使用此流程。
|
||||
|
||||
> 🔒 **写操作统一规则(插入 / 更新 / 删除都适用)**:在调用 `insert_table_row` / `update_table_row` / `delete_table_rows` 之前,**必须先把将要写入/修改/删除的具体数据预览给用户,并等待用户明确确认后才执行**。不得在用户未确认的情况下直接落库。
|
||||
|
||||
### 4.1 插入数据
|
||||
|
||||
```
|
||||
@@ -457,9 +461,11 @@ AgileDB 数据库管理平台的 MCP 技能。为 AI Agent 提供完整的数据
|
||||
↓
|
||||
2. 确认必填字段(非空字段、无默认值字段)
|
||||
↓
|
||||
3. 调用 insert_table_row(tableId="xx", data={...})
|
||||
3. 向用户展示将要插入的数据,询问"确认插入以上数据?",等待用户确认
|
||||
↓
|
||||
4. 确认插入成功
|
||||
4. 用户确认后,调用 insert_table_row(tableId="xx", data={...})
|
||||
↓
|
||||
5. 确认插入成功
|
||||
```
|
||||
|
||||
**示例**:
|
||||
@@ -470,6 +476,12 @@ AgileDB 数据库管理平台的 MCP 技能。为 AI Agent 提供完整的数据
|
||||
调用: get_table_detail(tableId="5")
|
||||
返回: {columns: [{name: "id", isPrimaryKey: true, isAutoIncrement: true}, {name: "username", isNullable: false}, ...]}
|
||||
|
||||
回复: 即将向 users 表插入以下数据:
|
||||
username = test_user, email = test@test.com
|
||||
(id 自动生成)。确认插入吗?
|
||||
|
||||
用户: "确认"
|
||||
|
||||
调用: insert_table_row(
|
||||
tableId="5",
|
||||
data={"username": "test_user", "email": "test@test.com"}
|
||||
@@ -484,9 +496,11 @@ AgileDB 数据库管理平台的 MCP 技能。为 AI Agent 提供完整的数据
|
||||
↓
|
||||
1. 确认主键字段和要更新的值
|
||||
↓
|
||||
2. 调用 update_table_row(tableId="xx", primaryKey={主键}, data={要更新的字段})
|
||||
2. 向用户展示「目标行 + 改动前→改动后」的预览,询问"确认更新?",等待用户确认
|
||||
↓
|
||||
3. 确认更新成功
|
||||
3. 用户确认后,调用 update_table_row(tableId="xx", primaryKey={主键}, data={要更新的字段})
|
||||
↓
|
||||
4. 确认更新成功
|
||||
```
|
||||
|
||||
**示例**:
|
||||
@@ -494,6 +508,12 @@ AgileDB 数据库管理平台的 MCP 技能。为 AI Agent 提供完整的数据
|
||||
**用户**: "把 ID 为 5 的用户邮箱改成 new@test.com"
|
||||
|
||||
```
|
||||
回复: 即将更新 users 表 ID=5 的记录:
|
||||
email: old@test.com → new@test.com
|
||||
确认更新吗?
|
||||
|
||||
用户: "确认"
|
||||
|
||||
调用: update_table_row(
|
||||
tableId="5",
|
||||
primaryKey={"id": 5},
|
||||
@@ -566,7 +586,7 @@ AgileDB 数据库管理平台的 MCP 技能。为 AI Agent 提供完整的数据
|
||||
```
|
||||
|
||||
### 注意事项
|
||||
- **删除操作必须二次确认**
|
||||
- **写操作(插入/更新/删除)执行前必须先预览数据并等待用户确认**;删除操作不可恢复,需格外谨慎
|
||||
- `primaryKey` 必须是对象格式,如 `{"id": 1}`
|
||||
- `primaryKeys` 是数组格式,如 `[{"id": 1}, {"id": 2}]`
|
||||
- `data` 只包含要更新的字段,不需要提供全部字段
|
||||
@@ -711,6 +731,47 @@ AgileDB 数据库管理平台的 MCP 技能。为 AI Agent 提供完整的数据
|
||||
6. 确认导入成功(返回含 insertedRows 插入行数)
|
||||
```
|
||||
|
||||
### confirm_import_data 的 data 传什么
|
||||
|
||||
把 `preview_import_data` 返回的 data 原文整块传给 `data` 参数即可,工具会自动解包组装。data 的标准形态(= preview 返回):
|
||||
|
||||
```json
|
||||
{
|
||||
"tableStructure": {
|
||||
"success": true,
|
||||
"message": "Excel表结构生成成功",
|
||||
"data": {
|
||||
"tables": [
|
||||
{
|
||||
"tableName": "animals",
|
||||
"tableComment": "宠物信息表",
|
||||
"columns": [
|
||||
{ "columnName": "id", "columnType": "SERIAL", "isPrimaryKey": true, "isAdditionField": true },
|
||||
{ "columnName": "animal_name", "columnType": "VARCHAR", "columnLength": 5000 }
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
"allData": [
|
||||
["id", "animal_name", "..."],
|
||||
["1", "豆豆", "..."],
|
||||
["2", "咪咪", "..."]
|
||||
]
|
||||
},
|
||||
"databaseName": "pp_test",
|
||||
"target": "prod"
|
||||
}
|
||||
```
|
||||
|
||||
- `tableStructure`:preview 的表结构包装(`{success, message, data:{tables:[...]}}`),工具会取 `tables[0]` 当单表对象,并把 `databaseName` 塞进去。
|
||||
- `databaseName` / `target` 既可放顶层参数,也可放在 `data` 里,工具都认。
|
||||
- ⚠️ **allData 是二维数组,首行必须是「列名表头行」**:
|
||||
- `allData[0]` = 各列的 `columnName`(列名表头),**真实数据从 `allData[1]` 起**;
|
||||
- 每行(含表头行)都是按 `columns` 顺序排列的位置数组,**行宽 = 列总数**(含 `SERIAL` 主键等所有列,**不裁剪**,主键列给占位值即可,后端自增时会忽略);
|
||||
- 若传入的 allData 没带表头行(首行就是数据),工具会**据列名自动补一行表头**——否则后端会把首行数据当成字段名,报「查询字段不存在/字段名称不正确」。
|
||||
- ⚠️ **columns / 表头列名必须对应目标表真实存在的字段**:后端按列名拼 INSERT,`tableStructure.columns`(以及 allData 首行表头)里的列名必须是目标表里**确实存在的字段名**,否则报「查询字段不存在 / 字段名称不正确」。
|
||||
- **导入到已有表时**:不要直接用 Excel 识别出的列,应**先 `get_table_detail(tableId="xx")` 拿到目标表真实字段,再把 data 里的 columns、allData 首行表头、各行取值都对齐到这些真实字段**(前端就是用目标表真实列覆盖 AI 识别列的)。
|
||||
|
||||
### 注意事项
|
||||
- 文件大小限制:< 500KB
|
||||
- 支持格式:.xlsx / .xls
|
||||
@@ -720,6 +781,7 @@ AgileDB 数据库管理平台的 MCP 技能。为 AI Agent 提供完整的数据
|
||||
- `file_url` 对应的文件扩展名需为 `.xlsx` / `.xls`
|
||||
- **`confirm_import_data` 必须传 `databaseName`**(落库目标库);`data` 直接传 `preview_import_data` 的返回原文即可,工具内部会自动解包并组装成 `{tableStructure(含databaseName), allData}`
|
||||
- AI 识别会把中文表头转成英文列名(如「姓名」→`name`);若导入数据键名与生成的列名对不上会报「未找到 XX 字段」,此时需按预览返回的列名核对
|
||||
- 后端报「插入数据失败(第N行):查询字段不存在/字段名称不正确」时,多半是 **allData 缺了列名表头行**(后端把首行数据当成了字段名),或某行列数与 `columns` 对不上——确认首行是列名、每行值个数 = 列总数
|
||||
|
||||
---
|
||||
|
||||
@@ -798,28 +860,55 @@ AgileDB 数据库管理平台的 MCP 技能。为 AI Agent 提供完整的数据
|
||||
- `database`:数据库级别权限
|
||||
- `table`:表级别权限
|
||||
|
||||
### 7.7 撤销权限
|
||||
> ⚠️ 权限为「仅追加」模型:`grant_api_key_permissions` 只能新增权限,不会覆盖已有权限,且后端**不支持撤销/删除已授予的权限**。授权前务必确认范围,授错只能删掉整个密钥(`delete_api_key`)后重建。
|
||||
|
||||
### 7.7 调整权限(只能重建密钥)
|
||||
|
||||
```
|
||||
调用: get_api_key_permissions(apiKeyId="7")
|
||||
返回: {
|
||||
"data": {
|
||||
"connectionPermissions": [{"id": "101", "connectionId": "58", "permissionType": "read"}],
|
||||
"databasePermissions": [...],
|
||||
"tablePermissions": [...]
|
||||
}
|
||||
}
|
||||
|
||||
调用: revoke_api_key_permissions(permissionIds=["101"])
|
||||
# 后端不支持撤销单条权限。如需收回某密钥的权限,只能删除密钥后重新创建并重新授权:
|
||||
调用: delete_api_key(id="7")
|
||||
调用: create_api_key(apiKeyName="xxx")
|
||||
调用: grant_api_key_permissions(apiKeyId="<新密钥ID>", batchDatas=[...])
|
||||
```
|
||||
|
||||
> 说明:`revoke_api_key_permissions` 按权限记录的 `id` 删除,需先从 `get_api_key_permissions` 获取。
|
||||
> 说明:后端 permission 删除接口返回「不支持当前的调用方式」,无法撤销单条已授予权限。要缩小权限范围,走「删密钥 → 重建 → 重新授权」。
|
||||
|
||||
---
|
||||
|
||||
## 场景 8:技能与工具管理
|
||||
|
||||
当用户需要创建和管理自定义技能时,使用此流程。
|
||||
当用户需要把 SQL 沉淀为数据源的可复用工具时,使用此流程。
|
||||
|
||||
> 🔒 **核心约束:技能(skill)必须挂着工具才有效**。后端/前端都没有「只建空技能」这个动作——单独建技能会留下一个无效的空技能。前端唯一入口是「添加工具」,它会按需把技能建好、配好,最后必定以创建工具收尾。
|
||||
|
||||
### 8.0 一步到位:把 SQL 沉淀为工具(推荐)
|
||||
|
||||
**优先用 `add_sql_tool_to_datasource`**,它一步完成整条链路,保证技能必有工具:
|
||||
|
||||
```
|
||||
调用: add_sql_tool_to_datasource(
|
||||
datasourceId="58",
|
||||
name="查询活跃用户",
|
||||
businessDescription="查询所有状态为活跃的用户",
|
||||
sqlTemplate="SELECT * FROM users WHERE status = #{status}",
|
||||
sqlParams={"type":"object","required":["status"],"properties":{"status":{"type":"string","description":"用户状态","examples":["active"]}}}, // 可选
|
||||
resultType="list", // 可选,默认 list
|
||||
businessScenario="用于查看当前活跃用户列表", // 可选
|
||||
tableIds=["5"] // 可选
|
||||
)
|
||||
```
|
||||
|
||||
> **sqlParams 格式**:标准 JSON Schema,形如 `{"type":"object","required":[...],"properties":{"参数名":{"type":"...","description":"...","examples":[...]}}}`。`properties` 的键要与 SQL 模板里的 `#{参数名}` 占位符一一对应。传 dict 会自动序列化为 JSON 字符串;无参数可传 `{}`。
|
||||
|
||||
内部流程(= 前端 handleAddToolSubmit):
|
||||
```
|
||||
读 skillBool(GET /datasource/config/{id})
|
||||
├─ 技能已存在 → getByDatasource 拿 skillId → 按 sqlTemplate 去重 → confirmTools 建工具
|
||||
└─ 技能不存在 → createOrGet 建技能 → getByDatasource 拿 skillId → 去重
|
||||
→ updateOrGet 写 lzwcai-mcp-sqlexecutor 配置模板 → confirmTools 建工具
|
||||
```
|
||||
- **幂等**:同 datasourceId 下若已有 `sqlTemplate` 相同的工具(空白归一化后比较),返回 `skipped`,不重复创建。
|
||||
- **skillId 来自 getByDatasource**,不是 createOrGet 的返回(后端 createOrGet 不回可靠 id)。
|
||||
|
||||
### 8.1 查看数据源关联的技能
|
||||
|
||||
@@ -827,21 +916,23 @@ AgileDB 数据库管理平台的 MCP 技能。为 AI Agent 提供完整的数据
|
||||
调用: get_skill_by_datasource(datasourceId="58")
|
||||
```
|
||||
|
||||
### 8.2 创建技能
|
||||
|
||||
```
|
||||
调用: create_skill(datasourceId="58", name="订单查询技能", description="用于订单数据的常用查询")
|
||||
```
|
||||
|
||||
### 8.3 查看技能下的工具
|
||||
|
||||
```
|
||||
调用: get_skill_tools(skillId="xx")
|
||||
```
|
||||
|
||||
### 8.4 将 SQL 创建为可复用工具
|
||||
---
|
||||
|
||||
### 分步操作(高级,一般不需要)
|
||||
|
||||
> ⚠️ **不要单独建空技能**:技能必须挂着工具才有效,平时不会单独创建技能。常规「把 SQL 沉淀为工具」一律用 `add_sql_tool_to_datasource`(它会按需建技能+配模板+建工具)。下面的散工具仅用于「技能已存在」时单独加/改工具。
|
||||
|
||||
### 8.4 向已有技能添加 SQL 工具(底层积木,需技能已存在)
|
||||
|
||||
```
|
||||
# 前提:技能已存在(用 get_skill_by_datasource 拿到 skillId);
|
||||
# 若技能不存在,请直接用 add_sql_tool_to_datasource,别手动建空技能
|
||||
调用: create_sql_tool(
|
||||
skillId="xx",
|
||||
tableIds=["5"],
|
||||
@@ -849,7 +940,7 @@ AgileDB 数据库管理平台的 MCP 技能。为 AI Agent 提供完整的数据
|
||||
"name": "查询活跃用户",
|
||||
"businessDescription": "查询所有状态为活跃的用户",
|
||||
"sqlTemplate": "SELECT * FROM users WHERE status = #{status}",
|
||||
"sqlParams": {"status": {"type": "string", "default": "active"}},
|
||||
"sqlParams": {"type":"object","required":["status"],"properties":{"status":{"type":"string","description":"用户状态","examples":["active"]}}},
|
||||
"resultType": "list",
|
||||
"businessScenario": "用于查看当前活跃用户列表"
|
||||
}]
|
||||
@@ -870,12 +961,24 @@ AgileDB 数据库管理平台的 MCP 技能。为 AI Agent 提供完整的数据
|
||||
### 8.6 更新技能配置
|
||||
|
||||
```
|
||||
# datasourceId + skillId 均必填(真实 ID,来自其他工具返回,不可臆造)
|
||||
# 只给这两个 ID 即自动生成 lzwcai-mcp-sqlexecutor 标准配置模板
|
||||
调用: update_skill_config(
|
||||
datasourceId="58", // 来自 list_databases / list_tables_with_ai / get_connection_config_list
|
||||
skillId="xx" // 来自 get_skill_by_datasource 返回
|
||||
)
|
||||
|
||||
# 或:手动指定完整 configTemplate(覆盖自动生成)
|
||||
调用: update_skill_config(
|
||||
datasourceId="58",
|
||||
configTemplate='{"mcpServer": "..."}' // JSON 字符串
|
||||
skillId="xx",
|
||||
configTemplate='{"mcpServers": {...}}' // JSON 字符串
|
||||
)
|
||||
```
|
||||
|
||||
> 说明:configTemplate 大部分是固定值,只有 mcpServerKey 后缀、`env.databaseId`、`env.skillId` 随 datasourceId / skillId 变化。两个 ID 都必填且必须是其他工具返回的真实值。不显式传 configTemplate 时,工具会按标准模板自动生成(与前端 SqlControllerMsg.vue 一致),无需手写整段 JSON。
|
||||
|
||||
|
||||
### 8.7 修改技能下某个工具
|
||||
|
||||
```
|
||||
|
||||
343
.kilo/skills/数字员工平台数据库技能的.md
Normal file
343
.kilo/skills/数字员工平台数据库技能的.md
Normal file
@@ -0,0 +1,343 @@
|
||||
# 数字员工平台数据库技能配置指南
|
||||
|
||||
## 概述
|
||||
|
||||
本文档介绍两种使用数字员工平台数据库技能的方法:
|
||||
- **方法一**:通过数字员工对话直接使用
|
||||
- **方法二**:通过 AI 编辑器的 Skills + MCP 搭配使用
|
||||
|
||||
---
|
||||
|
||||
## 方法一:通过数字员工对话使用
|
||||
|
||||
### 配置说明
|
||||
|
||||
此方法通过配置 MCP Server 来连接数字员工平台。
|
||||
|
||||
### MCP 配置示例
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"lzwcai-mcp-agile-db": {
|
||||
"command": "uvx",
|
||||
"type": "stdio",
|
||||
"args": [
|
||||
"lzwcai-mcp-agile-db"
|
||||
],
|
||||
"timeout": 600,
|
||||
"env": {
|
||||
"API_KEY": "eyJhbGciOiJIUzUxMiJ9.eyJ0b2tlbl90eXBlIjoiTE9HSU4iLCJsb2dpbl91c2VyX2tleSI6IjljMDllMjZhLWFkNzgtNGNmMi05YzQ5LWQzY2Y5NjI5MGRjYyJ9.v5ZffkvM2CnMkoWqc-Xy-0gN2oLBjyfJlm_YnCE6TWBwfKVmpuakoRXFMTiHQG8LOphv7JlEmZHcYpzwM52D0Q"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 注意事项
|
||||
|
||||
- 配置中的 `API_KEY` 是数字员工平台的密钥
|
||||
- 存在单点登录问题,请使用不会过期的账号密钥
|
||||
- Skills 配置参考:`lzwcai-agile-db`
|
||||
|
||||
---
|
||||
|
||||
## 方法二:通过 AI 编辑器使用
|
||||
|
||||
### 配置说明
|
||||
|
||||
此方法通过下载 Skills 和 MCP 配置,在 AI 编辑器中搭配使用,支持直接对话操作。
|
||||
|
||||
### MCP 配置示例
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"lzwcai_mcp_agile_db": {
|
||||
"command": "uvx",
|
||||
"args": [
|
||||
"lzwcai-mcp-agile-db"
|
||||
],
|
||||
"env": {
|
||||
"UV_INDEX_URL": "http://192.168.2.236:3141/lzwc/dev/+simple/",
|
||||
"API_KEY": "eyJhbGciOiJIUzUxMiJ9.eyJ0b2tlbl90eXBlIjoiTE9HSU4iLCJsb2dpbl91c2VyX2tleSI6IjljMDllMjZhLWFkNzgtNGNmMi05YzQ5LWQzY2Y5NjI5MGRjYyJ9.v5ZffkvM2CnMkoWqc-Xy-0gN2oLBjyfJlm_YnCE6TWBwfKVmpuakoRXFMTiHQG8LOphv7JlEmZHcYpzwM52D0Q",
|
||||
"backendBaseUrl": "http://192.168.2.236:8088"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 环境变量说明
|
||||
|
||||
| 变量名 | 说明 | 示例值 |
|
||||
|--------|------|--------|
|
||||
| `UV_INDEX_URL` | Python 包索引地址 | `http://192.168.2.236:3141/lzwc/dev/+simple/` |
|
||||
| `API_KEY` | 数字员工平台 API 密钥 | (见配置示例) |
|
||||
| `backendBaseUrl` | 后端服务基础地址 | `http://192.168.2.236:8088` |
|
||||
|
||||
---
|
||||
|
||||
## 使用建议
|
||||
|
||||
1. **选择方法**:根据实际使用场景选择合适的方法
|
||||
- 数字员工对话:适合快速使用
|
||||
- AI 编辑器:适合更灵活的配置和使用
|
||||
|
||||
2. **密钥管理**:妥善保管 `API_KEY`,避免泄露
|
||||
|
||||
3. **网络配置**:确保网络可以访问配置的后端地址
|
||||
|
||||
---
|
||||
|
||||
## 相关资源
|
||||
|
||||
- Skills 目录:`lzwcai-agile-db/`
|
||||
- 详细技能文档:`lzwcai-agile-db/SKILL.md`
|
||||
|
||||
---
|
||||
|
||||
## 对话使用场景示例
|
||||
|
||||
以下是配置好技能后,您可以直接使用的对话示例:
|
||||
|
||||
### 📊 场景 1:浏览数据源和表
|
||||
|
||||
**用户:** "帮我看看有哪些数据源"
|
||||
|
||||
**AI 回复:**
|
||||
```
|
||||
共找到 3 个数据源:
|
||||
1. HMD产品(PostgreSQL, 运行中)
|
||||
2. 测试数据库(MySQL, 运行中)
|
||||
3. 历史数据(Oracle, 已停止)
|
||||
|
||||
请告诉我您想看哪个数据源?
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**用户:** "看看HMD产品有哪些表"
|
||||
|
||||
**AI 回复:**
|
||||
```
|
||||
HMD产品 数据源包含以下数据库和表:
|
||||
|
||||
order_db:
|
||||
- orders (订单表, 15 个字段, 2568 条记录)
|
||||
- users (用户表, 8 个字段, 156 条记录)
|
||||
- products (商品表, 12 个字段, 892 条记录)
|
||||
|
||||
analytics_db:
|
||||
- daily_stats (日报表, 10 个字段, 365 条记录)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 🔍 场景 2:查询表数据
|
||||
|
||||
**用户:** "查一下users表前10条数据"
|
||||
|
||||
**AI 回复:**
|
||||
```
|
||||
users 表共 156 条记录,当前显示第 1-10 条:
|
||||
|
||||
| id | username | email | status | created_at |
|
||||
|----|----------|-----------------|--------|---------------------|
|
||||
| 1 | admin | admin@test.com | active | 2024-01-01 00:00:00 |
|
||||
| 2 | user1 | user1@test.com | active | 2024-01-02 10:30:00 |
|
||||
| 3 | user2 | user2@test.com | inactive| 2024-01-03 15:45:00 |
|
||||
...
|
||||
|
||||
注:默认查询测试环境,如需查询生产环境请说明。
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 📝 场景 3:执行 SQL 查询
|
||||
|
||||
**用户:** "统计每个地区的订单数量"
|
||||
|
||||
**AI 回复:**
|
||||
```
|
||||
各地区订单统计:
|
||||
|
||||
| 地区 | 订单数 |
|
||||
|------|--------|
|
||||
| 华东 | 1,250 |
|
||||
| 华南 | 980 |
|
||||
| 华北 | 756 |
|
||||
| 西南 | 432 |
|
||||
| 东北 | 289 |
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ➕ 场景 4:插入数据
|
||||
|
||||
**用户:** "新增一个用户,用户名是test_user,邮箱test@test.com"
|
||||
|
||||
**AI 回复:**
|
||||
```
|
||||
即将向 users 表插入以下数据:
|
||||
username = test_user
|
||||
email = test@test.com
|
||||
(id 自动生成)
|
||||
|
||||
确认插入吗?
|
||||
```
|
||||
|
||||
**用户:** "确认"
|
||||
|
||||
**AI 回复:**
|
||||
```
|
||||
✅ 已成功插入用户 test_user (ID: 157)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### ✏️ 场景 5:更新数据
|
||||
|
||||
**用户:** "把ID为5的用户邮箱改成new@test.com"
|
||||
|
||||
**AI 回复:**
|
||||
```
|
||||
即将更新 users 表 ID=5 的记录:
|
||||
email: old@test.com → new@test.com
|
||||
|
||||
确认更新吗?
|
||||
```
|
||||
|
||||
**用户:** "确认"
|
||||
|
||||
**AI 回复:**
|
||||
```
|
||||
✅ 已更新用户 ID=5 的邮箱为 new@test.com
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 🗑️ 场景 6:删除数据
|
||||
|
||||
**用户:** "删除ID为10的订单"
|
||||
|
||||
**AI 回复:**
|
||||
```
|
||||
⚠️ 安全提醒:此操作存在删除风险。
|
||||
具体说明:数据将永久删除,不可恢复。
|
||||
|
||||
确认要删除以下记录吗?
|
||||
订单 ID=10, 订单号=ORD-2024-0010, 金额=¥1,250.00
|
||||
|
||||
请回复"确认删除"继续。
|
||||
```
|
||||
|
||||
**用户:** "确认删除"
|
||||
|
||||
**AI 回复:**
|
||||
```
|
||||
✅ 已成功删除订单 ID=10
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 🤖 场景 7:AI 生成表结构
|
||||
|
||||
**用户:** "帮我设计一个商品表,包含名称、价格、库存、分类"
|
||||
|
||||
**AI 回复:**
|
||||
```
|
||||
AI 已生成表结构设计:
|
||||
|
||||
表名: products (商品表)
|
||||
字段:
|
||||
- id (SERIAL, 主键) - 主键ID
|
||||
- name (VARCHAR(200), 非空) - 商品名称
|
||||
- price (DECIMAL(10,2)) - 价格
|
||||
- stock (INTEGER) - 库存数量
|
||||
- category (VARCHAR(50)) - 分类
|
||||
- created_at (TIMESTAMP) - 创建时间
|
||||
|
||||
是否需要在此基础上修改或直接创建?
|
||||
```
|
||||
|
||||
**用户:** "直接创建到order_db数据库"
|
||||
|
||||
**AI 回复:**
|
||||
```
|
||||
✅ 已成功创建表 products (商品表)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 📥 场景 8:导入 Excel 数据
|
||||
|
||||
**用户:** "帮我导入这个Excel文件:https://example.com/data.xlsx"
|
||||
|
||||
**AI 回复:**
|
||||
```
|
||||
AI 已识别 Excel 文件内容:
|
||||
|
||||
表名: customers (客户表)
|
||||
字段:
|
||||
- id (SERIAL, 主键)
|
||||
- name (VARCHAR(100)) - 客户名称
|
||||
- phone (VARCHAR(20)) - 电话
|
||||
- address (TEXT) - 地址
|
||||
|
||||
预览数据(前3条):
|
||||
| id | name | phone | address |
|
||||
|----|--------|------------|----------------|
|
||||
| 1 | 张三 | 13800138000| 北京市朝阳区 |
|
||||
| 2 | 李四 | 13900139000| 上海市浦东新区 |
|
||||
| 3 | 王五 | 13700137000| 广州市天河区 |
|
||||
|
||||
共 50 条数据待导入。
|
||||
|
||||
⚠️ 安全提醒:此操作可能涉及数据安全风险。
|
||||
说明:导入的数据将写入数据库,请确认数据来源合法合规。
|
||||
请确认是否继续?
|
||||
```
|
||||
|
||||
**用户:** "继续"
|
||||
|
||||
**AI 回复:**
|
||||
```
|
||||
✅ 成功导入 50 条数据到 customers 表
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 🔑 场景 9:API 密钥管理
|
||||
|
||||
**用户:** "帮我创建一个新的API密钥"
|
||||
|
||||
**AI 回复:**
|
||||
```
|
||||
请输入密钥名称:
|
||||
```
|
||||
|
||||
**用户:** "测试密钥"
|
||||
|
||||
**AI 回复:**
|
||||
```
|
||||
✅ 已创建 API 密钥:
|
||||
名称: 测试密钥
|
||||
密钥: lzwc_sk_xxxxxxxxxxxx
|
||||
状态: 启用
|
||||
过期时间: 2025-06-18
|
||||
|
||||
请妥善保管密钥,丢失后无法找回。
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 重要使用提示
|
||||
|
||||
1. **环境选择:** 默认使用测试环境(`test`),操作生产环境需要明确说明"查询生产环境"或"操作生产环境"
|
||||
|
||||
2. **安全确认:** 所有写操作(增删改)都会先预览并等待您的确认
|
||||
|
||||
3. **多选原则:** 有多个数据源/数据库/表可选时,AI会列出让您选择,不会擅自做主
|
||||
|
||||
4. **分步执行:** 复杂任务会分步完成,每一步都会确认后再继续
|
||||
Reference in New Issue
Block a user