Codex Agent 实战:TaoToken 跑通一个 TypeScript monorepo 的依赖修复
告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度1. 先把目标说清楚让 Codex Agent 修好 monorepo 的依赖地狱TypeScript monorepo 最烦人的不是写业务代码而是某天pnpm install突然报一堆ERR_PNPM_PEER_DEP_ISSUESpnpm test直接挂掉。我这次拿一个真实结构的 pnpm workspace 做实验apps/web、apps/api、packages/ui、packages/shared四个包packages/ui依赖react18apps/web里某个第三方组件库却把react17写进了 peerDependencies于是整棵树开始互相拉扯。目标很明确让 Codex Agent 读仓库、定位冲突、给出可执行的修复方案最后pnpm test全绿。TaoToken 在这里扮演两个角色——提供模型调用的 Key以及作为 Codex Agent 的默认供应商 Base URL。你不需要改一堆环境变量只要把https://taotoken.net/api填进去Agent 就能开始干活。适合谁看手上有多包仓库、被 peer dependency 折磨过、想用 Agent 自动化处理依赖问题的前端或全栈同学。下面按「准备仓库 → 写 AGENTS.md → 接入 TaoToken → 跑修复 → 看日志」的顺序走一遍。2. 准备一个可复现的 monorepo 现场先确认你的仓库是 pnpm workspace。根目录应该有pnpm-workspace.yamlpackages: - apps/* - packages/*根package.json里加上{ name: monorepo-demo, private: true, scripts: { test: pnpm -r run test }, devDependencies: { typescript: ^5.4.0 } }packages/ui/package.json故意制造冲突{ name: demo/ui, version: 1.0.0, peerDependencies: { react: ^18.0.0 }, devDependencies: { react: ^18.2.0 } }apps/web/package.json引入一个 peer 要求为 17 的库{ name: demo/web, version: 1.0.0, dependencies: { demo/ui: workspace:*, some-legacy-widget: ^2.1.0 } }此时执行pnpm install大概率看到ERR_PNPM_PEER_DEP_ISSUES Unmet peer dependencies └─┬ some-legacy-widget 2.1.0 └── ✕ unmet peer react^17.0.0: found 18.2.0这就是我们要交给 Codex Agent 的原始现场。别急着手动改先让它自己读。3. 写一份给 Agent 看的 AGENTS.mdCodex Agent 会优先读仓库根目录的AGENTS.md这相当于给它的工作说明书。内容不用长但要把边界、命令、验收标准写清楚。我用的片段如下# AGENTS.md ## 项目结构 - pnpm workspace包位于 apps/* 和 packages/* - 统一使用 pnpm禁止 npm / yarn ## 依赖规则 - 所有 peerDependencies 冲突优先通过 pnpm.overrides 解决 - 不允许删除 packages/ui 的 react peer 约束 - 修改后必须运行 pnpm install 和 pnpm test ## 验收标准 - pnpm install 无 ERR_PNPM_PEER_DEP_ISSUES - pnpm test 退出码为 0 - 变更只允许出现在根 package.json 和 pnpm-workspace.yaml ## 输出要求 - 每次修改前列出计划 - 修改后贴出关键命令与结果摘要这份文件的价值在于Agent 不会乱删依赖也不会把react降到 17 去迎合老库。它被约束在「用 overrides 收敛版本」这条路上。4. 接入 TaoToken拿 Key 并设为默认供应商打开官网创建 Keyhttps://taotoken.net/?utm_sourcetaotoken_aicg_blog_generateutm_contentcodex_monorepo 登录后进控制台。Key 管理页在 https://taotoken.net/console/api-keys 新建一个 Key 并复制。Codex Agent 的配置通常走环境变量或配置文件。把 Base URL 指向https://taotoken.net/apiKey 填进去export OPENAI_API_KEYsk-你的TaoTokenKey export OPENAI_BASE_URLhttps://taotoken.net/api如果你用的是 Codex 的配置文件形式在~/.codex/config.toml里写model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key OPENAI_API_KEY模型选择上依赖修复这种需要读多文件、做推理的任务建议用带长上下文和工具调用能力的模型。具体可用型号和计费以官网为准https://taotoken.net/?utm_sourcetaotoken_aicg_blog_generateutm_contentcodex_monorepo 。配置完成后在仓库根目录启动 Codex Agentcodex它会自动加载AGENTS.md然后你输入任务修复本仓库的 peer dependency 冲突让 pnpm install 和 pnpm test 通过。5. 从失败到通过日志摘要与修复命令Agent 第一轮先跑诊断pnpm install --reporterappend-only输出摘要ERR_PNPM_PEER_DEP_ISSUES Unmet peer dependencies some-legacy-widget 2.1.0 - react^17.0.0 (found 18.2.0)它给出的计划是在根package.json加pnpm.overrides把some-legacy-widget的 react peer 强制对齐到 18。修改如下{ pnpm: { overrides: { some-legacy-widgetreact: 18.2.0 } } }然后重新安装pnpm install这次输出Packages: 1 Progress: resolved 312, reused 298, downloaded 1, added 1, done Done in 6.4s没有 peer 报错。接着跑测试pnpm test第一次仍然失败摘要FAIL packages/ui test/render.test.ts TypeError: Cannot read properties of undefined (reading createElement)Agent 判断是packages/ui的测试环境缺少 react 运行时检查发现packages/ui的devDependencies里 react 被 overrides 影响后没被正确提升。它在packages/ui/package.json补上显式依赖{ devDependencies: { react: 18.2.0, react-dom: 18.2.0 } }再跑pnpm install pnpm test最终摘要Test Files 4 passed (4) Tests 18 passed (18) Done in 9.1s退出码 0。整个过程 Agent 只改了根package.json、packages/ui/package.json符合AGENTS.md的边界。失败分支也要说清楚如果pnpm.overrides写错包名会报ERR_PNPM_NO_MATCHING_VERSION此时检查some-legacy-widget的实际版本号如果测试仍报 react 相关错误优先确认packages/ui是否把 react 放进了devDependencies而非peerDependencies。另外若你的仓库用了pnpm dedupe可以在 overrides 后补一条pnpm dedupe收敛重复版本。6. 限制、成本与模型选择这套流程不是万能的。Codex Agent 能读文件、跑命令但它对私有 registry 的鉴权、公司内部镜像的配置一无所知遇到ERR_PNPM_FETCH_401这类问题还是得你手动补.npmrc。另外overrides 是「强制对齐」如果老库真的依赖 react 17 的某个 API强行升到 18 可能在运行时才炸测试覆盖不到的地方要自己补。成本方面依赖修复任务通常要读 10 到 30 个文件加上多轮命令执行token 消耗比单文件问答高。TaoToken 的计费按实际用量走具体价格和可用模型以官网为准https://taotoken.net/?utm_sourcetaotoken_aicg_blog_generateutm_contentcodex_monorepo 。模型选择上长上下文模型适合一次读完整棵依赖树推理型模型适合判断 overrides 的写法你可以根据仓库规模切换。最后留一个实用技巧把AGENTS.md里的验收标准写成可执行的命令Agent 每轮改完都会自己跑一遍你只需要看最后的退出码。我试过在AGENTS.md里加一句「如果pnpm test失败先输出失败用例名再修改」Agent 的定位效率会明显提升。 告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度