🎯 圆心 · 目标(每环都从这里出发)
造一台 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 按序号点选 · 63 序号用于删除 · 64 删除回执念名字 · 65 删除可撤回 · 66 撤回回执念名字 · 67 撤回即续聊 · 68 续聊先开口 · 69 开口带名字 · 70 开口不叫错人 · 71 开机问候也认人 · 72 单名问候也验归属 · 73 单名问候带余场 · 74 余场点名 · 75 余场翻页 · 76 翻页带序号 · 77 序号点选也叫名字 · 78 点完就接着聊 · 79 全名点完也接着聊 · 80 话头接末句

本环:不管用什么方式点,点谁都接上

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

第 78 环让「第N个 / 第N场」这条序号路做到「点完就接着聊」:等进场完成,硬件直接用恢复的上下文说下一句。可用户直接念名字点一场(「查资料」)时——第 59 环的全名命中、换场、恢复上下文全都照做——AI 仍旧一声不响。

同一次「点谁」的动作,凭「用什么方式点」分成两种待遇,用户听来就是「有时候记得我、有时候不认识我」。这一环把开口条件从「序号点选」拓宽到任何一次真点中:全名点中也接上下一句,删除和叫错名字仍不开口。

② 实现(做了什么)

把「点中」拆成两种来路。pick_speak 新增 en_any(开关 NP_ANYSPK):sel_hit = ok && answered && !del && (per || ord) 始终开口(第 78 环语义不变);full_hit = ok && answered && !del && !per && !ord 只在 en_any=1 时开口。删除路永远不开口——删完没有「下一句」可接;叫错名字(ok=0)也不开口。

生成契约一字不差。全名路和序号路共用同一段接力:等 name_pick 已发的那条 enter 真跑完(见 busy 起、再见 busy 落)→ 只有 ok && mem_ok 才开口 → 话头取恢复的归档摘要低位、2 层、种子固定 0xA5 → 发一段整段生成。核一个生成入口寄存器都不写。

点法可读。新增 kind_out[1:0]:1 = 序号点选、2 = 全名命中。探针 PKS_KIND 让「全名真走了同一条路」可被读出,而不是只看一句回执。

开关保守。新写口 0xB6C NP_ANYSPK(默认 0 = 第 78 环语义);新只读 0xB70 PKS_KIND;新观察点 0xB7C SCREEN55。前 78 圈地址映射一字不改、ISA 编码一位没动。

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

单元 tb_pick_speak79(替身开关场 + 替身生成引擎,六用例):

  • en_any=0 + 全名命中 → 不动作(第 78 环老语义逐位不变);
  • en_any=1 + 全名命中 → 等进场 busy 起落 → 摘要低位当话头 → gen_start/seed_we 各一拍 → spoke=1 / kind=2 / sid=0xA4 / n=3;
  • en_any=1 + 序号点选 → 仍开口、kind=1(第 78 环能力不退化);
  • 删除路径(del=1)→ 不动作;
  • 全名空场(mem_ok=0)→ done=1 / spoke=0 / err=0,不发 gen_start;
  • pick_done 还举着时 clear → 同一场不重复开口。

ISA 协同 tb_isa_greet79(真整颗 SoC,四场目录 + 活清单 0x1C0 + slot2 = 0xA3 也有一份 4 条 K/V 归档):

NP_PKSPK=1, NP_ANYSPK=1, NP_ORDNM=1
说「查资料」→ 一条 npu.name
   → 换场 0xA3,回执「好,查资料,接着聊。」
   → 硬件自己先说一句:话头=摘要低位 2、种子 0xA5、4 步
     seq=0x22、末 token 2、PKS_CORE=0、kind=2
PKS_RST → 说「第二个」
   → 序号路仍开口:sid=0xA2、kind=1、4 步 seq=0x22
SCREEN55 = 0xC4A38022
SCREEN = 0x79

回归:pick_speak79、pick_speak、name_pick77、rem_pick76、resume_speak70、isa_resume68、isa_greet77、isa_greet78、isa_greet79、min_soc64 十项全 PASS;第 78 环的序号开口、第 77 环的回执、第 68 环的先开口逐位不变。

✅ 仿真通过 · 本环闭环
单元 6 用例 + ISA 协同 + 10 项回归;说名字点一场,AI 也真的接着说了下一句
④ 本环的钉子
  • 第一次回执会被第二次覆盖:测试台若每次 spoke 上升都往同一个 firstrc 里拷,第二次开口会把第一次回执盖掉——加 rc_captured 只记第一次;
  • 等真进场,不抢跑:全名路同样要用「见 busy 起、再见 busy 落」两段式,先把上一轮 done 当本轮会少说一句、或者看门狗空转;
  • 空场不假装记得:被点的会话必须有真归档(mem_ok=1);空场应 done=1 / spoke=0 / err=0,不能为了「看起来能用」硬开口;
  • 删除排除在外:触发条件里 del 必须排除——删完没有「下一句」;
  • 单拍脉冲仍要进每拍默认块:gen_start / seed_we 只写复位分支会常高(第 38/44/68 环同一颗钉子);
  • 点法探针要跟着锁存:kind_out 在认下点选那一拍锁存,否则后面 per/ord 信号落下就分不清这次是全名还是序号。