
人工智能AI AgentAgent 工作流CLI研发协作AI 技能MCP 服务【免费下载链接】loop-engineeringPractical patterns, starters CLI tools for loop engineering with AI coding agents. Design systems that prompt and orchestrate agents (inspired by Addy Osmani and Boris Cherny). Includes loop-audit, loop-init, loop-cost.项目地址https://gitcode.com/gh_mirrors/lo/loop-engineering点击查看免费下载本篇技术指南围绕开源仓库 loop-engineering 中的loop-triage技能skills/loop-triage/SKILL.md展开讲解如何让 AI 分诊 Agent 将 CI 失败、未答复 Issue、阻塞 PR 与遗留对话聚合为一份高优先级 / 观察 / 噪声分层的可执行报告并写回状态文件STATE.md供循环体消费。读完本文你将掌握loop-triage的输入输出契约、分类规则、与github-triage.mjs机械分诊器的配合方式以及如何把该技能挂载到 GitHub Actions 定时工作流、Grok / Claude Code / Codex 等 Agent 宿主上落地为只读报告或报告 小修的工程循环。一、loop-triage是什么循环体的眼睛在 loop engineering循环工程实践中一个循环loop需要周期性摄取外部信号并决定是否行动。loop-triage就是这个摄取与决策环节的标准技能。其 frontmatter 明确定义了它的职责--- name: loop-triage description: Triage recent changes, CI failures, issues, and conversations. Produces a concise, actionable findings report suitable for a loop to consume. Writes structured output to a state file or Linear board. user_invocable: true ---从 skills/loop-triage/SKILL.md 的核心表述看该技能把 Agent 塑造成一名专家级工程分诊代理expert engineering triage agent唯一目标是产出一份干净、按优先级排序的清单告诉循环体接下来该考虑做什么。技能本身不做修复、不做架构设计只负责信号signal而非发明invention——这是它与minimal-fix、loop-verifier等技能在职责上的天然分界。在该参考仓库中loop-triage的落地场景是 LOOP.md 中登记的Daily TriageL1自动化 报告循环节奏工作日每天 1 次.github/workflows/daily-triage.yml技能loop-triage来自skills/与starters/minimal-loop状态STATE.md由 scripts/github-triage.mjs 根据打开的 PR Issue写入而不是根据 Loop Ready 分数阶段report-only仅报告由人审阅并决定行动交接被阻塞的 fork PR、未答复的 Issue、设计决策、新 pattern 的接受。二、输入契约循环体必须提供哪些信号技能文档明确列出运行分诊所需的输入均由循环体在调用时注入近 24 小时的 CI / 测试失败打开的 PR合并冲突、失败检查、无 CIfork 工作流等待审批、BLOCKED、changes requested打开的 Issue / Linear 工单——尤其是超过 7 天未答复的以及过期的good first issuemain 分支近 24–48 小时的提交循环体可见的 Slack / 聊天线程当前状态文件循环体已经知道的内容避免重复上报。仓库对此给出了一条关键事实约束On this reference repo,scripts/github-triage.mjs(via.github/workflows/daily-triage.yml) is the mechanical source for High Priority. A Loop Ready score of 100 iswatch, not an all-clear, if GitHub still has blocked PRs.即本仓库中高优先级的机械来源是github-triage.mjs由daily-triage.yml定时驱动而不是loop-audit给出的 Loop Ready 分数。即便 readiness 分数为 100只要 GitHub 上仍有被阻塞的 PR100 分也只代表观察watch不等于一切正常all-clear。这一点在测试 scripts/github-triage.test.mjs 中被显式验证renderState: score 100 is watch, not high, when GitHub is quiet断言分数 100 时报告落在 Watch List 区块并附带文案informational, not a reason to act。三、输出契约四段式 Markdown 报告loop-triage的输出是固定结构的 Markdown 报告共四个小节1. High-Priority Items立即行动清晰的一行描述为什么重要影响、风险或用户痛点建议的下一步行动例如在隔离 worktree 中起草 minimal fix粗略的工作量估计。2. Watch Items观察暂不行动同样的格式但优先级更低。3. Noise / Ignore噪声 / 忽略循环体看过但判定不值得行动的清单。4. State Updates状态更新循环体下次运行需要记住的事实例如PR #1234 现在有 2 个 approval。这份报告的消费方是循环体以及阅读状态文件的人因此文档强调要brutally concise极其简洁。与 STATE.md 状态文件的对应patterns/daily-triage.md 给出了状态文件的推荐形态与上述四段式一一对应# Loop State — Project X Last run: 2026-06-09 08:15 UTC ## High Priority (loop is acting or waiting on human) - [ ] #1241 — flaky test in auth flow (CI red on main) Loop action: Opened worktree. Fix proposed. Waiting for human PR review. ## Watch List - PR #1238 open 4 days with no activity. ## Recent Noise (ignored this run) - Dependabot PRs (separate automation)循环体每次运行必须更新的字段Last run时间戳、条目状态与上次采取的行动、以及人类覆盖循环体决策的记录。运行日志则按 loop-run-log.md 中定义的 JSON 格式逐条追加run_id、pattern、items_found、actions_taken、escalations、tokens_estimate、outcome等字段仓库根目录的 loop-run-log.md 里已积累了大量 Daily Triage 的真实运行记录可供参考。四、规则分诊的纪律skills/loop-triage/SKILL.md 的 Rules 小节是整套技能的行为宪法保持极度简洁——循环体和人读状态文件都会感谢你只有一位理性的工程师今天就想知道的事项才放进 High-Priority拿不准就放 Watch 或 Noise而不是制造工作分诊期间绝不提出架构级重构——本技能只产出信号不产出发明尊重项目既有的技能与约定会通过上下文注入。patterns/daily-triage.md 还补充了一条重要原则Triage skill must not invent architectural work — signal only并把Triage 制造噪声列为头号失败模式缓解手段是收紧技能规则 保留 Noise / Ignore 小节。五、机械分诊器scripts/github-triage.mjs源码剖析技能文档提到的High Priority 的机械来源就是 scripts/github-triage.mjs。这是一个可独立运行的 Node 脚本通过 GitHub CLIgh拉取实时 PR 与 Issue 数据再按与loop-triage完全一致的三桶high / watch / noise分类逻辑生成状态文件。5.1 命令行用法node scripts/github-triage.mjs --score 100 --level L3 --out-md STATE.md参数解析逻辑在parseArgs()scripts/github-triage.mjs#L18-L41中支持参数含义默认值--score NLoop Ready 分数—--level L循环等级L1/L2/L3—--failing-workflows N失败的内测工作流数0--out-md FILE状态文件输出路径无输出到 stdout--out-json FILE摘要 JSON 输出路径无--prs-json FILE从本地 JSON 读取 PR 数据离线测试用实时拉取--issues-json FILE从本地 JSON 读取 Issue 数据离线测试用实时拉取实时拉取通过ghCLI 完成gh pr list --state open --limit 50 --json number,title,url,isDraft,mergeStateStatus,mergeable,reviewDecision,statusCheckRollup,author,updatedAt,createdAt以及gh issue list --state open --limit 50 --json number,title,url,labels,createdAt,updatedAt,author,commentsscripts/github-triage.mjs#L237-L260。--prs-json/--issues-json用于无网络的 fixture 测试。5.2 PR 分类规则classifyPrscripts/github-triage.mjs#L71-L114 实现 PR 分类判断顺序即优先级顺序Draft PR30 天内更新 →noise闲置超过 30 天 →watch合并冲突mergeStateStatus DIRTY或mergeable CONFLICTING→highCI 失败statusCheckRollup中存在FAILURE/ERROR结论→high输出CI red完全没有检查total 0→high文案为no CI (fork workflow likely waiting for approval)——这正是技能文档中无 CI 的 fork 工作流等待审批的机械实现BLOCKED缺少必需检查或评审→highCHANGES_REQUESTED评审要求修改→highUNSTABLE合并不稳定→watchCLEAN/HAS_HOOKS/BEHIND→watchCI 绿、等待评审/合并。对应测试见 scripts/github-triage.test.mjs#L15-L86例如空检查数组 highfork CI 未批准、冲突优先于绿 CI、失败检查 high、干净就绪 PR watch 而非 high、Draft 默认 noise、闲置 30 天转 watch。5.3 Issue 分类规则classifyIssuescripts/github-triage.mjs#L119-L156 实现 Issue 分类good first issue且创建超过 21 天→watchstale good first issueloop-report/release-prep标签闲置 21 天 →watch否则 →noise非机器人、0 评论、创建超过 7 天→highunanswered Nd——对应技能文档的未答复 7d非机器人、闲置超过 14 天→watch其余→noise。注意机器人作者is_bot或[bot]后缀会被单独识别scripts/github-triage.mjs#L129避免把自动化产生的工单误判为未答复。相关测试见 scripts/github-triage.test.mjs#L88-L137。5.4 渲染与分数护栏renderStatescripts/github-triage.mjs#L172-L214 把分类结果渲染成# Loop State文档并实现两条分数护栏failingWorkflows 0时无论分数多少都会追加**N** dogfood workflow(s) failing到 High Priority测试renderState: failing dogfood workflows are high even at score 100验证score 58时输出Loop Ready N (level) is below the 58 floor — investigate audit gaps并置入 High Priorityscore 58时输出informational, not a reason to act并置入 Watch List。这从源码层面印证了技能文档的那句话分数只是信息不是行动理由行动理由只能来自 GitHub 上的真实阻塞信号。六、调度与宿主挂载到 GitHub Actions 与各 Agent 工具6.1 定时工作流daily-triage.ymlexamples/github-actions/daily-triage.yml 是仓库的标准定时触发示例name: Daily Triage Loop on: schedule: - cron: 0 8 * * 1-5 # 08:00 UTC Mon–Fri workflow_dispatch: permissions: contents: read issues: read pull-requests: read checks: read jobs: triage: runs-on: ubuntu-latest steps: - uses: actions/checkoutv7 - name: Gather CI context id: ci run: | gh run list --limit 10 --json conclusion,name,headBranch,createdAt 2/dev/null || true env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: Ensure STATE.md exists run: | if [ ! -f STATE.md ]; then cp starters/minimal-loop/STATE.md.example STATE.md 2/dev/null || \ echo # Loop State\n\nLast run: never\n\n## High Priority\n\n## Watch List\n STATE.md fi - name: Invoke Daily Triage Agent uses: cobusgreyling/loop-engineering/tools/loop-actionmain with: pattern: daily-triage level: L1 sandbox-shell: true command: | echo ::notice::Wire this step to your agent harness. echo Prompt: Run loop-triage skill. Update STATE.md. Report only unless L2 enabled. echo See examples/github-actions/README.md - name: Upload state artifact uses: actions/upload-artifactv4 with: name: loop-state path: STATE.md if-no-files-found: ignore要点工作流只申请最小权限contents/read、issues/read、pull-requests/read、checks/read先确保STATE.md存在缺失时从 starters/minimal-loop/STATE.md.example 复制再通过复合 Actionloop-action以pattern: daily-triage、level: L1调用 Agent最后把状态文件作为 artifact 上传。6.2 把技能挂到你的 Agent 宿主examples/github-actions/README.md 给出了多种接入方式对比方式适用场景loop-action推荐在 CI 中自动化 audit 熔断 worktree 沙箱Codex CLI / API在 CI 中用无头 Codexrepository_dispatch外部 runner 运行 Grok/Claude自定义脚本仅规则式分诊L0状态文件 schema 与技能本身是工具无关的只有调用步骤不同。6.3 各工具的循环调用示例patterns/daily-triage.md 提供了不同宿主的具体命令Grok Build TUI/loop 1d Run the loop-triage skill. Append high-priority items to STATE.md. For obvious small bugfixes only: worktree minimal-fix verifier sub-agent (maker/checker). Flag ambiguous items for human review.Claude Code/loop 1d Run $loop-triage and update STATE.md. Do not auto-fix on first week — report only.Codex在 Automations 页配置每日 prompt 调用$loop-triage输出到 Triage inbox STATE.mdGitHub Actions见 examples/github-actions/daily-triage.yml。模板 templates/SKILL.md.loop-triage 还给出了一个更高频的示例调用/loop 30m Call $loop-triage and append the high-priority items to STATE.md. For any high-priority item that looks like a small bugfix, open a worktree and spawn a minimal-fix sub-agent.6.4 调度节奏建议与成本画像patterns/daily-triage.md 建议/loop 1d用于早晨分诊Grok、Claude Code/loop 2h用于活跃迭代期获取更快信号GitHub Action cron0 8 * * 1-5用于没有 TUI 的团队。同时给出 Token 成本画像仓库自述数据用于预算规划场景Token/次说明No-op~5k状态里没有可行动项完整分诊L1~50kCI Issue 提交扫描辅助修复L2~200kworktree implementer verifier节奏1d–2h层级 low建议日上限 100k token。可用成本估算工具验证npx cobusgreyling/loop-cost --pattern daily-triage --cadence 1d --level L1七、循环运行的完整周期与交接点patterns/daily-triage.md 描述了典型循环周期调度器触发早晨或间隔分诊技能摄取24h CI 失败、打开的 Issue/工单、近期提交、上一轮STATE.md高优先级项追加进状态附建议的下一步行动阶段 2对小型、自包含的失败打开 worktree → implementer → verifier阶段 3连接器更新 PR/工单模糊项标记给人从状态中修剪已解决/已合并的项在状态中记录运行后评审post-run critique误报、重复项、降级/丢弃项、下一次运行的一个改进点。必须交给人的交接点包括设计决策或多文件重构、安全/认证/支付/基础设施、分诊输出中标记needs discussion的项、以及循环体连续 3 天以上无法解决的项。验证策略阶段 1 仅报告人读STATE.md无需自动验证阶段 2 起绝不让 implementer 自行标记完成必须由 verifier 确认修复范围与测试。八、失败模式、预算护栏与成功度量8.1 失败模式与缓解失败缓解分诊制造噪声收紧技能规则保留 Noise / Ignore 小节状态文件无限膨胀每次运行修剪已合并/关闭项在错误优先级上自动修复从报告模式开始增加显式工作量/风险门槛漏掉夜间失败增加fireImmediately: true或在当天开始 中午各跑一次评审意见过期无人处理连续 N 次运行积累未解决的评审意见时增加人工交接8.2 预算与熔断护栏starters/minimal-loop/LOOP.md 为 L1 triage 定义了硬性护栏每次运行最大子 Agent 派生数L1 为 0 / L2 为 2每日 Token 上限 100k见loop-budget.md每次运行追加到loop-run-log.md开始/结束时使用loop-budget技能熔断开关loop-pause-all——暂停调度器并通知人估算命令npx cobusgreyling/loop-cost --pattern daily-triage。在参考仓库 LOOP.md 中还有额外的安全门main 分支除白名单内的琐碎依赖补丁外不自动合并showcaseHTML/CSS、核心原语文档、audit 评分逻辑列入 denylist需人工评审loop-gate check依据 gate.yaml 机械执行这些约束。8.3 成功度量从出问题到人知道的时间早晨STATE.md内容与人工手动排查结果一致的比例群聊里临时现在什么在着火消息的减少。建议的上线路径先以 report-only 运行 1–2 周仅当分诊质量持续稳定后再开启自动修复phase 2。九、实操速查从零启动一个 loop-triage 循环综合 skills/install-loop/SKILL.md 与上文内容最小启动路径如下检测上下文若已有LOOP.md/STATE.md只跑诊断不重复初始化npx cobusgreyling/loop doctor . npx cobusgreyling/loop status .选择 pattern早晨混乱、优先级不清 →daily-triage默认值选择工具claude|grok|codex|opencode脚手架npx cobusgreyling/loop init . --pattern daily-triage --tool grok诊断npx cobusgreyling/loop doctor .退出码0 健康、1 警告、2 阻塞高节奏前做成本检查npx cobusgreyling/loop cost -p daily-triage -l L1 -c 1d遵守第一周规则仅报告不自动修复、不自动合并。十、小结loop-triage是 loop engineering 体系中负责看与筛的标准技能它把 CI、PR、Issue、聊天线程和既有状态聚合为 High / Watch / Noise / State Updates 四段式报告并用严格的纪律抑制噪声、拒绝架构发明。在参考仓库中它与 scripts/github-triage.mjs 机械分类器互为印证——前者定义行为规范后者用可测试的规则冲突、CI 红、无 CI、BLOCKED、changes requested、7 天未答复、14 天闲置等把规范变成可重复执行的代码再由 scripts/github-triage.test.mjs 锁定每条规则的行为边界。理解这层技能 脚本 测试 工作流的配合关系你就能在任何仓库中复制出一个稳健的、以状态文件为记忆脊柱的每日分诊循环。赞分享人工智能AI AgentAgent 工作流CLI研发协作AI 技能MCP 服务【免费下载链接】loop-engineeringPractical patterns, starters CLI tools for loop engineering with AI coding agents. Design systems that prompt and orchestrate agents (inspired by Addy Osmani and Boris Cherny). Includes loop-audit, loop-init, loop-cost.项目地址https://gitcode.com/gh_mirrors/lo/loop-engineering点击查看免费下载相关推荐Loop Engineering 之 Daily Triage用 loop-triage 技能构建每日自动化优先级巡检循环Loop Engineering 之 Daily Triage用 loop triage 技能构建每日自动化优先级巡检循环 导读 Daily Triage每人工智能AI AgentAgent 工作流CLI研发协作AI 技能MCP 服务loop-engineering 实战用 loop-triage 技能为 AI 循环代理构建每日信号分流loop engineering 实战用 loop triage 技能为 AI 循环代理构建每日信号分流 导读 loop triage 是 loop engi人工智能AI AgentAgent 工作流CLI研发协作AI 技能MCP 服务构建 Opencode 每日分诊循环深度解析 minimal-loop-opencode 的 loop-triage 技能设计构建 Opencode 每日分诊循环深度解析 minimal loop opencode 的 loop triage 技能设计 导读 本文以 starters人工智能AI AgentAgent 工作流CLI研发协作AI 技能MCP 服务上一篇如何免费高效查看.brd文件OpenBoardView开源PCB查看器终极指南下一篇Vue.Draggable与Git Hooks深度集成实现代码质量自动化的最佳实践创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考