Docs · 参考

自动化与 JSON

冻结的 `--json` 契约、退出码、一次性任务机器以及 MCP 服务器。

每条命令都接受 --json,在 stdout 上输出机器可读结果,错误写入 stderr,并 返回有意义的退出码。数据结构是冻结的:每个对象都带有 apiVersion: 1, 字段只会增加,破坏性变更会提升版本号。测试套件锁定了这些约定。

输出会按排序后的键和 ISO-8601 日期进行格式化打印。

Shapes

ShapeCommands
VMSummaryJSONlist, info, create
SnapshotJSONsnapshot list
OperationJSONmutating commands — snapshot, reset, clone, archive, rm, …
LogLineJSONlogs
AddressJSONip
DiskUsageReportJSONdu
GuideJSONguide <guest>

VMSummaryJSON 包含 name、id、guest、state、cpuCount、memoryBytes、 diskBytes、network、path、address、snapshotCount、isTemplate、waitingForDHCP 和 networkStatistics。list --json 会包含已归档机器,状态为 state: "archived"。

OperationJSON 包含 ok、operation、vm、detail 和 durationMilliseconds——这就是获取实测快照耗时的方式,而不是听信口头说法。

Exit codes

CodeMeaning
0ok
1failed
2usage
3not found
4wrong state
5unsupported

破坏性命令会以退出码 4 拒绝执行,而不是弹出确认提示。设计上没有任何 交互式提示,因此脚本不会因为等待人工输入而挂起。确认要执行时,请传入 --force 或 --yes。

可靠的脚本

常见错误是把“running”当成“ready”。wait-ready 会一直阻塞,直到 guest 真正可达:

set -e
1vm create ci --from ubuntu-golden
1vm start ci --detach
1vm wait-ready ci
1vm exec ci -- ./run-tests.sh
1vm discard-session ci --force

一条命令完成一次性机器

task run 会替你完成整个 clone-wait-exec-dispose 循环:

1vm task run -- ./build.sh

它会克隆固定的 golden 镜像,等待就绪,执行命令,然后销毁机器。Golden 镜像 通过 template pin、template list 和 golden capture 管理。

MCP

1VMTool 支持 Model Context Protocol,因此 AI agent 可以直接拥有并驱动 机器:

1vm mcp serve                      # JSON-RPC on stdio
1vm mcp install-snippet claude     # config JSON for a host
1vm agent gc                       # delete stopped agent-created machines

agent gc 很重要:创建机器的 agent 不应把它们留在系统里,这就是清理命令。