🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度
1. 任务目标与最终产物
本文要完成的事很具体:在一个真实规模的 TypeScript 仓库里,让 Claude Code 承担“依赖清理工程师”的角色,找出package.json中未被引用的依赖、清理散落在源码里的无用 import、并在删除依赖后修复随之而来的构建报错。整个过程通过 TaoToken 提供的 API 通道驱动 Claude Code,Key 的创建与 Base URL 的填写都在 TaoToken 官网 完成。
最终交付物有三样,缺一不可:
- 一份可直接粘贴进
~/.claude/settings.json的 Claude Code 配置片段,指向https://taotoken.net/api; - 一份依赖清理 diff,包含
package.json的删除行与源码 import 的修改; - 一组复跑命令,用
npm run build与npm test验证清理后仓库仍然健康。
这三样东西构成一个闭环:配置决定 Claude Code 能否连上模型,diff 是模型的实际产出,复跑命令是验收标准。任何一步缺失,任务都不算完成。
2. 操作步骤与代码
2.1 准备仓库与基线
先确认仓库处于干净状态,并记录清理前的构建基线。这一步很重要,因为后面所有“修复报错”的判断都依赖这个基线。
git status git checkout -b chore/dep-cleanup npm install npm run build 2>&1 | tee baseline-build.log npm test 2>&1 | tee baseline-test.log基线日志要保留。如果清理前构建就是失败的,那后续任何报错都不能归因于删依赖。
2.2 让 Claude Code 扫描未使用依赖
Claude Code 的优势在于它能同时读package.json、tsconfig.json和整个src/目录,而不是只做字符串匹配。给它一个明确的指令:
读取 package.json 的 dependencies 与 devDependencies, 遍历 src/ 与 scripts/ 下所有 .ts/.tsx 文件, 找出没有任何 import / require / 动态引用 / 配置文件引用的包。 输出一个表格:包名 | 类型 | 判定理由 | 置信度(高/中/低)。 不要直接修改文件,先给结论。这里的关键是“不要直接修改”。依赖清理是高危操作,先让模型给出判定表,人工过一遍再动手,比让模型一口气改完再回滚要省事得多。
2.3 生成清理 diff
确认判定表后,再让 Claude Code 执行修改。建议分两批:先删devDependencies,再删dependencies。因为运行时依赖的误删会直接导致构建失败,而开发依赖的误删通常只影响 lint 或测试。
根据上一步确认的清单: 1. 从 package.json 删除对应条目; 2. 删除源码中仅被这些包使用的 import 语句; 3. 如果某个 import 被删除后留下未使用的局部变量,一并清理; 4. 不要改动任何业务逻辑。 完成后输出 git diff。一个典型的 diff 会长这样:
diff --git a/package.json b/package.json @@ -18,8 +18,6 @@ "dependencies": { "axios": "^1.6.0", - "lodash": "^4.17.21", - "moment": "^2.29.4", "zod": "^3.22.0" }, "devDependencies": { - "@types/lodash": "^4.14.202", "typescript": "^5.3.0" }diff --git a/src/utils/format.ts b/src/utils/format.ts @@ -1,5 +1,3 @@ -import moment from 'moment'; -import _ from 'lodash'; export function formatDate(d: Date): string { - return moment(d).format('YYYY-MM-DD'); + return d.toISOString().slice(0, 10); }注意第二段 diff:删掉moment后,formatDate的实现必须替换,否则类型检查会报Cannot find module 'moment'。这正是 Claude Code 需要“修复因删依赖导致的 build 报错”的地方。
2.4 复跑构建与测试
npm install npm run build npm test如果构建通过、测试通过,清理就算成功。如果失败,把报错原文贴回 Claude Code,让它定位是哪个被删的包仍被引用,或者哪个 import 的删除破坏了类型推导。
3. TaoToken 接入与 Claude Code 配置
Claude Code 通过环境变量或settings.json读取 API 端点。要让它走 TaoToken 通道,需要先拿到 Key,再改 Base URL。
3.1 创建 API Key
打开 TaoToken 控制台,在 API Keys 页面创建一个新 Key。创建后立即复制,页面通常只展示一次。Key 的格式类似sk-开头的一串字符,具体以控制台实际显示为准。
3.2 配置 Claude Code
Claude Code 的配置写在~/.claude/settings.json。如果文件不存在就新建:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "YOUR_API_KEY", "ANTHROPIC_MODEL": "claude-sonnet-4-20250514" } }三个字段的作用分别是:ANTHROPIC_BASE_URL把请求指向 TaoToken 的 API 入口;ANTHROPIC_API_KEY填入上一步创建的 Key;ANTHROPIC_MODEL指定使用的模型 ID。模型 ID 请以 TaoToken 接入文档 中列出的可用模型为准,不同时间可选的模型会变化。
如果不想改全局配置,也可以用环境变量临时覆盖:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="YOUR_API_KEY" claude3.3 用 CC Switch 管理多套配置
如果你同时在多个项目里用不同的 Key 或模型,手动改settings.json很容易出错。CC Switch 这类配置切换工具可以管理三件套:Base URL、API Key、Model ID。把 TaoToken 的配置存成一套 profile,切换项目时一键生效,避免把生产 Key 误用到实验仓库里。
3.4 验证连通性
配置完成后,在 Claude Code 里发一条最简单的指令,比如“列出当前目录的文件”。如果模型正常返回,说明 Base URL 与 Key 都生效了。如果返回 401,检查 Key 是否复制完整;如果返回 404,检查 Base URL 是否漏了/api路径。
4. 可验证结果与失败分支
4.1 成功判据
清理完成后,以下三条命令都应返回成功:
npm run build npm test npx tsc --noEmittsc --noEmit是额外的一道保险,它只做类型检查不产出文件,能捕捉到npm run build可能因为增量编译而跳过的类型错误。
4.2 常见失败分支
分支一:删了仍被间接引用的包。比如某个包没有被src/直接 import,但被jest.config.js或.eslintrc引用。表现是测试或 lint 报Cannot find module。修复方式是把该包加回devDependencies,并在判定表里标注“配置文件引用”。
分支二:删 import 后类型推导断裂。比如删掉lodash后,某个函数的参数类型从_.Dictionary<T>变成了any,导致下游类型报错。修复方式是显式补上类型注解,而不是把包加回来。
分支三:动态引用未被识别。有些包通过require(variable)或字符串拼接的方式加载,静态扫描找不到。表现是运行时才报错。这类包建议保留,并在判定表里标注“动态引用,置信度低”。
分支四:API 返回 401/404。这属于接入层问题,不是依赖清理问题。401 查 Key,404 查 Base URL 路径。两者都不应该和依赖清理混在一起排查。
4.3 回滚
如果清理后问题太多,直接回滚分支:
git checkout main git branch -D chore/dep-cleanup依赖清理的价值在于减少安装体积和攻击面,但如果为了删两个包引入一堆类型错误,收益就不划算了。回滚不是失败,是止损。
5. 限制、成本与模型选择
5.1 静态扫描的边界
Claude Code 的依赖分析基于文件读取,它能覆盖绝大多数import场景,但对以下情况无能为力:运行时动态加载、monorepo 中跨包的隐式依赖、通过构建工具别名解析的路径。这些场景需要人工确认,不能全交给模型。
5.2 成本控制
依赖清理是一次性任务,不需要长期挂着高配模型。扫描阶段可以用推理能力较强的模型来保证判定质量,执行 diff 阶段可以用更快的模型来降低延迟。具体哪些模型可用、各自的价格,以 TaoToken 官网 和控制台的实际标价为准。本文不提供任何评测分数或排行数据,因为清理效果取决于仓库本身,不存在通用的跑分。
5.3 模型选择建议
对于 TypeScript 仓库的依赖清理,建议选择对 TypeScript 类型系统理解较好的模型。判定阶段需要模型理解import type、export *、路径别名等语法;修复阶段需要模型能读懂tsc的报错信息并给出正确的类型补丁。如果某个模型在修复阶段反复给出错误的类型注解,换一个模型比反复调 prompt 更省时间。
5.4 长期使用的配置管理
如果这个仓库会持续做依赖维护,建议把 Claude Code 的配置固化下来:在项目根目录放一份.claude/settings.json,把 Base URL 和模型 ID 写死,Key 通过环境变量注入。这样团队成员拉下代码后只需要设置自己的 Key,不用每个人都去改全局配置。Key 的管理入口在 TaoToken API Keys 页面,需要轮换时在那里操作。
依赖清理不是一劳永逸的事。每次引入新功能、删掉旧模块,都可能留下新的未使用依赖。把上面这套流程脚本化,定期跑一次,比攒半年再集中清理要轻松得多。
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度