mcpField
D
Diffinery

Diffinery

远程服务
diffinery.com版本控制622 天前更新

关于 Diffinery

Diffinery 是部署在 Cloudflare 上的开源 Git 托管与 CI 平台,面向需要 GitHub Actions 兼容工作流及 AI 编码 Agent 协作的团队。它内置 MCP 服务,并以受规则约束的 Agent 账户、沙箱任务和人工审核流程支持协作。

主要功能

  1. 01Git 仓库、拉取请求与议题管理
  2. 02运行兼容 GitHub Actions 的工作流
  3. 03Agent 任务与代码审查
  4. 04分支保护及人工审批规则
  5. 05合并队列与通过检查后自动合并

适用场景

  1. 01在 Cloudflare 上运行团队 Git 托管与 CI
  2. 02让 Claude Code 或 Codex 提交待审拉取请求
  3. 03自动检查拉取请求中的错误与安全问题
  4. 04按检查结果和审批规则合并代码

MCP 相关

内置 MCP 服务向 MCP 客户端提供仓库与 Agent 工作流能力,包括 Today 视图、文档搜索和读取,以及沙箱操作。服务器对经 MCP 执行的 Agent 操作也应用账户权限和保护规则。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://{diffinery_host}/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

Diffinery

完全运行在 Cloudflare 上的开源 GitHub 和 GitHub Actions 替代方案。 提供 Git 托管、拉取请求、代码审查和可直接替代 GitHub Actions 的 CI,还支持 Agent 任务、Agent 代码审查,以及 Claude Code 和 Codex 插件,专为由人和 AI Agent 组成的团队打造。将它部署到你自己的 Cloudflare 账户:无需服务器、Runner 机器,也无需打补丁。

GitHub 星标数 许可证:Apache-2.0 兼容 GitHub Actions 运行于 Cloudflare Workers 内置 MCP 服务,已收录于官方 MCP Registry Claude Code 和 Codex 插件 文档 欢迎提交拉取请求

网站 · 文档 · 面向 AI Agent · 插件 · 部署自己的实例 · 对比 · 性能 · 路线图 · llms.txt

由 AI Agent 在 Diffinery 上创建的拉取请求,包含其意图、人员批准,以及四项通过的 GitHub Actions 兼容检查

Diffinery 托管 Git 仓库、带审查和合并队列的拉取请求、问题、发行版和容器注册表,并按原样运行你现有的 .github/workflows/*.yml 文件,包括 Marketplace 工具。Claude Code、Codex 和 Cursor 等 AI 编码 Agent 可以拥有自己的账户,并受到服务器强制执行的防护措施约束;它们可通过内置 MCP 服务、兼容 GitHub 的 REST 和 GraphQL API、Git 或命令行开展工作。所有功能都运行在 Cloudflare 上:Workers、Durable Objects、D1、R2、Queues、Workflows 和 Containers。它是遵循 Apache License 2.0 的免费开源软件,你可以将自己的实例部署到自己的 Cloudflare 账户和域名上。

Diffinery 专为 Agent 参与软件开发的方式打造。向 Agent 指定目标,即可在沙箱中通过 Claude Code 或 Codex 获取拉取请求。让另一个 Agent 审查每个拉取请求,查找错误。每天早上打开 Today,查看需要你处理的事项,批准后让通过检查的拉取请求自动合并。Claude Code 和 Codex 插件、官方 MCP Registry 中的 MCP 服务、编辑器扩展和 gh 支持,让你能在已使用的工具中完成所有操作。Agent 在 Diffinery 上可以做什么 ↓

如果 Diffinery 对你有用,在 GitHub 上点个星,能帮助更多人发现它。

目录

Diffinery 适合哪些用户

  • 寻找 GitHub Actions 替代方案的团队,同时希望保留现有的工作流 YAML:Diffinery 会读取 .github/workflows/,使用相同的语法运行 marketplace 操作,并默认在配备 4 个 vCPU 和 12 GiB 内存的运行器上执行。
  • 希望使用自托管的 GitHub 替代方案,又不想运行服务器的团队。 和 Gitea、Forgejo 或 GitLab 一样,你可以运行自己的实例,但它会部署到 Cloudflare 的无服务器平台,而不是 VM 或 Kubernetes 集群。
  • 希望获得比 GitHub 私有仓库标准 2 vCPU 运行器更快的 CI 运行器,又不想额外付费使用 Blacksmith 或 Depot 等运行器服务的团队。
  • 使用 AI 编码 Agent 的团队(Claude Code、Codex、Cursor 等),希望 Agent 创建由他人审核的拉取请求,而不是直接推送到 main。
  • Cloudflare 开发者,希望参考一个基于 Durable Objects(含 SQLite)、Containers、Workflows、Queues 和 R2 构建的大型真实应用。

为什么选择 Diffinery

  • 在一个无服务器应用中提供 Git 托管、拉取请求和 CI。 一个 Cloudflare Worker 即可提供 Web UI、通过 HTTPS 访问 Git、兼容 GitHub 的 REST 和 GraphQL API,以及 MCP 服务。每个仓库都是独立的 Durable Object,拥有自己的 SQLite 数据库,因此仓库可以横向扩展,而不是共用一个数据库服务器。
  • GitHub Actions 工作流无需修改即可运行。 支持相同的触发器、表达式、矩阵、needs、输出、可复用工作流、环境、密钥、变量、OIDC、服务容器和 Docker。Marketplace actions(uses: owner/repo@ref)会被下载并运行。所有已知差异都列在与 GitHub Actions 的兼容性中。
  • 仅在作业运行期间存在的运行器。 每个作业都会在 Cloudflare Containers 上获得一个全新的 Ubuntu 24.04 容器,Cloudflare 仅在容器运行期间计费。默认规格为 4 个 vCPU 和 12 GiB 内存,使用量较少的作业会自动迁移到更小的规格。自托管运行器支持 macOS、Windows、Arm 和 GPU。
  • 专为 AI Agent 打造,并由人工参与把关。 Agent 是一等账户,由个人或组织拥有,并有自己的令牌和限制。除非规则允许,否则它们无法向受保护分支推送或合并;除非你另行设置,否则其拉取请求需要人工批准;它们创建的每次提交都会记录其代表谁执行操作。此外还提供 Agent 任务、Agent 代码审查、汇总待你处理事项的 Today 页面,以及 CI 通过后自动合并。请参阅专为 AI 编码 Agent 打造。
  • 为 Agent 已在使用的工具提供插件。 Claude Code 和 Codex 插件、Claude Code 实时 CI 状态栏、列入官方 MCP Registry 的 MCP 服务、diffinery CLI、适用于 VS Code、Cursor、Windsurf 和 JetBrains IDE 的扩展,以及可像搭配 GitHub Enterprise 一样使用的 gh。请参阅插件和集成。
  • 默认安全。 使用无密码的通行密钥登录、仅限受邀账户、分支保护、可阻止凭据泄露的推送保护、信封加密的密钥、紧急停用开关,以及仅追加的审计日志。
  • 从 GitHub 迁移只需一步。 服务端导入器可将单个仓库或整个组织连同其历史记录、议题、拉取请求、审查和发布一并迁移过来;gh、Octokit、VS Code 和 JetBrains IDE 也都能与 Diffinery 配合使用。

截图

Git 托管和 CI。Agent 功能的专属截图请见下文的专为 AI 编码 Agent 打造。

一个仓库页面,显示克隆 URL,并提供一键在 VS Code、Cursor、Windsurf 和 IntelliJ IDEA 中打开的功能来自 .github/workflows/ci.yml 的工作流运行,包含矩阵和 needs
Diffinery 上的仓库代码页面Diffinery 上兼容 GitHub Actions 的工作流运行

Diffinery 上作业的实时日志,深色模式

专为 AI 编码 Agent 打造

每项 Agent 功能都是可选的,并构建在 Git 和 CI 平台之上,因此团队如果完全不用这些功能,就只有一个代码托管平台。用户使用自己的模型密钥或订阅;Diffinery 不销售也不包含模型访问权限。下方截图展示的是真实页面,取自本地运行的 Diffinery,并由 scripts/agent-screenshots.mjs 使用示例数据生成;该脚本会运行真实的 Agent 任务、Agent 审查和 CI 运行。

设有防护措施的 Agent 账户

Agent 是独立账户,由个人或组织拥有,并有自己的令牌。它的权限不会高于所有者,无法登录 Web 界面,而且它所做的每次提交都会记录其代表谁行事。服务器会在 Git、REST API、MCP 和沙箱中执行相同的规则:

防护措施含义
禁止推送到受保护分支Agent 会改为创建拉取请求,除非分支保护规则允许推送。
Agent 的拉取请求须由个人批准即使分支没有规则,也至少需要一位个人批准。Agent 的批准永远不计入。
禁止合并受保护分支除非规则允许 Agent 在 CI 和个人都同意后通过自动合并完成合并。
Agent 不能让自己的 CI 变绿Agent 的检查结果永远无法满足必需检查。
Agent 编写的代码无法获取机密对于 Agent 推送的代码,工作流运行只能获得其作业令牌,因此 Agent 无法推送会将你的机密发送到其他地方的工作流。
禁止更改机密、环境或分支保护无论 Agent 拥有什么权限,都不能更改这些内容。也不能绕过推送保护。

请参阅 Agents 和 Guardrails。

Agent 任务:输入目标,输出拉取请求

为你的某个 Agent 设定目标。Diffinery 会以该 Agent 的身份启动沙箱,并在其中检出代码库,使用你自己的模型密钥运行 Claude Code、Codex 或你自己的命令,将完整记录实时传输到任务页面,然后推送分支并创建以该目标为意图的拉取请求。你的 API 密钥绝不会进入沙箱:每次运行都会获得一个只有 Diffinery 的模型代理才接受的令牌。任务可以先制定计划供你批准,可以并行运行 best of N 次尝试,也可以验证并合并:修复自身未通过的检查,并在个人批准后合并。

如需使用你的 Claude 或 ChatGPT 订阅,而不是 API 密钥,请打开终端:这是一个在浏览器中运行的 shell,其中已检出代码库。你可以使用自己的订阅登录 Claude Code 或 Codex,并交给它任务。

Diffinery 上的 Agent 任务:目标、以 acme-coder Agent 身份运行的 Claude Code、包含文件修改和测试运行的完整记录,以及它创建的拉取请求

请参阅 Agent tasks 和 Terminals。

审查每个拉取请求的 Agent

让你的某个 Agent 像 Cursor 的 Bugbot 一样,审查拉取请求中的 Bug、安全问题和逻辑错误。它会在只读沙箱中运行 Claude Code、Codex 或你自己的命令,并使用基础分支中的 REVIEW.md 规则;它会发布带有建议修复方案的行内问题,并报告 Agent review 检查;如果发现阻塞性问题,该检查就会失败。点击 Fix it 可将问题交给 Agent 任务处理,自动修复功能也可以将修复推送到拉取请求的分支。对于没有写入权限的作者所提交的拉取请求,系统绝不会自动审查;每个代码库的审查费用由一位个人的密钥支付。

由 Agent 在 Diffinery 上创建的拉取请求,显示其意图、创建该请求的任务链接,以及包含行内问题、建议修复方案和 Fix it 按钮的 Agent 审查

请参阅 Agent review。

今日和需要你处理的事项

今日是你登录后的第一个页面。它会显示需要你处理的事项(等待人员处理的 Agent 拉取请求、有人请你评审的内容、你自己被阻塞的拉取请求)、Agent 正在处理的工作、你的 Agent 任务,以及从昨天以来已合并、已交付或失败的内容,涵盖你能查看的所有仓库。Agent 也可以通过 today MCP 工具读取同一视图,你还可以通过晨间邮件收到这份内容。

Diffinery 的“今日”页面:显示需要你处理的事项、已开启的 Agent 拉取请求、从昨天以来已合并的内容和失败的运行次数,接着是“需要你处理的事项”“正在工作的 Agent”“你的 Agent 任务”和“从昨天以来”各个分区

请参阅今日。

通过检查后自动合并

在 Settings → Merge on green 中选择必须通过的检查,指定哪些 Agent 的拉取请求应自动合并,并选择是否需要等待人员批准。此后,拉取请求一旦通过检查并满足规则,就会立即合并,无需任何人点击 Merge。不会跳过任何内容:Agent 对工作流文件所做的更改仍需由人员合并。

Diffinery 上某个 Agent 拉取请求的合并框:必需检查已通过,自动合并已开启,正在等待人员批准

请参阅通过检查后自动合并。

Agent 项目、沙盒和文档
  • **项目:**每个仓库都有一个 Agent 任务看板、一个对话、项目说明,以及每项任务都会读取的记忆。协调器 Agent 可以将你发布的内容转换为任务,并遵守你设置的限制。
  • **沙盒:**一种短期 Linux 容器,其中已克隆仓库,可通过 MCP 或 REST API 驱动,让使用聊天应用的 Agent 能获得一台真正的机器来构建和测试。
  • **Agent 文档:**每个页面都提供 Markdown 格式,另有 llms.txt、llms-full.txt、REST API 的 OpenAPI 3.1 描述,以及通过 MCP 使用的 search_docs 和 read_docs。

插件和集成

在 GitHub 上训练的 Agent 已经知道如何使用 Diffinery,而这些集成让你可以在常用工具中使用其余功能。这里的所有功能都适用于 diffinery.com 和你部署的任何实例。

集成功能安装
Claude Code 插件(diffinery)带 OAuth 登录的 MCP 服务、用于讲解分支 → 拉取请求 → CI → 合并流程和 Diffinery Agent 规则的技能、显示失败任务日志尾部的 /diffinery:pr-status,以及一个会告知 Claude 当前位于 Diffinery 仓库中的会话钩子claude plugin marketplace add codician-team/diffinery
claude plugin install diffinery@diffinery
Claude Code 中的实时 CI(diffinery-ci)提示词上方的状态栏,显示分支的拉取请求及其检查结果(✗ 1 failed · ● 3 running · ✓ 6);带有 修复 CI 的 /diffinery-ci 面板、状态栏条目,以及 CI 状态稳定后向 Claude 发送的提示,云端会话也适用claude plugin install diffinery-ci@diffinery
Codex 插件(diffinery)为 OpenAI 的 Codex CLI 提供相同的 MCP 服务、技能和会话钩子codex plugin marketplace add https://diffinery.com/codician/diffinery.git
codex plugin add diffinery@diffinery
MCP 服务diffinery.com 上的 52 个工具:读取代码、提交、创建、审查和合并拉取请求、查看 CI 和任务日志、运行沙盒、跟踪 Agent 任务和项目、读取 Today、发布版本、从 GitHub 导入以及搜索文档;权限和防护规则与 Git 相同。已列入官方 MCP Registry,名称为 com.diffinery/diffineryhttps://<your host>/mcp,通过浏览器登录(OAuth 2.1)或使用 Agent 令牌
Claude(claude.ai、桌面版、移动版)将 Diffinery 作为自定义连接器使用,或将插件作为文件上传到云端会话和项目设置 → 连接器 → 添加自定义连接器,https://diffinery.com/mcp
diffinery CLI仓库、带 --intent 的拉取请求、自动合并、运行和日志、机密、运行器和迁移;diffinery setup 会为你登录,并一次性设置 git、gh 和两个 Claude Code 插件curl -fsSL https://diffinery.com/install | bash
GitHub CLI(gh)通过 Diffinery 兼容 GitHub 的 REST 和 GraphQL API 使用 gh pr create、gh pr checks、gh pr merge 等命令;Claude Code 会通过它显示分支的拉取请求和 CI 状态diffinery auth setup-gh
VS Code、Cursor、Windsurf使用通行密钥登录并从 Diffinery 克隆;编辑器中的 Git 会使用该登录凭据推送和拉取diffinery.com/install-editor
JetBrains IDE在 IntelliJ IDEA、PyCharm、WebStorm 等 IDE 中使用通行密钥登录,通过从版本控制获取进行操作(2024.3 或更高版本)插件仓库 https://diffinery.com/-/jetbrains/updatePlugins.xml

插件源码位于 plugins/,扩展源码位于 apps/vscode 和 apps/jetbrains,CLI 源码位于 apps/cli。Claude、Claude Code、Codex、Cursor、VS Code 和其他应用的分步指南见连接 AI 应用。

功能

领域功能文档
Git使用令牌通过 HTTPS 克隆、获取和推送;浅克隆、Git LFS、refs/pull/<n>/head 和 /merge;将大型推送从 R2 分块解包通过 HTTPS 使用 Git
拉取请求草稿 PR、带行内评论的评审、必需的批准和检查、合并、压缩合并和变基、自动合并、包含 merge_group 运行的合并队列,以及用于告诉评审者变更目的的 intent 字段拉取请求
问题和版本问题、标签、里程碑、表情回应、提及、附带资源和自动生成说明的版本协作
Actions(CI/CD)在 Cloudflare Containers 托管运行器或自托管运行器上运行兼容 GitHub Actions 的工作流;缓存、构件、密钥、环境、OIDC、Docker、服务容器、并发组、定时运行Actions 概览
容器注册表在 <your host>/<owner>/<name> 推送和拉取 OCI 镜像,以此替代 ghcr.io容器注册表
Agents具有服务端强制护栏的 Agent 账号;使用 Claude Code 或 Codex 执行 Agent 任务(先规划、择优选取、验证并落地);带行内发现项和 Agent 评审检查的 Agent 代码评审;使用你自己的 Claude 或 ChatGPT 方案的浏览器终端;配有协调者和共享记忆的项目;沙盒;以及展示需要你处理事项的 Today 页面Agents
检查通过后合并人员和 Agent 发起的拉取请求在所需检查通过且满足分支规则后会自动合并,只需几次点击即可完成设置检查通过后合并
插件和集成Claude Code 和 Codex 插件、Claude Code 实时 CI 状态栏、官方 MCP Registry 中的 MCP 服务、diffinery CLI、gh 支持,以及 VS Code、Cursor、Windsurf 和 JetBrains 扩展插件和集成
API兼容 GitHub 的 REST(/api/v3)和 GraphQL(/api/graphql)API,以 OpenAPI 3.1 描述,并提供兼容 GitHub 的 WebhookREST API
安全通行密钥(WebAuthn)、分支保护、推送保护、加密密钥、审计日志、内容审核、速率限制、配额和紧急停用开关安全概览
迁移从 GitHub 导入历史记录、问题、拉取请求、评审和版本;可通过 Web、CLI、API 或 MCP 进行从 GitHub 迁移

对比

Diffinery 是一个 Forge:它托管你的代码并运行 CI。以下是它与人们通常拿来比较的工具的对比。其他产品的相关信息来自其官方网站和文档,并于 2026 年 10 月核实;每篇对比文章都注明了来源。

DiffineryGitHub + GitHub ActionsGitLabGitea / ForgejoRunner 服务(Blacksmith、Depot)
产品类型内置 CI 的开源 Forge内置 CI 的托管 Forge内置 CI 的 Forge内置 CI 的开源可自托管 Forge为 GitHub Actions 提供更快的 Runner;你的代码仍保留在 GitHub 上
由谁运行你,在自己的 Cloudflare 账户中运行GitHub(Enterprise Server:你的服务器)GitLab,或由你运行(自行管理)你,在自己的服务器上运行(或使用 Gitea Cloud、Codeberg)服务提供商
需要运维的服务器无无(托管服务)无(托管服务)或使用你自己的服务器你的服务器和 Runner 机器无
CI 工作流格式.github/workflows/ 中的 GitHub Actions YAMLGitHub Actions YAML.gitlab-ci.yml类似 GitHub Actions 的 YAML,“大体兼容”(Gitea)或“不以兼容为设计目标”(Forgejo)GitHub Actions YAML,使用新的 runs-on 标签
默认的托管 Linux Runner4 vCPU、12 GiB;在 Cloudflare Containers 中按作业启动私有仓库使用 2 vCPU、8 GB2 vCPU、8 GB由你安装的 Runner多种规格,按分钟计费
托管 macOS 和 Windows否(自托管 Runner)是Beta 版由你安装的 Runner是
为 AI Agent 内置的防护措施为每个 Agent 账户内置需自行配置规则集和令牌权限需自行配置审批规则和服务账户未涵盖不适用
内置 MCP 服务是,位于 /mcp是是Gitea:需单独安装 MCP 服务不适用
许可证Apache-2.0专有开放核心MIT(Gitea)、GPL v3+(Forgejo)专有

查看详情:Diffinery 与 GitHub 的对比 · 与 GitLab 的对比 · 与 Gitea 和 Forgejo 的对比 · 与 Blacksmith 的对比 · 与 Depot 的对比 · 与 CircleCI 的对比 · 与 Buildkite 的对比 · 与 Bitbucket 的对比 · 所有 GitHub Actions 替代方案 · Cloudflare 上的其他 Git 和 CI 项目

在你自己的 Cloudflare 账户上自托管

Diffinery 专为任何人部署到自己的 Cloudflare 账户和域名而设计。使用你部署的实例的人都不需要 Cloudflare 账户;只有部署时才需要。

你需要:

  • 一个启用了 R2 的 Cloudflare 账户,并订阅 Workers Paid 计划。Containers、带 SQLite 的 Durable Objects、Workflows 和 Queues 都需要付费计划。
  • 该账户下的一个域名(Diffinery 会部署在某个主机名的根路径上,例如 git.example.com)。
  • 一个具有部署你自己的 Diffinery中所列权限的 Cloudflare API 令牌。
  • 用于执行部署的机器上安装 Node.js 22、pnpm 10、Docker、jq、curl 和 openssl。

部署:

git clone https://diffinery.com/codician/diffinery.git   # or the GitHub mirror
cd diffinery

export CLOUDFLARE_API_TOKEN=...            # never commit it
export CLOUDFLARE_ACCOUNT_ID=...
export DIFFINERY_DOMAIN=git.example.com    # your hostname
export [email protected]    # who becomes site administrator on first sign-in

scripts/setup.sh --dry-run                 # checks tools, token and config without changing anything
scripts/setup.sh                           # creates the Cloudflare resources and deploys

设置脚本会在你的账户中创建缺少的资源(D1 数据库、R2 存储桶及生命周期规则、队列、Turnstile 小组件和用于邮件恢复的 Cloudflare Access 应用),应用数据库迁移,部署 Worker 和运行器镜像,生成 Worker 自身的密钥(仅生成一次),并检查网站是否正常响应。每个步骤都可以安全地重复执行,因此同一条命令也能更新现有实例。然后打开 https://<your host>/auth/access,使用一次性验证码确认你的邮箱,并添加一个通行密钥:你就是第一位管理员。

你也可以通过 Diffinery 或 GitHub Actions 中提供的 Deploy 工作流从 CI 部署。包含邮件发送、DNS、Access 和故障排除内容的完整指南见部署你自己的 Diffinery,所有设置的说明见配置。

它在 Cloudflare 上的运行方式

组件Cloudflare 产品
Web UI、git smart HTTP、REST 和 GraphQL API、MCPWorkers(Hono)
一个代码仓库:引用、对象、拉取请求、问题、评审、检查、运行一个带 SQLite 的 Durable Object(RepoDO),每个代码仓库对应一个
大型对象、Git LFS、容器镜像、日志、缓存、制品R2
账户、组织、令牌、邀请、通知、审计日志D1;读取副本通过 Sessions API 读取
Webhook、通知、邮件队列(带死信队列)和 Email Sending
工作流运行(持久化、可在重启后继续、作业超时为 6 小时)Workflows
作业运行器、Agent 沙箱和导入传输Containers(位于 containers/runner 的 Ubuntu 24.04 镜像)
定时工作流(on: schedule)Cron Triggers
实时日志和拉取请求更新带休眠功能的 Durable Object WebSocket
登录通行密钥(WebAuthn);Cloudflare Access 仅保护 /auth/access(邮件恢复路径)

更多内容请参阅架构。

本地开发

pnpm install
pnpm -r build && pnpm -r typecheck && pnpm -r test
pnpm --filter @diffinery/app db:migrate:local
pnpm dev                                    # http://localhost:8787, signed in as [email protected]
pnpm --filter @diffinery/app e2e            # wrangler dev, real git, the runner agent and Chromium

pnpm dev 会在 wrangler dev 下运行 Worker,并使用本地 D1、R2 和队列,因此开发 Diffinery 无需 Cloudflare 账户。端到端测试套件会使用 git 推送真实代码仓库,通过真实的运行器 Agent 运行其工作流,调用 MCP 服务和 REST API(使用 @octokit/rest),并在 Chromium 中使用通行密钥登录。请参阅 CONTRIBUTING.md。

代码仓库结构

apps/diffinery          the Worker: web UI, git, REST/GraphQL, MCP, Actions, D1 migrations, docs, e2e tests
apps/cli                the `diffinery` command-line client
apps/vscode             the VS Code, Cursor and Windsurf extension
apps/jetbrains          the JetBrains IDE plugin
plugins                 the Claude Code and Codex plugins (marketplaces in .claude-plugin/ and .agents/plugins/)
containers/runner       the runner agent, sandbox server and the container image
packages/git-core       git objects, packfiles, deltas, diff and merge, in pure TypeScript
packages/workflow-yaml  the GitHub Actions workflow parser, expressions, matrices and cron
packages/shared         types shared by the Worker and the runner
scripts                 setup, bootstrap and deploy scripts for Cloudflare

Diffinery 目前尚不支持的功能

Diffinery 还很年轻,我们希望你在迁移前了解它的限制:

  • 托管运行器仅支持 Linux x64。 macOS、Windows 和 Arm 作业需要使用自托管运行器。
  • Git 仅支持 HTTPS。 不提供 SSH 访问。
  • 不支持 Fork。 拉取请求只能在同一仓库的分支之间创建。
  • 不提供 Wiki、讨论区、Pages 风格的网站、Codespaces 风格的云端编辑器或应用市场。
  • 评审功能比 GitHub 简单。 目前不支持待处理评审、建议更改或解决讨论串;分支保护也不支持代码所有者评审或签名提交要求。
  • 某些 GitHub 事件(例如 issues 和 issue_comment)虽可在工作流中使用,但不会触发运行。
  • 不提供托管服务。 没有人替你运行 Diffinery:你需要部署自己的实例。

完整列表请见与 GitHub Actions 的兼容性和Diffinery 与 GitHub 的对比;我们接下来的计划则列于路线图。

常见问题

Diffinery 是什么? 一个完全运行在 Cloudflare 上的开源 Git 锻造平台和 CI 平台。它将 GitHub 的代码托管、拉取请求和 GitHub Actions 整合到一个应用中,你可以将其部署到自己的 Cloudflare 账户。

Diffinery 是开源的 GitHub Actions 替代方案吗? 是。Diffinery 可运行 .github/workflows/ 中的 GitHub Actions 工作流文件,支持相同的触发器、表达式、矩阵、needs、可复用工作流、环境、密钥、OIDC、服务容器和 Docker,并可下载和运行市场中的 Actions(uses: owner/repo@ref)。所有已知差异都列在与 GitHub Actions 的兼容性中。

Diffinery 是可自托管的 GitHub 替代方案吗? 是。与 Gitea、Forgejo 或 GitLab 一样,你需要自行运行它;但它不是部署到服务器或 Kubernetes 集群,而是部署到 Cloudflare 的无服务器平台,并且其 CI 运行 GitHub Actions 工作流文件,而非自有格式的文件。

Diffinery 与 Gitea 和 Forgejo 有何不同? 三者都是需要自行运行的开源 Git 锻造平台。Gitea 和 Forgejo 运行在你自己的服务器上,CI 则使用你安装的运行器机器。Diffinery 只运行在 Cloudflare 上:无需维护服务器或运行器机器,每个 CI 作业都会获得一个全新的容器,但你的代码会存储在 Cloudflare 的基础设施上。Gitea 和 Forgejo 提供 Wiki 和软件包注册表,而 Diffinery 不提供。请见Diffinery 与 Gitea 和 Forgejo 的对比。

Diffinery 是 Blacksmith 或 Depot 的替代方案吗? 适合不同类型的团队。Blacksmith 和 Depot 将你的代码和拉取请求保留在 GitHub 上,并按分钟计费,让你的作业在更快的机器上运行。Diffinery 也会替代 GitHub:你的仓库会迁移到自己的实例,作业则在 4-vCPU 运行器上运行,费用由你的 Cloudflare 账户按 10 ms 计费。如果你想继续使用 GitHub,且不想自行运行任何服务,那么运行器服务是更简单的选择。请见Diffinery 与 Blacksmith 的对比和与 Depot 的对比。

我的 GitHub Actions 工作流无需更改就能运行吗? 大多数可以。Diffinery 会按相同语法读取 .github/workflows/*.yml 并运行市场中的 Actions。需要托管 macOS、Windows 或 Arm 运行器的作业则需要自托管运行器。请见与 GitHub Actions 的兼容性。 Diffinery 比 GitHub Actions 更快吗? 我们不会在 GitHub 上运行作业来进行基准测试,因此不会声称有具体的提速幅度。Diffinery 的默认运行器配备 4 个 vCPU 和 12 GiB 内存,而 GitHub 面向私有仓库的标准 Linux 运行器配备 2 个 vCPU 和 8 GB 内存,因此使用多个核心的作业可获得两倍的资源。在 Diffinery 上,作业排队后大约 3 到 5 秒就会启动。请参阅实测性能。

代码留在 GitHub 上时,我可以运行 Diffinery CI 吗? 可以。一个小型 GitHub 工作流会将每次推送镜像到你的 Diffinery 实例,随后实例会运行相同的 .github/workflows/ 文件,并可在 Diffinery 上的运行失败时让 GitHub 作业失败。请参阅代码留在 GitHub 上时运行 Diffinery CI。

运行需要多少费用? Diffinery 在 Apache License 2.0 下免费开源,没有付费版本。运行费用取决于你的 Cloudflare 账户账单:Workers 付费计划费用加上使用费用。托管运行器使用 Cloudflare Containers,仅在作业运行期间计费。

它能在 Cloudflare 免费计划上运行吗? 不能。Containers、带 SQLite 的 Durable Objects、Workflows 和 Queues 都需要 Workers 付费计划。请参阅部署你自己的 Diffinery。

它支持 AI 编码 Agent 吗? 支持。Agent 可通过 MCP(https://<your host>/mcp,在官方 MCP Registry 中列为 com.diffinery/diffinery)、REST API、git 或 GitHub CLI 连接。我们提供适用于 Claude、Claude Code、Codex、Cursor 和 VS Code 的指南,以及 Claude Code 和 Codex 插件,可通过 claude plugin marketplace add codician-team/diffinery(或 https://diffinery.com/codician/diffinery.git)安装;插件源码位于 plugins/。Diffinery 也可以代你运行这些 Agent:Agent 任务会在沙箱中运行 Claude Code 或 Codex 并创建拉取请求,Agent 审查则会检查每个拉取请求。请参阅专为 AI 编码 Agent 打造和连接 AI 应用。

我可以使用 Claude 或 ChatGPT 订阅,而不是 API 密钥吗? 在终端中可以:终端是在浏览器中使用的 Shell,其中已检出仓库;你可以使用自己的套餐登录 Claude Code 或 Codex,并交给它一些可创建拉取请求的任务。无头 Agent 任务和 Agent 审查需要使用你添加的 API 密钥(Anthropic、OpenAI 或 OpenRouter),因为服务提供商允许通过 API 密钥进行自动化使用。只有私有仓库支持 ChatGPT 套餐中的 Codex,这是 OpenAI 允许的范围。请参阅终端。

AI Agent 可以合并自己创建的拉取请求吗? 默认情况下不可以。除非分支保护规则允许,否则 Agent 不能推送到受保护分支或合并到其中;其拉取请求需要经过人工批准;其检查结果永远不会满足必需检查的要求;它们推送的代码所触发的运行也不会获得密钥。请参阅防护措施。

我可以将仓库从 GitHub 迁移过来吗? 可以。导入器可以迁移单个仓库或整个组织,并保留历史记录、问题、拉取请求、审查和发布记录。密钥名称会一并迁移,并提供字段供你输入每个密钥的值。gh、Octokit、VS Code 和 JetBrains IDE 都可以与 Diffinery 配合使用。请参阅从 GitHub 迁移。

我可以在 diffinery.com 上注册吗? 不能直接注册。diffinery.com 是项目主页,也是开发 Diffinery 的实例,该站点的账户需要邀请才能获得。要先在该站点试用 Diffinery,再部署自己的实例,请申请提前体验。它并非面向团队的托管服务:要在工作中使用 Diffinery,请部署自己的实例。 Diffinery 是 Cloudflare 上唯一的 Git 平台吗? 不是。其他开源项目也在 Cloudflare 上运行 Git 或 CI,Built on Cloudflare 列出了它们的差异。据我们所知,Diffinery 是唯一一个将 Git 托管、带有 Web 界面评审的拉取请求,以及兼容 GitHub Actions 且支持市场操作的 CI 全部运行在 Cloudflare 上的平台(核查于 2026 年 10 月 25 日)。

开发工作在哪里进行? 在 Diffinery 自身上,地址为 diffinery.com/codician/diffinery。Diffinery 自己的 CI、部署和拉取请求都在那里运行。GitHub 仓库是一个镜像,欢迎在任一平台提交问题和拉取请求;请参阅 CONTRIBUTING.md。

贡献、安全和许可证

Diffinery 由 Codician 团队打造。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。