5.0 KiB
5.0 KiB
| name | description |
|---|---|
| opencode_key_replacement_script | 当需要批量替换 ~/.astrion/astrion、~/.astrion/astrion-clone 和服务器 /opt/agent/runtime 中的 OpenCode API key 时,应该索引本记忆 |
name: opencode_key_replacement_script description: 当需要批量替换 ~/.astrion/astrion、~/.astrion/astrion-clone 和服务器 /opt/agent/runtime 中的 OpenCode API key 时,应该索引本记忆
OpenCode API key 批量替换脚本
脚本位置
项目根目录下的 replace_opencode_keys.py。
作用
一次性批量替换以下目录中所有 OpenCode 相关的 API key:
- 本地:
/Users/jojo/.astrion/astrion - 本地:
/Users/jojo/.astrion/astrion-clone - 服务器:
/opt/agent/runtime/(或服务器上ASTRION_DATA_ROOT指向的目录)
扫描范围
仅扫描配置文件,自动跳过运行时数据:
settings.jsonconfig/*.json- 跳过
data/、logs/、对话历史等目录 - 跳过已有的
.bak_/.bak备份文件
替换规则
脚本会查找已知的旧 OpenCode key 值(被多个 OpenCode Go 相关环境变量共用的同一串 key),并将其替换为新的 OpenCode key。
实际会改到的键名通常包括:
settings.json中env_vars下的:API_KEY_OPENCODEAGENT_API_KEYAGENT_THINKING_API_KEYAGENT_TITLE_API_KEY- 指向
opencode.ai的API_KEY_KIMI、API_KEY_DEEPSEEK、API_KEY_QWEN、API_KEY_MINIMAX等
config/sub_agent_models.json中url为https://opencode.ai/zen/go/v1的模型条目的apikey
config/custom_models.json 中一般使用 ${API_KEY_OPENCODE} 变量引用,key 本身存在 settings.json,脚本不会直接修改它。
用法
# 只预览,不写入(循环轮换模式)
python3 replace_opencode_keys.py --dry-run
# 正式执行循环轮换(默认:key1→key2, key2→key3, key3→key1)
python3 replace_opencode_keys.py
# 单次指定替换(覆盖默认循环模式)
python3 replace_opencode_keys.py --old-key <旧key> --new-key <新key>
服务器替换流程
- 确保脚本已上传至
/opt/agent/agents/replace_opencode_keys.py - 在服务器上修改脚本,把
Path("/opt/agent/runtime")加入TARGET_DIRS - 先执行
--dry-run预览影响范围 - 去掉
--dry-run正式执行 - 执行
bash /opt/agent/refresh_agents.sh重启 webapp 服务使配置生效 - 删除生成的
.bak_时间戳备份文件
服务器执行方式建议
- 推荐:通过
terminal_session打开一个 SSH 会话,在会话里直接运行python3 replace_opencode_keys.py ... - 次选:使用服务器虚拟环境的完整路径,例如
/opt/agent/venv/bin/python3 replace_opencode_keys.py ... - 注意:在旧版本或未重启前,通过
run_command直接执行ssh host "python3 ..."时,run_command可能把命令中的python3重写为本地 macOS 的 Python 绝对路径,导致远程服务器找不到解释器。该问题已在modules/terminal_ops/run.py中修复:当命令通过ssh在远程执行时,跳过python3/pip重写。
注意事项
- 执行前会自动在同级目录生成
.bak_时间戳备份。 - 如果在沙箱/受限执行环境下运行,原目录不可写时脚本会把备份和修改后的文件写到项目工作区的
opencode_key_replacement_backup/目录下,需要手动复制覆盖。 - 建议执行后删除生成的
.bak_时间戳备份文件。 - 服务器上配置文件修改后,需要重启 webapp 服务才能生效。
历史记录
- 2026-06-19:使用脚本将本地两个目录的配置从主 key 替换为备用 key,并删除备份。
- 2026-06-19:将服务器
/opt/agent/runtime/下的settings.json和config/sub_agent_models.json也从主 key 替换为备用 key,并删除备份。 - 2026-06-24:将服务器
/opt/agent/runtime/下的settings.json(9 处)和config/sub_agent_models.json(1 处)从备用 key 替换回主 key,随后执行bash /opt/agent/refresh_agents.sh重启 webapp 服务,并删除备份。期间发现run_command执行ssh host "python3 ..."会错误重写python3为本地 macOS 路径,已修复modules/terminal_ops/run.py。 - 2026-06-25:重构脚本为三 key 循环轮换模式(key1/key2/key3,去掉主/备用命名)。将本地
~/.astrion/astrion和~/.astrion/astrion-clone的配置从 key2 替换为 key3(4 文件 20 处)。服务器尚未操作,当前仍为 key1。 - 2026-06-25:将本地
~/.astrion/astrion和~/.astrion/astrion-clone的配置从 key2 替换为 key3(4 文件 20 处),删除备份。服务器仍为 key1。
相关 key 记录
| 说明 | Key |
|---|---|
| key1 | sk-zNU867TGGXNKxoM0H6Pg6Jq4PYUPUOPDgMlzrOl3SS6jECRMWK5nNi6YMSsHzoZ |
| key2 | sk-sgt4ERgERPx2axU18PSfmenHv9zNDD3y8M5yr0p4ryhcNSm04CZsCxDHftJ9AkFD |
| key3 | sk-Jhvi76vJdCEQzvEdl8cAS5MIwBxBS4iTrJYSru2zCAXVnDVQpiZIvrcn9hBwkdZ4 |
| legacy(已停用,等同 key1 轮换到 key2) | sk-j0NdTvEDoqqkKCHEAFXXYneEsuXEiOXNCgLeZARJmfYUBf2Riym7KPFWq1amkB6z |