第 70 环 · 开口不叫错人(名字跟会话绑定,槽复用也认人)
第 69 环让接回之后先叫名字,可它读名字格只按槽号:0x200 + 槽×6。名字格是按槽住的,槽却会被别的会话复用——旧会话删掉、新会话住进同一个槽,格子里可能还留着上一任的名字;更隐蔽的一条链是:槽被轮转换掉时名字格没清,下一次删除把旧名字拍进垃圾记录,撤回又把旧名字写回来,一接回就叫错人。
这一环给名字加一张归属表:名字格只说明「这个槽叫什么」,归属表才说明「这个名字是谁的」。开口之前先验归属,对不上就宁可少叫一声,也不叫错人。
名字与会话号绑定。会话记忆区新增归属表 OWNER_BASE = 0x280 + 槽号,一格一字 = 这一槽名字所属的会话号:
rename_sess 写完 6 字名字格后,多写一拍归属 = 这一场的 sid;回收没用到的槽时,名字格和归属一起清;forget_sess 清名字之前先读归属,把名字 6 字 + 归属一起写进垃圾记录(13 字 → 14 字);删完把归属清掉,槽空了就不属于任何人;undo_del 多读一字归属,名字写回后把归属也原样写回——撤回不伪造归属,旧名字仍然是旧主人的;resume_speak 读完 6 字名字格,再发一拍同步读归属(发地址 → 空一拍 → 收数据);归属 == 这次接回的 sid 才拼「名字 + ,咱们接着聊。」;对不上就把名字寄存器清零,退回「咱们接着聊。」18 字节,named=0 / bind=0 如实报;0x1E0 → 再发同一台整段生成引擎;每次接回只说一次。接口。新增只读探针 RS_OWNER(0xAD8)、RS_BIND(0xADC),屏摘要 SCREEN46(0xAE0);前 69 圈地址映射一字不改,ISA 一位没动(仍 npu.undo)。名字归属是第 70 圈新增的存储语义,名字格布局一字未动(仍 6 字/槽)。
单元仿真 tb_resume_speak70(真同步 SRAM 行为模型):
mem_ok=0)→ 不读名字、不写窗口、不开口,但照样落 done;0x92,接回 0x92 → named=1 / bytes=33 / bind=1,0x1E0 十二字与「跑步计划,咱们接着聊。」逐位相同;0x91,接回 0x93 → named=0 / bytes=18 / bind=0,屏幕是「咱们接着聊。」不是「工作,咱们接着聊。」(不叫错人的硬证据);0x94,接回 0x94 → named=1 / bytes=27 / bind=1(归属对上照旧叫名字,不是一刀切);done 保持高不重复,clear 把归属探针一起归零。ISA 协同仿真 tb_isa_resume70(真整颗 SoC):0x91 在槽 0;0x92 在槽 2(名字「跑步计划」,归属 0x92);0x93 在槽 3(名字格残留「工作」,归属 0x91——上一任留下的)。生成权重沿用第 27~44 圈那一份:
npu.forget 3 → npu.undo → npu.wait:0x93 接回,归属对不上 → 不叫名字;SCREEN44=0x324(槽 3 / 18 字节 / named=0);npu.forget 2 → npu.undo → npu.wait:0x92 接回,归属对上 → 叫「跑步计划」;SCREEN45=0x243(槽 2 / 33 字节 / named=1);SCREEN46=0x01920091:{A_bind, A_owner, B_bind, B_owner} = {1, 0x92, 0, 0x91},归属证据全由硬件自报;spoke 快照 0x1E0 = 「咱们接着聊。」;最终 0x1E0 = 「跑步计划,咱们接着聊。」;spoke=1、RS_CORE=0(核一个生成入口都没写);程序走到 SCREEN=0x70,两次 npu.wait 都没冻死。回归:tb_resume_speak69 / tb_isa_resume69 / tb_isa_resume68 / tb_isa_undo67 / tb_isa_undo66 / tb_undo_del66 / tb_rename_sess / tb_forget_sess 复跑 RESULT=PASS;tb_min_soc64 主通路 SCREEN=0xF905FD04 与第 25~69 环逐位一致(计算面一个字没动)。第 69 圈的单元/协同测试补上了归属格(表示那几场确实改过名),断言全部照旧。
只有一个对话窗口的手机,记错人比记不住更伤人。上一环把记忆变成称呼,这一环给称呼加上「这是谁的名字」——槽可以复用、数据可以覆盖,但名字不会跟着槽跑到别人身上。
这也是软硬协同该有的分寸:软件不查表、不比对、不兜底;归属表在内存里,验归属在硬件里,开口前那一拍就把人认准了。
开机问候也认人。续聊开口已经验归属,可开机的「你有三场没聊完」还是按槽读名字——清单里每一场都该验一次归属。下一环让开机问候也认人:名字不是这个会话的,就不念。