option-berth指南

status:现在到底跑着什么

status 读 worktree、清单和它的运行记录,然后把运行事实原样返回。它是每个会话开局的命令,也被允许说“我看不见”。

四种事实,不是一种

产品把 shell 一行命令会揉在一起的东西拆开。活着的进程、绑定的端口、通过的健康检查、退出原因,是四种不同的事实,一种不能推出下一种。

四种运行事实
事实它回答的问题它从哪里来
进程进程还活着吗?运行记录:pid、开始、结束、退出码。
监听实际绑定了哪个地址?监听观察,连同它自己的可信状态。
健康服务通过它的健康检查吗?声明的 HTTP、TCP 或命令检查。
退出如果结束了,为什么?最近一次退出原因,以及它指向的日志。
oberth status · hello-worktree
hello-worktree · main

api      running   :21730   health 200
worker   running   no port

2 services · manifest oberth.yaml

怎么读这张表

人读的表格按项目、服务、依赖、代码和失败原因排序。每个服务行同时带上声明的端口和当前的运行事实;失败区只显示最近一次退出,而且只有它仍是该服务当前的 last_exit 时才显示。

  • 无端口 worker 显示为 no port。它通过运行记录观察,不靠监听。
  • port: auto 在分配前显示 auto port unassigned;这不是失败。
  • 只有清单没有声明的监听才会单独列出。属于某个服务的端口跟服务显示在一起。
  • code_changed_since_start 说明进程跑的是比 checkout 旧的代码,并给出重启提示。这是代码事实,不是运行失败。

给 agent:--brief 与 --json

开局读取
oberth status --json --brief

--json 的顶层对象是 worktree。--brief 只保留运行事实,所以是最便宜的起点;完整读取才会加上 git 摘要、草稿、变化列表和每个服务的清单字段。

  • worktree.identity 是 wt_… 值,down --identity 和数据路径都用它。
  • worktree.services[] 带 running、port_actual、health_status、pid 和 run_id。
  • exits[] 带原因、退出码,以及一个只指向真实存在证据的 hint。
  • observation 只在监听表不可信时出现;它缺席,说明这张表可用。

观察失败的时候

沙箱、权限墙或平台变化都可能打断监听扫描。引擎会报告 observation_empty、observation_unrecognized、observation_incomplete、observation_blind 或 observation_bind_denied。这些码没有一个是“没有东西在监听”,更不是“没在运行”。人读的表会写 listening unknown;port: auto 的候选端口靠实际绑定确认,而不是相信空表。

检查观察者本身
oberth doctor --only listener_observation

在失败的同一种进程里运行它。如果结果是 blind,换到普通终端重试,或在那里运行 oberth serve --detach;不要在沙箱里反复重开,再把超时读成失败。

status 永远不说什么

编辑本页

输入关键词,搜索全部章节与小节。