
1. 为什么我要把 Codex 和 Draw.io 串起来画架构图如果你平时写代码、做技术方案肯定遇到过这种场景脑子里已经想清楚了一个系统架构但要把图画出来得先打开 Draw.io然后一个个拖方框、拉连线、调对齐半小时过去图还没画完。更别说画 ER 图这种实体、属性、关系都要严格对齐的图手动调布局能调到怀疑人生。Codex 是 OpenAI 出的命令行编程助手它本身能读写文件、执行命令还能通过 MCPModel Context Protocol挂载外部工具。Draw.io 有一个社区维护的 MCP Server叫next-ai-drawio/mcp-server它把 Draw.io 的绘图能力暴露成工具接口。把这两个接起来你就能用自然语言让 Codex 直接生成.drawio文件甚至导出 SVG省掉大量手工拖拽的时间。但这里有个现实问题Codex 要调模型Draw.io MCP Server 跑起来也要环境如果你同时还在用 Claude Code、Cursor、其他 CLI 工具每个工具都要单独配一套 Key 和 Base URL管理起来非常碎。我试过把 Key 散落在四五个配置文件里改一次要翻半天。所以这篇的核心思路是用 TaoToken 的统一 Key 作为模型入口在 Codex 的config.toml里一次性配好然后挂上 Draw.io MCP跑通「对话 → 生成图 → 导出 SVG」这条链路。适合谁看已经在用或准备用 Codex CLI 的开发者需要频繁画架构图、ER 图、流程图的同学手里有多个 AI 工具、想统一模型接入点的朋友。下面我会给出可直接复制的config.toml骨架并演示一次真实的绘图请求验证动作。2. TaoToken 前置统一 Key 与 Codex 的接入关系在动手改配置之前先把「谁调谁」理清楚。Codex CLI 本身是一个客户端它需要两样东西一个能访问的模型 API 端点以及一个 API Key。默认情况下它指向 OpenAI 官方但你可以通过config.toml把base_url和api_key换成任何兼容 OpenAI 接口的服务。TaoToken 在这里扮演的就是「统一模型入口」的角色。你在 TaoToken 控制台创建一个 API Key这个 Key 可以同时给 Codex、Claude Code、Cursor 等工具用不用每个工具去申请不同的凭证。它的 API 地址是https://taotoken.net/api兼容 OpenAI 的/v1/chat/completions和/v1/responses接口格式所以 Codex 只要把 base_url 指过来就能跑。具体操作路径是这样的先到 TaoToken 官网注册账号然后进控制台创建 API Key。官网地址是https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content控制台里找到「API Keys」菜单点新建复制那串sk-开头的 Key 存好。这个 Key 就是你后面填进config.toml的东西。注意API Key 只在创建时完整显示一次关掉页面就看不到了建议先粘到本地临时文件里再继续。拿到 Key 之后Codex 侧的配置就围绕两件事把模型请求指向 TaoToken把 Draw.io MCP Server 注册进去。前者靠config.toml的model_providers段后者靠codex mcp add命令。两者互不冲突可以同时生效。3. 可复制配置config.toml 骨架与 MCP 注册3.1 安装 Codex CLI如果你还没装 Codex先装。Node 环境建议 18 以上npm install -g openai/codex装完验证一下版本codex --version能打印出版本号就说明 CLI 可用了。接下来找到 Codex 的配置目录通常在~/.codex/下配置文件是config.toml。如果没有这个文件手动创建一个。3.2 config.toml 统一 Key 骨架下面这份骨架是我实测能跑通的版本你把api_key换成自己在 TaoToken 控制台创建的那串即可# ~/.codex/config.toml # 默认使用的模型提供方 model_provider taotoken # 默认模型按你账号可用的模型名填 model gpt-4o [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY wire_api chat # 可选给不同场景指定不同模型 [profiles.default] model gpt-4o model_provider taotoken这里有几个参数值得说明。base_url填https://taotoken.net/apiCodex 会自动拼接/v1/chat/completions这类路径。env_key表示 Key 从环境变量读取比直接写死在文件里安全。wire_api chat表示走 Chat Completions 协议兼容性最好。然后设置环境变量。Linux/macOS 下export TAOTOKEN_API_KEYsk-你的KeyWindows PowerShell$env:TAOTOKEN_API_KEYsk-你的Key想让它永久生效Linux/macOS 写进~/.bashrc或~/.zshrcWindows 用系统环境变量面板添加。配好后可以这样快速验证 Key 是否被读到echo $TAOTOKEN_API_KEY3.3 注册 Draw.io MCP ServerCodex 支持通过 MCP 挂载外部工具。Draw.io 的 MCP Server 用一条命令注册codex mcp add drawio -- npx -y next-ai-drawio/mcp-serverlatest这条命令的意思是新增一个名为drawio的 MCP 服务启动方式是npx -y next-ai-drawio/mcp-serverlatest。-y表示自动确认安装不用每次手动回车。第一次执行会下载包稍等一会儿。注册完检查一下列表codex mcp list你应该能看到drawio出现在列表里。如果没出现多半是 npx 下载失败可以手动跑一次npx -y next-ai-drawio/mcp-serverlatest看报错信息。提示MCP Server 是本地进程Codex 启动时会拉起它。如果你网络环境对 npm 源不友好可以先配好 npm 镜像再执行注册命令。4. 验证请求让 Codex 画一张 ER 图并导出 SVG配置就绪后进入验证环节。启动 Codex 交互模式codex进去之后先确认模型能正常回话随便问一句「你现在用的是哪个模型提供方」。如果它正常回复说明 TaoToken 的 Key 和 base_url 生效了。接着确认 MCP 工具挂载成功可以输入类似「列出你可用的工具」这样的指令正常情况下它会提到 drawio 相关的工具。然后就是正式的绘图请求。下面这段提示词可以直接复制我实测下来能生成结构完整的 ER 图你是一位专业的数据库设计师和 draw.io 绘图专家。 请帮我使用 draw.io 的方式绘制一个清晰、美观、专业的实体关系图ER Diagram要求严格遵循以下规范 1. 使用 draw.io 自带的形状 - 实体Entity使用 Entity 形状矩形带粗边框 - 属性Attribute使用 Attribute 形状椭圆形 - 关系Relationship使用 Relationship 形状菱形 2. 布局要求 - 所有实体水平或垂直对齐整齐排列 - 每个实体的属性必须排列整齐建议分为左右两列保持对称 - 属性之间间距均匀文字居中 - 实体与属性之间的连线必须从实体边框中心位置连接到属性 3. 连线样式要求 - 实体与属性的连线实线无箭头 - 实体与关系的连线根据基数使用正确符号1、N、0..1、1..* 等 - 避免连线交叉如果必须交叉请使用跳线样式 4. 整体风格 - 使用干净的现代风格实体浅蓝色填充属性白色 - 字体统一使用中文 英文实体名称 14-16pt属性 11-12pt - 所有文字水平居中 请以「用户-订单-商品」三个实体为例建模并将绘制的图片导出成 svg 格式的文件。发送之后Codex 会调用 drawio MCP 工具生成.drawio源文件并尝试导出 SVG。你会在当前工作目录下看到类似diagram.drawio和diagram.svg的文件。用浏览器打开 SVG就能看到图。实测下来第一次生成的图布局可能不够完美比如属性列间距不均匀、个别连线有轻微交叉。这属于正常现象因为模型对坐标的估算不是像素级精确的。你可以直接在对话里追加指令比如「把订单实体的属性列间距调大一点」「把用户和商品之间的连线改成跳线」让它迭代修改。相比纯手工拖拽这种「对话式微调」的效率还是高不少。导出 SVG 的好处是矢量格式放大不糊直接贴进技术文档或 Confluence 都很清晰。如果你需要 PNG也可以在提示词里改成导出 PNG。5. 本篇常见错排查跑这条链路时我踩过几个坑集中列一下方便你对照。报错一401 Unauthorized或invalid api key。这是最常见的问题九成是环境变量没生效。先确认echo $TAOTOKEN_API_KEY能打印出 Key再确认config.toml里的env_key名字和实际环境变量名完全一致大小写敏感。如果你是在 IDE 内置终端里跑 Codex注意 IDE 可能没继承你 shell 的环境变量重启 IDE 或改用系统级环境变量。报错二model not found或does not exist。说明config.toml里model字段填的模型名你的 TaoToken 账号没有权限访问。登录 TaoToken 控制台看看「模型」或「可用模型」列表里有哪些名字照着填。不同账号可用的模型范围可能不同别照抄别人的模型名。报错三codex mcp list里没有 drawio。先手动执行npx -y next-ai-drawio/mcp-serverlatest看是否能正常启动。如果卡在下载检查 npm 源如果启动报错看是不是 Node 版本太低。确认能手动启动后再重新执行codex mcp add。报错四Codex 回复正常但从不调用 drawio 工具。这通常是提示词不够明确。模型有时候会「偷懒」直接用文字描述图而不是真的调工具。你可以在提示词开头加一句「请务必调用 drawio 工具实际生成文件不要只描述」。另外确认 MCP 服务在 Codex 会话里是启用状态。报错五SVG 导出失败或文件为空。检查当前工作目录是否有写权限。有些环境下 MCP Server 的工作目录和 Codex 不一致导致文件生成到了别处。可以在提示词里指定绝对路径比如「导出到/tmp/er-diagram.svg」这样更好定位。报错六图生成了但中文乱码。这是字体问题。Draw.io 导出 SVG 时如果没嵌入字体某些查看器会显示方块。解决办法是在提示词里指定使用系统常见中文字体比如「字体使用 Microsoft YaHei 或 PingFang SC」或者导出后用支持字体嵌入的工具重新处理。排查思路总结成一句先确认 Key 通模型能回话再确认工具通MCP 列表有 drawio最后确认提示词明确要求实际调用工具。三层都过了链路基本就通了。6. 把 Key 收拢到一处长期用起来更省心走到这里你已经能用 Codex 驱动 Draw.io 生成架构图了。回头看整条链路真正花时间的其实不是画图本身而是前期把模型接入点统一好。如果每个工具都单独配 Key今天改一个明天忘一个维护成本会越来越高。我的建议是把 TaoToken 作为默认的模型入口Codex 的config.toml里只保留一份 provider 配置。这样以后你换模型、加工具都只改这一处。需要管理或新建 Key 的时候直接进控制台操作https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentAPI Keys 页面里可以随时创建和吊销。如果你主要用 Codex 做长期编码和 Agent 任务可以了解一下 Coding Plan它针对高频调用场景做了额度优化https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content。接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content里面列了各工具的配置示例遇到 base_url 或参数不确定的时候可以对照查。想先试试模型对话效果不写代码直接聊用https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content就行。最后分享一个实用技巧把常用的绘图提示词存成一个.md模板文件每次画图时让 Codex 读取这个模板再填空。比如模板里固定好形状规范、字体大小、导出格式你只需要改实体名和字段。这样既保证出图风格一致又省去每次重写长提示词的麻烦。画完的.drawio源文件记得一起提交到 Git以后改图直接改源文件比重新生成更可控。