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` 沉
-关于 `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}"