Fork me on GitHub

分类 Claude Code 下的文章

让 Claude Code 接入其他大模型

尽管 Claude Code 非常好用,但它的费用还是太贵了,之前为了体验,在 Anthropic Console 充了 5 美刀,只用了几天,就所剩无几了:

claude-cost.png

如果能让 Claude Code 使用其他较便宜的大模型(比如 OpenAI 或 DeepSeek 等)或本地大模型(如 Ollama 或 LM Studio 等)来处理编程任务,那就太好了,我们今天就来学习下如何让 Claude Code 接入其他模型。

接入 Claude 云提供商

Claude Code 默认使用 Anthropic 的 Claude 模型,但是还有一些其他的供应商也提供 Claude 模型,比如 Amazon BedrockGoogle Vertex AI,Claude Code 也支持接入这些模型。要使用这些第三方供应商的模型,首先需要按照供应商的要求,配置好对应的 AWS 凭证 或 GCP 凭据,然后通过环境变量告诉 Claude Code 使用供应商模型。

设置以下环境变量以启用 Bedrock 模型:

export CLAUDE_CODE_USE_BEDROCK=1
export AWS_REGION=us-east-1

设置以下环境变量以启用 Vertex AI 模型:

export CLAUDE_CODE_USE_VERTEX=1
export CLOUD_ML_REGION=us-east5
export ANTHROPIC_VERTEX_PROJECT_ID=YOUR-PROJECT-ID

另外,不同供应商对模型的命名也不同,因此 Claude Code 还提供了两个环境变量来配置使用的模型。比如使用推理配置文件 ID 来配置 Bedrock 模型:

export ANTHROPIC_MODEL='us.anthropic.claude-opus-4-20250514-v1:0'
export ANTHROPIC_SMALL_FAST_MODEL='us.anthropic.claude-3-5-haiku-20241022-v1:0'

这里要配置两个模型,ANTHROPIC_MODEL 为主要模型,用于复杂的编程任务;ANTHROPIC_SMALL_FAST_MODEL 为小型快速模型,用于简单的辅助任务;Claude Code 会根据情况自动切换。

配置企业代理

有很多企业对网络有特定要求,比如需要通过特定的代理来路由所有进出企业的流量,以实现安全、合规和监控目的。Claude Code 支持标准的 HTTP/HTTPS 代理配置:

export HTTPS_PROXY=https://proxy.example.com:8080
export HTTP_PROXY=http://proxy.example.com:8080

Claude Code 不支持 SOCKS 代理。

如果代理需要基本身份验证,可以在代理 URL 中包含凭据:

export HTTPS_PROXY=http://username:password@proxy.example.com:8080

如果代理使用了自定义的 SSL 证书,还需要设置正确的证书路径:

export SSL_CERT_FILE=/path/to/certificate-bundle.crt
export NODE_EXTRA_CA_CERTS=/path/to/certificate-bundle.crt

另外要注意的是,Claude Code 在运行过程中需要访问下面这些 URL 地址:

  • api.anthropic.com - Claude API 端点
  • statsig.anthropic.com - 遥测和指标
  • sentry.io - 错误报告

确保这些 URL 在代理配置和防火墙规则中被列入白名单。

配置 LLM 网关

还有很多企业对大模型的访问是集中管控的,以实现使用跟踪或预算控制等,为满足这一类企业的需求,Claude Code 支持配置 LLM 网关。通过 LLM 网关,企业可以做到:

  • 集中身份验证 - 对大模型的 API 密钥进行集中管理
  • 使用跟踪 - 监控团队和项目的使用情况
  • 成本控制 - 实施预算和速率限制
  • 审计日志 - 跟踪所有模型交互以确保合规性
  • 模型路由 - 无需更改代码即可在提供商之间切换

通过 ANTHROPIC_BASE_URL 配置 LLM 网关:

export ANTHROPIC_BASE_URL=https://litellm-server:4000/anthropic

这里的 /anthropic 地址是 LiteLLM 网关透传的 Anthropic 接口,本质上还是调用 api.anthropic.com 接口,因此,在启动 LiteLLM 时需要配置 Anthropic 的 API KEY:

export ANTHROPIC_API_KEY=sk-ant-apikey

这个值将作为 X-Api-Key 请求头发送。

如果 LLM 网关也开启了 API KEY 认证,则通过 ANTHROPIC_AUTH_TOKEN 配置:

export ANTHROPIC_AUTH_TOKEN=sk-litellm-static-key

这个值将作为 AuthorizationProxy-Authorization 请求头发送。

安装 LiteLLM 网关

我们知道,LiteLLM 是一个小巧精悍的 Python 库,兼容 100+ 不同的大模型,所有的模型都使用标准化的输入/输出格式;我们之前学过不少项目(比如 SurfSense、Mem0 等)都是使用 LiteLLM SDK 来调用大模型服务的,其实 LiteLLM 还可以充当 LLM 网关 来使用,通过 LLM 网关代理,我们可以实现 Claude Code 与其他模型的集成。

首先安装 LiteLLM 及其代理功能:

$ pip3 install 'litellm[proxy]'

然后建一个 config.yaml 配置文件:

model_list:
- model_name: gpt-4o
  litellm_params:
    model: gpt-4o
    api_base: https://api.bianxie.ai/v1
    api_key: os.environ/OPENAI_API_KEY
- model_name: gpt-4o-mini
  litellm_params:
    model: gpt-4o-mini
    api_base: https://api.bianxie.ai/v1
    api_key: os.environ/OPENAI_API_KEY
- model_name: deepseek-v3
  litellm_params:
    model: openrouter/deepseek/deepseek-chat-v3-0324:free
    api_base: https://openrouter.ai/api/v1
    api_key: os.environ/OPENROUTER_API_KEY
- model_name: deepseek-r1
  litellm_params:
    model: openrouter/deepseek/deepseek-r1-0528:free
    api_base: https://openrouter.ai/api/v1
    api_key: os.environ/OPENROUTER_API_KEY

接着使用 litellm -c config.yaml 启动 LiteLLM 网关:

litellm-c.png

访问 http://localhost:4000/ 地址,应该显示 LiteLLM API 的 Swagger UI 页面,则说明 LiteLLM 网关启动成功。使用下面的命令验证接口能否正常调用:

$ curl -X POST http://localhost:4000/v1/messages \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-1234" \
  -d '{
    "model": "gpt-4o",
    "max_tokens": 1024,
    "messages": [
      {
        "role": "user",
        "content": "Hello!"
      }
    ]
  }'

这里使用的是 Anthropic 的 v1/messages 接口,而不是 OpenAI 的 /v1/chat/completions 接口,因为 Claude Code 默认使用 Anthropic 接口。LiteLLM 可以同时兼容两种接口格式,注意有些 LLM 网关只支持 OpenAI 格式,是不行的。

最后通过将环境变量 ANTHROPIC_BASE_URL 设置成 LiteLLM 网关地址,就可以让 Claude Code 使用自定义的模型服务了:

export ANTHROPIC_BASE_URL=http://localhost:4000
export ANTHROPIC_AUTH_TOKEN=sk-1234
export ANTHROPIC_API_KEY=
export ANTHROPIC_MODEL=gpt-4o
export ANTHROPIC_SMALL_FAST_MODEL=gpt-4o-mini
export DISABLE_PROMPT_CACHING=1
claude

注意这里的 DISABLE_PROMPT_CACHING 配置,表示禁用 提示缓存,大多数的三方模型不支持该功能。

解决连接错误

通过上面的方法启动 Claude Code 后,你可能会和我一样遇到下面这样的连接问题:

> hello
  ⎿  API Error (Connection error.) · Retrying in 1 seconds… (attempt 1/10)
    ⎿  TypeError (fetch failed)
  ⎿  API Error (Connection error.) · Retrying in 1 seconds… (attempt 2/10)
    ⎿  TypeError (fetch failed)
  ⎿  API Error (Connection error.) · Retrying in 2 seconds… (attempt 3/10)
    ⎿  TypeError (fetch failed)
...

尝试用 Wireshark 抓包:

wireshark.png

可以发现 Claude Code 发出的请求源和目标都是 ::1,很显然这是 IPV6 地址,猜测可能是 LiteLLM 没有监听这个地址,于是修改 LiteLLM 的启动参数:

$ litellm -c config.yaml --host ::1 

再次运行 Claude Code 即可:

claude-code-litellm.png

小结

通过本文的学习,我们掌握了让 Claude Code 接入其他大模型的完整方案。从官方支持的 AWS Bedrock 和 Google Vertex AI,到通过 LiteLLM 网关实现与 OpenAI、DeepSeek 等第三方模型的集成,这些方法不仅可以降低使用成本,也为开发者提供了更灵活的选择空间。

需要注意的是,不同模型的能力差异较大,建议根据实际场景进行测试选择;部分 Claude 特性(如提示缓存、内置搜索)可能需要禁用或通过 MCP 实现。


实践 Claude Code 的日常使用场景

昨天我们学习了 Claude Code 的安装和基本使用,通过自然语言命令完成项目分析到文件提交等任务。但 Claude Code 的能力远不止于此,它还可以帮助我们完成更多复杂的开发任务,比如代码重构、自动化测试、项目架构分析、版本控制管理等,我们今天就来进一步探索这些使用场景和高级功能,看下 Claude Code 对这些任务的表现。

新项目快速理解

Claude Code 最突出的特点之一是其强大的代码库理解能力。它能够在几秒钟内分析整个项目的结构,理解模块间的依赖关系,识别代码的架构模式,并回答关于代码逻辑和架构的复杂问题。

假设你刚加入一个新项目,需要快速了解它的结构,可以试试下面这些命令:

> 这个项目是做什么的?

> 给我概述下这个项目

> 这个项目使用了哪些技术?

> 这个项目的主入口在哪里?

> 解释下这个项目的目录结构

或者你也可以了解项目的特定功能:

> 项目是如何处理用户认证的?

> 查找和用户认证相关的文件

> 讲解从前端到数据库的整个登录过程

在面对新项目代码时,掌握一些提问的技巧也很重要,比如先从广泛的问题开始问起,然后缩小到特定领域;还可以询问项目使用了哪些特定术语,使用了哪些编码约定;这些信息都能很好的让 Claude Code 了解这个项目。

下面还是拿数独项目作为示例,让 Claude Code 讲解下数独生成是如何实现的:

understand-code-base.png

可以看到 Claude Code 详细讲解了数独生成的算法,并准确地定位到了具体的代码位置。和 Cursor 等 AI 代码编辑器不同的是,我们不需要手动添加上下文,Claude Code 会根据需要自动查询并读取相关的文件。

添加和修改代码

基于对代码库的深度理解,Claude Code 能够进行跨文件的智能编辑,它能同时修改多个相关文件,并保持代码的一致性和最佳实践。常见的使用场景包括添加新功能和特性、问题诊断和修复、对代码进行重构或性能优化等:

> 使用 JWT 实现用户认证功能

> 解决这个编译报错问题

> 这里用户可以提交空表单,修复下这个 BUG

> 找到代码中使用的过期 API 并重构

> 使用 SQLAlchemy 重构数据库层代码

> 分析这里的代码逻辑是否存在性能问题,提出优化建议

在向 Claude Code 描述错误时,可以带上详细的错误堆栈、重现错误的任何步骤和命令、以及这个错误是偶现还是必现等信息,Claude 会尝试分析这些错误信息,找到问题源头并修复。另外,Claude Code 可以自动编写和运行测试,并从测试结果中识别和修复问题:

> 为计算器模块编写单元测试

> 找出 NotificationsService 中所有测试未覆盖的方法

> 为重构后的代码运行测试

> 修复这些失败的单元测试

现在我们来让 Claude Code 做一些实际的编程工作,尝试让它给我的数独项目加个小功能,我希望用户在进入首页时,自动生成一道数独题:

new-features.png

这里可以看到一个有趣的现象,Claude Code 首先生成了一个 Todo 列表,然后开始编写代码,结束编码后再将 Todo 列表更新为已完成。尽管这里只有一步,但是也让我们略窥到 Claude Code 的实现思路,这种方式可以让 Claude Code 解决比较复杂的多步任务。另外,Claude Code 在编辑文件时会以 diff 的形式显示出修改点,让用户确认,只有得到用户批准后才会真正执行。默认每次修改都会请求确认,如果嫌麻烦,可以为会话启用 ”全部接受” 模式。

实现效果如下:

sudoku-home.png

生成文档和注释

程序员最怕写文档和注释,而 Claude Code 最擅长干这事:

> 更新 README 文档,添加安装步骤

> 为 auth.js 文件中的所有函数加上 JSDoc 注释

比如我们接着上面的例子,让 Claude Code 将增加的功能更新到 README 文件中:

update-readme.png

Git 集成和代码审查

Claude Code 与 Git 深度集成,使得我们可以用对话的方式来执行 Git 操作,比如智能提交、创建分支、解决冲突等:

> 提交刚刚的所有修改

> 提交 README.md 文件

> 创建一个新分支 feature/quickstart

> 用刚刚的修改创建一个 PR

> 解决合并冲突

Claude Code 在提交代码时会很智能的分析提交的内容,自动生成提交消息:

git-commit.png

可以看到 Claude Code 先用 git status 检查变动的文件有哪些,然后使用 git diff 对比文件的修改点,这样它就知道了我们都改了什么内容;接着 Claude Code 执行 git log --oneline -5 命令,快速浏览最近的 5 次提交历史,这一步让它对项目最新的变化有个了解,我猜也是为了生成和历史更一致的提交消息;再然后 git addgit commit 提交代码,最后再用 git status 确认所有的变更是否都提交了。注意 -m 后面的注释非常全面,比我们自己写方便多了,另外,Claude Code 还会自动将 Claude 加到提交消息的作者里:

git-commit-message.png

另外,Claude Code 还能查看 Git 历史,查看当前变更,并对用户的修改提出审查建议:

> 我改动了哪些文件?

> 查看最近 5 次提交

> 审查我最近做的修改,提出改进建议

Claude Code 就像是一个 AI 结对编程伙伴,你只需像和同事交谈一样,描述你想要的目标,它就会帮助你自动实现。

和 Cursor 的对比

经过几天的体验,Claude Code 给我的印象还是蛮深刻的。基于终端的交互方式,对于习惯命令行操作的开发者来说是一种享受 —— 纯粹的文本对话,无需面对复杂的界面元素,让开发者能够专注于核心任务,减少视觉干扰。更重要的是,这种交互方式让我们能够用自然语言描述目标,而不必纠结于具体的实现细节。

相比之下,Cursor 走的是另一条路线。它将 AI 能力深度集成到传统的 IDE 界面中,提供熟悉的可视化代码编辑体验。实时的代码建议、智能的 Tab 补全、直观的文件管理 —— 这些特性让 Cursor 的学习曲线更加平缓,对新手开发者更加友好。你可以看到代码的每一个变化,掌控每一个编辑操作。

两者各有优势:Claude Code 更像是一个无所不能的编程助手,你可以将复杂的多步骤任务完全委托给它;而 Cursor 则更像是一个智能的代码编辑器,在保持传统开发体验的同时增强了效率。

对于追求效率和敢于尝试新事物的开发者,Claude Code 提供了一种革命性的编程体验,这可能就是未来软件开发的模样:更少的手工操作,更多的意图表达,开发者角色将从 “手写代码” 转变成 “协调和审查” AI 代理编写代码,而这种转变,值得每一个开发者去亲身体验和探索。


Claude Code 介绍:一款运行在终端里的智能编程助手

今年 2 月份,Anthropic 公司发布 Claude 3.7 Sonnet 混合推理模型,在编码和前端开发方面表现非常出色,一时之间成为所有 AI 代码编辑器的首推模型;同时,他们还推出了一款新的命令行工具 —— Claude Code ,这是一个智能编程助手,和 Cursor、 Windsurf 等传统 IDE 不同的是,它直接运行在你的终端中,能够深度理解你的代码库,并通过自然语言命令帮助开发者更高效地完成编程任务。

claude-code-home.png

不过当时还只是预览版,并没有对所有用户开放,因此反响也不大。到了 今年 5 月份,Anthropic 发布了 Claude 4,其编码能力相对于 3.7 又有了很大的提升;与此同时,Claude Code 也正式 GA ,搭配 Claude 4 出色的编码能力,它的性能得以显著提升;它在处理大型代码库、复杂编程任务中的表现超越了 Cursor、 Windsurf 等一众顶尖的 AI 代码编辑器,惊艳了整个程序员社区。

这款基于 Claude 4 模型的智能编程助手,以其独特的终端集成方式和强大的代码库理解能力,正在重新定义开发者的编程体验。

核心特点

Claude Code 是一个 代理式编程(Agentic Coding) 工具,它具备以下核心特点:

  • 终端集成:通过终端作为通用入口,Claude Code 能直接在开发者熟悉的工作环境中执行任务,无需学习新工具或更换 IDE ,降低了使用门槛;
  • 代码库理解:能够快速分析和理解整个项目的代码结构和逻辑关系,尤其适用于大型复杂代码库;
  • 自然语言交互:得益于 Claude 4 强大的指令理解和任务执行能力,用户通过简单的自然语言命令就可以执行复杂的编程任务;
  • 开发工具集成:与现有的开发环境完美配合,兼容各种命令行工具,支持文件编辑、Git 操作等,与终端、IDE、GitHub Actions 等现有工具和平台无缝集成;

安装步骤

Claude Code 的安装非常简单,首先我们需要安装 Node.js,确保你的 Node.js 版本在 18 以上,然后运行:

$ npm install -g @anthropic-ai/claude-code

接着导航到你的项目目录:

$ cd /path/to/your/project

启动 Claude Code:

$ claude

第一次运行 Claude Code 会弹出一个框让你选择文本样式:

claude-code-theme.png

这是为了更好的适配你的终端显示,选择一个看起来最舒服的样式即可。

接下来要登录你的 Claude 账号:

claude-code-login.png

Claude Code 提供了两种登录选项。第一种是使用 Claude 账号,也就是用于访问 Claude 的网页版、移动端或桌面版聊天界面的那个账号,使用 Claude.ai 进行登录,你的账号至少是 Pro 或 Max 订阅:

claude-plan.png

Pro 订阅每月 17 美刀,Max 订阅每月 100 美刀,使用这种登录方式的好处是 按月收费,费用比较固定。

第二种是使用 Anthropic Console 账号,需要通过 console.anthropic.com 登录,Anthropic Console 面向开发者,用于访问 Anthropic 的 API 服务,用户可以通过编程的方式调用 Claude 的能力,将 Claude 集成到自己的应用程序中。在这个平台上,用户可以管理 API 密钥、查看使用情况、计费信息等:

anthropic-console.png

使用这种登录方式的好处是 按调用量收费,比较灵活,用多少付多少。

如果你只是想对 Claude Code 尝尝鲜,建议使用 Anthropic Console 账号,如果你是长期使用,则建议使用 Claude Pro 订阅。

初次使用

登录成功后,看到如下界面:

claude-code-getting-started.png

此时就可以使用 Claude Code 了,直接在 REPL 交互式会话中使用自然语言向 Claude Code 发出指令即可。初次使用时,建议先让 Claude Code 分析一下你的项目:

> 总结下这个项目

我这里使用了一个数独项目进行测试,这个项目是我用大模型为家里的小朋友开发的一款小游戏,比较简单,可以随机生成数独和自动解决数独:

claude-code-summarize.png

可以看到 Claude Code 使用了 ReadList 两个工具,自动读取了 README.mdpackage.json 文件内容,并列出了当前目录下的文件列表,可以按下 ctrl+r 展开工具调用的详情。通过这些信息 Claude Code 很好的完成了总结任务。

接着运行 /init 命令:

> /init

Claude Code 会继续读取几个关键文件,并开始使用 Write 工具写入 CLAUDE.md 文件:

claude-code-init.png

Claude Code 在执行一些关键操作时会让用户确认,只有得到用许可后,命令才会真正执行:

claude-code-claude-md.png

选择 Yes 生成 CLAUDE.md 文件。

CLAUDE.md 就是一个普通的 Markdown 文件(CLAUDE 全大写,md 小写),它可以做很多事,比如定义项目的编码风格、常用的 Bash 命令、重要的项目说明等等。它是 Claude Code 的 记忆,可以让 Claude Code 持续记住你对它的指令。我们一般将 CLAUDE.md 文件放在项目根目录,并提交到代码仓库,让这些指令在你的团队成员之间共享。

然后让 Claude Code 提交生成的 CLAUDE.md 文件:

> 提交 CLAUDE.md 文件

Claude Code 会自动执行 git addgit commit 等命令,将 CLAUDE.md 文件提交到代码仓库中:

claude-code-commit.png

可以看到 Claude Code 为我们自动生成了提交消息,整个过程非常丝滑,开发人员一直聚焦在终端中,只需要用自然语言下发指令即可。

接下来

通过今天的学习,我们已经成功安装并初步体验了 Claude Code 这款革命性的终端编程助手。从项目分析到文件提交,整个过程展现了它强大的代码理解能力和自然语言交互体验。

Claude Code 的能力远不止于此,它还可以帮助我们完成更多复杂的开发任务:

  • 代码编辑与重构:在大型代码库中快速定位并修复 bug,执行复杂的代码重构操作,保持代码风格的一致性;
  • 项目架构分析:深入理解项目的整体架构,解答关于代码逻辑和设计模式的问题,为技术决策提供支持;
  • 自动化测试与质量保证:运行单元测试和集成测试,执行代码静态分析和规范检查,自动修复常见的代码质量问题;
  • 版本控制管理:智能化的 Git 操作,包括搜索提交历史、解决合并冲突、创建规范的提交信息和拉取请求;
  • 文档与资源整合:通过网络搜索获取最新的技术文档,整合外部资源,为开发过程提供实时的技术支持;

随着我们对 Claude Code 使用的深入,你会发现它不仅仅是一个编程工具,更像是一位经验丰富的编程伙伴,能够理解你的意图,主动提供解决方案,让编程工作变得更加高效和愉悦。在接下来的实践中,我们将进一步探索这些高级功能,体验真正的智能化编程体验。