探索性 AI 聊天应用:交叉分析表
最新动态
GitHub 开源: https://github.com/experdot/pointer [MIT]
前言
在此前的一篇文章中,我从用户视角提出了 AI 聊天应用的十条改进建议,核心观点是:AI 聊天工具应当成为一个可长期依赖、结构化、可检索、可移植的个人知识系统。此后,我借助 AI 辅助编程工具,将这些想法逐步落地为一款名为 Pointer 的桌面端聊天应用——全局检索、树状文件夹分类、带格式的图片导出、选择性对话合并导出,这些功能在开发过程中被逐一实现。
然而,在解决了这些"整理"层面的问题之后,我意识到还存在一个更深层次的需求,它不是关于如何管理已有的信息,而是关于如何借助 AI 生成结构化的新信息。这个需求,最终催生了本文要讨论的功能:交叉分析表。

问题:从整理到对比
在日常使用中,有一类场景出现的频率很高:多对象的对比分析。
例如,我希望 AI 帮我比较 Vue、React 和 Svelte 三个前端框架的优劣。AI 会给出一段详尽的回答,但这些信息是散落在段落中的——某个框架的性能优势在第二段提到,另一个框架的学习曲线在第四段才出现。如果我想按"学习曲线"、"生态系统"、"性能"等维度进行对位比较,就不得不自己从文本中提取信息,手动整理成表格。
当然,也可以直接让 AI 生成一张 Markdown 表格。这在比较对象和维度较少时效果不错,但一旦维度增多,表格的生成质量就会明显下降——每个单元格往往只剩下寥寥数语,信息密度大幅降低。这并非模型能力的问题,而是在一次生成中同时控制多个维度的内容深度,本身就是一个困难的任务。
由此引出的问题是:能否找到一种方式,既利于结构化的对比分析,又能充分发挥 AI 在每个具体单元上的生成能力?
交叉分析表(Crosstab)正是对这个问题的回应。

方案:AI 驱动的渐进式构建
交叉分析表作为一种数据组织形式,本身并不新鲜。它的核心结构很简单:横轴代表比较对象,纵轴代表分析维度,两者的交叉点就是具体的分析内容。
真正值得探索的是:如何让 AI 参与到这张表的构建过程中,并且是以渐进式的方式——而非一次性全量生成——来逐步填充内容。一次性生成的问题前文已经提到:维度一多,质量就会稀释。渐进式的构建则允许 AI 在每个单元格上集中精力,生成更有深度的内容。
基于这个思路,我在 Pointer 中设计了一个四步工作流:
第一步:定义主题。 用户只需要给出一个大致的分析方向,例如"比较主流的编程语言"或"分析三国时期的主要人物"。主题的作用是为后续的框架生成提供上下文。
第二步:生成框架。 AI 根据主题,自动推荐表格的横轴和纵轴。例如,对于"比较主流编程语言"这个主题,横轴可能是 Java、Python、Go,纵轴可能是性能、开发效率、社区支持。这些推荐只是起点,用户可以自由地增删和调整,直到框架符合自己的分析意图。
第三步:填充内容。 框架确定后,AI 开始逐个填充每个交叉单元格的具体内容。例如,它会专门生成"Python 在开发效率这一维度上的表现"。由于每次只需聚焦于一个具体的交叉点,AI 能够给出更详细、更有针对性的分析。为了提高效率,用户也可以选择让 AI 一次性生成整行或整列。
第四步:交互与编辑。 AI 生成的内容不可能在每个单元格上都令人满意。用户可以对任意一个单元格进行重新生成或手动修改。这一步确保了最终结果的控制权始终在用户手中。

细节:几个设计上的考量
在实现这个功能的过程中,有几个具体的设计问题值得记录。
智能建议。 在实际使用中,用户在定义主题后,往往对横轴或纵轴应该包含哪些项还没有明确的想法。为此,我加入了一个辅助功能:当用户定义好一个轴之后,AI 会根据主题和已有的轴,自动推荐另一个轴的可能选项。这降低了"冷启动"的门槛,用户不必在一开始就想清楚所有维度。
细粒度控制。 我不希望这个功能成为一个全自动的黑箱。因此,在操作粒度上做了分层设计:用户可以对整张表进行全量生成,也可以只对某一行或某一列进行生成,甚至可以精确到单个单元格进行重新生成或清空。这种分层设计试图在自动化的效率和手动控制的精确性之间找到一个平衡点。
沉浸式体验。 当表格的行列数量增多时,屏幕空间会成为一个实际的制约。为此,我加入了全屏模式,让用户在分析复杂表格时能够获得更大的视野。这个细节看似微小,但在密集的对比分析场景中,对使用体验有切实的影响。

场景:一些实际的应用示例
这个功能最初是为了解决我自己在学习和分析中的需求而设计的。在使用过程中,我发现它的适用范围比预想的要更广。以下是几个具体的例子。
编程语言对比
将多种编程语言按性能、生态、学习曲线等维度展开对比,每个交叉点都有充分的描述空间,而非被压缩在一个简短的表格单元格中。

语言学习
交叉分析表可以用于组织外语学习中的对比知识,例如将多个近义词按用法、语境、搭配等维度展开分析。更进一步,用户还可以基于已经生成的交叉表内容,向 AI 提出更深入的问题,将交叉表作为后续对话的上下文基础。


创意写作
在小说创作中,交叉分析表可以用于人物设定的多维度对比——例如将主要角色按性格、动机、与其他角色的关系等维度进行梳理,帮助作者建立更清晰的人物体系。


不足与展望
这个功能目前仍处于比较初级的阶段,存在一些已知的局限。
当表格的规模增大时——例如横轴和纵轴各超过十项——性能和交互体验都会受到影响。此外,一些在实际使用中自然浮现的需求,如模板的保存与复用、导出为 Excel 等格式,尚未实现。这些都是后续迭代中需要逐步解决的问题。
回顾从最初的十条改进建议到交叉分析表的诞生,一个值得记录的体会是:好的功能往往不是事先规划出来的,而是在解决真实问题的过程中被逐步发现的。交叉分析表并不在我最初的需求清单里,它是在"整理"问题基本解决之后,从"对比"这个新的需求中自然生长出来的。
这个探索还处于早期阶段,距离成熟还有不少距离。这些实践中的思考,有可能为有类似需求的开发者或用户提供一些参考。
附录
GitHub 开源: https://github.com/experdot/pointer [MIT]
前序文章:AI 聊天应用的十条改进建议
后续文章:追求极致体验:AI 聊天应用的二十个功能要点
浙公网安备 33010602011771号