xulei-shl

memory-updater

0
0
# Install this skill:
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:直接输入关键词

用户直接提供关键词列表,跳过数据提取。

执行流程

  1. 如果用户输入未包含关键词,使用 AskUserQuestion 询问:
请选择输入方式:
  [1] 直接输入关键词(如:智能客服, 知识问答)
  [2] 从期刊数据提取
  [3] 取消
  1. 解析关键词(支持逗号、顿号分隔)

  2. 执行"统一更新流程"(见下文)


模式 B:指定期刊(最新 N 期)

从指定期刊的最新 N 期论文数据中提取关键词。

执行流程

  1. 解析参数
  2. 期刊名:必需
  3. 期数:可选,默认 2 期

  4. 定位数据文件
    bash # 查找指定期刊目录下最新的 JSON 文件(排除 filtered.json) ls -t outputs/{期刊名}/*.json | grep -v filtered | head -{N}

  5. 数据不存在处理

  6. 如果 outputs/ 目录不存在或无数据:

    • 询问用户:是否切换到模式 A(手动输入)
    • 或提示先使用 cnki-journals-fetcher 爬取数据
  7. 提取关键词
    bash python {baseDir}/.claude/skills/memory-updater/scripts/extract_keywords.py \ outputs/{期刊名}/{年-期}.json

  8. 执行"统一更新流程"


模式 C:指定期刊年期

从指定的期刊年期文件中提取关键词。

执行流程

  1. 解析参数
  2. 期刊名:必需
  3. 年期:必需(格式:YYYY-N 或 YYYY年第N期)

  4. 定位数据文件
    bash # 检查文件是否存在 outputs/{期刊名}/{年-期}.json

  5. 数据不存在处理

  6. 如果文件不存在,提示检查路径或切换模式

  7. 提取关键词(同模式 B)

  8. 执行"统一更新流程"


统一更新流程

所有模式最终执行此流程完成更新:

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.