## 背景 上一次文档校订(b9b5ac0)之后又有两次代码提交(5194a96 / 8293282), 把 future-plan §1.1 整节变成了错的 —— 它还写着「档位没有生效点」 和「在 prepareInputTask 里加一次 activateSecurityProfile 调用」, 而后者正是被后来的收敛**否定掉的方案**。 ## 新增 docs/zh/README.md(文档索引) 32 篇文档此前混着三种时态(当时实测 / 历史推演 / 设计规划),外观相同。 索引给出**状态分类与可信度规则**: | 状态 | 能不能当事实用 | |---|---| | 已实现并部署 | ✅ 直接信 | | 部分实现 | ⚠️ 只信标了"生效"的部分 | | 设计 / 未实现 | ❌ 只能当设计意图 | | 归档说明 | ❌ 不要改、也不要信 | 并写死**判据名可信度规则**:文档里的 `TestXxx` 不保证还存在。 给了核对命令,以及当前基线(27 条缺失的分布 —— 18 条属"设计未实现"类 文档的规划名、7 条是 §2.7.3 有意保留的历史对照表左栏、2 条属视频能力 未纳入契约)。判定标准:**在"已实现"类文档正文里找不到才是缺陷**。 ## 重写 future-plan §1.1(已结案) 原节写的是错的方案。改成记录**真正的缺陷分三层**: ``` 第 3 层(表面):activateSecurityProfile 零调用方 第 2 层:agent/core 在替 security 做策略决策 (自己抠 security_profile / 自己选判定链 / 自己写 Kind:"resident" 声明主体类别 —— 提权口子) 第 1 层(根因):security 缺少「输入接入点」 ``` 并补上「每 agent 一个实例」的最终形态(共享注册表 + per-agent 执行视图, sessionProfile / longtimeProfile 两层,优先级 session > longtime 本身是安全语义)。 §〇「机制 ≠ 接线」表格里档位那一条从 🔴 改为 ✅。 ## 各文档状态行 此前 14 篇缺状态行(runbook / 实测报告 / 计划类)。逐篇补上**符合实际内容** 的声明,而不是统一套一句。特别地: - `commondev-design.md` 标题本就写「设计 · 未实现」→ 归到"设计"类 - `live-run-evidence-2026-10-04.md` → 明确标注"历史证据快照,不要用它的 结论覆盖现在的实现判断" - `legacy-issues.md` → 写明它与 future-plan 的分工(前者收已知问题, 后者收能力缺失与零调用方) ## 正文里两处判据名漂移 - `TestBootCtxCloseAllIsReverseOrder` → 实际是 `TestKernelStateCloseAllIsReverseOrder`(`BootCtx` 改名时判据跟着改的) - `TestNilTypedBusSafety` → 标注为"规划名,仓库中不存在" ## 新增 §2.7.5 模块产物的实例化粒度 依赖图保证"设施已就绪",但没说该有几个实例 —— 这是独立决策。 记下 security 的两个答案:全局基线共享(否则插件声明对部分 agent 不生效)、 轮次状态 per-agent。并给出给未来新模块的两条判断标准。 ## 安全文档 状态头补「架构形态」段(防火墙定位、per-agent 视图、两层档位); 接线状态表里 `ActivateProfile` 从 🔴 改为 ✅(2026-10-31 接通)。 ## README 文档列表加索引与 future-plan 入口 —— 此前从 README 找不到 docs/zh 的任何指引。 ## 核对 - docs/zh 32 篇全部有状态行 - 索引里列的文档全部存在,无遗漏 - 分类与各文档自述一致(逐篇抽查) - go build 仍通过(纯文档改动)
3.5 KiB
召回即联想
状态:参考 / 机制说明。 描述召回作为关联的模型,非待办清单。 未实现项见
future-plan.md。
「召回是针对节点的,然后召回的是节点与 n 层 bfs 结果」 —— 这个机制就是在模仿人类的联想能力。
为什么这个类比比技术描述准确
技术上说"命中节点 + N 层 BFS"只是描述了做法; 而"联想"说清了为什么必须这样做:
人听到「值班室分机号是多少」时真的发生的事:
① 想起 "值班室分机号" ← 命中节点
② 想起 "4324" ← 沿边一步
③ 想起 "旧号 4379 停用了" ← 沿边两步(4324 --停用于--> 4379)
④ 想起 "老周值班" ← 沿边一步(反向可达)
★ 人不会只答 ② —— ② 单独说出来没有意义(「4324」是什么?)
联想里 ③④ 是**自动附带**的,不是被问到的。
而"只召回主语块"(我上一条列为选项 1)恰恰是切断联想:
宾语块 4324 孤立召回时不知道自己来自哪里,于是要么丢它、
要么给它加"来源标注"这种特判——都是在模拟"人不会联想"。
三条由此推出的设计约束
① 召回对象是节点,不是"事实"
节点是记忆的载体。一条事实(值班室分机号 --是--> 4324)是
两个节点 + 一条边,不是三个字符串。
⇒ 任何把事实当原子值处理的实现(把 <主语>|<关系>=<宾语> 存成
一个块的属性图形态)都丢掉了"边可以独立演进"这件事。
② 不做"来源标注"这类特判
联想不需要标注"这个值从哪来"——它天然在图里。 要标注,说明图结构没建对。
⇒ 判据 TestBFS_节点加N层邻居 直接检查"孤立命中的宾语块能否
通过 BFS 找回主语",而不是检查标注字段是否为空。
③ 层数(N)是上下文预算,不是图算法参数
人回忆时不会无限联想——想起第三个无关的东西就停了。 所以 N 应该由召回预算决定,而不是"遍历完整张图"。
⇒ 与实测对齐:今天的召回预算是 blockRecallTopK = 8、
blockRecallMinScore = 0.5;N 定 1~2 层,
否则一个高频主语会把整张网拖出来(实测实体网会织成"全连通",
那样 BFS 就退化成全表扫描)。
★ 这是还没验证的部分:N=1 时已经能带出 4 个节点(含两个方向的
邻居),但"织成网"之后的实际连通度与噪声率没有实测过。
判据 TestBFS_节点加N层邻居 钉的是形态,不是规模。
与已完成工作的关系
① 边升格(52e4596) 边成为独立单位(可并存多条、承载属性)
← 这是联想的**前提**:边不是标签才有"沿边一步"
② 节点形态回滚 主语块/宾语块(B 方案)
④ BFSBlocks 联想的实现
顺序不能反:没有 ①,「沿边一步」就是查一个字符串标签; 没有 ②,图里只有名字节点,联想织不出有意义的网。
一条反面记录
我第一次实现 Commit 块化时(cdf0726)做成了
主语块 --是--> 宾语块 的属性图形态 —— 节点形态对、但块内容错了
(块内容是纯名字,而不是 <主语>|<维度>=<值> 的字段块)。
⇒ 形态对不等于设计对。节点装什么内容,与节点之间怎么连,是两件事。