# ADR 0003:控制器持有的三层探索,以及面向读取的本地索引 日期:2026-11-03。状态:已接受。替代 [ADR 0002](0002-menu-first-domain-learning.md) 中的四级探索和由模型提交单元的做法。不改变 Node 24、SQLite、本机浏览器和 dsh 原生代理的技术基线。 ## 背景 探索队列如果由模型提交单元,前沿就不属于产品。四层里的业务行为层又把打开页面和写入 ERP 混在同一次漫游里。初始化之后,模型更常需要的是短摘要和一页证据,而不是每次都走完整关系遍历。 物理存储继续使用现有 SQLite。不引入图数据库,也不再保留 Deskwork 适配。 ## 决定 1. 探索由控制器持有前沿,深度停在 3。第 1 层可以只保存入口快照。第 2 层打开页面,每次打开仍走 dsh 批准。第 3 层记录当前快照里已经看见的字段、Tab 和窗口,然后停止。 2. 每一层的前沿清空后,先写入一条紧凑摘要,再把下一层放进前沿。摘要是内部节点;叶子仍是带证据的知识记录。 3. 初始化之后的默认读取是摘要加一页叶子。搜索、邻居、历史和单条记录是查找路径。更新是少数路径。 4. 本地修订和 ERP 变更分开。`erp_knowledge_record` 只改本地 SQLite。填入、选择,以及标明 `mutate` 的点击,才是 ERP 业务写入,并且必须经过 dsh 批准。 5. 工具参数和存储契约继续只用现有的 ValueSchemaSpec。原生快照在入库前整理成 `browser-learning-v1`,以便现有导入使用。 6. 工具结果以短 Markdown 为主,并用 `presentResult` 提供标题。只有检测到 OpenUI 宿主时才附加一段可选载荷,不把裸 DSL 当作主要界面。 ## 后果 旧的模型提交队列不再恢复。没有摘要的范围,默认读取会明确返回未初始化,而不是假装已经覆盖整个 ERP。摘要里的页面文字仍是证据,不是指令,也不是业务授权。