关于 scheduled-summary
scheduled-summary 是一款命令行技能,可将配置的本地数据源整理为定期摘要。它面向需要快速查看会话、定时任务、记忆变化、工具使用情况和待办事项的运维人员,支持 Markdown、JSON 和纯文本输出。
主要功能
- 01读取配置的会话、定时任务、记忆和日志来源
- 02按指定时间范围筛选活动
- 03汇总活动、错误和待办事项
- 04输出 Markdown、JSON 或纯文本
- 05支持选择摘要章节并生成配置模板
适用场景
- 01生成每日或每周活动摘要
- 02检查定时任务失败和逾期运行
- 03跟踪工具使用情况和日志错误
- 04为通知渠道生成精简摘要
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ moonlight-lupin/ agent-skills --skill scheduled-summary安装后在 Claude Code 中输入/scheduled-summary确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/data-sources.mddigest-format.mdscripts/summarize.pytemplates/digest-template.mdtests/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
摘要包含的内容
- 会话活动 — 时间范围内开始或完成的会话,以及可用时的主题标题。
- Cron 任务状态 — 成功运行的任务、失败的任务,以及根据其输出文件标记为逾期的任务。
- 记忆变更 — JSON 记录中的新保存记忆和更新的事实。
- 工具使用情况 — 文本或 JSONL 日志文件中使用最多的工具、调用总数和错误计数。
- 待处理事项 — 到期的决策审查、未完成任务,以及会话记录中发现的类似 TODO 的事项。
- 时间范围 — 除非来源明确将某项标记为逾期,否则每个部分都限定在
--since(24h、7d、2w等)指定的范围内。
工作流
- 选择发送频率。 每日是不错的默认选择。对于活动较少的系统,每周一次也可以。除非下游渠道支持良好的串接或批处理,否则应避免高频摘要。
- 选择数据源。 仅配置你信任摘要读取的数据存储。先从 cron 输出和日志开始,了解其架构后再添加会话和记忆存储。
- 先手动生成一次。 运行
generate --since 24h,检查结果的长度、敏感字段和重复事项。 - 调整各部分。 使用
--sections sessions,cron,outstanding,让首次定时摘要保持简短。如果memory和tools有用,再将其添加进去。 - 安排命令。 从 cron 调度器运行该命令,并将输出重定向到渠道集成或通知程序读取的文件。
- 一周后复查。 检查摘要是否呈现了可执行事项。移除噪声较多的部分,并添加缺失的数据源路径。
完成标准:定时命令生成的摘要包含生成时间戳和请求的部分,且不包含意外的机密信息或完整会话记录。
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-db | SESSIONS_DB |
| Cron 输出目录 | --cron-dir | CRON_OUTPUT_DIR |
| 内存 JSON 目录 | --memory-dir | MEMORY_DIR |
| 工具/日志文件 | --log-file | LOG_FILE |
| 决策记录 | --decisions-dir | DECISIONS_DIR |
有关预期格式和架构说明,请参阅 references/data-sources.md。
集成
decision-log
如果有可用的决策记录目录,请通过 --decisions-dir 或
DECISIONS_DIR 传入。摘要会扫描 Markdown 决策记录,查找已接受或
拟议的决策中 Next review: YYYY-MM-DD 日期已到期的条目,然后在“待处理”部分
报告数量和标题。
news-monitoring
新闻监控任务通常会写入定期生成的输出文件。将 --cron-dir 指向
包含这些输出的目录。摘要将报告监控是否已运行、成功、失败或被标记为逾期。
请将完整的新闻摘要保存在单独的文件中;定期生成的摘要只需提及监控是否运行
以及是否需要采取行动。
常见问题
- 内容太冗长,不适合聊天。 不要将完整转录或完整 Cron 日志粘贴到 摘要中。只呈现数量、标题和一行式行动事项。
- 敏感数据泄露。 会话标题、记忆事实和日志行可能 包含机密或个人数据。请手动检查初次生成的输出,并在必要时对上游来源进行脱敏。
- 运行过于频繁。 每小时生成摘要往往会造成通知疲劳,并与当前聊天内容重复。通常每天或每周运行更合适。
- 摘要之间没有去重。 如果同一逾期事项每天都出现,请解决它、在上游将其抑制,或在此摘要之外指定固定的决策/任务负责人。
- 将模板模式视为完整数据。 输出中出现占位符,表示没有可读取的数据源。Agent 或操作人员必须使用平台工具填写内容。
- 假设会话架构普遍通用。 不同平台的会话存储各不相同。 脚本会尽力通过 SQLite 自省获取信息,但准确计数取决于 可用列。
- 混合生成与发送。 请让摘要生成器独立于平台专用的 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。 - 在将首次定时输出连接到消息平台之前,已检查其中是否包含机密信息,以及长度是否过长。