今週は CLI を 15.0.2 から 15.0.6 まで 5 回リリースしました。テーマは、長時間動くエージェントを行儀よく保つことです。余計なプロセスを減らし、メモリ使用量に上限を設け、リトライループが止まるタイミングを判断できるようにしました。
20 コミット、69 ファイル、追加は約 3,700 行です。大半は、すべてのエージェントが依存するコード検索バックエンド Serena を oh-my-agent がどう管理するかに費やしました。
新機能
- マネージド Serena ランタイム: バージョンで制御された Serena アダプターをインストールし、ファイル単位の SQLite シンボルキャッシュを持たせました。Python がワークスペース全体のシンボルツリーをメモリに保持することはなくなります
-
oma serena check: Serena の設定を検証し、共有デーモンに対して Dart のチェックを実行する新コマンド。スクリプトから扱える終了コード付き - デーモンの定期クリーンアップ: アイドル状態の共有 Serena デーモンを、独立した定期タスクが回収します。登録済み PID にシグナルを送る前にプロセスの同一性を確認するため、再利用された PID を誤って kill することはありません
- マネージド Dart 診断: パッケージ診断が、マネージドな Dart language server を再利用します。共有デーモンの起動時や置き換え時には、アダプターのリビジョンを記録します
-
doctor レポート:
oma doctorが Serena アダプターの状態を、ターミナルのフッターと JSON レポートの両方に出力
修正
- Serena スタックの重複: 共有サーバーに接続できない場合、プライベートな Serena スタックを新たに起動せず、接続失敗をそのまま報告します。マネージドコンテキストはレジストリ検索の前に正規化します
- 負荷時のデーモン置き換え: クライアントが接続中にランタイムのリビジョンが変わった場合は、稼働中のデーモンを使い続け、置き換えは全クライアントの切断を待ちます。アクティブ、ビジー、旧リビジョンの各ケースをテストでカバーしています
- Dart 解析の先行実行: Dart の既定を、ファイルを開いたときに解析する設定に変更しました。SDK バージョンが未設定なら、ローカルの stable SDK のバージョンを使います
- オーケストレーションのリトライが無制限になる問題: プランはディスパッチ時に固定し、リトライはワークフローの系譜と論理ゴール単位で数えます。証拠の失敗とプロダクトの失敗を分離し、メタデータ欠落には、プロダクトのプランニングをやり直さずに 1 回だけ修復を試みます
- 不安定なチェック: ブリッジのタイムアウトテストは、実行時間ではなく保護対象ブリッジのレスポンスを検証するようにしました。境界スキャンは、TypeScript ワーカーの一時的な終了をリトライします
改善
-
静かな更新:
oma updateは、変更された Hyperframes コンポーネントを表示し、修復したリンクの重複を除き、最後にバージョンの要約を 1 つだけ出します。不正確なファイル総数と定型の通知は出なくなりました -
モジュール境界の整理: Serena の設定検証を共有 I/O レイヤーへ移したので、
serena checkとセットアップはブリッジのコマンドスライスを import しません。挙動は変わりません - 検証: 重複サーバーの修正は、影響を受ける 211 件のテスト、型チェック、lint、境界チェックに加え、Serena 1.7.0 と Dart 3.13.4 でのシンボル検索と定義検索のスモークテストで確認しました
-
ドキュメントとテスト:
integrations/serena/README.mdを拡充し、Dart アダプター、インストーラー、シンボルキャッシュ向けの Python テストを追加しました
インストール
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.ps1 | iex
リンク
oh-my-agent は、プロンプトを書くよりオーケストレーションに時間を使うチームのためのツールです。次は長時間のオーケストレーション実行まわりのガードレールを強化し、行き詰まったゴールがループせず早めに失敗するようにします。
原文(英語): https://dev.to/gracefullight/oh-my-agent-shared-serena-daemons-bounded-retry-loops-4g6