自托管 · 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 是安装脚本唯一不替你装的依赖。
- 01 · 安装装上 runner
脚本用 uv 装 Python 3.14 和 Pi CLI。
orbi setup只负责检查这些前置,不会替你装系统包或gh。 - 02 · 模型接一个模型
任何 OpenAI 兼容 API 都行:把模板复制成
.orbi/pi-providers.json,在orbi.toml里选 provider(DeepSeek 有现成模板)。ChatGPT/Codex 订阅也可以:在交互式pi会话里跑/login codex。 - 03 · GitHub给它 GitHub 访问
GitHub CLI 2.94 以上并已登录。Issue、标签、PR 和合并都走它;
gh auth status告诉你现在的状态。 - 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/envkey 不写进 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 的发版。