第 58 环 · 问候念清单(第一句把所有名字叫出来)
第 57 环让开机第一句叫得出名字,可它只叫得出被恢复的那一场。用户看到的清单明明有三场,第一句话却只提一场;另外两场的名字还躺在内存里,没有被念到。
这一环让问候合成器自己走一遍活会话清单:一条 npu.boot 里,硬件逐场取槽号、读名字格、按清单顺序把名字排进同一句话。核不查表、不取号、不拼字。
boot_greet 再扩一层:念清单。新增 all_names 模式,一条 start 走完:
0x1C0 字 0 = 人数,之后每条两个字;硬件只取第一条的槽号([31:29]);0x200 + 槽号×6,每场读 6 个字(同步 SRAM「发地址 → 空一拍 → 收数据」);0x1E0~0x1EF(0x1F0 仍是接话问候,不打架);all_names=0 时行为与第 57 环逐位一致。读 0x1C0 人数 = 3
条目0 {槽0,0xA1} → 读 0x200 名字格 → 记一笔
条目1 {槽1,0xA2} → 读 0x206 名字格 → 工作那场
条目2 {槽2,0xA4} → 读 0x20C 名字格 → 家里的事
拼:记一笔、工作那场、家里的事,都在。
写 0x1E0~0x1EF(64 字节 / 16 字)
软硬接口。问候页仍在 0xE00;新增 BG_ALL(0xE60,1 = 念清单)与只读探针 BG_NSPOKE(念了几场)、BG_TOTAL(清单几场)、BG_LEFT(还剩几场);SCREEN34 在 0xE70。会话记忆读口多一个主(问候引擎),写主优先级仍是 rn > fs > gp > bg > ss > arc。
协同仿真 tb_min_soc58:接着第 57 圈的三场会话(0xA1 / 0xA2「工作那场」/ 0xA4)往下跑:
npu.rename 1 → 0xA1「记一笔」;一条 npu.rename 3 → 0xA4「家里的事」;RN_NVALID=3;npu.boot(BG_ALL=1):BG_NAMED=1 / BG_BYTES=64 / BG_NSPOKE=3 / BG_TOTAL=3 / BG_LEFT=0 / BG_SID=0xA4,0x1E0~0x1EF 十六字与「记一笔、工作那场、家里的事,都在。」逐位相同;npu.forget 2:删掉「工作那场」再 boot → 问候只剩「记一笔、家里的事,都在。」(BG_NSPOKE=2 / BG_TOTAL=2 / BG_LEFT=0)——念的是活清单,不是旧快照,删掉的会话不会被念到;npu.sess.list),改名 #2「查资料」、#4「跑步计划」,清单 4 场 → 一条 boot:只念前三场,尾巴报「,还有一场。」(BG_NSPOKE=3 / BG_TOTAL=4 / BG_LEFT=1),十六字与参考行逐位相同;主通路 SCREEN=0xF905FD04、SCREEN2~33 与第 25~57 环逐位一致——这一环只加了「读活清单、念名字」一条通路,计算面一个字没动。单元仿真 tb_boot_greet58(三场全念 / 四场只念三场 / 跳过空名 / 无名退回 / all_names=0 老路 / clear)与第 53/57 圈旧单元复跑通过(递增不推翻)。
Salt OS 开机没有桌面、没有图标,只有 AI 一个对话窗口。第一句话就是产品在那一刻的全部存在感:它从「你有三场没聊完」变成一个数字,到叫出一个名字,再到把清单上的名字一次念全。
用户听到的不再是「系统里有几条记录」,而是「它记得我这几场都在等什么」。名字与顺序都来自当前清单——删掉的会消失,新开的会被念到,这才是活的记忆,而不是一份过期的快照。
按名字接话。第一句已经能把所有名字念出来,可用户说「接着查资料那场」时,选场仍要靠序号。下一圈让 npu.pick 认名字:硬件在名字格里找到「查资料」,直接切过去——用户说的名字,就是入口。