Files
HomeAgent/docs/zh/live-run-evidence-2026-10-04.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

122 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 实战证据:新内核在真实跑分中的行为(2026-10-04 07:13~07:29)
> **状态:归档说明(历史证据快照)。** 记录 2026-10-04 那次实跑的现场数据。
> **不要用它的结论覆盖现在的实现判断** —— 代码已演进,快照只证明"当时是这样"。
内核 `657ccd7`(含今天全部 19 个 memory 层提交)跑 tasks.zerobasis + memory_recall 时的实例日志。
## 一、召回来源标签(今天新增的功能)
```
标签分布:exact 14 次 text 24 次 symbol 0 次
样例:
[exact 1.00] 第15批与第18批之间缺失,待老大确认是否遗漏
[exact 1.00] 第47批 4279ms
[exact 1.00] 连接池从 ...
[exact 1.00] 第115批周二凌晨2点·停机6分·回滚v2.28.1·灰度5%观察63分后…
[text 0.57] order-gw 运维进展
```
★ **`exact` 那 14 条正是「端口号/批号/耗时」类事实** ——
它们在纯向量下召不回(实测 chineseclip 对「13010」这类
短数字串极不敏感),今天靠符号路的布尔置顶救回来。
`symbol 0 次` 说明:纯符号命中(无向量分)这条路在 ha-c 数据上
没有被触发 —— 因为块都是整句块,向量侧总能给分。
## 二、L4 上下文超页处理在真实负载下触发(本分支早前工作)
```
overflow 32 次
preempt 6 次
suspend 6 次
裁剪 3 次
recover budget exhausted (未出现,说明恢复预算够用)
```
`tool call loop start, max_ctx=50000 target=40000 fixed=2196`
⇒ 在 50000 窗口、26 轮叙事填充下确实触发了超页路径,
且没有出现「no reduction」那类失败。
## 三、能力标定
```
tasks.zerobasis 6/6(100%) 墙钟 159.17s
token 281971 缓存命中 42.7% 超时 0
```
## 四、召回被全局上限截断
```
graph.go:944: [graph] recall: 截断 3 个实体(全局上限 20)
```
★ 这条日志说明**旧实体路仍在跑**(`graph.go:944` 是 `RecallSorted`
的截断逻辑),而今天的块路是并行的另一条。
两路都在 ⇒ `da2063b` 评估里说的「55 处调用点」在现场得到印证:
旧路径没有退出,只是被块路抢先返回了。
## 五、★ 跑分正在往旧表里写数据(最重要的发现)
```
07:29:20 memory_commit result: 已写入 8 个实体和 4 条关系
07:31:02 memory_commit result: 已写入 2 个实体和 1 条关系
07:31:29 [indexer] 实体数 202→207,已增量重建实体名向量索引
07:31:30 [indexer] 实体数 194→202 …
entities: 188(跑分前)→ 207(跑分后)
```
★ **`memory_commit` 仍写 `entities` / `relations`,而且是活跃的在线写入路径。**
这修正了 `da2063b` 的评估,也修正了「写入点已清零」的说法:
| 我以为 | 实际 |
|---|---|
| `sentences` 写入点已清零(迁移与蒸馏) | ✅ 成立,但只针对这两条命令 |
| 旧表在等着被清理 | ❌ **它还在长大**(188 → 207) |
⇒ **旧表退场的前置不是「删表」,是「先让 `memory_commit` 改写为写块」。**
在那之前删除旧表 = 在线写入直接报错。
## 六、召回的三种返回形态(实战统计)
```
① 正常召回(找到 N 条) 30 次 ← 块路
② 拒答(记忆库里没有) 2 次 ← 今天新增的判据
③ 空返回(走旧路兜底) 31 次 ← 块路让位
```
### ② 拒答样本(今天能力的实战验证)
```
记忆库里没有与「第8批 上线准备」相关的记录
记忆库里没有与「第9批 上线准备」相关的记录
```
★ 查询含**精确串**(第8批/第9批)而库里没有 ⇒ 判据正确触发。
**今天新增的拒答能力在真实负载下工作了。**
而且验证了「拒答后不走旧路兜底」(实测 0 次)——
拒答是干净的终态。
### ③ 那些截断日志其实不是 memory_recall
```
graph.go:944: 截断 149 个实体(全局上限 20)
```
第一反应是「块路被旧路抢走了」,**但查上下文发现来源不同**:
```
[agent] tool memory_commit result: 已写入 2 个实体和 1 条关系
tooldefs.go:107: [agent] memory recall (input:cli): injected 1287 chars
↑ input:cli = 自动记忆注入,不是用户的工具调用
```
⇒ 截断来自**自动记忆注入与 memory_commit 的内部召回**,
不是用户显式调用 `memory_recall` 时的兜底。
★ **我差点又归因错了**(「块路 30 vs 旧路 31,块路没抢先」)。
差异的来源是**调用方不同**,不是优先级失效。