Files
HomeAgent/docs/zh/recall-as-association.md
JianFeeeee cf14b840ef docs: 补齐文档状态分类 + 校正两轮代码改动后的失真
## 背景

上一次文档校订(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 仍通过(纯文档改动)
2026-10-31 07:50:58 +08:00

3.5 KiB
Raw Blame History

召回即联想

状态:参考 / 机制说明。 描述召回作为关联的模型,非待办清单。 未实现项见 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)做成了 主语块 --是--> 宾语块 的属性图形态 —— 节点形态对、但块内容错了 (块内容是纯名字,而不是 <主语>|<维度>=<值> 的字段块)。

⇒ 形态对不等于设计对。节点装什么内容,与节点之间怎么连,是两件事。