Use when you have a written implementation plan to execute in a separate session with review checkpoints
npx skills add xulei-shl/cnki-journal-fetcher --skill "memory-updater"
Install specific skill from multi-skill repository
# Description
更新 MEMORY.md 中的研究兴趣关键词。当用户提到'更新记忆'、'更新 memory'、'更新研究兴趣'时触发,或直接调用 /memory-updater。支持直接输入关键词、从期刊论文数据提取、指定期刊年期等模式。
# SKILL.md
name: memory-updater
description: "更新 MEMORY.md 中的研究兴趣关键词。当用户提到'更新记忆'、'更新 memory'、'更新研究兴趣'时触发,或直接调用 /memory-updater。支持直接输入关键词、从期刊论文数据提取、指定期刊年期等模式。"
allowed-tools: "Read, Edit, Write, Bash, Glob, Grep, AskUserQuestion, Task"
MEMORY.md 更新工具
智能更新 MEMORY.md 中的研究兴趣关键词,支持多种输入模式。
概述
从用户输入或期刊论文数据中提取关键词,与 MEMORY.md 现有关键词合并,保持研究兴趣配置的时效性。
触发识别
自然语言触发
当用户输入包含以下模式时,自动触发:
- "更新记忆"、"更新 memory"
- "更新研究兴趣"、"更新关键词"
- 指定期刊:"更新 memory 中国图书馆学报"
命令触发
/memory-updater
工作流程
前置检测:确定工作模式
根据用户输入解析模式参数:
| 输入模式 | 解析结果 | 示例 |
|---|---|---|
| 直接关键词 | 模式 A | "更新 memory 智能客服, 知识问答" |
| 期刊名 + 可选期数 | 模式 B | "更新 memory 中国图书馆学报 最新2期" |
| 期刊名 + 年期 | 模式 C | "更新 memory 中国图书馆学报 2025-5" |
| 无参数 | 询问模式 | "更新 memory" |
模式 A:直接输入关键词
用户直接提供关键词列表,跳过数据提取。
执行流程:
- 如果用户输入未包含关键词,使用 AskUserQuestion 询问:
请选择输入方式:
[1] 直接输入关键词(如:智能客服, 知识问答)
[2] 从期刊数据提取
[3] 取消
-
解析关键词(支持逗号、顿号分隔)
-
执行"统一更新流程"(见下文)
模式 B:指定期刊(最新 N 期)
从指定期刊的最新 N 期论文数据中提取关键词。
执行流程:
- 解析参数
- 期刊名:必需
-
期数:可选,默认 2 期
-
定位数据文件
bash # 查找指定期刊目录下最新的 JSON 文件(排除 filtered.json) ls -t outputs/{期刊名}/*.json | grep -v filtered | head -{N} -
数据不存在处理
-
如果 outputs/ 目录不存在或无数据:
- 询问用户:是否切换到模式 A(手动输入)
- 或提示先使用 cnki-journals-fetcher 爬取数据
-
提取关键词
bash python {baseDir}/.claude/skills/memory-updater/scripts/extract_keywords.py \ outputs/{期刊名}/{年-期}.json -
执行"统一更新流程"
模式 C:指定期刊年期
从指定的期刊年期文件中提取关键词。
执行流程:
- 解析参数
- 期刊名:必需
-
年期:必需(格式:YYYY-N 或 YYYY年第N期)
-
定位数据文件
bash # 检查文件是否存在 outputs/{期刊名}/{年-期}.json -
数据不存在处理
-
如果文件不存在,提示检查路径或切换模式
-
提取关键词(同模式 B)
-
执行"统一更新流程"
统一更新流程
所有模式最终执行此流程完成更新:
1. 读取 MEMORY.md,解析现有关键词
Read {baseDir}/MEMORY.md
提取"关注主题词"行,解析关键词列表:
- 支持逗号、顿号、空格分隔
- 去除注释(时间戳)
- 去重、去空
2. 提取新关键词
模式 A/B/C 来源不同:
- 模式 A:用户直接输入
- 模式 B/C:extract_keywords.py 脚本输出
3. 对比找出新增关键词
将新关键词与现有关键词对比,过滤已存在的。
4. 按频率分组显示候选词列表
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
💾 MEMORY.md 更新建议
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
提取到以下候选关键词:
📊 出现频率 >= 2:
☐ [1] 智能客服 (出现 3 次)
☐ [2] 知识问答 (出现 2 次)
📊 出现频率 = 1:
☐ [3] 数字人文
☐ [4] 阅读推广
...
当前 MEMORY.md 中的关键词:
知识组织、信息组织、元数据、智慧图书馆、AI应用...
请选择要添加的关键词:
• 输入编号选择(如 "1,3")
• 输入 "all" 选择所有
• 输入 "none" 跳过更新
注:模式 A(直接输入)时频率为 1,不分组显示
5. 用户选择后执行智能合并
使用 Edit 工具更新 MEMORY.md 中的"关注主题词"行:
# 伪代码逻辑
1. 读取 MEMORY.md
2. 找到"关注主题词"行
3. 解析现有关键词
4. 合并新关键词(去重)
5. 生成新行,添加时间戳注释
6. 使用 Edit 替换原行
更新格式示例:
- 关注主题词:知识组织、信息组织、资源描述、元数据、资源编目、馆藏资源管理、智慧图书馆、图书馆服务平台、图书馆系统、AI应用研究、大模型、智能体(Agent)、检索增强生成(RAG)、知识图谱、智能客服、知识问答 # 更新于 2025-02-01
6. 显示结果总结
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ MEMORY.md 更新完成
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📊 更新统计
┌─────────────────────────────────────┐
│ 原有关键词 │ XX 个 │
│ 新增关键词 │ XX 个 │
│ 总计 │ XX 个 │
└─────────────────────────────────────┘
✅ 新增关键词:
智能客服、知识问答、数字人文
📁 已更新: {baseDir}/MEMORY.md
错误处理
| 错误场景 | 处理方式 |
|---|---|
| MEMORY.md 不存在 | 提示用户创建或跳过更新 |
| 找不到"关注主题词"行 | 在文件末尾追加新段落 |
| 新关键词为空 | 跳过更新步骤 |
| 用户选择 "none" | 不执行更新 |
| outputs 目录不存在(模式 B/C) | 提示降级到模式 A |
| JSON 文件不存在(模式 C) | 提示检查路径或切换模式 |
常量定义
| 常量 | 值 |
|---|---|
| MEMORY.md 路径 | {baseDir}/MEMORY.md |
| 提取脚本路径 | {baseDir}/.claude/skills/memory-updater/scripts/extract_keywords.py |
| 数据目录 | {baseDir}/outputs/ |
| 默认期数(模式 B) | 2 |
外部调用
本 skill 可被其他 skill/subagent 调用:
调用示例(从 cnki-journals-fetcher 步骤 10.2):
Task(
subagent_type="memory-updater-agent",
description="更新 MEMORY.md 研究关键词",
prompt="使用模式 C,从 {期刊名} {年-期}.json 中提取关键词并更新 MEMORY.md"
)
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.