Files
HomeAgent/docs/zh/README.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

141 lines
7.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.

# docs/zh 文档索引
> 建立于 2026-10-31。目的:**让读者知道该信哪一篇、哪些是历史记录**。
>
> 此前本目录 32 篇文档混着三种时态 —— 当时实测、历史推演、设计规划 ——
> 外观完全相同,读者无从分辨。曾有文档写着「`main.go` 仍走串行代码」
> 而实际早已接完(滞后一整轮发布)。
>
> 所以先分类,再读内容。
---
## 一、怎么判断一篇文档的可信度
每篇文档首部应有**状态行**,取值只允许这四种:
| 状态 | 含义 | 能不能当事实用 |
|---|---|---|
| **已实现并部署** | 文中描述与代码一致,关键处给了取数命令 | ✅ 可以直接信 |
| **部分实现** | 先说清哪部分生效、哪部分没有(附实测调用点) | ⚠️ 只信标了"生效"的部分 |
| **设计 / 未实现** | 是方案,不是现状。代码里可能没有 | ❌ 只能当设计意图 |
| **归档说明** | 历史记录,**故意保留当时的写法** | ❌ 不要改它,也不要信它 |
### 判据名的可信度规则(重要)
文档里出现的 `TestXxx` 名字,**不保证现在还存在**:
- **已实现并部署**类文档里的判据名 → 应当存在。找不到就是缺陷(报告它)
- **设计 / 未实现**类文档里的判据名 → 是**规划的名字**,可能从未实现
- **归档说明**类文档里的判据名 → 记录的是当时的事实,可能已改名或删除
历史上有过一次真实漂移:`BootCtx` 改名为 `KernelState` 后,
`TestBootCtxCloseAllIsReverseOrder` 随之变成
`TestKernelStateCloseAllIsReverseOrder`,而文档没跟上。
**核对命令**(任何时候都可以自己跑):
```bash
# 列出本目录引用的全部判据名里,仓库中找不到的那些
for n in $(grep -rhoE '`Test[A-Z][A-Za-z0-9_]+`' docs/zh/*.md | tr -d '`' | sort -u); do
grep -rq "func $n(" --include="*_test.go" internal cmd 2>/dev/null || echo "缺失: $n"
done
```
跑出来有缺失**不一定**是缺陷 —— 先看它出在哪类文档里。
**当前基线(2026-10-31)**:27 条缺失,分布如下,全部已知且已说明:
| 篇数 | 文档 | 性质 |
|---|---|---|
| 18 | `commondev-design.md` / `commondev-agent-runtime-design.md` | 「设计 · 未实现」类,判据名是**规划名** |
| 7 | `kernel-modularization-design.md` | §2.7.3 的**对照表左栏**(有意的历史记录),其中 4 条已登记 future-plan §2.3 |
| 2 | `multimodal-space.md` | 视频能力未纳入契约,判据为规划名 |
⇒ **在「已实现并部署」类文档的正文里(非历史对照表)找不到判据名,才是缺陷。**
---
## 二、文档清单(按状态分类)
### 2.1 已实现并部署 —— 可以直接当事实
| 文档 | 内容 |
|---|---|
| [`kernel-modularization-design.md`](./kernel-modularization-design.md) | **装配架构权威**:依赖声明、BFS 分层、Group 0、实例化粒度 |
| [`kernel-secret-firewall-design.md`](./kernel-secret-firewall-design.md) | 安全防火墙(**部分实现**,见文首接线状态表) |
| [`input-scheduler-design.md`](./input-scheduler-design.md) | 两类别输入 + L1–L4 中断 + 可抢占 |
| [`resident-subagent-design.md`](./resident-subagent-design.md) | 驻留子:轻量内核、两级记忆、父子 L3/L4 |
| [`toolcall-contract-and-sequence-design.md`](./toolcall-contract-and-sequence-design.md) | 工具调用契约与顺序 |
| [`ci-cd-runbook.md`](./ci-cd-runbook.md) | CI/CD 操作手册 |
| [`deploy-runbook.md`](./deploy-runbook.md) | 部署手册 |
| [`site-infra-runbook.md`](./site-infra-runbook.md) | 站点基础设施 |
### 2.2 参考 / 实测报告 —— 数据可信,结论看日期
| 文档 | 内容 |
|---|---|
| [`kernel-performance.md`](./kernel-performance.md) | 性能实测数据 |
| [`production-recall-validation.md`](./production-recall-validation.md) | 生产召回验证(含未解决的 3 条遗留边) |
| [`recall-as-association.md`](./recall-as-association.md) | 召回作为关联的机制说明 |
| [`recall-capability-tiers.md`](./recall-capability-tiers.md) | 召回能力分层(含 2 个未补的缺口) |
| [`multimodal-space.md`](./multimodal-space.md) | 多模态向量空间 |
| [`vector-provider-decision.md`](./vector-provider-decision.md) | 向量 provider 选型决策 |
| [`abstention-criterion.md`](./abstention-criterion.md) | 弃答判据 |
| [`triple-extract-attention.md`](./triple-extract-attention.md) | 三元组抽取与注意力 |
### 2.3 设计 / 未实现 —— 只能当设计意图
| 文档 | 状态 |
|---|---|
| [`commondev-design.md`](./commondev-design.md) | 标题即写明「**设计 · 未实现**」;架构已变更,见其 §12 |
| [`commondev-agent-runtime-design.md`](./commondev-agent-runtime-design.md) | 架构已按前篇 §12 调整,部分未落地 |
| [`interrupt-subsystem-split-plan.md`](./interrupt-subsystem-split-plan.md) | 探测结论 + 实施计划 |
| [`toolcall-parallel-execution-plan.md`](./toolcall-parallel-execution-plan.md) | 并行化执行计划(含遗留项) |
| [`memory-blockflow-repair-plan.md`](./memory-blockflow-repair-plan.md) | 记忆块流修复计划 |
| [`memory-restructure-plan.md`](./memory-restructure-plan.md) | 记忆重构计划 |
| [`memory-usability-plan.md`](./memory-usability-plan.md) | 记忆可用性计划 |
| [`scene-memory-fix-plan.md`](./scene-memory-fix-plan.md) | 场景记忆修复计划 |
| [`legacy-table-retirement.md`](./legacy-table-retirement.md) | 遗留表退役(收尾中) |
| [`entities-retirement-plan.md`](./entities-retirement-plan.md) | 实体表退役 |
| [`prod-migration-checklist.md`](./prod-migration-checklist.md) | 生产迁移清单 |
| [`triple-distill-llm-design.md`](./triple-distill-llm-design.md) | 已实现并**部分否决** |
### 2.4 归档说明 —— 历史记录,不要改也不要信
| 文档 | 说明 |
|---|---|
| [`context-overflow-l4-design.md`](./context-overflow-l4-design.md) | 术语已过时(`memory_*` 等旧工具名保留原样) |
| [`live-run-evidence-2026-10-04.md`](./live-run-evidence-2026-10-04.md) | 某次实跑证据快照 |
| [`legacy-issues.md`](./legacy-issues.md) | 遗留问题清单 |
> **为什么归档文档里有旧工具名却不改**:它们是**证据快照**。
> 把 `memory_recall` 改成 `stablemem_recall` 等于篡改当时的记录,
> 让后来的人无法判断"这条结论是在哪个版本上得出的"。
### 2.5 唯一未做登记处
| 文档 | 内容 |
|---|---|
| [`future-plan.md`](./future-plan.md) | **全仓唯一的「尚未实现 / 已知缺口」登记处** |
**规则**:任何设计文档都不再自己维护「未做」小节,一律登记到 future-plan。
历史上各文档各自维护,结果滞后过 —— 已完成仍写未做,未做被当成已完成。
---
## 三、写文档的三条纪律
1. **数字类断言必须给取数命令**(如模块数用
`go run ./cmd/homed-depgraph -print`),**不要凭记忆写数字**。
本文档集历史上写错过一次(17 模块 vs 实际 20)。
2. **区分「机制存在」与「接线生效」**。本项目的头号缺陷形态是
机制写对了、判据全绿、生产里零调用方。描述能力时写**实测的生产调用点**,
不要只写"已实现"。
3. **判据要能红**。写判据时先问:把对应实现删掉,这条判据会红吗?
本仓踩过两次:`security_toolgate_test.go` 手动调 `SetSecurity`
把缺失的接线补上了;`retention_test.go` 手写合规文件名,
从没跑过真实产物。两者都永远绿。