工具系统
**本文引用的文件** - [[bi-analysis/cmd/bi-analysis/main.go]](../ai/file/bi-analysis/cmd/bi-analysis/main.go) - [[bi-common/utils/validation/validate.go]](../ai/file/bi-common/utils/validation/validate.go) - [[bi-common/apitypes/request.go]](../ai/file/bi-common/apitypes/request.go) - [[bi-chat/bi_chat/src/agents/tools.py]](../ai/file/bi-chat/bi-chat/src/agents/tools.py) - [[bi-chat/bi_chat/src/tools/knowledge.py]](../ai/file/bi-chat/bi-chat/src/tools/knowledge.py) - [[bi-chat/bi_chat/src/core/vector_db.py]](../ai/file/bi-chat/bi-chat/src/core/vector-db.py) - [[bi-chat/scripts/test_milvus.py]](../ai/file/bi-chat/scripts/test-milvus.py) - [[mcp-server-starrocks/src/mcp_server_starrocks/db_client.py]](../ai/file/mcp-server-starrocks/src/mcp-server-starrocks/db-client.py) - [[bi-chat/bi-chat-web/src/components/chat/ChartViewer.tsx]](../ai/file/bi-chat/bi-chat-web/src/components/chat/chartviewer.tsx) - [[bi-chat/bi-chat-web/src/components/chat/ChartRenderer.tsx]](../ai/file/bi-chat/bi-chat-web/src/components/chat/chartrenderer.tsx) - [[_bmad/bmb/workflows/workflow/steps-c/step-04-tools.md]](../ai/file/bmad/bmb/workflows/workflow/steps-c/step-04-tools.md) - [[ui-web/src/components/common/biTable/components/PersonalizationDrawer.tsx]](../ai/file/ui-web/src/components/common/bitable/components/personalizationdrawer.tsx) - [[AGENTS.md]](../ai/file/agents.md)
目录
引言
本文件面向BI分析平台的“工具系统”,系统性梳理并规范工具接口的设计与实现,覆盖以下主题:
- 工具注册机制与调用约定
- 参数校验与结果处理
- 数据查询工具:SQL构建、查询优化、结果格式化
- 报表生成工具:模板渲染、样式定制、导出格式支持
- 图表绘制工具:图表类型选择、数据映射、交互功能
- 向量数据库工具:向量检索、相似度计算、语义搜索
- 工具扩展开发:自定义工具的创建、测试与集成流程
- 安全性与性能优化策略
项目结构
工具系统横跨多个子系统:
- 后端服务入口与配置:bi-analysis/cmd/bi-analysis/main.go
- 通用参数校验与请求模型:bi-common/utils/validation/validate.go、bi-common/apitypes/request.go
- 向量检索与知识工具:bi-chat/bi_chat/src/agents/tools.py、bi-chat/bi_chat/src/tools/knowledge.py、bi-chat/bi_chat/src/core/vector_db.py、bi-chat/scripts/test_milvus.py
- 数据库查询与性能分析:mcp-server-starrocks/src/mcp_server_starrocks/db_client.py
- 图表渲染:bi-chat/bi-chat-web/src/components/chat/ChartViewer.tsx、ChartRenderer.tsx
- 表格模板与个性化:ui-web/src/components/common/biTable/components/PersonalizationDrawer.tsx
- 工具工作流与规范:_bmad/bmb/workflows/workflow/steps-c/step-04-tools.md
- 质量与安全基线:AGENTS.md
图表来源
- [bi-analysis/cmd/bi-analysis/main.go]
- [bi-common/utils/validation/validate.go]
- [bi-common/apitypes/request.go]
- [bi-chat/bi_chat/src/agents/tools.py]
- [bi-chat/bi_chat/src/tools/knowledge.py]
- [bi-chat/bi_chat/src/core/vector_db.py]
- [mcp-server-starrocks/src/mcp_server_starrocks/db_client.py]
- [bi-chat/bi-chat-web/src/components/chat/ChartViewer.tsx]
- [bi-chat/bi-chat-web/src/components/chat/ChartRenderer.tsx]
- [ui-web/src/components/common/biTable/components/PersonalizationDrawer.tsx]
章节来源
- [bi-analysis/cmd/bi-analysis/main.go]
- [bi-common/utils/validation/validate.go]
- [bi-common/apitypes/request.go]
核心组件
- 服务启动与配置装载:负责从Nacos加载配置、初始化日志与注册中心、装配Kratos应用。
- 通用参数校验:提供端口、主机、URL、超时、IP、非空、正整数、范围等校验器,统一约束输入。
- 请求模型:提供ID、批量ID、时间范围、排序、分页+排序等通用请求体,便于统一绑定与校验。
- 向量检索工具:封装实体与指标检索,对接Milvus向量数据库,返回结构化上下文。
- 数据查询工具:封装StarRocks/MCP查询客户端,支持性能分析、分页、CSV导出、错误处理。
- 图表绘制工具:基于Recharts的图表组件,支持饼图、柱状图、折线图,可切换类型与样式。
- 报表生成工具:表格列模板解析与持久化,支持列可见性、聚合方式、趋势配置等个性化。
章节来源
- [bi-analysis/cmd/bi-analysis/main.go]
- [bi-common/utils/validation/validate.go]
- [bi-common/apitypes/request.go]
- [bi-chat/bi_chat/src/agents/tools.py]
- [bi-chat/bi_chat/src/tools/knowledge.py]
- [bi-chat/bi_chat/src/core/vector_db.py]
- [mcp-server-starrocks/src/mcp_server_starrocks/db_client.py]
- [bi-chat/bi-chat-web/src/components/chat/ChartViewer.tsx]
- [ui-web/src/components/common/biTable/components/PersonalizationDrawer.tsx]
架构总览
工具系统采用“后端服务 + 通用能力 + 前端可视化”的分层架构:
- 服务入口负责配置与注册,统一对外提供HTTP/GRPC服务。
- 通用能力模块提供参数校验与请求模型,确保输入一致性。
- 工具模块按领域拆分:向量检索、数据查询、图表渲染、报表模板。
- 前端组件负责用户交互与结果展示,支持模板与样式定制。
图表来源
- [bi-analysis/cmd/bi-analysis/main.go]
- [bi-common/utils/validation/validate.go]
- [bi-common/apitypes/request.go]
- [bi-chat/bi_chat/src/agents/tools.py]
- [bi-chat/bi_chat/src/core/vector_db.py]
- [mcp-server-starrocks/src/mcp_server_starrocks/db_client.py]
- [bi-chat/bi-chat-web/src/components/chat/ChartViewer.tsx]
- [ui-web/src/components/common/biTable/components/PersonalizationDrawer.tsx]
详细组件分析
工具注册与调用规范
- 注册机制:工具通过统一的服务入口装配,结合配置中心动态加载工具清单与参数。
- 调用约定:所有工具均遵循“输入参数校验 → 执行工具 → 输出结果格式化 → 错误处理”的流程。
- 工具清单:参考工具清单与工作流规范,确保工具具备上下文与明确的集成点。
图表来源
- [bi-analysis/cmd/bi-analysis/main.go]
- [bi-common/utils/validation/validate.go]
- [bi-common/apitypes/request.go]
章节来源
参数校验与结果处理
- 参数校验:提供端口、主机、URL、超时、IP、非空、正整数、范围等校验器,统一错误语义。
- 请求模型:ID、批量ID、时间范围、排序、分页+排序等模型,便于统一绑定与校验。
- 结果处理:工具返回统一的响应结构,包含状态码、消息与数据体;错误时返回结构化错误信息。
图表来源
章节来源
数据查询工具(SQL构建、查询优化、结果格式化)
- SQL构建:根据输入参数动态拼接条件与排序,限制最大分页大小,避免全表扫描。
- 查询优化:启用分页、索引提示、查询计划分析;对大结果集进行截断与统计。
- 结果格式化:支持CSV导出、字典结构、执行耗时统计、错误信息包装。
图表来源
章节来源
报表生成工具(模板渲染、样式定制、导出格式支持)
- 模板渲染:解析列配置与趋势配置,支持默认列与聚合方式。
- 样式定制:网格线、汇总行、列顺序、颜色等个性化设置。
- 导出格式:CSV/Excel等格式导出,包含元数据与执行信息。
图表来源
章节来源
图表绘制工具(图表类型选择、数据映射、交互功能)
- 图表类型:支持饼图、柱状图、折线图,自动切换与手动切换。
- 数据映射:X/Y轴键、系列映射、单元格样式、颜色主题。
- 交互功能:图例、网格、提示框、尺寸自适应。
图表来源
- [bi-chat/bi-chat-web/src/components/chat/ChartViewer.tsx]
- [bi-chat/bi-chat-web/src/components/chat/ChartRenderer.tsx]
章节来源
- [bi-chat/bi-chat-web/src/components/chat/ChartViewer.tsx]
- [bi-chat/bi-chat-web/src/components/chat/ChartRenderer.tsx]
向量数据库工具(向量检索、相似度计算、语义搜索)
- 实体检索:根据自然语言查询,从向量库检索相关实体表定义。
- 指标检索:检索业务指标定义,包含指标名称、含义、计算口径/公式。
- 相似度计算:使用L2距离与nprobe参数控制召回质量与性能。
- 语义搜索:支持多轮上下文与错误兜底,保证稳定性。
图表来源
- [bi-chat/bi_chat/src/agents/tools.py]
- [bi-chat/bi_chat/src/tools/knowledge.py]
- [bi-chat/bi_chat/src/core/vector_db.py]
- [bi-chat/scripts/test_milvus.py]
章节来源
- [bi-chat/bi_chat/src/agents/tools.py]
- [bi-chat/bi_chat/src/tools/knowledge.py]
- [bi-chat/bi_chat/src/core/vector_db.py]
- [bi-chat/scripts/test_milvus.py]
工具扩展开发指南
- 自定义工具创建:定义输入参数、实现工具函数、注册到服务入口。
- 测试:提供单元测试与集成测试,覆盖成功路径与异常路径。
- 集成:通过配置中心管理工具清单与参数,确保上下文与集成点明确。
章节来源
依赖关系分析
- 服务入口依赖配置中心、日志与注册中心,统一装配Kratos应用。
- 工具模块依赖通用校验与请求模型,确保输入一致。
- 向量检索依赖Milvus,数据查询依赖StarRocks/MCP。
- 前端组件依赖Recharts与UI组件库。
图表来源
- [bi-analysis/cmd/bi-analysis/main.go]
- [bi-common/utils/validation/validate.go]
- [bi-common/apitypes/request.go]
- [bi-chat/bi_chat/src/agents/tools.py]
- [bi-chat/bi_chat/src/tools/knowledge.py]
- [bi-chat/bi_chat/src/core/vector_db.py]
- [mcp-server-starrocks/src/mcp_server_starrocks/db_client.py]
- [bi-chat/bi-chat-web/src/components/chat/ChartViewer.tsx]
- [bi-chat/bi-chat-web/src/components/chat/ChartRenderer.tsx]
- [ui-web/src/components/common/biTable/components/PersonalizationDrawer.tsx]
章节来源
- [bi-analysis/cmd/bi-analysis/main.go]
- [bi-common/utils/validation/validate.go]
- [bi-common/apitypes/request.go]
性能考量
- 查询性能:分页限制、索引提示、查询计划分析、执行耗时统计。
- 向量检索:nprobe参数权衡召回与性能,批量查询与缓存策略。
- 前端渲染:图表容器自适应、懒加载与虚拟化,减少DOM压力。
- 服务治理:Kratos服务的并发与资源限制,配置中心热更新。
[本节为通用指导,不直接分析具体文件]
故障排查指南
- 参数校验失败:检查必填项、范围与格式,参考通用校验器。
- 工具调用异常:查看工具日志与错误返回,定位输入参数与工具实现。
- 向量检索失败:确认Milvus服务状态、连接参数与索引构建。
- 数据查询异常:检查SQL构造、权限与网络连通性,关注性能分析输出。
- 前端图表不显示:确认数据结构与键名映射,检查Recharts版本兼容性。
章节来源
- [bi-common/utils/validation/validate.go]
- [bi-chat/bi_chat/src/agents/tools.py]
- [bi-chat/scripts/test_milvus.py]
- [mcp-server-starrocks/src/mcp_server_starrocks/db_client.py]
- [bi-chat/bi-chat-web/src/components/chat/ChartViewer.tsx]
结论
工具系统通过统一的参数校验、请求模型与服务入口,实现了向量检索、数据查询、图表渲染与报表模板的标准化与可扩展。建议在后续迭代中持续完善:
- 工具清单与上下文管理
- 性能监控与告警
- 安全基线与合规检查
- 前后端一致性与可测试性提升
[本节为总结性内容,不直接分析具体文件]
附录
- 安全与可靠性基线:认证、授权、令牌过期、密钥管理、OWASP Top 10防护、错误处理与健康检查等。
- 快速参考:安全、性能、可靠性、可维护性四大NFR维度的关键检查点。
章节来源