命令行适合喜欢用自己的编辑器、版本管理和脚本的人。浏览器编辑器能为算法做的事,CLI 都能在本地完成,检查规则也一样,所以在这里通过 validate 的代码,保存时也会通过。它只调用公开 API;安装和登录见命令行。所有命令都支持 --json。
编写并测试算法
典型的流程是:从一个可运行的示例开始,下载一条真实录制,反复测试直到满意,然后保存。
embodiflow algorithm init my-algo --category enrich
embodiflow recordings pull <recording-id> --project <team>/<project> --as recording --out ./rec
embodiflow algorithm validate my-algo
embodiflow algorithm test my-algo --input recording=./rec --window 30s
embodiflow algorithm save my-algo| 命令 | 作用 |
|---|---|
algorithm init <dir> --category <category> | 按类别的默认示例写出可运行的 main.py 和它的 test_main.py。--example <id> 从该类别的另一个示例开始,--list-examples 列出全部示例。按任务片段运行的质检或增强加 --level episode,读取原始文件的录制级质检加 --reads raw。--lang image 生成镜像算法而不是 main.py。--name 设置算法名称,默认用目录名。 |
algorithm validate <dir> | 不运行代码,按保存时完全相同的方式检查 main.py。问题会带行号和列号。镜像算法则检查 algorithm.yaml。 |
algorithm test <dir> | 目录里有 test_main.py(init 和 pull 都会写出)且没有 --input 时,在本机用 pytest 运行这个测试。需要装有 pytest 和 SDK 的 Python,缺少时会明确提示。 |
algorithm test <dir> --input <port=path> | 在本地用下载的数据运行算法,并按平台的规则检查输出。每个端口重复一次 --input。--params k=v 覆盖参数,--facts <file> 提供事实,--out <dir> 保留运行目录,--window 30s 只运行录制的前几秒,--episode <n> 为任务片段级算法选择任务片段。 |
algorithm pull <name>[@version] [dir] | 把已保存的版本下载到本地继续编辑:main.py、manifest.json(冻结的接口)和 test_main.py 骨架,之后 algorithm test 和 algorithm save 可以直接用。镜像算法的源码不在云端,所以只会下载 algorithm.yaml 和一份说明。 |
algorithm try <name>[@version] | 在云端用真实数据试跑已保存的版本,Python 或镜像、内置或团队的都可以:--recording <id>、--episode <recording-id>:<n> 或 --dataset-version <id>,用 --window 30s 或 --episodes <n> 截取范围,--param k=v 设置参数。它就是控制台的试跑,限制和隐私规则相同,不保存任何内容。 |
algorithm save <dir> | 把 main.py 保存为新版本。版本号根据接口变化建议;--version <semver> 只能调高,不能调低。发送之前会先在本地检查源码。 |
algorithm push <dir> --archive <image.tar> --registry <host> | 登记镜像算法。 |
recordings pull <recording-id> --project <project> --out <dir> | 下载录制最新的就绪结果。--as recording(默认)得到标准目录树,--as raw 得到上传时的原始文件。下载总是完整文件,所以这里的 --window 会被拒绝,请用 algorithm test --window 截取。 |
docs algorithms [category] | 打印所有类别,或某个类别的端口和起步代码。可以离线使用。 |
把工作流当作文件
每个工作流都是一个 YAML 文件,所以你可以把它和算法一起放进版本管理,再用脚本应用:
embodiflow workflow get <team>/<project> > workflow.yaml
embodiflow workflow validate -f workflow.yaml
embodiflow workflow apply -f workflow.yaml --project <team>/<project>
embodiflow workflow run <team>/<project> --recording <recording-id>
embodiflow workflow status <run-id>| 命令 | 作用 |
|---|---|
workflow get <project> | 以 YAML 打印项目工作流。 |
workflow validate -f <file> | 按文件用到的算法检查它,规则和编辑器相同。有问题时以 1 退出。 |
workflow apply -f <file> --project <project> | 检查文件,并把它发布为项目工作流。--type 为 processing(默认)、curate 或 export。 |
workflow run <project> | 在一条 --recording <id> 或一个 --version <id> 上运行项目工作流。整理或导出工作流要加 --type。 |
workflow status <run-id> | 显示一次运行及每个步骤的状态。 |
凡是需要项目的地方,都可以写项目 UUID 或 team/project。