mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-11-06 09:17:31 +00:00
## 背景 上一次文档校订(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 仍通过(纯文档改动)
81 lines
3.5 KiB
Markdown
81 lines
3.5 KiB
Markdown
# 召回即联想
|
||
|
||
> **状态:参考 / 机制说明。** 描述召回作为关联的模型,非待办清单。
|
||
> 未实现项见 [`future-plan.md`](./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)做成了
|
||
`主语块 --是--> 宾语块` 的属性图形态 —— **节点形态对、但块内容错了**
|
||
(块内容是纯名字,而不是 `<主语>|<维度>=<值>` 的字段块)。
|
||
|
||
⇒ 形态对不等于设计对。**节点装什么内容,与节点之间怎么连,是两件事。**
|