option-berth 指南
oberth 为每个 Git worktree 保留同一个答案:该跑什么、是不是真的在跑、没跑为什么。人读一张表,coding agent 读同一条命令的 --json。这本指南讲清两者背后那条链。
四个 checkout,四次猜测
Git worktree 解决的是并行代码,不是并行运行时。同一个仓库的四个 checkout 共享一段端口范围、一个数据库名和一份 shell 历史,于是每个会话都要重新推导同样三件事——而且每次推导得都略有不同。
oberth 把这些事实按同一个顺序只写一次,让每个读者读到同一份东西:worktree → 清单 → 服务 → 运行 → 运行事实。下游不会重新发明上游已经发布过的东西。
一条链,五个站点
| 站点 | 它解决的问题 | 它不许做的事 |
|---|---|---|
| worktree | 一次运行属于哪个 checkout? | 属于它不是在其中启动的那个 checkout。 |
| 清单 | 该跑什么、在哪个端口、依赖谁? | 从运行中的进程去猜,或被模型采纳。 |
| 服务 | 哪条声明先启动、在哪个地址上? | 在依赖就绪之前启动被依赖它的服务。 |
| 运行 | pid、开始、结束、退出码、日志路径。 | 因为进程存在就算作在监听。 |
| 运行事实 | 活着、在监听、健康,以及为什么结束。 | 把读不到的表写成“没在运行”。 |
事实链按顺序走完这五个站点,每站一节。
每天真正会跑的那个闭环
五条命令覆盖一个工作日。每一条都顶掉一段每个 checkout 都要重写一遍的 shell 单行。
| 你想 | oberth | 被替代的 shell 答案 |
|---|---|---|
| 声明这套服务 | oberth init | 一段没人维护的 README 说明加一个脚本 |
| 启动并等到真的就绪 | oberth up --wait | npm run dev &、sleep,再 curl 到它应答 |
| 知道该跑什么、正在跑什么 | oberth status | 读 oberth.yaml,再对着它 ps、lsof 和 tail |
| 读一次失败 | oberth logs api --once | tail 对的那个文件,再猜退出码 |
| 只停这个 checkout | oberth down | 从 ps 里拼出一个 pid 再 kill |
hello-worktree · main
api running :21730 health 200
worker running no port
2 services · manifest oberth.yaml
这本指南怎么读
- 第一次来。先安装 oberth,再跟第一个 worktree走一遍:一个示例项目、五条命令,从一个空 checkout 到一个干净的停止。
- 你已经在跑东西。读事实链和多个 worktree 与运行,命令章节按需查。
- 你在接入 agent。从JSON 里的运行事实开始,再看接入 agent的三个调用时机。
两个读者,一个接口
没有第二个接口,没有 MCP server,内核里也没有模型。CLI 就是契约,--json 是同一份契约的机器形状。
oberth status --json --brief
oberth up --wait --json
oberth logs api --once --json --run current --first-error
llms.txt 为机器列出这本指南,llms-full.txt 收录全部章节的纯文本。