技术教程 · 阅读约 7 分钟

回国党必看:用 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):