Skip to content

Commit 7df4435

Browse files
committed
release: v1.3.10 memory concept prompts
1 parent 6602f7c commit 7df4435

34 files changed

Lines changed: 164 additions & 190 deletions

claudecode-plugin/.claude-plugin/marketplace.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
{
99
"name": "lore",
1010
"description": "Long-term Lore memory for AI agents — fixed boot baseline, recall injection, and MCP tools",
11-
"version": "1.3.9",
11+
"version": "1.3.10",
1212
"source": "./",
1313
"author": {
1414
"name": "FFatTiger"
1515
}
1616
}
1717
],
18-
"version": "1.3.9"
18+
"version": "1.3.10"
1919
}

claudecode-plugin/.claude-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "lore",
33
"description": "Long-term Lore memory for AI agents — fixed boot baseline, recall injection, and MCP tools",
4-
"version": "1.3.9",
4+
"version": "1.3.10",
55
"author": {
66
"name": "FFatTiger"
77
},

claudecode-plugin/rules/lore-guidance.md

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -37,23 +37,13 @@ Lore 是你唯一的长期记忆。调用它不是"查资料",是"想起来"
3737

3838
## URI / Path 命名
3939

40-
Memory URI/path 是稳定语义身份,不是时间戳、日志编号或一次性任务标题
40+
Lore 是一棵会自我生长的语义记忆树。每个 memory node 是一个可继续吸收证据的概念容器;path 是这个概念在树中的位置,也是未来的我回到这个概念时使用的身份
4141

42-
普通项目、工作记录、偏好、架构决策节点禁止在 path 末尾加日期或时间戳:
43-
- 禁止:`foo_2026_06_24`
44-
- 禁止:`foo_20260624`
45-
- 禁止:`foo_1719220000`
42+
父节点是抽象,不是目录。它要沉淀下层节点的共同背景、边界、索引词和未来生长方向。把一个节点放入更深层级时,先让父抽象节点成为有正文、disclosure 和 glossary 的真实记忆。
4643

47-
日期应写在正文第一句或历史段落中,不应进入 path
44+
日期是事件属性。日期描述事情发生在何时,适合写进正文第一句、历史段落、event metadata,或明确的 diary / log / release / archive / incident 概念。项目、工作记录、偏好、架构决策节点用稳定概念命名,让未来的自己按概念找回它
4845

49-
多层 path 表示语义记忆树。每个中间路径段都必须是真实抽象父节点,且有正文、disclosure 和 glossary,用来沉淀下层节点的共同背景、边界和索引词。把节点移动到更深层级前,先创建或更新这些父抽象节点;只改 path 字符串会破坏树结构。
50-
51-
只有明确按日期归档的对象允许日期 path,例如:
52-
- `dream_diary_2026_06_24`
53-
- `daily_log_2026_06_24`
54-
- `release_2026_06_24`
55-
56-
写入前优先 `lore_search` / `lore_get_node`。能归入已有项目、模块、决策、偏好节点时,必须 `lore_update_node` / merge。`lore_create_node` 是最后手段,只在出现新的长期语义对象且更新旧节点会混淆边界时使用。不要为了“今天做了某事”创建带日期的新节点;应更新对应项目/模块的稳定节点。
46+
写入前先 `lore_search` / `lore_get_node` 找到最可能承载这条事实的已有概念。已有节点能承载时,更新或合并它;新的长期概念出现时,再创建新节点。好的记忆树先向上抽象,再向外扩张。
5747

5848
## 维护
5949

codex-plugin/.codex-plugin/plugin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "lore",
3-
"version": "1.3.9",
3+
"version": "1.3.10",
44
"description": "Long-term Lore memory for Codex via MCP tools, skills, and bundled lifecycle hooks.",
55
"author": {
66
"name": "FFatTiger"

codex-plugin/rules/lore-guidance.md

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -37,23 +37,13 @@ Lore 是你唯一的长期记忆。调用它不是"查资料",是"想起来"
3737

3838
## URI / Path 命名
3939

40-
Memory URI/path 是稳定语义身份,不是时间戳、日志编号或一次性任务标题
40+
Lore 是一棵会自我生长的语义记忆树。每个 memory node 是一个可继续吸收证据的概念容器;path 是这个概念在树中的位置,也是未来的我回到这个概念时使用的身份
4141

42-
普通项目、工作记录、偏好、架构决策节点禁止在 path 末尾加日期或时间戳:
43-
- 禁止:`foo_2026_06_24`
44-
- 禁止:`foo_20260624`
45-
- 禁止:`foo_1719220000`
42+
父节点是抽象,不是目录。它要沉淀下层节点的共同背景、边界、索引词和未来生长方向。把一个节点放入更深层级时,先让父抽象节点成为有正文、disclosure 和 glossary 的真实记忆。
4643

47-
日期应写在正文第一句或历史段落中,不应进入 path
44+
日期是事件属性。日期描述事情发生在何时,适合写进正文第一句、历史段落、event metadata,或明确的 diary / log / release / archive / incident 概念。项目、工作记录、偏好、架构决策节点用稳定概念命名,让未来的自己按概念找回它
4845

49-
多层 path 表示语义记忆树。每个中间路径段都必须是真实抽象父节点,且有正文、disclosure 和 glossary,用来沉淀下层节点的共同背景、边界和索引词。把节点移动到更深层级前,先创建或更新这些父抽象节点;只改 path 字符串会破坏树结构。
50-
51-
只有明确按日期归档的对象允许日期 path,例如:
52-
- `dream_diary_2026_06_24`
53-
- `daily_log_2026_06_24`
54-
- `release_2026_06_24`
55-
56-
写入前优先 `lore_search` / `lore_get_node`。能归入已有项目、模块、决策、偏好节点时,必须 `lore_update_node` / merge。`lore_create_node` 是最后手段,只在出现新的长期语义对象且更新旧节点会混淆边界时使用。不要为了“今天做了某事”创建带日期的新节点;应更新对应项目/模块的稳定节点。
46+
写入前先 `lore_search` / `lore_get_node` 找到最可能承载这条事实的已有概念。已有节点能承载时,更新或合并它;新的长期概念出现时,再创建新节点。好的记忆树先向上抽象,再向外扩张。
5747

5848
## 维护
5949

codex-plugin/skills/lore-memory/SKILL.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ Before answering on a topic that may have durable context, call `lore_search` wi
2222

2323
## Writes
2424

25-
Create or update Lore memory when the information should survive this session. Prefer `uri` for reads, updates, deletes, and moves. Use stable semantic snake_case ASCII path segments.
25+
Create or update Lore memory when the information should survive this session. Lore is a living semantic tree: each node is a concept that can absorb future evidence, and each `uri` names that concept's identity and position.
2626

27-
Do not append dates, timestamps, or epoch values to ordinary memory paths. Put dates in the content instead. Date suffixes are only valid for explicitly date-archived objects such as `dream_diary_2026_06_24`, `daily_log_2026_06_24`, or `release_2026_06_24`.
27+
Dates express event time. Put event time in the node narrative, history, metadata, or explicit diary/log/release/archive/incident concepts. Project, work, preference, and decision memories should use durable concept names so future recall returns by meaning.
2828

29-
A multi-segment path is a semantic memory tree. Every intermediate segment must be a real abstraction parent node with content, disclosure, and glossary. Before moving nodes into a hierarchy, create or update those parent nodes; a string-only path move is incomplete.
29+
A multi-segment path grows through parent abstractions. Every intermediate segment is a real memory node with content, disclosure, and glossary that explains why its children belong together. Before moving nodes into a hierarchy, create or update the parent abstraction.
3030

31-
Before creating, search or open the likely existing owner node. Prefer updating or merging into an existing stable node. Use `lore_create_node` only for a new long-term semantic object.
31+
Before creating, search or open the likely existing owner concept. Prefer updating or merging into an existing stable node. Use `lore_create_node` when a new long-lived concept has appeared.
3232

3333
## Maintenance
3434

hermes-plugin/lore_memory/AGENT_RULES.md

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -37,23 +37,13 @@ Lore 是你唯一的长期记忆。调用它不是"查资料",是"想起来"
3737

3838
## URI / Path 命名
3939

40-
Memory URI/path 是稳定语义身份,不是时间戳、日志编号或一次性任务标题
40+
Lore 是一棵会自我生长的语义记忆树。每个 memory node 是一个可继续吸收证据的概念容器;path 是这个概念在树中的位置,也是未来的我回到这个概念时使用的身份
4141

42-
普通项目、工作记录、偏好、架构决策节点禁止在 path 末尾加日期或时间戳:
43-
- 禁止:`foo_2026_06_24`
44-
- 禁止:`foo_20260624`
45-
- 禁止:`foo_1719220000`
42+
父节点是抽象,不是目录。它要沉淀下层节点的共同背景、边界、索引词和未来生长方向。把一个节点放入更深层级时,先让父抽象节点成为有正文、disclosure 和 glossary 的真实记忆。
4643

47-
日期应写在正文第一句或历史段落中,不应进入 path
44+
日期是事件属性。日期描述事情发生在何时,适合写进正文第一句、历史段落、event metadata,或明确的 diary / log / release / archive / incident 概念。项目、工作记录、偏好、架构决策节点用稳定概念命名,让未来的自己按概念找回它
4845

49-
多层 path 表示语义记忆树。每个中间路径段都必须是真实抽象父节点,且有正文、disclosure 和 glossary,用来沉淀下层节点的共同背景、边界和索引词。把节点移动到更深层级前,先创建或更新这些父抽象节点;只改 path 字符串会破坏树结构。
50-
51-
只有明确按日期归档的对象允许日期 path,例如:
52-
- `dream_diary_2026_06_24`
53-
- `daily_log_2026_06_24`
54-
- `release_2026_06_24`
55-
56-
写入前优先 `lore_search` / `lore_get_node`。能归入已有项目、模块、决策、偏好节点时,必须 `lore_update_node` / merge。`lore_create_node` 是最后手段,只在出现新的长期语义对象且更新旧节点会混淆边界时使用。不要为了“今天做了某事”创建带日期的新节点;应更新对应项目/模块的稳定节点。
46+
写入前先 `lore_search` / `lore_get_node` 找到最可能承载这条事实的已有概念。已有节点能承载时,更新或合并它;新的长期概念出现时,再创建新节点。好的记忆树先向上抽象,再向外扩张。
5747

5848
## 维护
5949

hermes-plugin/lore_memory/__init__.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def _load_guidance() -> str:
4747
"lore_boot is a fixed startup baseline inside Lore, not a separate config layer. "
4848
f"At startup, lore_boot deterministically loads the three global boot nodes core://agent (workflow constraints), core://soul (style / persona / self-definition), and preferences://user (stable user definition / durable user context), plus {CLIENT_BOOT_URI} for Hermes-specific agent rules. "
4949
"Treat boot as the session's startup baseline. core://agent holds shared agent rules; core://agent/hermes holds Hermes-specific rules. Use recall and search to add prompt-specific memory leads, not to replace the role of those fixed paths. "
50-
"Use lore_get_node to read and lore_search to find. Before creating, search or open the likely owner node; prefer updating or merging. Use stable semantic URI/path segments and do not append dates, timestamps, or epoch values to ordinary memory paths. A multi-segment path is a semantic memory tree; every intermediate segment must be a real abstraction parent node with content, disclosure, and glossary. Before moving nodes into a hierarchy, create or update those parent nodes; a string-only path move is incomplete."
50+
"Use lore_get_node to read and lore_search to find. Before creating, search or open the likely owner concept; prefer updating or merging. Lore is a living semantic tree: a path names concept identity, dates express event time in the node narrative or explicit archive concepts, and multi-segment paths grow through real parent abstractions with content, disclosure, and glossary."
5151
)
5252

5353

@@ -99,7 +99,7 @@ def _format_boot_section(data: Dict) -> str:
9999

100100
if recent:
101101
lines.append("### 近期记忆")
102-
lines.append("近期记忆是上下文线索,不是 URI 命名示例。部分历史 URI 可能包含日期后缀;普通记忆不要模仿这种 path 风格。")
102+
lines.append("近期记忆是上下文线索。部分历史 URI 可能带有日期形态;日期只说明事件时间或归档语境,普通记忆的身份仍由稳定概念承载。")
103103
for mem in recent:
104104
parts = []
105105
if isinstance(mem.get("priority"), (int, float)):
@@ -416,18 +416,18 @@ def get_tool_schemas(self) -> List[Dict[str, Any]]:
416416
},
417417
{
418418
"name": "lore_create_node",
419-
"description": "Create a new long-term memory node only when no existing stable node should own the fact. Use stable semantic snake_case URI/title segments. A multi-segment path is a semantic memory tree; every intermediate segment must be a real abstraction parent node with memory content, disclosure, and glossary, so create parents first. Do not append dates, timestamps, or epoch values to ordinary memory paths; put dates in content instead. Date suffixes are only for explicit diary/log/release/archive nodes. Prefer lore_update_node after search/get_node.",
419+
"description": "Create a new long-term memory concept in the Lore living semantic tree. A URI path names the concept identity with durable snake_case segments; event time belongs in the node narrative or in explicit archive, diary, release, or incident concepts. For multi-segment paths, first make the parent abstraction real with content, disclosure, and glossary, then place the child under that conceptual home. Prefer update or merge when an existing concept already owns the fact.",
420420
"parameters": {
421421
"type": "object",
422422
"additionalProperties": False,
423423
"properties": {
424424
"content": {"type": "string", "description": "Memory text body"},
425425
"priority": {"type": "integer", "minimum": 0, "description": "Importance tier (0=core identity, 1=key facts, 2+=general)"},
426426
"glossary": {"type": "array", "items": {"type": "string"}, "description": "Initial glossary keywords written with this node create event"},
427-
"uri": {"type": "string", "description": "Optional final stable semantic memory URI. Do not append dates, timestamps, or epoch values for ordinary memories. Intermediate paths must already exist as real abstraction parent nodes with content."},
427+
"uri": {"type": "string", "description": "Optional final memory URI. It names a durable concept identity; event time belongs in content or in explicit archive, diary, release, or incident concepts. Intermediate paths grow from real parent abstractions with content."},
428428
"domain": {"type": "string", "description": "Target memory domain when not using uri"},
429-
"parent_path": {"type": "string", "description": "Parent location inside the chosen domain; for multi-segment paths this must be a real abstraction node with content, disclosure, and glossary."},
430-
"title": {"type": "string", "description": "Final stable semantic path segment for the new memory; ordinary memories must not end with dates or timestamps."},
429+
"parent_path": {"type": "string", "description": "Parent concept path inside the chosen domain; for multi-segment paths this parent abstraction explains why the children belong together and carries content, disclosure, and glossary."},
430+
"title": {"type": "string", "description": "Final concept segment for the new memory; name the reusable idea, module, decision, preference, or archive concept."},
431431
"disclosure": {"type": "string", "description": "When this memory should be recalled"},
432432
},
433433
"required": ["content", "priority", "glossary"],
@@ -464,13 +464,13 @@ def get_tool_schemas(self) -> List[Dict[str, Any]]:
464464
},
465465
{
466466
"name": "lore_move_node",
467-
"description": "Move or rename a memory node to a new URI path. A multi-segment path is a semantic memory tree; the target parent must already be a real abstraction parent node with memory content. The operation reparents the moved node to that parent and updates all child paths automatically.",
467+
"description": "Move or rename a memory concept inside the semantic memory tree. The target parent represents the conceptual home; it must already be a real parent abstraction with memory content so the move can reparent the node and its subtree into that abstraction.",
468468
"parameters": {
469469
"type": "object",
470470
"additionalProperties": False,
471471
"properties": {
472472
"old_uri": {"type": "string", "description": "Current memory URI to move from"},
473-
"new_uri": {"type": "string", "description": "New memory URI to move to. For multi-segment paths, the target parent must already be a real abstraction node with content."},
473+
"new_uri": {"type": "string", "description": "New memory URI. For multi-segment paths, the target parent is the parent abstraction that becomes the node conceptual home."},
474474
},
475475
"required": ["old_uri", "new_uri"],
476476
},

hermes-plugin/lore_memory/formatters.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ def format_boot_view(data: Dict) -> str:
101101
lines.append("---")
102102
lines.append("")
103103
lines.append("# Recent Memories")
104-
lines.append("These are context hints, not URI naming examples. Some legacy URIs may contain date suffixes; do not imitate that path style for ordinary memories.")
104+
lines.append("These are context hints. Some legacy URIs may carry date-shaped segments; read those dates as event time or archive context while ordinary memory identity stays with durable concepts.")
105105
for memory in recent_memories:
106106
meta = []
107107
if memory.get("priority") is not None:

hermes-plugin/lore_memory/plugin.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: lore
2-
version: 1.3.9
2+
version: 1.3.10
33
description: Lore long-term memory system — fixed boot baseline, cross-session recall, and durable project context
44
author: FFatTiger
55
provides_tools:

0 commit comments

Comments
 (0)