双车道架构
本节是 BioLine OpenClaw 的迁移基线。执行车道负责使用已经存在的 BioLine Flow 完成一次 Job;创作车道负责创建或更新 Tool、Tool Version 与 Flow。两条车道各自 拥有 registry、状态机、目录根和容器标签,不共享运行状态。
文档来源
机器文档索引固定为 https://www.bioline.cloud/ai/commandLineAndFkit/,Markdown 内容位于同源的 /ai/ 目录树(目录地址直接返回该目录的 index.md,叶子页地址直接返回对应 Markdown)。 OpenClaw 通过 fkit <command path> --docs --docs-json --docs-lang <zh|en> 读取精确命令页;公开文档选项共五个:--docs、--docs-index、--docs-link <path>、 --docs-lang 和 --docs-json。 fkit 不解析 https://doc.bioline.cloud/ 的用户网页,也不读取本地文档包。远程索引或命令页面不可用时必须写入 document_gap 并停止; skill_fallback_allowed 永远是 false。
两条车道
| 车道 | 目录根 | 允许的外部对象 | 结果 |
|---|---|---|---|
| execution | /data/output/<job-id>/,可由 OPENCLAW_JOBS_ROOT 覆盖 | 动态发现的 Flow、Job | stage、分析、脚本、日志和结果 |
| authoring | /data/authoring/<slug>/,可由 OPENCLAW_AUTHORING_ROOT 覆盖 | Tool、Tool Version、Flow | draft、验证记录、发布结果和 handoff |
执行路径不能落在 authoring 根下;创作路径不能落在 execution 根下。执行容器使用 --network none、删除全部额外 capability,且以只读方式挂载 stage/。创作构建 使用独立的 openclaw.role=authoring 标签和默认构建网络,绝不复用下游容器。
精确状态序列
执行车道:
initialize → docs_loaded → planned → awaiting_plan_confirmation → submitted → running → succeeded → finalized → downstream_prepared → downstream_running → completed
创作车道:
bootstrap → docs_loaded → drafted → awaiting_build_confirmation → built → tested → awaiting_publish_confirmation → published → awaiting_register_confirmation → registered → verified → handed_off → completed
失败阶段是显式值,不把失败伪装成成功:执行使用 plan_failed、submit_failed、upstream_failed、finalize_failed、 downstream_failed、document_gap;创作使用 draft_failed、build_failed、 test_failed、publish_failed、register_failed、verification_failed、 document_gap。
不变量
- 执行 planning 只读:用 fkit 动态发现并检查 Flow、列出输入文件,然后展示 binding 表和默认值。
- 用户确认 planning 结果后才允许提交 Job;build、publish、register 都必须单独确认。
- 上游成功后先 finalize,之后才允许本地下游执行。
- 新对象通过 fkit 的 list/config/summary/inspect 读回验证;handoff 只记录验证后的真实 ID。
- 不建立共享的 Flow 映射表;执行时从 BioLine 响应取得 ID,不从本地猜测 ID。
