From 4fbec46a1b591ed107328020881c162d14fc91a6 Mon Sep 17 00:00:00 2001 From: "jinli.yl" Date: Mon, 22 Jun 2026 14:19:12 +0800 Subject: [PATCH] refactor(vault): rename metadata and session directories for consistency - Change reme_metadata to metadata in application config and fixtures - Change reme_session to session in application config and fixtures - Update all documentation references from reme_metadata to metadata - Update all documentation references from reme_session to session - Fix integration tests to use new directory names - Update SVG diagrams to reflect new directory naming convention - Adjust cleanup logic in vault fixture to use updated directory names --- README.md | 6 +++--- docs/figure/auto-memory-resource.svg | 2 +- docs/figure/memory-as-file.svg | 2 +- docs/figure/reme-overview.svg | 2 +- docs/zh/auto_dream.md | 2 +- docs/zh/auto_memory.md | 6 +++--- docs/zh/framework.md | 6 +++--- docs/zh/memory_as_file.md | 18 +++++++++--------- docs/zh/memory_search.md | 2 +- docs/zh/quick_start.md | 4 ++-- reme/schema/application_config.py | 4 ++-- tests/integration/_vault_fixture.py | 4 ++-- tests/integration/test_auto_dream.py | 10 +++++----- tests/integration/test_auto_resource.py | 6 +++--- 14 files changed, 37 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index c837ddce..47c5423d 100644 --- a/README.md +++ b/README.md @@ -115,15 +115,15 @@ QwenPaw 2.0 将集成新版 ReMe;后续也会推出 Claude Code plugin,进 > Memory as File, File as Memory. -ReMe 将**记忆视为文件**,让原始对话和外部资料从 `reme_session/`、`resource/` 渐进加工到 `daily/`,再沉淀为 `digest/` +ReMe 将**记忆视为文件**,让原始对话和外部资料从 `session/`、`resource/` 渐进加工到 `daily/`,再沉淀为 `digest/` 中可长期复用的知识节点。 ### 目录结构 ```text / -├── reme_metadata/ # 系统索引、图谱、catalog 等持久状态 -├── reme_session/ # 原始对话和 Agent session +├── metadata/ # 系统索引、图谱、catalog 等持久状态 +├── session/ # 原始对话和 Agent session │ ├── dialog/ │ │ └── .jsonl │ ├── agentscope/ diff --git a/docs/figure/auto-memory-resource.svg b/docs/figure/auto-memory-resource.svg index 8977f0d9..ad0a2979 100644 --- a/docs/figure/auto-memory-resource.svg +++ b/docs/figure/auto-memory-resource.svg @@ -78,7 +78,7 @@ Conversation source - reme_session/dialog/<session_id>.jsonl + session/dialog/<session_id>.jsonl Resource source resource/<date>/<resource_file> diff --git a/docs/figure/memory-as-file.svg b/docs/figure/memory-as-file.svg index 60c46e53..d20e610e 100644 --- a/docs/figure/memory-as-file.svg +++ b/docs/figure/memory-as-file.svg @@ -67,7 +67,7 @@ Raw input keep the original scene - reme_session/ + resource/ + session/ + resource/ diff --git a/docs/figure/reme-overview.svg b/docs/figure/reme-overview.svg index e16360a3..6b96431d 100644 --- a/docs/figure/reme-overview.svg +++ b/docs/figure/reme-overview.svg @@ -158,7 +158,7 @@ .json - reme_session/ + session/ raw session logs diff --git a/docs/zh/auto_dream.md b/docs/zh/auto_dream.md index 29cfd0cc..de334c25 100644 --- a/docs/zh/auto_dream.md +++ b/docs/zh/auto_dream.md @@ -71,7 +71,7 @@ daily//**/*.md | `digest/personal/*.md` | 用户、团队、项目相关的偏好、事实、长期上下文。 | | `digest/wiki/*.md` | 通用知识、概念、观察、决策先例。 | | `daily//interests.yaml` | 当天值得上层 Agent 主动关注的兴趣主题。 | -| `reme_metadata/file_catalog/dream*` | dream 专用 catalog,用于判断 daily 输入是否变化。 | +| `metadata/file_catalog/dream*` | dream 专用 catalog,用于判断 daily 输入是否变化。 | ## 四个阶段 diff --git a/docs/zh/auto_memory.md b/docs/zh/auto_memory.md index 5dd96206..a881f4e6 100644 --- a/docs/zh/auto_memory.md +++ b/docs/zh/auto_memory.md @@ -7,13 +7,13 @@ Auto Memory 是 ReMe 的对话记忆入口:每段对话先按 `session_id` 沉 ReMe Auto Memory 与 Auto Resource 写入 daily 记忆卡片的流程

-关于 `daily/`、`reme_session/`、frontmatter 和 wikilink 的通用文件语义,见 [Memory as File](./memory_as_file.md)。 +关于 `daily/`、`session/`、frontmatter 和 wikilink 的通用文件语义,见 [Memory as File](./memory_as_file.md)。 ```text Conversation ├─ step 1: daily/YYYY-MM-DD/.md # 每段对话先成卡片 ├─ step 2: daily/YYYY-MM-DD.md # 当天索引再串起来 - └─ source: reme_session/dialog/.jsonl # 原始对话 + └─ source: session/dialog/.jsonl # 原始对话 ``` ## 它记录什么 @@ -60,7 +60,7 @@ daily/2026-06-20/session-a.md Auto Memory 在生成记忆卡片的同时,也会保存原始会话: ```text -reme_session/ +session/ dialog/ session-a.jsonl session-b.jsonl diff --git a/docs/zh/framework.md b/docs/zh/framework.md index 35aa637d..99268d06 100644 --- a/docs/zh/framework.md +++ b/docs/zh/framework.md @@ -22,7 +22,7 @@ flowchart LR Jobs --> Steps["Steps
reme/steps/**"] Steps --> Ctx["RuntimeContext
data + Response + stream queue"] Steps --> Components["Components
store / graph / index / llm / agent / catalog"] - Components --> Vault["Vault
daily / digest / resource / reme_metadata"] + Components --> Vault["Vault
daily / digest / resource / metadata"] ``` 核心分层: @@ -75,8 +75,8 @@ reme/ ```text / - reme_metadata/ # file_store、file_graph、keyword_index、file_catalog 等持久状态 - reme_session/ # Agent session 与原始对话 + metadata/ # file_store、file_graph、keyword_index、file_catalog 等持久状态 + session/ # Agent session 与原始对话 resource/ # 外部资源 daily/ # 浅加工记忆 digest/ # 长期 digest 记忆 diff --git a/docs/zh/memory_as_file.md b/docs/zh/memory_as_file.md index 91f2e025..e459917b 100644 --- a/docs/zh/memory_as_file.md +++ b/docs/zh/memory_as_file.md @@ -34,15 +34,15 @@ ReMe 把记忆设计成文件,不只是为了“方便存储”,而是为了 ReMe 的 vault 把记忆分成四层: ```text -raw input -> reme_session/ + resource/ +raw input -> session/ + resource/ working memory -> daily/ long memory -> digest/ -system state -> reme_metadata/ +system state -> metadata/ ``` 这四层解决的是不同问题。 -`reme_session/` 和 `resource/` 保存原始输入。它们强调“不要丢现场”:对话、Agent session、上传资料、网页或报告先原样留下,作为以后核对的证据。 +`session/` 和 `resource/` 保存原始输入。它们强调“不要丢现场”:对话、Agent session、上传资料、网页或报告先原样留下,作为以后核对的证据。 `daily/` 是浅加工层。它把当天发生的对话和资源整理成更适合阅读的 daily note:什么事情发生了、有哪些结论、留下了哪些后续任务、对应原文在哪里。 daily 不追求最终抽象,它更像当天工作台。 @@ -50,14 +50,14 @@ daily 不追求最终抽象,它更像当天工作台。 `digest/` 是深加工层。这里保存的是可以长期复用的记忆节点,例如用户偏好、项目背景、流程经验、概念知识、决策先例。digest 不应该只是复制 daily,而应该把多次出现的事实、方法和关系合并成更稳定的表述。 -`reme_metadata/` 是系统索引层。它保存 file catalog、chunk 索引、图谱快照等运行状态。用户通常不需要手写这里的内容;真正的人工编辑入口是 +`metadata/` 是系统索引层。它保存 file catalog、chunk 索引、图谱快照等运行状态。用户通常不需要手写这里的内容;真正的人工编辑入口是 `daily/`、`digest/` 和必要时的 `resource/`。 这个分层让 ReMe 可以同时保留“现场”和“抽象”:daily 负责还原当时发生了什么,digest 负责回答以后还能复用什么。 ## 目录结构 -ReMe 用目录表达记忆组织和记忆分层。原始材料先进入 `resource/` 或 `reme_session/`,再沉淀到 `daily/`,最后由 `auto_dream` +ReMe 用目录表达记忆组织和记忆分层。原始材料先进入 `resource/` 或 `session/`,再沉淀到 `daily/`,最后由 `auto_dream` 整合到 `digest/`。 对应的自动流程分别是 [Auto Memory](./auto_memory.md)、[Auto Resource](./auto_resource.md) 和 [Auto Dream](./auto_dream.md)。 @@ -65,8 +65,8 @@ ReMe 用目录表达记忆组织和记忆分层。原始材料先进入 `resourc ```text / -├── reme_metadata/ # 系统索引层;ReMe 索引、图谱、catalog 等持久状态,不作为人工编辑入口 -├── reme_session/ # 原始输入层;原始对话和 Agent session +├── metadata/ # 系统索引层;ReMe 索引、图谱、catalog 等持久状态,不作为人工编辑入口 +├── session/ # 原始输入层;原始对话和 Agent session │ ├── dialog/ │ │ └── .jsonl # auto_memory 保存的对话消息 │ ├── agentscope/ @@ -95,7 +95,7 @@ ReMe 用目录表达记忆组织和记忆分层。原始材料先进入 `resourc ```text 对话 - -> reme_session/dialog/.jsonl + -> session/dialog/.jsonl -> daily/YYYY-MM-DD/.md -> digest/personal | digest/procedure | digest/wiki @@ -137,7 +137,7 @@ Frontmatter 是文件开头的 YAML 块,用 `---` 包住: --- name: 文档名 description: 文档描述 -source_conversation: [[reme_session/dialog/abc.jsonl]] +source_conversation: [[session/dialog/abc.jsonl]] --- ``` diff --git a/docs/zh/memory_search.md b/docs/zh/memory_search.md index b7fca5b7..3cedd862 100644 --- a/docs/zh/memory_search.md +++ b/docs/zh/memory_search.md @@ -58,7 +58,7 @@ index_update_loop: 2. 把文件解析成一个 `FileNode` 和多个 `FileChunk`。 3. 对新增或修改的文件,先删除旧 chunk,再 upsert 新 chunk。 4. 对删除的文件,从 `file_store`、`keyword_index` 和 `file_graph` 清掉对应记录。 -5. 有变化时 dump 到 `reme_metadata/`,让下次启动可以恢复。 +5. 有变化时 dump 到 `metadata/`,让下次启动可以恢复。 Markdown chunker 会解析 YAML frontmatter、标题结构和 `[[...]]`,产出 `FileNode`、`FileChunk` 和 `FileLink`。更细的分块规则见 [Memory as File](./memory_as_file.md#memory-chunking)。 diff --git a/docs/zh/quick_start.md b/docs/zh/quick_start.md index 90ba99cc..b8e11826 100644 --- a/docs/zh/quick_start.md +++ b/docs/zh/quick_start.md @@ -65,8 +65,8 @@ reme list ```text .reme/ -├── reme_metadata/ # 索引、图谱、catalog 等持久状态 -├── reme_session/ # Agent session 与原始对话 +├── metadata/ # 索引、图谱、catalog 等持久状态 +├── session/ # Agent session 与原始对话 ├── resource/ # 外部资料 ├── daily/ # daily note └── digest/ # 长期记忆 diff --git a/reme/schema/application_config.py b/reme/schema/application_config.py index 42766812..36e4ac99 100644 --- a/reme/schema/application_config.py +++ b/reme/schema/application_config.py @@ -29,8 +29,8 @@ class ApplicationConfig(BaseModel): app_name: str = Field(default=os.getenv("APP_NAME", "ReMe"), description="Application display name") vault_dir: str = Field(default=".reme", description="Vault root directory for runtime files") - metadata_dir: str = Field(default="reme_metadata", description="Subdirectory for ReMe persistent state") - session_dir: str = Field(default="reme_session", description="Subdirectory for persisted agent sessions") + metadata_dir: str = Field(default="metadata", description="Subdirectory for ReMe persistent state") + session_dir: str = Field(default="session", description="Subdirectory for persisted agent sessions") resource_dir: str = Field(default="resource", description="Subdirectory for external assets") daily_dir: str = Field(default="daily", description="Subdirectory for daily memory") digest_dir: str = Field(default="digest", description="Subdirectory for digest memory") diff --git a/tests/integration/_vault_fixture.py b/tests/integration/_vault_fixture.py index b5de1134..989ecefb 100644 --- a/tests/integration/_vault_fixture.py +++ b/tests/integration/_vault_fixture.py @@ -253,7 +253,7 @@ Redis key `auth:jwks:current_kid` 保存当前活跃 kid;Auth Service """, } -_CLEAN_DIRS = ("daily", "digest", "resource", "reme_metadata") +_CLEAN_DIRS = ("daily", "digest", "resource", "metadata") # ───────────────────────────────────────────────────────────────────────────── @@ -418,7 +418,7 @@ class VaultEnv: def clean(self) -> list[str]: """Remove fixture-managed subdirs (``daily/``, ``digest/``, ``resource/``, - ``reme_metadata/``) under the vault so the next seed starts clean. + ``metadata/``) under the vault so the next seed starts clean. Returns relative paths that were actually removed.""" removed: list[str] = [] for rel in _CLEAN_DIRS: diff --git a/tests/integration/test_auto_dream.py b/tests/integration/test_auto_dream.py index 6dd9c4f7..10e9eef2 100644 --- a/tests/integration/test_auto_dream.py +++ b/tests/integration/test_auto_dream.py @@ -61,7 +61,7 @@ def _copy_outputs(env, message_files: list[Path]) -> list[Path]: for path in message_files: if dst := _copy_artifact(path, "messages"): copied.append(dst) - for root in ("daily", "digest", "reme_metadata", "reme_session", "agent_logs"): + for root in ("daily", "digest", "metadata", "session", "agent_logs"): if dst := _copy_artifact(env.vault_dir / root, root): copied.append(dst) return copied @@ -83,9 +83,9 @@ def _all_digest_text(env) -> str: def _file_graph_links(env) -> dict[str, list[dict]]: - """Map ``path -> links`` from every ``reme_metadata/file_graph/*.jsonl``.""" + """Map ``path -> links`` from every ``metadata/file_graph/*.jsonl``.""" out: dict[str, list[dict]] = {} - graph_dir = env.vault_dir / "reme_metadata" / "file_graph" + graph_dir = env.vault_dir / "metadata" / "file_graph" if not graph_dir.is_dir(): return out for graph_path in sorted(graph_dir.glob("*.jsonl")): @@ -123,7 +123,7 @@ def test_auto_dream_and_proactive(): topic_diversity_days=7, ) dumped = await recorder.dump() - session_jsonl = sorted((env.vault_dir / "reme_session" / "agentscope").glob("*.jsonl")) + session_jsonl = sorted((env.vault_dir / "session" / "agentscope").glob("*.jsonl")) message_files = [*dumped, *session_jsonl] _print_message_files(message_files) @@ -138,7 +138,7 @@ def test_auto_dream_and_proactive(): day_index = env.vault_dir / "daily" / f"{DREAM_DATE}.md" changed_note = env.vault_dir / DREAM_INPUT_PATH interests = env.vault_dir / "daily" / DREAM_DATE / "interests.yaml" - catalog = env.vault_dir / "reme_metadata" / "file_catalog" / "dream.jsonl" + catalog = env.vault_dir / "metadata" / "file_catalog" / "dream.jsonl" assert changed_note.is_file(), f"changed note missing: {changed_note}" assert interests.is_file(), f"interests.yaml missing: {interests}" assert catalog.is_file(), f"dream catalog missing: {catalog}" diff --git a/tests/integration/test_auto_resource.py b/tests/integration/test_auto_resource.py index 4275d857..90827362 100644 --- a/tests/integration/test_auto_resource.py +++ b/tests/integration/test_auto_resource.py @@ -114,7 +114,7 @@ def test_auto_resource_create(): file_path = env.place_resource(RESOURCE_FILENAME, RESOURCE_CONTENT_V1) note_stem = _compute_note_stem(RESOURCE_FILENAME) agent_session_id = _compute_agent_session_id(file_path) - expected_session_jsonl = env.vault_dir / "reme_session" / "agentscope" / f"{agent_session_id}.jsonl" + expected_session_jsonl = env.vault_dir / "session" / "agentscope" / f"{agent_session_id}.jsonl" print(f"[CREATE] file_path = {file_path}") print(f"[CREATE] note_stem = {note_stem}") @@ -142,7 +142,7 @@ def test_auto_resource_create(): assert expected_session_jsonl.is_file(), ( f"agent session not persisted at {expected_session_jsonl}; " f"AgentScope files: " - f"{[p.name for p in (env.vault_dir / 'reme_session' / 'agentscope').glob('*.jsonl')]}" + f"{[p.name for p in (env.vault_dir / 'session' / 'agentscope').glob('*.jsonl')]}" ) note_text = _print_text_file("CREATE result.md", note_path) @@ -198,7 +198,7 @@ def test_auto_resource_update(): file_path = env.place_resource(RESOURCE_FILENAME, RESOURCE_CONTENT_V1) note_stem = _compute_note_stem(RESOURCE_FILENAME) agent_session_id = _compute_agent_session_id(file_path) - session_jsonl = env.vault_dir / "reme_session" / "agentscope" / f"{agent_session_id}.jsonl" + session_jsonl = env.vault_dir / "session" / "agentscope" / f"{agent_session_id}.jsonl" response = await app.run_job("auto_resource", changes=[{"path": file_path, "change": "added"}]) assert response.success is True, f"Initial create failed: {response.answer!r}"