摘要:本文是阿里云日志服务(SLS)首次对外系统性地揭秘 SLS SQL Copilot 背后的产品理念、架构设计与核心技术积淀。我们将带你深入了解,这一智能分析助手如何从用户真实需求出发,融合前沿 AI 能力与 SLS 十余年日志分析最佳实践,打造出面向未来的智能
对,这是一篇你明知道怎么回事儿,但还是会点进来看的文章!
本文是阿里云日志服务(SLS)首次对外系统性地揭秘 SLS SQL Copilot 背后的产品理念、架构设计与核心技术积淀。我们将带你深入了解,这一智能分析助手如何从用户真实需求出发,融合前沿 AI 能力与 SLS 十余年日志分析最佳实践,打造出面向未来的智能化日志分析体验。
十年前,SLS 以云上首创的日志服务形态问世,一站式的日志采集、分布式存储、高性能查询检索服务,令人惊艳。八年前,SLS 首次推出 SQL 分析服务,让日志数据从简单存储变成了交互式查询分析,数据价值开始变现。五年前,SLS 尝试自助式数据探索,通过 DataExplorer 服务旨在辅助用户自助构建查询语句。三年前,SLS 实现 SQL 自助诊断,旨在帮助用户降低 SQL 使用门槛,自动纠正语法报错。SLS 数据洞察史:
纵观历史,SLS 探索和挖掘日志数据价值的脚本从未停歇!
然而,随着用户规模和应用场景的不断扩展,有关日志数据查询和分析的咨询和使用问题层出不穷,工单源源不断。
我们深刻意识到:尽管 SLS 具备强大的查询分析能力,但复杂的语法规则、多样的数据结构以及缺乏最佳实践指导,让许多用户在日志分析的门槛前望而却步。为此,我们也曾一次又一次开展用户体验提升计划、工单清零计划。
通过持续的用户支持和深度使用打磨,我们逐渐积累了大量实践经验和使用技巧。当时就在想,要是能有一个智能系统可以将我们不断沉淀的专家经验和知识技巧完全发挥出来,让每位用户都能享受到专业的分析指导,实现知识普惠就太好了,要是能支持用户自助问答,实现自然语言需求描述直接转成专业 SQL,那就更棒了~
时间来到 2025 年,AI 席卷世界,正在重塑世界的每个角落。曾经“幻想”的能力,如今正在成为现实。
首先,什么是 Copilot?
这个概念得从航空飞行史说起,飞行员叫“Pilot”,随着飞行技术的不断发展,人类逐步在飞机上实现了辅助驾驶系统,以协助飞行员更好地完成飞行任务。于是,“Co-Pilot”逐步成为了官方术语 Copilot(辅助驾驶)。
现在,SLS 就如同承载着海量用户数据的飞机,我们希望在 SLS 中打造类似的智能辅助驾驶:协助 SLS 用户(作为飞行员的你)高效完成查询和分析任务,最大化释放日志数据的价值。
在日志分析与运维场景中,阿里云日志服务(SLS)以独创的 | 语法实现了高效的数据检索和实时分析能力。
然而,用户往往因对查询语法不熟悉、日志数据结构复杂、缺乏最佳实践经验等原因,面临查询和分析的困境:如查询语句不会写、查不出、查不对、查询性能不佳等。SLS SQL Copilot 应运而生,作为 SLS 官方原生集成的智能分析工具,它以高效的“对话交互”方式,将用户自然语言的需求描述智能转换成查询或 SQL 语句,大幅降低日志分析门槛,帮助用户快速定位问题,洞察日志数据价值。
回答以下几个问题(也是用户较为关注的):
问:与目前市面上常见的 Text2SQL AI 标品的区别是什么?答:不做通用 Text2SQL,只做 SLS SQL Copilot,贴合 SLS 自身特点,尽可能发挥出其原生特性和能力。问:是在做应用还是做能力?答:不做应用只做能力,我们并不作为独立应用存在,而是跟着 SLS 原生能力和演进路线发展。更深度的绑定意味着我们更懂 SLS,更高效深入地集成能力,更快速同步地更新特性。因此,
我们的设计理念:更原生、更准确、更高效,打造日志数据查询分析的新范式。
我们的使命:为 SLS 用户打造原生、方便、好用的查询和分析助手。
原生具体体现在哪些方面?
SLS 的查询分析三要素:时间范围、查询语句、分析语句。
原生时间范围集成
“时间”是日志数据的天然属性,SLS 将时间范围作为查询分析的必备要素,这一设计哲学在 SLS SQL Copilot 中一脉相承。
市面上的 Text2SQL 工具或标准 AI 服务在生成 SQL 时,通常会将时间过滤条件内嵌于 SQL 语句中,使 SQL 变得冗长。
SELECT ...FROM ...WHERE __time__ > to_unixtime(now - INTERVAL '7' DAY)而我们选择了更符合 SLS 特色的做法——将时间范围与查询逻辑分离,让 SQL 本身保持简洁,专注于查询和分析逻辑本身。
在实现上,我们支持精准的时间范围推断,将其作为独立的生成组件输出,避免了时间参数与 SQL 冲突造成的查询异常。无论是 SLS 官方控制台、Open API 还是 MCP 工具调用,你都可以直接使用生成的时间范围,无缝执行 SLS 查询。这一细节充分体现了 SLS 的原生味道。
多种查询范式集成
SLS 支持丰富的查询范式——全文检索、字段查询、统计分析,以及不断扩展的新能力(如 SPL 数据处理)。每种查询方式都有自己的适用场景和语法特点。
这正是普通 Text2SQL 工具的痛点:面对这么多查询范式,很难准确判断用户的需求到底应该使用哪一种。
SQL Copilot 的优势就在这里体现出来。我们原生支持 SLS 的三大查询范式:纯查询、纯 SQL、查询+SQL 混合,能够智能判断用户需求,自动选择最合适的查询模式,从而实现最佳的查询性能。
以游戏日志场景为例,用户三种不同问法,对应着截然不同的查询意图:
场景 1:“查询玩家年龄大于 25 的日志”--纯查询模式
场景 2:“分析玩家年龄大于 25 的占比”--纯 SQL 分析模式
场景 3:“分析年龄大于 25 的玩家中访问 PV Top10 的用户”--查询+SQL 混合模式
特性分析函数集成
SLS 围绕日志分析场景开发了许多强大的特性函数——同环比分析、IP 地理解析、时序补全等,这些都是日志分析中的高频需求。SQL Copilot 原生集成了这些特性函数,在识别到相关需求时自动调用,释放出 SLS 全部分析潜力,让复杂分析变得简单。
以同比分析为例:实现“今天vs昨天vs一周前的 PV 对比”,标准 SQL 需要复杂的子查询嵌套和 UNION,不仅冗长还易出错,而 SLS 的同环比函数几行就能搞定分析,简洁优雅。
这些就是原生集成的体现——深度融合 SLS 产品基因和自身设计理念,让 AI 真正懂 SLS,让 SLS 真正懂用户。
什么才是“准确”的 SQL 生成?不仅仅是语法正确,更要真正理解用户意图,精准匹配业务需求。而真正的智能,体现在对用户需求的深度理解和精准响应。理想很美好,但现实总是很骨感。在实际服务过程中,我们发现生成质量面临着诸多挑战:
用户上下文信息不完整、会话缺乏连贯性、需求表述模糊不清、业务语义理解困难...每一个细节都可能影响最终的生成效果。
正是基于这些线上实践的深度打磨,我们逐步完善并构建了一套完整的智能化系统:
上下文智能感知
索引字段元信息
系统会自动感知当前 Logstore 的索引字段配置信息,并根据用户需求智能推断相关可用字段。
原始日志数据采样
日志数据往往是无结构化的,格式也千差万别。仅仅依靠索引字段信息,很难应对复杂的数据解析需求。
遇到过这种情况吗?想从 content 的长文本大字段中提取特定信息,但不知道该怎么表达查询需求?
因此,在用户 SLR[1]授权下,Copilot 会自动采样原始日志数据,为系统提供一手的原始数据上下文。这在 content 大字段的信息提取场景中特别重要——无论是正则提取、JSON 解析还是字符串切分。
{ "__time__":1756287229, "_image_name_":"ali-registry.net/test:v1", "_container_name_":"test", "_time_":"2025-08-27T09:33:48.499251778Z", "__tag__:__hostname__":"2bdbfc7b6894", "__tag__:__client_ip__":"47.98.125.123", "__tag__:__receive_time__":"1756287231", "__tag__:__pack_id__":"9505840C6C3CD469-18718A", "content":"192.168.0.1 - - [27/Aug/2025:17:33:48 +0800] \"GET /hello/ HTTP/1.0\" 200 3876 \"-\" \"Chrome/0.1.0\" \"120.232.180.90, 120.232.180.90\""}预设查询环境感知
在实际使用中,我们发现一个有趣的现象:很多用户提问时习惯先贴一大段日志数据,最后才说真正的需求:
用户提问:body_bytes_sent:4017host:www.yxw.mock.comhttp_referer:www.pj.mock.comhttp_user_agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.724.100 Safari/534.30http_x_forwarded_for:210.45.235.97remote_addr:180.164.95.121remote_user:hzc9request_length:3940request_method:GETrequest_time:71request_uri:/request/path-0/file-0status:200time_local:27/Aug/2025:10:06:33upstream_response_time:0.06...(日志原文实际可能很长)[到这里才开始提问]我希望提取出第一个IP作为访问IP字段 或 我希望提取出访问路径 等等...这种做法可以理解,用户想提供完整的上下文信息。但 SQL Copilot 有更优雅的方式——预设查询环境感知。
SQL Copilot 的环境感知功能会自动记录你最近一次的查询上下文,你只需要说“基于预设查询...”,系统就知道你在说哪个数据环境了。这不仅让提问更简洁,数据采样也更精准高效。
外挂知识库集成
另一个有意思的设计是企业知识库集成。每个企业或组织都有自己的“黑话”——业务术语、产品代号、缩略词、团队习惯表达等...这些往往是分析中的关键信息,但 AI 可能完全不懂。
我们支持接入用户自建的知识库,让 SQL Copilot 学会用户的“企业语言”,让它真正学会说“你们的话”,理解“你们的业务”。
需求引导和理解
“帮我看看昨天的数据”——这样的提问你们熟悉吗?
根据大量的用户支持经验,我们发现用户的需求表述往往存在各种问题:太模糊、不明确、有歧义,或者干脆不知道该怎么问。这其实很正常,毕竟把脑海中的分析想法准确表达出来,本身就不是一件容易的事。但对 AI 来说,清晰的需求描述直接决定了生成质量。
为此,我们借鉴医院导诊的思路,设计了智能的需求引导和路由系统:
需求模糊时 → 智能推荐贴合你业务场景的明确问题,一键高效提问需求不明确时 → 智能提醒并协助确认关键信息(如具体字段),避免理解偏差需求清晰时 → 帮助串联上下文,结构化组织语言表达,提炼需求重点日常问答 → 贴心陪聊,甚至来点幽默的技术调侃它像一个耐心的技术专家,与你 1v1 深度交流,陪你把需求和想法慢慢理清楚:从模糊的“帮我看看数据”到具体的“分析最近 7 天 error 状态码的分布趋势”,从碎片化的表达到结构化的需求提炼。这种渐进式的引导交互,不仅提升了用户体验,更重要的是让 Copilot 真正理解并确认你的需求。
用户语义模型
日志数据结构与特征智能感知
面对复杂多样的日志格式,如何让 AI 真正“看懂”数据?SQL Copilot 具备智能的数据理解能力,无论是数值、JSON、文本还是自定义格式,都能自动解析数据特征和分布,为后续的精准查询生成提供支撑。
语义萃取
理解数据结构只是第一步,更深层的挑战在于理解用户的业务语义。现实中经常遇到这些情况:
语义列推断困难用户提问:请按“服务名”分组统计频次字段歧义:日志库中同时存在 service_name、event.serviceName 索引字段,到底该选哪个?业务规则模糊用户提问:统计“高延时”的请求分布规则模糊:什么算高延时?1 秒?3 秒?还是用户自定义的阈值?分析偏好未知用户提问:分析请求 PV 趋势隐含偏好:趋势的时间粒度是按分钟?小时?还是天?这些隐含的业务语义,往往决定了分析结果的准确性。越深入理解用户的业务语义,生成的查询就越贴合真实需求。
问题是,如何才能理解用户的这些业务语义?
我们想到了一个巧妙的思路:用户过往创建的报表、告警、查询历史,其实就是最好的“语义教材”。因为这些都是给人看的,用户自然会使用有业务意义的字段名、指标定义、分析逻辑。
于是,我们想到从用户的历史查询、报表、告警规则中智能萃取语义信息。
以用户创建的报表为例,每个图表背后使用的都是 SQL 语句,一条看似普通的 SQL 语句,实际上包含了丰富的业务信息:字段别名、筛选条件、聚合逻辑...每一个细节都在“告诉”我们用户是如何思考和表达业务需求的。
具体来说,我们从多个维度学习用户的业务语义:
命名与表达习惯通过 AS 别名识别字段别名中的业务术语和命名规范业务规则判断通过 WHERE 条件表达式理解业务规则和阈值标准数据处理偏好通过 JSON 提取、正则匹配、字符串切分等表达式识别数据解析方式分析逻辑偏好通过 GROUP BY 子句和聚合函数了解分组维度和聚合计算的习惯选择通过 WITH CTE 和子查询识别和推断业务 meta 信息通过语义萃取,最终我们可以得到类似如下的用户语义模型,这将在 Copilot 的上下文工程中提供重要的参考价值。
用户会话画像
除了从历史 SQL 中学习,我们还有另一个学习来源:用户的实时对话。
这是另一个有趣的设计:我们会从每次对话中学习用户的“聊天画像”。每一次提问、每一轮交互,都在向我们透露用户的偏好和习惯。系统会持续总结用户的会话特征,形成动态的用户聊天画像——你喜欢什么样的分析角度?习惯如何表达需求?偏向哪种数据视角?这些实时的行为洞察和个性化理解,让 Copilot 能够越聊越懂你。
温馨提示:当需要切换不同分析主题时,不妨新开一个会话,避免上下文混淆,让每个话题都能得到最专注的分析。
质量校验和修正
LLM 生成不可避免会出现语句出错的情况,为了确保生成质量,我们设计了质量校验和保障机制。在流程中增置了 DryRun 执行、校验和修正环节,对语法和执行逻辑进行校验,并对用户需求进行最终验证,一旦发现问题立即修正,以保证最终生成质量。
自然语言无缝转换查询执行
即席查询 → 需求描述 → 语句生成 → 就地执行,从「探索」到「表达」到「生成」到「执行」,整个流程一气呵成,就这么简单!
用户无需掌握 SQL 语法,只需用日常语言描述需求(如“统计过去 2 小时接口延迟超过 1 秒的请求数,按服务名分组”),Copilot 会自动生成完整的 SLS 查询语句,时间范围、检索条件、聚合逻辑...所有细节一步到位,原生集成,生成即可运行。
这就是原生集成的效率优势。
查询报错自动诊断并修正
SQL 写错了?别担心,系统会自动帮你修正。
智能诊断 → 问题定位 → 精准修复,让错误语句秒变可执行查询。从此告别反复调试的烦恼,专注分析本身。
现在,历经深度打磨,全新的 SLS SQL Copilot 为你带来:
让生成更智能
支持纯查询、纯 SQL、查询+SQL 多种范式,智能生成最优语句原生集成时间过滤和特性分析函数,充分发挥 SLS 潜能深度理解业务语义,从历史查询和会话中持续学习,越用越懂你️ 让调试更轻松
DryRun 预执行,提前发现并修复潜在问题提供清晰的解释说明,助你理解每一步逻辑错误 SQL 智能诊断,自动识别问题并精准修正让交互更有趣
需求引导:不知道怎么分析?让它为你推荐合适的问题随时问答:生成样例、解释语法、提供分析思路智能对话:用 SQL 语言和你聊天(是的,它还有点技术幽默感)让使用更便捷
写到这里,其实我们的故事才刚刚开始。
智能化数据探索日志数据内容和格式复杂多变,往往一些重要信息可能藏于复杂的非结构化文本中,有时需要“试一下 A 方案,不行再试 B 方案”的探索过程。我们期待结合 Agent 的自主决策能力,让 AI 自己去探查数据特征,找到真正有价值的信息——就像一个经验丰富的数据分析师那样思考和行动。用户语义的深度理解目前我们只是在用户历史查询中学习语义,但用户的真实需求远比这丰富。随着语义模型建设的深入,我们希望理解用户更多的业务上下文,让每一次交互都更贴近用户的真实意图。你的业务场景、分析习惯、甚至是那些没说出口的需求,都应该被理解和记住。让 Copilot 的每一次对话都更懂你。场景化的智能洞察最令人期待的是——无需用户主动提问,系统就能根据业务场景和日志特征,自主发现问题和潜在需求,提供数据的洞察和分析。从被动的“问答助手”进化为主动的“分析伙伴”,真正将日志数据的价值发挥出来![1] SLR
[2] API 接口
[3] MCP 协议
点击下方链接,了解更多产品详情。
来源:阿里云云原生一点号