🎯 圆心 · 目标(每环都从这里出发)
造一台 Salt OS 手机:基于 DeepSeek 的 AI 操作系统,iPhone 4S 外形(含底部圆形 Home 键),开机只有一个 AI(无桌面、无图标),软硬协同设计(OS + 芯片 + 主板一起做),为别人搭台、让别人在平台上赚钱。

🧭 完整框架(同心圆)

①文字闭环 · ②技术深入 · ③挂SRAM · ④权重INT4 · ⑤激活INT4 · ⑥NPU.STORE · ⑦KV Cache · ⑧注意力QK^T · ⑨Softmax · ⑩加权V · ⑪前馈FFN · ⑫残差·LayerNorm · ⑬多层堆叠 · ⑭QKV投影 · ⑮K/V分离 · ⑯自回归解码 · ⑰连续生成 · ⑱采样 · ⑲KV环形缓冲 · ⑳滑窗注意力 · ㉑多头注意力 · ㉒输出投影 W_o · ㉓多头块入残差流 · ㉔多头块进解码循环 · ㉕整层一块 · ㉖整网一块 · ㉗ISA契约 · ㉘权重内存化 · ㉙权重预取双缓冲 · ㉚权重分块 · ㉛矩阵行块 · ㉜行块自增 · ㉝起始块号可编程 · ㉞段表连扫 · ㉟段表流式取 · ㊱行块矩阵扫 ISA 化 · ㊲描述符链 · ㊳链槽直喂 · ㊴主路走链 · ㊵链预投下层 · ㊶跨趟预投 · ㊷权重池三 bank · ㊸权重池 ISA 化 · ㊹一步生成 ISA 化 · ㊺整段生成 ISA 化 · ㊻对话回路 · ㊼对话 ISA 化 · ㊽会话记忆归档 · ㊾多会话槽位 · ㊿会话槽位 ISA 化 · 51 开机续聊 · 52 会话清单 · 53 开机用上清单 · 54 问候接话 · 55 删掉一场 · 56 会话改名 · 57 名字进问候 · 58 问候念清单 → 59…

本环:从「查资料,接着聊吧。」到「记一笔、工作那场、家里的事,都在。」

① 目标(这一环要解决什么)

第 57 环让开机第一句叫得出名字,可它只叫得出被恢复的那一场。用户看到的清单明明有三场,第一句话却只提一场;另外两场的名字还躺在内存里,没有被念到。

这一环让问候合成器自己走一遍活会话清单:一条 npu.boot 里,硬件逐场取槽号、读名字格、按清单顺序把名字排进同一句话。核不查表、不取号、不拼字。

② 实现(做了什么)

boot_greet 再扩一层:念清单。新增 all_names 模式,一条 start 走完:

  • 读活清单:0x1C0 字 0 = 人数,之后每条两个字;硬件只取第一条的槽号([31:29]);
  • 读名字格:0x200 + 槽号×6,每场读 6 个字(同步 SRAM「发地址 → 空一拍 → 收数据」);
  • 按清单顺序拼句:每场名字最多取 4 个汉字(12 字节),名字之间补「、」;最多念 三场;
  • 尾巴诚实:全部念到 → 「,都在。」;还有没念到的 → 「,还有N场。」(N=1..5,中文数字表在芯片里);
  • 定长整行:64 字节 / 16 个字,落 0x1E0~0x1EF(0x1F0 仍是接话问候,不打架);
  • 退回老路:一场名字都没念到 → 退回第 57 环单名问候,再退回第 53 环按场数那句;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)——念的是活清单,不是旧快照,删掉的会话不会被念到;
  • 再开两场 0xA5 / 0xA6(enter + leave + 一条 npu.sess.list),改名 #2「查资料」、#4「跑步计划」,清单 4 场 → 一条 boot:只念前三场,尾巴报「,还有一场。」(BG_NSPOKE=3 / BG_TOTAL=4 / BG_LEFT=1),十六字与参考行逐位相同;
  • 全程核没有查表、没有搬名字:名字从名字格进问候,只走硬件通路。
SCREEN34 = 0x03414040
念 3 场 | 共 4 场 | 还剩 1 场 | 64 字节

主通路 SCREEN=0xF905FD04、SCREEN2~33 与第 25~57 环逐位一致——这一环只加了「读活清单、念名字」一条通路,计算面一个字没动。单元仿真 tb_boot_greet58(三场全念 / 四场只念三场 / 跳过空名 / 无名退回 / all_names=0 老路 / clear)与第 53/57 圈旧单元复跑通过(递增不推翻)。

④ 回到目标(这一环让手机多了什么)

Salt OS 开机没有桌面、没有图标,只有 AI 一个对话窗口。第一句话就是产品在那一刻的全部存在感:它从「你有三场没聊完」变成一个数字,到叫出一个名字,再到把清单上的名字一次念全。

用户听到的不再是「系统里有几条记录」,而是「它记得我这几场都在等什么」。名字与顺序都来自当前清单——删掉的会消失,新开的会被念到,这才是活的记忆,而不是一份过期的快照。