用途:从声明式 JSON 描述符运行确定性编排图(DAG),适合有明确依赖关系的可重复多步骤流水线,以及必须能从中断中恢复、需要审计的工作。探索性一次性任务或需要运行中自适应重规划的场景不适用,因为图是确定性的。
主要能力:执行面为 CLI 子命令 omc graph run <descriptor.json> [--runs-root <dir>],通过独立 OS 进程运行,因此崩溃恢复真实可用:中途 kill 后重跑会从日志恢复并继续,已完成节点不会重新执行。进度以 [run]、[node]、[ok]、[fail]、[join]、[done] 流式输出。运行记录(OCC 日志与投影快照)保存在 .omc/graph-runs/<run_id>/ 下。
使用方式:可用 /oh-my-claudecode:graph <descriptor.json>,或先描述流水线再编写描述符。非交互图通过 Bash 工具运行。描述符含 human-approval 节点时不要用 Bash 工具(stdin 非交互,EOF 会失败关闭为拒绝),应让用户交互式运行:! omc graph run <file>。run_id 每个逻辑流水线必须唯一,相同 run_id 重跑是恢复而非重启。
描述符要点:包含 descriptor_version、run_id、revision_id、goal、nodes、edges、entry_node_ids、concurrency_limit、terminal_verification_node_id。节点类型有 command、agent、human-approval;边类型有 fixed、conditional、fan_out/join、back_edge。权威 schema 见 src/graph/schema.ts。
限制:内置 command/agent 执行器只覆盖 fixed 边和 fan_out/join 对;conditional 与 back_edge 需自定义 NodeExecutor 发出 route,否则以 route_required 快速失败。崩溃恢复对 command 节点是至少一次,外部副作用与日志追加之间崩溃会重跑该节点;幂等键以 GRAPH_IDEMPOTENCY_KEY 提供。内置执行器拒绝 reconcile,v1 不保证外部副作用恰好一次。command 节点是任意 shell 行,拥有当前工作目录的进程权限,仅运行自己编写或信任的描述符;子进程只获得白名单环境变量,但无文件系统/进程沙箱。内置 agent 节点为只读,仅 Read、Glob、Grep,permissionMode: dontAsk,禁用会话持久化。退出码:0 成功、1 终态失败、19 其他写入者占用、20 日志损坏、21 恢复时描述符漂移、70 运行时崩溃。