Claude代码GitHub代理
自托管GitHub代理,在40多个webhook事件中的任何一个上运行Claude SDK——可通过YAML工作流和插件完全配置
______________________________________________________________________
它的作用
一个连接到的自托管GitHub代理 40+个webhook事件 并以完全存储库访问权限运行Claude SDK——读取文件、进行更改以及通过MCP与GitHub交互。一切都是通过配置的 YAML工作流 和 插件:
# workflows.yaml — add new behaviors without touching code
my-workflow:
triggers:
events:
- event: pull_request.opened
- event: issues.labeled
filters:
label.name: "bug"
commands: [/my-command]
prompt:
template: "Analyze {repo} #{issue_number}"内置工作流 包括PR审查、CI故障自动修复、问题分类和通用 /agent 命令。 插件 添加专门的代理(代码审阅者、CI故障分析器、回顾者)。还有代理人 记得 通过持久内存和语义搜索跨会话的代码库。
在您的基础设施上运行。水平缩放。通过Langfuse实现完全可观察性。
主要特点
事件驱动引擎
- 40+GitHub活动 --PR、问题、评论、推送、CI/CD、讨论、标签、发布等
- YAML驱动的工作流 --在中定义触发器、命令、过滤器和提示
workflows.yaml,无需更改代码 - 斜杠命令 —
/review,/fix-ci,/triage,/agent在任何问题或公关评论中 - 水平缩放 --独立扩展沙盒工作人员:
make up SANDBOX=10
Claude代码集成
代理使用完整的Claude Code功能集运行Claude SDK。因为 ~/.claude/ 从您的主机绑定挂载到容器中,您安装的任何东西 --scope user 在Claude Code中,CLI自动可供机器人使用,无需额外配置。
- 插件 --安装时使用
/plugin在Claude Code CLI中(选择用户范围)。内置插件包括PR审查、CI故障分析和回顾。用户安装的插件~/.claude/plugins/自动拾取。 - 技能 --任何
~/.claude/skills//SKILL.md由SDK发现,并可通过调用Skill工具。创建自己的或从社区安装。 - MCP服务器 --何时
ALLOW_HOST_MCP=true(默认),主机MCP服务器的工具权限是从以下位置自动发现的~/.claude.json.只有基于HTTP的服务器可以从Docker内部访问(例如,通过host.docker.internal)将工作-基于stdio的主机服务器没有代理。 - 记忆 --跨会话持久的每个仓库知识。这
@memory-extractor子代理在每次运行后读取会话记录并更新内存文件。 - 钩子 --上的事件驱动脚本
Stop,SubagentStop,以及其他生命周期事件。用于Langfuse追踪和转录持久化。 - 次级代理商 --通过以下方式委派给专业代理
Task工具。每个插件都贡献了自己的代理(4个插件内置了12个代理)。 - CLAUDE.md --会话开始时读取的每个仓库自定义文件。定义项目约定、约束和首选项。
代码智能
- 三层上下文 --文件树→ AST代码工具→ 语义向量搜索
- 结构意识 --助手风格的复测图(10种语言),根据PR个性化
- 4台MCP服务器 --GitHub(HTTP)、GitHub操作、内存、代码库工具(通过SSE代理)
- 自我完善 --Retrospect分析过去的会话,并通过PR提出指令改进建议
快速开始
先决条件
- 码头工人 Docker Compose
- 制造 (或使用
docker compose命令直接在下面) - (见下面的设置)
- 符合人体工程学的API键(人体、Z.AI、Vertex AI等)
- ngrok或类似隧道(用于本地webhook测试)
1.创建GitHub应用程序
首选 GitHub设置→ 开发人员设置→ GitHub应用程序→ 新GitHub应用程序:
| 字段 | 值 |
|---|---|
| Webhook URL | https://your-ngrok-url.ngrok.io/webhook |
| Webhook秘密 | 随机字符串(保存为 .env) |
存储库权限:
| 权限 | 访问 |
|---|---|
| 操作 | 只读 |
| 内容 | 读写 |
| 问题 | 读写 |
| 拉取请求 | 读写 |
创建后:注意 应用程序ID,生成a 私钥 (.pem),在您的repos上安装应用程序,并注意 安装ID 从URL。
2.配置和运行
git clone https://github.com/GabsFranke/claude-code-github-agent.git
cd claude-code-github-agent
cp .env.example .env # Edit .env with your credentials
cp repo-setup.example.yaml repo-setup.yaml # Edit Per-repo dependency setup (optional)# Build, start services, and open ngrok tunnel
make start
# Or step by step:
make build # Build all Docker images
make up # Start all services (detached)
make ngrok # Open ngrok tunnel to webhook on port 10000
# Minimal setup (no Langfuse)
make up-minimal跑 make help 查看所有可用目标。服务日志将写入 ./logs/ 按服务使用 tail -f logs/webhook.log 或 make logs 跟随。
Using docker compose directly
# Minimal setup
docker-compose -f docker-compose.minimal.yml up --build -d
# Full setup with Langfuse observability
docker-compose up --build -d替代人工智能提供商
该制剂适用于任何与人类相容的API。配置提供程序的最简单方法是通过 ~/.claude/settings.json --因为 ~/.claude/ 如果绑定挂载,SDK会自动拾取它,并且它优先于env变量:
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.z.ai/api/anthropic",
"ANTHROPIC_AUTH_TOKEN": "your-token",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "GLM-4.7-Flash",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "GLM-5.1",
"ANTHROPIC_DEFAULT_OPUS_MODEL": "GLM-5.1"
}
}这适用于Ollama、Vertex AI、Z.AI或任何与Anthropic兼容的端点。环境变化 .env 仍支持作为回退,但不会覆盖 settings.json.
Using .env instead (fallback)
# Z.AI (GLM models)
ANTHROPIC_BASE_URL=https://api.z.ai/api/anthropic
ANTHROPIC_DEFAULT_SONNET_MODEL=GLM-5.1
# Google Vertex AI
ANTHROPIC_VERTEX_PROJECT_ID=your-project
ANTHROPIC_VERTEX_REGION=global用法
内置工作流
| 触发器 | 发生了什么 |
|---|---|
| PR已打开 | 与专业代理进行全面代码审查 |
| CI作业失败 | 分析日志,确定根本原因,推送修复程序 |
| 问题已打开 | 具有优先级、复杂性和类型评估的分类 |
问题已标记 triage | 由标签触发的相同分诊 |
斜杠命令
对任何问题或公关发表评论:
/review # Full PR review
/fix-ci # Analyze and fix CI failures
/triage # Triage an issue
/agent review the auth logic # Generic request with natural language
/agent find all uses of deprecated API定制
添加工作流
编辑 workflows.yaml 定义新的触发器和行为——无需更改代码:
workflows:
my-workflow:
triggers:
events:
- event: issues.opened
commands: [/my-command]
prompt:
template: "Analyze {repo} #{issue_number}"
context:
repomap_budget: 2048看 工作流.md 供完整参考,以及 配置.md 对于环境变量。
添加插件
您可以通过两种方式使用插件扩展代理:
应用程序特定插件 --在仓库下创建一个插件目录 plugins/ 带有a的文件夹 .claude-plugin/plugin.json 显示。代理、命令和MCP服务器在运行时自动发现。看 塞子.md 了解详情。
用户安装的插件 --安装时使用 /plugin 在Claude Code CLI中(选择 user 范围)。插件保存到 ~/.claude/plugins/ 并由沙箱内的SDK自动拾取。看 Anthropic插件文档 更多。
根据存储库说明
添加一个 CLAUDE.md 到任何repo根。代理在每次会话之前读取它,并在会话之间持久保存所学的知识。
每个存储库设置
在中为每个仓库配置依赖项安装和构建命令 repo-setup.yaml --让代理运行测试、使用语言工具并构建项目。看 REPO_SETUP.md.
文档
贡献
- 分叉存储库
- 创建要素分支:
git checkout -b feature/my-feature - 进行更改并添加测试
- 运行质量检查:
bash ./check-code.sh - 打开PR
develop
看 Developpent.md 完整的指南。
