From 100124da3e569a29919809a91c1435049f65d385 Mon Sep 17 00:00:00 2001 From: runstone Date: Fri, 12 Jun 2026 17:42:23 +0800 Subject: [PATCH] =?UTF-8?q?feat(ai):=20Phase=202=20SQL=20=E9=A3=8E?= =?UTF-8?q?=E9=99=A9=E5=88=86=E7=B1=BB=20+=20Agent=20=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E8=B0=83=E7=94=A8=E7=BB=93=E6=9E=9C=E6=B8=B2?= =?UTF-8?q?=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 后端: - 新增 sql_risk.rs:基于 sqlparser AST 的 SQL 风险分类(ReadOnly/Write/Ddl/Transaction) - agent_tools.rs:新增 execute_query 和 get_sample_data 工具,写操作/DDL 被风险分类阻止 - agent_loop.rs:支持 is_agent_mode 参数,Agent 模式下暴露全部工具,Ask 模式仅暴露只读工具 - agent_loop/web/tauri:mode 参数全链路传递(前端→HTTP→Tauri→Rust) 前端: - AiAgentStepItem 接口扩展:toolName/toolArgs/toolResult/isError 字段 - AiAssistant.vue:工具调用结果实时+最终渲染,SQL 查询结果/错误信息展示 - ai.ts/http.ts/tauri.ts:mode 参数透传到后端 --- .../src/components/editor/AiAssistant.vue | 60 +++-- apps/desktop/src/lib/ai.ts | 1 + .../src/lib/aiAgentStepPresentation.ts | 10 +- apps/desktop/src/lib/http.ts | 8 +- apps/desktop/src/lib/tauri.ts | 6 +- crates/dbx-core/src/agent_loop.rs | 13 +- crates/dbx-core/src/agent_tools.rs | 208 ++++++++++++++++- crates/dbx-core/src/lib.rs | 1 + crates/dbx-core/src/sql_risk.rs | 211 ++++++++++++++++++ crates/dbx-web/src/routes/ai.rs | 10 + src-tauri/src/commands/ai.rs | 5 +- 11 files changed, 501 insertions(+), 32 deletions(-) create mode 100644 crates/dbx-core/src/sql_risk.rs diff --git a/apps/desktop/src/components/editor/AiAssistant.vue b/apps/desktop/src/components/editor/AiAssistant.vue index d59ba3ea7f..a29000e1d9 100644 --- a/apps/desktop/src/components/editor/AiAssistant.vue +++ b/apps/desktop/src/components/editor/AiAssistant.vue @@ -1,4 +1,4 @@ -