关于 colab-operator
colab-operator 是通过 colab CLI 操作 Google Colab 环境的技能,适用于需要在远程 VM 上运行代码、管理加速器会话或同步文件的用户。它支持持久化内核会话及将执行记录导出为笔记本。
主要功能
- 01创建和管理 GPU、TPU 会话
- 02在远程 VM 执行 Python 和 Shell
- 03同步本地与远程文件
- 04安装软件包并配置环境
- 05导出会话记录为笔记本
适用场景
- 01在 Colab VM 运行脚本或 Notebook
- 02为任务配置 GPU 或 TPU 环境
- 03在本地与远程环境间传输文件
- 04保存会话执行记录以供复查
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ googlecolab/ google-colab-cli --skill colab-operator安装后在 Claude Code 中输入/colab-operator确认已加载。
详细介绍
技能:Colab 会话操作员
通过 colab CLI 操作 Google Colab 环境:配置 GPU/TPU 会话、在 VM 上运行 Python/ shell、同步文件,并将工作保存为笔记本。
安装
如果用户尚未安装 colab 工具,可以运行
uv tool install google-colab-cli 或 pip install google-colab-cli 进行安装。
何时启用
- 创建或管理 TPU/GPU 会话。
- 在远程 Colab VM 上运行 Python 或 shell。
- 在本地和远程之间同步文件。
- 自动配置环境(软件包、身份验证、Drive)。
- 将会话历史导出为 Jupyter 笔记本。
心智模型(请先阅读)
- 一个会话 == 租用 VM 上运行的 Jupyter 内核。
colab new会分配一台计费 VM;colab stop会释放它。只要内核处于活动状态,会话就会保持运行,Colab 后端会自动维持其活动状态。 - 在同一会话中,内核状态会在多次
colab exec/colab repl调用之间持续保留。 每次调用都会重新连接到同一个内核(内核 ID 会缓存在本地状态中),并且只会在退出时关闭 websocket —— 不会关闭内核。因此,导入项、变量和已定义的函数会在不同的colab exec命令之间保留。逐步构建状态;不要每次调用都重新导入所有内容。(真正重置内核的是colab stop和colab restart-kernel。) - 默认工作目录是
/content。 每次运行exec/repl/run时都会先切换到此目录;处理文件时优先使用绝对路径(/content/...)。对于colab ls/rm/upload/download,可以使用绝对/content/...路径,默认ls路径是content(VM 根目录)。 colab执行后即退出,不会持续运行。 每条命令都会进行身份验证、执行一项操作,然后退出。
身份验证(最常见的 Agent 阻塞问题)
- 全局标志是
--auth={adc,oauth2},默认值为adc(应用默认凭据)。它必须放在子命令之前:colab --auth=adc new -s x。 - ADC 设置(最适合无头/Agent 使用)。Colab 后端需要一组特定的作用域,因此请使用以下全部四个作用域重新生成 ADC:
为什么需要全部四个:gcloud auth application-default login \ --scopes=openid,\ https://www.googleapis.com/auth/cloud-platform,\ https://www.googleapis.com/auth/userinfo.email,\ https://www.googleapis.com/auth/colaboratoryuserinfo.email(会话后端colab.research.google.com,否则返回 401)、colaboratory(Colab 功能/API)、openid+cloud-platform(gcloud 强制要求;如果作用域列表缺少cloud-platform,它会拒绝请求)。 - oauth2 设置:首次使用时,
colab --auth=oauth2 <anything>会触发浏览器授权流程(令牌缓存在~/.config/colab-cli/token.json)。需要在~/.colab-cli-oauth-config.json中提供客户端配置(或使用-c PATH)。浏览器步骤通常需要人工操作;对 Agent 来说,优先使用 ADC。 - 一次性验证身份验证:运行
colab sessions(只读,列出服务器分配情况)或colab whoami(隐藏的调试命令:显示当前邮箱、作用域、受众和到期时间)。任何调用返回 401 或 403 时,原因几乎总是缺少凭据或作用域 ——colab whoami会立即显示问题。 - 不要将
colab auth与 CLI 身份验证混淆。colab auth会将 VM 端 的 GCP 凭据注入正在运行的内核(让笔记本代码能够调用 BigQuery/GCS);它与 CLI 本身的身份验证方式无关。切勿建议运行colab auth来修复 CLI 的 401/403 —— 这是作用域/身份问题,应通过上述gcloud命令修复。
工作流
配置
colab new -s <name>(CPU)。添加--gpu A100或--tpu v6e1来使用加速器。始终传入-s <name>——省略名称时会自动生成一个随机的 6 位十六进制字符串,导致后续命令无法明确指定目标。- 支持的
--gpu:T4、L4、G4、H100、A100。支持的--tpu:v5e1、v6e1。 - 注意:无法识别的
--gpu值会静默回退到 A100(这通常会导致下一步失败)。使用加速器时,colab new返回400表示此账号没有相应的配额或使用权限——请改用--gpu T4,或省略该标志以使用 CPU。 - 加速器的可用性取决于账号等级;大多数账号只能使用 CPU。不要假设一定能分配到 GPU/TPU。
执行
- 首选:
colab exec -s <name> -f <script.py>可在远程 VM 上运行本地脚本(在本地读取并发送到内核——无需手动上传)。 - 通过管道传入代码:
echo "print(1)" | colab exec -s <name>或cat script.py | colab exec -s <name>。 - Notebook:
colab exec -s <name> -f nb.ipynb会运行每个代码单元,并在输入文件旁写入<basename>_output.ipynb。首行中的# @title Foo会作为单元格标签显示在进度输出中。 - 绘图/图像:会拦截 PNG/JPEG 输出。使用
exec/repl上的--output-image <path>将其保存到指定位置(否则会打印临时路径)。当 stdout 不是 TTY 时,会自动屏蔽内联终端图像转义序列,因此通过管道传输或捕获的输出仍保持干净。 - Shell:使用
echo "cmd" | colab console -s <name>批量运行 Shell 命令。Console 会在 tmux 中运行 bash,因此即使输出通过管道传输,也会包含终端控制字节——使用grep -a过滤出特定行。如果不需要真正的 Shell,exec速度更快。 - 切勿从 Agent 交互式运行
colab repl、colab console、colab auth或colab drivemount——这些命令需要 TTY,会导致挂起。repl/console接受通过管道传入的 stdin,并在遇到 EOF 时退出;而auth/drivemount确实需要用户在终端中操作。
临时单次任务(colab run)
colab run [--gpu T4] [--tpu v6e1] [--keep] [-s NAME] script.py [args...]= 用一条命令完成new+exec+stop。它会配置一个全新的 VM,像原生运行python script.py args一样设置sys.argv和__name__ == "__main__"后运行脚本,然后关闭 VM(除非指定--keep)。- 退出码会传递:如果脚本中发生未捕获的异常或调用
sys.exit(N),colab run会以非零状态退出(遵循 CPython 语义:sys.exit()/sys.exit(0)→ 0,sys.exit(N)→ N,sys.exit("msg")→ 1)。 - 流分离:
colab run会将自身的[colab] ...信息写入 stderr,将脚本输出写入 stdout——因此colab run job.py > out.txt只会捕获脚本的 stdout。(colab exec会将脚本的 stdout/stderr 实时流式传输到你的 stdout/stderr。) - 可用作 shebang:
#!/usr/bin/env -S colab run --gpu T4可将经chmod +x处理的.py文件变成一个独立的“租用 GPU、运行、清理”脚本。修改 CLI 行为后,请先重新安装再测试 shebang——它们会通过$PATH查找colab,而不是使用可编辑安装。 - 如果脚本路径不存在,命令会在分配 VM 之前以非零状态退出(不会浪费计算资源)。
自动化
colab auth -s <name>——VM 端的 GCP 凭据;在 VM 中调用 GCS/BigQuery 前需要执行(交互式;无法由 Agent 运行)。colab drivemount -s <name> [PATH]——默认将 Drive 挂载到/content/drive(交互式;无法由 Agent 运行)。colab install -s <name> pkg1 pkg2——通过uv pip install --system安装,失败时回退到pip。也可使用colab install -s <name> -r requirements.txt。
检查与报告
colab help(或colab help <cmd>)会列出并说明命令;命令按字母顺序排列。colab sessions会列出服务端分配情况,并自动清理过时的本地条目。没有本地记录的孤立会话会显示为[?]。colab status [-s <name>]会显示硬件、IDLE/BUSY 状态和上次执行时间。colab log -s <name> [-n 20] [-t TYPE]会显示最近的结构化事件;任务失败时尤其有用。colab log -s <name> -o summary.ipynb会将会话导出为笔记本(也可根据后缀导出为.md、.txt、.jsonl)。colab url -s <name>会输出一个浏览器 URL,将 Colab 网页界面连接到现有 CLI 会话,而不是分配新的 VM(添加--open可打开该界面)。colab skill/colab readme会输出此 skill 和 README(便于自行了解)。
安全
- 完成后务必运行
colab stop -s <name>——空闲 VM 会消耗计算单位。即使脚本出错,colab run(不带--keep)也会自动清理。 - 本地状态存放在
~/.config/colab-cli/sessions.json中(设置存放在settings.json中,历史记录存放在history/*.jsonl中)。不要手动编辑。 - 隔离并行运行或 Agent 运行:使用全局
--config <path>标志,将会话状态指向临时文件(例如colab --config /tmp/agent.json new -s job)。
恢复
- 执行时出现 “Session not found” / 404 / 401:后端已清理该 VM。
colab exec/repl会检测此情况并自动清理本地状态——运行colab sessions,然后使用colab new重新创建。 - 执行超时或内核卡死:运行
colab restart-kernel -s <name>(保留 VM,重置内核),或运行colab stop后再运行colab new。
评论
支持 Markdown