Patchloom について
Patchloomは、AIコーディングエージェント向けのCLI兼MCPサーバーです。設定ファイルやMarkdownの解析編集、AST操作に対応し、プレビューやロールバックを伴う複数ファイル編集を行えます。
主な機能
- 01JSON、YAML、TOMLのパーサー編集
- 02コメントと書式の保持
- 03見出しに基づくMarkdown編集
- 0420言語のAST操作
- 05ドライランとロールバック付き一括編集
活用シーン
- 01構文を保って設定値を変更
- 02複数ファイルの編集を1回で実行
- 03Markdownのセクション、表、箇条書きを更新
MCP 対応
`patchloom mcp-server` は編集操作を構造化されたMCPツールとして公開します。MCPクライアントはシェルコマンドを組み立てずに操作を呼び出せます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Patchloom
1つのバイナリで、あらゆるプラットフォームに対応。AI エージェント向けの構造化ファイル編集。
Patchloom は、あらゆるオペレーティングシステムで AI コーディングエージェントが安全に構造化ファイルを編集できるようにする、単一バイナリの CLI です。セレクター(正規表現ではありません)で JSON、YAML、TOML を編集し、コメントを保持します。また、20 の言語でコード構造を理解し、複数ファイルの編集を1回のツール呼び出しにまとめられ、Linux、macOS、Windows で同じように動作します。
汎用ファイルシステム MCP ではありません。 デフォルトの MCP ファイルシステムサーバーは、ファイルをテキストとして読み書きします。Patchloom は、ドライランのプレビュー、パーサーを利用した設定ファイルや Markdown の編集、AST 操作、undo に対応した複数ファイルの batch/tx、ホスト向けの安定した error_kind 分類を追加します。完全なコーディングエージェント(Claude Code、Codex、Cursor)がループを管理し、Patchloom はそれら(または Rust に組み込むユーザー)が呼び出すツールレイヤーです。

# Edit a YAML value by selector without breaking comments or formatting
patchloom doc set config.yaml database.port 5432 --apply
# Batch 6 file edits into a single tool call
patchloom batch --apply <<'EOF'
doc.set package.json version "2.0.0"
doc.set config.yaml app.version "2.0.0"
doc.set config.toml project.version "2.0.0"
replace README.md "1.0.0" "2.0.0"
replace CHANGELOG.md "1.0.0" "2.0.0"
file.create VERSION "2.0.0"
EOF
Patchloom を選ぶ理由 | インストール | クイックスタート | コマンド | 比較 | 用途に応じた選び方 | AI エージェントとの連携 | ステータス
Patchloom を選ぶ理由
問題
AI エージェントはツール呼び出しを通じてファイルを編集します。呼び出しのたびに LLM との往復が発生します。設定ファイルに関わるタスクでは、このプロセスに 3 つの失敗要因があります。
- 構文の破損。 エージェントが JSON、YAML、TOML にテキスト置換を使い、無効な出力を生成します(波括弧の不整合、インデントの崩れ、コメントの消失)。
- 往復コスト。 6 つのファイルを編集するには、ツール呼び出しが 6 回必要です。それぞれで、LLM が生成し、実行し、結果を読み取り、次の呼び出しを計画するまで待つことになります。
- プラットフォームの分断。 Linux ではエージェントは
sed、jq、grepを使います。Windows ではこれらは使えません。エージェントは冗長な PowerShell に頼るか、慣れない構文でエラーを起こします。
patchloom がそれぞれを解決する方法
| 問題 | patchloom による解決方法 |
|---|---|
| 構文の破損 | doc コマンドはファイルを解析し、セレクターパスで値を変更して、有効な出力を書き込みます。コメントと書式は保持されます。正規表現は不要です。 |
| 往復コスト | batch と tx は N 個の操作を 1 回のツール呼び出しにまとめます。6 つのファイル編集を、失敗時のアトミックなロールバックを備えた 1 つのコマンドにできます。 |
| プラットフォームの分断 | 依存関係ゼロの単一の静的バイナリです。Linux、macOS、Windows で同じコマンド、同じフラグ、同じ動作を利用できます。 |
patchloom で何が変わるか
|
patchloom を使わない場合(ツール呼び出し 6 回)
|
patchloom batch を使う場合(ツール呼び出し 1 回)
|
主な機能
| 機能 | 内容 | 例 |
|---|---|---|
| パーサーに基づく編集 | セレクターを使って JSON/YAML/TOML を編集し、コメントと書式を保持します | doc set config.yaml db.port 5432 --apply |
| 1 回の呼び出しで N 個のファイルを一括処理 | batch と tx は複数の操作をロールバック可能な 1 回のツール呼び出しにまとめます | batch --apply < ops.txt |
| コメントの保持 | 配列のサイズ変更を含むすべての編集で、YAML/TOML のコメントが保持されます | doc append config.yaml tags '"v2"' --apply |
| 見出しを認識した Markdown 編集 | 行番号ではなく見出しを指定して、セクション、テーブル、箇条書きを編集します | md table-append README.md --heading "API" --row "| new | row |" --apply |
| AST を認識したコード操作 | 20 の言語でシンボルの一覧表示、名前変更、置換、解析を行います | ast rename src/ --old old_name --new new_name --apply |
| アトミックなロールバック | strict: true を指定すると、フォーマットまたは検証の手順が失敗した場合にすべてのファイルを元に戻します | tx plan.json --apply |
| MCP サーバー | すべての操作を構造化された MCP ツール呼び出しとして公開します | patchloom mcp-server |
| 任意の CLI サンドボックス | 読み取りと書き込みで、--cwd からの ..//絶対パスによる逸脱を拒否します(デフォルトではオフ、MCP では常にオン) | patchloom --cwd <ws> --contain search … / create … --apply |
| クロスプラットフォーム対応 | Linux、macOS、Windows で同じように動作します。sed、jq、grep は不要です。 | どこでも同じバイナリ |
patchloom とネイティブツールの使い分け
Patchloom はあらゆるファイル操作を置き換えるものではありません。その指示により、エージェントはいつ patchloom を使い、いつネイティブツールを使ったほうが速いかを正確に判断できます。
| タスク | patchloom を使うか | 理由 |
|---|---|---|
| セレクターを使って JSON/YAML/TOML の値を編集する | はい | パーサーによって有効な出力が保証され、コメントも保持されます |
| 1 つのタスクで 3 つ以上のファイルを編集する | はい | batch/tx により往復をなくせます |
| Markdown テーブルに行を追加する | はい | 見出しを認識するため、行番号を推測する必要がありません |
| 単一ファイルを読み取る | いいえ | ネイティブの read_file のほうが高速です |
| 単純なテキスト検索 | いいえ | ネイティブの grep のほうが高速です |
| 単一ファイル内のテキスト置換 | いいえ | ネイティブの search_replace のほうが高速です |
速度より正確性
シンプルな単一ファイルの編集では、Patchloom はネイティブツールより速くありません。そのような場合はネイティブツールを使ってください。しかし、ネイティブのテキスト置換では構造化ファイルを安全に編集できません。YAML に対して sed を実行すると、インデントが崩れたり、コメントが削除されたり、構文が無効になったりする可能性があります。doc set はファイルを解析し、セレクターで値を変更して、有効な形式で出力します。この保証こそが重要な点です。
Patchloom がより速いのは、複数ファイルの一括処理です。ネイティブツールで6つのファイルを編集する場合、LLM との往復は6回必要です。batch を1回呼び出せば、同じ作業を1回の往復で行えます。
ベンチマークの詳細(Grok Build 経由の Claude Opus 4、11タスク)
Task PL-CLI MCP Native
────────────────────── ────── ────── ──────
search 18.5s 12.7s 13.9s ◀ ~same
replace 36.1s 26.6s 26.1s ◀ ~same
doc_set 30.9s 16.9s 13.7s ◀ native fastest
md_table 15.5s 13.5s 15.3s ◀ MCP fastest
tx_multi_file 41.4s 28.5s 22.9s ◀ native fastest
batch_6_files 50.6s 46.6s 30.3s ◀ native fastest
batch_mixed_ops 24.7s 13.6s 20.9s ◀ MCP fastest
yaml_comment_preserve 18.1s 11.6s 16.1s ◀ MCP fastest
md_insert 15.0s 11.7s 15.7s ◀ MCP fastest
file_ops 26.0s 16.6s 17.2s ◀ ~same
tidy 45.0s 30.3s 41.7s ◀ MCP fastest
────────────────────── ────── ────── ──────
TOTAL 321.9s 228.5s 233.8s
構造化されたツール呼び出しによってシェル構文を組み立てる手間を完全に省けるため、MCP モードが全体で勝っています(228.5秒対233.8秒、ネイティブ)。MCP は11タスク中5タスクで勝ち、ネイティブは3タスクで勝ち、3タスクは引き分けです。CLI モードは、シェル構文を組み立てるオーバーヘッドのため、常に最も遅くなります。
インストール
GitHub の各リリースを追跡する配布チャネル(Homebrew、Scoop、crates、
npm、Releases)を優先してください。Windows では Scoop を推奨します。winget
(Patchloom.Patchloom)はリリースごとに公開され、通常は Microsoft の公開
パイプラインの後に最新になります(検索結果が古い場合は winget source update を実行してください)。Chocolatey はコミュニティによる審査の間、更新が遅れることがよくあります。
# Homebrew (macOS/Linux)
brew install patchloom/tap/patchloom
# crates.io (requires Rust 1.95+, includes MCP server)
cargo install patchloom
# npm / npx (downloads the platform binary from GitHub Releases)
npx patchloom --version
# or: npm install -g patchloom
# Scoop (Windows; recommended Windows channel)
scoop bucket add patchloom https://github.com/patchloom/scoop-bucket
scoop install patchloom/patchloom
Linux、macOS、Windows 用のビルド済みバイナリは Releases ページにあります。 シェルインストーラースクリプト、ソースからのビルド、シェル補完、winget / Chocolatey に関する注意事項については、インストールを参照してください。
- MCP Registry の名前:
mcp-name: io.github.patchloom/patchloom
エディター拡張機能
VS Code、Cursor、Windsurf、または VSCodium 用のコンパニオン拡張機能をインストールしてください。
この拡張機能は CLI を自動検出(またはインストール)し、AGENTS.md を生成して、MCP サーバーを設定し、コマンドパレットにクイックアクションを追加します。詳しくは、エディター拡張機能ガイドを参照してください。
クイックスタート
1. プロジェクトをセットアップする
patchloom init
新しいプロジェクトでは AGENTS.md を作成し、既存のエージェント指示ファイルがある場合はルールを追記します。また、シェル補完を提案し、MCP 設定の機会を検出します。確認プロンプトを省略するには -y を渡してください。
ルールのテキストだけが必要な場合:
patchloom agent-rules >> AGENTS.md
# Or tailor the output:
patchloom agent-rules --mode mcp >> AGENTS.md # MCP-only (no CLI examples)
patchloom agent-rules --platform windows >> AGENTS.md # Windows-only syntax
.vscode/ または .cursor/ が存在する場合、init はコピーしてすぐ使える .vscode/mcp.json または .cursor/mcp.json のスニペットも出力します。
AI エージェントは AGENTS.md を読み、patchloom とネイティブツールを使い分けるタイミングを学習します。
2. 設定ファイルを安全に編集する
# Parser-backed: changes the value, preserves comments and formatting
patchloom doc set config.yaml database.port 5432 --apply
3. 複数の編集を1回の呼び出しにまとめる
patchloom batch --apply <<'EOF'
doc.set config.json version '"2.0.0"'
md.upsert_bullet AGENTS.md "Rules" "- Always test"
replace src/main.rs "v1" "v2"
EOF
値は JSON が基本です。引用符なしの 2.0 は数値になります。文字列にするには、上記のように引用符を重ねてください(Unix シェルの場合)。
bash のヒアドキュメントが使えない Windows PowerShell では、ops をファイルに書き込みます。
@'
doc.set config.json version "\"2.0.0\""
md.upsert_bullet AGENTS.md "Rules" "- Always test"
replace src/main.rs "v1" "v2"
'@ | Set-Content ops.txt -Encoding utf8
patchloom batch --apply ops.txt
または、format と validate のライフサイクルを含む JSON プランを使います。
{
"version": 1,
"operations": [
{ "op": "doc.set", "path": "config.json", "selector": "version", "value": "2.0.0" },
{ "op": "md.upsert_bullet", "path": "AGENTS.md", "heading": "Rules", "bullet": "- Always test" },
{ "op": "replace", "path": "src/main.rs", "old": "v1", "new": "v2" }
],
"format": [{ "cmd": "cargo fmt --all" }],
"validate": [{ "cmd": "cargo test", "required": true }]
}
patchloom tx plan.json --apply
tx プランは信頼できる入力として扱われます。format と validate は cmd フィールドをホストのシェル(Unix では sh -c、Windows では cmd /C)経由で実行するため、信頼できるプランだけを実行してください。
4. または、MCP を使って構造化ツール呼び出しを行う(シェル構文は不要)
MCP サポートを有効にしてインストールした後、サーバーを起動します。
PATCHLOOM_MCP_SURFACE=core patchloom mcp-server
MCP 対応エージェントは、シェルのクォートやコマンドの組み立てを行わず、構造化 JSON として patchloom ツールを直接呼び出します。エージェントは patchloom doc set config.json version '"2.0"' --apply を組み立てる代わりに、{"path": "config.json", "selector": "version", "value": "2.0"} を送信します。
コーディングエージェント: 12 ツールのパック(list_files、検索/読み取り/置換、doc/md、execute_plan、operation_schema、server_info)を使うには、PATCHLOOM_MCP_SURFACE=core を設定します。これにより、スキーマを小さく保てます。環境変数が未設定の場合、製品のデフォルトでは引き続き全インベントリが使用されます。リストと編集には Patchloom MCP のみを使うことを推奨します(2 つ目のファイルシステム MCP は不要です)。Cursor / Claude / Codex の貼り付け用設定とセキュリティモデルの全容については、MCP セットアップガイドをご覧ください。
VS Code、Cursor、または Windsurf をお使いですか? Patchloom 拡張機能がセットアップを自動的に処理します。バイナリをインストールし、init を実行して、エディターの MCP 設定を構成します。
Rust ライブラリとして
プライベートな編集スタックの代わりに Patchloom を組み込むホストチーム向け:
組み込みホストのケーススタディをご覧ください
(for_agent、peels、fuzzy refuse、apply_fragment、path-only ops)。
patchloom を依存関係として追加します(CLI/MCP/AST を省略するには default-features = false を指定します)。
[dependencies]
patchloom = { version = "0.37.6", default-features = false }
use patchloom::api::{self, ApplyMode, ReplaceOptions, edit_error_kind, EditErrorKind};
use std::path::Path;
// Replace text (preview only, no disk write)
let result = api::replace_text(
Path::new("src/config.rs"),
"old_value", "new_value",
&ReplaceOptions::default(),
ApplyMode::Preview,
None,
)?;
println!("{}", result.diff);
// Agent hosts: shared primary+fallback policy (unique, require_change, fuzzy @ 0.90)
let opts = ReplaceOptions::for_agent();
// Fail closed: zero matches become EditErrorKind::NoMatch
match api::replace_in_content("body", "missing", "x", &opts) {
Ok(r) => println!("changed={}", r.changed),
Err(e) => assert_eq!(edit_error_kind(&e), Some(EditErrorKind::NoMatch)),
}
// for_agent auto-refuses over-wide fuzzy; custom options use api::fuzzy_span_suspicious
// Buffer multi-op + host write: api::refuse_batch_if_suspicious_fuzzy after apply_content_edits
// Invalid options and bad regex peel InvalidInput (CLI/tx typed errors included)
match api::replace_in_content("body", "", "x", &ReplaceOptions::default()) {
Err(e) => assert_eq!(edit_error_kind(&e), Some(EditErrorKind::InvalidInput)),
Ok(_) => panic!("empty pattern must error"),
}
// Set a value in a JSON file
api::doc_set(
Path::new("config.json"),
"version",
serde_json::json!("2.0"),
ApplyMode::Apply,
None,
)?;
// Multi-doc YAML: merge into document 0 (selector None = root only)
api::doc_merge(
Path::new("stream.yaml"),
serde_json::json!({"env": "prod"}),
ApplyMode::Apply,
None,
Some("0"),
)?;
// Sole-path text load: binary → EditErrorKind::Binary; invalid UTF-8 → InvalidEncoding
let _text = api::load_text(Path::new("notes.md"))?;
すべての API 型は Send + Sync です。api モジュールに加えて、ユーティリティモジュールも公開されています。containment(ワークスペースのパスガード)、exec(シェルコマンドの実行)、files(ファイルの走査、load_text_strict、バイナリ検出)、backup(Apply 後の検証/復元用 restore_path_from_latest_backup)、write(ポリシー変換を伴うアトミックなファイル書き込み)があります。一時ディレクトリを必要とするライブラリユーザー(エージェントなど)は、PathGuard::builder(cwd).allow_temp_directory() を使用できます(macOS の /tmp に対応します)。containment および api モジュールの rustdoc をご覧ください。複数ドキュメントの裸のキーと、ルートが異なるマージは、edit_error_kind を介して EditErrorKind::TypeError に変換されます。作成/名前変更時に宛先がすでに存在する場合は、EditErrorKind::AlreadyExists に変換されます(または CLI と安定して互換性のある "already_exists" 文字列を返す api::is_already_exists / api::error_kind_str を使用できます)。細分化された種別には、edit_error_kind に対応する bool 形式の判定関数(is_not_found、is_conflicts、is_changes_detected、is_type_error、is_format_failed、is_guard_rejected、is_invalid_input、is_no_match、is_ambiguous)もあります。
fail-closed の置換オプション/シェルトークンオプション:CLI の replace --require-change と --command-position(plan/MCP のフィールド、およびライブラリの ReplaceOptions も同様)。エージェントホストでは、主要な置換パスとフォールバックの置換パスの両方で ReplaceOptions::for_agent() を使います(スパンが自動的に拒否されます)。カスタムオプションでは、fuzzy Apply 後に api::fuzzy_span_suspicious / FuzzySpanPolicy を呼び出してください。複数オペレーションをバッファリングするホストでは、apply_content_edits の後に api::refuse_batch_if_suspicious_fuzzy を呼び出します(#2064)。ライブラリ専用の AST ミューテーター:ast_rename / ast_replace_in_symbol / ast_rename_batch(feature ast + files)、および FunctionSigEdit::parse_rust。順序に沿ったホスト導入手順:組み込みホストのチェックリスト(#2009)。全機能:docs.rs/patchloom。
はじめに
| リソース | 学べる内容 |
|---|---|
| インストール | インストール方法とシェル補完 |
| 基本概念 | 書き込みモード、トランザクションプラン、終了コード |
| MCP のセットアップ | patchloom をエージェント向けの MCP サーバーとして設定する方法 |
| エディター拡張機能 | VS Code、Cursor、Windsurf、VSCodium との連携 |
| クイックスタート | 5 分間のガイド |
| リファレンス | すべてのコマンド、操作、モード |
| 例 | トランザクションプランのテンプレート |
コマンド
エージェント向けに最適化(ネイティブツールより高速または安全です)
| コマンド | 機能 | 使用場面 |
|---|---|---|
batch | 1 回の呼び出しで、行指向の複数ファイル編集を実行 | シンプルな構文で 3 ファイル以上を編集する場合 |
tx | フォーマット/検証のライフサイクルを含む JSON プラン | ロールバックが必要な複雑な複数ファイル編集 |
doc | パーサーを利用した JSON/YAML/TOML の編集 | 構文を壊さずに設定値を変更する場合 |
md | 見出しを認識する Markdown の編集 | ドキュメント内の表、セクション、箇条書きを更新する場合 |
ast | AST を認識するシンボル操作(20 言語) | 識別子の名前変更、シンボルの一覧表示、影響分析 |
patch | 古さを検出しながら統一差分を適用 | パッチを安全に再適用する場合 |
tidy | テキストファイルの空白と改行を正規化 | テキストの整然さを確認する CI チェック |
mcp-server | MCP プロトコルサーバー | MCP 対応エージェント(シェル構文は不要) |
汎用(スクリプトや CI でも便利です)
| コマンド | 説明 |
|---|---|
search | テキストファイル全体を対象に、高速なリテラル検索または正規表現検索を実行(階層化されたカスタム無視ファイル向けの --glob/--exclude/--ignore-file、--max-results、-C コンテキストなどをサポート) |
replace | 差分プレビュー付きで、テキストファイル全体の文字列を機械的に置換 |
apply-fragment | 必須アンカー付きの自由形式フラグメント(MorphLLM 形式のマーカーを除去。クラウドマージなし) |
append | 既存ファイルにコンテンツを追記 |
prepend | 既存ファイルの先頭にコンテンツを追加 |
create | コンテンツを含む新しいファイルを作成 |
delete | ファイルを削除 |
rename | ファイルを移動(名前を変更) |
read | 行範囲を指定してファイルの内容を読み込み |
status | コミットされていない変更があるファイルを表示 |
explain | tx プランを平易な英語で要約 |
undo | --apply で作成したバックアップからファイルを復元 |
completions | シェル補完を生成(bash、zsh、fish、elvish) |
init | プロジェクトで patchloom をセットアップ(エージェントルール、補完、MCP) |
schema | ティアによるフィルタリングとシステムプロンプトに対応した操作スキーマをエクスポート |
agent-rules | プロジェクト向けのエージェント指示を生成 |
patchloom との比較
| ツール | 強み | patchloom との違い |
|---|---|---|
| jq | JSON のクエリ/変換 | patchloom は YAML、TOML、env、ini、properties、markdown にも対応し、ファイルをまたいだ一括処理やコメントの保持もできます |
| yq | YAML/JSON のクエリ/変換 | patchloom は CST 編集で YAML のコメントを保持します。また、TOML、env、ini、properties、markdown の編集にも対応し、一括処理とアトミックなトランザクションを追加します |
| dasel | 複数形式の取得/設定 | patchloom の doc は JSON、YAML、TOML、env、ini、properties に対応します。一括処理(1 回の呼び出しで N 件の編集)、アトミックなロールバック、形式/検証のライフサイクルも追加します。XML、HCL、CSV、KDL は引き続き dasel または yq をご利用ください |
| sd | 正規表現による検索/置換 | patchloom はパーサーベースの構造化編集と一括処理を追加し、不正な JSON/YAML が生成されることを防ぎます |
| comby | 構造的なコードパターン | patchloom は設定ファイルとエージェントのワークフローを対象としており、ソースコードのパターンマッチングは対象外です |
重要な違いは、patchloom が AI エージェントのワークフロー向けに設計されていることです。1 回の batch または tx 呼び出しで N 回の連続したツール呼び出しを置き換え、往復を減らし、部分的な失敗状態をなくします。
エージェントネイティブな編集ツールとの比較
上の表では、patchloom と人間向けの CLI ツールを比較しています。しかし、エージェントにはすでに組み込みの編集機能があります。Claude Code の edit_file、Cursor の apply、Grok Build の search_replace、Aider の /code ブロックなどです。では、なぜ patchloom を追加するのでしょうか?
エージェントネイティブなツールはテキストマッチングを使用します。 テキストのブロックを見つけて置換します。これはソースコードでは機能しますが、構造化された設定ファイルではうまくいきません。
|
エージェントが YAML に
エージェントは |
エージェントが
YAML パーサーがセレクターパスの値を変更します。コメント、インデント、キーの順序、その他すべての書式が保持されます。出力は常に有効な YAML です。 |
| エージェントネイティブなツールの制限 | patchloom による対応 |
|---|---|
| コメントの破壊 | CST レベルの YAML/TOML 編集ですべてのコメントを保持 |
| ツール呼び出し 1 回につき 1 ファイル | batch/tx で 1 回の呼び出しにより N 個のファイルを編集(ベンチマークで 6.7 倍高速) |
| ロールバックなし | strict: true を指定した tx は、検証に失敗した場合にすべてのファイルを元に戻します |
| プラットフォームに依存 | Linux、macOS、Windows で同じバイナリと構文を使用 |
| 古いコンテキストのリスク | patch apply はファジーマッチングを使用してコンテキストのずれに対応 |
ネイティブツールを使い続ける場合: 単一ファイルの読み取り、簡単なテキスト検索、コメントが重要でない単一ファイルのテキスト置換。Patchloom のエージェントルールでは、それぞれの方法を使うタイミングをエージェントに正確に指示します。
使い分け
| 必要なこと | 推奨 | 代わりに使うなら |
|---|---|---|
| パスを指定した JSON、YAML、TOML、env、ini、properties の編集 | Patchloom doc | 汎用ファイルシステム MCP/無差別なテキスト置換 |
| 複数ドキュメントの YAML ストリーム | Patchloom のセレクター(0.key) | ストリームのルートに対する単独のキー指定 |
| 構造的なコードパターンの検索 | ast-grep | 形状を調べるためのテキストのみの grep |
| コード内の識別子の名前変更 | Patchloom ast rename | シンボルに対する曖昧なテキスト置換 |
| 複数ファイルへのアトミックな適用と取り消し | Patchloom batch/tx | N 回の逐次的なシェル編集 |
| 既知のアンカー(after/before/old)を伴う自由形式のスニペット | Patchloom apply-fragment(Morph 形式の // ... existing code ... マーカーを除去) | ファイル全体の書き換え、または配置場所の推測 |
| アンカーなしの自由形式スニペット(クラウドモデルによるマージ) | Morph Fast Apply など | Patchloom(アンカーのない Morph マージは対象外です) |
| 完全なエージェント製品 | Claude Code/Codex/Cursor | Patchloom 単体 |
詳しい説明はこちらです:比較 · エンベッダーホストのチェックリスト · MCP のセットアップ
ライブラリホスト: エンベッダーホストのチェックリスト:デュアルパスの ReplaceOptions::for_agent()(プライマリ+フォールバック。refuse_suspicious_fuzzy を含む)、#[non_exhaustive] の _ アームを使用して edit_error_kind/is_*/is_fuzzy_span_suspicious で判定、バッファー上の複数操作後に使用する複数操作対応の ContentEditsResult.op_honesty + refuse_batch_if_suspicious_fuzzy(#2064)、最も広い matched_text を返す plan/tx、任意指定の apply_content_edits_to_file_with_span_policy。カスタムオプションでは、ファジー Apply の後に引き続き api::fuzzy_span_suspicious/FuzzySpanPolicy を使用します。
コンテキスト予算: 行範囲を指定した read、search --count/--files-with-matches、1 回の batch/tx、大きなストリームには --jsonl を使用します。
AI エージェントとの連携方法
2 つの統合モードで、同じ機能を利用できます。
flowchart LR
subgraph CLI["CLI mode (any agent)"]
direction TB
A["patchloom agent-rules >> AGENTS.md"] --> B["Agent reads AGENTS.md"]
B --> C{"What kind of edit?"}
C -->|Simple edit| D["Native tool (faster)"]
C -->|Config edit| E["patchloom doc (safer)"]
C -->|Markdown edit| F["patchloom md (smarter)"]
C -->|Multi-file edit| G["patchloom batch (batched)"]
end
subgraph MCP["MCP mode (MCP-capable agents)"]
direction TB
H["patchloom mcp-server"] --> I["Agent discovers tools via MCP"]
I --> J["Structured JSON tool calls"]
J --> K["No shell syntax needed"]
end
ステータス
25 個のコマンドにわたる 5900 件以上のテストがあります。Grok 4.3、GPT-5.4、Claude Opus 4.6 でテスト済みです。
| コンポーネント | ステータス |
|---|---|
| CLI | crates.io、Homebrew、Scoop、npm(npx patchloom)、または GitHub Releases からインストールできます。winget(Patchloom.Patchloom。通常、Microsoft の公開後に最新版になります)および Chocolatey(コミュニティによる審査には GitHub より遅れることがよくあります)からも入手できます。 |
| MCP サーバー | 公式の MCP Registry での名前は io.github.patchloom/patchloom(stdio;crates.io/npm パッケージ。server.json を参照)。Smithery/デスクトップホスト向けのローカル MCPB:make pack-mcpb(mcpb/)。Glama の掲載ページ(glama.json。説明文は server.json と一致させてください。詳しくは MCP のセットアップを参照) |
| エディター拡張機能 | VS Code Marketplace および Open VSX で公開されています。 |
全コマンドリファレンス
すべてのコマンド、フラグ、トランザクション操作、終了コードは、コマンドリファレンス に記載されています(docs/reference/README.md でも参照できます)。
ライセンス
以下のいずれかのライセンスで提供されています。
- MIT ライセンス(LICENSE)
- Apache License, Version 2.0(LICENSE-APACHE)
お好きな方を選択できます。
貢献
CONTRIBUTING.mdをご覧ください。
プルリクエストを作成する前にローカルで検証するには、make checkを実行してください。主な Linux テストと lint のゲートをカバーします。具体的には、フォーマット、clippy、ユニットテスト(機能マトリクスのジョブを含む)、統合テスト、PTY テスト、リリースノートの構成、テストの健全性、生成ドキュメントの最新性(check-patchloom-md、check-readme)、server-json-test、verify-homebrew-version-test、パッケージングスクリプトのユニットテスト(scoop-manifest-test、chocolatey-package-test、pack-mcpb-test、force-release-version-test)、workflow-sanity-test、apply-release-notes-test、dco-check-testです。GitHub の必須チェックすべてを実行するわけではありません。audit、deny、Windows のチェックは GitHub Actions で実行されます。ローカルで繰り返し作業する場合、make check-fastはcheck-patchloom-mdのみをスキップし、それ以外は同じです(check-readme、server-json-test、verify-homebrew-version-test、パッケージングスクリプトのテスト、workflow-sanity-test、apply-release-notes-test、dco-check-testは引き続き実行されます)。
プルリクエストのタイトルには、Conventional Commits のプレフィックスを1つ使用する必要があります(feat、fix、docs、style、refactor、perf、test、build、ci、chore、revert。カンマや+は使用できません)。CONTRIBUTING.mdをご覧ください。
すべてのコミットにgit commit -sで署名を付ける必要があります。
エージェント統合テスト
make agent-testを実行すると、指示を与えられた AI エージェントが patchloom を正しく使用することを検証する、19件の pytest シナリオが実行されます。make bench-agentを実行すると、11件のタスクを対象に3方式(CLI、MCP、ネイティブ)のベンチマークが実行されます。モデルを切り替えるにはMODEL=Xを、ばらつきを抑えるにはRUNS=Nを使用してください。LLM API キーが必要です。make checkには含まれません。詳細はtests/agent/README.mdをご覧ください。
セキュリティ
最新のセキュリティ報告に関するガイダンスは、SECURITY.mdをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。