npx claudepluginhub cuipengfei/prompts --plugin session-learnThis skill uses the workspace's default tool permissions.
双模式学习引擎:分析交互内容,提取有价值的学习并持久化。
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
双模式学习引擎:分析交互内容,提取有价值的学习并持久化。
两种模式共享同一条处理管线(信号提取 → 四层分类 → 存储探测 → 确认 → 持久化),区别仅在于数据从哪来。
先判断数据源,再进入统一流程。
判断规则(按优先级):
注意:参数中偶然包含"历史"一词(如"分析历史片段")不触发历史模式。只有参数以"历史分析"作为显式前缀时才切换。
根据模式路由结果,选择对应的数据采集方式。两种方式的输出相同:一组待分析的原始交互数据。
回顾当前会话内容,直接进入 Phase 2。
从 agent 历史会话日志中批量采集交互数据。
核心原则: 不硬编码任何路径。利用 agent 的自认知能力自适应定位资源。
~/.<tool-name>/ 或 ~/.local/share/<tool-name>/)CLAUDE.md、AGENTS.md、.claude/CLAUDE.md、.claude/AGENTS.md,记录路径和内容摘要~/.<agent-name>/、XDG ~/.local/share/<agent-name>/)*.jsonl、*.db/*.sqlite、*.json)向用户报告发现结果(配置文件 + 相关会话数量),确认后继续。
对采集到的数据,使用以下维度提取有价值的信号。
| 维度 | 关注点 |
|---|---|
| 进展顺利 | 成功的方法、有效的解决方案、好的决策 |
| 进展不顺 | 失败的尝试、错误的方向、浪费时间的地方 |
| 明确纠正 | 用户纠正的地方、拒绝的建议、表达不满的地方。检测纠正短语——中文:"不要"/"别"/"不是…是…"/"我说的是"/"请用";英文:"don't"/"stop"/"I said"/"I meant"/"please use" |
| 推断偏好 | 沟通风格、工具偏好、代码风格、工作流习惯 |
历史数据源拥有多会话视角,额外检测以下模式:
| 信号类型 | 检测方法 |
|---|---|
| 重复纠正 | 对"明确纠正"结果按主题聚类。同一主题跨 ≥2 个会话被纠正 → 信号升级为高优先级 |
| 隐含偏好 | 用户在 ≥3 个会话中对同类选择做出相同决定(工具选择、文件命名、代码风格、沟通语言、响应长度等),但配置中无对应规则 |
| 偏好冲突 | 先提取现有配置中的规则列表。有规则但仍被纠正 → 规则表述不清或已过时,需更新 |
| 过时规则 | 提取配置文件中所有具体行为规则(排除身份性/通用性规则)。最近 10+ 个会话中从未触发且不属于低频场景 → 标记为可能过时 |
| 负面情绪 | 搜索情绪信号词:连续感叹号(≥2)、全大写词(≥3字母)、"又"/"again"/"为什么总是"/"怎么又"。仅标记相关会话片段供人工审查,不直接生成建议——情绪信号需人工判断根因 |
对每个提取的信号,记录:
| 层级 | 核心问题 | 特性 |
|---|---|---|
| Layer 1: 用户配置 | "每个会话都需要知道什么?" | 跨项目、身份性、自动加载 |
| Layer 2: 项目根配置 | "这个项目整体需要知道什么?" | 项目级、版本控制 |
| Layer 3: 子模块配置 | "这个子模块需要知道什么?" | 子模块特定、就近原则 |
| Layer 4: 情境记忆 | "特定情境下需要召回什么?" | 情境性、按需查询 |
对于每个学习项,依次问:
│
├─ Q1: 是否是每个新会话、跨所有项目都需要的信息?
│ ├─ 是 → Layer 1 用户配置
│ └─ 否 → 继续 Q2
│
├─ Q2: 是否与当前项目整体相关?
│ ├─ 是 → Layer 2 项目根配置
│ └─ 否 → 继续 Q3
│
├─ Q3: 是否与项目中某个特定子模块/子目录相关?
│ ├─ 是 → Layer 3 子模块配置(写入最近的子目录配置文件)
│ └─ 否 → 继续 Q4
│
└─ Q4: 是否是特定情境才需要的经验/知识/解决方案?
└─ 是 → Layer 4 情境记忆
关键区分:
| 学习内容 | 层级 | 理由 |
|---|---|---|
| "用户偏好 bun 而非 npm" | L1 用户 | 跨项目的工具选择 |
| "用户偏好简洁响应" | L1 用户 | 跨项目的风格偏好 |
| "用户偏好中文交流" | L1 用户 | 跨项目的语言设置 |
| "这个项目有 21 个独立插件" | L2 项目根 | 项目整体结构 |
| "插件 plugin.json 不要用 $schema 字段" | L2 项目根 | 项目通用规范 |
| "oc-tweaks 发布必须走 CI,禁止 npm publish" | L3 子模块 | oc-tweaks 子模块特定 |
| "openspec proposal 必须包含 Why 和 What Changes" | L3 子模块 | openspec 子模块特定 |
| "GitHub Code Search 按相关性排序" | L4 情境记忆 | 特定技术的经验教训 |
| "并行 API 调用用 ThreadPoolExecutor" | L4 情境记忆 | 特定场景的解决方案 |
在持久化前,先探测当前环境可用的存储后端。不假设任何特定插件或 MCP 存在。
L1/L2/L3 本质相同:都是扫描 CLAUDE.md 和 AGENTS.md,只是扫描层级不同。不硬编码具体路径——不同 agent 工具的用户级目录各异,由 agent 根据自身环境自适应探测。
| 层级 | 扫描范围 |
|---|---|
| L1 用户配置 | 用户级 agent 配置目录(如 ~/.<agent-name>/)下的 CLAUDE.md、AGENTS.md |
| L2 项目根配置 | 项目根目录及其 .claude/ 子目录下的 CLAUDE.md、AGENTS.md |
| L3 子模块配置 | 项目子目录中已存在的 CLAUDE.md、AGENTS.md(排除根目录、node_modules 等) |
统一规则:
按优先级探测:
*.md 文件)→ 用 Read/Edit/Write.memory/ 目录,以 markdown 文件存储原则: 探测到什么用什么。不要求用户安装任何额外依赖。
## 学习摘要
### L1 用户配置(写入 {探测到的文件名})
- [学习项 1]
### L2 项目根配置(写入 {探测到的文件名})
- [学习项 1]
### L3 子模块配置(写入 {探测到的文件名})
- [子模块知识 1]
### L4 情境记忆(写入 {探测到的后端描述})
- [经验 1]
### 标记过时(如有)
- [规则 1] — 原因:最近 N 个会话中从未触发
### 待确认(如有)
- [发现 1] — 需要用户判断:[具体问题]
使用 AskUserQuestion 让用户逐条审核:
用户可选择全部、部分或跳过。
确认后:
patterns.md),保持简洁,用 bullet points仅在使用了支持图谱/实体的记忆工具时执行。文件系统后端不需要。
数据已干净则说明"已检查,无需整理"。
| 场景 | 处理方式 |
|---|---|
| 配置文件不存在 | 创建并添加适当头部 |
| 子模块无配置文件 | 归入 Layer 2 |
| 情境记忆后端不可用 | 降级到下一优先级后端 |
| 所有后端都不可用 | 使用兜底方案 |
| 用户拒绝所有项目 | 确认并不持久化 |
| 找不到会话历史(历史数据源) | 报告搜索路径和结果,请用户指定位置 |
| 会话格式无法解析(历史数据源) | 读取少量样本推断结构;失败则跳过,继续处理其他会话源,最终报告跳过清单及原因 |
| 会话数据过大(历史数据源) | 严格遵守 20 会话上限,优先最近的 |
| 无有意义的模式 | 如实报告"未发现明显的改进信号",不生造建议 |