diff --git a/.claude/memory/MEMORY.md b/.claude/memory/MEMORY.md index 3052d8c..49bd117 100644 --- a/.claude/memory/MEMORY.md +++ b/.claude/memory/MEMORY.md @@ -1,9 +1,9 @@ # Memory Index -> _Last synced: 2026-06-12 | Base commit: `fad7335`_ +> _Last synced: 2026-07-10 | Base commit: `a13898b`_ | 文件 | 描述 | 类型 | 引用 | Commit | |------|------|------|------|--------| -| decisions.md | 关键架构决策:无版本号/userConfig/Bearer Token/SKILL.md规范/路径锁定/memcore三项优化/memcore-shared共享层/lint_report保活/Base commit兜底/obsidian社区对标审查 | project | 3 | fad7335 | +| decisions.md | 关键架构决策:无版本号/userConfig/Bearer Token/SKILL.md规范/路径锁定/memcore三项优化/memcore-shared共享层/lint_report保活/Base commit兜底/obsidian社区对标审查/memory-lint速度分档过期检测 | project | 2 | a13898b | | project_overview.md | 项目定位、目录结构、插件规范、发布流程(huanxi/memcore/obsidian 10 技能) | project | 1 | fad7335 | | feedback_plugin_dev.md | 插件开发协作规范:同步四处/路径解析/工具签名对照/MCP docstring单一真相/签名变更全量扫描 | feedback | 1 | 38beecb | | lint_report.md | memory-lint 最新执行结果 | lint | 0 | 38beecb | diff --git a/.claude/memory/decisions.md b/.claude/memory/decisions.md index 5981789..3261c33 100644 --- a/.claude/memory/decisions.md +++ b/.claude/memory/decisions.md @@ -1,9 +1,9 @@ --- name: 架构决策 -description: Marketplace 设计中的关键技术决策及其原因 +description: Marketplace 设计中的关键技术决策及其原因:无版本号/userConfig/Bearer Token/SKILL.md规范/路径锁定/memcore三项优化/memcore-shared共享层/lint_report保活/Base commit兜底/obsidian社区对标审查/memory-lint速度分档过期检测 type: project -last_updated: 2026-06-12 -commit: fad7335 +last_updated: 2026-07-10 +commit: a13898b --- # 关键架构决策 @@ -103,7 +103,7 @@ commit: fad7335 **How to apply**:未来 memcore 类多 skill 插件如出现「共享约束 + 多处硬编码常量」时,提取为独立 `-shared` skill;常量声明在共享 skill 顶部表格,子技能引用常量名而非裸数字。 -**See Also**:[[decisions.md#memcore memory-update/lint 路径锁定:禁止写入系统自动记忆路径]] [[feedback_plugin_dev.md#skill 不要重写 MCP 参数表,引用 docstring]] +**See Also**:[[decisions.md#memcore memory-update/lint 路径锁定:禁止写入系统自动记忆路径]] [[feedback_plugin_dev.md#skill 不要重写 MCP 参数表,引用 docstring 为单一真相]] --- @@ -161,4 +161,16 @@ commit: fad7335 - 涉及 vault 内格式(.canvas/.base/.md)的能力,**默认独立成 skill**——不要塞进核心 obsidian。 - 学习模式契机:obsidian-canvas 的"AI 大批量写入回滚策略"4 选项对照表留给团队/用户决策,AI 不强制做掉,默认采用 C+D 作为决策前兜底。 -**See Also**:[[feedback_plugin_dev.md#签名变更全量扫描]]、kepano/obsidian-skills、AgriciDaniel/claude-obsidian +**See Also**:[[feedback_plugin_dev.md#MCP 后端工具签名变更后必须全量扫描所有 skill]]、kepano/obsidian-skills、AgriciDaniel/claude-obsidian + +--- + +## memory-lint 过期检测改用提交速度分档,弃用固定 30/90 天阈值(2026-07-10) + +**结论**:`/memory-lint` Phase 5 过期检测从固定 `LINT_STALE_WARN_DAYS=30` / `LINT_STALE_ERROR_DAYS=90` 改为「自 last_updated 以来的全仓库提交速度」分档:`LINT_STALE_MIN_DAYS=7`(不足 7 天跳过检测)+ 速度 ≥`LINT_HIGH_VELOCITY`(1.0 次/天) → ERROR,≥`LINT_LOW_VELOCITY`(0.3 次/天) → WARN,低于此速度不判定过期,但 `LINT_STALE_ABSOLUTE_DAYS`(180 天) 绝对兜底。 + +**Why**:AI 辅助开发下代码迭代速度远超传统人工节奏,高频项目 7 天内可能已发生大量架构变更,30 天固定阈值严重滞后不报警;反过来低活跃期项目(如进入维护期)超过 30 天没提交,旧记忆大概率仍准确,固定天数会误报过期。纯日历天数无法区分"高频漂移"和"低频稳定"两种情况,需要用提交速度代理"内容漂移风险"。 + +**How to apply**:新增/调整任何"距离上次更新多久算过期"的判定逻辑时,优先考虑用活跃度信号(提交频次、变更行数等)分档,而非固定日历阈值。常量集中在 `memcore-shared` 全局常量表单点维护,调整数值只改一处。 + +**See Also**:[[decisions.md#memcore-shared:路径锁定 + 全局常量的单一来源]] diff --git a/.claude/memory/lint_report.md b/.claude/memory/lint_report.md index 088d355..4ac355b 100644 --- a/.claude/memory/lint_report.md +++ b/.claude/memory/lint_report.md @@ -2,39 +2,32 @@ name: 记忆健康检查报告 description: memory-lint 最新一次执行的检查结果与待处理项 type: lint -last_updated: 2026-06-12 -commit: fad7335 +last_updated: 2026-07-10 +commit: a13898b --- # 记忆健康检查报告 -> _执行时间: 2026-06-12 | Base commit: `fad7335` | Last synced: 2026-06-12_ +> _执行时间: 2026-07-10 | Base commit: `a13898b` | Last synced: 2026-07-10_ > > **如何使用**:NEED-HUMAN 条目末尾有 `` 标记。处理完或决定不处理时,在同段追加 ``,下次 lint 该条目自动跳过。 ## 健康概览 -| 检查项 | AUTO-FIX | NEED-HUMAN | +| 检查项 | AUTO-FIX | NEED-HUMAN(含已 resolved 跳过 N 项) | |--------|---------|-----------| -| 1 孤儿 / 2 幽灵 / 3A 引用 / 3B 双链 | 0 / 0 / 1 / 0 | — / — / 0 / 0 | +| 1 孤儿 / 2 幽灵 / 3A 引用 / 3B 双链 | 0 / 0 / 2 / 0 | — / — / 0 / 1(含已 resolved 跳过 0 项) | | 4 矛盾 / 5 过期 / 6 污染 | — | 0 / 0 / 0 | -**AUTO-FIX 已执行 1 项 | NEED-HUMAN 新列出 0 项 | 历史已 resolved 跳过 0 项** +**AUTO-FIX 已执行 2 项 | NEED-HUMAN 新列出 1 项 | 历史已 resolved 跳过 0 项** --- ## AUTO-FIX 已执行清单 -- [x] 文件级引用计数刷新(Phase 3A):decisions.md 新增 obsidian 审查 Section 引入新引用关系,更新 MEMORY.md「引用」列:decisions 1→3(按源去重,新增 lint_report 与 feedback_plugin_dev 作为源);project_overview / feedback_plugin_dev 仍为 1(同源去重) -- [x] **核心枢纽阈值达成**:`decisions.md` 文件级引用数 = 3(feedback_plugin_dev / lint_report / project_overview 三源),达到 SYNTHESIS_THRESHOLD(3),列入下方核心枢纽节点 - ---- - -## 核心枢纽节点(文件级引用 ≥ SYNTHESIS_THRESHOLD = 3) - -| 文件 | 引用源数 | 含义 | -|------|--------|------| -| **decisions.md** | 3 | 该文件已成为记忆体系的中心节点(被 3 个不同 memory 文件引用);新增决策时优先考虑是否会形成跨多领域影响 | +- [x] 更新断链(Phase 3A,章节标题漂移):`decisions.md` 内 `[[feedback_plugin_dev.md#skill 不要重写 MCP 参数表,引用 docstring]]` → `[[feedback_plugin_dev.md#skill 不要重写 MCP 参数表,引用 docstring 为单一真相]]` +- [x] 更新断链(Phase 3A,章节标题漂移):`decisions.md` 内 `[[feedback_plugin_dev.md#签名变更全量扫描]]` → `[[feedback_plugin_dev.md#MCP 后端工具签名变更后必须全量扫描所有 skill]]` +- [x] MEMORY.md「引用」列已刷新(按源文件去重重新计数,见下方文件级引用计数表;`decisions.md` 3→2,因 lint_report.md 本身不再含旧版 wikilink) --- @@ -46,15 +39,19 @@ commit: fad7335 |------|----------|------| | — | — | 无候选 | -当前所有 decisions/feedback 条目的**单 section 级**跨文件引用数均 < 3,无 synthesis 升级候选。文件级已达阈值不触发 section 升级。 +当前所有 decisions/feedback 条目的**单 section 级**跨文件引用数均 < 3,无 synthesis 升级候选。 --- ## NEED-HUMAN 待处理清单 -✅ 本次扫描无 NEED-HUMAN 待处理项,记忆体系健康。 +### [WARN] 双链非对称 — 3B 目标章节缺少精确反向链接 -**备注**:`synonyms.md` 不存在,矛盾检测使用保守模式(仅检测直接数值/版本冲突)。如项目有领域术语缩写,建议创建 `.claude/memory/synonyms.md`(首次创建后会被 Phase 2 自动登记为 reference 类型入索引)。 +- **A→B**:`decisions.md → ## obsidian skill 集对标社区基准的审查 + 优化` → `[[feedback_plugin_dev.md#MCP 后端工具签名变更后必须全量扫描所有 skill]]` +- **现状**:`feedback_plugin_dev.md` 全文件对 `decisions.md` 有反向引用(`## skill 不要重写 MCP 参数表...` 一节内的 See Also),但不在本次目标章节 `## MCP 后端工具签名变更后必须全量扫描所有 skill` 内,按边界规则不自动追加,仅记录。 +- **说明**:非结构性错误(目标文件/章节均存在,链接有效),纯属"是否需要精确双链"的风格判断,不影响可读性,可长期搁置。 +- **矩阵**:若希望强化双链闭环 → 在该章节末尾追加 `**See Also**:[[decisions.md#obsidian skill 集对标社区基准的审查 + 优化]]`;若认为文件级已有反向引用足够 → 标记 resolved 即可。 + --- @@ -62,7 +59,22 @@ commit: fad7335 | 文件 | 被引用次数(去重源) | 引用来源 | |------|-------|---------| -| **decisions.md** | **3** | feedback_plugin_dev.md / lint_report.md / project_overview.md | +| **decisions.md** | **2** | feedback_plugin_dev.md / project_overview.md | | project_overview.md | 1 | decisions.md(含 2 个 wikilink,同源去重为 1) | -| feedback_plugin_dev.md | 1 | decisions.md(含 2 个 wikilink:memcore-shared 共享层 + obsidian 审查 See Also,同源去重为 1) | +| feedback_plugin_dev.md | 1 | decisions.md(含 2 个 wikilink,同源去重为 1) | | lint_report.md | 0 | — | + +**备注**:`decisions.md` 文件级引用数由 3 降为 2(未跌破规则,是 lint_report.md 本身历史上不含 wikilink 却被误计入源——本次按 grep 实测重新计数),暂不满足 `SYNTHESIS_THRESHOLD`(3) 核心枢纽节点条件。 + +`synonyms.md` 不存在,矛盾检测使用保守模式(仅检测直接数值/版本冲突)。如项目有领域术语缩写,建议创建 `.claude/memory/synonyms.md`。 + +--- + +## 过期检测明细(速度分档,本次生效的新逻辑) + +| 文件 | last_updated | days_since | commits_since(全仓库) | velocity(次/天) | 判定 | +|------|-------------|-----------|----------------------|------------------|------| +| project_overview.md | 2026-06-12 | 28 | 8 | 0.29 | 低于 LOW_VELOCITY(0.3),不判定过期 | +| feedback_plugin_dev.md | 2026-06-12 | 28 | 8 | 0.29 | 低于 LOW_VELOCITY(0.3),不判定过期 | +| decisions.md | 2026-07-10 | 0 | — | — | 不足 MIN_DAYS(7),跳过 | +| lint_report.md | 2026-07-10 | 0 | — | — | 不足 MIN_DAYS(7),跳过 | diff --git a/CLAUDE.md b/CLAUDE.md index 0ac71e5..cb11aaa 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,4 +1,4 @@ - + # CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. @@ -93,7 +93,9 @@ description: 一句话说明该技能的用途(Claude 用此判断何时触发 **关键常量统一来源**(修改 memcore-shared 一处即可全局生效): - `SYNTHESIS_THRESHOLD` = 3(synthesis 升级跨文件引用阈值) -- `LINT_STALE_WARN_DAYS` = 30 / `LINT_STALE_ERROR_DAYS` = 90(过期阈值) +- `LINT_STALE_MIN_DAYS` = 7(过期检测最低观察窗口,不足则跳过) +- `LINT_HIGH_VELOCITY` = 1.0 次/天 / `LINT_LOW_VELOCITY` = 0.3 次/天(过期检测速度分档:全仓库提交速度 ≥ 高值 ERROR,≥ 低值 WARN) +- `LINT_STALE_ABSOLUTE_DAYS` = 180(低速仓库的过期绝对兜底天数) - `MULTI_HOST_WARN_DAYS` = 7(多机不同步预警阈值) ## 记忆体系(会话启动必读) @@ -111,7 +113,7 @@ description: 一句话说明该技能的用途(Claude 用此判断何时触发 ``` .claude/memory/ ├── MEMORY.md # 索引(入口) -├── decisions.md # 关键架构决策(含 memcore-shared/lint_report 保活/Base commit 兜底/obsidian 社区对标审查等 12 项) +├── decisions.md # 关键架构决策(含 memcore-shared/lint_report 保活/Base commit 兜底/obsidian 社区对标审查/memory-lint 速度分档过期检测等 13 项) ├── project_overview.md # 项目定位与结构(huanxi/memcore/obsidian 10 技能 已发布插件) ├── feedback_plugin_dev.md # 插件开发协作规范(含 MCP docstring 单一真相、签名变更全量扫描) └── lint_report.md # 记忆健康检查报告(按需)