mcpField
S
scheduled-summary

scheduled-summary

github.com/moonlight-lupin生产力113124 次安装1 天前更新
代码仓库

关于 scheduled-summary

scheduled-summary 是一款命令行技能,可将配置的本地数据源整理为定期摘要。它面向需要快速查看会话、定时任务、记忆变化、工具使用情况和待办事项的运维人员,支持 Markdown、JSON 和纯文本输出。

主要功能

  1. 01读取配置的会话、定时任务、记忆和日志来源
  2. 02按指定时间范围筛选活动
  3. 03汇总活动、错误和待办事项
  4. 04输出 Markdown、JSON 或纯文本
  5. 05支持选择摘要章节并生成配置模板

适用场景

  1. 01生成每日或每周活动摘要
  2. 02检查定时任务失败和逾期运行
  3. 03跟踪工具使用情况和日志错误
  4. 04为通知渠道生成精简摘要

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/moonlight-lupin/agent-skills --skill scheduled-summary

安装后在 Claude Code 中输入/scheduled-summary确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
data-sources.md
digest-format.md
scripts/
summarize.py
templates/
digest-template.md
tests/
test_summarize.py

详细介绍

定时摘要

概述

消息平台非常适合进行单次活跃对话,但它们会隐藏其他地方发生的活动:其他会话、定时任务、已保存的记忆,以及之前工作中尚未解决的事项。此技能会生成周期性摘要,以简洁的形式呈现跨会话活动,适用于聊天消息平台或任何支持 Markdown 或纯文本的通知渠道。

此摘要专为 cron 调度器设计。它会读取可选的本地数据源(会话存储、cron 输出目录、记忆 JSON 文件和日志文件),将活动筛选到可配置的时间范围内,并输出 Markdown、JSON 或纯文本。未配置数据源时,它会输出模板摘要,供 Agent 查询自身平台特定的会话历史、调度器状态和记忆工具后填写。

快速开始

在此技能目录中:

python scripts/summarize.py generate --since 24h

显式指定数据源:

python scripts/summarize.py generate \
  --since 24h \
  --sessions-db /path/to/sessions.sqlite \
  --cron-dir /path/to/cron-output \
  --memory-dir /path/to/memory-json \
  --log-file /path/to/agent.log

显示当前配置和已跳过的数据源:

python scripts/summarize.py config

创建配置模板以供填写:

python scripts/summarize.py init --output .summary-config.json

摘要包含的内容

  1. 会话活动 — 时间范围内开始或完成的会话,以及可用时的主题标题。
  2. Cron 任务状态 — 成功运行的任务、失败的任务,以及根据其输出文件标记为逾期的任务。
  3. 记忆变更 — JSON 记录中的新保存记忆和更新的事实。
  4. 工具使用情况 — 文本或 JSONL 日志文件中使用最多的工具、调用总数和错误计数。
  5. 待处理事项 — 到期的决策审查、未完成任务,以及会话记录中发现的类似 TODO 的事项。
  6. 时间范围 — 除非来源明确将某项标记为逾期,否则每个部分都限定在 --since(24h、7d、2w 等)指定的范围内。

工作流

  1. 选择发送频率。 每日是不错的默认选择。对于活动较少的系统,每周一次也可以。除非下游渠道支持良好的串接或批处理,否则应避免高频摘要。
  2. 选择数据源。 仅配置你信任摘要读取的数据存储。先从 cron 输出和日志开始,了解其架构后再添加会话和记忆存储。
  3. 先手动生成一次。 运行 generate --since 24h,检查结果的长度、敏感字段和重复事项。
  4. 调整各部分。 使用 --sections sessions,cron,outstanding,让首次定时摘要保持简短。如果 memory 和 tools 有用,再将其添加进去。
  5. 安排命令。 从 cron 调度器运行该命令,并将输出重定向到渠道集成或通知程序读取的文件。
  6. 一周后复查。 检查摘要是否呈现了可执行事项。移除噪声较多的部分,并添加缺失的数据源路径。

完成标准:定时命令生成的摘要包含生成时间戳和请求的部分,且不包含意外的机密信息或完整会话记录。

Cron 调度器设置

通用的每日 cron 调度器条目:

0 8 * * * cd /path/to/scheduled-summary && python scripts/summarize.py generate --since 24h --output /tmp/activity-digest.md

使用环境变量而非标志的示例:

0 8 * * * SESSIONS_DB=/data/sessions.sqlite CRON_OUTPUT_DIR=/data/cron MEMORY_DIR=/data/memory LOG_FILE=/data/agent.log python /path/to/scheduled-summary/scripts/summarize.py generate --since 24h

要将内容发送到消息平台,请使用你自己的通知程序传递或发布生成的文件:

python scripts/summarize.py generate --since 24h --output /tmp/digest.md
python /path/to/send_notification.py /tmp/digest.md

将通知程序与摘要生成器分开,以便脚本能跨平台移植。

输出格式

Markdown 输出针对聊天平台进行了优化:

  • 紧凑的 ## / ### 标题。
  • 使用项目符号,而非段落。
  • 使用表情符号状态标记,便于快速浏览。
  • 使用简短的引用主题,而非会话记录摘录。
  • 仅在有助于呈现密集统计数据时使用代码块。
  • 末尾附带 UTC 生成时间戳。

支持的格式:

python scripts/summarize.py generate --format markdown
python scripts/summarize.py generate --format json
python scripts/summarize.py generate --format text

写入文件:

python scripts/summarize.py generate --since 7d --output weekly-digest.md

自定义

仅包含特定部分:

python scripts/summarize.py generate --sections sessions,cron,outstanding

常见的部分组合:

  • 每日运营摘要: sessions,cron,outstanding
  • 每周回顾: sessions,cron,memory,tools,outstanding
  • 低噪声健康检查: cron,tools
  • 由 Agent 填写的模板: 不配置源路径运行,然后使用平台专用工具填写占位符。

使用标志、环境变量或生成的配置文件来配置路径:

来源标志环境变量
会话 SQLite 数据库--sessions-dbSESSIONS_DB
Cron 输出目录--cron-dirCRON_OUTPUT_DIR
内存 JSON 目录--memory-dirMEMORY_DIR
工具/日志文件--log-fileLOG_FILE
决策记录--decisions-dirDECISIONS_DIR

有关预期格式和架构说明,请参阅 references/data-sources.md。

集成

decision-log

如果有可用的决策记录目录,请通过 --decisions-dir 或 DECISIONS_DIR 传入。摘要会扫描 Markdown 决策记录,查找已接受或 拟议的决策中 Next review: YYYY-MM-DD 日期已到期的条目,然后在“待处理”部分 报告数量和标题。

news-monitoring

新闻监控任务通常会写入定期生成的输出文件。将 --cron-dir 指向 包含这些输出的目录。摘要将报告监控是否已运行、成功、失败或被标记为逾期。 请将完整的新闻摘要保存在单独的文件中;定期生成的摘要只需提及监控是否运行 以及是否需要采取行动。

常见问题

  1. 内容太冗长,不适合聊天。 不要将完整转录或完整 Cron 日志粘贴到 摘要中。只呈现数量、标题和一行式行动事项。
  2. 敏感数据泄露。 会话标题、记忆事实和日志行可能 包含机密或个人数据。请手动检查初次生成的输出,并在必要时对上游来源进行脱敏。
  3. 运行过于频繁。 每小时生成摘要往往会造成通知疲劳,并与当前聊天内容重复。通常每天或每周运行更合适。
  4. 摘要之间没有去重。 如果同一逾期事项每天都出现,请解决它、在上游将其抑制,或在此摘要之外指定固定的决策/任务负责人。
  5. 将模板模式视为完整数据。 输出中出现占位符,表示没有可读取的数据源。Agent 或操作人员必须使用平台工具填写内容。
  6. 假设会话架构普遍通用。 不同平台的会话存储各不相同。 脚本会尽力通过 SQLite 自省获取信息,但准确计数取决于 可用列。
  7. 混合生成与发送。 请让摘要生成器独立于平台专用的 webhook 或机器人代码;这样更易于测试和迁移。

此技能不提供什么

  • 不是会话搜索工具。需要查找特定对话时,请使用平台的会话搜索或转录浏览器。
  • 不是完整的转录导出工具。它仅汇总标题、数量和类似 TODO 的行。
  • 不能替代会话浏览。它可帮助你决定接下来要检查什么。
  • 不是完整的调度器仪表板。它会读取输出文件和状态标记,但不会管理或运行调度器。
  • 不是机密扫描器。它可以减少冗长内容,但无法保证源数据可安全发送到消息平台。

参考文件

  • references/digest-format.md — 部分规范、输出变体,以及每日和每周示例。
  • references/data-sources.md — 来源配置、预期格式和架构示例。
  • templates/digest-template.md — 供 Agent 填写或手动整理的空白 Markdown 模板。
  • scripts/summarize.py — 用于生成、配置和初始化摘要文件的标准库 CLI。

验证清单

  • python scripts/summarize.py --help 会显示 generate、config 和 init。
  • 不配置来源时,python scripts/summarize.py generate --since 24h 可以正常运行, 并输出模板模式的内容。
  • 配置来源后进行模拟运行,输出仅包含时间窗口内的事件,明确逾期的定时任务除外。
  • --sections 会从 Markdown、JSON 和文本中排除未包含的部分。
  • --format json 会返回可解析的 JSON。
  • 在将首次定时输出连接到消息平台之前,已检查其中是否包含机密信息,以及长度是否过长。

评论

支持 Markdown