HN 日本語サマリー

← 一覧へ戻る
プログラミング

Show HN: Foremerge – 並列コーディングエージェント間の意図の競合を検出

Show HN: Foremerge – Catch Intent Conflicts Between Parallel Coding Agents (github.com)

35 pointsby foremerge3 コメント

要約

Foremergeは、複数のコーディングエージェントが同じリポジトリで並行作業する際に発生する意図の競合を検出するためのツールです。各エージェントはコード編集前に変更意図と影響範囲を公開し、Foremergeがそれを分析して衝突を警告します。これにより、PR時の手作業での修正やアーキテクチャレベルでの予期せぬ不整合を防ぎます。

全文翻訳

GPTreeでは、チーム全体で複数のコーディングエージェントを1つのリポジトリで、パラレルなworktreeを使用して実行しています。PR時のレビューや修正にかかる時間の無駄に加え、最も痛手となるのは、複数の計画やチケットが同時にアーキテクチャ変更を引き起こし、両立できなくなるケースです。例えば、あるエージェントがクラスを置き換えている最中に、別のエージェントがそれを拡張しようとするような場合です。Gitは結果として生じるパッチが偶然同じ行に触れた場合にのみ競合を検出し、レビュー担当者は両方のチケットに精通している場合にのみそれを発見できます。

Foremergeは、Gitの上に位置するローカルな「Gitライク」な調整レイヤーです(つまり、Gitやworktreeの機能に干渉したり、その動作を変更したりしません)。各エージェントは編集前に、意図と、変更するスコープ、そして各スコープに対して実行する予定の操作を公開します。

    foremerge intent publish --agent "$A" \
        --summary "Replace PaymentService with StripePaymentService" \
        --scope symbol:PaymentService=replace
    foremerge intent publish --agent "$B" \
        --summary "Add PayPal support to PaymentService" \
        --scope symbol:PaymentService=extend

2番目のエージェントによる公開は、コードを書き込む前にHIGHな破壊的 vs 追加的な検出結果を返します。エージェントはそれぞれ自身のworktreeを保持し、共有状態はGitのcommonディレクトリにある1つのSQLiteファイルです。フックやマージドライバーは一切使用せず、履歴を書き換えることもありません。

これは単一のRustバイナリとして、CLIとMCPサーバー、18のツールと共に提供され、foremerge setup allコマンドでClaude Code、Codex、Cursorに統合されます。プロトコルはプロバイダーに依存しないため、ClaudeエージェントとCodexエージェントは同じストアを通じて連携できます。作業が受け入れられる前に、Foremergeは設定された名前付きチェックを、変更の正確なGit状態に対して実行します。テストがパスしたと主張するエージェントは記録されますが、自身でチェックを実行しない限り、受け入れゲートを満たすことはできません。

検出は決定的であり、コードを読み取るジャッジモデルは使用しません。HIGHな競合は宣言された操作に対してのみアサートされ、推論されたマッチングはHIGH未満として扱われます。クレームはアドバイザリなリースであり、ロックではないため、2つのエージェントがデッドロックなしに同じスコープを保持することも可能です。オープンソース版は単一マッチングであり、分散コンセンサスではありません。

私たちは、同じリポジトリで作業する最大98のエージェントで、競合ゼロのテストを実施しました(本来は100の予定でしたが、2つのエージェントがリソース制限により実行に失敗しました)。

先週のビルドから76件のインテントを、発生した順序で自身のエージェントにリプレイしました。サンプルには正確に1件の競合(フラグが立てられた)があり、レビューでは、あるエージェントがクラス名でスコープを主張し、別のエージェントが内部メソッドで主張するという、見落としが見つかりました。次のリリースでこの点を修正する予定です。

セットアップは、README.mdのクイックスタート手順をエージェントに貼り付けるか、手動で実行するだけで30秒で完了します。curl -fsSL https://foremerge.com/install.sh | sh または cargo install --locked foremerge の後、リポジトリ内で foremerge init && foremerge setup all を実行します。ライセンスはApache-2.0です。

最も聞きたいフィードバックは、エージェントの計画間のどの競合を実際にフラグ立てしてほしいか、そしてどの競合をノイズとして許容できるか、ということです。

リポジトリはこちら: https://github.com/naw103/foremerge ウェブサイト: https://foremerge.com

この問題が解決する詳細についてはこちらをご覧ください: https://foremerge.com/blog/