Repository navigation
Releases: strugglerx/gf-mate
Releases · strugglerx/gf-mate
Release list
v0.6.1 — 修复 Shadow DOM 面板拖拽缩放与重复思考状态
Bug 修复
- Shadow DOM 浮动面板缩放与最大化失效:原缩放手柄挂载在 Shadow Host 的 Light DOM 下且无
<slot>,导致浏览器未渲染缩放热区;现将左上角、上边缘、左边缘三向拖拽热区挂载至 Shadow DOM 内部,并补齐最大化(.dq-maximized)与关闭回调联动。 - 回答时出现两个思考中提示:移除
sendChat中重复追加的.thinking节点与顶栏重复文案,统一由气泡内单一思考占位与深度思考折叠条承接,同时修复异常分支未定义的renderSegments调用。
v0.6.0 — 自定义提示词与浮动面板缩放
gf-mate v0.6.0
本版本核心:宿主自定义提示词注入(SystemPromptAppend)与浮动气泡面板自由拖拽缩放。
新特性
- 📝 自定义提示词(
Assistant.SystemPromptAppend):宿主可将自定义提示词拼到内置 system prompt 末尾,用于声明数据库方言语法(如 DM8 的TO_CHAR/SYSDATE)、业务口径、字段约定,减少模型试错、加快响应速度 - 📐 浮动面板拖拽缩放:浮动气泡模式下,面板左上角新增拖拽手柄,可向左上自由调整宽高(锚定右下角,最小尺寸
320×360)
用法
Assistant: mate.AssistantConfig{
SystemPromptAppend: "数据库为达梦 DM8:按天分组用 TO_CHAR(col,'YYYY-MM-DD')," +
"近 N 天过滤用 col >= SYSDATE - N;created_at 为记录创建时间。",
},安装
go get github.com/strugglerx/gf-mate@v0.6.0v0.5.0 — 动态凭据、敏感列门禁与宿主鉴权集成
gf-mate v0.5.0
本版本核心:宿主深度集成能力 —— 支持动态 LLM 凭据(配置中心热更新)、敏感列 SQL 门禁、单二进制内嵌前端脚本与 Bearer Token 鉴权注入。
新特性
- 🔑 动态 LLM 凭据(
Assistant.Resolver):每次对话前按需从宿主配置中心读取LLMEndpoint{BaseURL, APIKey, Model},后台改配置即时生效无需重启;BaseURL同时兼容根路径与完整.../chat/completions - 🛡️ 敏感列门禁(
DenyColumns):数据集/结构体反射声明手机号、证件号等敏感列后,自动从 AI Schema 隐藏,且 SQL 门禁拒绝任何提及这些列的语句及对该表的SELECT */alias.* - 📦 内嵌 Widget 脚本(
go:embed+BindWidget):dq-widget.js随 Go 二进制打包发布(带内容 ETag 协商缓存),宿主无需拷贝frontend/目录;BindWidget与Bind分离挂载,满足<script>公开加载 + API 分组鉴权场景 - 🔐 前端动态请求头(
<gf-mate>.headers):支持对象、函数或 Promise,每次发送对话前动态求值(Token 续期自动生效),并兼容宿主{code, msg}格式鉴权错误提示 - 🔧 更广的宿主版本兼容:
go.mod最低版本下调至Go 1.21+GoFrame v2.8.2
用法
// 1. 公开挂载脚本 + 鉴权挂载接口
s.Group("/api/admin/mate", func(g *ghttp.RouterGroup) { mate.BindWidget(g) })
s.Group("/api/admin/mate", func(g *ghttp.RouterGroup) { g.Middleware(auth); mate.Bind(ctx, g) })
// 2. 敏感列声明
ds, _ := mate.FromStruct(&entity.Project{}, func(o *mate.FromStructOptions) {
o.DenyColumns = []string{"client_phone", "id_card_no"}
})安装
go get github.com/strugglerx/gf-mate@v0.5.0v0.4.0 — 多数据源支持
gf-mate v0.4.0
本版本核心:多数据源支持 —— 一个插件实例接入宿主的多个数据库。
新特性
- 🗄️ 多数据源路由:
dq.AddSource("go", g.DB("go"))注册命名源,数据集声明Source: "go"即自动路由;SQL 引擎按 FROM/JOIN 引用的表选择目标库 - 🛡️ 跨源 JOIN 拦截:一条 SQL 混用两个库的表直接拒绝,错误信息指引 AI 拆成多次单源查询
- 🗣️ 逐源方言提示:MySQL + DM8 混布时各自提示语法要点(DialectDescAll)
- ⏱️ LLM 请求超时加长:默认 60s → 180s(复杂分析题多轮工具调用不再中途断流)
用法
dq.Init(g.DB(), cfg) // 默认源
dq.AddSource("go", g.DB("go")) // 命名源
dq.Register(model.Dataset{Name: "curtain", Table: "c_curtain", Source: "go"})安装
go get github.com/strugglerx/gf-mate@v0.4.0v0.3.0: 声明式 <gf-mate> Web Component 与内嵌工作台双模渲染
🌟 gf-mate v0.3.0 重磅发布:原生声明式 Web Component 与双模态渲染
本次版本迎来了全新的前端组件体系升级,全面拥抱 Web Component 标准规范,为 Vue、React、Angular 及传统页面提供极其优雅的声明式使用体验。
1. 🧩 原生 <gf-mate> 自定义标签
无需编写多余的 JS 挂载代码,直接在任何页面、JSX 或 Vue 模板中声明:
<script src="/mate/dist/dq-widget.js"></script>
<!-- 浮动助手模式 -->
<gf-mate
base="/mate"
title="业务数据智囊"
color="#4f46e5">
</gf-mate>- Shadow DOM 样式隔离:完全不受宿主全局 CSS 污染,也不影响宿主系统排版。
- 声明式属性支持:支持
base/api、title、color、examples、open。 - 向下兼容:兼顾支持
<dq-assistant>别名标签与标准<script>属性驱动模式。
2. 🖥️ 全新「内嵌工作台(Inline Mode)」
不仅可以作为右下角悬浮气泡,现在只需加上 inline 属性,即可将 AI 对话小窗像原生普通组件一样平铺嵌入在侧边栏、中台看板或抽屉容器内:
<div style="width: 480px; height: 600px; border-radius: 12px; overflow: hidden;">
<gf-mate
inline
base="/mate"
title="分析工作台"
color="#059669">
</gf-mate>
</div>- 自动 100% 撑满宿主容器尺寸;
- 智能精简控制栏,自动隐藏窗口最大化与关闭按钮,仅保留轻巧的「新对话」操作。
3. 🎨 品牌色彩与个性化定制
- 支持自定义主题色(HEX / RGB),动态注入并完美适配气泡、操作按钮与交互高亮。
- 支持自定义助手标题与场景化欢迎推荐词。
4. 📊 严守 40KB 单文件体积红线
- 零依赖单文件 Bundle
frontend/dist/dq-widget.jsgzip 体积严格控制在 37KB。 - 内置零依赖手写 SVG 图表引擎(柱状图、折线图、饼图、数据表格、指标卡),自带海量数据截断与自动防爆防御机制。
Full Changelog: v0.2.0...v0.3.0
v0.2.1: 原生支持 <gf-mate> 自定义标签与内嵌双模渲染
🚀 What's New in v0.2.1
- 🧩 原生 Web Component 自定义标签:支持在 React / Vue / 原生 HTML 中直接声明写
<gf-mate></gf-mate>,无需额外 JS 初始化代码。 - 📦 内嵌工作台(Inline Mode)支持:添加
inline属性即可将 AI 对话面板直接嵌入任意宿主容器、侧边栏或主看板中,自动充满父容器并隐藏多余窗口级按钮。 - 🎨 完整属性控制:支持通过标签属性声明
base/api、title、color、examples、open。 - 🖼️ 中英双语文档升级:README 增加视网膜级双模渲染效果图与清晰的参数指南。
v0.2.0: 图表海量数据防爆、自定义主题与富渲染生态
🚀 What's New in v0.2.0
1. 📊 SVG 图表海量数据防爆与视觉容错
针对自然语言查数返回数十上百条聚合项的场景,轻量 SVG 图表新增自动防御与防爆裁剪机制:
- 饼图 / 环形图:自动将数据按占比降序截取 Top 6 + 其他,彻底解决超多图例溢出容器、切片过于拥挤重叠的问题。
- 柱状图:数据量过大时自动截断展示 Top 24 并标注提示,保证柱体宽度与数值标签清晰可读,避免发丝级拥挤。
- 折线图:点位密集时(>48 个)自动隐藏数据圆点转为纯平滑曲线,大幅降低 SVG DOM 节点数量与渲染抖动。
- 数据表格:增加
max-height: 280px纵向滚动与表头吸顶(sticky),避免大表格撑破小窗面板。
2. 🎨 小窗极简外观与全面自定义
- 视觉去繁就简:移除左上角多余图标与右下角缩放伪标记,呈现克制精致的 Editorial 极简风格。
- 自定义助手名称:支持通过
data-dq-title/mount({ title: '...' })或 URL 参数?title=...自定义标题(默认为「AI 数据助手」)。 - 自定义品牌主题色:支持通过
data-dq-color/mount({ color: '...' })或 URL 参数?color=...动态注入品牌主色,自动无缝适配按钮、高亮与光标。 - 自定义快捷推荐词:支持通过
data-dq-examples或examples数组传入场景化推荐问题。
3. 🧩 生态集成与推荐
- 官方在中英文文档中正式推荐 Vue 3 生态富渲染组件库
@struggler/smart-ai-renderer,支持直接复用POST /dq/assistant/chatSSE 接口渲染更丰富的交互式图表与多模态面板。
4. 🧹 命名与文档彻底规范
- 全量清理旧包名与遗留配置,统一收敛为单包命名
github.com/strugglerx/gf-mate。 - 快捷问题全面采用通用订单/电商示例,移除所有敏感业务字段。
- 单文件嵌入 Bundle
dist/dq-widget.jsgzip 体积严格控制在 37KB(红线 ≤ 40KB)。
Full Changelog: v0.1.0...v0.2.0
v0.1.0 — 首个开源版本
gf-mate v0.1.0
GoFrame v2 AI 数据查询插件首个开源版本。
核心能力
- 🗣️ 自然语言查数:AI 直接写只读 SQL(批量提交),JOIN/窗口函数/CTE/UNION 任意复杂度
- 🛡️ 五道只读门禁:单语句 / SELECT-WITH 开头 / 写关键字黑名单 / 表白名单 / 强制 LIMIT + 超时
- 📊 智能图表:AI 根据数据形态自动选表格/柱状/折线/饼图/指标卡(零依赖 SVG 渲染)
- 🧩 一行嵌入:
<script src="/dq/dist/dq-widget.js">悬浮小窗,React/Vue/原生通吃 - 🔄 多轮对话:上下文连续,服务端保留最新 10 条
- 🗄️ 多数据库:MySQL / DM8(达梦)开箱即用,方言自动探测注入提示词
- ⚡ 标准协议:OpenAI 兼容 SSE 流式输出,任何 OpenAI SDK 客户端可直接对接
安装
go get github.com/strugglerx/gf-mate@v0.1.0