把工作留在下一个会话找得到的地方
worktree 上保存着工作记录:引擎跑过的命令、交给 agent 的每一轮工作,以及它们各自怎么结束。下一个会话读它来接手。
记录本身
一个 worktree 可以有几个 workplace,每个按顺序保存自己的条目。workplace 是一条命名的工作流;当前 workplace 接收新条目,list 用 ● 标出它。
oberth workplace list
oberth workplace new api-refactor
oberth workplace show --limit 20
选择器按顺序匹配:精确名字、完整 id、id 前缀、名字前缀;多个命中返回 ambiguous,不替调用方挑一个。--worktree 默认当前目录,并解析到 checkout 根,所以同一个 checkout 的不同写法是同一条记录。
什么会被自动记录
oberth start把这次运行写进当前 workplace。分离模式(-d)的运行由 daemon 在记录退出时关闭。oberth agent stream每轮写一个条目:turn.started打开它,turn.completed用提供方报告的结果关闭它。oberth workplace record写引擎看不见的工作:agent 自己的尝试、客户端里的交互 shell、原生 agent。重复报告同一个--id会更新条目,所以同一件事的开始和结束可以按任意顺序到达。
条目怎么结束
条目的状态是 running、completed、failed 或 interrupted。没有观察到结束的条目保持 running,永远不会被当成成功。被 oberth 或用户停掉的运行是 interrupted,不管它留下了什么信号退出码。每个 workplace 最多保留 500 条,超出后丢弃最旧的。
{"id":"…","workplace":"…","seq":1,"kind":"shell","source":"engine",
"input":"npm test","status":"completed","run_id":"…","pid":1234,
"log_path":"…","exit_code":0,"started_at":"…","ended_at":"…"}