内测期间:充值额外赠送 30% credits,订阅额外赠送 50%–70%。有任何反馈,欢迎到支持页提交。

文档

命令行、Agent 技能
与 MCP

一个命令提交,一个命令拿补丁。中间的每一步(上传了什么、什么时候扣费)都先给你看,再问你。

1pipx install autooptm装到独立环境
2autooptm login浏览器里授权这台机器
3autooptm run . --entrypoint train.py免费估算,问过你再扣费

安装

autooptm 是一个命令行工具,用 pipxuv tool 装到独立环境里。macOS 的 Homebrew Python 和新版 Debian / Ubuntu 会拒绝裸 pip install 往系统环境里装包,这两种方式都不受影响。

shell
$ pipx install autooptm
# or
$ uv tool install autooptm
$ autooptm --help

MCP 服务器多一个依赖,装的时候带上 extra:pipx install 'autooptm[mcp]'

登录

autooptm login 打开浏览器,你在网页上确认授权这台机器。终端拿到一个 30 天有效的令牌,每次使用都会顺延,存在 ~/.config/autooptm/token

shell
$ autooptm login
signed in as you@example.com; token saved to ~/.config/autooptm/token (valid 30 days, and it slides on use)

# a server with no browser: print the approval URL, open it anywhere
$ autooptm login --no-browser

# or the email code (QQ / 163 mail work): one command sends it, the next verifies
$ autooptm login --email you@example.com
$ autooptm login --email you@example.com --code 482913

$ autooptm balance
12.4 credits (≈ $12.4)
$ autooptm logout

CI 与脚本:API key

不方便点浏览器的地方用 API key。key 只显示一次;默认只有 read,submit 两个权限,unlock 会花钱,要显式加上。把它放进 AUTOOPTM_TOKEN 环境变量即可,命令行会自动读取。

shell
$ autooptm keys create "CI pipeline" --scopes read,submit --expires-in-days 90
$ autooptm keys list
$ autooptm keys revoke <keyId>
$ export AUTOOPTM_TOKEN=ao_…

一次完整的优化

run 接受公开仓库地址或本地目录,跑完整条流程:打包、免费估算、问你要不要继续、等结果、告诉你补丁多少钱。中途断线不要紧,任务在我们这边继续,用 wait 接回来。

01
提交

照抄你平时运行的命令。入口脚本用 --entrypoint,其余参数用 --args。显卡留 auto 会跑在 RTX 4090 上,装不下再选 RTX5090;程序不用显卡就选 CPU,不收机器费。

02
上传清单

本地目录先在你机器上列清单:权重、数据、大文件和文件特别多的目录逐项问你,最后确认才上传。详见上传了什么

03
免费估算

几秒钟的静态扫描,不执行你的代码、不扣费。打印预期加速比和区间,然后问你要不要继续。

04
继续

回答 y 扣 2 credits 分析押金,拿补丁时全额抵扣;没有加速、或失败在我们这边时退回。回答 n 或不答,任务停在估算,永远免费。

05
结果与补丁

跑完打印端到端实测加速比和补丁报价。unlock 再问一次才扣费,补丁写到 autooptm.patchgit apply 即可。低于 1.10× 不卖补丁,押金退回。

shell
$ autooptm run . --entrypoint train.py --workload training --gpu auto
skipped: .git (1), __pycache__ (14)
y = into the code archive · n = leave out · d = upload as the private dataset instead (sandbox only, 7 days, up to 1 GB, one per run)
  checkpoints/                 weight files: 2, 1.9 GB (.pt×2)  include? [y/N/d] n
  data/                        crowded directory: 1204 files, 310 MB (0 of 1204 files are code)  include? [y/N/d] d
  data/ goes up as the dataset, unpacked at ./data

packing 87 files, 1.4 MB before compression:
  src/                                         62 files     1.1 MB
  configs/                                     14 files      38 KB
  train.py                                      1 files      12 KB
dataset: /home/you/repo/data -> ./data in the sandbox
upload? [Y/n] y
job 7f3c2a1b queued
estimate: expected 1.6x · range 1.2x - 2.3x · lossless 1.4x
next: autooptm decide 7f3c2a1b continue   (takes the deposit, credited against the unlock)
      autooptm decide 7f3c2a1b stop       (free)
continue? takes the analysis deposit (2 credits), credited against the unlock. [y/N] y
1.61x  (937.8s -> 582.5s)
patch: locked. unlock for 4.6 credits (autooptm unlock 7f3c2a1b)
report: https://api.autooptm.com/api/my/reports/…

$ autooptm unlock 7f3c2a1b
Unlock spends 4.6 credits. Continue? [y/N] y
$ git apply autooptm.patch
断线了?任务还在跑。autooptm wait <jobId> 接着等,autooptm status <jobId> 看一眼,autooptm estimate <jobId> 再看一遍估算。

上传了什么

提交本地目录时,打包在你的机器上完成,打包前先扫一遍。哪些东西进代码包,由你决定:

这一类怎么处理
.git、缓存、虚拟环境、编辑器目录直接丢掉,只打印一行 skipped:。包括 __pycache__.venvnode_moduleswandb.idea.DS_Store 等。
权重文件asked.pt .pth .ckpt .safetensors .onnx .npz .bin .gguf 等,按目录列出,默认不传。
数据文件asked图片、音视频、表格、.npy / .h5 / .pkl、压缩包等,按目录列出,默认不传。
单个超过 8 MB 的文件asked逐个列出,默认不传。
超过 200 个文件的目录asked列出文件数、大小和其中代码的比例。一半以上是代码就默认传(比如 src/),否则默认不传(比如 outputs/)。

每一组三选一:y 进代码包,n 不传,d 作为私有数据集上传。数据集走另一条通道,只进沙箱、7 天后删、上限 1 GB,在沙箱里解压到同一个相对路径,你的命令不用改;一个任务只能带一个数据集。问完打印打包清单,确认后才上传。代码包压缩后上限 64 MB。

shell
# only show the list; nothing leaves the machine
$ autooptm run . --entrypoint train.py --dry-run

# answer from the command line instead of the prompts
$ autooptm run . --entrypoint train.py --include checkpoints --exclude outputs --yes

# send a directory as the dataset, unpacked at ./data in the sandbox
$ autooptm run . --entrypoint train.py --dataset ./data --dataset-path data --yes
脚本和 agent 里没有终端。没有 --yesrun 只打印清单、不上传(退出码 1)。先 --dry-run 看一遍,再带 --include / --exclude--yes 提交。

命令参考

命令作用选项
run SOURCE提交公开仓库地址或本地目录,跑到结束。默认先免费估算再问你;--no-wait 提交就返回。--entrypoint main.py--workload training|inference--gpu auto|RTX4090|RTX5090|CPU--args "…"--setup FILE--git-ref REF--model opus|glm--lang zh|en--dataset DIR_OR_ARCHIVE--dataset-path ./data--include PATH--exclude PATH--dry-run--no-estimate--no-wait--yes
wait JOB接着等一个任务:断线之后,或 --no-wait 之后。停在估算的任务会再问一次要不要继续。--yes--timeout SECONDS
estimate JOB再看一遍免费估算:预期、区间、lossless 一档,以及审查备注。
decide JOB continue|stop答复估算。continue 扣 2 credits 押金,stop 免费;7 天不答复也算 stop。--yes
status JOB一个任务当前的状态、加速比、报价。
unlock JOB按报价扣费并下载补丁。先问一次;实付不超过报价。--yes--out autooptm.patch
cancel JOB停掉排队或运行中的任务。取消的运行不扣 credits。
balance可用 credits。
datasets这个账号上传过、还没过期的数据集,可以直接用 key 复用。
login登录:打开浏览器授权这台机器;--email 改走邮箱验证码。--no-browser--email ADDR--code NNNNNN--role …
logout删掉本机保存的令牌。
keys create|list|revoke给 CI 和脚本用的 API key。create NAME --scopes read,submit,unlock --expires-in-days N
install-skill把 Claude Code 技能写进本机的 skills 目录,见下。--dest DIR

Claude Code 技能

技能随包发布,不用另外下载。装好命令行、登录之后,一条命令把它写进 Claude Code 的 skills 目录:

shell
$ pipx install autooptm
$ autooptm login
$ autooptm install-skill
installed autooptm-optimize -> ~/.claude/skills/autooptm-optimize/SKILL.md

# somewhere else, e.g. a project-level skills directory
$ autooptm install-skill --dest ./.claude/skills

然后在 Claude Code 里打开你的仓库,直接说「用 AutoOptm 优化这个仓库」,或者调用 /autooptm-optimize。技能教会 Claude Code 整条流程:

1
找入口脚本

端到端跑训练或推理的那条命令;不清楚会问你。

2
--dry-run 给你看清单

agent 没有终端,所以它先列出会上传什么、哪些默认不传,你点头之后才带 --include--yes 提交。

3
把估算和押金摆在你面前

你说了算才 decide continue;不说就停在免费的估算。

4
解锁前必须你确认

汇报加速比和报价,等你同意再 unlock,然后 git apply

技能用的是这台机器上的命令行。换一台机器要重新 pipx install autooptmautooptm loginautooptm install-skill;令牌不会跟着技能走。

MCP

Claude Code、Cursor 或任何 MCP 客户端都可以直接调用。装带 mcp extra 的包,把 autooptm-mcp 写进客户端配置:

shell
$ pipx install 'autooptm[mcp]'
$ autooptm login
mcp.json
{
  "mcpServers": {
    "autooptm": { "command": "autooptm-mcp" }
  }
}

工具:optimize_submitoptimize_estimateoptimize_decideoptimize_statusoptimize_waitoptimize_cancelunlock_patchdownload_patchaccount_balance。规则和命令行一样:optimize_submit 停在免费估算,optimize_decide 才扣押金,unlock_patch 必须拿到用户明确确认。提交本地目录时返回值里带 upload,列出打进去的和没传的组,再提交一次时用 include 加进去。

环境变量与脚本

AUTOOPTM_TOKENAPI key 或登录令牌;设了就不读本机保存的文件。
AUTOOPTM_API接口地址,默认 https://api.autooptm.com
XDG_CONFIG_HOME令牌文件所在目录的上级,默认 ~/.config

没有终端时的行为

每个会花钱或会把文件传出去的地方都要一次明确的同意,脚本里用 --yes 给出。没有 --yes:本地目录的 run 只打印清单,退出码 1,不上传;估算出来后 run 打印 parked at the estimate,退出码 0,任务免费停在那里,之后用 decide 答复;unlock 直接拒绝。所有临时性错误(限流、网络抖动)会自动重试;提交这种不能重复的请求只在服务器明确说「稍后」时才重发。