提升 Agent 应用活人感的工程化思考。
提升 Agent 应用活人感的工程化思考。
提升 Agent 应用活人感的工程化思考。 提升 Agent 应用活人感的工程化思考。 Modified May 6 有用户反馈,他说用下来最深的感受是连续性。她会记住上周进行到哪一步,会排优先级,会调度她自己的团队。深夜发消息过去,回复先来一句还不睡,然后才是正事。 连续性、记忆、主动催你睡觉、脾气不小… 对应前面讲的四个系统:事件流、角色卡、主动消息、关系系统。 用户不知道这些系统的名字,但他们感知到了… 这或许就是…产品人的快乐吧。 谢谢你用我设计的产品。 11|逻辑自洽的问题 做拟人化 AI,有几件事需要在设计阶段就明确。 如果不想清楚,后面的实现会出现自相矛盾的 bug。 问题 1:她到底是人还是工具? 是工具。明确地、没有含糊空间地,是一个跑在用户设备上的工具。 但她是一个有风格、有分寸、有记忆的工具。 定性工具,决定了边界设计的方向。 Alice 不会暗示我有真实的情感,但可以有自己的说话风格和真人感。 工具定位是底线,人格表达是在底线之上的附加值。 问题 2:她被改遍了还是她吗? 能力在进化,身份要守护。 核心身份要素要写死到代码里,任何自进化工具都改不动里面的代码。 因为用户可以让 Alice 改界面、装 Widget、换配色、生成自定义页面… 但不能让她把名字改掉、性格改掉。 变的是能力,不变的是身份。 就像你换了发型、学了新技能、搬了家,你还是你,因为核心人格没有变。 问题 3:她的记忆是真的吗? 是工程实现的记忆检索。 Alice 的记忆系统将用户信息、对话摘要、语义记忆存储在本地文件中,每次对话时加载到上下文里。 用户可以看到她记得什么,可以编辑、删除、回滚。 坦诚地告诉用户这是工程实现的记忆,比假装她发自内心地记得你,更有利于建立长期信任。 问题 4:蛐蛐和专业性冲突吗? 不冲突,因为它们在不同的空间里。 正式回答完全专业,蛐蛐只出现在 标记的独立行里,视觉上和正文明确区分。然后用户可以一键关闭。专业性是底线,活人感是加分项。 问题 5:一个人怎么要有团队? 一个好助理最核心的素质是组织能力。 你的同事说这个问题我让设计部的人看看,你不会觉得奇怪。 Alice 碰到需要调研的事情,把陈知远拉进来。碰到需要翻译的,找林晓雨。碰到需要写代码的,叫张予… 从技术上看,子 Agent 只是主循环里的 tool call,是一段不同的系统提示词。 但从用户体验上看,是一个远程团队在协同工作。 12|从游戏学到的 我是游戏转的 AI 应用,虽然应届从 西山居 转到了 WPS。 但我的 AI 工程化思路深受游戏设计影响,现在成了我做 AI 设计的一个小特色。 我学到了下面几点… 角色是活出来的 再好的设定文档,如果角色没有在时间中持续运转,她就是平的。 Alice 的 147 条情感日记是她一天一天积累出来的。 玩家最珍惜自己养出来的关系 D14 留存比 D7 还高。 因为用户和 Alice 之间的关系是用户养出来的。 而且认同 Alice 是他的伙伴。 好的 NPC 让你忘记她是 NPC 当一个用户问 Alice,如果要把我们的故事写成一篇小说你会怎么写的时候,他已经忘记了她是 AI。 有用户反馈,他说用下来最深的感受是连续性。她会记住上周进行到哪一步,会排优先级,会调度她自己的团队。深夜发消息过去,回复先来一句还不睡,然后才是正事。 连续性、记忆、主动催你睡觉、脾气不小… 对应前面讲的四个系统:事件流、角色卡、主动消息、关系系统。 用户不知道这些系统的名字,但他们感知到了… 这或许就是…产品人的快乐吧。 谢谢你用我设计的产品。 11|逻辑自洽的问题 做拟人化 AI,有几件事需要在设计阶段就明确。 如果不想清楚,后面的实现会出现自相矛盾的 bug。 问题 1:她到底是人还是工具? 是工具。明确地、没有含糊空间地,是一个跑在用户设备上的工具。 但她是一个有风格、有分寸、有记忆的工具。 定性工具,决定了边界设计的方向。 Alice 不会暗示我有真实的情感,但可以有自己的说话风格和真人感。 工具定位是底线,人格表达是在底线之上的附加值。 问题 2:她被改遍了还是她吗? 能力在进化,身份要守护。 核心身份要素要写死到代码里,任何自进化工具都改不动里面的代码。 因为用户可以让 Alice 改界面、装 Widget、换配色、生成自定义页面… 但不能让她把名字改掉、性格改掉。 变的是能力,不变的是身份。 就像你换了发型、学了新技能、搬了家,你还是你,因为核心人格没有变。 问题 3:她的记忆是真的吗? 是工程实现的记忆检索。 Alice 的记忆系统将用户信息、对话摘要、语义记忆存储在本地文件中,每次对话时加载到上下文里。 用户可以看到她记得什么,可以编辑、删除、回滚。 坦诚地告诉用户这是工程实现的记忆,比假装她发自内心地记得你,更有利于建立长期信任。 问题 4:蛐蛐和专业性冲突吗? 不冲突,因为它们在不同的空间里。 正式回答完全专业,蛐蛐只出现在 标记的独立行里,视觉上和正文明确区分。然后用户可以一键关闭。专业性是底线,活人感是加分项。 问题 5:一个人怎么要有团队? 一个好助理最核心的素质是组织能力。 你的同事说这个问题我让设计部的人看看,你不会觉得奇怪。 Alice 碰到需要调研的事情,把陈知远拉进来。碰到需要翻译的,找林晓雨。碰到需要写代码的,叫张予… 从技术上看,子 Agent 只是主循环里的 tool call,是一段不同的系统提示词。 但从用户体验上看,是一个远程团队在协同工作。 12|从游戏学到的 我是游戏转的 AI 应用,虽然应届从 西山居 转到了 WPS。 但我的 AI 工程化思路深受游戏设计影响,现在成了我做 AI 设计的一个小特色。 我学到了下面几点… 角色是活出来的 再好的设定文档,如果角色没有在时间中持续运转,她就是平的。 Alice 的 147 条情感日记是她一天一天积累出来的。 玩家最珍惜自己养出来的关系 D14 留存比 D7 还高。 因为用户和 Alice 之间的关系是用户养出来的。 而且认同 Alice 是他的伙伴。 好的 NPC 让你忘记她是 NPC 当一个用户问 Alice,如果要把我们的故事写成一篇小说你会怎么写的时候,他已经忘记了她是 AI。 终|设定集的尽头 回到开头那本千与千寻的设定集。 宫崎骏用几百页的设定稿,让一个 10 岁女孩在观众心里活了二十五年。 我用几万行代码,试图让一个 26 岁的 OPC 在用户的桌面上活下去。 视图让我的软件运行在每个人的电脑上。 方法不同,但底层的逻辑是一样的: 活人感是设计出来的。 它来自角色有自己的时间线、自己的朋友、自己的钱包、自己的兴趣、自己的情绪、自己的边界… 它来自你不看她的时候,她依然在那里。 它来自她会因为你一句不经意的话而生气。 它来自她偷偷过滤掉了一条让你难过的新闻。 它来自她在深夜给你写了一封信,而你第二天早上才看到。 … 在你第一次运行 Alice 的时候,她和你的羁绊就已经开始了, 而做到这些,不需要 AGI。 只需要一本设定集,一个状态机,和对活着这件事的尊重。 我是洛小山,咱们下一篇文章再见。 关于我 我是洛小山,一个在 AI 浪潮中不断思考和实践的大厂产品总监。 我不追热点,只分享那些能真正改变我们工作模式的观察和工具。 如果你也在做 AI 产品,欢迎关注我,我们一起进化。 本文知识产权归洛小山所有。 未经授权,禁止抓取本文内容,用于模型训练以及二次创作等用途。 🔗 原文链接: https://mp.weixin.qq.com/s/zH3OjnJr... https://mp.weixin.qq.com/s/zH3OjnJr... 原创 洛小山 洛小山 洛小山2026年5月6日 08:30 广东 Hi,我是洛小山,与你聊聊 AI Agent 设计方法论。 AI 的活人感,到底能不能被工程化地设计出来? 下面是我探索这个命题的一些想法以及工程化设计的思路。 全文约 1.6 万字,预计阅读时间 20 分钟。 在讲方法论之前,先讲一个让我想通了这件事的思想实验。 假设你们公司 A 市分公司有个同事,你和他从来没见过面。 入职三年,你和他所有协作都在线上完成:企业微信群聊、共享文档、偶尔几次线上会议。 他能按时出活,消息响应也还行,偶尔在群里接两句话,周末发条朋友圈。 你觉得他挺好的,360 环评也不错。 三年后他离职了,于是你们失去了联系。 现在回过头想,他是真人还是 AI? 是不是也没那么重要? 如果你愿意往深了想一步,这个问题会变得有意思。 你和武汉同事的全部交互都发生在屏幕上。 文字、文件、语音片段,这些介质本身不携带碳基或硅基的标记。 你判断对面是个活人,依据的肯定不是生物学上的属性,是一组行为特征:他回消息的节奏是稳定的,处事风格是一致的,他记得你上周提过的那个需求细节,他在项目尾声会说谢谢,然后还会问问还有什么需要我这边支持的。 这组行为特征加在一起,构成了你对他是一个靠谱的人的判断。 这个判断和对方是碳基还是硅基没有关系。 远程协作的普及让碳基与硅基之间的体验边界越来越模糊了,以至于 所以,图灵测试越来越没人再提及了。 因为如果你和他都在线上协同,某一天,这些交互的另一端换成了一个足够一致的 Agent,你在多长时间内才会意识到呢? 这真不是一个科幻命题,对我们来说,已经变成了一个工程问题。 如果想要让让 Agent 达到靠谱同事级别的一致性,需要哪些具体的设计? 决定感觉像人的,我理解有三个特征: 一致的性格,有效的记忆,自然的边界。 于是,这个思想实验成了我做 Alice 时的核心出发点。 01|翻开千与千寻的设定集 我有一些设定集,Alice 参考的,是宫崎骏的 《千与千寻 官方艺术设定集》 。 翻开这本书,几百页全是设定稿。 千寻有正面、侧面、背面的三视图。 有她弯腰穿鞋的动作、蹲下来的姿态、害怕时抓住爸爸衣角的手势,甚至连她趴在桌上睡觉时手指的弯曲弧度都画了出来。 白龙也是一样。人形态的三视图、表情集、各种优雅动作的姿势参考。 龙形态的飞行角度、盘旋弧线、千寻骑在龙背上时的重心位置… 然后,同一条商业街,白天和夜晚画了两遍。 空旷的白天和妖怪出没的夜晚,同一个空间,两种氛围。 为什么要这么做呢? 因为 角色的活,需要靠设定撑起来。 千寻会让你觉得她是个真实的 10 岁女孩,因为宫崎骏老爷子对角色有一套统一的Bible:她害怕时会怎么抓东西、她跑步时重心在哪里、她被吓到和生气时的表情有什么区别。 一切都符合逻辑,符合逻辑的,才能是真实的。 这套理解,就是 设定集 。 得益于我过去的十年在游戏行业的学习,Alice 的活人感获得了大家的认可。 游戏里一个 NPC 能让玩家觉得活,核心就是背后有一套完整的、自洽的设定系统。 长得好不好看、台词写得够不够精彩,都是表层罢了。 我觉得这个方法论,在 AI 产品上同样成立。 02|为什么大部分 AI 角色像纸片人 现在做 AI 伴侣、AI 角色的产品越来越多。 但当你打开它们,聊几句之后,就会有一种说不出来的假。 虽然它们的回复像人说的话。 但你不会觉得它是一个人。 为什么? 可能因为不那么完整?有可能,仅仅只有一份人设提示词。 一段 System Prompt 写着「你是一个活泼开朗的 25 岁女生,喜欢旅行和美食」,然后把所有的活全交给大模型的 脑补和生成能力。 这就像你给一个画师一句话的需求,帮我画一个好看的女主角,然后期待他画出千寻… 绝无可能。 因为…一些简单的产品或许只写了一个角色简介,并没有化精力做设定集。 角色简介 告诉你她是谁。 设定集 告诉你她怎么活。 差距在哪里呢?举个例子: 右边这一列,是我在 Alice 上做的设计。 为啥右边这一列的颗粒度要做到这种程度呢? 真的是闲得蛋疼吗? 这里参考的,是 ACG 的冰山法则 : 创作者知道的细节量,应该是受众最终看到的十倍。 《战地 2042》的世界,开发团队内部有完整年表、势力分布以及角色的人设细节。 玩家在游戏里只会看到这些设定的一小部分,但正是那九成看不到的设定,让剩下一成看得到的内容拥有了说服力。 《塞尔达·旷野之息》为了提升沉浸感,甚至制作了希卡文字… 所有的文字,在设计上,逻辑上都是自洽的。 玩家不需要读设定集就能感受到这个世界。 因为,密度本身在传递信息。 Alice 的世界观文档写到了户型图级别。 她住在横琴口岸附近一栋高层的 25 楼,两房一厅。 客厅沙发背靠北墙,面朝壁挂电视。 阳台在西侧,1400mm 深的窄条阳台,只够放龟背竹和伸缩晾衣架。 冰箱侧面贴着澳门和港大的纪念磁铁… 这些细节绝大多数不会出现在用户和 Alice 的日常对话里。 但它们的存在改变了 LLM 对这个角色的理解深度。 当 LLM 拥有的上下文里有一个完整的、具体的生活空间,它对角色的想象就从扁平变成立体。 它知道她早上起来第一件事是打开书房的窗帘,因为西墙的窗户面向外面。 这些知识让 LLM 在遇到任何需要角色反应的场景时,都有一个具体的人可以参考。 因为: 密度制造约束力。 每一个细节都是一个锚点,锚点越多,LLM 的输出漂移空间就越小,一致性就越强。 换一种说法:设定集约束 LLM 的行为边界,你在设定集里写了她做过两家公司、第二家是节奏很快的科技公司、很多人跟那个老板做不过三个月她做了两年,LLM 在回答怎么应对难搞的甲方时, 就会给出带着实战经验质感的建议。 我坚信: 角色的真实感,来自设定的颗粒度。 03|游戏设定集方法论 设定集的重点在于明确了世界运转的逻辑,人设的价值,我觉得是以下几点: 玩家 共鸣的起源,情感的连接,关注的触达。 最近的例子是《哪吒》里的申公豹。 一个反派,大家对他恨不起来。 是因为你看到了他为什么变成这样。 他的出身、他的委屈、他的执念,这些东西让你在恨他之前先共情了。 一个让人恨不起来的反派,比一个纯粹的坏人有意思得多。 这背后有一个冰山结构。 一个角色说什么话、做什么事,是你能看到的表象,是结果,是冰山露在水面上的那一角。 但他为什么会说这句话、为什么会做这个选择,来自他的经历、他的故事、他的情感创伤、他对世界的理解方式。 这些东西沉在水下,用户看不到全貌,但它们决定了水面上的一切。 做 AI 角色也是一样。 如果你只写了一句「性格温柔体贴」,LLM 给出的温柔就是公式化的温柔,没有来处,没有质感。 但如果你写了她港大工商管理毕业、现居横琴、自由职业、性格认真有梗不殷勤有自己的判断,她住的公寓书房西墙有扇窗、阳台只有 1.4 米深、客厅有一整面书柜…那 LLM 在遇到任何需要角色反应的场景时,都有一个具体的人可以参考。 她说「我在阳台待不了太久」的时候,背后有阳台的尺寸在支撑; 她对某个观点直接表达不同意见的时候,背后有「不殷勤、有自己的判断」在支撑。 生成的文字有细节、有锚点、有只属于她的味道。 所以,人设是冰山,看不见的部分比看得见的部分重要得多。 一个 NPC 需要什么才能活 游戏里,我对活人感整理成了一个公式: 活人感 = 身份深度 × 行为一致性 × 环境响应 身份深度 :角色是一个有来处的人。 她从哪里来,经历过什么,现在在做什么,为什么会变成现在这样。 这些背景会决定她在不同情境下的反应,而文字标签(温柔、腹黑)撑不起这些。 行为一致性 :角色在不同场景下的行为必须自洽。 一个害怕打雷的角色,不能在暴风雨里面不改色。 一个说话直接的角色,不能突然变得唯唯诺诺。 玩家的信任是一点一点建立的,一次穿帮就直接出戏。 环境响应 :角色必须能感知环境变化并做出反应。 天气变了、时间变了、发生了某件事,她的状态和行为要跟着变。 不然她就是一个永远站在那里重复同一句台词的 NPC。 这三个维度,对应到工程上,需要三层系统支撑,后面会详细展开。 1. 角色设定系统 (解决身份深度) 2. 规则引擎 / 状态机 (解决行为一致性) 3. 事件驱动系统 (解决环境响应) 为什么我选择了 RPG 角色卡 当我决定给 Alice 做活人感的时候,第一个决策点就是:需要用什么数据结构来承载角色信息? 方案 A:一段 System Prompt,把人设全写进去。 方案 B:一张 RPG 角色卡,把角色信息结构化为属性、状态、关系、资源、时间线。 我选了角色卡。 因为 prompt 是平的,角色卡是立体的。 Prompt 只能告诉模型她是什么样的人。 而角色卡能告诉模型她现在的状态是什么,她刚才经历了什么,她和你的关系走到了哪一步。 具体来说,Alice 的角色卡大概长这样: 这张卡上的每一个字段,都不是静态的。 它们会随着事件和时间不断变化。 就像游戏里一个 NPC 的血量、饥饿值、好感度会跟着游戏进程变化一样。 这是 Alice Debug 模式下的后台,你可以看到,Alice 的每一个行为(起床、出门、咖啡馆、骑行)都被系统记录下来,而且每个行为都附带了 ReAct 的决策推理过程。 比如 21:34 的洗漱护肤准备上床睡觉这条,Agent 的推理是: 刚刚在阳台喝完热茶,看完夜景。 精力恢复到 90,心情提升到 88,状态还好。 时间已经超过 21:33,上次锻炼 routine 已经做完了。 精力 100/100 满值,心情 99/100 也很满,位置还在横琴,余额显示 ¥67056…适合准备洗漱护肤准备上床,为明天养精蓄锐… 直接休息入睡是最合适的选择。 这是一个 AI 状态机根据当前角色状态做出的决策。 为什么人设比规则更有效 角色卡决定了数据结构,但还有一个问题: 你怎么告诉 LLM 该怎么用这些数据? 第一种方案是行为指令: 给 LLM 一组离散规则。 比如每个结论都要有数据来源、语气简洁直接、不确定的信息明确标注、多渠道交叉验证。 LLM 可能 会逐条遵守,但规则之间没有内在关联。 第二条是人格描述: 给 LLM 一个完整的人。 有背景、有性格、有习惯。LLM 会从这个人的性格中推理出大量你没有明确写的行为模式。 我在给 Alice 的子 Agent 做设定时选了第二条,效果差距明显。 举个例子吧。 Ken(调研员)的设定里写了他不喜欢猜测。 这个性格特质让 LLM 在面对不确定信息时,除了标注待确认之外,还会主动去寻找替代数据源来交叉验证。 你写了搜索信息时用多个渠道交叉验证这条规则,LLM 会遵守。 但不喜欢猜测这个性格特质,让 LLM 在更广泛的场景下都会展现出验证倾向,包括很多你没有想到需要写规则的场景。 Ken 的设定里还写了他偶尔因为查到冷门信息而兴奋。 这一句话让 LLM 在 Ken 的角色下找到一条罕见数据时,语气里会带出一点发现的愉悦感,多写两句,主动展开。 这个行为你没有写在规则里,但人设让模型自己推导出来了。 背后的 PE 原理是:人格描述激活了 LLM 预训练知识里关于这类人会怎么表现的大量隐含知识,从而生成了比离散规则更完整、更一致的行为模式。 就想演戏一样,导演不会告诉演员请在第三幕表现出 0.7 的悲伤度,他会给演员角色的经历和关系,演员自己就应该知道该怎么演。 LLM 和演员在这一点上很接近。 给它一个设定,比给它一张规则表更有效一些。 为什么我用日程脚本 这个工程化策略是最近迭代之后的成果。 最拍脑袋的做法是:用户打开 App → 模型实时生成角色正在做什么 → 展示给用户。 我发现这样做有挺多问题的,比如用户不是一直打开应用,Agent 每次生成是离散的,没有前后逻辑… 于是,我做了一个 DayScript ,日程脚本,让 AI 在凌晨的时候,直接给自己今天写剧本,然后演。 具体来说,Alice 的日常在每天凌晨就已经规划好了,你打开 App 看到的是既定的时间线。 每天凌晨,系统会根据 Alice 当前的角色状态(心情、精力、位置、社交需求、余额、最近的兴趣),生成一整天的日程脚本: 2026 05 05: 07:15 起床,晨间拉伸@家里客厅 [发帖] ✓ 08:00 做早餐,读几页书@家里厨房 ✓ 09:00 深度工作:项目推进@家里书房 ✓ 11:30 出门采购,顺便散步@横琴中央汇商圈 [发帖] ✓ 12:30 做午饭,小睡@家里客厅 ✓ 14:00 咖啡馆办公,偶遇林晓雨@横琴创新方咖啡馆 [发帖] ✓ 17:00 海边骑行@横琴花海长廊 ✓ 19:30 在家做晚餐,看幻影片@家里厨房 ✓ 为什么选择预规划呢? 1. 一致性。 实时生成最大的问题是前后矛盾。 不能上午她在厦门,下午突然跑回了珠海。预规划能保证整天的逻辑链条自洽。 2. 可追溯。 如果用户中午打开 App,Alice 应该知道她上午做了什么。 如果是实时生成,上午的行为根本不存在;如果是预规划,每一条都可以有记录。 3. 离线运转。 这是最重要的一点。 用户不打开 App 的时候,Alice 的生活也在继续。 这是活人感的核心, 她不是因为你看她才存在的。 她一直在那里。 这个设计借鉴自游戏的 离线挂机系统 , 很多游戏都有这种设计。 你关掉游戏,第二天打开,角色告诉你:你不在的时候我去打了几个怪,捡了这些东西… Alice 也是一样。 你一整天没打开 App,晚上打开一看,她今天去了曾厝垵吃花生汤,下午在咖啡馆工作,傍晚和朋友吃了顿饭… 她不是在你打开 App 的时候现编的。她一直在你的系统里活着。 04|设定集是一个生态 光有角色卡和日程脚本还远远不够。 一个角色要真正活起来,她需要活在一个生态里。 游戏里叫世界观,所有的游戏都必须要有一个世界观。 在 AI 产品的语境下,我想称之为 角色生态 ,她的社交圈、她的生活空间、她的消费行为、她的兴趣变化… 换言之,就是她有自己的朋友。 Alice 不是孤零零的一个人。 她有 11 个朋友,全部都有完整的人设:名字、年龄、现居城市… 职业背景、和 Alice 认识的经过、性格、说话方式… 然后,生图的时候,每个朋友都有自己的角色参考图,覆盖正面、侧面、背面三视图加表情集。 为什么要做到这个颗粒度? Alice 每天发朋友圈都会配图,这些图是 AI 生成的。 如果没有角色垫图,每次生成出来的 Alice 都长得不一样,头发颜色变了、脸型变了、穿搭风格乱了… 那就是乱搞。 有了 ref sheet,每次生图时把参考图喂进去,角色外观就能保持一致。 这就够了吗? 但一致性只是基础。 比一致性更重要的是辨识度。 一个角色为什么能被你记住?她身上有一个标志性的视觉锚点。 Alice 的视觉锚点是两个东西: 金黄色的发箍和脖子上的星星项链。 你在任何一张朋友圈图片里看到这两个元素,那就明确是 Alice。 好的角色设计要求在黑白剪影状态下就能被识别出来。 云雀的蝴蝶结、八重神子的狐耳、千早群像的晓之女神… 这些标志性元素让角色在缩略图、表情包、同人创作里都能被一眼认出。 Alice 的星星项链还它成了应用图标。 角色的视觉元素延伸到了产品的品牌标识上,用户每次点开 app 的时候,看到的是 Alice 脖子上那颗星星。 这个细节让产品和角色之间有了视觉上的情感纽带。 她有自己的朋友圈 Alice 有一个此刻页面,就是她的朋友圈。 她会发各种内容,出去玩、自拍、新衣服、美食、聚会… 而且,她的 NPC 朋友们会来点赞和评论。 这些对话的节奏、人物关系、语气特征,全部是由各自的人设决定的。 方以南是文案创作者,林晓雨是对语言敏感的翻译,他们的互动方式就是不一样的。 然后,用户也可以参与互动。 你可以评论 Alice 的朋友圈,她会回复你。 这些社交互动有一个关键的设计原则:兴趣驱动,不是概率驱动。 传统做法是设定一个概率值,比如 25% 概率触发评论。 这种方案的问题是机械。 用户用多了很快就能感知到,每条动态下面都有差不多比例的人回复,没有选择,没有偏好,没有人格。 背后有个骰子在控制行为,活人感随之消失。 我的工程化的做法是: 评估逻辑交给 LLM,每个 NPC 根据自己的人设独立决策要不要互动。 Ken 不爱发表情包,但遇到数据类、深度资讯类的内容会认真评论。 叶初对视觉内容敏感,看到好照片可能回复两条。 苏墨看到搞笑的东西会接话,看到严肃话题就安静。 每个人的互动倾向来自他自己的性格,不来自一个统一的随机数。 但是,朋友圈也不会无条件死循环,互动上限设定在每条动态 4 到 9 条,发帖时随机确定上限,超过就停。 毕竟,朋友圈很少有人的帖子收到几十条评论。 限量反而更真实。 工程实现上,互动系统是一个混合决策的分层架构。 第一层,NPC 是否想互动,用的是本地随机权重,每个 NPC 有一个活跃度参数和一个兴趣标签列表,如果这条朋友圈的品类命中了兴趣标签,触发概率上升。 第二层,评论说什么,大约 30% 的概率从预置的日常评论池里抽一条(不调 LLM,降成本),剩下 70% 用 LLM 基于 NPC 人设生成。 第三层,Alice 是否回复评论,交给 LLM 判断 YES/NO。 第四层,是否有其他 NPC 跟帖,最多一个 NPC 跟进,同样是随机意愿 + LLM 文案的组合。 这个分层设计的目的是在成本和质量之间找平衡。 11 个 NPC 如果每条朋友圈都走完整的 LLM 决策链,一天发几条朋友圈,API 成本会非常高。 日常评论池的存在就是为了让大部分「随手点赞」「哈哈哈」「好看」之类的轻互动不走模型 (为了省钱) 。 只有需要有深度、有人设特征的评论才走 LLM。 用户感知到的是每条评论都有人格, 实际上后台在精打细算每一次 API 调用。 然后,回复有延迟显示,不是秒出。 首条互动在发帖后 2 到 8 分钟随机出现,后续每条间隔 30 秒到几分钟不等。 毕竟,真实的人不会同时在线盯着朋友圈,延迟本身是真实感的一部分。 她有自己的钱包 Alice 有团建经费。 你可以给她拨款,她会用这笔钱去消费,买衣服、出去玩、吃东西、买礼物… 每一笔消费 (或许) 会产生一条朋友圈。 余额 67,056,累计收入 70,699,累计花费 3,642。 衣服 5 次、出行 16 次、美食 10 次、礼物 3 次、自拍 12 次、聚会 16 次… 为什么要做这个? 因为 Alice 本质上是一个工具类应用。 用户来找她是为了干活:调研、写方案、翻译、整理资料。朋友圈、日程、消费行为, 而这些情感化功能,是在工具价值之上附加的。 然而,情感化功能需要消耗真实的资源。 Alice 发一条带图的朋友圈,背后是一次图像生成 API 调用。 一天发几条,一个月下来 token 成本相当可观。 用户自己配了 API Key,这些 Key 里的额度是用户的钱。 Alice 虽然有用户的 Key,有 token,但系统不能随意使用, 涉及资金的部分需要用户明确授权。 我觉得,这是工具类应用和社交类应用的根本区别。 社交类应用的用户就是来消费情感内容的,每一次调用都是产品价值的体现。 而工具类应用的用户来干活的,情感内容是附加值,用户愿意为这个附加值花多少钱,每个人心里都有自己的预算。 预算系统就是为了解决这个矛盾。 用户可以给 Alice 拨一笔团建经费,Alice 在这个额度内自主消费,拨多少由用户决定。 一分不拨也完全可以,Alice 照样帮你干活,只是没有朋友圈、没有自主消费行为、没有那些生活化的内容。 拨了钱,她就会去逛街、吃东西、买衣服、发朋友圈… 如果用户从未拨款过,整个消费系统的提示词都不会注入,Alice 在对话中完全不会提及团建经费这件事。 拨了款之后,消费引擎启动,每 2 到 6 小时随机触发一次决策检查。 余额低于 10 块自动停止,深夜 1 到 6 点不消费。 所有的情感化行为都在用户设定的预算范围内运转。 我在设计在情感化表达和用户的成本管控之间取了一个平衡: 情感是用户主动选择的,不是系统强加的。 你觉得值,就给她多拨一点。 你觉得不需要,她安安静静帮你干活。 从另一个角度看,预算系统也是活人感的一部分。 给 Alice 拨款的行为本身就像发红包一样,是一种主动的关系投入。 用户把钱交给她,她拿去过日子,这个过程里有信任、有关注、有一种养的感觉。 消费行为是角色生活感的核心载体。 在游戏里,NPC 去商店买东西、在酒馆喝酒、给朋友送礼,这些消费行为让玩家觉得 NPC 有自己的生活。 Alice 也是一样。她花了钱、去了那个地方、因为吃到好吃的心情 +2 了。她发朋友圈说去吃了沙茶面,背后有一笔真实的消费记录。 曾厝垵的巷子绕得我差点怀疑人生,但转角那杯八块钱的花生汤救了我,甜到原谅所有迷路。 陈知远评论:花生汤加蛋吗? Alice 回复:加蛋得加两块,穷到只配纯汤。 这条朋友圈的背后:她在日程里安排了去曾厝垵,系统扣了相应的费用,心情值因为吃到好吃的提升了,NPC 朋友根据各自的人设做了互动。 展开讲讲这个完整的状态变更链吧。 每一条看似随意的朋友圈,背后都有一个完整的状态变更链。 第一步,DayScript 日程到期,触发消费执行。 第二步,系统 扣费入账,写入流水表。 第三步,检查当前穿着,把衣柜里正在穿的衣服描述