一、立项背景
企业业务数据沉淀于数据库却难以被非技术人员直接查询分析,电价预测、数据可视化、模型训练等专业任务依赖多套工具且操作复杂。本平台将大语言模型的多智能体协作能力与企业数据查询、可视化、机器学习及外部 API 调用深度整合,以自然语言为交互入口,让业务人员零门槛完成"智能问数、画图分析、模型训练、电价查询"等专业任务。
二、核心功能模块
平台基于 Electron + Python 引擎架构,内置 7 个 AI Agent(通用对话、数据分析、信息查询、模型训练、电价预测、数据可视化、智能问数)和 17 个可绑定技能,通过 LLM 网关统一调度多模型、SkillRegistry 管理技能注册与权限校验、Orchestrator 实现意图路由分发,覆盖 NL2SQL 自然语言转 SQL 查询、Matplotlib SVG 矢量图表绘制、LightGBM/XGBoost 自动训练与预测、MCP 协议电价预测、以及机器指纹绑定与离线授权管理等核心能力。
三、业务流程
用户输入自然语言后,系统通过 LLM 意图识别与关键词规则匹配自动路由到最优 Agent;Agent 通过 Tool Calling 多轮调用已绑定技能(如获取数据库 Schema → 理解表结构 → 生成安全 SQL → 执行查询 → 调用可视化技能生成 SVG 图表),执行结果自动组装为 interactive_card(图表/表格/预测曲线卡片),经 SSE 流式推送至前端实时渲染,全程无需用户接触代码或切换工具。
一、整体架构与设计思路
技术栈:前端 Electron + React(JavaScript),后端 Python 引擎(通信/计算/LLM 调度),数据层 SQLite + AES-256 加密,进程间通过 Windows 命名管道 + JSON-RPC 双向通信,LLM 调用走 OpenAI 兼容 API(支持 DeepSeek / Qwen / 豆包 / Kimi 等 6+ 厂商),图表渲染基于 Matplotlib 输出 SVG 矢量图。设计思路遵循"Electron 零业务逻辑"原则——前端仅负责 UI 渲染和消息转发,所有 Agent 编排、技能执行、LLM 调用、SQL 安全校验均在 Python 侧完成,通过多阶段分步注册(Phase 1-5:基础 IPC → GraphRuntime → 模型网关 → 多智能体 → MCP 市场)实现模块解耦和渐进式扩展。
二、个人产品
平台已内置 7 个 AI Agent(通用对话/数据分析/信息查询/模型训练/电价预测/数据可视化/智能问数)、17 个可绑定技能(含 3 个 NL2SQL 技能 + 5 个模型训练技能 + 3 个可视化技能 + MCP 工具)、6 个 LLM 服务商接入能力和 7 种机器学习算法(LightGBM / XGBoost / 随机森林等)自动训练管线。通过 5 个阶段的分层注册机制管理约 20 个 IPC Handler 模块,LLM 网关支持流式 SSE 输出和 2 次自动重试,SQL 安全策略覆盖 5 项规则(最大行数/超时/写拦截/表白名单/黑名单),许可证模块实现机器指纹 SHA256 + AES-256 + HMAC 签名三重防护。
三、难点与解决方案
难点一:Agent 技能动态绑定后的缓存一致性问题。 SkillRegistry 在启动时将技能加载到内存缓存,后续通过 SQL 脚本注册的技能在缓存中不可见,导致 Agent 调用时报"技能不存在"。解决:重写 get_meta() 方法,缓存未命中时自动回退查库并回填缓存,实现零重启热更新。
难点二:多 Agent 调用可视化技能后 SVG 卡片丢失。 _stream_llm_tool_calling_loop 中构建 interactive_card 的条件硬编码为 agent.agent_id == "data_viz",导致 nl2sql Agent 调用 draw_chart 成功但 SVG 无法推送到前端。解决:去掉 Agent ID 硬编码限制,改为任意 Agent 只要技能执行结果包含 charts 或 html_table 即自动构建卡片,实现"绑定即能用"的完全动态化。