chore: memory-sync — 归档 memcore-shared/lint_report 保活/Base commit 兜底等决策
- decisions.md 新增 3 项:memcore-shared 共享层、lint_report 增量保活、Phase 1 锚点兜底 - feedback_plugin_dev.md 新增 2 项:skill 不重写 MCP 参数表、签名变更全量扫描 - project_overview.md:memcore 技能数 3→4,新增 memcore-shared - AUTO-FIX:feedback#skill-不重写MCP参数表 补反向引用至 decisions - 引用列:decisions/project_overview/feedback 均为 1,lint_report 为 0 - CLAUDE.md 元数据更新(commit 38beecb),引导区块刷新 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
38beecb2d0
commit
a9a89e57c3
@@ -2,8 +2,8 @@
|
||||
name: 架构决策
|
||||
description: Marketplace 设计中的关键技术决策及其原因
|
||||
type: project
|
||||
last_updated: 2026-05-10
|
||||
commit: f26e741
|
||||
last_updated: 2026-06-12
|
||||
commit: 38beecb
|
||||
---
|
||||
|
||||
# 关键架构决策
|
||||
@@ -95,6 +95,40 @@ commit: f26e741
|
||||
|
||||
---
|
||||
|
||||
## memcore-shared:路径锁定 + 全局常量的单一来源
|
||||
|
||||
**结论**:把路径锁定、全局常量(SYNTHESIS_THRESHOLD / LINT_STALE_*_DAYS / MULTI_HOST_WARN_DAYS)、PROJECT_DIR 跨平台解析提取到独立 skill `memcore-shared`,三个主技能(memory-sync / memory-update / memory-lint)开头 `Read ../memcore-shared/SKILL.md` 引用其约束。description 中显式说明"内部 include,不由用户直接调用"。
|
||||
|
||||
**Why**:原设计中 memory-update 和 memory-lint 各自维护一份 20 行的"路径锁定"块,完全重复;阈值常量 `≥3`、`≥30/90 天`、`≥7 天` 分散硬编码在多个文件多个位置,调整需多处改动。共享层独立成 skill 后:① 单点维护、② 阈值修改只动一处、③ 与 huanxi-shared 同模式,可演进性强。
|
||||
|
||||
**How to apply**:未来 memcore 类多 skill 插件如出现「共享约束 + 多处硬编码常量」时,提取为独立 `<plugin>-shared` skill;常量声明在共享 skill 顶部表格,子技能引用常量名而非裸数字。
|
||||
|
||||
**See Also**:[[decisions.md#memcore memory-update/lint 路径锁定:禁止写入系统自动记忆路径]] [[feedback_plugin_dev.md#skill 不要重写 MCP 参数表,引用 docstring]]
|
||||
|
||||
---
|
||||
|
||||
## memcore lint_report 增量保活:稳定 ID + resolved 跳过
|
||||
|
||||
**结论**:lint Phase 8 生成 NEED-HUMAN 条目时,末尾附 `<!-- id: 8位sha1 -->`(基于 phase + 文件 + 章节 + 关键事实计算)。Phase 8-pre 提取旧 `lint_report.md` 中带 `<!-- resolved -->` 标记的 ID 集合,新报告中同 ID 条目跳过。
|
||||
|
||||
**Why**:原 lint_report.md 每次覆盖写入,用户即使在 NEED-HUMAN 条目处理完或决定"不处理"后,下次 lint 仍会重新列出。导致信号疲劳,长期看反而忽视所有 lint 提示。引入稳定 ID + resolved 标记后,用户对每个条目的判断(处理/接受现状)能跨多次 lint 持续生效,lint_report 变成只列"真正待处理"的事项。
|
||||
|
||||
**How to apply**:任何"周期性扫描 + 报告生成"的 lint/check 系统,凡有用户主观判断维度(不只是机器判定)时,输出条目都应有稳定 ID + 用户标记跳过机制。ID 计算用「问题本体」字段(位置+事实),不要包含执行时间/扫描序号。
|
||||
|
||||
---
|
||||
|
||||
## memory-update Phase 1 锚点丢失兜底
|
||||
|
||||
**结论**:memory-update Phase 1 读 `Base commit` 锚点时,若 MEMORY.md 头部该行缺失或为 N/A,从各 memory 文件 frontmatter 的 `commit:` 字段取最旧值兜底,避免退化为全量。
|
||||
|
||||
**Why**:MEMORY.md 头部 `Base commit: HASH` 是单一锚点来源,一旦用户手动编辑误删此行,整个 git diff 范围退化为全量审查,触发 memory-update 对所有文件做"按变更维度重写"。即使大部分文件没真实变化,也会被刷一次 last_updated 和 commit 字段,造成虚假改动。兜底机制从各文件 frontmatter 取最旧 commit,确保覆盖所有真实差量而非无差别全量。
|
||||
|
||||
**How to apply**:任何"单点配置 → 关键路径"的设计,必须考虑配置丢失时的退路。优先级:单点 → 多点冗余 → 兜底推导。memcore 当前是「单点 + 兜底推导」,无需冗余存储。
|
||||
|
||||
**See Also**:[[decisions.md#memcore memory-sync:冲突检测必须先于 git commit]]
|
||||
|
||||
---
|
||||
|
||||
## SKILL.md frontmatter 只保留 name 和 description
|
||||
|
||||
**结论**:SKILL.md frontmatter 只写 `name` 和 `description` 两个字段,去掉 `version`。
|
||||
|
||||
Reference in New Issue
Block a user