From a454b17c49ce2c8aa7a74772470ca4321205bed9 Mon Sep 17 00:00:00 2001 From: "jinli.yl" Date: Tue, 19 May 2026 11:12:35 +0800 Subject: [PATCH] up --- docs4/reme4_report.md | 462 +++++++++++++++++++++++++++++++++++------- 1 file changed, 390 insertions(+), 72 deletions(-) diff --git a/docs4/reme4_report.md b/docs4/reme4_report.md index 370b8139..d15b0527 100644 --- a/docs4/reme4_report.md +++ b/docs4/reme4_report.md @@ -1,56 +1,40 @@ -# ReMe 新版本:可自进化的个人知识与记忆引擎 +# ReMe:把本地 Markdown 自进化成知识图谱的个人记忆引擎 > 面向 Leader / 决策者的能力报告 -> 关键词:个人知识库 · 记忆自进化 · 多模检索 · Agent 接入 · 本地优先 +> 关键词:个人记忆 · 记忆自进化 · 多模检索 · Agent 接入 · 本地优先 --- ## 一、引言:为什么要做新版本 -### 1.1 ReMe 新版本 的一句话定位 +### 1.1 ReMe 的一句话定位 > **ReMe 是一个把本地 Markdown 自进化成知识图谱的个人记忆引擎。** 这句话的内在逻辑是**递进**而非并列——三个支柱按"载体 → 机制 → 结果"层层咬合: -- **本地 Markdown(载体)** → 所有记忆都是普通 .md 文件,用户可读、可备份、可迁移,Obsidian 直接打开,对抗黑盒。 +- **本地 Markdown(载体)** → 所有记忆都是 Obsidian 兼容的 .md 文件——YAML front matter、四种 wikilink(`[[X]]` / + `[[X#anchor]]` + / `[[X|alias]]` / `![[X]]`)、Dataview 风格 `predicate:: [[X]]` 语义关系全部沿用社区约定。用户可读、可备份、可迁移,对抗黑盒。 - **自进化(机制)** → 不需要用户手工整理,Agent 在后台让笔记自己长出结构。这一点把 ReMe 同时与"手动建图的 Obsidian"和"扁平存储的 Mem0"拉开。 -- **知识图谱(结果)** → 自进化的产出物不是一堆扁平笔记,而是一张通过 wikilink 互相串联、可视化浏览、可多模检索的图。 +- **知识图谱(结果)** → 自进化的产出物不是一堆扁平笔记,而是一张可被**多模 + 渐进式检索**消费的图:向量 + 关键词(中文 + BM25)+ + 图谱三路 RRF 融合,返回时通过 1-hop 邻居 meta 让 Agent"先看目录、再决定要不要展开正文",不像传统 RAG 那样一次性把 top-K + 切片塞进上下文。 +- **记忆分层(形态的物化)** → 记忆按层次分为四类:`resource/`(原始素材)、`daily/`(日记事件)、`knowledge/`(主题长期知识)、 + `proactive/`(Agent 主动洞察);正交地按内容性质又分个性化、程序化、知识类三种,写入策略和检索权重各有差异。 +- **被集成而非内置(分发形态)** → ReMe 不做独立 Agent 产品,而是作为**能力**被任意 Harness 调用:SDK 深度集成(qwenpaw / + AgentScope)、MCP Tool(Claude Code / Cursor / Cherry Studio)、CLI + skill.md 三条路径并行,记忆跟着用户走,不绑定任何上层框架。 -它同时**可被任意 Agent / Harness 框架接入**——qwenpaw、Claude Code、Cursor 都可以把 ReMe 当作能力调用,不绑定任何特定 Agent -产品。 - -### 1.2 为什么是现在:Agent 时代的记忆缺口 - -模型能力快速趋同的当下,差异化已经从模型本身转移到**「这个 Agent 是不是了解我」** -:它知不知道我的工作背景、过往项目、失败教训?能不能记住我半年前提过的偏好,并在今天的对话里自然用上? - -**模型是大家共享的,记忆是每个用户独有的。** 长期、可信、可进化的个人记忆,才是 Agent 时代真正的差异化护城河。 - -而当前业界的记忆方案 —— 无论是 Memo、Mem0 还是 Letta —— 都存在三个共性问题,正好对应 ReMe 新版本 的三个核心主张: - -| 业界痛点 | ReMe 新版本 的回应 | -|-----------------------------------|------------------------------------------------------| -| **黑盒不可读**:记忆存在专有数据库里,用户看不到、改不了 | 本地 Markdown,Obsidian 直接打开 | -| **不可移植**:换 Agent 框架就要重新积累,记忆被产品锁死 | 任意 Harness 接入,记忆跟着用户走 | -| **缺乏自进化**:只是写入 + 检索,不会自己整理、归类、关联 | auto-memory / auto-dream / auto-link 三件套合力长成可浏览的知识图谱 | - -### 1.3 老版本 → 新版本的关键升级 - -| 维度 | 老版本 | 新版本 | -|------------|----------------------|--------------------------------------------------| -| 记忆动作 | 只是把对话存下来 | 主动整理、归档、关联,长成可浏览的知识图谱 | -| 检索方式 | 单一向量检索 | 向量 + 关键词(中文 BM25)+ 图谱 多模融合 | -| 与 Agent 关系 | ReMe 内置 Agent | ReMe 作为能力被 qwenpaw / Claude Code / 其它 Harness 接入 | -| 底层依赖 | sqlite / chroma 等三方库 | 自研轻量内核,跨平台稳定 | -| 数据格式 | 内部数据库 | Obsidian 兼容的 Markdown 文件 | +支撑这一切的是**自研轻量索引内核**——纯 Python(后期可以使用rust重写索引内核) + 文件持久化,无 sqlite / chroma +等原生扩展依赖,老旧 Linux/Win 也能稳跑,这是 ReMe 能"被部署到大量异构用户机器"的工程前提。 --- ## 二、产品全景图 -### 2.1 一张图看 ReMe 新版本 +### 2.1 一张图看 ReMe ``` ┌─────────────────────────────────────────────────────────┐ @@ -161,7 +145,7 @@ ReMe 不把对话一股脑塞进数据库,而是让记忆**像人脑一样有 ## 四、记忆的自进化(核心差异化) -> 这是新版本最重要的能力,也是和市面所有「记忆即数据库」产品的根本分野。 +> 这是 ReMe 最重要的能力,也是和市面所有「记忆即数据库」产品的根本分野。 > > **ReMe 的记忆不是被动存的,是主动长成知识图谱的。** @@ -223,7 +207,7 @@ ReMe 不把对话一股脑塞进数据库,而是让记忆**像人脑一样有 ### 5.1 三路融合的混合检索 -ReMe 新版本 同时跑三种检索通路,结果通过 RRF(Reciprocal Rank Fusion)排序融合: +ReMe 同时跑三种检索通路,结果通过 RRF(Reciprocal Rank Fusion)排序融合: - **向量检索** —— 捕捉语义相似度("钴" ≈ "锂电正极原料") - **关键词检索(BM25)** —— 精确匹配,对中文友好("宁德时代" 一定要命中) @@ -239,13 +223,14 @@ ReMe 新版本 同时跑三种检索通路,结果通过 RRF(Reciprocal Rank ### 5.2 渐进式展开 -传统 RAG 是一次性把 top-K 切片塞进上下文,token 利用率低,而且经常带进不相关的噪音。ReMe 的检索(`reme4/steps/common/search.py`)是**分跳**的,且每一跳的"信息密度"刻意不同: +传统 RAG 是一次性把 top-K 切片塞进上下文,token 利用率低,而且经常带进不相关的噪音。ReMe 的检索( +`reme4/steps/common/search.py`)是**分跳**的,且每一跳的"信息密度"刻意不同: - **第一跳:直接命中的切片**——返回 chunk 全文 + 章节骨架。 - **第二跳:1-hop 邻居**——只返回邻居的 path + meta(title/tags)+ 边的语义(predicate/anchor),**不展开正文**。 - **第 N 跳:Agent 主动追问**——基于二跳的"目录",挑出真正相关的邻居,再发起新一次 search 拿正文。 -#### 一个具体例子:分析师查询"钴的下游应用" +**一个具体例子:分析师查询"钴的下游应用"** 第一跳直接命中 `knowledge/产业链/钴.md` 的某一段切片,answer 里这一段长这样: @@ -271,14 +256,16 @@ ReMe 新版本 同时跑三种检索通路,结果通过 RRF(Reciprocal Rank 注意第二跳的信息只有"路径 + 标题 + 标签 + 边的 predicate/anchor",**没有邻居正文**。这是关键设计: -- 一次检索就让 Agent 看到"这个主题周围长什么样"——上游是刚果(金)、嘉能可,下游是三元正极,被锂电产业链当作 upstream 引用,最近还在 3 月 18 日的宁德调研里被提到。 +- 一次检索就让 Agent 看到"这个主题周围长什么样"——上游是刚果(金)、嘉能可,下游是三元正极,被锂电产业链当作 upstream 引用,最近还在 + 3 月 18 日的宁德调研里被提到。 - Agent 可以基于这份"目录"判断哪个邻居才是用户真正想要的,再调一次 search 拉对应文件的正文(比如挑 `三元正极.md` 的细节)。 -#### 为什么不一次把邻居正文也带回来 +**为什么不一次把邻居正文也带回来** -如果第二跳直接返回正文,三跳网络很容易把上下文撑爆。当前实现里 `max_links_per_direction` 默认 10,单跳最多吐出 10 个 outlink + 10 个 inlink 的 meta,每条只占一行,**整张二跳目录的成本不到一个 chunk 的 token**。 +如果第二跳直接返回正文,三跳网络很容易把上下文撑爆。当前实现里 `max_links_per_direction` 默认 10,单跳最多吐出 10 个 +outlink + 10 个 inlink 的 meta,每条只占一行,**整张二跳目录的成本不到一个 chunk 的 token**。 -#### 工程层面的关键参数 +**工程层面的关键参数** - `candidate_multiplier=3.0`:候选池预拉 `limit*3` 条(最多 200),给 RRF 融合留余量。 - `min_score`:过低分切片直接丢弃,避免噪音。 @@ -286,13 +273,14 @@ ReMe 新版本 同时跑三种检索通路,结果通过 RRF(Reciprocal Rank - `max_links_per_direction=10`:单方向(出/入)最多展示几个邻居,防爆。 **用户体验**:检索像"翻知识网络"——先看一眼周边目录,再决定要不要深入某一条线,而不是"拉一坨切片塞进上下文"。 -**工程价值**:上下文窗口永远只装最相关的部分,token 成本可控;Agent 也能更精确地解释"我为什么知道这个"——因为它能引用 predicate=upstream、anchor=#应用 这种带语义的边。 +**工程价值**:上下文窗口永远只装最相关的部分,token 成本可控;Agent 也能更精确地解释"我为什么知道这个"——因为它能引用 +predicate=upstream、anchor=#应用 这种带语义的边。 ### 5.3 关键词索引的工程价值 很多人忽视:**做中文知识库,关键词检索比向量更重要**。 -ReMe 新版本 自研增量 BM25 倒排索引,配合 jieba 中文分词: +ReMe 自研增量 BM25 倒排索引,配合 jieba 中文分词: - 增量更新:新增/删除文件无需重建全索引。 - 跨平台:纯 Python + 文件落盘,没有 sqlite/chroma 这类原生扩展。 @@ -471,28 +459,368 @@ jobs: ### 9.1 金融场景:产业链知识库 -**输入**:研报、调研纪要、行业新闻、对话讨论。 -**产出**:按"产业链 → 公司 → 产品"组织的知识图谱,每个节点都有可追溯的原始素材。 -**体验**: +**主角**:王分析师,新能源行业研究员,每天要处理 10+ 篇研报、数十条产业新闻、若干场公司调研。 +**痛点**:信息散落在飞书文档、PDF 研报、微信群消息、调研纪要里,"上次调研宁德时代时聊到的钴价话题"再也找不回来。 -- 分析师问"锂电下游有哪些应用",ReMe 沿图谱渐进展开,从"锂电"到"动力电池/储能/消费电子",再到具体公司案例。 -- 发生重大事件时,ReMe 主动在 proactive 笔记里推送"这条新闻和您 3 月份关注的 XX 主题相关"。 +#### 一周内 ReMe 自动织出的产业链图谱 -### 9.2 个人工作 & 生活 +**Day 1(周一)盘后**:王分析师把今天看到的 3 篇研报扔给 Agent,又口述了对刚果(金)矿权变更的看法。 -**输入**:日常对话、会议记录、学习笔记、思考片段、阅读资料。 -**产出**:daily 流水 + knowledge 主题库 + proactive 主动建议。 -**体验**: +``` +对话原文(片段): +> 今天嘉能可发了三季报,钴产量同比下滑 18%…… +> 刚果(金)那边的政策变化,对洛阳钼业 KFM 矿的影响要重点跟…… +> 下游三元正极厂商已经开始转向高镍低钴方案…… +``` -- 使用 1 周:daily 已经在帮你做"今天发生了什么"的自动化日记。 -- 使用 1 个月:knowledge 库开始浮现你高频关注的主题("工作流"、"团队管理"、"读过的书")。 -- 使用 3 个月:知识库已经长成你"第二大脑",Obsidian Graph View 打开是密集的网状结构。 +ReMe 当晚自动落到: -### 9.3 Agent 长期陪伴 +``` +daily/20260518/ +├── 嘉能可三季报点评.md ← Auto-Memory 拆出的事件 1 +├── 刚果金矿权政策跟踪.md ← 事件 2 +└── 三元正极高镍化趋势.md ← 事件 3 +``` -- Agent 跨会话记得用户偏好、过往任务、失败教训。 -- **任务复用**:相似任务自动召回过去的程序化记忆作为参考("上次修这类 bug 你试过 A 方案,没成功;试过 B 方案,成了")。 -- **个性化进化**:Agent 越用越懂用户,差异化体验来自 ReMe 维护的个人记忆,而不是模型本身。 +**Day 3(周三)夜间 Auto-Dream 触发**:把零散事件抽成主题笔记。 + +``` +knowledge/产业链/ +├── 钴.md ← 新建:聚合 3 天里所有提到「钴」的内容 +├── 锂电产业链.md ← 新建:上下游全链路总览 +└── 三元正极.md ← 新建:技术路线变化 +knowledge/公司/ +├── 嘉能可.md ← 新建 +├── 洛阳钼业.md ← 新建 +└── 宁德时代.md ← 已有,本次新增「高镍化决策」一节 +``` + +**Day 7(周日)打开 Obsidian Graph View**:一周不动手整理,图谱已经长成下面这样。 + +``` + ┌─────────────┐ + ┌────────►│ 锂电产业链 │◄────────┐ + │ └──────┬──────┘ │ + │ upstream │ │ upstream + │ │ contains │ + ┌───────┴──────┐ ▼ ┌──────┴──────┐ + │ 钴矿 │ ┌─────────┐ │ 锂矿 │ + │ (刚果金) │◄──┤ 钴 ├────►│ (盐湖) │ + └───────┬──────┘ └────┬────┘ └─────────────┘ + │ producer │ downstream + ▼ ▼ + ┌──────────────┐ ┌──────────────┐ + │ 嘉能可 │ │ 三元正极 │◄── 高镍化趋势 + │ 洛阳钼业 │ └──────┬───────┘ + └──────────────┘ │ used_by + ▼ + ┌──────────────┐ + │ 宁德时代 │ ← daily/0318 调研纪要 + │ 亿纬锂能 │ ← daily/0512 电话会 + └──────────────┘ +``` + +每条边都对应文件里的一句 `predicate:: [[X]]`,每个节点点开就是 Markdown 笔记,每段笔记都能反向追溯到原始 daily 事件。 + +#### 一次真实检索:从一个问题到完整产业链上下文 + +**Day 8 早上**,王分析师问:"**钴价下跌 20% 对下游有什么影响?**" + +ReMe 渐进式返回(截取关键部分): + +``` +========== 第一跳:直接命中 ========== +knowledge/产业链/钴.md:42-78 [score=0.0234] +# 钴 / ## 价格敏感性 +钴在三元正极成本中占比约 25%…… + + → outlinks (5): + → knowledge/产品/三元正极.md via predicate=downstream + → knowledge/公司/嘉能可.md via predicate=producer + → knowledge/公司/洛阳钼业.md via predicate=producer + → knowledge/产品/磷酸铁锂.md via predicate=substitute + → daily/20260518/三元正极高镍化趋势.md via plain + ← inlinks (3): + ← knowledge/产业链/锂电产业链.md via predicate=upstream + ← daily/20260318/宁德调研纪要.md via plain + ← daily/20260512/亿纬电话会.md via plain + +========== 第二跳:Agent 主动展开「三元正极」「磷酸铁锂」 ========== +knowledge/产品/三元正极.md:15-44 +# 三元正极 / ## 高镍低钴路线 +2025 年起主流厂商加速 8 系/9 系产品…… +``` + +Agent 拿到这份"目录 + 重点正文",直接生成了一份**带产业链上下游、带历史调研引用、带主动洞察**的回答——而王分析师没做任何手工整理。 + +#### proactive:主动洞察推送 + +每天早上 9:00,ReMe 在 `proactive/20260519.md` 里写: + +```markdown +--- +title: 早间洞察 · 2026-05-19 +tags: [proactive, 早报] +--- + +## 与您近期关注主题相关的事件 + +- **嘉能可宣布刚果(金) Mutanda 矿复产** ← 关联 [[钴]] / [[嘉能可]] + 上周您在 [[daily/20260518/嘉能可三季报点评]] 中标注「关注复产节奏」。 + → 复产对钴价的边际影响估计 -5% 到 -8%,可能影响 [[三元正极]] 成本。 + +- **宁德时代发布麒麟电池新版本** ← 关联 [[宁德时代]] / [[三元正极]] + 上次调研([[daily/20260318/宁德调研纪要]])中提到的高镍方案已落地。 +``` + +**这就是金融场景下 ReMe 的核心价值**:分析师只负责"看 + 说",知识图谱自己长出来;当行业事件发生时,ReMe 主动把"新事件 ↔ 旧上下文"的连线送到分析师面前。 + +--- + +### 9.2 个人工作 & 生活第二大脑 + +**主角**:李工,前端工程师 + 业余跑者 + 有娃奶爸。每天和 Agent 聊工作 bug、读论文、讨论小孩教育、规划周末徒步路线。 +**目标**:让所有这些零散的对话沉淀成一份"自己的"知识库,三个月后能用 Obsidian 直接打开浏览。 + +#### 时间线:从空目录到第二大脑 + +``` +Day 1 Day 7 Day 30 Day 90 + │ │ │ │ + ▼ ▼ ▼ ▼ +[空目录] [daily 流水开始堆积] [knowledge 主题浮现] [图谱密集成网] + │ + ──────────────────────── Auto-Memory ─────────────────────────────► │ + ──────────── Auto-Dream(每晚) ──────────────────► │ + ────── Auto-Link(持续) ─────────────► │ + ▼ + Obsidian Graph + 打开是密集网状 +``` + +#### Day 7:daily 流水 + +``` +daily/ +├── 20260513.md +├── 20260513/ +│ ├── 调试登录页面 CSS 问题.md ← 工作 +│ ├── 读《深度工作》第三章.md ← 学习 +│ └── 周末徒步路线讨论.md ← 生活 +├── 20260514.md +├── 20260514/ +│ ├── 团队周会决定切换到 pnpm.md ← 工作 +│ ├── 给宝宝挑选英语启蒙绘本.md ← 育儿 +│ └── 5km 配速训练记录.md ← 跑步 +└── …… +``` + +打开 `daily/20260513.md`(主索引): + +```markdown +--- +title: 2026-05-13 +tags: [daily] +--- + +## 今日事件 + +- 09:30 [[daily/20260513/调试登录页面 CSS 问题]] · #工作 #前端 +- 14:20 [[daily/20260513/读《深度工作》第三章]] · #阅读 +- 21:10 [[daily/20260513/周末徒步路线讨论]] · #生活 #徒步 +``` + +#### Day 30:Auto-Dream 已经把主题归档好了 + +``` +knowledge/ +├── personal/ +│ ├── 跑步训练日志.md ← 把 1 个月的「配速训练」事件聚合 +│ ├── 阅读笔记/ +│ │ ├── 深度工作.md ← 全书要点(从多次 daily 阅读片段汇总) +│ │ └── 给孩子的诗.md +│ └── 徒步路线/ +│ ├── 莫干山线.md +│ └── 千岛湖环湖线.md +├── work/ +│ ├── 前端调试技巧.md ← 「调试登录页面 CSS」「修复 z-index」等事件聚合 +│ ├── 包管理工具切换决策.md ← 「pnpm vs npm」讨论沉淀 +│ └── 团队会议纪要/ +└── parenting/ + ├── 英语启蒙书单.md + └── 与孩子沟通技巧.md +``` + +李工没有手动建过任何一个 `knowledge/` 下的文件——它们都是 Agent 在他睡觉时从 daily 里"梦出来"的。 + +#### Day 90:Obsidian Graph View 打开是这样 + +``` + [深度工作] + ▲ + 引用 │ 应用到 + │ + [跑步训练日志] ◄── 借鉴方法 ── [前端调试技巧] ──► [包管理工具切换决策] + │ ▲ ▲ + │ 关联 │ │ 提到 + ▼ │ │ + [徒步路线] [周会纪要] [团队成员] + │ │ + │ │ mentions + ▼ ▼ + [莫干山线] ───── 同行 ────► [Alice] ◄── 育儿讨论 ── [给孩子的诗] + │ + ▼ + [英语启蒙书单] +``` + +**这张图是李工的"第二大脑"**——工作、跑步、阅读、育儿、社交关系全部交织在一起,能从「Alice」一路联想到「莫干山徒步」,再跳到「孩子的英语书单」,因为某次徒步同行时聊到过这个话题。 + +#### 一次具体的"联想式回忆" + +某天李工问:"**上次和 Alice 一起聊过的那本书叫什么?**" + +``` +========== 第一跳:daily 命中 ========== +daily/20260420/与 Alice 周末聚餐.md +> ……Alice 推荐了一本讲注意力的书,标题里有「深度」两个字…… + + ← inlinks: + ← knowledge/personal/阅读笔记/深度工作.md via plain + → outlinks: + → people/Alice.md via mention + +========== 第二跳:Agent 顺藤摸瓜 ========== +knowledge/personal/阅读笔记/深度工作.md +> 卡尔·纽波特,2016 年出版…… +``` + +Agent 回:"**《深度工作》,卡尔·纽波特著。** 您在 4/20 周末聚餐时 Alice 推荐的,您后来在 5/13 读了第三章并做了笔记。" + +模糊回忆 → 精确召回 → 上下文重建——这是普通"对话历史搜索"做不到的,因为它只会按时间顺序往回翻,而 ReMe 沿着图谱"联想"。 + +--- + +### 9.3 Agent 长期陪伴:跨会话的程序化记忆 + +**主角**:张研发,长期使用 Claude Code 做日常开发。希望 Agent "越用越懂我"——记得我的代码风格偏好,记得过去踩过的坑,记得未完成的任务。 + +#### 跨会话的记忆生命周期 + +``` +[第 1 次会话] [第 N 次会话,N 周后] + │ │ + │ 用户在编辑器报错 │ 用户遇到类似报错 + ▼ ▼ +┌─────────────┐ ┌─────────────┐ +│ Agent 排查 │ │ Agent 检索 │ +│ 试 A 方案 ❌│ ── ReMe ──► │ ReMe 召回 │ +│ 试 B 方案 ✅│ │ 上次的 B 方案│ +└──────┬──────┘ └──────┬──────┘ + │ 写入 │ 直接套用 + ▼ ▼ +knowledge/agent/ 跳过踩坑,1 步解决 +├── 调试经验/ +│ └── webpack 编译卡死.md +└── 用户偏好/ + └── 代码风格.md +``` + +#### 程序化记忆的真实例子 + +**第 1 次会话(2026-03-10)**:webpack 编译突然卡死。 + +``` +对话过程(摘要): +- 用户:"npm run build 卡在 92% 不动了" +- Agent 试方案 A:清缓存 → 没用 ❌ +- Agent 试方案 B:升级 terser-webpack-plugin → 没用 ❌ +- Agent 试方案 C:发现是 fork-ts-checker 的 OOM,加 --max-old-space-size=8192 → ✅ 成功 +``` + +ReMe 的 Auto-Dream 当晚把这次会话沉淀到: + +```markdown +# knowledge/agent/调试经验/webpack 编译卡死.md +--- +title: webpack 编译卡死的排查路径 +tags: [agent_memory, programmatic, webpack] +type: programmatic +--- + +## 症状 +build 卡在 92%(chunk asset optimization 阶段)。 + +## 排查顺序(按命中率) +1. ✅ **检查 Node 内存**:`NODE_OPTIONS=--max-old-space-size=8192` + → fork-ts-checker 在大型 TS 项目里很容易 OOM +2. ❌ 清 .cache 缓存(多数情况下无效) +3. ❌ 升级 terser-webpack-plugin(仅特定版本相关) + +## 关联 +- 用户偏好:[[knowledge/agent/用户偏好/代码风格#TypeScript]] 启用了 strict 模式, + 类型检查负担大,更易触发 OOM +- 历史事件:[[daily/20260310/webpack 卡死排查]] +``` + +**第 2 次会话(2026-04-22,6 周后)**:用户在另一个项目又遇到类似问题。 + +``` +用户:"vite build 也卡在打包阶段,是同一类问题吗?" + +Agent 内部检索 ReMe: +========== 命中:knowledge/agent/调试经验/webpack 编译卡死.md ========== +关键词匹配:编译卡死、build 阶段 +向量相似:vite build ≈ webpack build + +Agent 回复: +"根据您 3/10 在另一个项目遇到的同类问题,建议优先检查 Node 内存。 +vite 的 esbuild 阶段也吃内存,先试 NODE_OPTIONS=--max-old-space-size=8192。 +(上次清缓存和升级 plugin 都没用,可以跳过)" +``` + +**节省的不是时间,是踩坑路径**——这就是程序化记忆的价值。 + +#### 用户偏好的"自我画像" + +`knowledge/agent/用户偏好/` 下随时间长出的画像: + +```markdown +# knowledge/agent/用户偏好/代码风格.md +--- +type: personalization +tags: [user_profile] +--- + +## 命名 +- 倾向:函数 camelCase、类型 PascalCase、常量 SCREAMING_SNAKE +- 来源:[[daily/20260215]] 多次纠正 Agent 的命名建议 + +## 注释 +- 倾向:**不写无意义注释**,只在 WHY 不显然时写 +- 来源:[[daily/20260301]] 用户原话:"don't comment what the code already says" + +## 错误处理 +- 倾向:边界处校验、内部代码相信调用方 +- 来源:[[daily/20260408]] 用户拒绝在内部函数加 try/catch 时的解释 + +## 测试组织 +- 倾向:tests4/unittest 按基类组织(来自项目 CLAUDE.md) +``` + +**意义**:这不是 Agent 在 system prompt 里写死的"用户喜欢简洁",而是**从用户实际行为里被动观察到的、可追溯到具体对话的偏好画像**。每条偏好都有 `[[daily/...]]` 反向链接,用户可以审视、可以修正。 + +#### 三种记忆类型的差异化处理 + +回到 [3.2](#32-三种记忆的覆盖) 提到的三类记忆,在 Agent 陪伴场景下各司其职: + +| 记忆类型 | 写入触发 | 检索权重 | 实际表现 | +|----------------------------|----------------|----------|---------------------------------------| +| **个性化(personalization)** | 用户纠正 / 偏好表达 | 全场景常驻 | "我懂你不爱写注释" | +| **程序化(programmatic)** | 任务完成后归纳成功/失败路径 | 任务相似度高时高 | "上次这类 bug 你这样解决过" | +| **知识类(knowledge)** | 学习对话、文档阅读 | 主题相关时高 | "你之前学过的 React Server Components" | + +三类共同织成一个"懂用户 + 会做事 + 有知识"的长期陪伴 Agent——**差异化体验来自 ReMe 维护的个人记忆,而不是模型本身**。换言之,同一个 Claude / Qwen 模型,套上不同用户的 ReMe,会变成完全不同的 Agent。 --- @@ -500,7 +828,7 @@ jobs: ### 10.1 自研轻量内核 -新版本重写了知识引擎的核心模块: +新版本重写了记忆引擎的核心模块: - **file parser** —— Markdown AST + 章节切片 + wikilink 抽取 - **file store** —— 内存 chunk 字典 + JSONL 持久化 @@ -531,7 +859,7 @@ jobs: --- -## 十一、Roadmap:未来 6–12 个月 +## 十一、Roadmap | 阶段 | 关键里程碑 | |-----------|--------------------------------------------------------------------------------------------------------| @@ -561,14 +889,4 @@ jobs: 1. 个人记忆是 Agent 时代必然出现的基础设施 —— 不是 ReMe 不做就没人做,而是早做的人有先发优势。 2. **本地 Markdown + 自进化 + 知识图谱**(叠加被集成路线)—— 这套组合在当下市场是空缺的。 -3. ReMe 新版本 的工程内核已经就位,剩下是**自进化能力 + 生态集成 + 场景模板**的三件套加固,路径明确。 - ---- - -## 附:建议补充材料 - -- **系统架构图**:基于 §2.1 的 ASCII 图重绘为正式设计图。 -- **自进化时序图**:auto-memory / auto-dream / auto-link 三者的触发和协作时序。 -- **演示截图**:知识库三个月"自动生长"的 Obsidian Graph View 演示。 -- **30 秒 Demo 视频脚本**:用户说一句话 → ReMe 自动拆事件 → 第二天看到归档好的知识库。 -- **竞品对比表**:ReMe vs Memo vs Mem0 vs Letta,重点突出"本地 + 自进化 + 被集成"三个差异点。 +3. ReMe 的工程内核已经就位,剩下是**自进化能力 + 生态集成 + 场景模板**的三件套加固,路径明确。