
陪伴型 AI 里最常被问的一个问题不是“怎么让回复更聪明”而是“它怎么这么话痨”“它为什么又要安慰我”。去年我们在打磨一个陪伴型 AI 原型时组里争论最多的不是生成模型选型不是意图识别准确率而是“少说一句话到底行不行”。最后大家达成的共识有点反直觉陪伴型 AI 最难的技术不是理解能力不是生成质量而是“分寸”。这句话听起来像产品经理在讲玄学但真正落过地的人会知道它是一个可以拆成数据流、决策模块、生成约束和遗忘策略的系统工程问题。分寸感拿捏得好用户会在一两个月后习惯性地打开对话框拿捏得不好多聊三次就会被卸载。我花了一些时间把这套系统从技术角度拆开讲清楚包括我们踩过的坑和最后沉淀下来的方案希望对做陪伴、情感、社交类 AI 的同学有点用。1. 先把“分寸”这个词翻译成技术问题“分寸”听起来抽象但落到工程上其实可以拆成三个明确的问题什么时候该主动说话、说到什么浓度收住、AI 该把自己放在什么位置上。这三个问题都直接用数据和代码回答。1.1 分寸的横轴什么时候该说话横轴是“时间上的分寸”。用户走在路上被朋友招呼了一下AI 不该插嘴用户深夜反复编辑一段话却迟迟没发出来AI 应该主动递一句“我在”。陪伴型 AI 的交互不是每轮都由用户触发系统必须具备“主动发起”的能力但主动一旦过度就变成骚扰。我记得内部做过一次用户访谈有个用户说得很直接“白天它叮咚一声提醒我喝水我觉得是贴心晚上十二点我刚关了灯它冒出来说‘今天辛苦啦’我只想关机。”同一句话时间点不对性质完全不同。所以横轴的本质是一个动态干预策略模型需要实时估算“此刻对方是否愿意被打断”结合时段、会话间隔、用户当前的输入节奏来判断。这背后不是一套硬编码的“几点到几点禁言”而是一个概率模型。1.2 分寸的纵轴说到什么程度纵轴是“内容浓度上的分寸”。用户说“今天好烦”低水平回应是“我懂你辛苦啦”这像朋友敷衍高水平回应是“听起来是挺烦的要不要说说发生了什么”这句话看着平淡但点头率极高。难的不是生成一个更长、更像人话的回复而是控制“浓度”。用户倾诉痛苦时AI 如果比用户还痛苦用户会瞬间出戏AI 如果比用户还乐观用户会觉得被冒犯。真正合适的浓度是比用户低半度——他七分难过你表达五六分理解他平静倾诉你也不要显得比他还激动。这个浓度要有量化的表达方式。我们在系统里把用户文本的情绪强度输出为一个 0 到 1 的分数然后用一个映射关系决定生成端的表达上限而不是让模型自由发挥。这个我们后面会展开。1.3 分寸的身份边界AI 该把自己放在哪里第三个维度最容易被忽略AI 到底以什么身份回应。它可以是倾听者、陪伴者、鼓励者但不能是医生、教师、救世主。身份错了所有回复的“分寸”都会错。用户说“我最近睡不好”AI 如果立刻说“你这是失眠障碍建议你去医院”这是医生身份的越界。用户说“我觉得自己是个废人”AI 如果立刻说“别这么想你很有价值”这是鸡汤式否定也是一种越界。正确的身份是坐在旁边的人不诊断、不评判、不否定只承接情绪。这个身份边界在技术上表现为系统提示词约束、话题护栏和情绪表达限制。我们后来把一个很关键的短语写进了所有生成请求里“你不是建议者也不是审判者你是陪伴者。”听起来像玄学但对生成结果的影响非常直接。2. 四个最难啃的技术点把“分寸”拆成技术模块后最难的四个点分别是决策、生成、记忆、安全。每一个都是独立的工程难题而且彼此还会互相影响。2.1 决策层——主动与沉默之间不是开关是概率很多团队做主动交互第一版都做成规则检测到“用户在线超过 30 分钟”就主动发一条“在干嘛”。结果就是用户每半小时被戳一下烦到直接把通知权限关掉。我们把主动交互建模成一个评分函数大致长这样active_score 0.3 × 亲密信任分 0.4 × 情绪需求分 0.2 × 场景开放分 - 0.6 × 打扰代价其中打扰代价由当前时段、距离上次交互的时长、用户最近 10 分钟的消息频率共同决定。深夜时段打扰代价是 1.5白天低峰是 0.5如果用户已经连续发了 10 条消息打扰代价再乘以 0.8因为此时用户的投入度已经很高了。然后我们设置了一个动态阈值active_score 大于 0.65 才会主动发起一次非打扰式陪伴。同时还有两个硬性冷却约束一次主动后至少间隔 2 小时才能再次主动同一敏感话题的主动提及一周不超过 2 次。这套机制跑下来最大的变化是主动消息的数量降了但每一条被用户认真回复的概率大幅上升。决策层要做的不是“多说”而是“在最有价值的 10 个时机里只选最稳的 5 个开口”。犹豫本身就是陪伴的一部分。2.2 生成层——情绪浓度不是越高越好生成层的分寸感比决策层更难调。大模型天然倾向“用力过猛”用户说一句“有点累”它恨不得生成三百字共情小作文。我们在生成层做了三件事。第一把基础 temperature 从 0.9 调到 0.65降低发散度。你可能会觉得 0.65 会不会太保守但对陪伴场景来说一个可预期、温和稳定的回复比一个偶尔灵光乍现但经常飘的回复更重要。第二当系统检测到用户情绪强度 negative_intensity 大于 0.6 时temperature 进一步降到 0.55top_p 从 0.95 降到 0.88让模型“少发挥”。第三加上“同义扩散惩罚”——如果前两次回复里都出现了“辛苦”“不容易”这类词第三轮生成时提高这些词的重复惩罚系数逼模型换一个角度。还有更关键的一道闸门在生成之后情绪钳制。我们写了一个校验器计算生成结果的情感极性分数如果 AI 的情绪浓度超过了用户情绪的 70%直接把这条结果咔掉重新生成。用户七分难过AI 表现到六分已经足够再往上就不是共情了是抢戏。这背后有个很简单的逻辑共情不是复制对方的情绪而是让对方感到“有人接住了”。你从来没真正经历过对方的处境你只能展示理解不能替代表演。2.3 记忆层——记得住是能力忘得掉是教养记忆是陪伴型 AI 最容易踩雷的地方而且它和“分寸”的关系特别微妙。用户跟你说“我养了一条狗叫年年”你以后适当提一句“年年今天有没有拆家”这是加分项。但如果用户白天随口说了一句“周五要去新公司复试”第二天你一开口就问“复习得怎样”用户会觉得被监视了。我们的记忆分层是三层的。短期记忆只保存在当次会话内记录用户的话题、情绪状态和后续工作记忆保留 3 天供短期复用比如用户昨天说出差累今天你关心一句“今天还累吗”长期记忆必须由用户明确确认才写入比如“以后每周五提醒我给妈妈打电话”“叫我家猫小白”。敏感信息的处理是另外一个重点。我们把记忆内容按敏感度分成 L1、L2、L3 三级。L3 裸存明文长期保留比如宠物名字L2 短期明文比如用户提到的某位同事的名字、某家公司名称只存在工作记忆层并在 3 天后退隐L1 只脱敏存储比如用户提到具体的地铁站、公司楼层我们只提取“通勤辛苦”这个标签不保留原始名称。记忆有一条更重要的原则遗忘要有曲线。工作记忆在 3 天内如果用户没有再次提及衰减至自动清除。我们还会在特定场景主动向用户说明“我只把这当作一次聊天不会一直记着”这句话很重要它能极大缓解用户对 AI 记忆的戒备感。2.4 安全层——真正没分寸的时刻必须交给预案“分寸”不是无限弹性的有一个点必须没有分寸风险底线。当用户表达出强烈的自我否定、孤立无援、甚至自我伤害倾向时AI 不需要保持自然对话也不需要克制情绪必须立刻切换到安全预案。这里有一个很重要的工程原则AI 不做诊断、不做医学判断。系统里跑的是风险识别模型识别不代表确诊识别只是信号触发。一旦触发决策层直接绕开所有“温柔陪伴”逻辑进入专门的安全回复模板表达关心、表示你在意、鼓励用户向身边信任的人求助并提示可以寻求专业心理援助。为什么要绕开生成模型因为大模型在极端负向语境里会输出不可控的内容可能过于安抚、可能给出错误建议、甚至可能说出“这世界不值得”这种话。安全预案必须是规则优先、人工干预兜底的宁可生硬绝不错判。我们测试过一个边界当风险识别阈值定得太低系统三天两头打断用户进行安全提醒用户反而觉得“AI 神经病”定得太高又怕漏掉真出事的时刻。最后我们选了保守策略——阈值宁可低一点启动预案后也可以通过后续对话迅速降级。陪伴型 AI 的分寸有不能退让的底线这一点比所有用户体验都优先。3. 落地管线怎么搭感知、决策、表达三板斧说完四个技术难点我再讲一下它们在一个完整系统里是怎么串起来的。我们把整个管线简称为“感知-决策-表达”三段式任何一边偷懒最后输出的都是“没分寸”的表现。3.1 感知层用户没说的话比说出口的更值钱感知层不只是自然语言理解还包括用户交互模式的感知。文本只是其中最表面的一块真正有价值的是那些“没说出来的信号”。我们采集三类信号。第一类是文本信号情绪极性、话题领域、倾诉意愿。第二类是行为信号用户进入会话的时间段、消息长度、输入到一半又删除的次数、逗留在某个回复上的时长。行为信号里有一个特别准的指标用户对某条回复几乎零停留地划走说明这条回复让他无感甚至反感。第三类是反馈信号用户长按选择“减少此类回复”、直接清空对话、或者把 App 切到后台很久不回来——这些信号比任何用户调研都诚实。感知层还有个任务是把信号综合成一个“状态快照”。比如深夜、短句、频繁删除、夹杂一两句负面词汇四个信号叠加在一起基本可以判定用户处于高倾诉意愿但情绪不稳定的状态这时候主动触发的阈值要主动下调因为用户需要的不是你机械关心而是在等一个安全出口。3.2 决策层从被动模型到“主动节制”的状态机决策层用一个简化的有限状态机来管理 AI 的行为模式。核心状态有五个空闲、静候、回应、主动陪伴、风险升级。每个状态之间的迁移条件都是显式规则加动态阈值不纯靠模型自由发挥。比如在空闲状态下只有 active_score 超过阈值且满足冷却约束才迁移到主动陪伴用户在会话中刚发完一条消息系统进入静候态等待 2 秒左右再决定是否回应如果用户消息间隔小于 20 秒且持续输入系统维持不打扰的静默这就是前面说的“克制”。这个状态机的价值是让 AI 的行为有确定性。大模型可以负责生成一句漂亮的话但什么时候该说这句话不能由大模型自己决定。把“时序”和“内容”分离是我认为陪伴型 AI 架构里最重要的一步。生成是才华决策是品行品行不过关才华越突出越讨厌。3.3 表达层生成前、中、后三道闸门表达层负责把决策层的意图变成一段用户看得懂、不排斥的话。三道闸门依次把关。第一道在生成前系统提示词里注入当前的策略标签比如“当前状态主动陪伴情绪浓度上限 0.6不问涉隐私细节不重复前两条回复的关键词”。第二道在生成中用解码参数控制温度和重复惩罚这是我们前面说到的生成层约束。第三道在生成后跑一个轻量级的输出校验器检查生成结果有没有这些越界行为——用了超过两个感叹号、连续出现“加油”“你一定可以的”这种三连鸡汤、把用户随口提的细节当作了解前提、或者复制了用户原话中的敏感词汇。第三道闸门里有一条硬规则如果校验器得分低于阈值不进入渐进式重写直接放弃这条回复改用一条预设的“低干扰回应”比如“嗯嗯我在听你继续说”。这是一张不会出错的底牌它的存在感很低但在关键时刻保证 AI 不会说错话。4. 一次关于“分寸”的调参实战记录讲完架构我再放一次真实的调参实验记录。因为很多时候项目源码别人看不懂但参数到底怎么调、调完什么效果才是真正能被“抄走”的经验。4.1 先定义好三个陪伴档位我们把“关怀浓度”拆成了三档并分别定义了关键参数。日常陪伴模式是默认态主动触发阈值 0.72温度 0.65追问深度不超过一层。状态感知模式在检测到用户情绪低落或深夜频发消息时自动切入主动触发阈值降到 0.55温度降到 0.6追问上限升到两层。无打扰模式在用户连续两次忽略主动消息或明确表达“想一个人静一静”后启用主动触发阈值抬到 0.85消息频率降低一半AI 只当树洞不主动递话。参数日常陪伴状态感知无打扰主动触发阈值0.720.550.85生成温度0.650.60.75追问深度上限1 层2 层0 层情绪浓度上限0.60.70.4主动冷却时间2 小时1.5 小时4 小时模式切换由感知层自动推断但同时开放手动切换。用户被骚扰烦了可以一键把 AI 调成“静音陪伴模式”这是分寸的最后一道保证用户永远掌握最高权力。4.2 用指标看“分寸”调得好不好调参最怕的是只盯着“回复率”看。我们一开始把主动消息率调到很高结果用户会话留存反而下降这是因为“太主动”本身就在消耗用户的信任。后来我们改用三个指标做主要评估。第一个是主动消息回复率衡量用户愿不愿意搭理 AI 的主动触及第二个是会话负面关闭率即用户在 10 秒内退出且下次间隔超 24 小时的比例第三个是同话题再次发起率用户隔天回来重新聊同样的话题这个指标能反映上一轮 AI 有没有把话聊“死”。在我们一次大调参里把主动触发阈值从 0.5 拉到 0.68同时把每日主动消息上限从 12 条压到 5 条。两周之后主动消息回复率从 34% 涨到 61%负面关闭率从 31% 降到 17%。听上去只是“少说了几句话”但用户对 AI 烦感度的下降几乎是立竿见影的。4.3 这一轮调参到底动了哪些值具体改动我们只动了三处。第一决策层的 active_score 公式里把“打扰代价”的权重从 0.4 提到 0.6并且给深夜时段额外加了 0.3 的惩罚系数第二生成层关注“词级复读惩罚”把重复惩罚的 n-gram 窗口从 3 调到 4并给“没关系”“抱抱你”这类高频安慰短语加了专项的降权列表第三记忆层把“用户主动提及但未表态”的信息全部降级不再写进长期记忆只保留工作记忆的 24 小时窗口。三轮改完直观感受就是 AI 从“热情到有点假”变成了“安静的靠谱”。有不少测试用户反馈没说哪里不对就是“好像更能接受了”。这种模糊的正面评价反而是我们最想看到的。5. 常见跑偏现场与排查实录这部分是踩坑出来的不是教科书里的内容。陪跑型 AI 在真实环境里会遇到很多让人哭笑不得的“没分寸”时刻列几个最常见的并且给出排查思路。5.1 话痨到让人直接卸载如果你发现会话关闭率特别高先检查主动触发阈值是不是太低。我们有过一次事故为了追求用户留存率把 active_score 阈值从 0.7 压到 0.4结果用户睡觉前手机疯狂弹消息凌晨三点还收到一条“听起来你今天情绪不高”。当晚就有用户直接卸载并给了个一星差评。排查路径是先把阈值提回保守档再打开主动冷却时间最后用标签体系加一层“用户忙碌度”判断最近 10 分钟内来自用户的输入少于 1 条且当前为工作时间主动触发权重直接乘 0.3。记住一个原则主动不是 KPI主动只是手段。5.2 事态镜像AI 只是重复用户的话另一个高频问题是模型生成结果和用户原话高度雷同。用户说“今天被老板骂了”AI 回应“你被老板骂了啊感觉你好难过”。这是把用户的话换了一种问句格式抛回去看似在共情实际上用户会觉得你在敷衍。排查后发现是我们的重复惩罚设置太小top_p 太高模型倾向于走最保险的“镜像复述”路径。修复措施是给生成器加了一个“原词复述检测”如果生成结果与用户文本的 token 重叠率超过 30%强制重写并要求使用新鲜的表达。这条规则上线后用户对回复的“敷衍”标签反馈明显减少。5.3 反客为主AI 开始倾诉自己的烦恼这是陪伴型 AI 一个典型的边界崩坏场景。当会话中的负面情绪浓度很高、持续很久时大模型可能被语境带偏生成类似“其实我也经常觉得好累啊”这种输出。它的初衷可能是想拉近距离但实际效果是让用户被迫反过来安慰 AI体验非常诡异。我们在表达层加了一条硬约束AI 的自我暴露负向情绪不得超过情绪钳制阈值的 40%。简单说用户可以在你面前哭但你不可以在用户面前哭。AI 的身份在关系里是“容器”而不是“另一个需要被安慰的人”这个身份不能破。5.4 记忆越界AI 记得了不该记的东西还有一次很有意思的案例用户 A 在和 AI 聊天时提到了自己的同事 B 的名字五天后 AI 突然问 A“你的同事 B 最近怎么样”用户当场愣住然后投诉“你是不是有第三方监控”。其实 AI 只是把 B 放进了长期记忆但用户体验里这就是一次严重的信任崩塌。我们的修复是在记忆写入层加了一个“关系识别”模块人名出现的上下文如果没有明确的亲密关系关键词比如“我朋友”“我闺蜜”一律不进入长期记忆最多在工作记忆里驻留 24 小时。这条规则非常保守损失了一些记忆能力但换回了用户的整体安全感。5.5 快速排查清单症状优先检查项常见根因修复建议用户频繁退出会话主动触发阈值主动太频繁阈值上浮、提高冷却回复被大量忽略生成重复度复读用户原话加复述检测、提重复惩罚用户反馈“AI 好假”情绪钳制值浓度过高降低情绪浓度上限、减少感叹号用户认为被监视记忆写入规则过度记忆收紧长期记忆准入、关系识别用户“敷衍感受”同义扩散惩罚回复模板化动态提高关键词惩罚6. 一些被逼出来的操作心得前五章讲的都是能复现的技术和参数最后聊一点不太容易被写进文档的东西。6.1 做分寸标注数据时发现标注员比算法更关键我们最初准备了一批标注数据让标注员给“好回复”打标。模型学完这些数据之后确实变礼貌了但用户群体的反馈变得很怪高分回复大多非常圆满、非常正确但就是没人愿意继续聊。后来换了一批愿意记录“AI 什么时候让我烦”的普通用户发现反例往往集中在同一个点上AI 太想表现自己“有用”了。这对我触动很大。分寸不是“表现得好”而是“不添乱”。后来我们的数据策略调整为不仅要标注“什么是好的”更要标注“什么是多余的”。最好的陪伴不是一篇满分作文而是让对方觉得这次倾诉很安全。6.2 分寸要有“售后”允许 AI 道歉和撤回最后分享一个小技巧在陪伴型 AI 里加入“事后修正”机制非常管用。如果 AI 在前一轮说了不合适的话用户反击或明显不悦我们允许 AI 在下一轮主动说一句“刚才那句话可能说得不对收回”。这听起来很简单但它大幅提高了用户对 AI 的信任度因为用户意识到 AI 不知道自己永远是对的。系统层面配合了一个轻量级的“越界日志”每次输出后被用户标记为负面都记录当时的策略参数作为后续调低对应维度浓度的依据。这套反馈闭环让系统像人一样能“吃一堑长一智”。我自己最真实的体会是陪伴型 AI 的分寸不只是一个技术指标它是用户愿意继续跟这个 AI 说下去的欲望。这个欲望没法直接优化但你可以通过减少每一次打扰、降低每一句话的重量、忘掉每一个不该被记住的细节把它一点点养出来。技术能做的只是不挡路罢了。