首页 / AI工具实战 / Claude Code CLI 实战:构建自定义 Agent 工具链与自动化工作流 8 次阅读
Claude Code CLI 实战:构建自定义 Agent 工具链与自动化工作流
AI 工具实战

Claude Code CLI 实战:构建自定义 Agent 工具链与自动化工作流

从安装配置到编写自定义 Tool,打造终端里的 AI 编程助手

2026 年 3 月 18 日 · 预计阅读 12 分钟

为什么需要 Claude Code CLI?

想象这个场景:你正在终端里调试一个复杂的微服务,突然发现某个 API 响应格式有问题。传统做法是:

  • 切换到浏览器,打开 Claude 网页版
  • 手动复制粘贴错误日志
  • 描述问题,等待回答
  • 再把代码复制回终端测试

繁琐且容易出错。而有了 Claude Code CLI(后文简称 CC),你只需在终端输入:

cc "分析刚才的报错,给出修复方案"

CC 直接读取终端上下文、项目文件,甚至能直接运行修复命令。本文带你从零搭建 CC 工作流,并编写 3 个实用的自定义工具。

Claude Code CLI 工作流程图

准备工作:环境与依赖

📦
Node.js 20+
CC 基于 Node.js 开发
🔑
Claude API Key
需要付费订阅获取
🛠️
tsx
TypeScript 执行环境
📁
项目目录
任意代码仓库
环境依赖关系图

步骤 1:安装与基础配置

1

安装 CLI

使用 npm 全局安装:

npm install -g @anthropic-ai/claude-code
# 或使用 bun
bun install -g @anthropic-ai/claude-code
2

配置 API Key

运行配置向导:

claude-code config

按提示输入 API Key,或手动编辑 ~/.claude-code/config.json

{
  "apiKey": "sk-ant-api03-xxxxxxxxxxxxx",
  "model": "claude-sonnet-4-20260101"
}
3

验证安装

cc "hello" --quiet

看到响应即表示配置成功。

安装配置流程图

步骤 2:核心用法速览

4

单行查询模式

最简单的用法,类似 curl

cc "解释这个正则表达式:^\\w+@[\\w-]+\\.\\w+$"

--quiet 只输出结果,不显示思考过程:

cc "git commit -m 'fix: typo'" --quiet
5

交互式会话

进入 REPL 模式,进行多轮对话:

cc
> 帮我重构这个函数
> 再加上类型注释
> 现在写单元测试

CC 会记住上下文,连续执行任务。

6

文件操作

直接让 CC 读取或修改文件:

cc "检查 package.json 是否有未使用的依赖"
cc "把 src/utils.ts 里的工具函数改成 ES Module"

使用 @path/to/file 显式指定文件:

cc "@src/api.ts 添加错误处理"
7

代码执行

CC 可以直接运行 shell 命令:

cc "运行测试并修复失败的用例"

⚠️ 注意:默认会询问是否执行命令,可在配置中关闭确认。

核心用法示意图

步骤 3:编写自定义 Tool(实战)

CC 的强大之处在于可以扩展自定义工具。下面编写 3 个实用工具:

8

工具 1:Git 提交检查器

在 commit 前自动检查提交信息格式:

// tools/git-checker.ts
import { tool } from '@anthropic-ai/claude-code';

export const gitCommitChecker = tool({
  name: 'check_commit_message',
  description: '验证 git commit message 是否符合约定式提交规范',
  parameters: {
    message: { type: 'string', description: '提交信息' }
  },
  execute: async ({ message }) => {
    const regex = /^(feat|fix|docs|style|refactor|test|chore):\s.+/;
    if (!regex.test(message)) {
      return {
        valid: false,
        error: '格式错误。应为:type: description'
      };
    }
    return { valid: true };
  }
});
9

工具 2:依赖分析器

分析 package.json 并建议删除未使用依赖:

// tools/dep-analyzer.ts
import { tool } from '@anthropic-ai/claude-code';
import { execSync } from 'child_process';
import { readFileSync } from 'fs';

export const depAnalyzer = tool({
  name: 'analyze_dependencies',
  description: '扫描项目并找出未使用的 npm 依赖',
  parameters: {
    path: { type: 'string', default: '.' }
  },
  execute: async ({ path }) => {
    // 使用 depcheck 工具扫描
    const pkg = JSON.parse(readFileSync(`${path}/package.json`, 'utf-8'));
    const usedDeps = execSync(`npx depcheck ${path}`).toString();

    const unused = Object.keys(pkg.dependencies).filter(
      dep => !usedDeps.includes(dep)
    );

    return {
      total: Object.keys(pkg.dependencies).length,
      unused,
      suggestion: unused.length > 0
        ? `建议运行:npm uninstall ${unused.join(' ')}`
        : '所有依赖都在使用'
    };
  }
});
10

工具 3:API 测试生成器

根据 OpenAPI 规范自动生成测试用例:

// tools/api-test-gen.ts
import { tool } from '@anthropic-ai/claude-code';
import { OpenAPIV3 } from 'openapi-types';

export const apiTestGen = tool({
  name: 'generate_api_tests',
  description: '从 OpenAPI spec 生成 Jest 测试',
  parameters: {
    specPath: { type: 'string', description: 'OpenAPI JSON 文件路径' },
    endpoint: { type: 'string', description: '要测试的端点路径' }
  },
  execute: async ({ specPath, endpoint }) => {
    const spec: OpenAPIV3.Document =
      JSON.parse(readFileSync(specPath, 'utf-8'));

    const pathItem = spec.paths[endpoint];
    const methods = Object.keys(pathItem);

    return methods.map(method => `
test('${method.toUpperCase()} ${endpoint}', async () => {
  const response = await request(app)
    .${method}(endpoint)
    .send(${JSON.stringify(pathItem[method].requestBody)});
  expect(response.status).toBe(200);
});
    `.trim()).join('\n');
  }
});
自定义工具架构图

步骤 4:注册与使用自定义工具

11

创建工具注册文件

~/.claude-code/tools/ 下创建 index.ts

// ~/.claude-code/tools/index.ts
import { gitCommitChecker } from './git-checker';
import { depAnalyzer } from './dep-analyzer';
import { apiTestGen } from './api-test-gen';

export const tools = [
  gitCommitChecker,
  depAnalyzer,
  apiTestGen
];
12

配置 CC 加载工具

修改 ~/.claude-code/config.json

{
  "apiKey": "...",
  "customTools": ["~/.claude-code/tools/index.ts"]
}
13

在对话中调用

重启 CC 后,可以直接说:

cc "检查我刚才的 commit message 格式"
cc "分析当前项目的依赖使用情况"
cc "为/api/users 生成测试用例"

CC 会自动识别并调用对应的自定义工具。

工具注册流程图

步骤 5:搭建自动化工作流

将 CC 集成到日常开发流程中:

14

Git Hook 集成

.git/hooks/pre-commit 中:

#!/bin/bash
# 让 CC 检查代码质量
cc "扫描暂存文件中的潜在 bug" || exit 1

# 检查提交信息
commit_msg=$(git log -1 --pretty=%B)
cc "检查提交信息格式:$commit_msg" || exit 1
15

CI/CD 集成

GitHub Actions workflow:

name: AI Code Review
on: [pull_request]
jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Claude Code Review
        env:
          ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
        run: |
          npm install -g @anthropic-ai/claude-code
          cc "Review this PR for bugs and best practices"
16

Shell 别名优化

~/.zshrc 中添加:

# 快捷命令
alias ccr='cc --quiet'  # 快速响应
alias ccd='cc --debug'  # 调试模式
alias ccf='cc --file'   # 文件模式

# 智能函数
ccg() {
  cc "生成 $1 的单元测试" --quiet
}

ccr() {
  cc "Code review: $*" --quiet
}
自动化工作流全景图

常见问题 FAQ

Q: CC 和 Cursor/Copilot 有什么区别?

A: Cursor 是 IDE 插件,侧重代码补全;CC 是独立 CLI 工具,可以执行 shell 命令、操作文件系统,更适合自动化工作流。两者可以配合使用。

Q: API 费用如何计算?

A: 按 Token 计费。简单查询约 100-500 tokens($0.0001-0.0005),复杂代码分析可能 2000+ tokens。建议日常使用 Sonnet 模型,复杂任务再用 Opus。

Q: 自定义工具不生效怎么办?

A: 检查三点:1) 工具文件路径正确;2) config.json 中 customTools 数组配置正确;3) 重启 CC 使配置生效。可用 cc --list-tools 查看已加载工具。

Q: 如何让 CC 理解整个项目?

A: 使用 cc --project 启动会话,CC 会自动索引项目结构。也可在对话中说"读取@src 目录"来指定范围。

总结

  • ✓ 掌握了 CC 的安装配置和基础用法
  • ✓ 学会了编写 3 个实用的自定义工具
  • ✓ 将 CC 集成到 Git Hook 和 CI/CD 流程
  • ✓ 通过 Shell 别名提升日常效率
下一步:尝试为你的项目编写一个专属工具,比如自动生成 API 文档、批量图片压缩、或者数据库迁移脚本。
Claude Code CLI 工具 自动化 开发者工具
选择栏目
今日简报 播客电台 实战教程 AI挣钱计划 关于我
栏目
全球AI日报国内AI日报全球金融日报国内金融日报全球大新闻日报国内大新闻日报Claude Code 玩法日报OpenClaw 动态日报GitHub 热门项目日报AI工具实战AI应用开发编程实战工作流自动化AI原理图解AI Agent开发AI变现案例库AI工具创收AI内容变现AI接单提效变现前沿研究
我的收藏