用途:在当前 AgentBox 工作区内扫描项目结构,产出一份声明式的 /workspace/agentbox.yaml,描述项目的服务、一次性任务和盒子默认配置,让盒内 supervisor(agentbox-ctl)能确定性地启动工作区。适用于用户打开一个没有 agentbox.yaml 的沙箱,或要求重新配置时。
主要能力与用法:
- 发现项目:检查 /workspace 下的 package.json、pyproject.toml、requirements.txt、Cargo.toml、go.mod、Gemfile、docker-compose.yaml、Makefile/justfile 等,识别运行时、脚本、监听端口和本地依赖的数据库/缓存。
- 区分任务与服务的写法:services 为长驻进程,默认 restart: on-failure;tasks 为一次性操作,用 needs: 串联依赖,名字需匹配 [A-Za-z0-9_-]+ 且不得冲突或成环。建议生成依赖安装任务作为 needs 图根节点,并使其幂等,可用 run_once: true 存命令哈希标记自动跳过热启动。
- 就绪探针:服务可用 ready_when 指定 port、log_match 或 http(可配 expect_status、interval_ms、initial_delay_ms、timeout_ms、on_timeout)。主 Web 服务需设置 expose: { port, as: 80 },且至多一个服务可设置。
- 数据库等有状态服务:用 image 形式声明容器化依赖,容器按名称在停止/启动间复用。由于 agentbox checkpoint 不捕获 docker-in-docker 数据,容器化数据库在新盒子上为空,种子任务应使用 run_once: { check: <cmd> } 按真实数据判断,而非命令哈希标记。迁移任务通常可重复执行。
- 额外文件可用 carry: 块或 agentbox-ctl cp fromHost 复制,单次复制超 box.cpMaxBytes(默认 100 MB)会被阻止。
- 可选的 defaults: 块设置每项目默认值(如 box.hostSnapshot、box.withPlaywright、box.vnc、code.ide 等)。
- 写完文件后执行 agentbox-ctl reload,再用 agentbox-ctl status 校验各服务运行状态;最后以固定提示语告知用户盒子已就绪。
限制:资料未提供具体收费、价格、支持平台与效果的说明;完整键列表可在主机上运行 agentbox config list --keys 查看。