不写字的读者:一个万人概率反应场及其随机基线
摘要 让模型扮演读者的现有做法是生成式的:人格写帖、互相评论,代价是不可复现、昂贵、难审计。本文报告一个反其道的系统:模型不写一个字,只对类型化问题返回概率;一万个由网格坐标确定性生成的人格(年龄按行、兴趣按块,邻居即相似人群)构成一个社会反应场,反应按概率分布种子化抽样,经四道波次传播。对该系统的测量得到三个结果。(1)判别力:三臂对照(真实判定 / 纯随机 / 洗掉人格形状仍问模型)显示,随机臂四波传遍全城(净情绪 +0.155~+0.190,构造使然——均匀抽样期望 +0.167 本就在续传闸门 0.1 之上),真实判定则把三段文本的到达区分到 600 / 600 / 2100 人;反应场的价值不在「让好文本传」,在「把没人要的文本判死在第一波」,故闸门读数必须对照随机基线以 z 值报告。(2)空间结构:以 rook 邻接的 Moran’s I 配置换检验(α = 0.05,次数随样本收缩 199/99/49,合成图校验 +0.798 / −0.500)度量「反应是成片还是零散」,并同样施于两版文本的差分场。(3)排序效度:开局 exposure 排序的对账显示第一波不是随机样本——首末十档停下率比 28.92,第一波 600 人中 505 人来自最高档、拿走全城 exposure 的 37.5%(随机期望 6.0%)。系统以种子化抽样、波次金样与「在旧代码上跑今日金样」的行为保持验证保证可复现;mock 通道经三次实证被禁止作为证据。单波 600 人判定成本约 $0.016,全城一万人约 $0.10–0.15,免费通道为 $0。
关键词 概率判定;社会模拟;Moran’s I;置换检验;随机基线;可复现性
1 问题的提出
让大模型扮演「读者」,主流做法是生成式的:给每个人格一份档案,让它写评论、发帖子、互相转发。Generative Agents 是这条路线的代表 [1]。生成范式的问题在测量端:输出是自由文本,不可复现、难审计,而且贵。另一条路线是「硅基抽样」:Argyle 等人让模型以不同人格身份回答问卷,用概率分布预测人群态度 [2];Santurkar 等人则发现模型的意见分布系统性偏向特定人群 [3]——这提示,若要用模型模拟人群,人格场必须是显式构造的,而不是指望模型「自己知道」边缘群体怎么想。
本系统取概率判定路线,并且把它推到底:模型不写一个字。判定模型(TypeSafe Jev [6])只对类型化问题返回概率——多在意、选哪个反应、最高愿付多少;引擎基于开源项目 gaborishka/jevtown(MIT)[5] 的架构改造为中文版(其思路谱系源自 a16z 的 ai-town):一个 Cloudflare Worker + D1 + 无框架前端,作者写一段文字,一万个 AI 人格在几秒内给出反应。
这样的反应场读数是否可信,本文拆成三个可检验问题:
- Q1(判别力):真实判定与随机过程可区分吗?区分发生在哪个环节?
- Q2(空间结构):「反应是成片的还是零散的」可测量吗?
- Q3(排序效度):第一波发给「最可能在意的人」,这个排序的承诺兑现吗?
外加一条工程命题:读数可复现、成本可记账。
2 系统与方法
2.1 反应场的三要素
人格场。人格由 (池, 网格坐标) 经确定函数生成,不经 LLM、不入库:100×100 = 10000 格,一格一人;年龄沿 y 轴分布,主兴趣按 8 列分块——所以网格邻居就是相似的人,每格约 200 个同龄同好;城市按人口加权抽取。模型读到的是一行英文档案(”Yiran, 34, accountant, Chengdu; into gardening…”),界面显示中文词表——语言约定全文一致:题目指令用英文,被评文本保持作者语言。人格打包成 286KB 的整数字段文件,全城装载约 20 ms。
判定器。一次检查的流水线:开局一个请求打包三类题——对 60 组人群(市场类帖 83 组:额外加 19 项「想买」与 4 档预算)各一道五档在意度评分、7 道审核是非题、最多 3 道文本理解题;随后传播阶段每批 100 人、每人一道选择题(反应枚举随文本类型而异,如闲置帖:划走 / 停下 / 收藏 / 询价 / 举报);收尾只问「停下的人」。三个关键语义:反应按模型返回的概率分布种子化抽样(种子含人格 id 与版本号,刷新重放同一批人);单点最高概率低于 0.35 记为「模型在猜」,不强行归类;开局审核设双闸(任一审题概率 ≥ 0.5 不进公共流,≥ 0.85 拒发,阈值由 20 条文本标定:滥用类实测 0.89–0.99,严厉批评 / 骗局 < 0.3)。
传播层。四道波,新到达人数 600 → 1500 → 3000 → 其余;每波内含一小段随机尾巴(100/150/300 人纯随机入波)——每次检查自带一个从未上报的随机对照组(见 5.2)。净情绪 = 波内各反应的 tone 值之和 ÷ 人数;净情绪 ≥ 0.1 才续传下一波。
2.2 测量与验证口径
空间统计。反应场以 rook 邻接(上下左右,只连被判定到的格)的 Moran’s I 度量,显著性用置换检验:次数随判定人数收缩(≤2000 人 199 次、≤5000 人 99 次、否则 49 次),p = (1+极端数)/(1+置换数),判定不足 30 人不出结论;置换种子取版本号哈希,回放可复现。局部热冷用原始态度而非离均差——中性多数派不应构成假冷区。仪器本身先过合成图校验:同值块 I = +0.798,正负棋盘 I = −0.500,全体同值无方差。两版文本的差分场(变好 / 变差)复用同一套统计。
差分口径。两版之差只统计两版都被判定到的人——只被一版排到的人不是「变中立」,是这次没轮到;「差 0」与「不可比」在编码上分开。
复现纪律。波次名单有逐行金样;219 个测试全部走 mock(测试禁止调用真实 API 是明文规则);重构的行为保持不用肉眼验证,用旧代码跑今日金样——CSR 邻接重构时以 git archive 取旧版跑当前金样,16 行逐行相等、全城 exposure 逐位比对零差异。mock 通道的认识论地位由 ADR 明文规定:「mock 数字不可用于成本 / 传播预估」(实证见 4.3)。
2.3 成本与部署
记账按阶段(开局 / 各波 / 追问 / 收尾)记录 tokens、费用与模型耗时。实测:单波 600 人约 $0.0158 / 5.0 s;一条文本跑满 4 波(到达 2100 人)约 $0.032;三臂完整对照一条文本 $0.0894 / 212 万 tokens / 102 次请求;全城一万人估计 $0.10–0.15。默认通道为 Zen 免费档($0);访客可自带 key(BYOK,只存浏览器 localStorage,站方零 secret——上线一周后线上站方 key 实删核验)。限额只剩每 IP 每日 20 次检查,保护对象是 D1 的每日写入配额。
3 结果
3.1 判别力:与随机可区分,但方向反直觉
三臂对照(2026-10-02):A 臂真实判定;B 臂纯随机——不看人、不看帖,在反应枚举表上均匀抽,零成本;C 臂洗掉形状——每人发全波平均分布,仍问模型。三臂同种子、同波次,模型的答案问一次三臂共用(漏了缓存就是三遍,实测第一版 128 次请求、修后 101 次)。抽样纪律:随机臂显式 Fisher–Yates 洗牌并断言三臂互斥——否则变成有放回,探针自己撞出过「两臂抽中同一个人 8554 次」。
B 臂四波全过、传遍一万人,各波净情绪 +0.155 ~ +0.190。这是构造决定的,不是模型强:均匀抽样的期望(+0.167,SD 0.687,600 人一波标准误 0.028)本就在续传闸门(0.1)之上。
A 臂给出真正的区分。三段文本,随机臂全部传遍一万人,真实判定给出 600 / 600 / 2100 的到达漏斗:咖啡馆转外卖帖第 1 波净情绪 +0.005(z = −5.76),第 1 波即停;二手电动车帖 600 人 1 波停;iPhone 转让帖 +0.102(z = −2.32)过闸,第 2 波 +0.02 后停在 2100 人。
结论因此转向:反应场的价值不在「让好文本传」——随机传得更彻底;在「把没人要的文本判死在第一波」。闸门的功能是判别,不是背书。
3.2 闸门低于随机基线:以自报告代替重标定
0.1 的续传阈值低于随机基线 +0.167,仓库报告的原话是:这条线画在「零信息」以下——净情绪落在 0.1 附近的一波,一个骰子也能掷出来。
处理方式不是重标定(那需要更多真实样本文本),而是把零假设交给读者:报告新增一节「和纯随机比,谁更想要它」,逐波给出 z 值与一句人话结论;z ≤ −2 时必须写明「这是真答案,不是没读出来」——防止把「模型判死」误读成「没判」。测量的自我怀疑做进了产品界面。
3.3 空间结构是可测量的
「这次反应是成片的还是零散的」由 2.2 的 Moran’s I 回答:三档结论(成片 / 零散 / 不可判),成片的格子可在地图上描环;整体零散时仍可能存在局部小簇。改一版再发后,同一套统计原样套在差分场上——「翻盘是成片的还是零散的」。邻接表折叠成 CSR 紧凑排布后,全城一万格的判定从约 9–10 ms 降到 7.7–8.0 ms,读数与旧实现逐位相同。具体文本的 I 读数随内容而变,本文不代读,读者可在站上对任意文本复现。
3.4 排序效度:第一波不是随机样本
第一波发给谁,由开局 exposure 排序决定:83 组在意度分的折立方加权和(兴趣 / 领域权重 1,年龄 0.6,「想买」1.5,预算 0.6)。对账用两条真实文本:
- 首末十档的停下率之比 28.92(另一条文本 14.49,乐见率之比 25.20);
- 第一波 600 人中 505 人落在最高档(前 3 档合计 88%),这 600 人拿走全城 exposure 的 37.5%——随机期望只有 6.0%;
- 开局复读噪声 MAD 0.0042 / 0.0092,而首末档分差 0.850 / 0.643——信号比噪声大两个数量级。
这条结果有两面。正面:第一波的「最可能在意的人」承诺兑现了。反面:第一波的情绪读数系统性高于全城——它偏采的正是最在意的人。这正是每波埋随机尾巴的理由(5.2)。
3.5 显著分组是稀缺事件
反应按七维切片(兴趣 / 领域 / 年龄 / 性情 / 预算 / 购物 / 城市,共 115 项)。在停下人数 ≥ 8 的 97 个切片里,提升倍数过显著线(lift ≥ 1.3,切片另有最小样本门 25 人)的只有 8 个——最高 shopping:phone 16.81×,最低 city:昆明 1.56×。换言之,在这批文本上,反应主要由文本决定、不由人群决定;「哪个群体特别买账」是稀缺事件,值得单独报,而不是默认存在。
3.6 工程读数
三项与测量可靠性直接相关的工程事实。其一,收波统计从「每波全量读一万行」改为增量快照,每波只合并本波新行。其二,默认免费通道(Zen)对 Cloudflare Worker 的共享出口持续 429——按出口 IP 判、与 key 无关,浏览器直发又被 CORS 挡死;落点是客户端指数退避(2 s → 30 s 共六轮带抖动,409 认领冲突同样重试)。其三,2026-10-31 的全功能验收轮抓到一个潜伏六天的缺陷:缓存键碰撞使已完成报告的「人格声音」整节静默消失——「两次拉取逐字相同」类缓存断言对「第一次就算错」免疫,教训是这类断言必须配一份独立来源的对照。
4 讨论
4.1 与生成式社会模拟的分工
概率判定范式牺牲了人格声音的丰富性(折中是收尾提问:划走的人为什么走、停下的人会被什么留下,按概率和聚合),换来三样生成范式难给的东西:可复现(全链路种子化,刷新即重放)、可审计(概率即原始数据,每次判定可回放)、低成本($0.016 一波)。生成范式与判定范式是同一光谱的两端,选择取决于你要叙事还是读数。
4.2 零假设应当内嵌在仪表里
传统 A/B 实验把 p 值报给内行;本系统把随机基线画进产品报告,让写作者自己看到 z 值。3.1 的教训是:一个不对照随机的传播读数是可以被骰子冒充的。下一步现成的改进是每波那段从未上报的随机尾巴——把内置对照组读出来,每次检查就自带一场免费的效度检验,而不必专门跑三臂。
4.3 mock 的认识论地位
mock 通道的存在是为了工程对拍,ADR 明文禁止它作为证据,背后是三次实证:mock 让 iPhone 帖传遍全城而真实判定停在 2100 人;一次两版对照实验里 mock 的 A−B 净情绪为 0.000(真实为 +0.330),且 mock 的停下率分组方向相反。假数据能验证管道,不能验证世界。
4.4 与棋类系统的呼应
同一个判定模型,在作者的棋类系统里充当「判断层」(见姊妹篇《廉价判断与确定性知识》)。两处合看有一个初步分界:棋类系统里,结构(接管链)承担了 65%–76% 的决策,随机判断与真实判断的冒烟差异不可检出;本系统里,结构只决定「谁能读到、按什么顺序」,「谁在意」必须由概率本身承重——于是随机与真实的差异恰好是全部产品价值。模型概率的边际价值,取决于结构给它留下了多大的发言空间。
5 威胁效度
5.1 构念效度:「净情绪」是被构造的量
反应枚举的 tone 赋值(乐见 +1、反感 −1 等)由人工定义;五档在意度折算到 0–1;「按概率抽样」与「期望值」是两种读数——前者含单次运气(种子固定后可复现),后者免请求但抹平个体。两者不可互换,报告需注明口径。人格档案为英文字段而界面为中文,判定过程存在语言错位,其影响未单独检验。
5.2 内部效度:偏置被测量后固定,而非消除
答案列表不洗牌——实测模型偏向排前的答案,处理方式是固定顺序并记录在案,让偏置在所有文本间恒定。三臂抽样的洗牌与互斥断言来自一次真实的错误(8554 次同人碰撞)。每波随机尾巴至今未上报,是现成而闲置的对照。
5.3 外部效度:单模型、单语、四预设
全部判定来自 jev-1.13 模型族的单一中文人格池与四类预设文本。上游项目曾提供「自定义受众」路径,实测其秩相关仅 0.264 后被弃用——「问模型它会怎么分群」不可靠,改为作者挑群体、与真实停下分布对账。结论向其他模型、其他语言、其他文本类型的推广未检验。
5.4 统计结论效度
置换检验次数(199/99/49)在万人样本上功效有限,故判定不足 30 人直接不出结论;分组显著线在文档与代码间出现过漂移(文档 1.6×,代码 lift ≥ 1.3 且 ≥ 8 人),以代码为准;闸门 z 值的判读纪律是「2 以上才算不是碰运气」。凡涉及个位数百分点的比较,须对照随机基线。
6 结论
本文的贡献不是「一万个 AI 人格」,而是把读者反应做成了一件测量仪器:可复现(全链路种子化)、自带零假设(随机基线进报告)、可做空间统计(Moran’s I 与置换检验)、成本可记账($0.016 一波)。三个测量结果:判别力集中在「判死」而非「捧红」;传播闸门必须对着随机基线读;第一波的排序承诺兑现到 28.92 倍——但代价是它系统性地偏采最在意的人。
154 次提交里,直接与模型打交道的不足五分之一,其余是并发、缓存、限额、渲染与口径。这与姊妹篇的观察一致:智能的增量不在模型的权重里,在结构里;而结构的每一分都花得可见。
数据与复现
代码与实验记录在 https://github.com/tripodxu/jevtown,线上系统 https://jevtown.logicc.top,引擎基于 gaborishka/jevtown(MIT)[5] 改造。关键原始文档:docs/research/wave-baseline-report.md(三臂实验与随机基线)、docs/research/real-api-report.md(真实通道耗时与成本)、docs/research/exposure-calibration-report.md(开局排序对账)、docs/MEMORY.md(项目记忆,最新在上)。波次金样在 test/golden-waves.txt,空间统计在 public/shared/spatial.js,地形探针在 scripts/probe-terrain.js。判定模型的棋类用法见姊妹篇《廉价判断与确定性知识》。
参考文献
[1] Park J S, Popowski L, Cai C J, et al. Generative agents: Interactive simulacra of human behavior. Proceedings of the 36th Annual ACM Symposium on User Interface Software and Technology (UIST), 2023.
[2] Argyle L P, Busby E C, Fulda N, et al. Out of one, many: Using language models to simulate human samples. Political Analysis, 2023, 31(3): 337-351.
[3] Santurkar S, Durmus E, Ladhak F, et al. Whose opinions do language models reflect? Proceedings of the 40th International Conference on Machine Learning (ICML), 2023.
[4] Moran P A P. Notes on continuous stochastic phenomena. Biometrika, 1950, 37(1/2): 17-23.
[5] Habor I. gaborishka/jevtown [CP/OL]. GitHub, MIT License. https://github.com/gaborishka/jevtown.
[6] TypeSafe. Jev · System One 决策模型 [CP/OL]. https://typesafe.ai.