news 2026/9/24 23:40:18

loop-engineering 实战:用 issue-triage Skill 搭建只读的 Issue 队列健康巡检循环

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
loop-engineering 实战:用 issue-triage Skill 搭建只读的 Issue 队列健康巡检循环
  • 人工智能
  • AI Agent
  • Agent 工作流
  • CLI
  • 研发协作
  • AI 技能
  • MCP 服务

【免费下载链接】loop-engineering

Practical 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 仓库中的issue-triage技能(Skill)展开,讲解如何让 AI 编码代理以“报告优先、提案优先”的低风险方式持续扫描 GitHub Issue 与 Discussion,完成去重、分级(P0–P3)与标签建议,并把结果滚动写入issue-triage-state.md,让人类和 Daily Triage 循环始终知道 backlog 里“最该处理的 Top 5”。读完本文,你将掌握该 Skill 的输入输出契约、评分模型、L1/L2 分级权限边界,以及如何与 verifier、Daily Triage 配对形成一条可长期无人值守的队列健康流水线。

一、Skill 定位:Issue 队列健康代理

issue-triageSkill 的完整定义位于 starters/issue-triage/.codex/skills/issue-triage/SKILL.md,它在templates/SKILL.md.issue-triage中也有同名模板可供拷贝。SKILL.md 的 frontmatter 明确了它的身份与边界:

--- name: issue-triage description: > Scan open issues and discussions. Dedupe, prioritize, and propose labels. Updates issue-triage-state.md. L1 propose-only — never auto-label or close. user_invocable: true ---

三个关键信息:

  • 职责:扫描开放的 Issue 与 Discussion,做去重(dedupe)、分级(prioritize)、标签提案(propose labels);
  • 产物:更新issue-triage-state.md状态文件;
  • 硬性约束:默认处于L1 提案模式,绝不自动打标签、绝不自动关单。

Skill 正文用一句话定义了它的角色:“You are an issue queue health agent”——保持 backlog 清晰可读,让人类和其他 loop 永远知道当前 Top 5 的可执行事项。这正是它在整个 loop-engineering 体系中的定位:一个低风险、高杠杆的“队列健康巡检员”,其完整模式文档见 patterns/issue-triage.md。

二、输入与信号源

SKILL.md 明确列出了 Skill 的三类输入:

  1. 开放的 GitHub Issue 与 Discussion(若配置了 MCP,也可读取 Linear / Jira);
  2. 上一次运行产出的issue-triage-state.md——它既是历史状态,也是本次运行的起点;
  3. 信号(Signals)age(存活天数)、author(提交者)、labels(已有标签)、comments(评论数)、reactions(表情反应)、linked PRs(关联 PR)、milestone(里程碑)。

这些信号直接决定了后续的评分逻辑。需要特别说明的是信号采集方式:仓库在 examples/grok/issue-triage.md 中补充说明,可以启用GitHub MCP 只读模式做 Issue 发现与关联 PR 信号采集,在循环被信任之前,MCP 权限应限定为"读取 + 提案"(read + propose),这与 L1 只读原则保持一致。

三、输出契约:issue-triage-state.md的标准结构

SKILL.md 给出了输出状态文件的规范模板,这是整个循环的"记忆脊柱",必须逐节继承:

# Issue Triage State Last run: <ISO timestamp> Open actionable: N (was M) New since last run: K Needs human: H ## Top 5 (by loop score) - #NNN (p1, 2d old) — "one-line summary" — suggested: label1, label2 ## Proposed Labels (not applied in L1) - #NNN: `label-a`, `label-b` ## Possible Duplicates (human confirm) - #NNN — possible duplicate of #MMM ## Noise / Ignored - brief list

字段含义与使用要点:

  • Last run:ISO 时间戳,用于跨轮次对比增量;
  • Open actionable:当前可执行事项总数,(was M)记录上一轮数值,形成趋势感知;
  • New since last run:本轮新增数量;
  • Needs human:需要人工介入的数量,这是"告警疲劳"的闸门——只有这个切片才通知人类;
  • Top 5 (by loop score):按循环评分排序的 Top 5,每行包含 issue 编号、优先级、存活天数、一句话摘要和建议标签;
  • Proposed Labels:提案标签区,明确标注"L1 不应用";
  • Possible Duplicates:疑似重复,标注"human confirm"(人工确认);
  • Noise / Ignored:本轮忽略的噪音项,简短列出即可。

仓库提供了可直接落地的初始模板 starters/issue-triage/issue-triage-state.md.example,其内容在 SKILL 模板基础上额外补充了两个关键区块:

## Allowlisted labels (L2 only) `area:*`, `needs-repro`, `needs-info` ## Denylist (always human) auth, payments, security, public-api, breaking-change

也就是说,状态文件不仅是输出,本身还承载了白名单/黑名单策略的持久化,让每次运行都能读到上轮确立的权限边界。

从 patterns/issue-triage.md 可以看到该文件的真实运行形态:

# Issue Triage State Last run: 2026-06-09 09:15 UTC Open actionable: 14 (was 17) New since last run: 3 Needs human: 2 (one potential duplicate of #412, one unclear spec) ## Top 5 (by loop score) - #487 (bug, p1, 2d old) — "Crash on export with large files" — suggested: bug + needs-repro + area:export

模式文档还强调了一个维护原则:每次运行都要从状态文件中剪除已关闭/已合并的条目,只保留"需要关注"的事项,避免状态文件无限膨胀。

四、评分模型:P0–P3 分级表

SKILL.md 的核心分级逻辑是一张信号映射表,它把原始信号翻译成优先级:

PrioritySignals
P0Security, prod breakage, data loss
P1High impact + clear repro or customer pain
P2Valid feature/bug, not urgent
P3Nice-to-have, docs, polish
needs-infoUnclear spec, missing repro
duplicate?Title/body overlap with existing issue

逐级解读:

  • P0(最高):安全漏洞、生产故障、数据丢失——这类条目在 L1 阶段也必须立即浮出水面,但分级动作本身仍只是提案,落到状态文件由人处理;
  • P1:高影响且有清晰复现路径或明确客户痛点;
  • P2:有效但非紧急的功能缺陷或需求;
  • P3:锦上添花、文档、打磨类;
  • needs-info:规格不清、缺少复现步骤——这是 Skill 对"信息不完整"的标准响应,避免把模糊请求误判为高优任务;
  • duplicate?:标题/正文与既有 issue 高度重叠——注意这里带着问号,体现"保守去重"的立场。

patterns/issue-triage.md 给出了一个完整的典型循环周期,可以看作是评分模型的执行流程:

  1. 发现自上次运行以来新增/更新的 Issue 与 Discussion(首次运行则扫描全部开放项);
  2. 对每条:总结意图、检测重复(标题 + 嵌入提示或简单文本匹配)、采集信号(age、author、linked PRs、reactions、现有标签);
  3. 评分归类:P0 / P1 / P2 / P3 / needs-info / duplicate;
  4. 将干净的优先级列表 + 建议标签集 + 一句"为什么重要"写入状态文件;
  5. verifier(或人类)只审查 "needs human" 桶和敏感区域的标签变更提案;
  6. 记录本次运行、剪除已解决项、更新计数。

五、规则体系:L1 提案优先,分级放权

SKILL.md 的 Rules 节是整个 Skill 的安全内核,逐条继承并展开如下:

  1. L1(第一周):只提案标签和优先级,绝不应用标签、绝不评论、绝不关闭。这是"零风险入场"的设计——即使 Skill 判断失误,也不会对仓库产生任何副作用;
  2. 升级到 "needs human" 的触发面auth(认证)、payments(支付)、security(安全)、public APIbilling(计费)、infra(基础设施)——只要触及这些领域,一律进入人工桶;
  3. 重复匹配保持保守:只输出 "possible duplicate of #NNN",绝不自动关闭。这与duplicate?分级中的问号一脉相承;
  4. 每次运行剪除已关闭 issue,保持状态文件精简;
  5. 保持简洁:繁忙仓库可能每 2 小时运行一次,输出必须紧凑可读。

这些规则在 starters/issue-triage/LOOP.md 中被进一步落实为**人工闸门(Human Gates)**清单:

  • P0 / P1 的指派——前几周仅限人工;
  • 认证、支付、安全、公共 API——永远升级到人工;
  • 重复 issue 的关闭——人工确认;
  • 陈旧 issue 的关闭——人工确认。

同时 LOOP.md 给出了预算约束:每次运行最多派生 1 个子代理(仅用于 L2 带 verifier 的标签应用),相关预算细节见 loop-budget.md。

六、允许名单(Allowlist):L2 的边界

SKILL.md 明确规定了 L2(第二周之后)可自动应用的标签白名单:

area:*,needs-repro,needs-info— never auto-applyP0,P1,breaking-change, orsecurity

即:即使升到 L2,也绝不自动应用P0P1breaking-changesecurity这类高敏感标签。L2 自动打标必须经过 verifier 通过之后才能执行。

verifier 的角色在 starters/issue-triage/.codex/agents/verifier.toml 中有完整定义,它采用maker/checker(实现者/检查者)分离的默认立场——"REJECT until proven otherwise"(除非被证明通过,否则一律拒绝)。其检查清单包括:

  1. Scope:只改相关文件,不触碰黑名单路径;
  2. Intent:是否对准既定目标;
  3. Tests:检查者亲自运行测试并报告 pass/fail 及输出;
  4. No cheating:不允许禁用测试或跳过断言;
  5. Risk:即使测试通过,中等以上风险也要建议人工复审。

输出裁决为APPROVE | REJECT | ESCALATE_HUMAN三者之一,推理强度设为high。对应地,仓库还提供了loop-verifier技能(skills/loop-verifier/SKILL.md)作为轻量检查手段。patterns/issue-triage.md 的验证策略与之呼应:L1 阶段循环从不自动打标或关单;L2 阶段在 verifier 通过后仅应用白名单标签;P0/P1 指派在前几周始终由人掌控,凡触及认证、支付、安全或公共 API 的事项一律人工负责。

七、与 Daily Triage 配对:队列喂食器

SKILL.md 末尾专门讲了配对方式:

Daily Triage reads this file and merges Top 5 intoSTATE.mdHigh Priority. Do not duplicate full issue bodies in STATE.md — reference issue numbers only.

即:Issue Triage 是 Daily Triage 的喂食器(feeder)。Issue Triage 以更频繁的节奏(2h–1d)产出干净的队列,Daily Triage(1d)读取issue-triage-state.md并把 Top 5 合并进STATE.md的 High Priority 区。关键约定是:不要把 issue 完整正文复制进 STATE.md,只引用 issue 编号,避免状态文件冗余。

这一分工在 starters/issue-triage/README.md 中被描述为"低风险的 issue 队列喂食器",而 Daily Triage 模式的完整定义见 patterns/daily-triage.md。多循环协调的整体视角可参考 docs/multi-loop.md。

八、落地运行:快速开始与提示词

starters/issue-triage/README.md 提供了三种工具的脚手架命令:

# Grok npx @cobusgreyling/loop-init . --pattern issue-triage --tool grok # Claude Code npx @cobusgreyling/loop-init . --pattern issue-triage --tool claude # Codex npx @cobusgreyling/loop-init . --pattern issue-triage --tool codex

启动提示词(Grok,第一周):

/loop 2h Run issue-triage. Read issue-triage-state.md first. Update Top 5 and proposed labels. No auto-apply. Escalate security and ambiguous items.

其中--tool参数决定脚手架生成哪套工具适配层。以 Codex 为例,本文主体所在的技能文件即位于starters/issue-triage/.codex/skills/issue-triage/SKILL.md;同一 starter 还包含.claude/agents/loop-verifier.md(L2 标签应用检查器)等配套文件。

examples/grok/issue-triage.md 给出了更完整的周启动提示词:

/loop 2h Run the issue-triage skill. Read issue-triage-state.md first. Scan open issues and discussions since last run. Update issue-triage-state.md with: - Top 5 prioritized items (P0–P3) with one-sentence summaries - Suggested labels (proposed only — do not apply) - "needs human" bucket for ambiguous or security-sensitive items Do not auto-label, close, or comment on issues. Escalate duplicates as "possible duplicate of #NNN" for human confirmation.

繁忙仓库可加速节奏:

/loop 1d Run issue-triage at start and end of day. Report mode only.

也可以在examples/github-actions/找到基于issues/discussion事件触发 + 定时兜底的 GitHub Action 工作流示例。

九、进化路径与失败模式

进化路径(L1 → L2 → 永不无人值守)

examples/grok/issue-triage.md 给出了清晰的三阶段演进:

  1. L1(第 1–2 周):只提案标签与优先级,人工手动应用;
  2. L2(第 3 周起):verifier 通过后自动应用白名单标签(area:*needs-reproneeds-info);
  3. 永不无人值守:涉及认证、支付、安全或公共 API 的 P0/P1 事项——永远由人工处理。

失败模式与缓解

patterns/issue-triage.md 列出了三种典型失败模式及对策:

失败模式缓解措施
过度优先高噪提交者用团队真正关心的信号加权(reactions、linked PRs、内部 +1),人工覆盖记录在状态文件中
重复检测误报保守匹配 + L1 阶段始终以 "possible duplicate of #NNN" 形式提交人工确认
每个新 issue 都触发告警疲劳只对 "needs human" 切片通知人工,其余内容全部留在状态文件中供 Daily Triage 或工程师阅读

人工交接点

  • 任何触及安全、认证、计费或基础设施的 issue;
  • 不确定的重复检测(错误概率 > 30%);
  • 循环想以 "stale" 关闭的超过 N 天的旧 issue(须人工确认);
  • 单次运行出现过多新 issue(上下文过载信号)。

成功度量

  • 从 issue 打开到首次有意义标签或 "needs info" 评论的时间缩短;
  • 24 小时内获得明确优先级的 issue 占比;
  • 工程师主观反馈的"我总是知道 Top 5 是什么"评分(从状态文件评审中获得);
  • 在两个人开始处理同一问题之前被拦截的重复数量。

十、安全边界总结

回到 starters/issue-triage/README.md 的 Safety 节,整个循环的安全设计可以浓缩为两条:

  • L1 阶段无任何自动打标或关单动作——所有副作用都被人为延迟;
  • 黑名单(denylist):auth、payments、security——详见 docs/safety.md 中的安全约定。

结合 starters/issue-triage/issue-triage-state.md.example 中的 Denylist(auth, payments, security, public-api, breaking-change),可以得到完整的结论:这个循环通过"报告优先 + 分级放权 + 白名单/黑名单双闸门"的设计,用极低风险换取了持续、可复用的队列健康治理能力。任何团队都可以从 L1 提案模式起步,在确认 triage 质量稳定后再逐步开放 L2 的自动打标权限。

  • 人工智能
  • AI Agent
  • Agent 工作流
  • CLI
  • 研发协作
  • AI 技能
  • MCP 服务

【免费下载链接】loop-engineering

Practical 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
点击查看免费下载

相关推荐

上一篇:如何快速找出Windows热键冲突的罪魁祸首:Hotkey Detective完整指南
下一篇:如何实现 ReMe Token 用量统计与成本监控?token_usage 组件完整实战指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 23:39:17

从对话到执行:WorkBuddy企业级办公自动化落地实战与踩坑盘点

WorkBuddy这个词&#xff0c;最近在我身边的技术群里出现的频率确实高。最开始我以为又是一个套壳的聊天机器人&#xff0c;真正在自己的办公环境里跑了一圈之后&#xff0c;才发现它和我之前用过的AI助手有本质差异——它不是“回答问题”的&#xff0c;而是“把事办完”的。这…

作者头像 李华
网站建设 2026/9/24 23:39:12

碳机制与需求响应下综合能源系统优化模型构建

1. 项目概述与总体思路1.1 背景&#xff1a;为什么现在都在谈“碳机制下的综合能源系统”做综合能源系统优化这几年&#xff0c;一个很明显的趋势是&#xff1a;单纯算“电费省了多少”已经不够了&#xff0c;越来越多的项目开始把“碳排放”直接折算成成本放进目标函数里。这背…

作者头像 李华
网站建设 2026/9/24 23:39:08

研发进度管理:从甘特图到约束建模的实战升级

研发项目进度管理这件事&#xff0c;我干了十多年&#xff0c;从最早用Excel画甘特图、手写依赖关系箭头&#xff0c;到后来上Jira配插件、搭DolphinScheduler跑任务流&#xff0c;再到最近半年帮三家公司落地自研轻量级进度协同平台——不是为了炫技&#xff0c;而是因为真踩过…

作者头像 李华
网站建设 2026/9/24 23:38:34

OpenClaw中文版Windows部署实战:基于WSL2与Docker的本地AI助手搭建指南

这个叫OpenClaw的项目最近在折腾AI的圈子里讨论度不低。说白了&#xff0c;它是一个开源的个人AI助手框架&#xff0c;你可以把它理解成一个能自己接任务、自己调用工具、自己干活的“数字打工人”。名字里的Claw是“爪子”&#xff0c;国内网友一谐音&#xff0c;就把它叫成了…

作者头像 李华
网站建设 2026/9/24 23:38:27

基于LangGraph的Agentic RAG实战:让检索会思考、能纠错、可联网

普通RAG 用久了&#xff0c;谁没遇到过几个尴尬瞬间&#xff1a;用户问一个跨了五份合同的问题&#xff0c;返回的是三份文档拼出来的“缝合怪”答案&#xff1b;用户问“今天上午发布会公布了什么”&#xff0c;本地知识库里根本不可能有&#xff1b;多轮对话里问一句“那第二…

作者头像 李华
网站建设 2026/9/24 23:37:48

基于SpringBoot+Vue+MySQL的高校固定资产管理系统设计与实现

高校固定资产管理系统这种项目&#xff0c;在我做技术评审和给在校生做指导的时候见得太多了。十个相关选型里&#xff0c;有七八个都会拿“资产信息管理 借用流转 统计报表”来练手&#xff0c;但真正能做到“拿来就能跑、跑起来不出幺蛾子”的项目其实没有想象中那么多。今…

作者头像 李华