回国党必看:用 30 行 Python 让 Codex / Claude 在国内丝滑跑起来
回国党必看:用 30 行 Python 让 Codex / Claude 在国内丝滑跑起来
很多人回国之后第一件事是配梯子,第二件事是发现梯子不够稳。
Codex 调用 OpenAI API 的方式决定了它对延迟极度敏感——一旦连接抖动,补全就会超时或返回空结果。Claude 同理。真正的解法不是找更贵的梯子,而是换一条在国内有 BGP 接入点的 API 路由。
这篇文章教你用标准 OpenAI SDK,把 Codex CLI 和自己写的代码审查脚本跑在国内可直连的节点上,不折腾网络,不换代码逻辑。
先说清楚问题在哪里
OpenAI 的 api.openai.com 在国内走正常网络基本全军覆没。即使你有梯子,稳定性也取决于出口节点质量——高峰期丢包 > 5% 就够让流式输出变得断断续续。
更本质的问题:Codex CLI 和大多数 AI 工具都只认 OPENAI_BASE_URL 这个环境变量。只要换一个在大陆有接入点、兼容 OpenAI 格式的中转节点,所有工具链零改动就能用。
环境准备
pip install openai rich # rich 用于格式化输出
设置环境变量(一次性,加到 .zshrc / .bashrc):
export OPENAI_API_KEY="你的key"
export OPENAI_BASE_URL="https://api2everything.xyz/v1"
Codex CLI 直接读这两个变量,设完之后 codex "帮我解释这段代码" 就能跑,不需要梯子。
30 行代码:自动审查整个 repo
下面这个脚本会遍历当前目录的 Python 文件,逐文件送给模型做 Code Review,输出问题清单。
#!/usr/bin/env python3
"""
repo_review.py — 用 AI 批量审查代码
支持 GPT-4o / Claude 3.5 / DeepSeek-V3,改 model 参数即可切换
"""
import os
import sys
from pathlib import Path
from openai import OpenAI
from rich.console import Console
from rich.markdown import Markdown
console = Console()
client = OpenAI(
api_key=os.environ["OPENAI_API_KEY"],
base_url="https://api2everything.xyz/v1", # 国内直连,无需梯子
)
REVIEW_PROMPT = """你是一个资深代码审查员。请检查以下代码,重点关注:
1. 潜在 Bug 或逻辑错误
2. 安全隐患(注入、越权、硬编码凭证等)
3. 性能问题
4. 可读性和命名规范
用 Markdown 格式输出,按严重程度分组(🔴 严重 / 🟡 建议 / 🟢 小问题)。
如果没有问题,直接说"代码质量良好"。"""
def review_file(file_path: Path, model: str = "gpt-4o") -> str:
code = file_path.read_text(encoding="utf-8", errors="ignore")
if len(code.strip()) < 10:
return "文件为空,跳过。"
response = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": REVIEW_PROMPT},
{"role": "user", "content": f"文件路径:{file_path}\n\n```python\n{code}\n```"},
],
temperature=0.2,
max_tokens=1500,
)
return response.choices[0].message.content
def main():
target_dir = Path(sys.argv[1]) if len(sys.argv) > 1 else Path(".")
py_files = sorted(target_dir.rglob("*.py"))
# 过滤掉 venv / __pycache__ 等噪音目录
py_files = [
f for f in py_files
if not any(part in f.parts for part in ("venv", ".venv", "__pycache__", "node_modules"))
]
if not py_files:
console.print("[yellow]没有找到 Python 文件[/yellow]")
return
console.print(f"[bold green]找到 {len(py_files)} 个文件,开始审查...[/bold green]\n")
for file_path in py_files:
console.rule(f"[bold]{file_path}[/bold]")
result = review_file(file_path)
console.print(Markdown(result))
console.print()
if __name__ == "__main__":
main()
跑起来:
# 审查当前目录
python repo_review.py .
# 审查指定项目
python repo_review.py ~/projects/my-app
# 换成 DeepSeek-V3(更便宜,中文注释理解更好)
# 把 model="gpt-4o" 改成 model="deepseek-v3" 即可
切换模型只需改一行
这是用中转层的最大好处——300+ 模型共用一个 base_url,不需要多个账号:
| 场景 | 推荐模型 | 原因 |
|---|---|---|
| 通用代码审查 | gpt-4o | 理解上下文能力强 |
| 中文项目 / 注释 | deepseek-v3 | 中文语义理解更准 |
| 大文件批量处理 | claude-3-5-haiku-20241022 | 速度快,成本低 |
| 严肃安全审计 | claude-opus-4-5 | 推理深度最强 |
给 Codex CLI 用户的额外配置
如果你用的是官方 Codex CLI(npm install -g @openai/codex),设好环境变量就够了:
export OPENAI_BASE_URL="https://api2everything.xyz/v1"
codex "重构这个函数,减少嵌套层级"
Claude Code 同理,它支持 ANTHROPIC_BASE_URL 环境变量,或者直接在配置文件里指向中转端点。
费用算一算
用官方 API 跑一次完整的中型项目(约 50 个文件,均 200 行):
- GPT-4o:输入 ~500K tokens,约 $1.25
- 通过无量Api:同模型打 65% 折扣,约 $0.44
SVIP 档(7.7 折)长期使用会更划算。注册就送 ¥1 余额,够你先跑几次试试效果。
小结
回国之后使用 AI 编程工具的核心矛盾不是"找没找到好梯子",而是"有没有在大陆有接入点的 API 路由"。换一行 base_url,比折腾网络省时间得多。
脚本可以直接拿去用,有问题欢迎评论区贴报错,我看到都会回。觉得有用的话点个赞,后续还会写 Claude Code 的本地 hook 配置和 DeepSeek 的 function calling 实战。
无量Api 注册链接(国内直连,注册送 ¥1):