Career-Ops 免费层实战:在 Antigravity CLI Free Tier 上运行完整 AI 求职流水线
本文基于 docs/FREE_TIER.md 展开,讲解如何在完全不需要 API Key、不需要付费订阅的前提下,用 Antigravity CLI 的免费额度(daily free tier)驱动 Career-Ops 的岗位评估、报告生成、门户扫描与 PDF 定制流水线。读完本文,你将掌握:免费层的安装与 Google 账号认证步骤、免费额度的每日限额构成、批量评估在限额下的正确用法(包括断点续跑),以及免费层各能力的边界与付费升级路径,并能结合 batch/batch-runner.sh 的源码确认限额处理机制。
为什么免费层可以跑完整流水线
Career-Ops 的核心设计是 AI 无关(AI-agnostic):评分、报告、定制逻辑全部由 modes/ 下的 Markdown 提示词文件与本地 Node/Playwright 脚本承载,具体推理由宿主 AI 编码 CLI 完成。这一点在 docs/RUNNING_ON_A_BUDGET.md 中被明确阐述:管线依赖你运行的 CLI,可以指向更便宜的 API 供应商或本地模型而“零代码改动”。Antigravity CLI 恰好提供了由 Google 托管的免费额度,于是 Career-Ops 的整个评估管线可以直接“骑”在免费层上运行——这正是 docs/FREE_TIER.md 开篇的承诺:
career-ops works with Antigravity CLI's free tier — no API key or paid subscription required.
AGENTS.md 的首次运行引导(Step 0: Free Tier Check)里也内置了这条提示:当用户提到成本、价格、预算或免费替代方案时,Agent 会主动告知“career-ops works fully on Antigravity CLI's free tier”,并指向本指南。
安装与认证:三步接入免费层
1. 安装 Antigravity CLI
安装命令按平台分为三种(来自 docs/FREE_TIER.md):
macOS / Linux:
curl -fsSL https://antigravity.google/cli/install.sh | bash
Windows(PowerShell):
irm https://antigravity.google/cli/install.ps1 | iex
Windows(CMD):
curl -fsSL https://antigravity.google/cli/install.cmd -o install.cmd && install.cmd && del install.cmd
2. 用 Google 账号认证
安装后无需手动申请 API Key。直接运行 agy:如果尚未登录,CLI 会先检查系统钥匙串(system keyring),找不到已存凭据时回落到 Google Sign-In——本地环境走浏览器,SSH 远程环境走“URL + 验证码”方式完成登录。
3. 照常运行 Career-Ops
agy # interactive — 交互式:粘贴 URL、评估、扫描等
agy -p "..." # headless / batch mode — 无头/批量模式
关于调用入口,docs/SUPPORTED_CLIS.md 的表格给出了 Antigravity CLI 的完整定位:
| CLI | 入口文件 | 调用方式 |
|---|---|---|
| Antigravity CLI | AGENTS.md |
交互式:agy(然后 /career-ops)。无头/批量:agy -p "prompt" |
也就是说,Antigravity CLI 读取的入口文件是仓库根目录的 AGENTS.md——它与其他 CLI 共享同一份核心逻辑,无需为它单独维护提示词文件。
每日限额:数字构成与触发后的行为
免费层的每日请求数与 token 上限由 Google 设定。docs/FREE_TIER.md 给出的典型限额(原文标注“subject to change”,以官方为准):
| 资源 | 每日大致限额 |
|---|---|
| 请求数(Requests) | 1,000 |
| 输入 tokens | 约 100 万(~1 M) |
| 输出 tokens | 约 10 万(~100 K) |
限额在太平洋时间午夜重置。触顶时 CLI 返回 rate-limit 错误,Career-Ops 会暂停并提示次日重试。
结合仓库源码可以看到项目对限额的防御是成体系的:
- 无头工作日志识别:batch/batch-runner.sh 中
is_rate_limit_log()通过grep -Eiq '(rate limit|rate_limit|too many requests|429|quota exceeded|try again later|temporarily unavailable)'判定限流,is_session_limit_log()额外识别 session limit / usage limit 类信号; - 限流重试与暂停:命中限流且未超过
--max-retries(默认 2)时,runner 会先sleep $RATE_LIMIT_SLEEP(默认 300 秒)再重试,并将该 offer 标记为rate_limited;若是会话级用量上限(--rate-limit-sleep 0或 session limit 日志),则调用mark_paused_rate_limit写入paused_rate_limit状态并暂停整个批次——注意这一状态不消耗重试预算,限额重置后可用--resume-paused恢复; - 状态可恢复:
batch-state.tsv记录每个 offer 的状态机(pending / processing / completed / failed / skipped / rate_limited / paused_rate_limit),batch/README.md 明确说明重跑会自动跳过已完成项。
这套机制对免费层尤其重要:免费额度是按天计价的“硬墙”,一旦触顶,正确姿势不是硬冲重试,而是让批次进入 paused_rate_limit 挂起,第二天恢复。
批量模式在免费层下的正确打开方式
这是 docs/FREE_TIER.md 中实操性最强的一节,原文明确指出:
-
batch-runner.sh默认派生的是claude -pworker(Claude Code 专属)。要改用 Antigravity CLI 作为 worker,需要手动逐条调用:agy -p "evaluate <URL>"这一点与 batch/batch-runner.sh 头部注释完全吻合:该脚本“uses
claude -pwith--dangerously-skip-permissionsand--append-system-prompt-fileflags that are not available in other CLIs”,多 CLI 支持“out of scope for now”。换言之,免费层用户要么手动循环agy -p,要么自行改造 runner。 -
保持
--parallel 1:脚本默认值就是PARALLEL=1,免费额度下并行会同时烧掉每日配额,应保持串行。 -
大批次跨天处理:50 个以上 offer 的批次在免费限额下大概率要跨多天完成。使用
--start-from N(“Start from offer ID N (skip earlier IDs)”)从上次中断的 ID 续跑,这与batch-state.tsv的可恢复状态机配合,避免重复评估已完成的 offer。
如果后续切换到支持自动批处理的 CLI,以下 runner 参数对限额管理同样有价值(来自 batch/README.md 与脚本 usage 输出):
| 标志 | 默认值 | 说明 |
|---|---|---|
--parallel N |
1 |
并发无头 worker 数(免费层建议保持 1) |
--dry-run |
关 | 预览将处理的 offer,不实际执行 |
--start-from N |
0 |
跳过 ID 小于 N 的 offer,跨天续跑的关键 |
--limit N |
0 |
本次运行最多处理的 offer 数(0 = 不限) |
--max-retries N |
2 |
单个 offer 的最大重试次数 |
--rate-limit-sleep N |
300 |
限流 worker 重试前的等待秒数;0 表示立即暂停批次 |
--retry-failed / --resume-paused |
关 | 仅重试 failed / 恢复被限流暂停的 offer |
此外,模型开销在 config/profile.example.yml 的 spend_tier 中有统一开关(economy / standard / premium,缺省为 standard)。对 Antigravity CLI,各档位映射的是“你 CLI 中最便宜/均衡/最强的可用模型”,且 extended thinking 分别为 off / off / adaptive——该映射表维护在 modes/_shared.md。在免费层跑大批量扫描时,把 spend_tier 设为 economy 是文档推荐的省钱姿势。
免费层能做什么:能力矩阵
docs/FREE_TIER.md 的能力矩阵如下,每一项都可以从仓库源码找到对应实现:
| 功能 | 免费层 | 说明 |
|---|---|---|
| Offer 评估(A-F 评分) | ✅ | 完整评分管线 |
| 报告生成(.md) | ✅ | Markdown 报告 |
| 门户扫描 | ✅ | 零 token —— 直接打 API |
| PDF 生成 | ✅ | 本地 Playwright,不耗 token |
| 批处理 | ⚠️ | 受每日配额限制 |
源码级佐证:
- 门户扫描零 token:scan.mjs 在 AGENTS.md 中即被描述为“Zero-token portal scanner (Greenhouse/Ashby/Lever APIs, zero LLM cost)”——它通过 HTTPS 直接查询各 ATS 的公开 API,不调用任何 LLM,因此是免费层中性价比最高的功能:先免费扫,再评估。
- PDF 生成零 token:generate-pdf.mjs 使用本地 Playwright 把 HTML 编译为 PDF(“Playwright: HTML to PDF”),推理成本为零,只依赖本机
npm run doctor校验过的 Playwright chromium 环境。 - 评估报告:报告写入
reports/,编号为三位零填充顺序号(max existing + 1),并行 fan-out 前可先用node reserve-report-num.mjs --count N原子预留号段,避免并行 worker 撞号(AGENTS.md Headless / Batch Mode 一节)。
升级路径:什么时候离开免费层
docs/FREE_TIER.md 给出的升级建议很直接:当免费额度不够用时,两条路都是官方一等公民支持的——
- 切换到付费 Google AI 计划(同一 CLI,更高额度);
- 换用 Claude Code(
claudeCLI)+ Claude Max 订阅。
两者“fully supported — just authenticate with your preferred provider”。切换后还可以直接启用 batch-runner.sh 的自动批量能力(它原生驱动 claude -p worker),把免费层需要手动 agy -p 循环的部分自动化。更细粒度的省钱/换供应商方案(OpenCode 接 OpenRouter、Qwen CLI 指向自定义 OpenAI 兼容端点、Ollama 本地模型、以及 node openai-eval.mjs 独立评估脚本)见 docs/RUNNING_ON_A_BUDGET.md。
小结
- 接入成本:三条安装命令 + 一次 Google 登录,无需任何 API Key;Antigravity CLI 走 AGENTS.md 入口,交互式
agy/ 无头agy -p。 - 限额纪律:每日约 1,000 请求、~1 M 输入 / ~100 K 输出 token,太平洋时间午夜重置;触顶时让批次挂起(
paused_rate_limit)而非硬重试,次日--resume-paused或--start-from续跑。 - 免费层边界:扫描与 PDF 完全免费(零 token),评估与报告消耗额度,批量受配额约束;
batch-runner.sh的自动编排目前绑定claude -p,免费层需手动agy -p "evaluate <URL>"逐条驱动。 - 升级时机:额度吃紧时切换付费 Google AI 计划或 Claude Max,其余配置零改动。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0623
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00