
1. 白泽的历史会话续问到底解决了什么问题1.1 对话式分析里最让人头疼的“上下文断裂”做 BI 和数据运营的同学应该都有这种体验分析一件业务的事几乎不可能一次提问就得到结论。通常是我先看整体销售额发现某个区域不对劲接着想下钻到城市维度再看是哪些单品拖了后腿最后还可能想对比一下环比和去年同期的表现。这个过程里每一次追问都依赖上一次的结果如果系统记不住前文就得把“华东区域”“2024年11月”“毛利率低于15%”这些条件全部重新说一遍来回复制粘贴体验非常割裂。Smartbi 1月产品更新里白泽模块支持了历史会话续问解决的就是这个问题。所谓“白泽”是 Smartbi 内置的对话式分析助手用户通过自然语言提问系统自动完成取数、建模、出图和解读。之前我用白泽时最大的困扰就是对话结束之后下一次进来所有上下文都丢了哪怕只是隔了五分钟想再补一个维度都得从头说起。这个版本更新之后历史会话可以继续问等于把分析过程从“一段一段的碎片对话”变成了“一条连续思考链”。对我来说这个功能的实际意义在于它让对话式分析真正贴合了业务分析的自然节奏。分析不是一锤子买卖而是一个不断追问、反复修正、逐渐收敛的过程。白泽把“会话”这个概念真正做成了分析工作的载体而不是简单的问答记录这是我认为这次更新最有价值的地方。1.2 续问功能带来的实际收益效率、路径与复用历史会话续问表面上是一个交互层面的小改动但它带来的收益是链条式的。我梳理了一下至少有三层第一层是效率提升。用户不需要重复描述分析上下文直接说“把刚才那张图按省份拆一下”就行。这个效率提升在复杂分析场景里特别明显。设想一个财务分析师在做预算执行分析他可能会问十几个问题来逐层拆解如果没有会话续问他可能每问一个问题就要重述一遍筛选条件、指标口径、时间范围光描述需求的时间就比看数据的时间还长。第二层是分析路径的完整性。有了连续会话系统可以根据前文的提问历史更准确地理解当前问题。比如用户前一句问“华东区销售趋势”后一句说“那哪些品类增长最快”这里的“增长”承接的是华东区、销售、最近一段时间这些隐含条件。没有上下文的话模型很可能把“增长”理解成全公司全品类答案自然就不对。第三层是分析资产的沉淀。会话被保留之后一次完整的数据分析过程就不再只是电脑里的缓存垃圾而是可以被复盘、被分享、被继承的分析资产。新人接手业务时翻看之前的会话记录就能理解前辈的分析思路和关键结论这比让他在知识库里翻一堆没有上下文的报表要高效得多。我之前在内部做过一个小范围的对比测试同样分析“某连锁餐饮品牌近半年的门店盈利情况”用传统方式需要打开报表、拖拽维度、筛选条件至少十五分钟用白泽对话式分析第一轮问了五个问题花了三分钟而有了续问之后第二次基于历史会话继续追问两个问题只花了不到一分钟。这个差距在后缀长尾分析场景里还会继续放大。2. 续问背后的机制会话管理、上下文窗口与意图识别2.1 会话状态是怎么被“记住”的很多人可能会好奇白泽是怎么做到跨时间续问的从技术角度看一个支持续问的对话式 BI 系统通常需要在三个层面做工作会话状态持久化、上下文输入管理、意图理解与消解。我结合白泽的使用体验说说这每一层大概是怎么回事。会话状态持久化核心是给每次分析建立一条“可恢复”的会话记录。从产品实现的角度推测系统里应该维护了类似会话ID、消息列表、提问时间、数据模型快照、查询配置这样的数据结构。用户第一次发起提问时系统创建一个会话ID之后所有的问题、生成的SQL、返回的图表配置、筛选条件都被记录在这个会话ID下。当用户下次再进入时白泽能够根据这个会话ID把历史记录调出来让对话继续。这里有个容易忽略的细节会话续问不只是把文本记录翻出来那么简单更重要的是数据模型的还原。BI 分析里用户可能会切换数据源、调整指标口径、设置权限范围。如果续问时不能还原当时的模型上下文系统记住了对话文本却忘了用户当时分析的是哪张表、用的哪个计算口径那“续问”就是空有其形。白泽在这方面的处理做得比较扎实从实际操作看我隔天回来继续追问时图表里的指标名称、筛选条件、维度层级都还保持着上次的状态。实现上需要存储的可能包括会话ID、用户ID、数据源标识、查询生成时间、每次提问的规范化语义结果等。这套结构并不复杂但它决定了续问的稳定性。如果只存对话文本而不存结构化解析结果那下次续问时模型还需要重新理解一遍历史里的语义不仅慢还容易出错。2.2 模型怎么“消化”长对话上下文管理与Token控制对话式 BI 基于大语言模型的能力而大模型本身有一个上下文窗口限制。白泽面对一个持续了十几轮的会话如何做到既保留关键信息又不被海量历史文本冲昏头脑这里大概率用到了几种常见策略。第一种是滑动窗口。系统只把最近几轮的关键内容送给模型更早的内容做摘要压缩。这个策略的优点是控制Token成本、保证响应速度缺点是如果用户中途切换话题早期信息被压缩后可能丢失细节。但从实际体验看白泽在核心指标上的记忆还是相当稳定的。第二种是结构化信息提取。系统并不把用户所有的历史问题原文都塞给模型而是提取其中的关键条件比如时间范围、维度、度量、筛选条件形成结构化的查询上下文。这样模型看到的不只是“华东区”“销售额”“2024年Q4”这些零散词汇而是一个清晰的“分析状态”理解起来要容易得多。第三种是策略型摘要。当会话足够长时系统会判断哪些信息是始终相关的比如用户锁定的指标口径哪些是临时的比如某一次下钻的临时条件然后把始终相关的信息保留把临时信息清理掉。这很像我们人类自己开会时做的笔记只记录关键的结论和待办而不是把每个人的每句话都写下来。从用户视角来看这些机制决定了续问时的“体感”。如果上下文管理做得不好用户会明显感觉到模型“变笨了”——忘记指标口径、混淆数据范围、返回答非所问。我在测试白泽时特意用了一个十几轮的复杂分析会话做压力测试包括中途修改过一次口径、切换过一次数据源续问时的理解和回答都没有跑偏。这说明白泽在上下文管理上不只是做表面拼接确实做了结构化的信息维护。2.3 续问时的意图边界何时延续何时另起炉灶支持续问并不代表所有问题都应该“续”着问。白泽需要在“延续当前分析”和“开启新话题”之间做出判断这个判断直接决定了续问功能的可用性。举几个典型场景用户说“把刚才的图改成柱状图”这是典型的延续操作应该沿用所有上下文条件。用户说“那看看库存周转情况”看起来是另一个主题但时间范围、门店范围可能仍然应该承接前文因为它们可能属于同一个分析项目。用户说“好的接下来帮我分析一下会员复购率”这时如果还沿用之前的门店筛选条件反而可能是错的——会员分析的口径往往和销售分析完全不同系统需要识别出这是一个新的分析意图。这个判断的难度在于真实业务语言很少说得那么明确。有的用户会直接讲“换个话题”有的用户什么铺垫都没有就抛出下一个问题。白泽的意图识别机制会根据问题里是否出现新的指标词、新的维度词、新的时间限定语来做综合判断。如果新问题里包含明确的指标名比如“复购率”“库存周转天数”系统倾向于认为这是一个新话题如果问题里是“它”“这样”“按XX维度”等指代性表述系统倾向于延续原会话。当然自动判断不可能百分百准确。我实际用的过程中也遇到过一次我问了销售分析后接着问“那成本呢”系统把“成本”承接到了同一时空维度下给了各区域成本数据但我的本意是想看“各产品成本”的全局分布。这种边界情况其实很难靠模型自己完全猜对产品层面能做的就是提供“重新解释/修正条件”的入口。好在白泽支持直接追加澄清用户说“不是我是想看各产品维度的成本”系统就能立刻纠正。3. 白泽续问实操指南从场景演示到配置建议3.1 一个真实场景下的续问实操演示说了这么多机制层面的东西不如直接跑一个具体场景。我用一个零售企业的销售分析来演示白泽续问的实际操作过程。假设我是某连锁零售品牌的数据分析师今天要分析华东区域11月的销售情况并且准备第二天继续深入。第一次会话我依次问了几个问题“华东区11月销售额和环比”“按城市拆分看哪些城市环比下滑”“下滑城市里哪些品类是主要拖累项”白泽分别返回了汇总卡片、城市排行图表、品类贡献明细每一步都基于对话历史中的筛选条件自动延续。到这一步我得到了一个结论“华东区11月销售额环比下滑约7%主要是上海和苏州两个城市拖累其中上海下滑最严重的是女装品类。”到这里我结束本次会话。系统自动保存了会话记录。第二天我打开白泽在历史会话列表里找到这条记录点击“继续会话”然后直接问“上海女装下滑是销量下滑还是均价下滑”“把去年同期的数据拉出来对比一下”让我比较意外的是白泽不仅在第二次提问时正确理解了“上海女装”指的是昨天分析里得出的结论还把“去年同期”自动对应到了11月这个时间口径。如果没有续问我需要重新描述“11月上海女装品类的销售额、销量、均价以及去年同期的对比”而且还得保证两次提问的条件完全一致。现在两条问题就搞定了。这个演示说明了一个关键点续问真正的价值不在于“少打几个字”而在于保证分析条件的一致性。手工重新提问很容易出现第二次问的时候筛选条件跟第一次有细微出入导致数据对不上。会话续问从根本上消除了这个问题。3.2 哪些分析操作最适合用续问完成根据我的使用经验有几种分析操作用续问来完成是最顺手的第一种是逐层下钻。从区域到城市到门店从大类到中类到SKU这种层层推进的分析天然适合对话式每一层的筛选条件都基于上一层的结论。没有续问时这种分析要反复在对话框里堆条件很快就变得冗长且容易出错。第二种是口径修正。分析过程中发现指标口径需要调整比如把“含税销售额”改为“不含税”或者把“签约口径”改为“回款口径”。有了续问直接说“把口径换成回款金额重新看一遍刚才的排行”即可系统会在理解原分析基础上做修正比重新搭建分析要高效得多。第三种是结论追问。用户问完数据后经常会接着问“原因是什么”“哪些因素影响最大”“去年同期表现怎么样”。这些追问本质上是在分析结论基础上的关系探索依赖于前文的语境续问的优势非常明显。第四种是报告整理。分析到最后用户往往需要把过程整理成给领导看的报告。续问模式下可以直接让白泽“根据我们刚才的分析过程整理一份结论摘要”系统能够提炼对话过程中的关键发现。虽然最终文案可能还需要人工润色但至少框架和核心数据已经有了。3.3 团队协作视角下的续问使用建议如果一个团队同时使用 Smartbi 白泽来做日常经营分析我建议从几个方面用好历史会话功能。第一建议按分析项目来组织会话而不是按时间随意发起。比如“10月经营分析会准备”作为一个会话月底复盘再开一个新会话。这样后续查找历史分析路径时会话内容会非常聚焦。如果所有问题都堆在一个会话里时间长了之后续问时系统要处理的上下文会越来越复杂响应速度和准确性都会受影响。第二关键结论建议在会话里做一次“口头总结”。我发现如果我在一轮分析结束前让白泽生成一次阶段性结论摘要后续隔几天再续问时系统对主题的判断会更准确。这有点类似于给模型一个“锚点”帮助它在长对话中保持方向。第三涉及敏感数据的分析要注意会话记录的权限管理。历史会话相当于把分析过程留档了如果账号共用或者终端设备管理不严数据泄露的风险会被放大。Smartbi 有权限管控机制建议团队管理员开启会话权限隔离确保用户只能看到自己的会话记录。这一点在 BI 工具使用中很容易被忽略但重要性不亚于报表权限。4. 常见问题与排查技巧实录4.1 为什么我的历史会话列表里看不到之前的记录这个问题在使用续问功能时最容易遇到。我排查下来通常有几个原因最常见的是账号权限问题。如果当前登录账号和历史会话发起时的账号不是同一个或者管理员在后台收紧了会话权限历史记录就不会显示。这类情况在团队共用电脑或账号时经常发生查一下 Smartbi 的权限配置即可。其次是数据源或系统配置变更。如果历史会话引用的数据模型、数据源或数据集在后台被删除、重命名或迁移系统可能无法正常恢复该会话出于数据完整性考虑这条记录会从可续问会话中隐藏或置灰。这种情况下会话文本可能还能查看但“继续询问”功能不可用。另外还要注意浏览器缓存和本地存储。虽然白泽的会话记录主要是服务端存储但客户端的一些本地状态也可能影响记录展示。换个浏览器或清理缓存后如果发现会话记录变少那大概率是服务端本身有清理机制或者账号环境不同可以重新确认登录环境。4.2 续问时模型“忘记”了之前的关键条件怎么办我在实际使用中遇到过几次模型没有正确继承上下文的情况总结下来主要是两类原因一类是会话时间过长、内容过多历史关键条件被压缩摘要后丢失了细节另一类是用户中途切换过数据源或分析主题系统对新旧上下文的判断出现了偏差。针对第一类我的建议是在会话过程中主动做节点总结。当完成一个相对完整的分析阶段时可以让白泽生成一份阶段结论把核心指标和筛选条件“固定”下来。这样即使模型在长会话中丢失了一些边角信息关键的指标口径仍然能被保留。针对第二类最有效的办法是明确宣示“新话题”的开始。当你想切换到另一个完全不相关的分析问题时可以这样说“接下来换一个分析主题不再沿用之前的筛选条件我们看某某数据。”这样相当于给系统一个明确的上下文重置信号比默默换问题要可靠得多。如果发现系统确实理解错了上下文但又不是特别离谱直接在后续提问中补充一次修正条件就可以了不需要重新开一个会话。比如“不对我说的是华东区不是华北区”。模型在下一轮回答中就会基于修正后的条件继续。4.3 长会话续问响应变慢怎么优化会话越长每次续问时系统需要处理的上下文就越多响应延迟会有所增加。这个问题在十几轮以上的会话里会比较明显。如果想保持丝滑的体验我建议做几个简单操作一是适当拆分长会话。如果一个会话已经讨论了五六个不同的子主题每轮之间又间隔较长时间不如把早期的、已经形成结论的部分标记为完成另起一个会话从关键结论的基础上继续。这样既保留分析连续性又控制了上下文长度。二是主动固化中间结果。我在前面提到过白泽可以支持在分析过程中导出图表或表格。当某个阶段的分析完成时把图表添加到收藏或导出为报告然后再开新会话去解决下一个问题。这样即使新会话没有旧上下文那些已经拿到的中间结果也已经沉淀为资产不会被忘记。三是定期查看会话记录的加载状态。如果你发现某个历史会话打开时加载特别慢很可能是因为该会话的数据模型比较重或者引用了过多缓存已过期的数据集。这时候可以尝试在会话中重新指定一次数据源范围再继续提问。注意这个方法只适用于该会话指向的数据源仍然存在的情况。4.4 沿用当时的数据模型 vs 使用最新数据这里需要特别说明一个容易让业务同学困惑的点续问时结果到底应该基于当时的数据快照还是基于最新的数据更新从产品逻辑来看白泽续问默认恢复的是“对话上下文”包括数据模型和筛选条件但底层明细数据通常取的是当前的最新数据。也就是说如果有一张表的 T1 数据已经在昨晚更新了你第二天继续问“上海女装销售额”返回的数字大概率是包含了最新一天数据的。对日常经营分析来说这个逻辑更合理因为它保证了“追问”使用的数据是最新的。但如果你的场景是需要对某个特定时点的数据进行稽核和复盘那就需要注意续问时看到的数字可能和你第一次会话当天的数字有细微差异这不是系统算错了而是底层数据已经刷新。这种情况下建议在问题里明确时间范围比如“只看11月1日到11月30日的数据”这样数据口径才会真正锁定。这一点对财务对账、审计复盘类场景特别重要。5. 关于白泽这次更新的几点体会与后续期待我在几个项目里实际用过 Smartbi 白泽的对话式分析之后最大的感受是这类功能最怕的不是模型能力不够而是产品逻辑不给用户建立“可依赖的连续性”。白泽这次把历史会话续问做扎实了等于给了分析师一个真正可以长期工作的环境而不是每次对话都从零开始。如果非要说还有什么期待我最希望后续能加强两个方向。一个是会话的多人协同能力当前会话主要是单人视角如果能把某个会话分享给团队成员并支持在同一个上下文里进行协作编辑和评论那分析过程的团队价值会大幅提升。另一个是会话资产的结构化管理现在会话记录是以对话流形式保存的后续如果能自动把每个会话中产出的关键结论、图表、数据口径抽取成结构化的“分析卡片”那对知识库的积累会非常有帮助。不过这些都是增量功能了单就本次更新而言“历史会话可续问”已经让白泽从一个问答工具进化成了真正意义上的分析工具。对于正在用对话式 BI 做日常经营分析、数据复盘、专题研究的同学我建议尽快把历史会话用起来特别是那些需要多天连续追踪的分析项目体验提升会非常明显。