1. 项目背景与核心价值
最近AI编程领域发生了一件大事——Claude Code的完整源码意外泄露。作为一名长期关注AI工具落地的开发者,我第一时间测试了GitHub上由NanmiCoder维护的修复版本claude-code-haha。这个项目最大的价值在于,它解决了原版泄露源码无法直接运行的问题,让开发者能够在本地环境中体验接近官方的Claude Code功能。
与需要排队等待的官方版本不同,这个修复版支持全平台部署(Windows/macOS/Linux),并且可以自由接入第三方兼容Anthropic协议的API服务。这意味着开发者现在就能在本地获得一个可用的AI编程助手,而不必受限于官方审核流程。我在三台不同配置的设备上进行了实测,包括一台仅有8GB内存的旧款MacBook Air,都能流畅运行基础功能。
2. 环境准备与工具选型
2.1 运行时环境配置
项目要求必须使用Bun运行时(版本≥1.1)和Node.js(版本≥18)。这个选择背后有充分的工程考量:Bun的启动速度比传统Node.js快3-5倍,这对于需要频繁交互的CLI工具至关重要。以下是各平台的具体安装方法:
macOS/Linux用户推荐使用官方的一键安装命令:
bash复制curl -fsSL https://bun.sh/install | bash
如果遇到"unzip not found"错误(常见于精简版Linux发行版),需要先安装unzip:
bash复制sudo apt update && sudo apt install -y unzip
Windows用户务必使用PowerShell执行安装:
powershell复制powershell -c "irm bun.sh/install.ps1 | iex"
安装完成后,在任何终端执行bun --version验证版本,确保显示1.1.0或更高版本。
2.2 项目获取与初始化
克隆项目仓库时,建议使用HTTPS协议以确保网络兼容性:
bash复制git clone https://github.com/NanmiCoder/claude-code-haha.git
cd claude-code-haha
项目目录结构经过优化,所有关键文件都位于根目录下,这与原版混乱的源码结构形成鲜明对比。进入目录后,立即执行依赖安装:
bash复制bun install
这个过程通常需要1-3分钟,具体时间取决于网络状况。Bun的包管理速度明显快于npm/yarn,这也是项目选择它的另一个重要原因。
3. 关键配置解析
3.1 环境变量配置实战
项目使用.env文件管理配置,这是现代Node.js项目的标准实践。首先复制模板文件:
bash复制cp .env.example .env
然后用任意文本编辑器打开.env文件进行配置。以下是关键配置项的详细说明:
ini复制ANTHROPIC_API_KEY=sk-你的API密钥
ANTHROPIC_BASE_URL=https://api.minimaxi.com/anthropic
ANTHROPIC_MODEL=MiniMax-M2.7-highspeed
API_TIMEOUT_MS=3000000
DISABLE_TELEMETRY=1
重要提示:API端点(ANTHROPIC_BASE_URL)必须支持/v1/messages接口。经实测,MiniMax的API响应速度稳定在300-500ms,适合国内开发者使用。如果使用OpenRouter,需要将端点改为
https://openrouter.ai/api。
3.2 多平台启动方案
macOS/Linux用户可以直接运行:
bash复制./bin/claude-haha
这个命令会启动完整的TUI(文本用户界面)模式,交互体验与官方版本几乎一致。
Windows用户需要特别注意:由于Windows对Unix风格可执行文件的支持问题,建议使用以下命令:
powershell复制bun --env-file=.env ./src/entrypoints/cli.tsx
如果遇到权限问题,可以尝试先执行:
powershell复制Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
4. 异常处理与高级技巧
4.1 降级模式应用场景
当TUI界面出现异常(如按键无响应)时,可以启用降级CLI模式:
bash复制CLAUDE_CODE_FORCE_RECOVERY_CLI=1 ./bin/claude-haha
这个模式虽然界面简化,但核心功能完全保留。我在低配设备上测试发现,降级模式的内存占用比完整TUI模式低40%左右。
4.2 常见问题排查指南
问题1:`undefined is not an object (evaluating 'usage.input_tokens')
解决方案:这通常是API响应格式不匹配导致的。检查ANTHROPIC_BASE_URL是否配置正确,确保端点支持Anthropic协议。
问题2:启动时卡在加载界面
解决方案:尝试以下步骤:
- 删除node_modules目录和bun.lockb文件
- 重新执行
bun install - 添加
DEBUG=1环境变量查看详细日志
问题3:Windows下输入法冲突
解决方案:这是已知的Node.js TUI库限制。临时解决方案是:
- 切换为英文输入法
- 或者使用无头模式:
powershell复制bun --env-file=.env ./src/entrypoints/cli.tsx -p "你的问题"
5. 性能优化建议
经过一周的持续使用,我总结出以下优化经验:
- 内存管理:长期运行的实例可能会内存泄漏,建议每天重启一次。可以通过脚本自动化:
bash复制#!/bin/bash
while true; do
./bin/claude-haha
sleep 86400 # 24小时后自动重启
done
- API缓存:对于重复查询,可以启用本地缓存。在.env中添加:
ini复制CACHE_ENABLED=true
CACHE_TTL=3600000 # 1小时缓存
- 响应速度:如果使用海外API,可以通过代理优化:
ini复制HTTP_PROXY=http://127.0.0.1:7890
HTTPS_PROXY=http://127.0.0.1:7890
6. 开发扩展建议
项目架构设计良好,易于二次开发。以下是几个值得关注的目录:
src/llm:核心AI交互逻辑src/tui:用户界面实现src/plugins:扩展功能点
如果想添加新的API支持,可以参照src/llm/providers/anthropic.ts实现新的Provider。例如支持OpenAI的适配器:
typescript复制export class OpenAIProvider implements LLMProvider {
async chatCompletion(prompt: string) {
// 实现OpenAI特有的调用逻辑
}
}
7. 安全与合规说明
虽然这是源码泄露后的修复版本,但在使用时仍需注意:
- 不要将项目用于商业用途
- API密钥务必妥善保管
- 敏感数据不要通过此渠道处理
- 定期检查项目更新,获取安全补丁
项目本身不存储任何对话记录,所有交互数据都直接发送到配置的API端点。如果对隐私有更高要求,可以考虑自建API网关。