Skip to content
This repository was archived by the owner on Aug 15, 2026. It is now read-only.

Repository files navigation

Patchouli Bot

自托管的 GitHub PR 自动审查 Bot。基于 OpenCode SDK + MCP + Bun + Hono

工作原理

GitHub Webhook (PR opened / synchronize)
  → git worktree 检出 PR 代码
  → 启动 OpenCode agent
  → agent 分析代码差异并通过 MCP 工具提交 review

Bot 为每个 PR 创建隔离的 git worktree,通过 MCP server 暴露 pr_create_reviewpr_add_comment 两个工具供 agent 调用。

前置条件

  • Bun >= 1.2
  • 一个已注册的 GitHub App,需要以下权限:
    • Pull requests: Read & write
    • Contents: Read-only
    • Webhooks: Pull request events
  • 可访问的 OpenCode 兼容 LLM 端点

快速开始

bun install
cp .env.example .env   # 编辑 .env,填入 GitHub App 凭据和 LLM 配置
bun run --hot src/index.ts # 启动服务器,开启热重载

GitHub App 的私钥文件(.pem)放到项目根目录,Webhook URL 指向 {your-host}/webhook

环境变量

变量 说明 默认值
GITHUB_APP_ID GitHub App ID
GITHUB_WEBHOOK_SECRET Webhook 签名密钥
OPENCODE_DEFAULT_MODEL LLM 模型 zhipuai-coding-plan/glm-5.1

其余变量(PORTHOSTDATA_DIRGITHUB_APP_PRIVATE_KEY_PATH)有合理默认值,一般无需修改。完整列表见 .env.example

开发

bun run fmt       # 格式化
bun run lint      # lint(含 type-aware 规则)

提交前执行 fmtlint。无构建步骤。

Contributors

Languages