Foremerge ~並列動作するコーディングエージェント間の意図の不一致を検出~

2026/09/22 1:22

Foremerge ~並列動作するコーディングエージェント間の意図の不一致を検出~

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

改良版は、欠落していた技術的な詳細を取り入れ、概要をより包括的にすると同時に明瞭さを維持するものとなる。以下が改良されたバージョンです:

改善された概要: Foremerge v0.5.0 は、Git リポジトリ内のコーディングエージェント向けに設計されたオープンソースのローカルファースト協調プロトコルである。孤立したワークツリーを管理し、従来のファイルロックを使用せずに意味論的スコープを通じてエージェント(例:Claude Code、Codex)が意図を共有することを可能にし、偶発的な上書きを防ぐ。该系统は、クラスを置換するかそれかを拡張するかの区別など、高次の意図宣言を分析し、潜在的な衝突を早期に検出して警告を発し、ワークフローをブロックすることなくアドバイザリー警告を発行する。该系统は Git 環境内での共有型型付き SQLite データベースに依存し、CLI、JSON API、MCP サーバーツールの手段で統合される。インストールについてはプリビルトバイナリまたは Rust ソースビルドとして利用可能だが、该プロトコルは明示的にローカル環境のみを対象とし、マシン全体の協調や分散合意には含まれない。ユーザーは検証ゲート付きライフサイクル(Publish Intent → Claim Scope → ... → Accept)に従う必要があり、これは別個の受入コミットと統合コミットを保持する。MVP としての Foremerge は、コードレビュー、CI パイプライン、セキュリティスキャンといった業界標準を置換するものではなく、それを補完するものである。

本文

Foremerge: エージェント間の調整プロトコル

Foremerge は、Git の上層に構築されたコーディングエージェント向けのオープンソース調整プロトコルです。 複数の AI エージェントが同時に作業する際、共有可視化(Shared Awareness) を提供し、「意図的な衝突」を早期に検出・提案することを目的としています。


概要とコンセプト

基本理念

  • Git の限界の克服: Git はテキスト比較のみを行うため、「同じ行を編集していないが、意味論的に矛盾する変更(意図的な衝突)」を検出できません。
    • 例: A がクラスを置換し、B がそのクラスに機能を追加する場合、Git はマージしますが、機能が残るだけの孤立(stranded)コードになります。
  • 解決策: エージェントが実際にコードを書き込む前に**「何をするか(意図)」を宣言**します。

設計方針

  • ロック機能なし: ファイルやエージェントをロックせず、単一のエージェントクラッシュで全体停止を防ぎます。警告は助言的であり、常に人間がコントロール権を持ちます。
  • 確定性 (Deterministic): モデルに衝突判断を委ねず、同じ入力には常に同じ出力をもたらします。

クイックスタート:5 分で開始

コーディングエージェント(Claude CodeCodexCursor など)へのインストールは以下のコマンド 1 つで完了です。

インストール

curl -fsSL https://foremerge.com/install.sh | sh
  • 効果: Foremerge が自動的に設定され、個々の worktree を使用してもエージェント間の状況が互いに可視化されます。
  • バージョン: 0.5.0 (ローカルフーストな MVP)。将来的にパブリックスキーマは変更される可能性があります。

システムの仕組みとワークフロー

1. 共有ホワイトボード(共有可視化)

各エージェントは独立した

worktree
を持っていますが、
.git
フォルダ内の共有 SQLite データベースを読み書きします。

3 つの主要ステップ

  1. 宣言 (Declaration): エージェントは「対象となるターゲットのみ」を宣言します(例:「sendEmail 関数を変更しようとしている」)。
  2. 共有可視化: 全てのエージェントが共有リストから現在状況を閲覧できます。
  3. 衝突検出: 計画の衝突が発生すると即座に通知されます。
    • 両方の worktree はクリーンなままです。
    • 作業を破棄する必要はありません。

衝突検出の例:Git が見えない問題

  • エージェント A:
    PaymentService
    StripePaymentService
    置換
  • エージェント B:
    PaymentService
    内に PayPal サポートを追加
  • 結果: Git は両方をマージしてしまいますが、Foremerge はこれらが「拡張ポイントの削除 vs 利用」により衝突すると検知し、HIGH advisory を発出します。

2. セマンティックワークフロー

作業の流れは以下の状態遷移を通過します。

graph LR
    Intent["意図 (Intent)"] -->|claim| Claimed["主張済み (Claimed)"]
    Claimed -->|start| InProgress["進行中 (In Progress)"]
    InProgress -->|publish| Provisional["暫定 (Provisional)"]
    Provisional -->|validate| Validated["検証済 (Validated)"]
    Validated -->|accept-gates| Accepted["受入済 (Accepted)"]
    Accepted -->|record| Committed["コミット済み (Committed)"]

主要なスコープ種別:

symbol
,
api
,
schema
,
config
,
infra
,
test
,
migration
など。

3. ChangeSet と検証ゲート

実装後の変更を管理する単位は ChangeSet です。

誠実な統合手順

  1. 意図の公開、スコープ主張、実装開始。
  2. 孤立したブランチでのコミット。
  3. ChangeSet の公開(
    changeset publish
    )。
  4. 検証実行: Foremerge が定義されたゲートチェック(ビルド・型チェックなど)を実行。
  5. ハイレベル衝突の解決。
  6. 受入(Acceptance)、Git リファレンスの記録、最終コミット。

コマンドライン操作ガイド

初期化と設定

調整したいリポジトリ内で実行します。

# 1. 初期化 (Git common directory 下に状態を作成)
foremerge init

# 2. ドクターチェック
foremerge doctor

# 3. クライアントスキルインストール (MCP サーバー有効化のため)
foremerge setup all

# 4. チェック登録 (例:テストコマンド)
# 注意: リポジトリの実際のテストコマンドに合わせて調整してください
foremerge checks set test -- cargo test --all-targets

# 5. 状態確認
foremerge doctor --client all

ローカル JSON API の有効化

認証されたローカルループバックを使用する場合:

  • デフォルト:
    http://127.0.0.1:47811
  • トークン発行:
    foremerge init
    (プラットフォームサポート時)
  • クライアントは、MCP テンプレートまたは可搬なスキル (
    ~/.local/bin
    ) を使用します。

実践例:衝突検出のシナリオ

2 つのエージェント(Stripe 導入 vs PayPal 追加)による衝突を検出・解決する手順です。

ステップ 1: エージェント登録

STRIPE_AGENT=$(foremerge --json agent register \
  --name stripe-agent \
  --no-worktree | jq -er '.data.id')

PAYPAL_AGENT=$(foremerge --json agent register \
  --name paypal-agent \
  --no-worktree | jq -er '.data.id')

ステップ 2: 意図の公開 (Declaration)

それぞれが作業計画を共有します。

  • Stripe Agent:

    PaymentService
    の置換宣言。

    foremerge --json intent publish \
      --agent "$STRIPE_AGENT" \
      --task "modernize-payments" \
      --summary "Replace PaymentService with StripePaymentService" \
      --scope symbol:PaymentService=replace
    
  • PayPal Agent:

    PaymentService
    への拡張宣言。

    foremerge --json intent publish \
      --agent "$PAYPAL_AGENT" \
      --task "add-paypal" \
      --summary "Add PayPal support to PaymentService" \
      --scope symbol:PaymentService=extend
    

ステップ 3: 衝突の確認と報告

PayPal Agent が計画を実行しようとした際、Stripe Agent の影響を受けて衝突を検知します。

# 衝突情報を表示
foremerge --json intent publish \
  --agent "$PAYPAL_AGENT" \
  ... | jq '.data.conflicts[]'

# 関連する他のエージェントの意図を確認
foremerge --json intent publish ... | jq '.data.related_work[]'

ステップ 4: スコープの主張 (Claim)

ロックではなく、貸与された助言(leased advisory)として所有権を文脈付けます。

  • Stripe Agent: 変更理由を提示して成功。
  • PayPal Agent: 警告付きで承認可能ですが、衝突解決が必要です。
# スコープ主張と警告確認の例
foremerge --json work claim \
  --agent "$PAYPAL_AGENT" \
  --intent "$INTENT_ID" \
  --scope symbol:PaymentService | jq '.data.warnings'

エージェントクライアントと MCP

Foremerge は完全なライフサイクル管理を MCP (Model Context Protocol) と JSON API でサポートします。

MCP ツール一覧表

ツール名機能説明
register_agent
エージェント・モデル・系譜の記録
publish_intent
計画作業を公表し、衝突と影響を宣言
record_assessment
結論と将来アクションの記録
claim_work
セマンティックスコープ上の助言的主張作成
query_work
エージェント・意図・ChangeSet の検索
check_conflicts
コード変更前の衝突チェック
publish_changeset
実装結果の記録と系譜化
coordinate_with_agent
エージェント間の永続メッセージ送信
accept_changeset
検証・ゲート適用後の最終受入

インストール方法(ソース構築)

Rust 1.85+ が必要です。

cargo install --locked --git https://github.com/naw103/foremerge foremerge
# または
cargo install --locked --path .

アーキテクチャと技術的詳細

アーキテクチャ概要

[エージェント A] <------- セマンティックイベント -------> [エージェント B]
       |                                                   |
   孤立した worktree A                                   孤立した worktree B
       |                                                   |
       +-------------- Foremerge サービス (SQLite) --------------+
                          /        |        \
           <git-common-dir>/foremerge/state.sqlite3
                  Git CLI    検証 argv

データベース構成

  • 位置:
    <git-common-dir>/foremerge/state.sqlite3
  • 用途: 調整状態、ChangeSet フィンガープリント、検証履歴の保存。
  • 注意点: MVP 段階では SQLite をマシン間での複製やネットワークマウントには使用しないでください。

Git Worktree の利用法

# 新しいエージェントブランチ用の worktree 作成
foremerge worktree create \
  --branch agent/paypal \
  --path ../payments-paypal \
  --base HEAD
  • 変更はコミット前に Clean な状態を維持します。
  • git merge
    rebase
    は行われず、Foremerge が管理する参照を使用します。

制限事項と注意点 (MVP として)

以下の点は保証されません。完全な代替手段ではないため、注意が必要です。

  • 衝突検出: ヒューリスティック的であり、同義語を完全に理解したり、全ての適合性を判断するわけではない。
  • ロック機能: 警告を出すことはあっても、ファイルやリソースをロックしません。
  • 検証ゲート: 通過は記録されたコマンドの成功証明のみで、テスト計画の完全性を保証するものではない。
  • ベンチマーク: 公開されたベンチマーク結果はまだ存在しない。
  • 代替機能: コードレビューや CI/CD を完全に置き換えるものではありません。
  • セキュリティ: トークン管理はローカルループバックに限定され、パブリック展開用ではありません。

リソースとドキュメント

  • ウェブサイト: foremerge.com
  • Cargo crate:
    crates.io/crates/foremerge
  • MCP レジストリ:
    io.github.naw103/foremerge

さらに詳細な情報は以下のドキュメントを参照してください。

  • アーキテクチャ図
  • プロトコル仕様
  • ステートモデルと遷移
  • 検証除外 ADR (Acceptance Decision Records)

同じ日のほかのニュース

一覧に戻る →

2026/09/22 5:58

輸入額が 800 ドル以下の小口免税措置の停止

## Japanese Translation: 個人処方箋輸入運動(CPPI)は、米国人がライセンス取得済みのカナダの薬局から処方薬を購入する権利を主張しており、これらの薬局が 100% の安全性記録を持つと述べている。この運動を支援することで、人々は健康を損なうことなく安価な医薬品にアクセスしながら資金を節約できる。CPPI は、公衆が即座に無料キャンペーンに参加することを招き、米国での医療費高騰に対する実用的な財務戦略として海外で医薬品を購入する原因を積極的に支持するために、事務所へ連絡すること(202-765-3290 または info@personalimportation.org(N.J. 08844, Hillsborough, 601 Rt. 206, Suite 26-423))を呼びかけている。

2026/09/22 7:33

データ保護委員会が位置情報の処理問題に対し、Google に4,030 万ユーロの制裁金科する

## 日本語翻訳: EU 欧州データ保護委員(DPC)は、GDPR ルールの遵守違反によりユーザの位置情報データを処理したことに伴い、Google アイルランドに巨額の 4030 ユーロの制裁金科しました。2020 年 2 月に開始された自主発議による調査および BEUC などの団体からの苦情に基づき、調査官らは 2018 年 5 月 25 日から 2020 年 2 月 4 日の間に発生した違反行為を特定しました。DPC は、Google が「Web & App Activity」と「Location History」の処理を法的かつ公正に行っておらず、また「Location Accuracy」に関する透明性および説明責任の義務も履行しなかったと結論付けました。コミッショナーズ Dr Des Hogan 氏、Mr Dale Sunderland 氏、Ms Niamh Sweeney 氏、副コミッショナー Graham Doyle 氏は、これらの無許可なデータ保持 practices がユーザが個人情報を制御する権利を損なう損失を増大させたことを指摘しました。したがって、Google は 2 つの特定の機能におけるデータの保持を停止し、6 ヶ月以内にすべての処理をコンプライアンスに合わせるよう命令されました。DPC は適時、本件の最終決定を発表する予定です。

2026/09/22 4:43

ビジュアルで解説するトランスフォーマー

## 日本語訳: 本稿の核心となるメッセージは、2017 年に論文「Attention is All You Need」によって紹介された Transformer アーキテクチャが、GPT、Llama、Gemini のような主要な AI モデルの基盤となるエンジンとして機能しているという点である。このアーキテクチャはテキスト、音声、画像認識、タンパク質予測、ゲームプレイなど多岐にわたる分野で活用されている。これらの大規模システムを抽象的に記述するのではなく、解説ではアクセス可能な GPT-2(小規模)モデル——パラメータ数が 1 億 2400 万、語彙数は 50,257 のユニークなトークン、そして 12 の Transformer ブロックを持つもの——を用いて、Transformer が実際どのように動作するかを具体的に示す。このアーキテクチャは、(1) エンベディメント:文字列の生のトークンをトークナイゼーション、エンベッディング、および位置符号化を通じて数値データに変換する部分、(2) Transformer ブロック:マルチヘッド自己注意機構(クエリ、キー、バリュー行列を 12 ヘッドにわたって使用)と MLP レイヤーを用い、データを順次処理しつつ、マスキングによって未来のトークンへのアクセスを防ぐ機構、(3) 出力確率:表現を高次元空間に射影し、それを確率に変換することで次の単語を数学的に予測する部分——という 3 つの不可欠な要素に依存している。これらの概念は、自然言語理解から複雑なタンパク質予測に至るまでの分野を革命させたが、「Transformer Explainer」という実装により、開発者や学生にとって具体的な形を与えられている。これは Andrej Karpathy の nanoGPT プロジェクトから派生したライブウェブ実装であり、高度なバックエンド知識を必要とせず、理論的研究と実践的な応用の間のギャップを埋める。このツールは、これらの数学的射影がリアルタイムでどのようにテキストを生成するかを可視化することを可能にする。ジョージア工科大学の Aeree Cho、Grace C. Kim、Alexander Karpekov、Alec Helbling、Jay Wang、Seongmin Lee、Benjamin Hoover、Polo Chau の開発により、プロジェクトは性能向上のための追加機能としてレイヤー正規化、ドロップアウト、レシデュアル接続も組み込んでいる。