Agent Orchestrator 0.13.0

クラウドでのオーケストレーション、永続的なチャットプロバイダー、より幅広いエージェント対応、リアルタイムのターミナルの改善を 1 つのリリースで。

v0.12.0 以降のすべての変更を対象としています。修正の大半は 0.12.1〜0.12.12 のパッチリリースに含まれていましたが、それぞれ個別の記事はなかったため、このサイクル全体をこの記事にまとめています。0.12.0 を使用している場合、ここに書かれている内容がすべて未適用の変更です。

0.12.0 は、言語、パレット、ピン留め、通知といった、土台の仕上げでした。0.13.0 は、プロダクトに新しい手足が生えたサイクルです。クラウドのコントロールプレーンが、フラグで制御される形でリポジトリに入りました。チャットは単なるビューではなく、永続的な作業画面になりました。対応エージェントはおよそ 2 倍に増えました。そして残っていた 2 つの最も厄介な障害、つまり再起動で実行中のターンが失われる問題と、大きな差分でインスペクターが固まる問題の両方に、構造的な修正が入りました。

このリリースでは、クラウドでのオーケストレーションをメインのプロダクトに取り込み、チャットプロバイダーがデーモンの再起動後も維持されるようにし、エージェントの対応範囲を広げ、リアルタイムのターミナルの動作を改善しています。

ハイライト

AO Cloud がリポジトリに

非公開のコントロールプレーンがこのモノレポに入りました。これは、28 テーブルの PostgreSQL スキーマ、WorkOS によるサインイン、GitHub App のインストールと webhook、組織単位のプロジェクトとセッション、永続的なメッセージキュー、イベントのリプレイ、クラスターで安全な SSE の再接続を備えた独立した Go サービスです。新しい @aoagents/cloud-client パッケージと @aoagents/product-ui パッケージ、そして公開のクラウド契約を通じて、認証付きの Next.js 製 Cloud UI と接続されています。デスクトップのサインインはネイティブの WorkOS 認証に対応しました。すべてフラグで制御されており、ローカルのみで使うユーザーにはまだ何も変わりません。(#4434、#3692、#4722)

チャットが正式な機能になり、再起動後も維持

入力欄は、解決済みのエージェントとモデルのデフォルトを中心に再設計されました。送信待ちメッセージのドックでは、編集、キャンセル、ドラッグによる並べ替えができ、添付ファイルは再起動後も保持されます。送信待ちのターンを昇格させて、実行中のターンをステアリングすることもできます。Claude Code の会話ではメッセージを編集でき、失敗したターンはプロンプトを打ち直さずにリトライでき、ツール呼び出しは生のダンプではなく読みやすいカードとして表示されます。

その土台として、Codex と ACP のチャットプロバイダーは、認証された独立したホストが管理するようになりました。デスクトップアプリを閉じてデーモンを再起動しても、プロバイダーは会話のスナップショット、保留中の承認、実行中のターンをそのまま保って再び引き取られます。(#3657、#4649、#4684、#4715、#3838、#3858、#4256、#5027、#4529、#4766)

対応エージェントの拡大

このサイクルで、Kimchi、Kimi、Pi、OMP、Prime Agent、Muse Code の新しいハーネスとドライバー、そして Cursor の ACP チャットドライバーが加わりました。アダプターを考慮したモデル選択、プロバイダーごとのモデルカタログと検出、セッション単位で適用される ao spawn の --model、指示を解決して古い参照をリトライする act プリミティブも導入しています。ao doctor は登録済みの 26 個すべてのハーネスのバイナリを調べるようになったため、「このエージェントがなぜ見つからないのか」は 1 つのコマンドでわかります。(#2649、#4193、#4194、#4196、#3736、#3647、#4201、#3386、#4610、#4102、#4244、#5025)

リアルタイムのターミナル

ターミナルは予測ローカルエコーを備えた双方向ストリームになりました。macOS と Linux のネイティブ PTY ホスト、選択可能な Windows のシェル、macOS での行頭・行末を基準とした編集ショートカット、タブを順に切り替えるショートカットにも対応しています。大量の出力は WebSocket を落とすのではなく、バックプレッシャーで制御されます。(#4763、#4768、#4473、#4727、#4517、#5199、#3658、#4552)

遅れずについてくる差分ビューアー

差分ビューアーとファイルビューアーは仮想化され、画面上の行だけがレンダリングされるため、5,000 行の差分も固まらずにスクロールできます。あわせて、変更ファイルのビューの隣にツリー全体を表示するファイルエクスプローラー、GitHub スタイルの Markdown レンダリング、図として描画される mermaid のコードブロック、画像ファイルの変更前/変更後のプレビュー、テキストを選択でき閉じることもできるファイルプレビューが加わりました。(#5175、#4252、#4251、#4892、#4173、#5012)

エンドツーエンドのレビュー

対話型のレビュアーペインがすべてのエージェントハーネスで動作し、pull request に対してレビューを自動で開始でき、プロジェクトごとに自動レビューの設定を持てるようになりました。Reviews インスペクターは、未解決のコメントのページネーションを備えた 1 つの一覧に統合され、外部レビューはインラインコメントに対応し、PR の準備状況カードが再設計され、レビューのファネル全体が計測されるようになりました。(#3384、#3338、#4128、#3664、#4032、#4131、#4055、#4255)

モバイルを正式公開

AO Mobile が両方のアプリストアで公開されました。TestFlight のフロー、EAS による OTA アップデート、iOS を含む Tailscale 経由での Connect Mobile のペアリング、ペアリング済みのスマートフォンを確認・ミュート・削除できるデバイス一覧、PostHog による分析、Sentry に対応したエラー収集を備えています。(#4761、#3689、#4474、#3707、#3674、#3661、#4181)

信頼できるエージェントの切り替え

セッションの TUI と Chat の切り替えが、永続的で素早く、フェーズを考慮したものになりました。失敗時のみの可観測性によって、切り替えがどこで失敗したかを正確に記録します。Chat UI のないインターフェースでは、切り替えを表示しません。(#3548、#3770、#4598、#3966)

デスクトップの外観を一新

作業に集中できるホームページ、タブのドロップダウンに代わる縦型のタブレール、Nord・Gruvbox・Solarized のテーマ、プロジェクトとセッションのドラッグによる並べ替え、ナビゲーション画面からのセッション名の変更、そしてすべてのプラットフォームで Ruto マスコットをもとにしたアプリアイコンが加わりました。(#4549、#4781、#3668、#3585、#4274、#4874、#5079、#5238)

エージェントが実際に使えるブラウザ

セッションごとのブラウザプロファイルがセッションをまたいで Cookie と履歴を保持し、エージェントはページのスクリーンショットを撮影したりダウンロードを保存したりできます。アノテーションは、状況に応じたショートカット付きで複数要素の選択に対応しました。(#4135、#4994、#3549、#4643)

GitHub に GitLab が加わりました

複数プロバイダーに対応したディスパッチャーのもとで GitLab の SCM 連携が加わり、レスポンスとキャッシュの一貫性はプロバイダーごとに処理されます。(#2773、#5148)

行き詰まらないオンボーディング

Git URL からのインポート、検証 API と楽観的な読み込みを備えた完全なプロジェクトインポートフロー、インポート時の GitHub リポジトリの作成、フォルダーのドラッグ&ドロップ、ローカルのフォルダーが見つからなくなったプロジェクトの警告表示、権限のデフォルト設定の記憶、そして実際のシステム要件(git、tmux、ハーネス、gh)を確認してワンクリックでインストールできる起動時のチェックが加わりました。(#4104、#4872、#4760、#5127、#5092、#4065、#4894、#4956、#3825)

その他の新機能

  • エディターへの引き継ぎ:GUI エディターに加えてクロスプラットフォームの Neovim に対応し、Kill の隣に Open-in-editor ボタンを追加しました(#4723、#3284)
  • 通知音:エージェントが入力を必要としているときや PR の準備ができたときにビープ音が鳴り、macOS では通知時に Dock のアイコンが跳ねます(#4051、#4115)
  • 設定でのハーネスのセットアップ:インストーラーの設定とハーネスのログイン操作を 1 か所にまとめました(#4221、#4523)
  • 使用量とコスト:イベント駆動のセッションごとのトークン使用量、Kimi の使用量の可観測性、コストの見積もり(#2928、#4311、#4168)
  • アップデート:サイドバーからのダウンロードがライブのインストールフローになり、ステージ済みのビルドが拒否された macOS マシン向けに修復用インストーラーを用意しました(#5047、#5002、#4981)
  • ボード:全セッションのボードが復活し、完了したセッションには PR の進捗が表示され、マージされずにクローズされたものは赤で表示されます(#5249、#4916、#5165)
  • 接続性:モバイルクライアントは公開されているすべてのエンドポイントに並行して接続を試み、どのネットワークからでも接続できます(#4615)

信頼性

409 件の修正の大半は地道な作業でしたが、いくつかのグループは特筆に値します。

送信待ちメッセージが永続的になりました。 編集はアトミックな配信確認とともに保存され、インライン編集は再接続時に永続的な分岐の記録から復旧し、添付ファイルは編集や再起動後も保持されます。ターンが失敗した場合はキューを保留し、同じエラーで残りを流してしまうことはありません。(#5109、#5110、#5006、#5107、#5188、#5106、#5274)

ターミナルが悪いタイミングで落ちなくなりました。 PTY の出力をバックプレッシャーで制御し、ウィンドウを閉じたときにシェルのレンダラーがリークしないようにし、ユーザーのシェルを再起動後も保持し、全画面表示や再起動の後にフォーカスを復元します。(#4552、#5150、#5040、#4988)

復元の前に確認するようになりました。 --resume はアタッチする前に保存済みのセッションを検証し、セッションは実際の作業が始まるまではターミナルに切り替えられ、OpenCode は Plan Mode の選択を保持します。(#5214、#5053、#5015)

小さくても重要な修正: 変更ログの保持期間に上限を設けて CDC テーブルが際限なく増えないようにし、nightly ビルドのタイムスタンプを UTC として解析し、パーセントエンコードされた ACP の承認 ID を失敗させずにデコードし、resolve-comments ルートで PR 番号を検証し、ボードがポーリングの周期ではなく変更イベントで再描画されるようにしました。(#5103、#5115、#5193、#5239、#4854)

注:チャットの explore コマンド(#4262)は、この期間中に公開された後、元に戻されました(#4289)。準備が整うまでにはさらなる作業が必要です。設定とモバイルのペアリングの再構成(#4315)は一時的に元に戻され、#4322 として再度取り込まれました。

内部の改善

Go のスタックとトリアージ分類を備えた Sentry によるエラー収集を、デーモン、レンダラー、モバイルに導入し、ビルド時の DSN で接続しました。すべての画面がテレメトリに統一されたクライアントタグを付与します。デーモンは 5xx とパニックをスタック付きで報告します。サイトでは、公開サイトを useao.dev に移行し、バグ報告フォームを短くし、レビュアーのアバターを 1 つの経路で表示するようにしました。(#4346、#4180、#4181、#4394、#3663、#5133、#5153、#4764)

アップグレード

サポートされるインストール方法は GitHub Releases と Homebrew です。既存のインストールはその場でアップデートされます。このサイクルのマイグレーションに破壊的なものはなく、設定の変更も必要ありません。Cloud は引き続きフラグで制御されており、ローカルのみの環境ではまだ何も変わりません。

完全な変更履歴: https://github.com/OrchestratorInc/agent-orchestrator/compare/v0.12.0...v0.13.0