微信扫一扫,关注公众号

  • 科技行者

  • 算力行者

见证连接与计算的「力量」

首页 你的AI编程助手,还记得你上次说"标准化"是什么意思吗?

你的AI编程助手,还记得你上次说"标准化"是什么意思吗?

2026-08-17 16:41
分享至:
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-
2026-08-17 16:41 科技行者

你有没有遇到过这种情况:让同事帮你处理数据,你说"把这个字段标准化一下",同事立刻就懂了,因为你们合作了三个项目,他早就知道你说的"标准化"永远是指减去均值除以标准差,而不是压缩到0到1之间。

但如果换成一个刚来的实习生,或者一个AI编程助手,这句话就变得模棱两可了。它可能会选择另一种同样"技术上正确"但完全不是你想要的实现方式。

这不是一个假设的场景。事实上,这正是一群来自东南大学和香港科技大学的研究者盯上的问题:**当你已经和某个AI编程助手合作过很多次,它是否应该、以及能不能,从你之前的对话历史里学会你的"潜规则",从而在新一次对话里少问几句废话,直接给出你想要的代码?**

这个问题听起来简单,但仔细想想会发现它藏着一个挺尴尬的现状。

现状:AI要么装懂,要么问不停

现在主流的AI编程助手处理歧义请求的方式大概分两种。

第一种是"揣测型",你说什么它就按最常见的理解去实现,赌一把。赌对了皆大欢喜,赌错了你就要重新解释一遍,甚至要指出"不对不对,我要的不是这个"。

第二种是"追问型",遇到任何可能有歧义的地方就停下来反问你。这在单次交互里是个稳妥的策略,但问题是,如果你和这个AI已经合作了几十次,每次遇到同一类问题它都要重新问一遍,那这个"追问"就从"负责任"变成了"记性差"。

> 大语言模型(LLM):本文中指GPT、Claude、DeepSeek等能理解和生成自然语言及代码的AI系统,是当前AI编程助手的技术底座。

这两种策略有一个共同的盲点:它们都把每一次编程请求当成孤立事件来处理,完全没有利用"这是同一个用户"这个信息。而这恰恰是问题所在。人类协作者之所以能减少沟通成本,靠的正是记住了对方过去的偏好和习惯。AI要想真正成为"长期搭档"而不是"每次都要重新认识的陌生人",就必须学会做这件事。

于是这篇论文提出了一个新的研究任务,叫做**个性化歧义适应**。简单说,就是给AI助手看一个用户过去几次已经解决完的编程对话记录,然后看它能不能从中总结出这个用户特有的表达习惯和歧义模式,用在一次全新的对话里,尽量少问、快答对。

这事儿到底难在哪:先看看AI在"裸考"下的真实水平

在讲研究者怎么解决这个问题之前,得先弄明白这件事本身有多难。

研究团队做了一个对照实验,叫作"空白对照实验"。他们拿HumanEval(一个经典的编程能力测试集,包含164道函数级编程题,题目描述是完整清晰的,没有故意设计的歧义)直接测试模型,看它们在信息完整、没有任何模糊表达的情况下能做到什么程度。

> HumanEval:由OpenAI发布的编程能力评测基准,包含164道函数实现题目,每道题都有完整的需求描述和可执行的测试用例,长期被用作衡量代码生成模型基础能力的标尺。

结果是,ChatGPT-5.5和DeepSeek V4 Pro在这个"裸题"测试里都拿到了100%的最终成功率,也就是说,只要给出完整、无歧义的需求,加上代码报错反馈可以来回修改,这两个模型几乎能解决所有题目。DeepSeek甚至有91.46%的题目是一次性写对的,压根不需要调试。

这个结果其实很关键,它说明了一件事:**当前顶尖大模型的基础编程能力已经不是瓶颈了**。

它们卡住的地方,不是"能不能写出正确代码",而是"能不能理解你到底想要什么"。这也是为什么这篇论文要专门设计一套充满歧义的测试集,去暴露模型在需求理解层面的真实短板,而不是继续测试它们早已擅长的代码生成能力。

六种"话没说清楚"的方式:给歧义建一个分类账

要研究个性化歧义,第一步得先搞清楚,人到底会以哪几种方式把话说不清楚。

研究者从一篇语言学论文(Li等人2024年的工作)里借来了11种语言歧义类型,然后结合真实的人机编程对话(数据来自WildChat,一个包含上百万条真实ChatGPT对话记录的数据集),重新归纳整理,最终提炼出六种编程场景下特有的歧义机制。

这六种机制分别是:领域认知多义、结构逻辑错位、习惯性语境省略、系统边界误解、对话语境错位、隐含约束欠说明。

听起来有点绕,我用大白话拆解一下每一种到底是什么样子。

领域认知多义,说的是不同专业背景的人对同一个术语有不同理解。比如一个生物信息学背景的用户说"跑一批样本",他脑子里想的是特定的批处理逻辑,而一个通用程序员可能理解成完全不同的东西。

> 多义:同一个词在不同语境或不同人的理解中,指向了不同的含义,这是歧义产生最常见的源头之一。

结构逻辑错位,指的是用户嘴上说得很随意,比如"把小的那些过滤掉",但心里其实有精确的数值边界和逻辑判断,只是没有说出具体数字和判断条件。

习惯性语境省略更好理解,就是用户把团队内部约定俗成的东西当成"大家都懂"的常识,直接省略不说,比如字段命名规范、接口路径这些。

系统边界误解则有点意思,是用户把AI当成了一个可以直接操作你电脑、连SSH、能读日志文件的"人形助理",而实际上AI只是在对话框里回话,根本碰不到你的服务器。

对话语境错位说的是多轮调试中,用户经常用"就是上面那个函数"这种代词指代,但对话里可能有好几个候选对象,容易产生歧义。

隐含约束欠说明,是用户只说了"我要功能能跑起来",但心里默认包含了安全校验、边界处理、异常捕获这些工程师的常识性要求,却完全没提。

为了验证这套分类是不是真的能被人理解和识别,研究者还专门找了20名志愿者做了一次人工标注实验,每个样本让两个人独立判断属于哪种歧义类型。最后算出来的一致性指标(Fleiss' κ)是0.66,这个数值在标注任务里属于"实质性一致",说明这套分类框架不是研究者自娱自乐编出来的概念游戏,而是真的能被普通人识别出来的现象。

造数据的三段流程:如何让AI假装是同一个"有个性"的用户

光有歧义分类还不够,接下来的难题是:**怎么造出一批真实可信、又能反复验证的多轮编程对话数据?**

研究者设计了一套三阶段的数据生成管线。

第一阶段是构造"故意含糊"的初始请求。他们从HumanEval里挑出一道原本描述清晰的编程题,先提取出这道题所有关键的实现约束条件,然后按照分配给这个"虚拟用户"的歧义机制,故意抹去或替换掉其中一部分关键信息,同时套上一个用户人设的表达风格(比如是急脾气的实习生,还是严谨的架构师),最终生成一句听起来自然、但确实缺了关键信息的初始提问。

这里有个设计细节值得说一下:每个虚拟用户会被分配两种歧义机制的组合,而不是单一一种。这是为了增加数据的多样性,让生成的对话更贴近真实场景里"一句话里往往同时藏着好几个理解漏洞"的情况。

第二阶段是把这句含糊的初始请求,扩展成一整段多轮对话。研究者搭建了一个叫做AmbiSimu的模拟环境,里面有三个角色:一个用户智能体、一个对话大模型、一个代码执行环境。用户智能体这边又拆成两个独立的子模块,一个负责"怎么说话"(表达),一个负责"怎么判断对不对"(评判),这样设计是为了避免两者互相干扰,保证生成的对话既符合人设,又能被客观地判断任务是否完成。

对话过程就是模拟真实调试:AI要么反问一句澄清问题,要么直接给出代码,代码会被丢进执行环境里跑一遍隐藏测试用例,用户智能体拿到结果后决定继续对话还是结束会话。

第三阶段是一致性校验。因为同一个虚拟用户会在多个不同的编程任务上生成对话,研究者需要确保这个用户"说话不清楚的方式"在每一次对话里都保持稳定,而不是这次是这种歧义、下次又变成另一种歧义。如果发现前后不一致,这条数据就会被打回重新生成。

这个三阶段流程其实很像电影选角和排练的过程。你先写好一个角色的性格设定和台词大纲(第一阶段),然后让演员在不同场景里即兴发挥对话(第二阶段),最后导演要检查这个演员在每一场戏里是不是都保持了同一个人设,没有前后OOC(第三阶段)。

如果跳过第三阶段的一致性校验会怎样?那这批数据就毫无意义了,因为你没办法验证AI是不是真的学到了"这个用户的说话习惯",还是只是巧合般地蒙对了这一次。整个个性化适应的研究前提就会崩塌。

CAPA基准:600段对话,60个用户格子

经过这套流程,研究者最终搭建出了一个叫CAPA(Cross-Session Adaptation to Personalized Ambiguity,跨会话个性化歧义适应)的基准测试集。

> CAPA:本文提出的评测基准,全称是跨会话个性化歧义适应,专门用来测试AI编程助手能不能利用同一用户过去的对话历史,减少新对话里的反复澄清。

具体规模是600段编程对话,被组织成60个"用户-歧义类型"格子,每个格子里有10段对话,前5段作为"已解决的历史记录"给AI参考,后5段作为"待评估的新任务"来打分。

十个用户人设各自出现在6个格子里,六种歧义机制两两组合成15种搭配,每种搭配出现在4个格子里,整体设计是均衡分布的,避免某一种人设或歧义类型被过度代表而扭曲最终结果。

按任务难度划分,300道待评估任务里有97道简单题(1到2轮对话就能解决)、89道中等题(3到4轮)、114道复杂题(5到8轮),复杂题占比接近四成,说明这套测试集本身有相当的挑战性梯度。

三把尺子:怎么衡量AI适应得好不好

评测这件事光看"最后有没有做对"是不够的,研究者设计了三个指标来立体地衡量表现。

第一个是可执行成功率(ES),就是在规定的对话轮次内,模型最终有没有做出能通过隐藏测试的正确代码。

第二个是首轮可执行成功率(FT-ES),更严格,看的是模型能不能在第一次回复里就直接给出正确答案,压根不用来回澄清。

第三个是完成轮数(TTC),衡量平均需要几轮对话才能做对,没做对的按最大轮次(8轮)计算,这个数值越低说明交互效率越高。

这三个指标搭配起来看的意义在于,ES反映"最终能不能做对",FT-ES和TTC反映"做对的过程有多顺畅"。一个模型可能ES很高但FT-ES很低,说明它总能通过反复试探最终蒙对,但每次都要多问几句才行,这和"一步到位"的体验是完全不同的。

实验结果:历史记录确实有用,但用得还不够好

研究者拿这套基准去测了12个当下比较主流的大模型,涵盖闭源顶尖模型(比如GPT-5.5、Claude Opus 4.8)、开放权重的顶尖模型(比如DeepSeek V4 Pro、GLM-5.2)和体量更小的开源模型(比如Qwen3-8B)。

每个模型都在两种条件下被测试:一种是"无历史",完全不给任何过去对话记录,纯靠这一次的提问去猜;另一种是"同用户历史",给它看同一个虚拟用户过去5段已解决的对话记录,再让它处理新任务。

结果相当有说服力。**有12个模型里有11个模型在有历史记录时ES提升了,12个模型的FT-ES全部提升,TTC全部下降**。

具体到数字,GPT-5.5在无历史情况下ES是74.3%,FT-ES只有可怜的2.3%,也就是100次对话里只有2到3次能一次说对。加上历史记录后,ES涨到84.3%,FT-ES直接跳到31.0%,翻了十几倍。

表现最好的Claude Opus 4.8,无历史时FT-ES是24.3%,有历史时飙升到60.3%,几乎翻倍。

这里有个特别值得琢磨的现象:历史记录带来的提升,**在"首次答对率"上比在"最终答对率"上更明显**。平均来看,12个模型的ES平均提升了6.8个百分点,FT-ES平均提升了15.6个百分点,是ES提升幅度的两倍多。这说明历史记录的作用主要体现在让模型"少走弯路、一步到位",而不是把原本彻底做错的任务硬生生扳回正确。

这个区别其实挺微妙的,好比一个新来的实习生本来就能通过多次试错把事情做对,只是过程磕磕绊绊;给他看了老员工的工作笔记之后,他还是能做对,但这次是直接一次做对,不用来回被上级打回来修改。任务的最终结果变化不大,但过程中的沟通成本和试错次数大幅下降了。

不过话说回来,即便是表现最好的模型,加上历史记录后的FT-ES也才60.3%,意味着接近四成的新任务还是需要反复澄清或者一开始就答错。跟前面提到的空白对照实验里100%的成功率相比,这个差距清楚地说明了:**个性化歧义理解这件事,目前的大模型远没有做到位**。

有一个特别值得单独拿出来说的反例。ChatGPT-5.6-Sol这个模型,加上历史记录后FT-ES提升了15.6个百分点,看起来是进步了,但它的ES反而从79.0%微降到78.7%。这说明历史记录并不是万能药,用得不好反而可能带来一些副作用,具体机制论文没有深挖,但这提醒我们,"给更多信息"不等于"给出正确的帮助",关键还要看模型能不能正确解读这些信息。

三个追问:难度、身份、记忆方式分别造成了什么影响

研究者没有止步于"历史有用"这个结论,而是进一步做了三组对照实验,试图搞清楚这件事背后更细致的机制。

**第一个问题是任务难度的影响。**

按前面提到的简单、中等、复杂三档难度切分待评估任务,结果很直白:即使给了历史记录,复杂任务的表现依然明显更差。以GPT-5.5为例,简单任务的ES是91.75%,复杂任务掉到71.05%,掉了整整20.7个百分点,完成轮数也从2.2轮涨到3.97轮。DeepSeek V4 Pro的落差更大,简单任务ES是88.66%,复杂任务只有62.28%,掉了26.4个百分点。

这说明历史记录能帮上忙,但帮不了太多忙,尤其是面对本身就复杂的任务时,光靠"记住你之前的习惯"是不够的,模型自身的推理能力还是决定性因素。

**第二个问题更有意思,也是我觉得整篇论文里设计得最巧妙的一组实验:历史记录带来的提升,究竟是因为它真的读懂了"这个用户的特有习惯",还是仅仅因为多看了几段编程对话,学到了一些通用的编程套路?**

为了回答这个问题,研究者设计了一个"打乱历史"的对照组:把原本属于A用户的历史记录,换成从其他用户那里随机抽来的历史记录,数量保持一致,但内容对不上号。然后对比三种情况:完全没有历史、打乱的历史、正确匹配的同用户历史。

结果显示,即便是打乱的、完全不匹配的历史记录,ES也比没有历史时提升了不少,最高提升了10.67个百分点。这说明模型确实能从任意的编程对话记录里学到一些通用的模式,比如常见的代码风格、调试思路,这部分收益跟"这个用户是谁"无关。

但当研究者换回真正匹配的同用户历史后,FT-ES和TTC又有了进一步的提升,FT-ES额外提升2到12个百分点,TTC额外减少0.04到0.19轮。虽然这个额外收益的幅度不算特别夸张,但方向是一致且稳定的。

这个实验的价值在于,它把"历史记录有用"这个笼统的结论,拆解成了两层:一层是"看到更多样本"带来的通用学习收益,另一层才是真正的"认出这是同一个人"带来的个性化收益。**如果没有这组打乱对照实验,我们根本无法区分这两种效应,很可能会把功劳全部错误地归给"个性化理解",实际上大部分提升可能只是来自"见多识广"。**

这就好比你去一家新开的餐厅,服务员对你的口味判断准不准,可能一部分来自他今天已经服务过十桌客人积累的经验(通用经验),另一部分才是真的因为他认出了你就是上周来过、点过微辣不要香菜的那位老顾客(个性化记忆)。如果不做对比测试,你根本分不清这家餐厅的贴心服务到底靠的是哪一种。

**第三个问题是关于记忆管理方式的。**

现在市面上已经有一些专门做长期记忆管理的开源系统,比如mem0和A-mem,它们的思路是把原始对话记录提炼、总结、组织成更精简的记忆条目,而不是每次都把完整的历史对话原封不动地塞给模型。研究者好奇,这些现成的记忆系统是不是天然就适合处理这种个性化歧义问题。

> mem0:一个开源的AI智能体长期记忆管理框架,核心功能是从对话中抽取、更新、检索关键事实信息。

>

> A-mem:另一个智能体记忆系统,特点是把记忆组织成互相关联、可以动态演化的笔记结构。

结果有点意外:这两套现成的记忆系统,在DeepSeek V4 Pro和GLM-5.2上,三项指标全面不如直接把完整原始历史丢给模型。哪怕是在GPT-5.5上表现稍好一些,也只是有得有失,没有全面优势。

研究者分析原因,认为问题出在"目标不匹配"上。mem0关注的是抽取和更新事实性信息,A-mem关注的是把记忆组织成结构化笔记,但这两者都没有专门设计用来识别"用户反复出现的歧义解决模式"这件事,也没有主动判断"当前这些记忆证据是否足够支撑我直接写代码,还是应该再问一句"。通用的记忆管理工具解决的是通用的记忆问题,但个性化歧义适应是一个更细分、更专门化的需求,直接套用通用工具效果反而打了折扣。

这个发现挺重要的,它提醒我们一个更普遍的道理:**工具的通用性和针对性之间存在权衡,一个为A场景设计得很好的系统,直接搬到结构相似但目标不同的B场景里,未必好用,甚至可能因为优化方向不对而帮倒忙。**

一个轻量级的解决方案:让AI自己先判断"这段历史够不够用"

既然发现通用记忆系统不够对症,研究者干脆自己设计了一个针对性的轻量级方法,叫做"同用户历史门控"。

这个方法的思路其实挺朴素的。它引入一个专门的"门控大模型",在正式处理新任务之前,先让这个门控模型审查一遍用户的历史对话记录,判断里面有没有足够清晰、一致的证据能说明这个用户的歧义解决习惯。如果证据充分,门控模型就把最有参考价值的那一段历史对话高亮出来,直接推荐给主模型参考;如果证据不够,门控模型就生成一段"澄清指引",提示主模型这次应该重点问哪个方面,而不是漫无目的地反问。

这个高亮出来的证据或者澄清指引,会被一并塞进主模型的上下文里,配合新的用户提问,让主模型要么直接写代码,要么带着明确方向去追问。

评测结果显示,跟直接使用原始的完整历史记录相比,这个门控方法在三个模型上都让FT-ES提升了0.66到13.33个百分点,同时ES基本保持稳定(波动在1个百分点以内),TTC在GPT-5.5和GLM-5.2上也有所下降。

这个结果说明,**光是"多给点历史信息"效果有限,更关键的是让模型学会主动判断"这段信息到底能不能支撑我直接下判断"**。这有点像一个刚接手项目的新员工,如果给他一整箱过去的项目文档,他可能翻半天也找不到重点;但如果有个老员工先帮他标出"这几份文档是关键,其他的可以先不看",他上手的速度就会快很多。如果没有这一步筛选,海量的历史信息反而可能变成噪音,拖慢而不是加速判断过程。

六种歧义机制里,哪种最容易被AI破解

论文还补充分析了GPT-5.5在六种不同歧义机制下的表现差异(因为每段对话都同时携带两种机制,这里统计的是每种机制单独出现时的边际表现)。

结果显示各机制之间的差距并不算特别悬殊,ES范围在81.0%到88.0%之间,FT-ES在24.0%到38.0%之间。习惯性语境省略这一类的ES最高、完成轮数最短,说明模型相对更容易从历史记录里学到用户的隐含约定;而隐含约束欠说明这一类的完成轮数最长,说明那些藏在字里行间、连用户自己都没意识到要说出口的工程细节,是AI最难从历史里总结出来的。

这个细节其实挺耐人寻味的:**越是"看不见的默认假设",越难通过历史记录去学习**,因为这类信息本身就是用户下意识省略的,连显性的表达痕迹都很少留下。

写在后面

读完这篇论文,我最先想到的不是编程助手,而是我自己和朋友的日常对话。我们经常会说一些只有彼此才懂的"黑话",外人听了完全不明白,但我们从不觉得这是歧义,因为共享的历史消解了这种模糊性。这篇论文本质上是在问:AI能不能也建立起这种"共享历史"?

有个细节我觉得值得单独拎出来说:论文里那个"打乱历史"的对照实验,其实暗示了一件让人略微不安的事。**很多我们以为是"个性化理解"的AI表现,可能有相当一部分只是"看了更多例子"带来的普通泛化能力,而不是真的认出了你是谁。**这提醒我,以后评价任何声称"记住你的偏好"的AI产品时,都应该多问一句:如果给它看的是别人的历史记录,它的表现会不会差不多?

还有一点让我意外,就是通用记忆系统mem0和A-mem在这个任务上反而打不过最原始的"直接塞历史对话"。这打破了我之前的一个默认假设,就是"专门做记忆管理的工具,肯定比啥都不做更好"。事实证明工具设计的目标和实际任务目标如果不对齐,工具反而可能是负资产。

论文没有回答的一个问题是:如果用户的偏好本身会随时间变化怎么办?比如一个人从"z-score标准化"的坚定支持者,某天因为项目需求变成了"min-max归一化"的支持者,这时候历史记录反而可能变成误导信息。这个动态演变的场景,或许是这条研究路线接下来最值得啃的硬骨头。

Q&A

Q1:CAPA是什么?

A:CAPA是论文提出的一个跨会话个性化歧义适应基准测试集,包含600段编程对话,用于测试AI编程助手能不能利用同一用户过去解决过的对话历史,来减少新对话里的反复澄清,更准确地写出用户想要的代码。

Q2:有历史记录的AI编程助手真的比没有历史记录表现更好吗?

A:是的,论文测试了12个主流大模型,结果显示有历史记录时,11个模型的最终成功率提升,全部12个模型的首轮直接答对率提升,平均完成对话所需轮数也明显减少,其中Claude Opus 4.8的首轮答对率从24.3%提升到60.3%。

Q3:通用的AI记忆管理工具能不能直接解决这个问题?

A:论文测试了mem0和A-mem这两个现成的记忆管理系统,发现它们整体表现反而不如直接把完整历史对话丢给模型,原因是这些工具关注的是抽取事实或组织笔记,没有专门针对识别用户歧义解决模式做优化,研究者因此设计了一个更对症的轻量级历史门控方法。

分享至
0赞

好文章,需要你的鼓励

推荐文章
----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.- ----..---.-...-/--...-.-......./-...-....-..--../-............-.-