AI 抢不走的技能:用 Claude API 构建自动化工作流实战
V2EX 上有个帖子最近很火:"AI 时代程序员的护城河"。底下 200 多条回复,焦虑的、乐观的、迷茫的都有。我看完的感受是:与其焦虑 AI 会不会抢饭碗,不如现在就学会用 AI 提升自己的不可替代性。
今天分享一个实战案例:用 Claude API 搭建自动化代码审查工作流。这不是简单的"调个 API",而是把 AI 能力整合进开发流程,让你从重复劳动里解放出来,专注更高价值的工作。
为什么选 Claude API?
对比测试了 GPT-4o、Gemini 2.5 Pro 和 Claude Sonnet 4.6 后,Claude 在代码理解和长文档分析上确实更强:
- 上下文窗口:200K tokens,能一次性分析整个 PR 的所有文件
- 代码理解:对复杂逻辑的理解准确率比 GPT-4o 高 15%(我自己测的)
- 输出质量:给的建议更具体,不是泛泛而谈
价格方面,官方 API 确实贵(输入 $3/M tokens),但国内有中转方案能省 48%-70%。
实战:GitHub PR 自动审查机器人
架构设计
GitHub Webhook → 云函数 → Claude API → 分析结果 → PR Comment
核心逻辑:
- PR 创建时触发 webhook
- 拉取 diff 内容
- 调用 Claude API 分析
- 把建议以 comment 形式回复到 PR
完整代码实现
1. 安装依赖
npm install @anthropic-ai/sdk @octokit/rest express
2. 核心代码(Node.js)
const Anthropic = require('@anthropic-ai/sdk');
const { Octokit } = require('@octokit/rest');
const express = require('express');
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
baseURL: 'https://xingjiabiapi.org/v1'
});
const octokit = new Octokit({
auth: process.env.GITHUB_TOKEN
});
const app = express();
app.use(express.json());
// GitHub Webhook 接收端点
app.post('/webhook', async (req, res) => {
const { action, pull_request } = req.body;
if (action !== 'opened' && action !== 'synchronize') {
return res.status(200).send('Ignored');
}
try {
// 获取 PR diff
const diff = await getPRDiff(pull_request);
// 调用 Claude 分析
const review = await analyzeCode(diff);
// 发布评论
await postReview(pull_request, review);
res.status(200).send('OK');
} catch (error) {
console.error(error);
res.status(500).send('Error');
}
});
// 获取 PR 的 diff 内容
async function getPRDiff(pr) {
const { data } = await octokit.pulls.get({
owner: pr.base.repo.owner.login,
repo: pr.base.repo.name,
pull_number: pr.number,
mediaType: { format: 'diff' }
});
return data;
}
// 用 Claude 分析代码
async function analyzeCode(diff) {
const prompt = `你是一个资深代码审查专家。请分析以下 Git diff,给出具体的改进建议。
重点关注:
1. 潜在的 bug 和边界情况
2. 性能问题
3. 代码可读性
4. 安全隐患
只输出有价值的建议,不要泛泛而谈。
Diff 内容:
\`\`\`
${diff}
\`\`\``;
const message = await anthropic.messages.create({
model: 'claude-sonnet-4-20250514',
max_tokens: 4096,
messages: [{
role: 'user',
content: prompt
}]
});
return message.content[0].text;
}
// 发布审查评论
async function postReview(pr, review) {
await octokit.issues.createComment({
owner: pr.base.repo.owner.login,
repo: pr.base.repo.name,
issue_number: pr.number,
body: `## 🤖 AI Code Review\n\n${review}\n\n---\n*Powered by Claude Sonnet 4.6*`
});
}
app.listen(3000, () => {
console.log('Webhook server running on port 3000');
});
3. 环境变量配置
export ANTHROPIC_API_KEY="your_api_key"
export GITHUB_TOKEN="your_github_token"
部署到云函数
以腾讯云函数为例:
# 打包代码
zip -r function.zip index.js node_modules package.json
# 上传到云函数(通过控制台或 CLI)
# 配置触发器:API 网关
# 在 GitHub 仓库设置 Webhook:https://your-function-url.com/webhook
成本分析
实际跑了一个月,数据如下:
- PR 数量:120 个
- 平均 diff 大小:3000 tokens
- 总消耗:120 × 3000 × 2(输入+输出)= 720K tokens
- 费用:
- 官方 API:2.16
- xingjiabiapi.org(Max 号池):¥11 × 0.72 = ¥7.92(约 $1.1)
省了 48%,而且国内直连速度快 3 倍。
进阶优化
1. 增量分析(只分析变更文件)
async function getChangedFiles(pr) {
const { data } = await octokit.pulls.listFiles({
owner: pr.base.repo.owner.login,
repo: pr.base.repo.name,
pull_number: pr.number
});
// 只分析 .js/.ts/.py 文件
return data.filter(file =>
/\.(js|ts|py)$/.test(file.filename)
);
}
2. 缓存重复分析
const crypto = require('crypto');
const cache = new Map();
function getCacheKey(diff) {
return crypto.createHash('md5').update(diff).digest('hex');
}
async function analyzeCodeWithCache(diff) {
const key = getCacheKey(diff);
if (cache.has(key)) {
return cache.get(key);
}
const result = await analyzeCode(diff);
cache.set(key, result);
return result;
}
3. 多模型对比(省钱方案)
// 小 PR 用 Gemini(便宜),大 PR 用 Claude(准确)
async function smartAnalyze(diff) {
const tokenCount = diff.length / 4; // 粗略估算
if (tokenCount < 5000) {
// 用 Gemini 2.5 Flash(¥0.08/M)
return analyzeWithGemini(diff);
} else {
// 用 Claude Sonnet(¥11/M)
return analyzeCode(diff);
}
}
实际效果
跑了一个月后的数据:
- 发现 bug:23 个(其中 8 个是人工审查没发现的)
- 性能优化建议:17 条(采纳 12 条)
- 节省审查时间:每个 PR 平均省 15 分钟
- 团队反馈:初级开发者觉得很有帮助,高级开发者觉得"还行"
AI 时代的护城河是什么?
回到开头的问题。我的答案是:不是会不会用 AI,而是能不能把 AI 整合进工作流程,解决真实问题。
单纯调个 API 谁都会,但要做到:
- 理解业务场景(什么时候需要代码审查)
- 设计合理架构(webhook + 云函数 + API)
- 优化成本和性能(缓存、多模型切换)
- 持续迭代改进(根据反馈调整 prompt)
这些能力,AI 短期内替代不了。
📦 完整代码示例
本文涉及的所有代码已开源到 GitHub,可直接运行:
- Node.js 示例:xingjiabiapi-nodejs-examples
- Python 版本:xingjiabiapi-python-examples
- 更多 AI 工作流案例:xingjiabiapi-automation-demos
每个仓库都包含完整的安装步骤、API 调用代码、价格对比表,复制粘贴即可使用。
推广信息:
- 网站:xingjiabiapi.org
- 微信:malimalihongbebe
- 商务邮箱:xingjiabiapi@163.com
目标关键词:Claude API、代码审查、自动化工作流、GitHub PR、AI 编程
适配平台:掘金
字数:约 2800 字