diff --git a/.claude/settings.local.json b/.claude/settings.local.json index cc14e04..9347200 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -94,7 +94,7 @@ }, { "type": "command", - "command": "test -f .claude/memories/core.json && echo '[Agent] memory ready' || true" + "command": "test -f knowledge/memories/core.json && echo '[Agent] memory ready' || true" } ] } diff --git a/.claude/skills/update-mykb-files/SKILL.md b/.claude/skills/update-mykb-files/SKILL.md index a18345c..4be4e3d 100644 --- a/.claude/skills/update-mykb-files/SKILL.md +++ b/.claude/skills/update-mykb-files/SKILL.md @@ -1,7 +1,7 @@ --- name: update-mykb-files description: | - Local filesystem RAG-style retrieval: user path, @ files, or workspace—no fixed KB root; prefer data_structure.md then grep/limited Read; PDF/Excel only after this skill's references. Save reusable clips to project .claude/files/; one-line pointers in memories via update-mykb-memories. Sandbox/permissions apply. + Local filesystem RAG-style retrieval: user path, @ files, or workspace—no fixed KB root; prefer data_structure.md then grep/limited Read; PDF/Excel only after this skill's references. Save reusable clips to project knowledge/files/ (Cursor @knowledge); pointers in knowledge/memories via update-mykb-memories. Avoid writing under .claude/ when restricted. Triggers: update-mykb-files; 检索/查资料/找文件/在某目录/摘录/存档; local search, find in folder, read my PDF, grep project, save excerpt, knowledge base on disk. --- @@ -17,19 +17,19 @@ description: | - **检索根目录怎么定**(优先级): - 用户在对话里**写明路径**(最优先)。 - 否则从上下文推断:`@` 引用、已打开文件所在目录、问题中的路径、当前工作区根等;推断仍模糊时**追问用户**,勿臆造目录。 - - **读与写分离**:读的是上面确定的任意路径;**摘录落盘**默认写到**当前项目**下的 `.claude/files/`(见下文),勿与「被读的资料目录」混为一谈。 + - **读与写分离**:读的是上面确定的任意路径;**摘录落盘**默认写到**当前项目**下的 `knowledge/files/`(见下文;可用 `@knowledge`),勿与「被读的资料目录」混为一谈。 - 单个业务文件可能很大: - 不要直接用 Read 读取整文件 - 对 PDF、Excel 使用对应 Skill 进行结构化处理后,再结合 grep/局部读取做精细检索 -## 摘录池:`.claude/files/` +## 摘录池:`knowledge/files/` -- **用途**:在日常对话或阅览任意被检索文件时,若出现**以后还可能引用**的内容(定义、结论、命令、表格摘要、长引用片段),写入当前项目下的 `.claude/files/`,便于后续用 Grep/Read 复用;**不要**把整本 PDF/整表原样拷入,优先摘要 + 来源路径。 -- **与 update-mykb-memories 分工**:极短、稳定的事实与偏好写入 `.claude/memories/`(见 skill `update-mykb-memories`);**较长说明、摘录、结构化笔记**放 `.claude/files/`。 -- **路径**:根目录为仓库内 `.claude/files/`(不存在则创建)。可选子目录:`clips/`(原文摘录)、`notes/`(整理笔记)、`exports/`(脚本导出的小文件)。 +- **用途**:在日常对话或阅览任意被检索文件时,若出现**以后还可能引用**的内容(定义、结论、命令、表格摘要、长引用片段),写入当前项目下的 `knowledge/files/`,便于后续用 Grep/Read 复用;**不要**把整本 PDF/整表原样拷入,优先摘要 + 来源路径。 +- **与 update-mykb-memories 分工**:极短、稳定的事实与偏好写入 `knowledge/memories/`(见 skill `update-mykb-memories`);**较长说明、摘录、结构化笔记**放 `knowledge/files/`。 +- **路径**:根目录为仓库内 `knowledge/files/`(不存在则创建;父级 `knowledge/` 与 Cursor `@knowledge` 对应)。可选子目录:`clips/`、`notes/`、`exports/`。 - **命名**:`YYYY-MM-DD_<主题简写>.md` 或 `_.md`;单文件控制体量,必要时拆篇。 - **内容建议**:每条摘录开头用简短元信息(来源文件/URL、日期、一两句用途),正文用 Markdown;避免敏感凭证。 -- **检索**:回答后续问题时,若与已存摘录相关,可对 `.claude/files/` 做 Grep 或 Read,与对原始资料的检索同一套渐进式原则。 +- **检索**:回答后续问题时,若与已存摘录相关,可对 `knowledge/files/` 做 Grep 或 Read,与对原始资料的检索同一套渐进式原则。 ### 定位检索根目录与存在性 @@ -151,7 +151,7 @@ description: | - 禁止用 Glob 的「有无匹配文件」代替目录存在性判断;目录是否存在应通过 shell(如 `test -d`)检查。 - 使用本 skill 做本地文件检索时,禁止使用网络搜索等其他工具替代磁盘上的资料 -- 若用户明确要求「记住」且是**短事实**,交给 **update-mykb-memories**;若需保存**可检索的长摘录**,写入 `.claude/files/`(见上文)。 +- 若用户明确要求「记住」且是**短事实**,交给 **update-mykb-memories**;若需保存**可检索的长摘录**,写入 `knowledge/files/`(见上文)。 ## 针对不同文件类型的具体策略 diff --git a/.claude/skills/update-mykb-memories/SKILL.md b/.claude/skills/update-mykb-memories/SKILL.md index 872cb22..a67674c 100644 --- a/.claude/skills/update-mykb-memories/SKILL.md +++ b/.claude/skills/update-mykb-memories/SKILL.md @@ -1,7 +1,7 @@ --- name: update-mykb-memories description: | - Cross-session personal memory: write short, verifiable facts, preferences, and project conventions to .claude/memories (CLAUDE.md protocol); long excerpts go to .claude/files via update-mykb-files. Tone: concise, deduped, no secrets/credentials—matches 简洁直接. Evolves with corrections ("纠正偏好", "以后别…"). + Cross-session personal memory: write short, verifiable facts, preferences, and project conventions to knowledge/memories at project root (CLAUDE.md; Cursor @knowledge). Long excerpts go to knowledge/files via update-mykb-files. Avoid .claude/ for writes (sandbox). Tone: concise, deduped, no secrets—matches 简洁直接. Triggers: update-mykb-memories; 记住/记下来/默认/偏好/沉淀/跨会话; remember this, save preference, persist this, update how you work with me. --- @@ -10,17 +10,17 @@ description: | ## 目标 - 让 Agent 在**不依赖超长上下文**的情况下,在后续会话中仍能利用已确认有用的信息。 -- **短而稳**:一句话事实、用户偏好、命令别名、项目内约定 → `.claude/memories/`。 -- **长而可搜**:段落、摘录、整理稿 → `.claude/files/`(见 **update-mykb-files**),不要用 `core.json` 塞长文。 +- **短而稳**:一句话事实、用户偏好、命令别名、项目内约定 → `knowledge/memories/`。 +- **长而可搜**:段落、摘录、整理稿 → `knowledge/files/`(见 **update-mykb-files**),不要用 `core.json` 塞长文。 - **随使用收敛**:用户纠正或补充时更新既有条目,避免堆叠矛盾记录,使行为逐渐贴近固定偏好与做事方式。 ## 写哪里 | 类型 | 位置 | 说明 | |------|------|------| -| 核心记忆、偏好、稳定事实 | `.claude/memories/core.json` | 若文件不存在,可创建;必须保持合法 JSON | -| 当前模式等状态 | `.claude/memories/current_mode.json` | 仅在与模式切换相关时更新 | -| 单主题若干句补充 | `.claude/memories/notes/.md` | 避免把 `core.json` 撑得过大;`slug` 用小写连字符 | +| 核心记忆、偏好、稳定事实 | `knowledge/memories/core.json` | 若文件不存在,可创建;必须保持合法 JSON | +| 当前模式等状态 | `knowledge/memories/current_mode.json` | 仅在与模式切换相关时更新 | +| 单主题若干句补充 | `knowledge/memories/notes/.md` | 避免把 `core.json` 撑得过大;`slug` 用小写连字符 | ## 何时写入 @@ -35,12 +35,12 @@ description: | - 顶层对象含 `facts`(字符串数组)与 `preferences`(字符串键值对),或沿用已有键名,**不要**破坏已有字段含义。 2. 合并新条目:去重(同一事实不重复追加);必要时更新而非复制多条矛盾记录。 3. 写回前校验 JSON(引号、逗号、尾随逗号);写回后用 Read 抽查。 -4. 若当前仓库将 `.claude/memories` 排除在版本控制外,仍按同样路径写入,便于本机 Agent 加载。 +4. `knowledge/` 常被 gitignore;仍向上述路径写入,便于本机 Agent 加载。若有旧数据在 `.claude/memories/`,可手工迁移到 `knowledge/memories/`。 ## 与 update-mykb-files 配合 -- 从 PDF/Excel/长文档抽出的**大段原文或详细笔记**:写入 `.claude/files/` 并在 `core.json` 或 `notes` 里只保留**一行指针**(文件名 + 用途)。 -- 检索时:先 Grep/Read `.claude/files`,短事实读 `core.json` / `notes/`。 +- 从 PDF/Excel/长文档抽出的**大段原文或详细笔记**:写入 `knowledge/files/` 并在 `core.json` 或 `notes` 里只保留**一行指针**(文件名 + 用途)。 +- 检索时:先 Grep/Read `knowledge/files`,短事实读 `core.json` / `notes/`。 ## 回答风格 diff --git a/.gitignore b/.gitignore index 56f8c1f..35af40f 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ __pycache__/ dist/ build/ workspace/ +knowledge/ .claude/ .obsidian/ diff --git a/CLAUDE.md b/CLAUDE.md index 62f46c1..6ee16e2 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -99,11 +99,12 @@ ## 5. 记忆协议 ### 自动记忆位置 -- `.claude/memories/` - 持久化记忆(自动加载到上下文) -- `.claude/memories/core.json` - 核心记忆文件 -- `.claude/memories/current_mode.json` - 当前模式状态 -- `.claude/files/` - 较长摘录、笔记,供后续 Grep/Read(skill:`update-mykb-files`) -- 沉淀操作指引:短事实/偏好用 skill `update-mykb-memories`,长材料用 `update-mykb-files` 写入 `.claude/files/` +- 根目录:项目根下 `knowledge/`(在 Cursor 中可用 `@knowledge` 引用);**不**写入 `.claude/`,以减少沙盒/权限限制。 +- `knowledge/memories/` - 持久化记忆(自动加载到上下文) +- `knowledge/memories/core.json` - 核心记忆文件 +- `knowledge/memories/current_mode.json` - 当前模式状态 +- `knowledge/files/` - 较长摘录、笔记,供后续 Grep/Read(skill:`update-mykb-files`) +- 沉淀操作指引:短事实/偏好用 skill `update-mykb-memories`,长材料用 `update-mykb-files` 写入 `knowledge/files/` ### 触发记录 - 用户说"记住..." / "记下来..."