开源框架用 AI 自动处理代码审查、文档更新等繁琐任务,可直接提升团队效率。
Patchwork 使用自托管的 CLI Agent 和你偏好的 LLM,自动处理 PR 审查、Bug 修复、安全补丁等繁琐的开发工作。你也可以试用它的托管版本。
Steps: 可复用的原子操作,例如创建 PR、提交变更或调用 LLM。
Prompt Templates: 可自定义的 LLM prompt,针对依赖库更新、代码生成、Issue 分析或漏洞修复等任务进行了优化。
Patchflows: 通过组合 Steps 和 prompts 构建的 LLM 辅助自动化流程,可用于 PR 审查、代码修复和文档编写等工作。
Patchflows 可以在本地 CLI 和 IDE 中运行,也可以作为 CI/CD 流水线的一部分运行。Patchwork 开箱即用地提供了多种 patchflow,你也可以随时创建自己的 patchflow。
Patchwork 已发布到 PyPI,可以使用 pip 安装:
pip install 'patchwork-cli[all]' --upgrade
以下是可选的依赖组。
pip install 'patchwork-cli[security]' 安装 semgrep 和 depscan。运行 AutoFix 和 DependencyUpgrade patchflows 时必须安装该依赖组。pip install 'patchwork-cli[rag]' 安装 chromadb。运行 ResolveIssue patchflow 时必须安装该依赖组。如果不指定任何依赖组(pip install patchwork-cli),则只会安装一组核心依赖,足以运行 GenerateDocstring、PRReview 和 GenerateREADME patchflows。
如果你希望使用 poetry 从源码构建,请参阅详细文档。
CLI 按照以下方式运行 Patchflows:
patchwork <PatchFlow> <?Arguments>
Arguments: 用于覆盖 Patchflow 的默认属性或可选属性,格式为 key=value。如果 key 没有对应的 value,则会被视为值为 True 的布尔标志。
以下命令运行 AutoFix patchflow:先使用 Semgrep 扫描漏洞,再为漏洞生成补丁:
patchwork AutoFix openai_api_key=<YOUR_OPENAI_API_KEY> github_api_key=<YOUR_GITHUB_TOKEN>
上述命令默认会在当前目录中运行 Semgrep 来识别漏洞,并修复其中的代码。你可以查看 default.yml 文件,了解可用于管理 AutoFix patchflow 的配置项列表。有关如何在 CLI 中使用 GitHub personal access token 的更多信息,请阅读相关文档。
你也可以登录 https://app.patched.codes/signin,在 integrations 标签页中生成 API key,使用 Patchwork 托管服务提供的 key 代替 OpenAI key。然后可以使用该 key 调用 patchflow:
patchwork AutoFix patched_api_key=<YOUR_PATCHED_API_KEY> github_api_key=<YOUR_GITHUB_TOKEN>
要使用 Google 的模型,可以设置 google_api_key 和 model。如果你需要处理较大的上下文,这会很有用,因为 gemini-pro-1.5 模型支持长度为 100 万 token 的输入上下文。
patchwork-template 仓库包含所有 patchflows 的默认配置和 prompts。你可以克隆该仓库,并通过参数将其路径传给 CLI:
patchwork AutoFix --config /path/to/patchwork-configs/patchflows
Patchwork 支持任何与 OpenAI 兼容的 endpoint,因此可以使用 Groq、Together AI 或 Hugging Face 等不同提供商提供的任意 LLM。
例如,要使用 Groq.com 提供的 Llama 3.1 405B,可以运行:
patchwork AutoFix client_base_url=https://api.groq.com/openai/v1 openai_api_key=your_groq_key model=llama-3.1-405b-reasoning
你也可以通过配置文件实现相同的效果。要使用 Hugging Face 提供的 Llama 3.1 405B,请创建一个 config.yml 文件:
openai_api_key: your_hf_token
client_base_url: https://api-inference.huggingface.co/models/meta-llama/Meta-Llama-3.1-405B-Instruct-FP8/v1
model: Meta-Llama-3.1-405B-Instruct-FP8
patchwork AutoFix --config=/path/to/config.yml
这样一来,你就可以通过 llama.cpp、ollama、vllm 或 tgi 运行本地模型。例如,可以使用 llama_cpp.server 在本地运行 Llama 3.1 8B:
python -m llama_cpp.server --hf_model_repo_id bullerwins/Meta-Llama-3.1-8B-Instruct-GGUF --model 'Meta-Llama-3.1-8B-Instruct-Q4_K_M.gguf' --chat_format chatml
然后运行你的 patchflow:
patchwork AutoFix client_base_url=http://localhost:8080/v1 openai_api_key=no_key_local_model
Patchwork 提供了一组预定义的 patchflows,并且会持续增加更多流程。示例 patchflows 包括:
Prompt templates 由 patchflows 使用,并作为查询传递给 LLM。模板中的 prompt 可以包含由 {{}} 包裹的占位变量。每次运行时,这些变量都会被 Steps 产生的数据或输入内容替换。
下面是一个 prompt template 示例:
{
"id": "diffreview_summary",
"prompts": [
{
"role": "user",
"content": "Summarize the following code change descriptions in 1 paragraph. {{diffreviews}}"
}
]
}
每个 patchflow 都附带一个经过优化的默认 prompt template。不过,你也可以通过 prompt_template_file=/path/to/prompt/template/file 选项指定自己的模板。
欢迎贡献新的 patchflows、Steps,或为核心框架作出贡献。详情请查看现有的 open issues。
要创建新的 patchflow,请按照相关说明操作。
要创建新的 Step,请按照相关说明操作。
我们还提供了一个聊天助手,帮助你轻松创建新的 Steps 和 patchflows。
Patchwork 采用 AGPL-3.0 许可条款。不过,你可以使用采用 Apache-2.0 许可条款的 patchwork-template 仓库,创建和共享自定义 patchflows 与 Steps。