关于 Patchloom
Patchloom 是面向 AI 编码 Agent 的命令行工具和 MCP 服务,用于安全地编辑结构化文件。它支持配置与 Markdown 解析、AST 操作,以及带预览和回滚的多文件编辑。
主要功能
- 01解析式编辑 JSON、YAML 和 TOML
- 02保留注释与格式
- 03按标题编辑 Markdown
- 04支持 20 种语言的 AST 操作
- 05批量编辑、预览与回滚
适用场景
- 01修改配置值并保持语法有效
- 02在一次调用中编辑多个文件
- 03更新 Markdown 章节、表格或列表
MCP 相关
Patchloom 通过 `patchloom mcp-server` 将编辑操作作为结构化 MCP 工具提供。MCP 客户端可直接调用这些工具,无需构造 shell 命令。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Patchloom
一个二进制文件,适用于所有平台。为 AI Agent 提供结构化文件编辑。
Patchloom 是一个单二进制命令行工具,可让 AI 编码 Agent 在任何操作系统上安全、结构化地编辑文件。它按选择器(而非正则表达式)编辑 JSON、YAML 和 TOML,保留注释,理解 20 种语言的代码结构,将多个文件编辑合并为一次工具调用,并且在 Linux、macOS 和 Windows 上的行为完全一致。
它不是通用文件系统 MCP。 默认的 MCP 文件系统服务以文本形式读写文件。Patchloom 还提供试运行预览、由解析器支持的配置和 Markdown 编辑、AST 操作、支持撤销的多文件 batch/tx,以及供宿主使用的稳定 error_kind 提取结果。完整的编码 Agent(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? | 安装 | 快速开始 | 命令 | 对比 | 如何选择 | 架构 | 状态
为何选择 Patchloom?
问题所在
AI Agent 通过工具调用编辑文件。每次调用都需要往返一次 LLM。当任务涉及配置文件时,这个过程有三种失败模式:
- 语法损坏。 Agent 使用文本替换来处理 JSON、YAML 或 TOML,导致输出无效(括号不匹配、缩进混乱、注释丢失)。
- 往返开销。 编辑 6 个文件意味着需要 6 次独立的工具调用。每次都要等待 LLM 生成、执行、读取结果,并规划下一次调用。
- 平台碎片化。 在 Linux 上,Agent 使用
sed、jq、grep。在 Windows 上,这些工具都不存在。Agent 只能改用冗长的 PowerShell,或因不熟悉语法而出错。
patchloom 如何解决这些问题
| 问题 | patchloom 如何解决 |
|---|---|
| 语法损坏 | doc 命令会解析文件,通过选择器路径修改值,并写入有效输出。注释和格式都会保留。无需正则表达式。 |
| 往返开销 | batch 和 tx 将 N 个操作合并为 1 次工具调用。编辑 6 个文件只需一条命令,失败时可原子回滚。 |
| 平台碎片化 | 单个静态二进制文件,无任何依赖。在 Linux、macOS 和 Windows 上使用相同的命令、标志和行为。 |
使用 patchloom 后的变化
|
不使用 patchloom(6 次工具调用)
|
使用 patchloom batch(1 次工具调用)
|
主要功能
| 功能 | 作用 | 示例 |
|---|---|---|
| 基于解析器的编辑 | 按选择器编辑 JSON/YAML/TOML,同时保留注释和格式 | doc set config.yaml db.port 5432 --apply |
| 一次调用批量处理 N 个文件 | batch 和 tx 将多个操作合并为一次工具调用,并支持回滚 | 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 并非所有文件操作的替代品。它的说明会准确告知 Agent 何时使用它,以及何时原生工具更快:
| 任务 | 使用 patchloom? | 原因 |
|---|---|---|
| 按选择器编辑 JSON/YAML/TOML 的值 | 是 | 解析器可确保输出有效,并保留注释 |
| 在一个任务中编辑 3 个或更多文件 | 是 | batch/tx 可消除往返调用 |
| 向 Markdown 表格追加一行 | 是 | 可识别标题,无需猜测行号 |
| 读取单个文件 | 否 | 原生 read_file 更快 |
| 简单文本搜索 | 否 | 原生 grep 更快 |
| 替换单个文件中的文本 | 否 | 原生 search_replace 更快 |
正确性优先于速度
对于简单的单文件编辑,Patchloom 并不比原生工具快。此类操作请使用原生工具。但原生文本替换无法安全地编辑结构化文件:对 YAML 使用 sed 可能会破坏缩进、删除注释或生成无效语法。doc set 会解析文件、根据选择器更改值,并写入有效内容。这种保证才是关键。
Patchloom 真正更快的场景是批量编辑多个文件。使用原生工具编辑 6 个文件,意味着要与 LLM 往返 6 次。一次 batch 调用就能完成相同的工作,只需往返 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 秒),因为结构化工具调用完全跳过了 shell 语法构造。MCP 在 11 项任务中胜出 5 项;原生工具胜出 3 项;另有 3 项打平。CLI 模式始终最慢,因为它存在 shell 构造开销。
安装
优先选择会随每次 GitHub Release 更新的渠道(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 页面获取。 有关 shell 安装脚本、源码构建、shell 补全以及 winget / Chocolatey 的说明,请参阅安装。
- MCP Registry 名称:
mcp-name: io.github.patchloom/patchloom
编辑器扩展
为 VS Code、Cursor、Windsurf 或 VSCodium 安装配套扩展:
该扩展会自动发现 CLI(或为你安装 CLI)、生成 AGENTS.md、配置 MCP 服务,并向命令面板添加快速操作。详情请参阅编辑器扩展指南。
快速入门
1. 设置项目
patchloom init
这会在新项目中创建 AGENTS.md,或将规则追加到现有的 Agent 指令文件中,提供 shell 补全,并检测可配置 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 Agent 会读取 AGENTS.md,并了解何时使用 patchloom 而非原生工具。
2. 安全地编辑配置文件
# Parser-backed: changes the value, preserves comments and formatting
patchloom doc set config.yaml database.port 5432 --apply
3. 将多项编辑合并到一次调用中
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 shell)。
在 Windows PowerShell 中(不支持 bash heredoc),请将操作写入文件:
@'
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 会通过宿主 shell 执行其 cmd 字段(Unix 上为 sh -c,Windows 上为 cmd /C),因此只运行你信任的计划。
4. 或使用 MCP 执行结构化工具调用(无需 shell 语法)
安装并启用 MCP 支持后,启动服务:
PATCHLOOM_MCP_SURFACE=core patchloom mcp-server
支持 MCP 的 Agent 可直接将结构化 JSON 传给 patchloom 工具,无需 shell 引号或构造命令。Agent 发送 {"path": "config.json", "selector": "version", "value": "2.0"},而不是构造 patchloom doc set config.json version '"2.0"' --apply。
编码 Agent: 设置 PATCHLOOM_MCP_SURFACE=core,启用包含 12 个工具(list_files、搜索/读取/替换、doc/md、execute_plan、operation_schema、server_info)的工具包,让架构保持精简。未设置该环境变量时,产品默认仍提供完整工具清单。执行文件列表和编辑时,优先单独使用 Patchloom MCP(无需再配备第二个文件系统 MCP)。Cursor / Claude / Codex 的粘贴配置和完整安全模型,请参阅 MCP 设置指南。
使用 VS Code、Cursor 或 Windsurf? Patchloom 扩展会自动完成设置:安装二进制文件、运行 init,并配置编辑器的 MCP 设置。
作为 Rust 库使用
用 Patchloom 替代私有编辑栈的宿主团队:请参阅嵌入式宿主案例研究
(for_agent、peels、fuzzy refuse、apply_fragment、仅路径操作)。
将 patchloom 添加为依赖项(使用 default-features = false 可排除 CLI/MCP/AST):
[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(shell 命令执行)、files(文件遍历、load_text_strict、二进制检测)、backup(用于 Apply 后验证/回滚的 restore_path_from_latest_backup),以及 write(采用策略转换的原子文件写入)。需要临时目录的库用户(例如 Agent)可使用 PathGuard::builder(cwd).allow_temp_directory()(可处理 macOS 上的 /tmp);请参阅 containment 和 api 模块的 rustdoc。多文档裸键和错误根节点合并会通过 edit_error_kind 转换为 EditErrorKind::TypeError。创建/重命名时目标已存在会转换为 EditErrorKind::AlreadyExists(或使用 api::is_already_exists / api::error_kind_str 获取 CLI 稳定的 "already_exists" 字符串)。细粒度类型也提供对应的布尔转换方法(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),与 edit_error_kind 一致。
替换操作的失败时关闭 / shell 令牌选项:CLI 的 replace --require-change 和 --command-position(也适用于 plan/MCP 字段和库中的 ReplaceOptions)。Agent 宿主:在主要和备用替换路径中使用 ReplaceOptions::for_agent()(自动拒绝可疑跨度);自定义选项在模糊 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(启用 ast + files 功能),以及 FunctionSigEdit::parse_rust。有序的宿主接入流程:嵌入式宿主检查清单(#2009)。完整接口:docs.rs/patchloom。
入门
| 资源 | 你将了解的内容 |
|---|---|
| 安装 | 安装选项和 Shell 补全 |
| 核心概念 | 写入模式、事务计划、退出代码 |
| MCP 设置 | 将 patchloom 配置为 Agent 的 MCP 服务 |
| 编辑器扩展 | VS Code、Cursor、Windsurf 和 VSCodium 集成 |
| 快速入门 | 5 分钟快速指南 |
| 参考 | 所有命令、操作和模式 |
| 示例 | 事务计划模板 |
命令
针对 Agent 优化(比原生工具更快或更安全)
| 命令 | 功能 | 适用场景 |
|---|---|---|
batch | 一次调用即可按行编辑多个文件 | 使用简单语法编辑 3 个或更多文件 |
tx | 通过格式化/验证生命周期处理 JSON 计划 | 需要回滚的复杂多文件编辑 |
doc | 由解析器支持的 JSON/YAML/TOML 编辑 | 更改配置值且不破坏语法 |
md | 基于标题的 Markdown 编辑 | 更新文档中的表格、章节和项目符号 |
ast | 感知 AST 的符号操作(20 种语言) | 重命名标识符、列出符号、分析影响 |
patch | 应用统一差异并检测过期内容 | 安全地重新应用补丁 |
tidy | 规范化文本文件的空白和换行符 | 在 CI 中检查文本整洁度 |
mcp-server | MCP 协议服务 | 支持 MCP 的 Agent(无需 Shell 语法) |
通用命令(也适用于脚本和 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 | 生成 Shell 补全(bash、zsh、fish、elvish) |
init | 在项目中设置 patchloom(Agent 规则、补全、MCP) |
schema | 按层级筛选并导出操作模式和系统提示词 |
agent-rules | 为项目生成 Agent 指令 |
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。它还支持批处理(一次调用执行 N 项编辑)、原子回滚,以及格式化/验证工作流。XML、HCL、CSV 和 KDL 仍交由 dasel 或 yq 处理 |
| sd | 正则查找/替换 | patchloom 增加了由解析器支持的结构化编辑和批处理;绝不会生成无效的 JSON/YAML |
| comby | 结构化代码模式 | patchloom 面向配置文件和 Agent 工作流,而非源代码模式匹配 |
主要区别在于:patchloom 专为 AI Agent 工作流设计。一次 batch 或 tx 调用即可取代 N 次顺序工具调用,减少往返次数并消除部分失败状态。
与 Agent 原生编辑工具的对比
上表将 patchloom 与供人使用的命令行工具进行比较。但 Agent 已经内置了编辑功能:Claude Code 的 edit_file、Cursor 的 apply、Grok Build 的 search_replace、Aider 的 /code 块。为什么还要在此基础上使用 patchloom?
**Agent 原生工具使用文本匹配。**它们查找一段文本并替换它。这适用于源代码,但处理结构化配置文件时就会出错:
|
Agent 在 YAML 上使用
Agent 将 |
Agent 使用
YAML 解析器会根据选择器路径更改值。注释、缩进、键的顺序以及所有其他格式均会保留。输出始终是有效的 YAML。 |
| Agent 原生工具的局限 | patchloom 的解决方式 |
|---|---|
| 注释丢失 | CST 级别的 YAML/TOML 编辑会保留所有注释 |
| 每次工具调用只能处理一个文件 | batch/tx 一次调用即可编辑 N 个文件(基准测试中快 6.7 倍) |
| 没有回滚 | 使用 strict: true 的 tx 会在验证失败时还原所有文件 |
| 依赖平台 | 在 Linux、macOS 和 Windows 上使用相同的二进制文件和语法 |
| 上下文过期风险 | patch apply 使用模糊匹配来处理上下文漂移 |
**适合继续使用原生工具的情况:**读取单个文件、简单文本搜索,以及不需要保留注释的单文件文本替换。patchloom 的 Agent 规则会明确告诉 Agent 在何时使用各类方法。
何时使用哪种工具
| 需求 | 首选 | 考虑其他方案 |
|---|---|---|
| 按路径处理 JSON、YAML、TOML、env、ini 或 properties | Patchloom doc | 通用文件系统 MCP / 盲目替换文本 |
| 多文档 YAML 流 | Patchloom 选择器(0.key) | 在流根节点使用裸键 |
| 结构化代码模式搜索 | ast-grep | 仅用文本 grep 搜索模式 |
| 重命名代码中的标识符 | Patchloom ast rename | 用模糊文本替换符号 |
| 原子应用多文件更改并撤销 | Patchloom batch / tx | 依次执行 N 次 shell 编辑 |
| 带有已知锚点(after/before/old)的自由格式代码片段 | Patchloom apply-fragment(会剥除 Morph 风格的 // ... existing code ... 标记) | 重写整个文件或猜测插入位置 |
| 没有锚点的自由格式代码片段(云端模型合并) | Morph Fast Apply 或类似工具 | Patchloom(无锚点 Morph 合并并非目标) |
| 完整的 Agent 产品 | Claude Code / Codex / Cursor | 单独使用 Patchloom |
库宿主:嵌入器宿主检查清单:双路径 ReplaceOptions::for_agent()(主要路径 + 回退路径,包含 refuse_suspicious_fuzzy),通过 edit_error_kind / is_* / is_fuzzy_span_suspicious 处理错误,并用 #[non_exhaustive] 的 _ 分支;缓冲区多操作后,使用多操作 ContentEditsResult.op_honesty + refuse_batch_if_suspicious_fuzzy(#2064);plan/tx 使用最宽的 matched_text;可选的 apply_content_edits_to_file_with_span_policy。自定义选项在模糊 Apply 后仍使用 api::fuzzy_span_suspicious / FuzzySpanPolicy。
**上下文预算:**按行范围 read、search --count / --files-with-matches、单次 batch/tx,对大型流使用 --jsonl。
如何与 AI Agent 配合使用
两种集成模式,功能相同:
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 许可证 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 前缀(feat、fix、docs、style、refactor、perf、test、build、ci、chore、revert;不能包含逗号或 +)。请参阅 CONTRIBUTING.md。
所有提交都必须使用 git commit -s 签署。
Agent 集成测试
make agent-test 会运行 19 个 pytest 场景,以验证 AI Agent 在收到指令后能否正确使用 patchloom。make bench-agent 会针对 11 项任务运行 3 路基准测试(CLI 与 MCP、原生方式对比)。使用 MODEL=X 切换模型,使用 RUNS=N 降低方差。需要 LLM API 密钥。不属于 make check 的一部分。详情请参阅 tests/agent/README.md。
安全
有关当前的安全问题报告指南,请参阅 SECURITY.md。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。