🎯 圆心 · 目标(每环都从这里出发)
造一台 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 按名字接话 · 60 叫错名字也回一句 · 61 反问给选项 → 62…

本环:从「是这四场吗?」到「记一笔、查资料、家里的事等」

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

第 60 环让叫错名字也有人应声,可它只说「没找到,是这四场吗?」——用户知道有四场,却不知道那四场叫什么,还是点不出来。反问句问了,却没给出能点的东西。

这一环让反问句把名字念出来:扫表的时候顺手把每场的名字收进片上选项区,一个都不像就回「没找到:<名1>、<名2>、<名3>等。」——念出来的,就是下一句能点的。

② 实现(做了什么)

name_pick 在扫表时收名。原来的扫描与 24 字节全等比较一个字没改;新增的是「比不中」之后的那一小步:

  • 每扫到一场的名字格(0x200+槽×6,6 字 = 24 字节),取第一个 0 之前的有效字节(最多 12 字节 = 4 个汉字),收进片上选项区;
  • 片上选项区最多 42 字节 / 3 个名字,名字之间自动补「、」;
  • 扫完仍无一全等 → 回 「没找到:<名1>、<名2>、<名3>等。」;名字没收完(还有第 4 场)就加一个「等」字——用户知道还有,可以再问;
  • 回执缓冲 9 字 → 15 字(0x230~0x23E,36 → 60 字节),仍然不碰 0x240 的命名清单;
  • 全都没名字(nopt=0)→ 退回第 60 环原句「没找到,是这N场吗?」——没名字可念时也不能沉默;
  • 命中路径一字未改:回执「好,<名字>,接着聊。」与换场照旧(w0~w8 逐位不变,w9~w14 只是空格补齐);空名字 / 空清单仍只报 err、不回话、不写 0x230。
清单 4 场(槽序):0xA1 记一笔 / 0xA5 查资料 / 0xA4 家里的事 / 0xA6 跑步计划
说「买菜」→ 扫 4 场,收下前 3 个名字(第 4 个收不下)
排 0x230:没找到:记一笔、查资料、家里的事等。   (54 字节 / 15 字)
NP_NOPT=3  NP_MORE=1  NP_BYTES=54  NP_ANSWERED=1  NP_SID=0
sx_start 不发 → SX_CUR 仍 0xA6

软硬接口。点名牌新增只读探针:NP_NOPT(0xEF8,念了几个名字)、NP_W9~W14(0xED8~0xEEC,回执后半段)、新观察点 SCREEN37(0xEFC)。ISA 一位没动——仍是那条 npu.name,只是它现在把「能点的」也说清楚。

③ 验证(怎么证明它真的跑通)

协同仿真 tb_min_soc61:接着第 60 环的四场会话往下跑:

  • 说「买菜」 → NP_NOPT=3 / NP_MORE=1 / NP_BYTES=54 / NP_ANSWERED=1 / NP_CNT=4 / NP_NCMP=4 / NP_SID=0;0x230 正文与「没找到:记一笔、查资料、家里的事等。」逐字相同;SX_CUR 仍 0xA6——不换场;
  • 说「查资料」(正是刚才念出的第二个名字)→ 命中 0xA5、SX_CUR 切到 0xA5——念出来的名字真能点;
  • 删掉第 3 场(家里的事) → 剩三场再说「买菜」:三个名字全念完、没有「等」,51 字节 / NP_MORE=0;
  • 说「跑步计划」(刚才念出的第三个)→ 命中 0xA6、SX_CUR 切到 0xA6;
  • 空名字 → answered=0 / ncmp=0,0x230 仍是上一条命中回执(没说名字 ≠ 叫错名字);
  • 删光三场 → 空清单只报 err、不回话,0x230 保持上一句,不闪屏;
  • NP_CORE=0:核一个点名页配置寄存器都没写。
SCREEN37 = 0x00030136
念了 3 个名字 · 还有没收下的(more)· 54 字节

主通路 SCREEN=0xF905FD04、SCREEN2~35 与第 25~60 环逐位一致——这一环只在「没找到」这条路上加了正文,计算面一字未动。单元仿真 tb_name_pick61(四场念三名带「等」/ 三场全念完 / 一场只念一个 / 无名退回原句 / 空名字不回话 / 可复现)通过;tb_min_soc58 复跑通过。

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

打电话给一个人,报错了名字,对方会说「你找谁?这儿有老王、小李。」——不只是反问,还把能找的人递到你面前。手机只有一个 AI 对话窗口,它就该这样接话。

这一环让 AI 的「没听懂」变成可继续的对话:不换场、不乱猜,把能点的名字念出来。用户下一句就能直接点——从「我错了」走到「那我点这个」,中间不需要回忆,也不需要退出去看清单。