1. 从一块 USB-C 供电小板说起:Codex 在嘉立创EDA里到底能帮什么忙
如果你手上正好有一块 USB-C 供电的 PCB 要画,又听说 Codex 能辅助嘉立创EDA,那这篇周记就是写给你的。我这一周做的事很具体:用 Codex 当工程助手,在嘉立创EDA里从需求整理一路走到 Gerber 打样文件导出,中间踩了几个坑,也总结出一套能直接复制的提示词和检查清单。先说清楚 Codex 在这里的角色——它不是替你点鼠标的魔法按钮,而是一个能读工程约束、能生成 API 调用代码、能帮你核对封装和网络命名的协作方。嘉立创EDA 负责真正的图形编辑和 DRC 校验,Codex 负责把重复的、容易漏的、需要查文档的活儿接过去。
USB-C 供电小板这个场景特别适合练手,因为它麻雀虽小五脏俱全:有 Type-C 接口的 CC 下拉、有 LDO 稳压、有去耦电容、有电源指示 LED,还要考虑 USB 差分线的走法。任何一环漏了,板子回来就是不能上电或者识别不了。我这一周的主线就是围绕这块板子,把 Codex 的对话提示词模板、嘉立创EDA 的工程配置项、导出前的 DRC 检查清单全部跑通一遍。下面按我实际的操作顺序展开,你可以跟着一步步做。
先交代一下环境:嘉立创EDA 专业版客户端,Codex 通过本地 Bridge 与 EDA 通信,工作目录里放工程文件和约束文档。整个流程不涉及任何特殊网络配置,就是本机跑一个 Node 服务,Codex 发 HTTP 请求,Bridge 转发给 EDA 客户端执行。听起来绕,但配好之后很稳。
2. TaoToken 前置:给 Codex 配一个稳定的模型入口
Codex 本身是个客户端工具,它需要连一个大模型才能干活。我这一周用的是 TaoToken 提供的 API 入口,原因是它在长上下文和代码生成上比较稳,而且接入方式简单,不用折腾一堆环境变量。你可以把它理解成给 Codex 换了一个更顺手的“大脑接口”。
先说清楚 TaoToken 是什么:它是一个大模型 API 聚合服务,提供统一的 Base URL 和 Key,兼容 OpenAI 风格的接口。对 Codex 来说,你只需要改三个地方——Base URL、API Key、Model ID。官网在 https://taotoken.net,API 入口是 https://taotoken.net/api。注册后在控制台生成 Key,然后填到 Codex 的配置里就行。
这里有个细节要注意:Codex 的配置文件和普通 OpenAI 客户端不太一样,它用的是 TOML 格式,路径通常在用户目录下的.codex/config.toml。我实测下来,把 provider 指向 TaoToken 的 API 地址,model 填一个支持长上下文的型号,就能正常跑。如果你用的是 Claude Code 那套,配置项名字不同但逻辑一样,都是 Base URL + Key + Model ID 三件套。
为什么强调“前置”这一步?因为我第一天的教训就是:Codex 配置没弄稳,后面画板子的时候它动不动超时或者返回截断,你根本分不清是 EDA 的问题还是模型的问题。所以先把模型入口固定下来,再去做 EDA 的活儿。TaoToken 的好处是它把多个模型统一到一个入口,你换模型不用改代码,只改一个 Model ID 字符串。
另外提醒一句:API Key 不要写死在代码里,也不要提交到 Git。我是在本地建了一个.env文件,Codex 启动时读取。嘉立创EDA 的 Bridge 服务同理,Key 只放在本机环境变量里。这一周我见过有人把 Key 贴到工程文件里,导出 Gerber 的时候一起打包发出去了,这种坑千万别踩。
配置好之后,你可以先用一个最简单的对话测试:让 Codex 解释一段电阻分压公式。如果它能正常返回,说明模型入口通了。然后再进入 EDA 环节。这一步花十分钟,能省后面几小时的排障时间。
3. 可复制配置:Codex + 嘉立创EDA Bridge 的完整参数
这一节是全文最干的部分,我把 Codex 的 TOML 配置、Bridge 的启动脚本、以及嘉立创EDA 里需要打开的设置项全部列出来。你照着填,路径按你自己的实际目录改。
先看 Codex 的config.toml。我放在C:\Users\Administrator\.codex\config.toml,内容如下:
model = "gpt-4o" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY" wire_api = "chat"然后在系统环境变量里加一个TAOTOKEN_API_KEY,值就是你在控制台生成的 Key。这样 Codex 启动时会自动读取,不用每次输入。如果你用的是 macOS 或 Linux,把env_key对应的变量 export 到 shell 配置里就行。
接下来是嘉立创EDA Bridge。它的作用是让 Codex 能通过 HTTP 调用 EDA 的 API。我在工作目录easyeda-bridge下建了这些文件:
{ "name": "easyeda-api", "version": "1.1.28", "type": "module", "scripts": { "server": "node scripts/bridge-server.mjs" }, "dependencies": { "ws": "^8.18.0" } }这是package.json。然后scripts/bridge-server.mjs的核心逻辑是起一个 HTTP 服务,监听本地端口,收到/execute请求就把代码转发给 EDA 客户端的 WebSocket。启动命令:
pnpm install pnpm run server跑起来之后,日志里会看到EDA window registered和ping/pong记录。如果一直没注册,说明嘉立创EDA 客户端没开,或者 Bridge 的端口被占用。
嘉立创EDA 这边需要确认几个设置项:第一,客户端要登录并打开目标工程;第二,在扩展或 API 设置里允许本地 Bridge 连接;第三,确认当前文档是原理图还是 PCB,因为 API 操作是分文档类型的。我这一周踩的坑就是:Bridge 连上了,但当前焦点在原理图,我却发了一个 PCB 的铺铜指令,结果报错说找不到 PCB 文档。后来我在每次操作前都加一句确认当前文档类型的提示词,就再没出过这个问题。
还有一个关键配置是单位。嘉立创EDA 原理图坐标用的是 mil 还是 mm,PCB 用的是 mm,这两个不能混。我在约束文档里写死了一条:所有坐标参数必须带单位后缀,Codex 生成代码时也要显式声明。这样虽然啰嗦,但避免了“线画到板子外面”这种低级错误。
最后,把上面这些配置和约束写成一个easyeda-design-constraints.md,放在工作目录里。Codex 每次对话前先读这个文件,相当于给它一本操作手册。这一步做完,你的环境就算稳了。
4. 验证请求:从需求到 Gerber 的一次完整跑通
配置好了,现在跑一次完整流程。我拿 USB-C 供电小板举例,目标是:一块 2 层板,Type-C 母座输入 5V,经过 LDO 出 3.3V,带电源指示 LED 和去耦电容,最后导出 Gerber。
第一步,让 Codex 生成原理图框架。提示词模板是这样的:
当前工程:usb-c-power-board 当前文档:原理图 任务:生成 USB-C 供电电路,包含 TYPE-C-31-M-12 母座、CC1/CC2 各 5.1k 下拉、ME6211C33M5G-N LDO、输入输出电容、电源指示 LED 和限流电阻。 约束:所有网络命名用大写加下划线;坐标单位 mil;不要自动布线。Codex 会返回一段调用 EDA API 的代码,Bridge 执行后在原理图里放置器件和连线。执行完你要回读检查:CC 下拉电阻是不是接在 CC 引脚到地,LDO 的输入输出电容是不是靠近引脚。我这一周的习惯是每执行一步就截图存档,方便后面复盘。
第二步,核对封装。这是最容易出问题的地方。Type-C 母座的封装有好几种,引脚间距和焊盘尺寸不一样。我让 Codex 去查工程里已加载的封装库,列出 TYPE-C-31-M-12 对应的封装名和焊盘数。如果库里没有,就要手动导入或让 Codex 生成一个。这里有个检查点:封装焊盘数和原理图符号引脚数必须一致,否则网表会报错。
第三步,转到 PCB,布局。我让 Codex 先按功能分区:USB 接口区、电源区、指示区。然后手动微调。自动布线我只在电源和地上用,USB 差分线手动走。走完之后让 Codex 回读网络连接,确认没有未布线的网络。
第四步,DRC 检查。嘉立创EDA 的 DRC 要跑严格模式,检查项包括线宽、间距、过孔、焊盘环宽。我这一周跑下来,最常见的报错是“丝印压焊盘”和“过孔离焊盘太近”。前者改丝印位置,后者挪过孔。DRC 全绿之后,还要单独看 GND 覆铜有没有孤岛。
第五步,导出 Gerber。在嘉立创EDA 里选“制造文件导出”,格式选 Gerber RS-274X,层选顶层、底层、丝印、阻焊、钻孔。导出后用一个 Gerber 查看器打开,确认每一层都有内容,钻孔文件里的孔数和 PCB 上的过孔数一致。我这一周导出过一版,顶层丝印层是空的,原因是丝印文字被隐藏了,后来在图层设置里打开才正常。
整个流程跑通一次大概两小时,熟练之后能压到四十分钟。关键是每一步都回读验证,不要一口气跑完再看结果。
5. 常见错排查:401、local proxy failed、reading choices 这些报错怎么解
这一周我遇到的报错不少,挑几个典型的说,你大概率也会碰到。
第一个是401 Unauthorized。这个基本是 API Key 的问题。检查三处:环境变量名是不是和config.toml里的env_key一致;Key 有没有多余空格;TaoToken 控制台里这个 Key 是不是被禁用或额度用完。我有一次是复制 Key 的时候带了一个换行符,排查了半小时。解决方法是把 Key 重新粘贴一遍,用echo $TAOTOKEN_API_KEY确认输出干净。
第二个是local proxy failed。这个报错通常出现在 Codex 启动时,意思是它连不上你配置的 Base URL。先确认base_url写的是https://taotoken.net/api,不要多加斜杠或路径。然后在本机用 curl 测一下:
curl -I https://taotoken.net/api如果返回 200 或 401,说明网络通,问题在 Key;如果超时,检查本机防火墙或 DNS。注意,这里不需要任何特殊网络工具,就是正常的 HTTPS 请求。
第三个是reading choices相关的报错,比如cannot read property 'choices' of undefined。这是 Codex 解析模型返回时没拿到预期结构。原因可能是 Model ID 填错了,或者 TaoToken 那边返回了错误信息但被当成正常响应解析。解决方法是把 Model ID 换成一个确定支持的型号,然后在 Codex 里打开详细日志,看原始返回是什么。我这一周有一次是 Model ID 写成了gpt-4,但实际可用的是gpt-4o,改过来就好了。
第四个是 Bridge 连不上 EDA,日志里一直waiting for EDA window。检查嘉立创EDA 客户端是不是以管理员权限运行,Bridge 的端口是不是被其他程序占用。我用的端口是 3210,如果冲突就换一个。另外,EDA 客户端里的 API 开关要打开,不同版本位置不一样,一般在“设置-扩展”里。
第五个是 DRC 报“网络未连接”,但原理图里明明连了。这种情况多半是网表没更新。在嘉立创EDA 里执行一次“更新 PCB 网表”,把原理图的改动同步过去。如果还不行,检查原理图里有没有重复的网络标签或者悬空的引脚。
这些报错我整理成了一张对照表,你可以贴在工位上:
| 报错关键词 | 可能原因 | 解决动作 |
|---|---|---|
| 401 | Key 错误或过期 | 重新生成 Key,检查环境变量 |
| local proxy failed | Base URL 不通 | curl 测试,检查防火墙 |
| reading choices | Model ID 错误 | 换支持的型号,看原始日志 |
| waiting for EDA window | Bridge 未注册 | 开 EDA 客户端,检查端口 |
| 网络未连接 | 网表未同步 | 更新 PCB 网表 |
排查的核心思路是分层:先确认模型入口通,再确认 Bridge 通,再确认 EDA 文档状态,最后才看具体操作。不要一上来就怀疑代码。
6. 语义一致 CTA:把这一周的流程变成你的固定动作
这一周跑下来,我最大的感受是:Codex 加嘉立创EDA 的组合,真正省时间的地方不在“自动画线”,而在“把工程约束变成可执行的检查”。你不需要它一次画对,你需要它每次操作前都确认文档类型、每次生成代码都带单位、每次导出前都提醒你跑 DRC。这些动作固定下来,板子回来的成功率会高很多。
如果你也想搭一套,建议按这个顺序:先去 TaoToken 控制台生成 Key,把 Codex 的config.toml配好,用一次简单对话确认模型入口通;然后去接入文档看 Bridge 的完整接口说明,把本地服务跑起来;接着在嘉立创EDA 里开一个空工程,用我上面的提示词模板试一次放置器件和连线;最后跑一次 DRC 和 Gerber 导出,把整个链路走通。模型对话入口可以用来测试提示词效果,Coding Plan 适合你后面要长期做固件和脚本的时候用,API Keys 页面管理你的 Key,接入文档里有每个接口的参数说明。
我这一周从 USB-C 供电小板到打样文件,中间返工过两次,一次是封装引脚数不对,一次是丝印压焊盘。这两次都靠 DRC 和回读检查抓出来了。所以别跳过验证步骤,哪怕你觉得已经很熟了。硬件这东西,板子回来才发现问题,成本比多花十分钟检查高得多。