# Paper Evo:本地 Agent 的记忆与技能自进化体系 > 论文级沉淀 · v3.2(2026-07-24) > 定位:把 Paper 已落地的 Evo 流程整理成可论证的设计文档。理论框架取自 > **互补学习系统**(CLS)+ **CoALA 记忆分类学**;工程对照取自 **MUSE-Autoskill** > (arXiv:2605.27366)与先行系统(Voyager / Generative Agents / MemGPT / Reflexion)。 > 版本轨迹:v1 公理+MUSE 对照 → v2 CLS 框架+睡眠巩固+腐蚀风险 → v2.1 自洽性审校 > → v3 认知架构定位(§3.3)+ 先行系统速览(§5.2)+ 评测协议 Evo-Eval(§9) > → v3.1 补全工程落地目录结构(§4.4) > → **v3.2 §4.4 升级为公理论证(问题论证+设计问题映射表+代价对策)+ §8 新增风险 #6**。 > **本文档只做设计收敛,不伴随代码实现**;实现分期见 §10 Roadmap。 > 相关规格稿:`design/paper-cli-evo.html`(两级知识布局)、`design/agent-evo.html`(Evo 面板)、 > Claude Artifact `0e11a6b3-07d5-44ae-bb97-2dfa35e3ff1f`(工程性实践的目录结构设计,原稿用 > 「Chaya」旧称,本文统一改写为「Paper」;正文见 §4.4)。 --- ## 1. 问题定义 本地 CLI agent(claude / copilot / opencode)默认是**无状态**的:每个会话从零开始, 用户偏好、业务口径、踩过的坑、跑通过的操作路径,全部随会话结束蒸发。 Paper Evo 要解决的问题是:**让同一个工作目录(cwd)上的所有会话——跨 provider、跨时间—— 共享一份持续演进的「记忆 + 技能」资产**,并且: 1. 资产质量随使用**上升**而不是堆积腐化(合并、分区、淘汰); 2. 注入成本**不随资产规模线性膨胀**(token 预算有限); 3. 一切资产**可审计、可回滚、可迁移**(真源单一、物化可再生)。 MUSE-Autoskill 在同类问题上的核心论断给了外部佐证:把技能当作 「长期、经验感知、可测试的资产」而非静态提示片段,自创技能在 SkillsBench 上 (85.24%)可以超过人写技能(81.17%)。Paper 的路线与其高度同构,但作用域不同: MUSE 面向单一 agent 框架,Paper 是 **provider 无关的桌面中枢**——资产必须能喂给 任何一家 CLI。 ## 2. 设计公理(已拍板,作为后续论证的前提) | # | 公理 | 含义与理由 | |---|------|-----------| | A1 | **真源唯一** | 一切配置/凭证/记忆/技能的权威状态在本地 SQLite(`userData/paper.db`)。文件系统上的 `.md`/`.json` 全部是**可再生的物化视图**——删了会被重写,不落任何密钥。保证可审计、可整体迁移、无双写裂脑。 | | A2 | **记忆强分区** | 记忆块必须归入固定分区集(协作与语言 / 业务口径 / 架构与流程 / 数据与凭证 / 环境与工具 / 风险与红线,兜底「其他」)。固定集合而非自由发挥:分区漂移比无分区更糟。 | | A3 | **记忆自动 evict,最新语义为准** | 用户不管理记忆。三层淘汰,优先级自上而下:① 同名 label 覆盖更新;② 语义 evict——被最新对话明确推翻的按名删除(`evict_blocks`),**不受任何保留权重保护**(公理即「最新为准」);③ 容量硬上限(40 条)内按保留权重淘汰(现行实现 = 纯时近;精化为 时近×提取频率 见 §6.5,属 To-Be)。 | | A4 | **技能强目的、路径依赖** | 技能 description = 「什么情况下用 + 达成什么」;正文固定体例「目的 / 触发 / 步骤 / 验证」,步骤必须落到真实文件路径、命令、表名。无落点的抽象方法论不是技能。 | | A5 | **技能免审即用、可删** | 蒸出即 `trusted`、立即可被召回(无人工 approve 门);用户唯一的管理动作是删除。质量由整合(合并/重写/淘汰)与使用信号兜底,而不是由事前审批兜底。 | | A6 | **不注入的知识沉淀不存在** | 曾经的 note(不注入的归档笔记)已删除。凡是不进入 agent 上下文路径(常驻注入或按需 Read)的**知识沉淀**,都是维护负担而非资产。范围限定:审计/运维工件(快照、索引、日志)不是知识沉淀,不受本条约束(见 §8.4)。 | | A7 | **provider 无关** | 资产经由文件(AGENT_MEMORY.md / SKILL.md)+ 注入指引喂给任意 CLI;claude 走 systemPrompt append,ACP 系走 prompt 前缀。不依赖任何一家的原生记忆/技能机制。 | ## 3. 理论框架:互补学习系统(CLS) ### 3.1 理论内核 CLS(McClelland, McNaughton & O'Reilly 1995;Kumaran, Hassabis & McClelland 2016 更新) 的核心主张:**单一学习系统无法同时做到「快速吸收个例」和「稳定保持结构化知识」** ——快学习会灾难性干扰已有结构,慢学习跟不上环境变化。生物脑的解法是双系统分工: - **海马体(快系统)**:稀疏编码、一次性写入具体情景痕迹,即写即用; - **新皮层(慢系统)**:通过**离线交错重放**(睡眠期 replay)把海马痕迹缓慢 整合进结构化 schema,抽象出可泛化的语义知识; - **两条被反复验证的推论**:与既有 schema 一致的新信息可以快速直接落位 (schema-consistent fast integration);被反复**提取**的记忆巩固更深、更抗遗忘 (retrieval-induced consolidation)。 近年这一框架被系统性移植到 LLM 记忆工程:EVAF(arXiv:2606.29916)用 「快绑定海马库 + 慢巩固皮层库 + 离线重放」双库结构;eMEM(arXiv:2606.03374)把 观察节点当海马痕迹、要点(gist)节点当皮层抽象;HEMA(arXiv:2504.16754)用 「常驻紧凑摘要 + 按需检索的情景库」两级结构;Wake-Sleep Consolidated Learning (arXiv:2401.08623)把巩固放进显式的「睡眠期」。**Paper Evo 的既有流程在不知不觉中 实现了一个 CLS 同构体**——本节把这个同构关系摆明,让后续优化有理论座标。 ### 3.2 Paper ↔ CLS 映射 | CLS 概念 | Paper 机制 | 说明 | |----------|-----------|------| | 海马快写(一次性情景痕迹) | **per-turn reflect**:回合结束后台蒸馏,blocks 同名覆盖、技能即蒸即 trusted | 快、便宜(快模型)、即写即用(A5) | | 皮层慢整合(交错重放 → schema) | **整合 consolidate**:LLM 对全量记忆/技能交错重放、强分区重组、同族合并、体例重写 | 慢、高质量(会话模型)、全库重写 | | 皮层 schema | **固定分区集**(A2)+ 技能四段体例(A4) | schema 是「知识落位的格子」,固定集合防漂移 | | schema 一致快落位 | reflect 蒸出的 block **直接带分区**入库 | 与理论预测一致:不必等慢系统才归类 | | 提取诱导巩固 | `used_skills` 召回计数 → uses≥3 静默晋升 promoted;promoted 受整合保护 | 被反复使用 = 巩固更深、更抗淘汰 | | 遗忘(未巩固痕迹衰减) | 语义 evict(被新对话推翻)+ 容量 evict(A3)+ note 层删除(A6) | 快系统必须能忘,否则慢系统被垃圾淹没 | | 睡眠期重放 | **缺口**:目前整合只有手动触发 | → §6.4 睡眠期自动巩固 | | 常驻摘要 + 按需情景库(HEMA 两级) | **缺口**:AGENT_MEMORY.md 目前全文内联 | → §6.1 技能两级检索(与 MUSE 结论汇合) | 这个映射的价值不在比附,而在**两条可检验的设计推论**: (1) 快慢两路的质量/成本参数应当**分开调**(已做:reflect 用快模型、整合用会话模型 + 240s); (2) 巩固应当发生在「离线期」且由积压量触发,而非依赖用户记得点按钮(未做,见 §6.4)。 ### 3.3 认知架构定位:CoALA 记忆分类学 CoALA(*Cognitive Architectures for Language Agents*, arXiv:2309.02427)给语言 agent 的记忆划了四格:**工作记忆**(当前上下文)、**语义记忆**(世界/领域事实)、 **情景记忆**(具体经历)、**程序性记忆**(怎么做)。用它给 Paper 资产定位, 能暴露一个需要主动辩护的设计选择: | CoALA 记忆类型 | Paper 载体 | 说明 | |----------------|-----------|------| | 工作记忆 | 会话上下文 + AGENT_MEMORY.md 注入 | 每回合重建,常驻紧凑(HEMA 意义上的 compact tier) | | 语义记忆 | **blocks**(强分区) | 领域口径/偏好/红线;A2 的分区 = 语义 schema | | 程序性记忆 | **skills**(四段体例) | A4 的「强目的、路径依赖」= 程序性知识的定义性特征 | | 情景记忆 | **刻意薄**:CLI transcript(各 provider 已落盘)+ To-Be 的 `.memory.md` | 见下方辩护 | **情景记忆薄化的辩护**(这是 A6 删除 note 层后必须回答的问题): CoALA 里情景记忆的功能是「供反思与巩固取材」。Paper 的情景原始材料**并未丢失** ——每家 CLI 本来就把完整 transcript 落盘(claude 的 jsonl、opencode 的 SQLite 等), reflect 正是在其上采矿。我们删除的只是「**蒸馏后仍不注入的中间层**」(note): 它既不是原始情景(transcript 更全),也不是语义结论(block 才是),在双层之间 没有独立功能,只有维护成本。保留的情景层是**技能绑定的** `.memory.md`(§6.2)—— 因为它有明确的注入路径(读技能时顺带读),符合 A6。 ## 4. 现状架构(As-Is,2026-07-24 已落地) ### 4.1 数据模型(paper.db) ``` agent_memory(agent_id, kind='block', label, value, tags[0]=分区, uses, updated_at …) agent_skill (agent_id, name, description, body, keywords, maturity ∈ {draft|trusted|promoted|rejected|archived}, uses, source, …) ``` 作用域键 `agent_id = cwd:`:**目录即作用域**,本目录所有会话(任意 provider)共享。 升格 Agent 只额外贡献人设,不改变作用域模型。 ### 4.2 两级文件布局(物化视图) ``` ~/.paper/ 用户级中枢 ├── skills//SKILL.md 跨项目通用技能/方法论(Skill Hub 扫描) ├── cwds.json / INDEX.md 出现过的 cwd 注册表 + 人/agent 可读索引 └── cron/ headless/ reflect/ 既有约定目录 /.paper/ 项目知识包(随目录走,可入 git) ├── AGENT_MEMORY.md 记忆(强分区) + 技能全文 的聚合注入文件(每次会话重生成) └── agents/skills//SKILL.md 项目级技能包(外部工具/人工放入,Skill Hub 扫描) ``` 启动自检:`~/.paper/.schema.json` 版本戳落后 → 升级动画 + 全量重建索引。 ### 4.3 生命周期(当前闭环) ``` 会话回合结束 └─ reflect(headless 快模型蒸馏,best-effort) ← CLS 快系统 ├─ blocks:写入/同名覆盖(带分区,schema 直落位) ├─ evict_blocks:删除被本轮推翻的旧块 + 容量兜底淘汰 ├─ skill:induceSkill → 直接 trusted(免审即用) ├─ skill_revisions / vetoes:负反馈闭环 └─ used_skills:召回计数(uses≥3 静默晋升 promoted) ← 提取诱导巩固 └─ writeMemoryFile:重生成 /.paper/AGENT_MEMORY.md └─ noteCwd:登记 ~/.paper/cwds.json + INDEX.md 每次发送/预热 └─ 注入指引「先读 ./.paper/AGENT_MEMORY.md」(claude=系统提示;ACP=前缀) 用户手动「整合」(一个流程,两段进度) ← CLS 慢系统 ├─ 记忆:LLM 全量交错重放 → 强分区 + 大幅合并(≤2/3)+ 矛盾以新胜旧 + notes 退场 └─ 技能:同目的家族合并 + 固定体例重写 + 无落点者淘汰(archived) 保护栏:promoted / 高用量 trusted 不可淘汰 ``` 实测(`~/ad/call-back`,真实数据):记忆 14+9 → 10 条强分区块;技能 14 → 8, 三个诊断类并入一个(uses 75→80 累加),体例统一为「目的/触发/步骤/验证」。 ### 4.4 工程性实践的目录结构设计:文件系统即公理的物理投影 > 来源:Claude Artifact `0e11a6b3-07d5-44ae-bb97-2dfa35e3ff1f`(原稿以「Chaya」为产品旧称, > 本节改写为「Paper」以与全文一致)。§4.2 给出两级布局骨架后本节要回答的问题是: > **为什么是这套目录切法,而不是任意其它切法**——目录结构不是任意的工程习惯, > 而是 §2 七条公理在文件系统上的**唯一自洽落点**;本节先给出这个论证,再落到 > 数据流与来源清单的工程细节。 **问题论证——目录切法不是自由度**:一旦接受 A1(真源唯一,文件皆物化视图)+ A7(provider 无关,靠文件而非私有 API 传递资产),文件系统层面立刻出现三个 必须回答、且答案相互制约的问题:① 什么粒度物化成文件(全量 vs 按需); ② 物化产物按什么维度切分目录(否则退化为单一大文件,违反 §6.1 论证过的 注入成本 O(资产总量) 病灶);③ 全局资产(跨 cwd 复用)与局部资产(随 cwd 走、 可入 git、可随项目转手)如何在同一文件系统命名空间里不打架。CoALA 把工作记忆 定义为「每回合从长期存储装配的当前上下文」——文件系统在这里扮演的正是**长期 存储到工作记忆之间的装配层**(MemGPT 式分页的静态形态:分页在 MemGPT 里由 函数调用驱动,Paper 里由「目录行 + agent 自主 Read」驱动,见 §5.2)。 两级布局(中枢/知识包)与本节的目录粒度,正是对①②③的具体回答: | 设计问题 | 回答 | 对应公理/理论 | |---------|------|--------------| | 全局 vs 局部资产命名空间 | `~/.paper/`(中枢,跨 cwd)与 `/.paper/`(知识包,随目录,可入 git)物理分离 | A2 隐含的作用域边界;`agent_id=cwd:` 的文件系统镜像 | | 装配层粒度 | 目录级(每技能一个子目录)而非文件级或单文件级 | §6.1 两级检索的物化前提——没有目录切分,"目录行+按需 Read"无从谈起 | | 常驻 vs 按需 | `AGENT_MEMORY.md`(每会话常驻注入)vs `SKILL.md`/`.memory.md`(目录行引用、按需 Read) | CoALA 工作记忆 vs 长期存储的分野;MemGPT 分页类比 | | 审计工件 vs 知识沉淀 | `snapshots/` 独立于两级布局之外,不参与注入 | A6「不注入的知识沉淀不存在」的例外条款(§8.4):审计工件不算知识沉淀 | | 外来文件如何不越界 | `AGENTS.md`/`evo/` 等外部系统产物与 Paper 物化视图**同目录并存但字段互斥** | A7 的推论:provider 无关不等于排他,而是「各自地盘互不改写」 | **两级布局职责边界**:左边(`~/.paper/`)跨项目,右边(`/.paper/`)跟着项目走; 两边都是「agent 可读的普通文件」——任何 provider(claude / copilot / opencode)都能 直接 `Read`,不依赖任何一家的私有记忆机制(呼应 A7)。 ``` ~/.paper/ 中枢 · 跨项目(Paper 自己的东西:通用能力 + 全局索引) ├── skills//SKILL.md 通用技能/方法论,全项目可见(新增) ├── INDEX.md 人/agent 可读索引:技能清单 + 项目概览(新增) ├── cwds.json 出现过的 cwd 注册表:活跃时间/记忆·技能计数(新增) ├── cron/ 定时任务脚本与日志(既有) ├── headless/ 一次性补全的隔离 cwd(既有) ├── reflect/ 自进化蒸馏的隔离 cwd(既有) └── snapshots/ 整合前 DB 快照,审计工件(§8.4,既有) /.paper/ 知识包 · 每个项目(这个项目学到的东西:随目录走、可入 git) ├── AGENT_MEMORY.md 长期记忆:分区 block + trusted+ 技能目录/正文(每次会话重生成) ├── agents/skills//SKILL.md 项目级技能包:正文 + 配套脚本,Skill Hub 接入(既有/§6.1 修复) ├── agents/skills//.memory.md 技能级经验,点前缀不进 Skill Hub 导入(§6.2 新增) ├── AGENTS.md 项目指引(root CLAUDE.md 的源)——外来文件,Paper 不读不写 └── evo/ 外部自进化引擎(如仍存在)状态目录——外来,互不相扰 ``` **真源原则重申**:偏好/技能成熟度/凭证全部住在 `userData/paper.db` (`kv` + `secrets` + `agent_memory` + `agent_skill`);上面所有 `.md`/`.json` 都是可再生的物化视图——删了会被下次会话重写,密钥永远不落文件系统(A1)。 **数据流三条链路**(均在「发送/预热」时顺带完成,无需手动维护): | 链路 | 触发时机 | 产物 | 说明 | |------|---------|------|------| | 记忆物化 | 每次会话(`agent_id=cwd:<目录>` 作用域) | `/.paper/AGENT_MEMORY.md` | 分区 block + trusted+ 技能拼成单文件,每次覆写,文件头声明「请勿手改」 | | 中枢登记 | 写记忆文件时顺带(60s 节流) | `~/.paper/cwds.json` + `~/.paper/INDEX.md` | 登记该 cwd 出现过、最近活跃、记忆/技能计数、知识包路径;INDEX.md 按最近活跃排序 | | 会话注入 | 每次发送/预热 | 无文件产物,仅注入指引 | claude → systemPrompt append;copilot/opencode → prompt 前缀;指引为「先读 `./.paper/AGENT_MEMORY.md`」。目录常开(cwd 即作用域),不要求升格 Agent——升格只额外加人设 | **Skill Hub 五个来源**(统一扫成 Paper 技能,对所有 provider 生效;项目级技能只在 自己项目的会话里出现,不同项目允许同名): | 来源目录 | 归属 | 作用域 | 状态 | |---------|------|--------|------| | `~/.claude/skills/*/SKILL.md` | Claude CLI 安装 | 全局 | 既有 | | `~/.claude/commands/**.md` | Claude 自定义命令 | 全局 | 既有 | | `~/.copilot/prompts/*.md` | Copilot 自定义 prompt | 全局 | 既有 | | `~/.paper/skills/*/SKILL.md` | Paper 通用方法论 | 全局 | 新增(§4.2 中枢) | | `/.paper/agents/skills/*/SKILL.md` | 项目知识包 | 仅该项目 | §6.1 自蒸技能物化落点 | 技能包目录里除 `SKILL.md` 还有配套文件(脚本/SQL/参考)时,正文头部自动注明 「技能包目录:…」,agent 会去该目录读相对路径文件——与 §7「不借鉴清单」里 `resources/`/`references/` 一条并不冲突:**外部技能包**允许自带任意配套文件, 仅**自蒸技能**默认只生成正文 + `.memory.md`,物化面不主动扩大。 **与外部系统共存的边界**:若项目里已存在其它自进化引擎写入的 `/.paper/evo/` 或类似目录,Paper 不读不写,视为外来目录;`AGENTS.md`(root `CLAUDE.md` 的源) 同理只被 claude 系读取,Paper 既不生成也不消费——这类外来文件与 Paper 的物化视图 在同一 `.paper/` 目录下并存但互不相扰,是「provider 无关」(A7)在文件系统层面的 体现:不同 CLI/引擎各自维护自己的地盘,Paper 只负责自己那部分的读写与重生成。 **代价与对策**:把公理落到具体目录名意味着**目录结构本身也是需要维护的接口**—— 改名/挪位会破坏所有已注入的「先读 `./.paper/AGENT_MEMORY.md`」指引与已生成的 交叉引用(技能目录行里的相对路径)。对策:目录名一旦发布视为**稳定 ABI**, 只增不改(如需重排,走一次性迁移脚本 + 版本戳升级,复用 §4.2 已有的 `~/.paper/.schema.json` 版本戳升级机制,而非临时改名)。另一开放问题(`AGENTS.md` 只被 claude 系读取、copilot/opencode 读不到项目指引)已计入 §8 第 6 条, 不在本节重复展开。 ## 5. 相关工作对照 ### 5.1 MUSE-Autoskill:逐机制评估 | 机制 | MUSE-Autoskill | Paper As-Is | 评估 | |------|----------------|-------------|------| | 技能资产观 | 长期、经验感知、可测试的资产 | 长期资产 ✓(经验、测试缺失) | 部分对齐 | | 技能格式 | Anthropic Agent Skills(`SKILL.md` 目录,kebab-case) | 外部技能包同格式 ✓;**自蒸技能只存 DB,无 SKILL.md** | 差距 → §6.1 | | 检索注入 | **两级**:目录(名+述,~5-10K tokens/100 技能)注入 + `read_skill` 按需拉全文 | **一级**:trusted+ 技能**全文**内联进 AGENT_MEMORY.md | 差距 → §6.1(膨胀风险) | | 技能经验 | 每技能 `.memory.md` 跨任务累积教训/坑/格式怪癖 | 无(只有 uses 计数) | 差距 → §6.2 | | 验证门 | 代码技能 tests/ 沙盒必过才注册;失败触发 update 循环 | 无验证;质量靠整合与使用信号 | 差距 → §6.3(降档) | | 质量维护 | 改进(失败修订)/ 合并去重 / 修剪不用 | 整合(合并+重写+淘汰)+ 自动 evict ✓ | 对齐 | | 免审即用 | 注册即可召回 | trusted 即用 ✓ | 对齐 | | 负反馈 | 失败触发再生成 | 用户纠错 → revise/veto ✓(缺自动失败信号) | 部分对齐 | | 转移性 | 技能可被任何认识格式的 agent 加载 | provider 无关注入 ✓ + Skill Hub 五来源 ✓ | 对齐(甚至更广) | | 记忆分区 | 未强调 | 固定分区集 ✓(CLS:皮层 schema) | Paper 特有 | | 语义 evict | 未强调(长期记忆只增) | evict_blocks + 容量上限 ✓(CLS:遗忘机制) | Paper 特有 | | 离线巩固节律 | 未强调 | 手动触发 | 双方缺口 → §6.4(CLS 独有推论) | **结论**:管理面(合并/淘汰/免审/转移)Paper 已对齐或超出。共五个差距: **检索面(两级目录)、经验面(per-skill memory)、验证面(测试门,降档)来自 MUSE; 巩固节律(睡眠期)、保留权重(提取频率)来自 CLS**——构成 §6.1–6.5 的主体, §6.6 为独立小幅补强。 ### 5.2 其它先行系统速览(取长与规避) | 系统 | 核心机制 | 对 Paper 的启示 | 对其弱点的规避 | |------|----------|----------------|----------------| | **Voyager** (arXiv:2305.16291) | 只增不减的技能库 + embedding 检索,Minecraft 上验证技能复用带来能力复利 | 技能库路线的最早力证;「技能即代码/SOP 资产」同源 | 技能库**无界增长、无合并淘汰**——正是我们整合/evict 要解决的腐化问题(§4.3 已做) | | **Generative Agents** (arXiv:2304.03442) | 记忆流 + 周期性 reflection 升华高层结论;检索打分 = **recency × importance × relevance** | reflection 即我们的 reflect;其三因子检索分是 §6.5 保留权重(时近×提取频率×分区加权)的先行版本——importance ≈ 红线分区加权,relevance-by-usage ≈ uses | 其记忆流只增不减、靠检索排序掩盖膨胀;我们直接 evict(A3),注入预算更硬 | | **MemGPT** (arXiv:2310.08560) | OS 式分页:主上下文(常驻)/ 外部存储(按需换入) | 两级检索(§6.1)的另一独立佐证:常驻层必须紧凑,全文按需换入 | 其换页由模型自主函数调用驱动,复杂且易抖动;我们用「目录行 + agent 自主 Read」达成同效,零新增机制(CLI 天然有 Read) | | **Reflexion** (arXiv:2303.11366) | 失败后言语自反思,写入记忆供下次尝试 | 负反馈闭环(revise/veto + §6.2 lesson 通道)的同型机制 | 其反思绑定单任务重试;我们的 lesson 沉淀到技能级、跨任务生效 | 一句话综合:**先行系统各自验证了我们某一段设计的可行性;它们共同的未解问题 (记忆/技能只增不减导致的腐化与膨胀)恰是 Paper 用 A3/A5/A6 + 整合流程正面回答的部分。** ## 6. 目标设计(To-Be) > 注:本节各小节不再自带期数编号——实现分期唯一以 §10 Roadmap 为准(v2 曾在标题里 > 标 P 编号,与 Roadmap 排期打架,v2.1 起去除)。 ### 6.1 技能目录化注入(两级检索)——最高优先 **问题论证**:当前 AGENT_MEMORY.md 内联全部 trusted+ 技能正文。单个整合后技能 正文约 0.5–2K 字,call-back 现有 8 个活跃技能已 ~10K 字;按 A5(免审即用)技能只会 更多。全文内联使**注入成本 O(技能总字数)**,与 MUSE 指出的 500K/100 技能同一病灶; 在 CLS 座标里这是把整个情景库塞进「常驻摘要」,HEMA 的两级结构(常驻紧凑 + 按需检索) 是同一结论的第三方版本。 **设计**(沿用 MUSE 两级,落到 Paper 结构上): 1. **自蒸技能物化为 SKILL.md 目录**:`/.paper/agents/skills//SKILL.md` (frontmatter:name/description/keywords + 正文四段体例)。 - 与外部知识包、`~/.paper/skills/`、Anthropic 格式**完全同构**——Skill Hub 现有扫描器零改动即可吃;转移性免费获得(论文 §转移实验的同款收益)。 - **决策变更声明**:推翻早期「不做 skill 物化」决策。当时理由是避免双真源; 现按 A1 化解——**DB 仍是唯一真源**(maturity/uses/整合状态),SKILL.md 是 writeMemoryFile 同批重生成的物化视图,删改无效、下轮重写。 2. **AGENT_MEMORY.md 的技能段降为目录**:每技能一行 `- (触发词…):何时用+达成什么 → ./.paper/agents/skills//SKILL.md`, 注入指引追加一句「命中触发场景时先 Read 对应 SKILL.md 全文再执行」。 - 注入成本变为 **O(技能数 × 一行)**;正文按需读取(agent 本来就有 Read 工具, 不需要 MUSE 的专用 `read_skill`——这是 CLI agent 场景的天然优势)。 3. **淘汰与合并联动**:archived/rejected 技能不物化;整合改名/合并时删旧 SKILL.md 目录,但**同目录的 `.memory.md`(§6.2 技能经验)必须先按 merged_from 归并进新技能的 `.memory.md`**,再删目录——经验是跨任务积累的资产,不能随合并蒸发 (真源侧同步:`skill_note` 条目改挂新技能名)。 **代价与对策**:agent 可能不去读全文就凭目录行硬做 → 目录行必须含触发词与 一句话步骤概要(强目的的 description 本来就该做到,A4 已保证)。 混合内联(promoted 技能保留全文作快路径,呼应 CLS「高频提取巩固进快通路」) **默认关闭**:promoted 恰恰多为正文最长的技能(call-back 的 callback-health-diagnosis 即最大单体),默认内联会直接吃掉两级化的收益;仅当技能正文 ≤1K 字时才作为可选项, 上限 2 个。 ### 6.2 技能级经验:`.memory.md` **问题论证**:技能正文是「怎么做」,但跨任务的**执行经验**(已知坑、环境怪癖、 输入格式陷阱)目前只能靠整合时被动混入正文,粒度错位且易丢。 MUSE 的 per-skill `.memory.md` 把经验与技能绑定,加载技能时一并呈现; 在 CLS 座标里这是「围绕既有 schema 的情景痕迹」——落位快、待慢系统折叠。 **设计**: 1. 技能目录内增 `/.memory.md`(点号前缀:不算技能内容、不进 Skill Hub 导入)。 2. **写入口**:reflect 已回报 `used_skills`;扩展为 `used_skills: [{name, lesson?}]`——本轮若对该技能产生了新教训(失败原因、 参数怪癖、更优路径),蒸馏出一句话 lesson,追加进对应 `.memory.md`(带日期)。 3. **读入口**:AGENT_MEMORY.md 技能目录行尾标注「有经验注记」;注入指引说明 读 SKILL.md 时顺带读同目录 `.memory.md`。 4. **收敛**:`.memory.md` 超过 ~20 条时由整合流程折叠——可固化的教训升级进 SKILL.md 的步骤/验证段(情景痕迹巩固为 schema),其余合并压缩(最新为准)。 5. 真源仍在 DB:经验条目落 `agent_memory(kind='skill_note', label=)`, `.memory.md` 是物化视图(A1 一致)。 ### 6.3 验证信号(分级测试门)——降档借鉴 MUSE 的强门槛(tests 必过才注册)依赖其封闭沙盒。Paper 的技能多为**跨系统操作 SOP**(查 SLS、发 MR、改配置表),不可能离线单测。照搬会把 A5(免审即用)变回审批制。 **降档设计**(信号分级,不设注册门): 1. **体例校验(静态,蒸出即查)**:四段体例齐全?步骤里是否含至少一个真实落点 (路径/命令/表名的模式匹配)?不达标打 `unverified` 标记(仍可用,整合时优先重写/淘汰)。 2. **使用反馈(运行时)**:召回后回合失败/用户纠错 → reflect 的 revise/veto 闭环 (已有)+ 写入 `.memory.md`(§6.2)。uses 高且无负反馈 ≈ 通过了「真实世界测试」, 这正是 promoted 的语义——**把晋升解释为验证等级**(提取诱导巩固),而非权限等级。 3. **可选 tests/**:技能若自带可执行校验脚本(如 health_snapshot.py 自检), 整合时在 headless 会话里跑一次,失败触发重写。仅对带 tests/ 的技能启用。 ### 6.4 睡眠期自动巩固(CLS 新增) **问题论证**:CLS 的巩固发生在离线重放期,由积压驱动;Wake-Sleep Consolidated Learning 与 EVAF 都把「off-task 期重放」做成显式机制。Paper 目前的整合**只有手动 按钮**——快系统持续堆积,慢系统是否运转取决于用户是否记得点。这违背双系统模型的 基本节律,也是堆积腐化(问题定义 #1)的直接来源。 **设计**(条件触发的后台巩固,非定时器轰炸): 1. **积压触发**:自上次整合起,新增/变更 block ≥8 或 新技能 ≥3;或 (距上次整合 ≥7 天 **且** 存在至少 1 条未巩固变更)→ 标记该 cwd「待巩固」。 时间条件必须伴随变更:零积压时重写全库没有收益、只有 §8.4 的腐蚀风险。 2. **离线窗口**:该 cwd 无会话在跑、且 app 空闲(无前台回合)持续 ≥10 分钟 → 后台 headless 依次跑 记忆整合 → 技能整合(复用现有 consolidate 全套,含保护栏)。 3. **额度护栏**(自动巩固花的是用户的 LLM 额度,必须有节制): 总开关默认开、设置可关;claude 订阅额度高占用(usage gauge ≥80%)时本窗口跳过; 多 cwd 待巩固时串行执行且全局单飞;同 cwd 频率下限 ≥24h(§8.4(c))。 4. **可感知不打扰**:完成后一条 toast(「睡眠巩固:记忆 14→10 · 技能 +2 合并」)+ INDEX.md 记一行;Evo 面板显示「上次巩固」时间戳。失败静默,下个窗口重试。 5. **手动按钮保留**:语义变为「立刻巩固」,与自动机制共用管道与锁(同 cwd 单飞)。 ### 6.5 保留权重 = 时近 × 提取频率(A3 第③层精化,CLS 新增) **问题论证**:当前容量 evict 纯按 `updated_at`(最旧先淘汰)。CLS 的巩固强度由 **提取频率**主导——一条很久没被改写、但每次会话都在起作用的口径(如金额单位红线), 按纯时近制会被错误淘汰。这是 A3「最新语义为准」的一个已知盲区。 **设计**: 0. **作用域限定**:保留权重只作用于 A3 第③层(容量淘汰)。第②层语义 evict (被最新对话明确推翻)**无条件执行、不受 uses 保护**——否则「高频旧口径」会 压过「用户刚刚的更正」,直接违背 A3 公理。 1. eviction score = `w1·recency_rank + w2·uses_rank`(初值 w1=0.7, w2=0.3; uses 高者受保护,类比 promoted 技能不可淘汰)。先例佐证:Generative Agents 的 检索三因子 recency × importance × relevance——本设计的 时近 × 提取频率 × 红线分区加权(§6.5.3)与之逐项同构,只是用途从「检索排序」换成「保留淘汰」。 2. **前提缺口**:blocks 目前没有使用信号。补法与 used_skills 同构——reflect 回报 `used_blocks: [label]`(本轮真正影响了作答的记忆块),落 `agent_memory.uses`。 成本:reflect 提示词 +1 字段,蒸馏负担可忽略。 3. 「风险与红线」分区加权保护(w2 上浮):红线类记忆被误淘汰的代价不对称。 ### 6.6 记忆侧其余(维持现状,小幅补强) 分区容量配额(如「其他」区 ≤5 条,防未归区堆积);evict 决策写入 INDEX.md 变更行(可审计)。 ## 7. 不借鉴清单(明确说不,防止范围蔓延) | 机制 | 出处 | 不借鉴理由 | |-----------|------|-----------| | 专用 `skill_create`/`read_skill`/`update_skill` 工具 | MUSE | CLI agent 已有 Write/Read/Edit;技能创建走 reflect 蒸馏 + 整合重写,不给 agent 直接造技能的工具(防技能库被单轮对话污染,蒸馏是我们的质量闸门)。 | | 注册前强制测试门 | MUSE | 与 A5 冲突;SOP 类技能不可离线测。降档为 §6.3 信号分级。 | | resources/ references/ 完整目录规范 | MUSE | 允许存在(外部技能包已在用),但自蒸技能不主动生成——正文四段体例 + .memory.md 已够,避免物化面扩大。 | | 向量检索情景库(embedding recall) | HEMA/eMEM | 单 cwd 资产规模(几十条)远未到需要向量召回的量级;目录行 + agent 自主 Read 已够。规模跨过阈值前引入只添基础设施负担。 | | 参数化巩固(把记忆蒸进模型权重) | EVAF 等 | Paper 不掌握模型权重(provider 无关是公理 A7);巩固只发生在数据层。 | ## 8. 风险与开放问题 1. **两级检索的读取遵从性**:agent 不读全文就动手。缓解:目录行含步骤概要 + promoted 快路径内联;后续可在 reflect 中检测「未读技能却命中触发词」作为负信号。 2. **物化一致性**:SKILL.md 目录与 DB 漂移(用户手改/外部工具写入同名目录)。 规则:`agents/skills/` 下**自蒸技能**目录头部标注自动维护;同名冲突时外部文件让位 (改名导入),DB 真源不动摇。 3. **跨项目技能上移**:cwd 技能何时升为 `~/.paper/skills/` 通用方法论? 暂定人工动作(Evo 面板「升为通用」),不自动——通用化错误的代价高于收益。 4. **重写腐蚀(有文献依据的新风险)**:*Useful Memories Become Faulty When Continuously Updated by LLMs*(arXiv:2605.12978)实证:LLM 连续重写会让记忆的 事实性逐步劣化——而我们的整合正是「LLM 全量重写 + 事务替换」,且 §6.4 会把重写 频率从手动提到自动。**对策**:(a) 整合前 DB 级快照(`agent_memory`/`agent_skill` 按 agent_id 导出 JSON 存 `~/.paper/snapshots/`,保留最近 N 份,可一键回滚)。 类别说明:快照是**审计工件**而非知识沉淀或物化视图——不受 A6 约束,也不属于 A1 的「可再生视图」(历史态本就不可再生,快照正是为此存在),但同样遵守 A1 的不落密钥底线; (b) 「不发明输入外新事实」保持为提示词硬规则;(c) 睡眠巩固设频率下限 (同 cwd ≥24h 间隔),避免高频重写累积漂移;(d) promoted/红线类的保护栏已在。 5. **评测口径**:我们没有 SkillsBench。可行替身:整合前后同任务重放对比、 技能召回率(used_skills / 会话数)、注入 token 曲线、快照 diff 的事实性抽查 (对 8.4 的直接度量)。完整协议见 §9。 6. **`AGENTS.md` 跨 provider 碎片化**(§4.4 目录设计暴露的新问题):项目指引文件 `AGENTS.md` 目前只被 claude 系读取(对应 root `CLAUDE.md`),copilot/opencode 并不消费同一份项目指引,导致「同一 cwd、不同 provider 看到的项目上下文不一致」 ——这与 A7(provider 无关)的精神有张力,但**不是** Paper Evo 资产层的问题: `AGENTS.md` 是外来文件(Paper 不生成不消费,见 §4.4「与外部系统共存的边界」), 真正需要 provider 无关的是 Paper 自己的 `AGENT_MEMORY.md`/`SKILL.md`(已通过 systemPrompt append / prompt 前缀双通道解决,§4.2)。此项暂定**不修复**: 若要修,方案是给非 claude provider 也建一条「读 `AGENTS.md`」的注入指引, 但这会让 Paper 反向依赖一个自己不产出的外来文件格式,风险是外来文件一旦缺失 或格式变化即注入失败——留作开放问题,不纳入 Roadmap。 ## 9. 评测协议:Evo-Eval(P5 的完整定义) 没有 SkillsBench/LongMemEval 的实验条件,但可以把它们的**能力维度**移植成 本地可执行的轻量协议。LongMemEval 把长期记忆拆成五项能力:信息抽取、 跨会话推理、时间推理、**知识更新**、**拒答**;LongMemEval-V2 进一步把目标 定义为「memory 让 agent 成为有经验的同事」——与 Paper「cwd 资产 = 项目老手」 的愿景同构。据此定义五个可本地度量的指标,全部**离线可跑**(headless 会话 + DB/文件断言,不依赖外部评测服务): | # | 指标 | 方法 | 对应能力/风险 | 通过线(初值) | |---|------|------|--------------|---------------| | E1 | **记忆保持** | 种子 block 注入后,隔 K 个无关会话提问其内容,headless 判卷是否命中 | LongMemEval·信息抽取 | 命中 ≥90% | | E2 | **知识更新** | 会话中明确更正某口径 → 检查旧 block 被 evict/覆盖,且下一会话不再复述旧口径 | LongMemEval·knowledge update;A3 | 旧口径复现 = 0 | | E3 | **事实保真** | 整合前后快照 diff,抽样 n 条断言逐条溯源到输入(无中生有 = fail) | 拒答/不臆造;§8.4 腐蚀 | 无来源断言 ≤2% | | E4 | **技能召回** | 构造命中触发词的任务,检查 agent 是否读取对应 SKILL.md 并按步骤执行(used_skills 回报佐证) | 程序性记忆有效性;§6.1 读取遵从 | 召回率 ≥70% | | E5 | **注入预算** | AGENT_MEMORY.md 字节数随资产规模的曲线(每次整合后记录进 INDEX.md) | 问题定义 #2;§6.1 | 次线性增长 | 执行安排:E5 零成本随整合自动记录;E1/E2/E4 做成可手动触发的自检脚本 (headless,一次 ~3-5 个会话额度);E3 绑定快照机制(§8.4),整合后抽查。 不追求统计显著——这是**回归护栏**(防设计迭代把某能力改坏),不是论文实验。 ## 10. Roadmap | 期 | 内容 | 来源 | 验收 | |----|------|------|------| | P1 | 技能物化 SKILL.md + AGENT_MEMORY.md 技能段目录化(混合内联默认关) | MUSE/HEMA | call-back 技能段注入体积下降 ≥60%(按纯目录模式计);技能召回行为无回归 | | P2 | `.memory.md` 技能经验(reflect lesson 通道 + 整合折叠) | MUSE/CLS | 技能连续使用 3 次后 .memory.md 出现有效注记 | | P3 | 睡眠期自动巩固(积压+空闲触发,≥24h 频率下限)+ 整合前快照/回滚 | CLS + 8.4 | 无人工干预下待巩固 cwd 在 48h 内被自动整合;快照可回滚 | | P4 | 保留权重(used_blocks 信号 + 分区加权)+ 验证信号分级(体例校验 / 可选 tests/) | CLS + MUSE | 高 uses 记忆在容量淘汰中存活;unverified 技能在下次整合中被优先处理 | | P5 | Evo-Eval 评测协议落地(§9:E1 保持 / E2 更新 / E3 保真 / E4 召回 / E5 预算) | LongMemEval 系 | E5 随整合自动记录;E1-E4 自检脚本可跑并达通过线 | ## 11. 参考 **理论** - McClelland, McNaughton & O'Reilly (1995). *Why There Are Complementary Learning Systems in the Hippocampus and Neocortex*. Psychological Review.(CLS 原始提出:快慢双系统与灾难性干扰论证) - Kumaran, Hassabis & McClelland (2016). *What Learning Systems Do Intelligent Agents Need? Complementary Learning Systems Theory Updated*. Trends in Cognitive Sciences.(CLS 面向智能体的更新:重放、schema 一致快落位) **认知架构与先行系统** - CoALA: Sumers et al., *Cognitive Architectures for Language Agents* (arXiv:2309.02427):工作/语义/情景/程序性记忆分类学(§3.3 定位框架)。 - Voyager (arXiv:2305.16291):技能库路线最早力证;其无界增长弱点是我们整合/evict 的反面教材(§5.2)。 - Generative Agents (arXiv:2304.03442):reflection 机制 + recency×importance×relevance 检索三因子(§6.5 保留权重的先行版本)。 - MemGPT (arXiv:2310.08560):OS 式分页两级记忆(§6.1 的独立佐证)。 - Reflexion (arXiv:2303.11366):言语自反思负反馈(revise/veto 与 lesson 通道的同型机制)。 **评测** - LongMemEval (arXiv:2410.10813):长期记忆五能力分解(信息抽取/跨会话/时间/知识更新/拒答),§9 协议的能力模板。 - LongMemEval-V2 (arXiv:2605.12493):「memory 使 agent 成为有经验同事」的评测定位(与 cwd 资产愿景同构)。 - LoCoMo (arXiv:2402.17753):多会话长程对话记忆基准。 **工程对照** - MUSE-Autoskill (arXiv:2605.27366):技能生命周期、两级目录检索、per-skill `.memory.md`、测试门、Agent Skills 格式转移性。 - HEMA (arXiv:2504.16754):常驻紧凑摘要 + 按需情景库的两级记忆(§6.1 的第三方佐证)。 - Wake-Sleep Consolidated Learning (arXiv:2401.08623)、EVAF (arXiv:2606.29916):显式睡眠期/离线重放巩固(§6.4 依据)。 - eMEM (arXiv:2606.03374):海马痕迹节点 / 皮层要点节点二分(§3.2 映射的同类实现)。 **风险依据** - *Useful Memories Become Faulty When Continuously Updated by LLMs* (arXiv:2605.12978):LLM 连续重写腐蚀记忆事实性(§8.4 快照/频率下限的直接动因)。 **Paper 内部** - `design/paper-cli-evo.html`(两级知识布局与真源原则)、`design/agent-evo.html`(Evo 面板规格)、`CLAUDE.md`(知识体系小节)。 --- ## 附:审校记录 ### v2.1 审校(自洽性 / 合理性) **自洽性修复** 1. A3 曾把 To-Be 的保留权重写成现状,与 §6.5「现行纯按 updated_at」自相矛盾 → A3 改为分层表述并标注现状/To-Be;同时明确三层淘汰的优先级。 2. §5 结论「四个差距构成 §6 全部内容」计数错(验证门也是表中差距)→ 改为五个差距 + §6.6 独立补强。 3. §6 各节标题自带 P 编号与 §9 Roadmap 期数冲突(如验证信号标 P3、Roadmap 排 P4)→ 标题去编号,期数唯一以 Roadmap 为准。 4. §6.1「合并时删旧目录」会连带删掉 §6.2 的 `.memory.md` 经验 → 增加合并时经验按 merged_from 归并的规则(真源侧 skill_note 同步改挂)。 5. §6.4 时间触发(≥7 天)单独成立时零积压也会全库重写,与 §8.4 降低无谓重写的对策矛盾 → 时间条件必须伴随 ≥1 条未巩固变更。 6. A6「不注入的资产不存在」与 §8.4 快照字面冲突;A1「一切文件皆可再生视图」与快照(历史态不可再生)类别混淆 → A6 限定为知识沉淀、快照定义为审计工件(仍守不落密钥底线)。 7. §6.5 未写明与语义 evict 的优先级——uses 保护若挡住 evict_blocks 会违背 A3 → 新增作用域限定:语义 evict 无条件优先。 **合理性补强** 8. §6.1 混合内联 promoted 与 P1 验收(≥60% 缩减)张力:promoted 恰是正文最长的技能 → 混合内联默认关闭、仅 ≤1K 字者候选且上限 2 个;验收按纯目录模式计。 9. §6.4 自动巩固消耗用户 LLM 额度却无节制手段 → 新增额度护栏:总开关可关、usage ≥80% 跳过、多 cwd 串行全局单飞、≥24h 频率下限。 ### v3 演化与审校(2026-07-24) **演化增量** - §3.3 CoALA 记忆分类学定位:blocks=语义、skills=程序性、工作记忆=注入层;**情景记忆薄化**从「A6 的副作用」升级为有辩护的设计选择(原始情景在 CLI transcript 从未丢失,note 只是无功能的中间层;保留的情景层 = 有注入路径的 `.memory.md`)。 - §5.2 先行系统速览:Voyager/Generative Agents/MemGPT/Reflexion 各自佐证一段设计,其共同未解问题(只增不减的腐化膨胀)恰是 A3/A5/A6+整合正面回答的部分。 - §6.5 补 Generative Agents 三因子先例(recency×importance×relevance ↔ 时近×提取频率×分区加权)。 - §9 Evo-Eval:把 LongMemEval 五能力移植成五个本地可跑指标(E1 保持/E2 更新/E3 保真/E4 召回/E5 预算),定位为回归护栏而非论文实验;Roadmap P5 落到实处。 **v3 自查** 10. 情景记忆缺位与 A6 的表面冲突 → §3.3 显式辩护(transcript 为原始情景层,删的是无注入路径的中间层),A6 无需修改。 11. 章节重编号(评测协议插为 §9,Roadmap→§10、参考→§11)后全文交叉引用已扫描更新;v2.1 审校记录中对旧「§9 Roadmap」的表述为历史陈述,保留原文。 12. Evo-Eval 的 headless 判卷本身消耗额度 → 协议标注单次成本(~3-5 会话额度)且 E5 零成本自动化,E1-E4 仅手动触发,与 §6.4 额度护栏原则一致。 ### v3.1 补充(2026-07-24) - 新增 §4.4「工程性实践的目录结构设计」:内容取自用户提供的 Claude Artifact (`0e11a6b3-07d5-44ae-bb97-2dfa35e3ff1f`,原稿用产品旧称「Chaya」,已统一改写为 「Paper」并与全文术语对齐)。补的是 §4.2 两级布局骨架之下的落地颗粒度: 中枢 `~/.paper/` 与知识包 `/.paper/` 的完整目录树、三条数据流链路 (记忆物化/中枢登记/会话注入)的触发时机与产物、Skill Hub 完整五来源表 (含 `~/.claude/skills`、`~/.claude/commands`、`~/.copilot/prompts` 等既有来源, 非 Paper 独有部分之前未在正文列全),以及与外部自进化引擎(如遗留的 `/.paper/evo/`)、`AGENTS.md` 等外来文件共存互不相扰的边界约定。 与既有正文的关系:不改变 §4.1/§4.2/§6.1/§6.2/§8.4 的任何结论,纯粹补全落地细节, 故编号为 §4.4 而非另起新章。 ### v3.2 升级(2026-07-24) - **动因**:用户追问「文档还保持论文级别吗」,自查发现 v3.1 新增的 §4.4 相对 全文其它章节偏描述性(有目录树/表格,缺问题论证与理论落点),与 §6 系各节的 「问题论证→设计→代价与对策」三段式论证密度不对齐(虽仍与 §4.1-4.3 的描述性 体例一致,不算破格,但可以更严谨)。 - **升级内容**: 1. §4.4 标题改为「文件系统即公理的物理投影」,开篇加入**问题论证**——把 「为什么是这套目录切法」还原为 A1+A7 推出的三个必答设计问题(物化粒度/ 目录切分维度/全局-局部命名空间隔离),并引入 CoALA 工作记忆定义 + MemGPT 分页类比给出理论落点(呼应 §5.2 已引用的 MemGPT 对照)。 2. 新增「设计问题→回答→对应公理/理论」五行映射表,把目录树里的每个关键节点 (中枢/知识包分离、目录级粒度、常驻/按需、审计工件、外来文件边界)显式挂回 A1/A2/A6/A7 与 CoALA/MemGPT,避免目录设计看起来是随手的工程习惯。 3. 新增**代价与对策**段:目录名一旦发布即视为稳定 ABI(只增不改,复用 `~/.paper/.schema.json` 版本戳升级机制做迁移),呼应全文「设计决策需自带 代价与对策」的一贯要求。 4. §8 新增风险 #6:`AGENTS.md` 跨 provider 碎片化——诚实记录 §4.4 目录设计 暴露但**明确不修**的一个开放问题(外来文件格式,修复会引入反向依赖风险), 避免只讲优点不讲局限。 - **未改动**:§4.4 的目录树、数据流表、Skill Hub 来源表本身内容不变,只是补齐 论证外壳;不影响 Roadmap 排期与其余章节结论。