Claude Code Haha — 从 0 到 1 启动指南
本指南记录从零开始搭建并运行 Claude Code Haha 项目的完整步骤,包含环境准备、配置、启动和常见问题排查。
目录
前置要求
| 要求 |
说明 |
| Node.js |
用于通过 npm 安装 Bun |
| npm |
Node.js 自带的包管理器 |
| 一个 API Key |
来自支持 Anthropic 兼容协议的服务商 |
| Windows 用户额外需要 |
Git for Windows(提供 Git Bash) |
第一步:安装 Bun
本项目基于 Bun 运行时,不是 Node.js。必须先安装。
方法一:通过 npm(推荐)
安装完成后验证:
应该输出类似 1.3.11 的版本号。
方法二:各系统原生安装
# macOS / Linux
curl -fsSL https://bun.sh/install | bash
# Windows(PowerShell)
powershell -c "irm bun.sh/install.ps1 | iex"
安装后注意事项
- 安装完成后需要 重新打开终端 让
bun 命令生效
- 如果 Windows 上提示
bun 不是内部命令,检查 npm 全局 bin 目录是否在 PATH 中
第二步:安装项目依赖
进入项目根目录,执行:
这会根据 package.json 安装约 365 个包,通常需要 5-10 秒。
验证
应该看到一堆依赖目录。如果 node_modules 不存在,后续启动会报 Cannot find package 错误。
第三步:配置环境变量
3.1 创建 .env 文件
# 从模板复制
cp .env.example .env
3.2 编辑 .env
打开 .env 文件,填入你的 API 提供商配置。以下是几种常见提供商的写法:
方案 A:阿里云 DashScope(通义千问)
ANTHROPIC_AUTH_TOKEN=sk-your-key-here
ANTHROPIC_BASE_URL=https://dashscope.aliyuncs.com/apps/anthropic
ANTHROPIC_MODEL=qwen3.6-plus
ANTHROPIC_DEFAULT_SONNET_MODEL=qwen3.6-plus
ANTHROPIC_DEFAULT_HAIKU_MODEL=qwen3.6-plus
ANTHROPIC_DEFAULT_OPUS_MODEL=qwen3.6-plus
API_TIMEOUT_MS=3000000
DISABLE_TELEMETRY=1
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
方案 B:MiniMax
ANTHROPIC_AUTH_TOKEN=your_token_here
ANTHROPIC_BASE_URL=https://api.minimaxi.com/anthropic
ANTHROPIC_MODEL=MiniMax-M2.7-highspeed
ANTHROPIC_DEFAULT_SONNET_MODEL=MiniMax-M2.7-highspeed
ANTHROPIC_DEFAULT_HAIKU_MODEL=MiniMax-M2.7-highspeed
ANTHROPIC_DEFAULT_OPUS_MODEL=MiniMax-M2.7-highspeed
API_TIMEOUT_MS=3000000
DISABLE_TELEMETRY=1
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
方案 C:OpenRouter
ANTHROPIC_AUTH_TOKEN=sk-or-v1-your-key-here
ANTHROPIC_BASE_URL=https://openrouter.ai/api
ANTHROPIC_MODEL=openai/gpt-4o
ANTHROPIC_DEFAULT_SONNET_MODEL=openai/gpt-4o
ANTHROPIC_DEFAULT_HAIKU_MODEL=openai/gpt-4o-mini
ANTHROPIC_DEFAULT_OPUS_MODEL=openai/gpt-4o
API_TIMEOUT_MS=3000000
DISABLE_TELEMETRY=1
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
方案 D:通过 LiteLLM 代理使用 OpenAI / DeepSeek
先启动 LiteLLM 代理:
litellm --config litellm_config.yaml --port 4000
然后配置:
ANTHROPIC_AUTH_TOKEN=sk-anything
ANTHROPIC_BASE_URL=http://localhost:4000
ANTHROPIC_MODEL=gpt-4o
ANTHROPIC_DEFAULT_SONNET_MODEL=gpt-4o
ANTHROPIC_DEFAULT_HAIKU_MODEL=gpt-4o
ANTHROPIC_DEFAULT_OPUS_MODEL=gpt-4o
API_TIMEOUT_MS=3000000
DISABLE_TELEMETRY=1
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1
3.3 环境变量说明
| 变量 |
必填 |
说明 |
ANTHROPIC_AUTH_TOKEN |
是 |
API Key,通过 Authorization: Bearer 头发送 |
ANTHROPIC_BASE_URL |
是 |
API 端点 URL |
ANTHROPIC_MODEL |
是 |
默认使用的模型 ID |
ANTHROPIC_DEFAULT_SONNET_MODEL |
是 |
Sonnet 级别模型映射 |
ANTHROPIC_DEFAULT_HAIKU_MODEL |
是 |
Haiku 级别模型映射 |
ANTHROPIC_DEFAULT_OPUS_MODEL |
是 |
Opus 级别模型映射 |
API_TIMEOUT_MS |
否 |
请求超时,默认 600000(10分钟) |
DISABLE_TELEMETRY |
否 |
设为 1 禁用遥测 |
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC |
否 |
设为 1 禁用非必要网络请求 |
3.4 替代配置方式
除了 .env 文件,也可以通过 ~/.claude/settings.json 配置:
{
"env": {
"ANTHROPIC_AUTH_TOKEN": "sk-your-key",
"ANTHROPIC_BASE_URL": "https://your-endpoint",
"ANTHROPIC_MODEL": "your-model"
}
}
配置优先级:.env 文件 > ~/.claude/settings.json
第四步:启动 TUI
方法一:使用启动脚本(推荐)
Windows 下双击 start-tui.bat,或在终端中运行:
macOS / Linux 下运行:
方法二:直接调用 Bun
bun --env-file=.env ./src/entrypoints/cli.tsx
验证启动成功
启动后你应该看到类似这样的 TUI 界面:
┌─────────────────────────────────────────┐
│ Claude Code │
│ │
│ > 在这里输入你的问题... │
└─────────────────────────────────────────┘
如果能看到交互提示符并正常对话,说明启动成功。
快速验证 API 连接
使用 --print 模式做一次无头测试:
bun --env-file=.env ./src/entrypoints/cli.tsx -p "你好,请回复一个简短的测试消息"
应该看到模型返回的文字回复。
启动脚本说明
项目提供了一个 start-tui.bat 脚本,简化了启动过程:
@echo off
cd /d "%~dp0"
bun --env-file=.env ./src/entrypoints/cli.tsx %*
它做了三件事:
- 切换到脚本所在目录(确保路径正确)
- 自动加载
.env 环境变量
- 启动 CLI 主入口
你可以向启动脚本传递参数,例如:
# 指定模型
.\start-tui.bat --model claude-sonnet-4-6
# 无头模式(单次问答)
.\start-tui.bat -p "解释一下这段代码"
# 继续上次对话
.\start-tui.bat -c
常见问题排查
Q1:bun: command not found / bun 不是内部或外部命令
原因:Bun 未安装或未加入 PATH。
解决:
# 检查是否已安装
npm list -g bun
# 重新安装
npm install -g bun
# 确认 PATH 包含 npm 全局 bin 目录
npm config get prefix
确保 npm config get prefix 输出的路径在你的系统 PATH 环境变量中。
Q2:Cannot find package 'xxx'
原因:依赖未安装。
解决:
Q3:undefined is not an object (evaluating 'usage.input_tokens')
原因:ANTHROPIC_BASE_URL 配置不正确,API 端点返回的不是 Anthropic 协议格式的 JSON(可能是 HTML 页面或其他格式)。
解决:
- 确认
ANTHROPIC_BASE_URL 指向兼容 Anthropic /v1/messages 接口的端点
- 用 curl 测试端点是否正常响应:
curl -f "$ANTHROPIC_BASE_URL/v1/messages" -X POST \
-H "x-api-key: $ANTHROPIC_AUTH_TOKEN" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"test","max_tokens":1,"messages":[{"role":"user","content":"hi"}]}'
如果返回 HTML 而非 JSON,说明 URL 配错了。
Q4:启动后出现 TUI 界面,但输入无响应或 Enter 键无效
原因:modifiers-napi native 包缺失,isModifierPressed() 抛出异常。
解决:此问题已在项目中通过 try-catch 容错修复。如果仍然出现,请确保使用项目自带的 stub 文件,不要修改 stubs/ 目录。
Q5:启动直接进入降级 Recovery CLI,没有 TUI 界面
原因:环境变量 CLAUDE_CODE_LOCAL_RECOVERY_CLI 被设为 1。
解决:检查 .env 文件中没有设置该变量,或在命令行中显式清除:
# Windows PowerShell
$env:CLAUDE_CODE_FORCE_RECOVERY_CLI=""; bun --env-file=.env ./src/entrypoints/cli.tsx
# macOS / Linux
CLAUDE_CODE_FORCE_RECOVERY_CLI=0 bun --env-file=.env ./src/entrypoints/cli.tsx
Q6:TUI 界面出现后立刻闪退
可能原因:
- API 认证失败,启动时校验失败直接退出
.env 文件中的 ANTHROPIC_BASE_URL 无法访问
解决:
- 先用
--print 模式测试 API 是否连通:
bun --env-file=.env ./src/entrypoints/cli.tsx -p "hello"
- 如果报错,检查
.env 中的 API Key 和 URL 是否正确
- 如果网络需要代理,添加:
HTTPS_PROXY=http://your-proxy:port
Q7:Windows 下部分功能不可用(语音输入、Computer Use)
原因:这些功能依赖 macOS 特定的系统 API。
解决:不影响核心 TUI 交互和代码编辑功能,可以正常使用。
Q8:Bun 版本过低报错
原因:项目需要较高版本的 Bun(支持 bun:bundle 等内置模块)。
解决:
快速检查清单
在汇报问题之前,先检查以下项目:
如果以上都通过但仍有问题,尝试删除 node_modules 后重新 bun install:
rm -rf node_modules
bun install
Claude Code Haha — 从 0 到 1 启动指南
本指南记录从零开始搭建并运行 Claude Code Haha 项目的完整步骤,包含环境准备、配置、启动和常见问题排查。
目录
前置要求
第一步:安装 Bun
本项目基于 Bun 运行时,不是 Node.js。必须先安装。
方法一:通过 npm(推荐)
安装完成后验证:
应该输出类似
1.3.11的版本号。方法二:各系统原生安装
安装后注意事项
bun命令生效bun不是内部命令,检查 npm 全局 bin 目录是否在PATH中第二步:安装项目依赖
进入项目根目录,执行:
这会根据
package.json安装约 365 个包,通常需要 5-10 秒。验证
应该看到一堆依赖目录。如果
node_modules不存在,后续启动会报Cannot find package错误。第三步:配置环境变量
3.1 创建
.env文件# 从模板复制 cp .env.example .env3.2 编辑
.env打开
.env文件,填入你的 API 提供商配置。以下是几种常见提供商的写法:方案 A:阿里云 DashScope(通义千问)
方案 B:MiniMax
方案 C:OpenRouter
方案 D:通过 LiteLLM 代理使用 OpenAI / DeepSeek
先启动 LiteLLM 代理:
然后配置:
3.3 环境变量说明
ANTHROPIC_AUTH_TOKENAuthorization: Bearer头发送ANTHROPIC_BASE_URLANTHROPIC_MODELANTHROPIC_DEFAULT_SONNET_MODELANTHROPIC_DEFAULT_HAIKU_MODELANTHROPIC_DEFAULT_OPUS_MODELAPI_TIMEOUT_MSDISABLE_TELEMETRY1禁用遥测CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC1禁用非必要网络请求3.4 替代配置方式
除了
.env文件,也可以通过~/.claude/settings.json配置:{ "env": { "ANTHROPIC_AUTH_TOKEN": "sk-your-key", "ANTHROPIC_BASE_URL": "https://your-endpoint", "ANTHROPIC_MODEL": "your-model" } }配置优先级:
.env文件 >~/.claude/settings.json第四步:启动 TUI
方法一:使用启动脚本(推荐)
Windows 下双击
start-tui.bat,或在终端中运行:.\start-tui.batmacOS / Linux 下运行:
方法二:直接调用 Bun
验证启动成功
启动后你应该看到类似这样的 TUI 界面:
如果能看到交互提示符并正常对话,说明启动成功。
快速验证 API 连接
使用
--print模式做一次无头测试:bun --env-file=.env ./src/entrypoints/cli.tsx -p "你好,请回复一个简短的测试消息"应该看到模型返回的文字回复。
启动脚本说明
项目提供了一个
start-tui.bat脚本,简化了启动过程:它做了三件事:
.env环境变量你可以向启动脚本传递参数,例如:
常见问题排查
Q1:
bun: command not found/bun 不是内部或外部命令原因:Bun 未安装或未加入 PATH。
解决:
确保
npm config get prefix输出的路径在你的系统 PATH 环境变量中。Q2:
Cannot find package 'xxx'原因:依赖未安装。
解决:
Q3:
undefined is not an object (evaluating 'usage.input_tokens')原因:
ANTHROPIC_BASE_URL配置不正确,API 端点返回的不是 Anthropic 协议格式的 JSON(可能是 HTML 页面或其他格式)。解决:
ANTHROPIC_BASE_URL指向兼容 Anthropic/v1/messages接口的端点如果返回 HTML 而非 JSON,说明 URL 配错了。
Q4:启动后出现 TUI 界面,但输入无响应或 Enter 键无效
原因:
modifiers-napinative 包缺失,isModifierPressed()抛出异常。解决:此问题已在项目中通过 try-catch 容错修复。如果仍然出现,请确保使用项目自带的 stub 文件,不要修改
stubs/目录。Q5:启动直接进入降级 Recovery CLI,没有 TUI 界面
原因:环境变量
CLAUDE_CODE_LOCAL_RECOVERY_CLI被设为1。解决:检查
.env文件中没有设置该变量,或在命令行中显式清除:Q6:TUI 界面出现后立刻闪退
可能原因:
.env文件中的ANTHROPIC_BASE_URL无法访问解决:
--print模式测试 API 是否连通:bun --env-file=.env ./src/entrypoints/cli.tsx -p "hello".env中的 API Key 和 URL 是否正确Q7:Windows 下部分功能不可用(语音输入、Computer Use)
原因:这些功能依赖 macOS 特定的系统 API。
解决:不影响核心 TUI 交互和代码编辑功能,可以正常使用。
Q8:Bun 版本过低报错
原因:项目需要较高版本的 Bun(支持
bun:bundle等内置模块)。解决:
快速检查清单
在汇报问题之前,先检查以下项目:
bun --version能正常输出版本号node_modules/目录存在且不为空.env文件存在且包含正确的 API 配置-p无头模式测试 API 可以正常返回回复start-tui.bat启动后能看到 TUI 输入框如果以上都通过但仍有问题,尝试删除
node_modules后重新bun install: