SuperAPI AI 工具集

weekly-aeoncard

数据与分析

查看项目

更新于 10-15 10:09

技能介绍

用途

weekly-aeoncard 用于把某个实例自身的 token 消耗账本(memory/token-usage.csv)转换成一张一眼可读的每周回顾卡片。它回答三个问题:本周消耗了多少 token、自启动以来累计消耗了多少、哪些技能占据主导。最终产物是一张自包含的 SVG 卡片,操作者可以截图并分享。

主要能力

  • 统计本周(默认最近 7 天)的 token 消耗量与运行次数。
  • 统计自启动以来的累计 token 消耗量与运行次数,并给出起始时间。
  • 列出本周消耗最多的技能(top skills)。
  • 渲染出自包含的 SVG 卡片作为规范图像。
  • 尽力生成 PNG 栅格副本(需要 cairosvg 或 rsvg-convert,二者可选)。
  • 生成 Markdown 报告和仪表盘规格文件。
  • 向 memory/logs/${today}.md 追加运行日志块。
  • 通过 ./notify 发送文字摘要和已提交卡片的链接。

所有数字均从账本中测量得出,不进行抓取、采样或估算。如果账本中缺少某个技能的运行记录,该技能就不会出现在卡片上,不会凭空编造数据。

使用方式

该技能通过 ${var} 参数控制窗口和投递模式:

  • 空值 → 生成每周卡片:最近 7 天 + 累计数据,渲染图像并发送通知。
  • dry-run → 渲染图像、报告和仪表盘规格,但不发送通知(产物仍会写入)。可与窗口组合,例如 dry-run 30。
  • 整数 N → 将每周窗口覆盖为最近 N 天(默认 7,上限 90)。例如 14、30。

执行流程大致为:解析 ${var} 得到窗口和模式;检查账本是否存在且非空,若缺失或为空则跳过并通知;从 git origin 推导实例名和图像链接;调用 skills/weekly-aeoncard/render_card.py 渲染卡片和产物,并捕获其输出的单行 JSON 摘要;解析摘要中的 week_human、week_runs、life_human、life_runs、since、cache_read_pct、top_week 等字段用于通知;最后在非 dry-run 模式下通过 ./notify 发送文字摘要和卡片链接。

渲染命令示例:

python3 skills/weekly-aeoncard/render_card.py \
  --csv "$CSV" --today "${today}" --window-days "$WINDOW_DAYS" \
  --instance "$INSTANCE" --img-link "$IMG_LINK" \
  --out "$SVG" \
  --png "output/images/weekly-aeoncard-${today}.png" \
  --report "output/articles/weekly-aeoncard-${today}.md" \
  --dashboard "apps/dashboard/outputs/weekly-aeoncard.json" \
  --log "memory/logs/${today}.md"

所有写入都落在 output/ 和 apps/dashboard/outputs/ 下,这些路径会被运行提交。PNG 是提交在 SVG 旁边的栅格副本,需要 cairosvg 或 rsvg-convert;如果两者都不可用,SVG 单独作为规范图像存在。无论哪种情况,通知都是文字摘要加链接。

适用场景

  • 需要定期回顾某个实例 token 消耗情况的运营者。
  • 希望生成可分享的每周消耗卡片用于截图或社交传播。
  • 需要将消耗统计写入报告和仪表盘规格以供后续查看。

限制

  • 仅做综合统计:所有数字来自账本,账本缺失的技能不会出现,不会编造行。
  • 该技能属于 write 模式:它渲染并提交产物,因此需要写权限;只读层级会扣留 Bash(python3:*),所以 Python 渲染的卡片无法在只读模式下运行。
  • 幂等性:同日重跑会覆盖 output/images/weekly-aeoncard-${today}.svg、报告和仪表盘规格;日志块会追加(每次运行一条),因此重跑会显示漂移。
  • SVG 是交付物;PNG 只是为聊天/社交提供的便利,其缺失不视为错误。
  • 该技能不发起 gh api 调用,也不在命令行放置密钥。图像链接由 git remote get-url origin(本地读取)构建。投递通过 ./notify 完成,它是一个纯文本队列写入器,不支持 --photo/--video 等附件标志,因此不会附加图像。
  • 渲染使用 Python 标准库,结果确定(${today} 由外部传入,不读取时钟)。