このプロジェクトについて
## 概要
`prod-code`は、AIコーディングエージェント群向けに設計されたリモートコードインテリジェンスサーバーです。言語解析、ビルド、テストを開発者のノートPCからLANノードへ移し、編集体験はローカルに保ちます。このシステムはチェックアウトをゲートウェイにミラーし、そこではウォームなアナライザー(rust-analyzerはインプロセス、gopls、clangd、TypeScript、pyright、sourcekit-lspは子プロセス)を維持し、コマンドを実行します。エージェントはMCPツール経由でアクセスし、エディタはドロップインの言語サーバーとして利用できます。
## 主な機能
- **リモート解析**: 言語サーバーはノートPCではなくLANノードで動作し、ローカルのCPUとメモリ負荷を軽減します。
- **MCP統合**: Model Context Protocol経由でAIエージェント(Claude、Codex、Gemini)にツールを公開します。
- **エディタ対応**: Zedなどのエディタ向けの言語サーバーとして動作し、設定や保存イベントのプロトコルブリッジを備えます。
- **マルチ言語**: Rust、Go、C/C++、TypeScript/JavaScript、Python、Swiftをサポートします。
- **安全なリファクタリング**: 意味的リネーム、シグネチャ変更、移動、抽出などのツールを、2つ目のアナライザーでの検証付きで提供します。
- **ビルド/テスト実行**: コマンドはウォームなキャッシュを持つノード上で実行され、結果とファイル変更が同期されます。
- **クラスタ対応**: 複数のノードがゴシップし、負荷と言語サポートに基づいてワークスペースを分散できます。
## エージェント向けツール
MCPサーバーは包括的なツールセットを提供します。
- **コード検索**: `code_search`、`code_symbols`、`code_definition`、`code_references`、`code_callers`、`code_callees`、`code_implementations`、`code_supertypes`、`code_outline`、`code_source`。
- **理解**: `code_slice`、`code_hover`、`code_type_at`、`code_impact`、`code_dead_code`、`code_prune_orphans`。
- **安全な変更**: `code_validate_edit`、`code_diagnostics`、`code_rename`、`code_safe_delete`、`code_change_signature`、`code_move`、`code_extract_function`、`code_introduce_parameter_object`、`code_migrate_type`、`code_generify`、`code_invert_boolean`、`code_make_static`、`code_inline_parameter`、`code_extract_delegate`、`code_extract_trait`、`code_loop_to_iterator`、`code_introduce_variable`、`code_convert_to_method`、`code_wrap_return`、`code_extract_field`、`code_encapsulate_field`、`code_schema_rename`、`code_assists`、`code_codemod`、`code_generate_fixture`、`code_shadow_run`。
- **実行**: `code_check`、`code_lint`、`code_test`、`code_benchmarks`、`code_exec`、`code_diagnose_failure`。
- **運用**: `code_status`、`code_sync`。
すべての位置ベースのツールは、ファイル/行の代わりに`symbol`引数も受け付けるため、エージェントは行番号をgrepする必要がありません。
## 仕組み
- **ミラーされたチェックアウト**: 初回接触時にパス、サイズ、ハッシュのマニフェストを送信し、ゲートウェイはオリジンリポジトリからワークツリーをシードし、不足ファイルのみを同期します。以降の同期はウォーターマークと差分を使用します。
- **ワークツリーごとに1つのアナライザー**: 各gitワークツリーは独自のサーバーワークスペースとデータベースを持ち、相互汚染を防ぎます。エンジンは30分間アイドルになるまで常駐します。
- **2つ目のアナライザーでの検証**: 編集提案は別のエンジンでチェックされ、メインアナライザーの状態を汚染しません。
- **ノード上でのビルドとテスト**: コマンドはワークスペース自身の`target/`ディレクトリで実行され、キャッシュをウォームに保ちます。変更されたファイルはチェックアウトに書き戻されます。
- **クラスタゴシップ**: ノードは5秒ごとにゴシップし、クライアントは1つのシードアドレスを必要とします。配置は既存の保持状況と負荷を考慮します。
## インストール
```sh
# クライアント(単一バイナリ。ゲートウェイは同じバイナリの兄弟)
cargo install --path crates/prod-code-client
# Claudeに登録
claude mcp add --scope user prod-code -e PROD_CODE_REMOTE=192.0.2.10:9400 -- prod-code mcp
# Codexに登録
codex mcp add prod-code --env PROD_CODE_REMOTE=192.0.2.10:9400 -- prod-code mcp
# ノード上で
prod-code-server --bind 0.0.0.0:9400 --storage /srv/prod-code/workspaces \
--advertise <this host>:9400 --peers <other nodes>
```
## エディタでの使用
`prod-code lsp`はエディタの言語サーバーとして動作します。言語自体のサーバーはノード上で動作し、ブリッジがプロトコルを双方向に運びます。Zed向けには`editors/zed`に専用拡張があり、あるいはZedのrust-analyzerを`prod-code lsp --language rust`に向けることもできます。
## 設定
リポジトリごとのオプションはチェックアウトルートの`prod-code.toml`で設定できます。例えば、Rustのフィーチャーフラグ、sysrootの使用、ターゲット選択などです。
## メトリクスと運用
すべてのクエリ、コマンド、同期ラウンドはイベント(エージェント、ホスト、ワークスペース、メソッド、所要時間、成功)としてJSONLファイルに記録されます。`prod-code metrics`はクラスタ全体をp50とp95で集計します。macOSノード向けのデプロイスクリプトが署名とlaunchdのセットアップを処理します。
## フィールド評価
このプロジェクトには、著名なオープンソースリポジトリ(ripgrep、tantivy、tokio、polars、uv、bevy、prometheus、kubernetes、etcd、django、black)に対する評価が、標準化された67ツールプロトコルを用いて含まれており、詳細なブログレポートがリンクされています。
## 要件
ビルドにはRust 1.95.0以降が必要です。rustupでインストールします。
```sh
rustup toolchain install 1.95.0 --profile minimal -c rustfmt -c clippy
```
## ライセンス
MIT / Apache-2.0のデュアルライセンスです。
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.