自托管 · GitHub Issue 到发版

自托管的编程 agent,从 Issue 一路做到发版

装在自己的机器上,用自己的模型,终点是发版。装好 runner,接上模型,给一张 Issue 打 ai-ready;Orbi 写代码、开 PR、过独立评审,milestone 结束时就是一个打了 tag 的 GitHub Release。

在自己机器上跑起来要什么

三样东西:Python runner、一个它能连上的模型、GitHub 访问。下面的命令照抄自入门指南。

curl -LsSf https://raw.githubusercontent.com/orbi-build/orbi/main/install.sh | bash

需要 Python 3.14、uv、git、gh 和 systemd 用户会话(macOS 是 launchd)。Node ≥ 22.19 是安装脚本唯一不替你装的依赖。

  1. 01 · 安装
    装上 runner

    脚本用 uv 装 Python 3.14 和 Pi CLI。orbi setup 只负责检查这些前置,不会替你装系统包或 gh。

  2. 02 · 模型
    接一个模型

    任何 OpenAI 兼容 API 都行:把模板复制成 .orbi/pi-providers.json,在 orbi.toml 里选 provider(DeepSeek 有现成模板)。ChatGPT/Codex 订阅也可以:在交互式 pi 会话里跑 /login codex。

  3. 03 · GitHub
    给它 GitHub 访问

    GitHub CLI 2.94 以上并已登录。Issue、标签、PR 和合并都走它;gh auth status 告诉你现在的状态。

  4. 04 · 首个发版
    跑一个 tick,看它发版

    给一张 Issue 打 ai-ready。一个 tick 只做一件事:恢复一个开着的 PR,或认领一张 Issue(先 p0,再 bug,再 feature)。timer 每五分钟做同样的事。

mkdir -p .orbi
printf '%s\n' 'DEEPSEEK_API_KEY=replace-me' > .orbi/env
chmod 600 .orbi/env

key 不写进 provider JSON。它放在 env 文件里,由 systemd unit 在服务启动时加载。

pi --print "reply with the single word: ok"
PYTHONPATH=src python3 -m orbi.runner --config orbi.toml
systemctl --user list-timers 'orbi@*.timer'

一次真实调用验证模型端点。一个 tick 最多认领一张 Issue。最后一条命令能看到 timer 的下一次触发时间。

自托管还是用 Cloud

同一条交付产线。区别在于机器归谁跑,模型费用归谁付。

自托管Orbi Cloud
跑在哪你自己的机器,systemd 用户 timer(macOS 是 launchd)。Orbi 的基础设施。用 GitHub 登录,接入仓库就能用。
你要配置什么安装脚本、orbi setup、一个模型 provider。什么都不用装。每个接入的仓库在独立的 Unix 用户下运行。
模型你自己的:任意 OpenAI 兼容 API,或 Codex 订阅登录。套餐内包含。
花多少钱Orbi 按 AGPL-3.0 免费使用,模型费用付给你的 provider:20 个已合并 PR 实测,非高峰中位 $0.125(按 DeepSeek 牌价)。前 3 次合并交付免费,不用绑卡。Solo:US$29/月,100M token。Pro:US$79/月,300M token。
额度用完时自托管没有 Orbi 侧额度,provider 按用量继续计费。只暂停新交付,不超额计费。

想对比托管型 agent?Orbi vs Devin 逐项实测。

装它之前问得最多的几句

数据放在哪里?
在你自己的机器上。配置在 orbi.toml,key 在 gitignore 掉的 .orbi/ 状态目录,任务 worktree 在 .worktrees/ 下,日志在你用户的 journal 里。GitHub 上只有 Issue、PR 和 Release。

能用本地模型吗?
可以。provider 文档自带 Local Qwen 模板(local-qwen.json,Qwen3.8-27B),任何 OpenAI 兼容端点都走同一个位置。

怎么停掉?
停 timer:systemctl --user disable --now orbi@1.timer,每个启用的 timer 各停一次。什么都不删,重新启用就能恢复。彻底卸载的步骤在运维文档里。

一张 Issue 换来什么?
一个带证据的 PR、一次能直接修复分支的独立评审、只合并审过的那个 head,然后打 tag、发布 GitHub Release。整条产线见Issue 到发版。

和 Devin 比怎么样?
配置、价格和交付产线,逐项对比见 Orbi vs Devin。

机器是你的,发版也是你的

给下一张 Issue 打上 ai-ready,看着它变成一个打了 tag 的发版。