把 Claude 接进你的工作流:从命令行到 CI/CD 的自动化实战指南
Claude 工作流自动化教程|附完整命令
在日常开发、运营、写作、数据处理或知识管理中,我们经常会遇到大量重复性任务:整理需求文档、生成代码、检查 Bug、编写测试、总结会议纪要、生成周报、批量处理 Markdown 文件、分析日志、生成 SQL、审查 Pull Request 等。
如果每一项都手动完成,不仅效率低,而且容易出错。借助 Claude,我们可以把这些重复流程拆解成标准化任务,再通过命令行、脚本、Git Hooks、CI/CD 或自动化调度工具串联起来,形成一套可复用的工作流。
本文将以「Claude 工作流自动化」为主题,系统介绍如何在本地和项目中使用 Claude 构建自动化流程,并附上完整命令示例,方便你直接复制使用。
一、什么是 Claude 工作流自动化?
Claude 工作流自动化,简单来说,就是把 Claude 从一个“聊天助手”变成一个“可被调用的自动化执行节点”。
传统使用方式是:
人输入问题 → Claude 返回答案 → 人手动复制结果 → 人继续处理
自动化之后可以变成:
脚本读取文件 → 调用 Claude 分析 → 自动生成结果文件 → 自动提交 / 通知 / 进入下一步流程
例如:
- 自动总结一份长文档;
- 自动为代码生成单元测试;
- 自动审查 Git diff;
- 自动把会议录音转写文本整理成会议纪要;
- 自动生成接口文档;
- 自动分析报错日志并给出修复建议;
- 自动根据需求文档拆分开发任务;
- 自动将 Markdown 批量翻译成英文;
- 自动在 CI 中检查代码质量。
这种方式的核心价值是:把一次性的 AI 对话,沉淀成可重复执行的标准流程。
二、准备工作
在开始之前,你需要准备以下环境:
- Node.js 或 Python 环境;
- 一个可用的 Claude API Key;
- 一个支持命令行调用的终端;
- 一个项目目录;
- 基础的 Shell 脚本能力。
下面以 macOS / Linux 环境为主进行说明,Windows 用户可以使用 WSL、PowerShell 或 Git Bash。
三、安装基础工具
1. 安装 Node.js
如果你的电脑还没有安装 Node.js,可以使用以下命令安装。
macOS 推荐使用 Homebrew:
brew install node
Ubuntu / Debian:
sudo apt update
sudo apt install -y nodejs npm
检查版本:
node -v
npm -v
如果你更喜欢使用 Python,也可以安装 Python 环境:
python3 --version
pip3 --version
四、配置 Claude API Key
首先,你需要在 Anthropic 控制台获取 API Key。获取之后,不建议直接写进代码,而是通过环境变量管理。
1. 临时设置环境变量
export ANTHROPIC_API_KEY="你的Claude_API_Key"
这种方式只在当前终端会话中有效。
2. 写入 Shell 配置文件
如果你使用的是 zsh:
echo 'export ANTHROPIC_API_KEY="你的Claude_API_Key"' >> ~/.zshrc
source ~/.zshrc
如果你使用的是 bash:
echo 'export ANTHROPIC_API_KEY="你的Claude_API_Key"' >> ~/.bashrc
source ~/.bashrc
检查是否配置成功:
echo $ANTHROPIC_API_KEY
注意:不要把 API Key 提交到 Git 仓库中,也不要写入公开脚本。
五、创建一个 Claude 自动化项目
我们先创建一个演示项目,用来存放脚本、提示词模板和输出结果。
mkdir claude-workflow-demo
cd claude-workflow-demo
初始化项目:
npm init -y
安装 Anthropic SDK:
npm install @anthropic-ai/sdk dotenv
创建目录结构:
mkdir prompts inputs outputs scripts
touch .env
touch scripts/claude.js
推荐目录结构如下:
claude-workflow-demo/
├── inputs/ # 输入文件
├── outputs/ # 输出文件
├── prompts/ # 提示词模板
├── scripts/ # 自动化脚本
├── .env # 环境变量
├── package.json
└── package-lock.json
六、编写第一个 Claude 调用脚本
先在 .env 中写入 API Key:
echo 'ANTHROPIC_API_KEY=你的Claude_API_Key' > .env
然后编辑 scripts/claude.js:
cat > scripts/claude.js <<'EOF'
import 'dotenv/config';
import Anthropic from '@anthropic-ai/sdk';
import fs from 'fs';
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
async function main() {
const input = process.argv.slice(2).join(' ');
if (!input) {
console.error('请提供要发送给 Claude 的内容');
process.exit(1);
}
const message = await anthropic.messages.create({
model: 'claude-3-5-sonnet-latest',
max_tokens: 2000,
messages: [
{
role: 'user',
content: input,
},
],
});
const text = message.content
.filter(item => item.type === 'text')
.map(item => item.text)
.join('\n');
console.log(text);
}
main().catch(err => {
console.error(err);
process.exit(1);
});
EOF
由于上面使用了 ES Module,需要修改 package.json:
npm pkg set type=module
测试调用:
node scripts/claude.js "请用三句话解释什么是工作流自动化"
如果返回正常,说明最基础的 Claude 命令行调用已经打通。
七、自动总结文档工作流
假设我们有一份长文档,需要自动总结为摘要、重点和待办事项。
创建输入文件:
cat > inputs/article.md <<'EOF'
这里是一篇很长的文章内容。
它可能包含产品需求、会议讨论、技术方案或业务分析。
我们希望 Claude 自动将它整理成结构化摘要。
EOF
创建提示词模板:
cat > prompts/summarize.md <<'EOF'
你是一名专业的信息整理助手。
请阅读以下内容,并按照 Markdown 格式输出:
## 一句话总结
用一句话概括全文。
## 核心要点
列出 5 条以内核心要点。
## 重要细节
列出值得关注的细节。
## 后续行动
列出可执行的待办事项。
以下是原文:
EOF
创建自动总结脚本:
cat > scripts/summarize.js <<'EOF'
import 'dotenv/config';
import Anthropic from '@anthropic-ai/sdk';
import fs from 'fs';
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
const inputFile = process.argv[2];
const outputFile = process.argv[3] || 'outputs/summary.md';
if (!inputFile) {
console.error('用法:node scripts/summarize.js <输入文件> <输出文件>');
process.exit(1);
}
const prompt = fs.readFileSync('prompts/summarize.md', 'utf-8');
const content = fs.readFileSync(inputFile, 'utf-8');
async function main() {
const message = await anthropic.messages.create({
model: 'claude-3-5-sonnet-latest',
max_tokens: 3000,
messages: [
{
role: 'user',
content: `${prompt}\n\n${content}`,
},
],
});
const result = message.content
.filter(item => item.type === 'text')
.map(item => item.text)
.join('\n');
fs.writeFileSync(outputFile, result, 'utf-8');
console.log(`总结已生成:${outputFile}`);
}
main().catch(err => {
console.error(err);
process.exit(1);
});
EOF
执行命令:
node scripts/summarize.js inputs/article.md outputs/article-summary.md
查看结果:
cat outputs/article-summary.md
这样,一个“自动总结文档”的工作流就完成了。
八、自动生成代码注释工作流
在开发项目中,我们经常需要给一段代码补充注释、说明函数意图,或者生成 README 文档。Claude 很适合做这类理解型任务。
创建示例代码:
cat > inputs/example.js <<'EOF'
function debounce(fn, delay) {
let timer = null;
return function (...args) {
if (timer) clearTimeout(timer);
timer = setTimeout(() => {
fn.apply(this, args);
}, delay);
};
}
export default debounce;
EOF
创建提示词:
cat > prompts/code-comment.md <<'EOF'
你是一名资深前端工程师。
请阅读下面的代码,并完成以下任务:
1. 为代码添加清晰的中文注释;
2. 解释代码的用途;
3. 给出一个实际使用示例;
4. 指出可能的注意事项。
请使用 Markdown 输出。
代码如下:
EOF
创建脚本:
cat > scripts/code-comment.js <<'EOF'
import 'dotenv/config';
import Anthropic from '@anthropic-ai/sdk';
import fs from 'fs';
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
const inputFile = process.argv[2];
const outputFile = process.argv[3] || 'outputs/code-comment.md';
if (!inputFile) {
console.error('用法:node scripts/code-comment.js <代码文件> <输出文件>');
process.exit(1);
}
const prompt = fs.readFileSync('prompts/code-comment.md', 'utf-8');
const code = fs.readFileSync(inputFile, 'utf-8');
async function main() {
const message = await anthropic.messages.create({
model: 'claude-3-5-sonnet-latest',
max_tokens: 3000,
messages: [
{
role: 'user',
content: `${prompt}\n\n\`\`\`\n${code}\n\`\`\``,
},
],
});
const result = message.content
.filter(item => item.type === 'text')
.map(item => item.text)
.join('\n');
fs.writeFileSync(outputFile, result, 'utf-8');
console.log(`代码说明已生成:${outputFile}`);
}
main().catch(err => {
console.error(err);
process.exit(1);
});
EOF
执行:
node scripts/code-comment.js inputs/example.js outputs/example-comment.md
九、自动审查 Git Diff
这是开发团队中非常实用的工作流:每次提交前,让 Claude 自动审查当前改动,指出潜在问题。
创建提示词:
cat > prompts/review-diff.md <<'EOF'
你是一名严谨的资深代码审查工程师。
请审查以下 Git Diff,并按照下面结构输出:
## 总体评价
简要说明这次改动的质量。
## 潜在问题
列出可能的 Bug、边界条件、安全风险或性能问题。
## 可改进建议
给出具体、可执行的修改建议。
## 是否建议提交
给出“建议提交”或“暂不建议提交”,并说明原因。
Git Diff 如下:
EOF
创建审查脚本:
cat > scripts/review-diff.js <<'EOF'
import 'dotenv/config';
import Anthropic from '@anthropic-ai/sdk';
import { execSync } from 'child_process';
import fs from 'fs';
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
const outputFile = process.argv[2] || 'outputs/review.md';
function getGitDiff() {
try {
return execSync('git diff --cached', { encoding: 'utf-8' });
} catch {
return '';
}
}
async function main() {
const diff = getGitDiff();
if (!diff.trim()) {
console.log('没有检测到暂存区改动,请先执行 git add。');
process.exit(0);
}
const prompt = fs.readFileSync('prompts/review-diff.md', 'utf-8');
const message = await anthropic.messages.create({
model: 'claude-3-5-sonnet-latest',
max_tokens: 4000,
messages: [
{
role: 'user',
content: `${prompt}\n\n\`\`\`diff\n${diff}\n\`\`\``,
},
],
});
const result = message.content
.filter(item => item.type === 'text')
.map(item => item.text)
.join('\n');
fs.writeFileSync(outputFile, result, 'utf-8');
console.log(`代码审查报告已生成:${outputFile}`);
}
main().catch(err => {
console.error(err);
process.exit(1);
});
EOF
使用方法:
git add .
node scripts/review-diff.js outputs/review.md
cat outputs/review.md
如果你希望把它接入 Git 提交流程,可以使用 Husky。
安装 Husky:
npm install -D husky
npx husky init
创建 pre-commit 钩子:
cat > .husky/pre-commit <<'EOF'
#!/bin/sh
node scripts/review-diff.js outputs/review.md
EOF
增加执行权限:
chmod +x .husky/pre-commit
之后每次提交前,都会自动生成代码审查报告:
git add .
git commit -m "feat: add debounce utility"
十、批量处理 Markdown 文件
如果你维护一个文档站,经常需要批量优化 Markdown,比如统一标题、生成摘要、改写语气、翻译成英文等。
创建批处理提示词:
cat > prompts/polish-markdown.md <<'EOF'
你是一名专业中文技术编辑。
请优化以下 Markdown 文档,要求:
1. 保留原有 Markdown 结构;
2. 修正错别字和不通顺表达;
3. 提升文章逻辑和可读性;
4. 不要改变原文的技术含义;
5. 输出优化后的完整 Markdown。
原文如下:
EOF
创建批量脚本:
cat > scripts/batch-polish.js <<'EOF'
import 'dotenv/config';
import Anthropic from '@anthropic-ai/sdk';
import fs from 'fs';
import path from 'path';
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
const inputDir = process.argv[2] || 'inputs/docs';
const outputDir = process.argv[3] || 'outputs/docs';
if (!fs.existsSync(outputDir)) {
fs.mkdirSync(outputDir, { recursive: true });
}
const prompt = fs.readFileSync('prompts/polish-markdown.md', 'utf-8');
async function polishFile(filePath) {
const content = fs.readFileSync(filePath, 'utf-8');
const message = await anthropic.messages.create({
model: 'claude-3-5-sonnet-latest',
max_tokens: 5000,
messages: [
{
role: 'user',
content: `${prompt}\n\n${content}`,
},
],
});
return message.content
.filter(item => item.type === 'text')
.map(item => item.text)
.join('\n');
}
async function main() {
const files = fs
.readdirSync(inputDir)
.filter(file => file.endsWith('.md'));
for (const file of files) {
const inputPath = path.join(inputDir, file);
const outputPath = path.join(outputDir, file);
console.log(`正在处理:${inputPath}`);
const result = await polishFile(inputPath);
fs.writeFileSync(outputPath, result, 'utf-8');
console.log(`已输出:${outputPath}`);
}
console.log('全部处理完成');
}
main().catch(err => {
console.error(err);
process.exit(1);
});
EOF
准备测试目录:
mkdir -p inputs/docs
cat > inputs/docs/test.md <<'EOF'
# 这是一个测试文档
这个文档主要是为了测试claude批量处理markdown能力,里面有一些不太通顺的表达。
EOF
执行批量优化:
node scripts/batch-polish.js inputs/docs outputs/docs
查看结果:
cat outputs/docs/test.md
十一、把常用命令写入 package.json
为了避免每次输入很长的命令,可以把常用流程写入 package.json。
执行以下命令:
npm pkg set scripts.ask="node scripts/claude.js"
npm pkg set scripts.summary="node scripts/summarize.js inputs/article.md outputs/article-summary.md"
npm pkg set scripts.comment="node scripts/code-comment.js inputs/example.js outputs/example-comment.md"
npm pkg set scripts.review="node scripts/review-diff.js outputs/review.md"
npm pkg set scripts.polish="node scripts/batch-polish.js inputs/docs outputs/docs"
之后可以这样调用:
npm run ask -- "请解释一下 API 网关的作用"
npm run summary
npm run comment
npm run review
npm run polish
这样一来,Claude 就不再只是一个问答工具,而是变成了项目中的自动化命令。
十二、接入 GitHub Actions
如果你的项目托管在 GitHub,可以让 Claude 在 Pull Request 中自动生成审查报告或变更摘要。
创建工作流目录:
mkdir -p .github/workflows
创建 GitHub Actions 文件:
cat > .github/workflows/claude-summary.yml <<'EOF'
name: Claude PR Summary
on:
pull_request:
types: [opened, synchronize, reopened]
jobs:
summary:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm install
- name: Generate diff
run: |
git diff origin/${{ github.base_ref }}...HEAD > pr.diff
- name: Generate Claude summary
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
node scripts/ci-pr-summary.js pr.diff outputs/pr-summary.md
- name: Upload summary artifact
uses: actions/upload-artifact@v4
with:
name: claude-pr-summary
path: outputs/pr-summary.md
EOF
然后创建 CI 脚本:
cat > scripts/ci-pr-summary.js <<'EOF'
import 'dotenv/config';
import Anthropic from '@anthropic-ai/sdk';
import fs from 'fs';
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
const diffFile = process.argv[2];
const outputFile = process.argv[3] || 'outputs/pr-summary.md';
if (!diffFile) {
console.error('用法:node scripts/ci-pr-summary.js <输出文件>');
process.exit(1);
}
if (!fs.existsSync('outputs')) {
fs.mkdirSync('outputs', { recursive: true });
}
const diff = fs.readFileSync(diffFile, 'utf-8');
const prompt = `
你是一名资深研发负责人。
请根据以下 Pull Request Diff 生成一份中文 PR 摘要,包含:
## 改动概览
说明本次 PR 主要做了什么。
## 影响范围
说明可能影响哪些模块或功能。
## 风险点
列出潜在风险。
## 测试建议
给出建议测试的场景。
以下是 Diff:
`;
async function main() {
const message = await anthropic.messages.create({
model: 'claude-3-5-sonnet-latest',
max_tokens: 4000,
messages: [
{
role: 'user',
content: `${prompt}\n\n\`\`\`diff\n${diff}\n\`\`\``,
},
],
});
const result = message.content
.filter(item => item.type === 'text')
.map(item => item.text)
.join('\n');
fs.writeFileSync(outputFile, result, 'utf-8');
console.log(`PR 摘要已生成:${outputFile}`);
}
main().catch(err => {
console.error(err);
process.exit(1);
});
EOF
最后,在 GitHub 仓库中添加 Secret:
Settings → Secrets and variables → Actions → New repository secret
名称填写:
ANTHROPIC_API_KEY
值填写你的 Claude API Key。
提交文件:
git add .
git commit -m "chore: add claude pr summary workflow"
git push
之后,每次创建或更新 Pull Request,GitHub Actions 都会自动运行 Claude 总结流程。
十三、进阶:用 Shell 管道调用 Claude
除了 Node.js 脚本,你也可以把 Claude 包装成一个命令行工具,使它支持管道输入。
创建脚本:
cat > scripts/pipe-claude.js <<'EOF'
import 'dotenv/config';
import Anthropic from '@anthropic-ai/sdk';
import fs from 'fs';
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
function readStdin() {
return new Promise(resolve => {
let data = '';
process.stdin.setEncoding('utf8');
process.stdin.on('data', chunk => data += chunk);
process.stdin.on('end', () => resolve(data));
});
}
async function main() {
const instruction = process.argv.slice(2).join(' ') || '请处理以下内容:';
const stdin = await readStdin();
if (!stdin.trim()) {
console.error('没有接收到 stdin 输入');
process.exit(1);
}
const message = await anthropic.messages.create({
model: 'claude-3-5-sonnet-latest',
max_tokens: 3000,
messages: [
{
role: 'user',
content: `${instruction}\n\n${stdin}`,
},
],
});
const result = message.content
.filter(item => item.type === 'text')
.map(item => item.text)
.join('\n');
console.log(result);
}
main().catch(err => {
console.error(err);
process.exit(1);
});
EOF
赋予执行权限:
chmod +x scripts/pipe-claude.js
添加快捷命令:
npm pkg set scripts.pipe="node scripts/pipe-claude.js"
使用示例:
cat inputs/article.md | npm run pipe -- "请总结这篇文章"
分析日志:
tail -n 200 app.log | npm run pipe -- "请分析这些日志中可能的错误原因"
解释命令输出:
docker ps -a | npm run pipe -- "请解释这些容器的运行状态,并指出异常项"
这种方式非常适合和 Linux 命令组合使用。
十四、自动化提示词设计原则
Claude 工作流自动化的质量,很大程度取决于提示词设计。建议遵循以下原则。
1. 明确角色
不要只写“帮我看看”,而要写:
你是一名资深后端工程师,请审查以下代码。
角色越明确,输出越稳定。
2. 明确输入范围
例如:
以下内容是 Git Diff,请只根据 Diff 分析,不要假设未出现的代码。
这样可以减少幻觉。
3. 明确输出格式
建议使用固定 Markdown 模板:
请按照以下结构输出:
## 总结
## 问题
## 建议
## 风险等级
固定格式方便后续脚本解析。
4. 明确约束条件
例如:
如果信息不足,请明确说明“无法判断”,不要编造。
这对代码审查、日志分析、数据分析尤其重要。
5. 给出评价标准
例如:
请重点关注安全性、性能、可维护性和边界条件。
评价标准能让 Claude 的分析更聚焦。
十五、常见问题与解决方案
1. 返回内容太短怎么办?
可以提高 max_tokens:
max_tokens: 5000
同时在提示词中要求:
请详细说明,不少于 800 字。
2. 输入内容太长怎么办?
可以拆分文件,分批处理。例如:
split -b 50k large.md part_
然后批量调用 Claude:
for file in part_*; do
node scripts/summarize.js "$file" "outputs/$file.summary.md"
done
最后再让 Claude 汇总所有摘要。
3. 如何降低成本?
可以采用以下策略:
- 只传必要上下文;
- 对大文件先做截断或摘要;
- 对重复内容做缓存;
- 低价值任务使用更轻量模型;
- CI 中只处理变更部分,不处理全量文件。
4. 如何避免覆盖原文件?
建议始终输出到 outputs/ 目录,而不是直接覆盖源文件。如果确认结果正确,再手动或脚本同步。
cp outputs/docs/test.md inputs/docs/test.md
5. 如何保证结果可追踪?
可以在输出文件名中加入时间戳:
date +"%Y%m%d-%H%M%S"
示例:
node scripts/summarize.js inputs/article.md "outputs/summary-$(date +%Y%m%d-%H%M%S).md"
十六、推荐的完整工作流组合
对于个人开发者,可以使用以下组合:
npm run summary
npm run comment
npm run review
对于团队项目,可以使用:
git add .
npm run review
git commit -m "feat: update feature"
git push
对于文档团队,可以使用:
npm run polish
对于 CI/CD,可以使用:
git diff origin/main...HEAD > pr.diff
node scripts/ci-pr-summary.js pr.diff outputs/pr-summary.md
如果你希望进一步自动化,可以把这些命令组合成一个脚本:
cat > scripts/all.sh <<'EOF'
#!/bin/bash
set -e
echo "开始执行 Claude 自动化工作流..."
echo "1. 生成文章摘要"
node scripts/summarize.js inputs/article.md outputs/article-summary.md
echo "2. 生成代码说明"
node scripts/code-comment.js inputs/example.js outputs/example-comment.md
echo "3. 审查 Git Diff"
node scripts/review-diff.js outputs/review.md
echo "4. 批量优化 Markdown"
node scripts/batch-polish.js inputs/docs outputs/docs
echo "全部流程执行完成"
EOF
赋予权限:
chmod +x scripts/all.sh
执行:
bash scripts/all.sh
也可以写入 package.json:
npm pkg set scripts.workflow="bash scripts/all.sh"
之后只需要运行:
npm run workflow
十七、安全与合规建议
在使用 Claude 做自动化时,务必注意以下事项:
-
不要上传敏感密钥
包括数据库密码、API Key、Token、私钥等。 -
不要上传未脱敏的用户隐私数据
如手机号、身份证号、地址、医疗信息、财务信息等。 -
代码审查结果不能完全替代人工审查
Claude 可以帮助发现问题,但最终责任仍在开发者和团队。 -
CI 中要限制触发条件
不要让任何外部贡献者都能无限制触发高成本 API 调用。 -
对输出结果保留人工确认环节
尤其是自动修改代码、自动生成 SQL、自动发布内容等高风险流程。
十八、总结
Claude 工作流自动化的本质,是把 AI 能力封装进你的工具链中。它不只是一个聊天窗口,而可以成为:
- 文档整理助手;
- 代码审查助手;
- 测试生成助手;
- 日志分析助手;
- 内容编辑助手;
- CI/CD 辅助节点;
- 团队知识管理工具。
从本文的示例可以看到,搭建 Claude 自动化并不复杂。核心步骤只有四个:
- 准备 API Key;
- 编写提示词模板;
- 编写脚本读取输入并调用 Claude;
- 把脚本接入命令行、Git Hooks 或 CI/CD。
最开始,你可以只做一个简单的文档总结脚本;当流程稳定后,再逐步扩展到代码审查、批量文档优化、PR 摘要、日志分析等场景。
真正高效的 AI 使用方式,不是每天重复问同样的问题,而是把高频问题沉淀成自动化工作流。这样,Claude 才能从“智能问答工具”升级为你工作系统中的一部分。