ClaudeCode本地源码编译、调试、自定义接入大模型实操案例

本章基于下载源码,提供从零开始的编译打包、本地调试、替换官方模型、自定义接入 GLM-5.2 / DeepSeek 模型的完整落地步骤,无需依赖 Anthropic 官方接口,可完全私有化部署运行。

1 本地编译环境准备(必装依赖)

1.1 核心环境要求

Claude Code 源码基于 Bun + TypeScript 开发,不推荐纯 Node 运行,必须安装对应环境保证编译正常:

  • Bun 运行时:v1.1+(源码官方指定编译运行引擎,启动速度远超 Node)

  • Node.js:v18+(兼容部分依赖工具)

  • 包管理器:Bun 原生 install / npm

  • 开发工具:IDEA / VSCode(支持 TS 断点调试)

1.2 环境安装命令(Windows 适配)

  1. 安装 Bun(官方极速运行引擎)
bash 复制代码
powershell -c "irm bun.sh/install.ps1|iex"
  1. 验证环境是否安装成功
bash 复制代码
bun -v
node -v

1.3 源码依赖安装

进入本地源码根目录,安装全部工程依赖:

bash 复制代码
# 进入项目目录
cd D:\file\project\bigmodel\claw-code-main

# 安装全部依赖(优先 bun,速度最快)
bun install

2 本地源码编译 & 打包实操

2.1 开发环境实时编译(热更新)

用于本地修改源码后实时生效,无需重复打包,适合调试:

bash 复制代码
bun run dev

执行后会监听 src 目录所有 TS/TSX 文件,修改代码自动编译。

2.2 生产环境完整打包

打包生成可全局安装的 CLI 可执行文件,等同于官方 NPM 包效果:

bash 复制代码
# 完整构建项目
bun run build

# 本地全局链接(替代官方 claude 命令)
npm link

打包成功后,终端任意位置输入 claude,即可运行自定义编译版本的 Claude Code。

3 本地源码断点调试配置

支持 IDE 可视化断点调试,可跟进启动流程、对话数据流、工具调用全链路。

3.1 VSCode/IDEA 调试配置

在项目根目录新建 .vscode/launch.json 调试配置文件:

json 复制代码
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Claude Code 本地调试",
      "type": "node",
      "request": "launch",
      "program": "${workspaceFolder}/src/main.tsx",
      "runtimeExecutable": "bun",
      "console": "integratedTerminal",
      "sourceMaps": true
    }
  ]
}

3.2 核心调试点位(推荐)

  • main.tsx:调试启动初始化、模式分发逻辑

  • QueryEngine.ts:调试会话状态、对话执行流程

  • context.ts:调试项目上下文收集、Token 压缩逻辑

  • tools/ 目录:调试工具调用、权限校验逻辑

打断点后启动调试,可完整跟踪一次 AI 对话从启动到返回结果的全链路源码执行过程。

4 核心实操:替换官方模型,自定义接入 GLM-5.2 / DeepSeek

Claude Code 原生只支持 Anthropic 模型,源码可通过修改 LLM 请求服务层,兼容所有 OpenAI 兼容模型(智谱 GLM、DeepSeek、通义千问等)。

4.1 改造原理

源码中 src/services/llm/ 为模型请求核心服务,默认封装 Anthropic 私有协议,我们将其改为 OpenAI 通用兼容协议,即可无缝适配 GLM / DeepSeek 官方 API。

4.2 核心配置修改步骤

步骤1:新增自定义模型配置

打开src/config/model-config.ts,新增模型参数配置:

typescript 复制代码
// 自定义模型配置 - 兼容 GLM5.2 / DeepSeek
export const CUSTOM_LLM_CONFIG = {
  // 智谱 GLM-5.2
  glm52: {
    baseURL: "https://open.bigmodel.cn/api/paas/v4",
    apiKey: "你的智谱SK密钥",
    model: "glm-5.2",
    temperature: 0.3,
    maxTokens: 32768
  },
  // DeepSeek 编码模型
  deepseek: {
    baseURL: "https://api.deepseek.com/v1",
    apiKey: "你的DeepSeek密钥",
    model: "deepseek-coder",
    temperature: 0.2,
    maxTokens: 32768
  }
}

步骤2:重写 LLM 请求核心方法

修改 src/services/llm/llm-client.ts,替换原生 Anthropic 请求为 OpenAI 通用请求:

typescript 复制代码
import OpenAI from "openai";
import { CUSTOM_LLM_CONFIG } from "../../config/model-config";

// 初始化自定义模型客户端
function getLLMClient() {
  // 切换使用 glm52 / deepseek
  const config = CUSTOM_LLM_CONFIG.glm52;
  return new OpenAI({
    baseURL: config.baseURL,
    apiKey: config.apiKey
  });
}

// 重写对话流式请求方法(适配 Claude Code 原生流式渲染)
export async function streamChat(prompt: string, context: any) {
  const client = getLLMClient();
  const config = CUSTOM_LLM_CONFIG.glm52;

  const stream = await client.chat.completions.create({
    model: config.model,
    temperature: config.temperature,
    max_tokens: config.maxTokens,
    stream: true,
    messages: [
      // 带入 Claude Code 原生项目上下文
      { role: "system", content: context.systemPrompt },
      { role: "user", content: prompt }
    ]
  });

  return stream;
}

4.3 适配源码流式回调逻辑

修改 query.ts 中的结果接收逻辑,兼容 OpenAI 流式返回格式,适配终端 UI 渲染:

typescript 复制代码
// 适配 GLM/DeepSeek 流式数据解析
for await (const chunk of stream) {
  const content = chunk.choices?.[0]?.delta?.content || "";
  if(content) {
    // 调用原生UI渲染方法,实现终端实时输出
    renderStreamContent(content);
  }
}

5 切换模型 & 最终验证

5.1 动态切换模型

只需修改 model-config.ts 中的配置对象,即可一键切换模型:

  • 使用 GLM-5.2:CUSTOM_LLM_CONFIG.glm52

  • 使用 DeepSeek:CUSTOM_LLM_CONFIG.deepseek

5.2 重新编译测试

bash 复制代码
bun run build
claude

进入交互式终端后,输入代码编辑指令,可正常返回结果即为接入成功,此时 Claude Code 已完全脱离官方接口,私有化运行国产大模型。

6 适配 CC Switch 动态切换模型(进阶优化)

可对接你本地 CC Switch 配置,读取本地全局模型配置,无需硬编码密钥:

源码读取 CC Switch 生成的全局配置文件,自动识别 BaseURL、APIKey、Model,实现终端一键切换 GLM / DeepSeek / GPT,和官方模型切换体验完全一致。

7 常见编译 & 接入报错解决

  • 编译报错:依赖缺失 :执行 bun install --force 强制重装依赖

  • 模型401鉴权失败 :检查密钥、BaseURL 是否正确,GLM 必须带 /v4 后缀

  • 流式无输出:适配 OpenAI 流式数据结构,修正 chunk 解析字段

  • 启动卡顿:开启 Bun 编译死代码消除,关闭无用 FeatureFlag

相关推荐
不爱记笔记2 天前
ClaudeCode接入DeepSeek教程!防封号!
人工智能·ai·deepseek·claudecode
程序员徐公4 天前
Claude Code 是怎么悄悄认出中国用户的
claudecode
小七-七牛开发者5 天前
Coding Agent 规则管理:CLAUDE.md、Skills、Hooks、Subagents 到底怎么选?
ai·大模型·agent·claude·token·loop·mcp·claudecode·ai coding
带刺的坐椅6 天前
从 Claude Code 隐私争议,看 SolonCode 的设计选择
ai·llm·agent·claudecode·soloncode·codingplan
带刺的坐椅11 天前
SolonCode v2026.6.24 发布:安全访问、Mermaid 渲染、Goal 重构——智能体自治能力再进化
ai编程·codex·claudecode·soloncode
小七-七牛开发者13 天前
周一上线 | SpaceX 收购 Cursor、支付宝进入 AI 时代、DeepSeek 完成 500 亿元融资
ai·agent·token·glm·智谱·claudecode·ai coding·周一上线
shchojj20 天前
What is Claude?
code·claudecode
小七-七牛开发者20 天前
周一上线|瑞幸把咖啡做进 CLI,Fable 5 短暂登场,Stonk Rider 骑上 K 线图
ai·chatgpt·大模型·agent·claude·codex·skill·claudecode·ai coding
Flandern111121 天前
Claude Code常用技巧
ai·ai编程·code·claudecode