mcpField
L
learning-aggregator-ci

learning-aggregator-ci

github.com/pskoettAgent 工作流32753 次安装1 天前更新
代码仓库

关于 learning-aggregator-ci

用于 CI 的技能,可扫描 `.learnings/` 历史记录,去重并归类重复模式,再发布排序后的差距报告供异步审查。它面向定时或手动触发的 GitHub Actions 运行,不依赖会话上下文。

主要功能

  1. 01扫描全部 `.learnings/` 条目
  2. 02去重跨来源的出现记录
  3. 03按精确 `Pattern-Key` 分组
  4. 04排列待晋升模式
  5. 05输出 YAML 和议题报告

适用场景

  1. 01审查跨会话重复的学习模式
  2. 02识别适合晋升的模式
  3. 03发布发现供团队分流处理

安装

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

$npx skills add https://github.com/pskoett/pskoett-ai-skills --skill learning-aggregator-ci

安装后在 Claude Code 中输入/learning-aggregator-ci确认已加载。

附带文件references/workflow-example.md

详细介绍

学习聚合器 CI

安装

gh skill install pskoett/pskoett-skills learning-aggregator-ci

交互式会话请使用:

gh skill install pskoett/pskoett-skills learning-aggregator

使用 Agent Skills CLI 的备用方案:

npx skills add pskoett/pskoett-skills/skills/learning-aggregator-ci
npx skills add pskoett/pskoett-skills/skills/learning-aggregator

用途

在 CI 中运行外层循环的 检查 步骤。读取累积的 .learnings/ 文件,按 pattern_key 对条目分组,计算跨会话重复出现的情况,并生成按优先级排序的差距报告——无需人工交互。

交互式 learning-aggregator 技能专为会话内使用而设计,用户可以立即审查并处理发现的问题。此 CI 变体按计划运行(每周、每个冲刺或按需),并将发现结果作为 GitHub issue 评论发布,以供异步审查。

上下文限制(重要)

CI Agent 没有会话上下文。它们无法看到用户当前正在处理的内容,也无法判断哪些任务领域相关。CI 变体会扫描所有 .learnings/ 条目,不进行相关性筛选。差距报告是全面的,而非针对特定内容。

前提条件

  • 仓库已启用 GitHub Actions
  • gh CLI 已通过身份验证并获得仓库访问权限
  • 已安装 gh-aw 扩展(gh extension install github/gh-aw,v0.40.1+)
  • .learnings/ 目录中包含来自 self-improvement 的结构化条目

CI 约定

无头执行的硬性规则:

  1. 只读——不得修改 .learnings/ 文件、项目指令文件(CLAUDE.md、AGENTS.md、.github/copilot-instructions.md)或任何仓库文件
  2. 无头——不出现交互式提示,不设置审批关卡
  3. 结构化输出——在 learning_aggregator_ci 键下以 YAML 格式输出发现结果
  4. 单条评论——每次运行发布一条合并后的评论,而非每条发现分别发布
  5. 确定性——相同的 .learnings/ 状态会生成相同的差距报告

编写工作流(gh-aw)

  1. 将 references/workflow-example.md 复制到 .github/workflows/learning-aggregator-ci.md
  2. 根据运行频率自定义计划(支持 weekly on mondays 之类的模糊计划)
  3. 验证:gh aw compile(可选添加 --actionlint --zizmor 以执行完整的安全扫描)
  4. 推送以启用
持久化与串联
  • cache-memory: 用于在多次运行间保存聚合状态(模式分组、重复计数)。在 Actions 缓存中最多保留 90 天。避免每次运行都重新扫描未更改的条目。
  • call-workflow: 在聚合完成后触发 eval-creator-ci,根据新晋升的模式创建评估。编译时展开并行任务,并正确配置依赖关系。
  • upload-artifact: 持久保存差距报告 YAML,供下游工作流或人工审查使用。

缓存状态必须声明聚合架构 provenance-v1,并保留规范化的出现记录指纹、稳定的任务谱系以及终止事件边界。忽略并重建任何省略此版本或使用较旧聚合架构的缓存;去重前约定下的聚合计数不能作为有效基线。

工作流规则

CI Agent 按以下顺序执行规则:

  1. 读取 .learnings/ 中的所有文件:LEARNINGS.md、ERRORS.md、FEATURE_REQUESTS.md、HEALS.md
  2. 解析每条记录的元数据:Pattern-Key、Recurrence-Count、First-Seen、Last-Seen、Priority、Status、Area、Related Files、Tags,以及可选的来源字段 Task-ID、Session-ID、Occurrence-ID、Source-Ref、Copied-From。对于 HEAL 记录,还要解析 Trigger、Active-Context 和任何 Handoff 块
  3. 分组前,折叠仓库位置、镜像、分支、转发内容以及云端/本地来源中具有相同记录 ID/内容或发生 ID 的副本。如果缺少明确的发生 ID,则使用任务/会话/来源谱系和规范化证据。路径不同不代表证据独立
  4. 按 Pattern-Key 对规范发生记录分组(仅精确匹配——CI 中不进行模糊分组)
  5. 对每个组:统计去重后的复发次数,根据稳定来源信息统计不同任务数,计算时间范围并收集证据。缺少稳定任务/会话谱系的旧记录,其声明的复发次数计入一次,但所有谱系未知的证据最多只计为一个不同任务
  6. 将缺少 Pattern-Key 的记录标记为未分组
  7. 对于记录的发生,promoted、promoted_to_skill、resolved 和 wont_fix 均视为终止状态。仅包含终止状态的组保留为历史记录,不作为晋升候选项。只有在最近一次终止事件之后出现较新的有效证据时才重新开放;仅有先前的 Handoff 不足以重新晋升该模式
  8. 为每个可操作组分类差距类型:知识差距、工具差距、技能差距、歧义或推理失败
  9. 按以下顺序排列各组:先显示已达到晋升条件的组,再显示接近阈值的组,然后按优先级排列(critical > high > medium > low)
  10. 在 learning_aggregator_ci 键下输出结构化 YAML
  11. 将差距报告作为评论发布到触发该流程的 issue 中;如果按计划运行,则创建新 issue
  12. 不修改仓库文件

晋升阈值(与 learning-aggregator 和 self-improvement 使用相同规则):当某个组在 30 天内有 >= 3 次去重后的复发,且有稳定来源信息证明涉及 >= 2 个不同任务时,即达到晋升条件。

输出架构

learning_aggregator_ci:
  version: "0.1.0"
  source:
    run_id: "<workflow run ID>"
    trigger: "schedule | workflow_dispatch | issue_comment"
    scan_date: "YYYY-MM-DD"
  scan:
    entries_total: 42
    entries_with_pattern_key: 35
    entries_ungrouped: 7
    patterns_found: 18
    promotion_ready: 3
    approaching_threshold: 5
  promotion_ready:
    - pattern_key: "harden.input_validation"
      recurrence_count: 5
      distinct_tasks: 3
      window_days: 21
      priority: "high"
      gap_type: "knowledge_gap"
      area: "backend"
      evidence:
        - "LRN-20260301-001: Missing bounds check on pagination params"
        - "ERR-20260308-002: Unconstrained string length caused OOM"
        - "LRN-20260315-003: API params not validated before DB query"
      recommended_action: "Add to project instruction files: Always validate and bound-check external inputs before use"
      eval_candidate: true
  approaching:
    - pattern_key: "simplify.dead_code"
      recurrence_count: 2
      distinct_tasks: 1
      priority: "low"
      needs: "1 more distinct task"
  ungrouped:
    - id: "LRN-20260320-005"
      summary: "Discovered undocumented rate limit on external API"
      recommendation: "Assign pattern_key for future tracking"
  stale:
    - pattern_key: "harden.error_handling"
      last_seen: "2025-12-01"
      recommendation: "Dismiss — not seen in 90+ days"
  summary:
    promotion_ready_total: 3
    approaching_total: 5
    ungrouped_total: 7
    stale_total: 1
    followup_required: true

建议的输出

输出目标位置内容
差距报告Issue 评论或新建 issue包含晋升候选项及证据的易读摘要
YAML 构件工作流构件机器可读的 learning_aggregator_ci 载荷
检查注释检查运行摘要达到晋升条件和接近阈值的模式数量

触发配置

建议:每周定时运行 + 手动触发

on:
  schedule:
    - cron: '0 9 * * 1'  # Monday 9am UTC
  workflow_dispatch:
  issue_comment:
    types: [created]

定时任务可确保外层循环定期运行。发生故障或冲刺结束后,可手动触发运行。Issue 评论触发器支持 /aggregate-learnings 命令。

与其他技能的集成

上游(提供输入)
  • self-improvement(交互式)——生成 .learnings/LEARNINGS.md、ERRORS.md、FEATURE_REQUESTS.md 记录
  • self-healing / self-healing-ci ——生成 .learnings/HEALS.md 记录,其中包括 Handoff 块
  • self-improvement-ci ——以机器可读的输出(构件/评论)发送学习候选项;它是只读的,不会自行写入 .learnings/ 文件
  • simplify-and-harden-ci ——生成由 self-improvement-ci 使用的 learning_loop.candidates
下游(接收输入)
  • self-improvement(交互式)——从差距报告中获取已达到晋升条件的模式,并应用经人工批准的晋升
  • eval-creator-ci ——获取评估候选项并创建永久测试用例
  • 人工审核 ——将差距报告作为 issue 评论发布,供团队分类处理
数据流
self-improvement → .learnings/*.md   ←  self-healing(-ci) → HEALS.md
                       ↓
              learning-aggregator-ci (scheduled)
                       ↓
              gap report (issue comment + artifact)
                       ↓
              self-improvement (interactive, human-gated promotion)
                       ↓
              eval-creator-ci (creates evals from promoted patterns)

与交互式版本的区别

方面交互式(learning-aggregator)CI(learning-aggregator-ci)
触发方式手动或会话开始时定时 cron 或 workflow_dispatch
相关性筛选根据当前任务领域筛选扫描所有条目(无任务上下文)
分组方式保守分组 + 领域/标签匹配仅按模式键精确匹配
输出会话内差距报告Issue 评论 + YAML 工件
人工交互用户内联审阅通过 GitHub 异步审阅
范围当前会话上下文完整的 .learnings/ 历史记录

评论

支持 Markdown