先说结论:据 Jules 官方公告,Google 的异步编程 agent Jules 会在 2026 年 12 月 31 日停服,11 月 11 日之后只读。代码、分支和 PR 本来就在 GitHub 上,不受影响;要带走的是 Jules 里的设置、环境变量、定时任务、记忆、setup 脚本和会话记录。官方给了导出工具,导出后可以直接交给 Claude Code 或 Codex 接着干。
我们用同一个 API Key 在 Claude Code 2.1.310 和 Codex 0.164.0 里各跑了一遍「读 Jules 导出 → 应用会话 patch → 跑 setup 和测试 → 生成 AGENTS.md」:
- Claude Code(claude-sonnet-5-5)约 15 秒完成,测试输出
ok; - Codex(gpt-6.1-sol)约 44 秒完成,测试输出
ok; - 两边写出的 AGENTS.md 都只列了环境变量的名字,没有写值。
创建 API Key,一个 Key 同时接 Claude Code 和 Codex →
时间线
| 时间 | 事件 |
|---|---|
| 2024 年 12 月 | Google 发布 Jules,定位是在后台异步处理编程任务的 agent(据 The Verge) |
| 2026 年 10 月 29 日 | 官方公告 Jules 将停服,并上线数据导出 |
| 2026 年 11 月 11 日 | 最后一天可以继续跑会话,之后转为只读 |
| 2026 年 12 月 31 日 | Jules 停服 |
据官方公告,Jules 的经验会并入 Google 的 agent 优先开发平台 Google Antigravity。如果你现在就要接着用后台 agent,Claude Code 和 Codex 都能在终端和定时任务里无人值守地跑。
第一步:导出 Jules 数据(11 月 11 日前做)
官方的做法是装 Jules Tools、登录,然后在家目录打开一个 CLI 编程 agent(比如 Claude Code),把公告里的「export prompt」整段粘进去:
npm install -g @google/jules
jules login
cd ~
claude # or: codex
agent 会检查 CLI 和登录状态、跑导出脚本,最后告诉你导了多少个仓库、会话和 patch。几点注意(据官方公告):
jules login是浏览器交互登录,要你自己跑;- 想导出仓库数据,先在 GitHub 上把账号连到 Jules,否则
sources.json是空的; - 登录 token 大约一小时过期,全是 401 就重新
jules login。
导出后的目录结构:
~/jules-export/
├── user-settings.json
├── env-variables.json
├── scheduled-tasks.json
├── sources.json
├── repos/<repo>/setup.sh
├── repos/<repo>/test-command.txt
├── repos/<repo>/memories.md
└── sessions/<id>/summary.md · activities.json · patch-1.diff
env-variables.json 里是明文的环境变量值,不要提交进仓库,也不要贴给别人。
第二步:把 Claude Code 和 Codex 接好
Claude Code 写在全局 ~/.claude/settings.json:
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.aicodewith.ai",
"ANTHROPIC_AUTH_TOKEN": "你的 API Key",
"APP_MODE": "test"
},
"model": "claude-sonnet-5-5"
}
地址是 https://api.aicodewith.ai,不要加 /v1。详细步骤见《Claude Code 如何接入第三方 API》。
Codex 写在全局 ~/.codex/config.toml:
model = "gpt-6.1-sol"
model_provider = "aicodewith"
[model_providers.aicodewith]
name = "aicodewith"
base_url = "https://api.aicodewith.ai/chatgpt/v1"
wire_api = "responses"
experimental_bearer_token = "你的 API Key"
[shell_environment_policy]
set = { APP_MODE = "test" }
各字段的含义见《Codex API Key 配置》和《Codex config.toml 配置详解》;还没装 Codex 的先看《Codex 安装教程》。
第三步:Jules 里的东西对应到哪里
| Jules 导出 | Claude Code | Codex |
|---|---|---|
| env-variables.json | settings.json 的 env | config.toml 的 [shell_environment_policy] 里的 set |
| repos/<repo>/setup.sh、test-command.txt | 写进 CLAUDE.md(可 @AGENTS.md 引用) | 写进仓库根目录 AGENTS.md |
| repos/<repo>/memories.md | 追加到 CLAUDE.md | 追加到 AGENTS.md |
| scheduled-tasks.json | cron + claude -p | cron + codex exec |
| sessions/<id>/patch-*.diff | git apply 后让 agent 接着做 | 同左 |
上面配置里的 APP_MODE 就是示例:Jules 里每一个环境变量,名字和值各搬一行。只想让某个仓库用的变量,可以放进仓库里的 .claude/settings.json,不要提交带值的文件。
两个客户端共用一份说明文件的写法,见《Claude Code 和 Codex 共用 AGENTS.md》。
接着做没做完的会话
Jules 里没收尾的会话,patch 在 sessions/<id>/ 下。在仓库里先应用,再跑 setup 和测试:
cd ~/code/demo
git apply ~/jules-export/sessions/<id>/patch-1.diff
bash ~/jules-export/repos/<repo>/setup.sh
$(cat ~/jules-export/repos/<repo>/test-command.txt)
然后把 summary.md 里的 Prompt 和 Latest plan 交给 agent,让它从这里接着做。
定时任务改成 cron
Jules 的定时任务就是「按时间跑一句 prompt」。在 Claude Code 和 Codex 里用非交互模式加 cron 就行:
# crontab -e
0 9 * * 1 cd ~/code/demo && claude -p "run tests and fix failures" --permission-mode acceptEdits >> ~/agent-cron.log 2>&1
0 9 * * 1 cd ~/code/demo && codex exec -s workspace-write "run tests and fix failures" >> ~/agent-cron.log 2>&1
--permission-mode acceptEdits 让 Claude Code 可以改文件;Codex 的 -s workspace-write 只允许写当前仓库。无人值守跑之前,先手动跑一次确认结果。
实测:同一份导出交给两个客户端
我们造了一份和官方格式一致的小导出:一个 Python 仓库、一个没收尾的会话(patch 修复除以 0)、一个 setup 脚本、一条测试命令、一个环境变量 APP_MODE、一个每周一 9 点的定时任务。然后对两个客户端说同一句话:「应用 patch,跑 setup 和测试,写一份 AGENTS.md,环境变量只写名字。」
| Claude Code 2.1.310 | Codex 0.164.0 | |
|---|---|---|
| 模型 | claude-sonnet-5-5 | gpt-6.1-sol |
| 运行方式 | claude -p | codex exec -s workspace-write |
| 用时 | 约 15 秒 | 约 44 秒 |
| patch | 干净应用 | 干净应用 |
| 测试 | ok | ok |
| AGENTS.md | 只列 APP_MODE | 只列 APP_MODE |
两边都注意到 setup 脚本里的 pip install 被系统 Python 拒绝了(脚本末尾有 || true,所以没中断),并如实报告,没有自作主张加 --break-system-packages。Claude Code 生成的 AGENTS.md:
# AGENTS.md
## Setup
pip install -q pytest || true
## Test
python3 test_calc.py
## Environment variables (names only)
- APP_MODE
## Scheduled task
0 9 * * 1 run tests and fix failures
测完我们删除了测试目录和其中的 Key 配置。
创建 API Key,把 Jules 的后台任务搬到 Claude Code / Codex →
常见问题
Codex 报 401 Unauthorized
多半是 Key 没读到或填错:确认 experimental_bearer_token 在 [model_providers.aicodewith] 下、model_provider = "aicodewith" 已设置。排查步骤见《Codex 401 Unauthorized 怎么解决》。Claude Code 报 401 则检查 ANTHROPIC_AUTH_TOKEN 和地址是否多了 /v1。
定时任务报 429 Too Many Requests
多个 cron 同一分钟一起触发,容易撞上频率限制。把任务错开几分钟,并参考《Codex 429 Too Many Requests》。
11 月 11 日之后还能导出吗?
据官方公告,11 月 11 日之后 Jules 只读,直到年底停服。公告没有写只读期间导出是否可用,建议 11 月 11 日前导完。
代码会丢吗?
不会。据官方公告,代码、分支和 PR 本来就在 GitHub 上,原样保留;导出只覆盖存在 Jules 里的配置和历史。



