1. 为什么“我用 AI 提效了”这句话在面试里站不住脚
Claude Code 是 Anthropic 推出的终端级 AI 编程代理,能直接读写你本地的代码库、跑命令、改文件、执行测试。AI 结对编程则是把它当成一个随时在线的搭档:你描述任务,它读代码、给方案、落 diff,你负责判断和拍板。这套东西适合谁?适合已经有一定工程经验、准备跳槽或晋升的后端/全栈开发者——因为只有你能判断它给的改动到底对不对。
但问题来了。面试官问“你怎么用 AI 提效的”,大部分人只能回答“感觉快了不少”“写样板代码省时间”。这种主观感受在简历和晋升答辩里几乎零价值,因为它不可验证、不可复现、也无法归因。真正能写进简历的,是一条工程证据链:哪个任务、改前多久、改后多久、AI 生成的 diff 你采纳了多少、哪些被驳回、会话日志在哪。
这篇就按这个目标来。我会用一个真实的后端重构场景,把 Claude Code 的配置骨架、TaoToken 统一通道接入、以及一组可执行的验证动作串起来,让你最后手里能拿到三样东西:一份可复制的settings.json和CLAUDE.md、一份任务耗时对比表、一份 diff 采纳率记录。这些才是“提效”从感受变成证据的关键。
2. 前置准备:用 TaoToken 统一 Key 打通 Claude Code 通道
Claude Code 默认走 Anthropic 官方通道,但在国内做开发时,网络和计费经常是第一个卡点。我的做法是用 TaoToken 作为统一 API 通道,一个 Key 覆盖模型对话和编码场景,省得在多个平台之间来回切。
TaoToken 官网是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 入口是 https://taotoken.net/api 。注意 API 地址不带 UTM 参数,配置时别把查询串一起粘进去。
你需要先拿到 Key。登录后进控制台,在 API Keys 页面创建一个新 Key,复制出来。这个 Key 后面会写进环境变量,不要硬编码到任何提交到 Git 的文件里。
注意:Key 一旦泄露要立刻在控制台吊销重建。我习惯给不同项目建不同的 Key,方便按项目统计用量,出问题也能快速定位是哪个环境在跑。
拿到 Key 之后,设置环境变量。Linux/macOS 下:
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="sk-你的TaoToken密钥"Windows PowerShell:
$env:ANTHROPIC_BASE_URL="https://taotoken.net/api" $env:ANTHROPIC_API_KEY="sk-你的TaoToken密钥"如果你想让配置持久化,写进~/.zshrc或~/.bashrc。这一步做完,Claude Code 就会把请求发到 TaoToken 通道,而不是官方地址。想先验证模型是否通,可以直接用模型对话页面发一条测试消息,确认 Key 有效再往下走。
3. 可复制配置:settings.json 与 CLAUDE.md 骨架
Claude Code 的行为很大程度上由两个文件决定:settings.json管权限和工具开关,CLAUDE.md管项目上下文和协作约定。这两个文件配好了,AI 结对编程的稳定性会明显不一样。
3.1 settings.json:把危险操作挡在外面
在项目根目录建.claude/settings.json:
{ "permissions": { "allow": [ "Read", "Glob", "Grep", "Bash(git status)", "Bash(git diff:*)", "Bash(npm test:*)", "Bash(pytest:*)" ], "deny": [ "Bash(rm -rf:*)", "Bash(git push:*)", "Bash(curl:*)", "Write(.env*)" ] }, "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api" } }这里的逻辑是:读代码、查文件、跑测试这些只读或可回滚的操作放开;删除、推送、外网请求、写环境变量文件这些高风险动作直接拒绝。我试过不设 deny 的版本,结果它有一次想直接git push,虽然被我拦下了,但那种心跳加速的感觉不想再来第二次。
3.2 CLAUDE.md:让 AI 懂你的项目规矩
CLAUDE.md放在项目根目录,Claude Code 每次启动会读它。骨架如下:
# 项目约定 ## 技术栈 - 语言:Python 3.11 / TypeScript 5.3 - 框架:FastAPI / React - 测试:pytest + coverage,前端 vitest ## 代码规范 - 提交前必须跑 `pytest -q`,覆盖率不低于 80% - 新增函数必须有类型注解 - 禁止在业务代码里直接 print,用 logging ## 协作方式 - 改代码前先说明改动范围和影响文件 - 每次只处理一个任务,不要顺手重构无关模块 - 生成的 diff 我会逐块 review,被驳回的要说明原因 ## 禁止事项 - 不要修改 migrations 目录下的历史文件 - 不要引入新的第三方依赖,除非我明确要求这份文件的价值在于:它把“我作为人类搭档的偏好”固化下来,减少每次对话都要重复交代的成本。实测下来,有了CLAUDE.md之后,AI 生成的 diff 一次通过率会高不少,因为它知道边界在哪。
4. 验证请求:跑通一次真实重构并记录证据
配置就绪后,用一个真实任务来验证。我选的是“给订单服务加一个批量查询接口,并补测试”。这个任务有明确的输入输出,耗时容易测量,diff 也方便统计。
4.1 记录基线耗时
先手动做一遍,或者用你之前类似任务的耗时作为基线。假设手动实现加测试是 90 分钟。记在表格里:
| 任务 | 手动耗时 | AI 结对耗时 | diff 采纳率 |
|---|---|---|---|
| 批量查询接口 + 测试 | 90 min | 待填 | 待填 |
4.2 发起任务并留存会话
在项目目录下启动 Claude Code,输入任务描述。关键是描述要具体:
在 order_service/api.py 里新增一个 POST /orders/batch 接口, 接收 order_ids 列表,返回对应订单详情。 要求: 1. 复用现有的 OrderRepository.get_by_ids 方法 2. 加输入校验,空列表返回 400 3. 在 tests/test_order_api.py 补三个用例:正常、空列表、部分不存在 4. 不要改动其他文件Claude Code 会读代码、给方案、落 diff。这时候你要做的是逐块 review,而不是无脑接受。每接受一块记一次,每驳回一块也记一次,驳回时让它说明原因或者你自己在日志里标注。
会话日志建议导出保存。Claude Code 的会话记录通常在~/.claude/projects/下,按项目路径分目录。你可以定期把关键会话复制到项目的docs/ai-sessions/里,作为证据留存。
4.3 计算采纳率
假设这次 AI 生成了 12 个 diff 块,你接受了 9 个,驳回了 3 个(比如它想引入一个新依赖、改了一个无关的日志格式、测试用例断言写得太松)。采纳率就是 9/12 = 75%。
这个数字比“感觉快”有说服力得多。它说明:AI 产出的代码有四分之三可以直接用,四分之一需要人工干预。面试时你可以进一步解释驳回的原因,展示你的判断力。
4.4 对比耗时
这次 AI 结对实际用了 35 分钟(含 review 时间)。填进表格:
| 任务 | 手动耗时 | AI 结对耗时 | diff 采纳率 |
|---|---|---|---|
| 批量查询接口 + 测试 | 90 min | 35 min | 75% |
提效比例约 61%。这个数字可以写进简历,但一定要附上任务描述和验证方式,否则面试官会怀疑你是编的。
5. 本篇常见错排查
5.1 请求 401 或鉴权失败
最常见的原因是 Key 没生效或者 Base URL 写错。检查两点:ANTHROPIC_API_KEY是否以sk-开头且没有多余空格;ANTHROPIC_BASE_URL是否是https://taotoken.net/api,不要带末尾斜杠,也不要带 UTM 参数。改完环境变量后新开一个终端窗口再试,因为旧窗口可能还缓存着旧值。
5.2 Claude Code 不读 CLAUDE.md
确认文件名大小写完全一致,必须是CLAUDE.md,放在项目根目录。如果你在子目录里启动,它可能读不到。另外,CLAUDE.md里的内容不要太长,超过几百行它会选择性忽略。把最关键的约定放前面。
5.3 diff 采纳率统计口径不一致
有人把“AI 生成但自己改了两行”也算作采纳,有人算作驳回。建议统一口径:只要你对 AI 的原始输出做了实质性修改,就算驳回。这样统计出来的数字更保守,也更经得起追问。
5.4 会话日志找不到
不同版本的 Claude Code 日志路径可能不同。如果~/.claude/projects/下没有,可以在启动时加--verbose看它把日志写到哪。实在找不到就手动记录:每次任务开始和结束时间、任务描述、采纳/驳回块数,用一个简单的 Markdown 表格维护,效果一样。
5.5 提效数字被质疑
如果面试官问“你这个 61% 是怎么算的”,你要能立刻说出:任务是什么、手动基线怎么来的、AI 耗时是否包含 review、采纳率怎么统计。所以前面让你留表格和日志,就是为了这一刻。没有这些,数字就是空中楼阁。
6. 把证据链变成简历语言
到这里你手里应该有三样东西:配置骨架、耗时对比表、diff 采纳率记录。接下来是怎么把它们写进简历。
不要写“熟悉 Claude Code”,而是写具体的:在订单服务重构中,通过 Claude Code 完成批量查询接口开发与测试补充,diff 采纳率 75%,任务耗时从 90 分钟降至 35 分钟,会话日志与 review 记录可查。这样一句话,比十句“精通 AI 编程”都有分量。
如果你还在准备更长期的编码场景,比如让 AI 参与多轮迭代和 Agent 式任务,可以了解 Coding Plan 的用法,它更适合持续性的项目协作。想先验证模型能力,模型对话页面可以直接试。接入过程中遇到鉴权或配置问题,API Keys 页面和接入文档里有更细的说明。
最后说个我踩过的坑:一开始我为了追求高采纳率,把任务描述写得特别细,细到几乎等于自己写了一遍伪代码。结果采纳率是上去了,但提效比例反而下降,因为写描述的时间也算成本。后来我调整策略,描述只给边界和验收标准,具体实现交给 AI,采纳率降到 70% 左右,但整体耗时更短。这个取舍本身,也是可以写进复盘里的工程判断。