Cloudflare、AI エージェント活用で Astro の GitHub イシュー数をゼロに達成
本文の状態
日本語全文を表示中
詳細モードで約11分の本文を読めます。
Cloudflare は Astro プロジェクトの GitHub イシュー数を自動化パイプラインと AI エージェントチームにより約 200 から 30 に削減し、ゼロ達成を目指す実証結果を発表した。
AI深層分析を開く2026年8月4日 22:49
AI深層分析
キーポイント
AI エージェントによる自動トリアージの実装
Cloudflare は GitHub Actions 内で孤立した AI サブエージェントチームを運用し、バグ報告の再現、原因特定、検証、修正テスト作成という一連の手順を自動化している。
オープンソースメンテナーのバーンアウト解消への貢献
AI による生成コストの低下でイシュー数が爆発する中、この手法はメンテナーが大量の報告を読み込む負担を減らし、プロジェクト健全性を維持する現実的な解決策となる。
Flue フレームワークと再現可能な結果
同社が開発したオープンフレームワーク「Flue」を用いてイシュー数を 200 から 30 に削減し、5 年以上の歴史で初めてゼロ達成を目前にしている。
ラベル駆動のステートマシンによる自動化
パイプラインは issue のラベル変化(triage needed から fix verified)のみで状態を管理し、コメント履歴から現在の進行状況を判断する。
プラットフォーム非依存なフレームワークの構築
GitHub 固有のロジックではなく、イベント対応やサブエージェントの実行といった汎用ワークフローとして抽象化され、Flue というオープンなランタイムとなった。
重要な引用
We think we have something rarer to offer: real results.
It wasn't an instant success. But through a lot of iteration, we've used it to bring our open issues down from over 200 to about 30
We did it by automating issue triage with a team of isolated AI subagents running right inside GitHub Actions.
Every new submission starts with the label triage needed, and once a user confirms a fix it moves to fix verified.
編集コメントを表示
編集コメント
「ソフトウェアクラフト」の議論において、単なるデモではなく実際のプロジェクトでイシュー数を劇的に削減した事例は極めて貴重である。GitHub Actions 内で完結するエージェント構成は、セキュリティリスクを低減しつつ実用性を高める有効なアーキテクチャと言える。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。
ソフトウェアファクトリーという言葉が話題を呼んでいます。AI エージェントを組み合わせて、原材料から完成品を生産する工場のようになんでも自動的に動くソフトウェアを作るというアイデアです。しかし、それが本当に可能なのか、自動化の限界はどこにあるのか、デモで見せる「ループ」に実効性があるのかなど、議論は尽きません。すでに失敗だと断じる声もあります。
その一方で、より静かで深刻な議論も進んでいます。オープンソースプロジェクトのメンテナが疲弊しているという問題です。AI ブームにより、イシューやプルリクエスト、セキュリティ報告を生成するコストはほぼゼロになりましたが、それらすべてを読みこなすメンテナのコストは膨大になっています。従来のプロジェクト維持手法では、この量の増加に耐えきれなくなっています。
両方のテーマについて、誰もが熱い見解を持っています。しかし私たちは、より稀有な価値を提供できると考えました。過去数ヶ月間、Astro リポジトリで自動トリアージパイプラインを実行してきました。これは、届いたバグレポートを読み込み、サンドボックス内で再現し、根本原因を特定し、報告者が検証できるプレビューリリースを配信するものです。この基盤となったエンジンが「Flue」というオープンフレームワークへと成長しました。これは同様のエージェント自動化を構築するための枠組みであり、あなた自身もこれを使って独自のシステムを作ることができます。
すぐに成功したわけではありません。しかし、多くの試行錯誤を経て、オープンな課題の数を 200 を超えるところから約 30 にまで減らすことに成功しました。来月中にはゼロに到達する見込みです。これは、このリポジトリが 5 年以上の歴史の中で初めて、オープンな課題をゼロにしたことになります。
「課題の破産宣言」を行ったり、放置されたチケットを自動でクローズしたり、報告を無視したりして達成したわけではありません。GitHub Actions の内部で孤立して動作する AI サブエージェントのチームを使って、課題のトリアージ(選別)を自動化することで実現しました。どのようにしてこの成果に至ったのか、そしてあなたのプロジェクトでも何を取り入れられるかについてお話しします。
エージェントスキルの構築から
今年初め、私たちは開発プロセスの特定の領域である「課題のトリアージ」の自動化に注力しました。オープンソースプロジェクトにおいて、手動での課題選別は最も時間がかかり、かつ報われにくい作業の一つです。単一の課題を再現するだけで数時間を要することもあり、なおさら修正に至るまでには至りません。そのため、自動化の旅を始めるのに自然な(しかししばしば見落とされる)場所でした。
私たちはまず、エージェントスキルを開発しました。これにより、メンテナーとしてローカル環境で自動化の開発とテストを行い、自分のマシン上でコーディングハッチを実行することが可能になりました。その後、同じハッチをリポジトリ上の GitHub Action で実行することで、そのトリアージワークフローのスキルを完全に再利用できるようになります。
このトリアージスキルの手順は、私たちが手動で課題を解決する際に踏むステップと全く一致しています:
再現:提供された再現用リポジトリをクローンし、報告された課題が実際に発生するか確認します。
診断:コードベースに計測機能を追加し、ログを記録することでバグの根本原因を特定します。
検証:関連するテストスイート、コードコメント、ドキュメントを確認し、その挙動が実際にバグなのか、それとも意図された機能なのかを判断します。
修正:再現手順を失敗する単体テストに変換し、アーキテクチャガイドに基づいて適切な解決策を見つけてから修正をデプロイします。
頻繁に LLM が存在しないバグに対して無理やり解決策を提示するバイアスを持つため、各フェーズは独立したサブエージェントによって実行されます。これらのサブエージェントは、発見内容を report.md ファイルにまとめて報告することで、順次情報を引き継ぎます。
スキルを自動化へ転換
トライアージスキルの社内テスト初期段階を経て、私たちは完全に自動化されたパイプラインの構築に注力しました。特にこのロジックを GitHub ワークフローに直接統合し、エージェントの逐次的な推論プロセスと操作手順を誰でも容易に監査できる状態にする透明性を確保したかったのです。
実装を進める中で、全体のパイプラインは実際には issue のラベルによって駆動される状態機械に過ぎないことに気づきました。新しい投稿は常に「triage needed」というラベルで始まり、ユーザーが修正を確認すると「fix verified」へと移行します。これらのラベル遷移以外では、パイプライン自体が独自の状態を保持するわけではなく、既存の issue コメントを読み返すことで、現在の issue がどの段階にあり、次に何を行うべきかを判断しています。
こうしてフローは自動で回ります。エージェントが修正策にたどり着くと、パイプラインが pkg.pr.new を使ってプレビューリリースを起動し、すべての結果を issue に投稿します。そこには発見したことの要約、完全なログ、そしてプレビューのインストール手順が含まれます。元の報告者は自分のプロジェクトでパッチを試すことができ、動作を確認すれば、自動化システムがその issue に関連するプルリクエストを自動的に作成します。
トリアージからフレームワークへ
この仕組みを構築していく過程で、GitHub に固有な要素はほとんどないことに気づきました。イベントへの対応、独立したサブエージェントのシーケンス実行、そして推論と許可されたアクションの分離——これらはすべて単なるワークフローです。これは GitHub issue だけでなく、Slack のメッセージや cron ジョブ、Webhook からでも同様に機能するものです。どこにデプロイしても、どのモデルを駆使しても同じように動作するランタイムとしてこの認識を一般化し、堅牢なエージェントとワークフローを構築するためのオープンでプラットフォーム非依存のフレームワーク「Flue」が生まれました。
エージェント自動化のメリット
この自動システムを最初に立ち上げた際、その有効性や開発者コミュニティに与える潜在的な悪影響について懸念を共有していました。自動化されたボットによる対応に頼ることが、無機質で冷たい印象を与え、メンテナーである私たちとユーザーベースとの間に新たな断絶を生むのではないかという正当な恐れがありました。
しかし、そのような事態は起こりませんでした。むしろ、現在ではより有益な場所でユーザーとの対話が増えています。
Discord のコミュニティメンバーと直接対話し、RFC(提案)議論に積極的に参加し、新機能のリクエストに対応しています。
貢献者とも密接に協力し、彼らのアイデアをフレームワークに取り込むお手伝いをしています。
自動パッチの品質については、私たちのコアとなる哲学は、AI エージェントが流入する問題の大半を解決できるべきだという点です。エージェントが正しい解決策を見つけられなかった場合、その失敗はコードベース内の根本的なアーキテクチャ上の問題やドキュメント不足を示す指標と捉えています。具体的には以下の 3 つの領域のいずれかが原因となります。
不明瞭な抽象化: エージェントがコンポーネント間の境界を理解できない場合、人間の開発者も同様にコード構造に混乱している可能性があります。
ドキュメントの欠如: コードの重要なセグメントに、実装の根拠を説明する明確なコメントがありません。
テスト不足: リポジトリに包括的なテストカバレッジが不足しており、特にユニットテストが十分ではありません。
具体的な例として、一連の関連する Hot Module Replacement (HMR) のバグがありました。トライアージボットは繰り返し、特定の if 条件を変更して問題を解決しようと試みていました。この変更は対象となるバグを修正しましたが、その特定条件に対するテストカバレッジが不足していたため、他の場所で回帰現象を引き起こしました。
その後、そのステートメントの論理を正確に説明する記述コメントを追加したところ、ボットは適応し、その領域での誤った変更を試みるのをやめました。
こうした不具合の解決や、欠落したコメント・テストの追加、境界条件の明確化に取り組むたびに、ボットはそのコードベースの一部に対する対応能力が顕著に向上します。同時に、その後の開発者たちも同様に成長していきます。
ワークフローを GitHub Action として実装する
当初、トリアージロジックは Astro のモノレポ内に直接組み込まれていました。この結合状態では改善作業が困難で、Flue のアップグレードやワークフローの変更を行うたびに、安全網なしに稼働中のインフラに対して手術を行っているような感覚を覚えました。そこで私たちはロジックを独立したテスト可能なリポジトリ「triagebot-action」へと分離しました。これにより、主要なコードベースに触れる前に自動テストを導入し、安定性を確保することが可能になりました。
現在、このアクションは Astro の課題管理を支えており、その波及効果も広がっています。複数のチームがこのツールを採用しており、直接使用するケースもあれば、プロジェクト固有の自動化「ファクトリー」を構築するためにフォークしてカスタマイズするケースもあります。後者のアプローチこそが本質的な狙いです。triagebot-action はまだ若く、活発に発展中の段階にあるため、完成品として紹介するのではなく、読み込み、学習し、自らの環境に適応できる実用的な参考資料として共有しています。
アクション自体の配線は以下のようになります:
または、ご自身のエージェントをリポジトリに向けさせ、状態機械が依存するラベルの追加など、セットアップ全体を読み込ませることも可能です。
どのようなアプローチを選んでも、肝心なのは具体的な実装方法ではなく、メンテナーがバックログ管理から解放され、フレームワークそのものの開発に集中できる持続可能なフィードバックループという考え方です。コードはオープンソースなので、フォークして改造したり、プロジェクトに必要な部分だけ借用したりしてください。
同様の仕組みを構築したい場合は、triagebot-action のコードを確認して動作原理を理解するか、これをベースにリポジトリの自動化を始めるのも良いでしょう。より本格的にエージェントベースのインフラを構築する場合は、Flue がそのためのフレームワークです。Flue を活用して自分だけのシステムを構築してみてください。ぜひ、Astro Discord であなたの「ファクトリー」の体験談を共有してください。
原文を表示
Everyone is talking about software factories: the idea that AI agents can be assembled into a pipeline that produces working software on their own, the way a factory turns raw materials into finished goods. There’s endless debate over whether that’s actually possible, how far the automation can really go, and whether the “loops” people are demoing count for anything. Some have already written them off as a failure.
Running alongside that is a quieter, more worried conversation: open source maintainers are burning out. The AI boom has made it nearly free to generate issues, pull requests, and security reports, and enormously expensive for a maintainer to read through them all. The old ways of keeping a project healthy are buckling under the volume.
Everyone has a hot take on both topics. We think we have something rarer to offer: real results. For the past several months we’ve run an automated triage pipeline on the Astro repository. It reads incoming bug reports, reproduces them in sandboxes, diagnoses the root cause, and ships preview releases for the reporter to verify. The engine underneath it grew into Flue, an open framework for building this kind of agent automation, and it’s the same tool you could use to build your own.
It wasn’t an instant success. But through a lot of iteration, we’ve used it to bring our open issues down from over 200 to about 30, and we expect to hit zero sometime in the next month. That would be the first time this repository has seen zero open issues in its 5+ year history.
We didn’t get there by declaring "issue bankruptcy," auto-closing cold tickets, or ignoring reports. We did it by automating issue triage with a team of isolated AI subagents running right inside GitHub Actions. Here’s the story of how we got there, and what you might take back to your own projects.
Starting with an agent skill
At the start of the year, we focused on automating one specific area of development: issue triage. As an open source project, manual issue triage can be one of the more time-consuming, least-rewarding parts of the job. A single issue can sometimes take hours just to reproduce, let alone fix. It was a natural (yet often overlooked) place for us to start our automation journey.
We began by developing an agent skill. This allowed us to develop and test the automation locally as maintainers, running a coding harness on our own machines. We could then run that same harness in a GitHub Action on our repo, and get total reuse of that exact same triage workflow skill.
The triage skill mirrors the exact steps we take during manual issue resolution:
Reproduce: Clone the provided reproduction repository to verify the reported issue.
Diagnose: Instrument the codebase and introduce logging to pinpoint the root cause of the bug.
Verify: Review relevant test suites, code comments, and documentation to determine if the behavior is genuinely a bug or intended functionality.
Fix: Convert the reproduction into failing unit tests, identify the appropriate solution via the architecture guide, and deploy the fix.
To prevent the frequent LLM bias toward forcing a solution when a bug might not actually exist, each phase is executed by an isolated subagent. These subagents pass information forward sequentially by compiling their discoveries into a report.md file.
Turning the skill into an automation
Following initial internal testing of the triage skill, our focus shifted toward building a fully automated pipeline. We specifically wanted to integrate this logic directly into a GitHub workflow, ensuring complete transparency so that anyone could easily audit the agent's sequential reasoning and operational steps.
As we wired it up, we realized the whole pipeline was really just a state machine driven by issue labels. Every new submission starts with the label triage needed, and once a user confirms a fix it moves to fix verified. Beyond those label transitions the pipeline holds no state of its own; it simply reads back through the issue’s existing comments to work out where a given issue is and what should happen next.
From there the flow runs on its own. When the agents land on a fix, the pipeline spins up a preview release with pkg.pr.new and posts everything back to the issue: a summary of what it found, the full logs, and instructions for installing the preview. The original reporter can then try the patch against their own project, and if they confirm it works, the automation opens a pull request linked to the issue.
From triage to a framework
As we built this out, we kept noticing that nothing about it was really specific to GitHub. Reacting to an event, running a sequence of isolated subagents, and separating their reasoning from the actions they’re allowed to take — it’s all just a workflow. One that could run just as well from a Slack message, a cron job, or a webhook as from a GitHub issue. Generalizing that realization into a runtime that works the same way regardless of where it’s deployed, or which model it’s driving, is what became Flue: an open, platform-agnostic framework for building durable agents and workflows.
Benefits of agent automation
When we first launched this automated system, we had shared concerns about its efficacy and the potential negative impacts it might have on our developer community. There was a valid fear that relying on automated bot responses might feel impersonal and create just one more disconnect between us as maintainers and our user base.
That did not happen. If anything, we talk to users more now, just in more useful places:
Engaging directly with our community members within Discord.
Actively participating in RFC discussions and addressing new feature requests.
Collaborating closely with contributors to help integrate their ideas into the framework.
Regarding the quality of automated patches, our core philosophy is that our AI agents should successfully resolve the vast majority of incoming issues. When an agent fails to identify a correct solution, we interpret that failure as an indicator of an underlying architectural or documentation issue within the codebase, pointing to one of three areas:
Opaque Abstractions: If an agent cannot interpret the boundaries between components, human developers likely struggle with the code structure as well.
Missing Documentation: Critical code segments lack explicit comments explaining the rationale behind their implementation.
Insufficient Testing: The repository suffers from a lack of comprehensive test coverage, particularly unit tests.
A clear example occurred with a series of related Hot Module Replacement (HMR) bugs. The triage bot repeatedly attempted to modify a specific if condition to resolve the issue. While this change fixed the targeted bug, it introduced regressions elsewhere due to a lack of test coverage for that specific condition. Once we added a descriptive comment explaining the exact logic governing that statement, the bot adapted and stopped attempting incorrect modifications in that area.
Every time we chase down one of these failures and add the missing comment, test, or clearer boundary, the bot gets noticeably better at that part of the codebase, and so does the next human who works on it.
Turning the workflow into a GitHub Action
Initially, our triage logic lived directly within the Astro monorepo. This coupling made iteration difficult; upgrading Flue or modifying the workflow felt like performing surgery on live infrastructure without a safety net. To solve this, we decoupled the logic into a standalone, testable repository: triagebot-action. This isolation allowed us to introduce automated testing and ensure stability before ever touching our primary codebase.
Today, this action powers issue management in Astro, and it has spread from there. Several other teams have picked it up, some using it directly, and others forking it to build their own automated "factories" tailored to their projects. That second path is really the point: triagebot-action is young and still actively evolving, so we’re sharing it less as a finished product and more as a working reference you can read, learn from, and adapt.
The wiring for the action itself looks like this:
Or point your own agent at the repository and have it read through the setup, including adding the labels the state machine relies on.
Whichever route you take, the underlying idea matters more than our specific implementation: a sustainable feedback loop that frees maintainers to focus on the framework itself instead of administering a backlog. The code is open. Fork it, strip it down, or just borrow the parts that fit your project.
Want to build something like this? Dig into the code of the triagebot-action to see how it works, or fork it as a starting point for your own repository’s automation. And if you’re building agent-based infrastructure more seriously, that’s exactly what Flue is for: dive into the Flue framework to build your own. We’d love to see what you build. Come share your "factory" stories in the Astro Discord.
同じ出来事を2媒体で確認
同じ出来事を扱う別媒体の記事です。見出しと公開時刻を比較できます。
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み