库下载https://github.com/NanmiCoder/claude-code-haha/tree/main
快速开始
1. 安装 Bun
本项目运行依赖 Bun。如果你的电脑还没有安装 Bun,可以先执行下面任一方式:
# macOS / Linux(官方安装脚本)
curl -fsSL https://bun.sh/install | bash
如果在精简版 Linux 环境里提示 ,先安装 : unzip is required to install bun``unzip
# Ubuntu / Debian
apt update && apt install -y unzip
# macOS(Homebrew)
brew install bun
# Windows(PowerShell)
powershell -c "irm bun.sh/install.ps1 | iex"
安装完成后,重新打开终端并确认:
bun --version
2. 安装项目依赖
bun install
3. 配置环境变量
复制示例文件并填入你的 API Key:
cp .env.example .env
编辑.env:
# API 认证(二选一)
ANTHROPIC_API_KEY=sk-xxx # 标准 API Key(x-api-key 头)
ANTHROPIC_AUTH_TOKEN=sk-xxx # Bearer Token(Authorization 头)
# API 端点(可选,默认 Anthropic 官方)
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
4. 启动
macOS / Linux
# 交互 TUI 模式(完整界面)
./bin/claude-haha
# 无头模式(单次问答)
./bin/claude-haha -p "your prompt here"
# 管道输入
echo "explain this code" | ./bin/claude-haha -p
# 查看所有选项
./bin/claude-haha --help
窗口
前置要求 :必须安装 Git for Windows(提供 Git Bash,项目内部 Shell 执行依赖它)。
Windows 下启动脚本 bin/claude-haha 是 bash 脚本,无法在 cmd / PowerShell 中直接运行。请使用以下方式:
方式一:PowerShell / cmd 直接调用 Bun(推荐)
# 交互 TUI 模式
bun --env-file=.env ./src/entrypoints/cli.tsx
# 无头模式
bun --env-file=.env ./src/entrypoints/cli.tsx -p "your prompt here"
# 降级 Recovery CLI
bun --env-file=.env ./src/localRecoveryCli.ts
方式二:在Git Bash中运行
# 在 Git Bash 终端中,与 macOS/Linux 用法一致
./bin/claude-haha
注意:部分功能(语音输入、计算机使用、沙盒隔离等)在 Windows 上不可用,不影响核心 TUI 交互。
环境变量说明
| 变量 | 必填 | 说明 |
|---|---|---|
ANTHROPIC_API_KEY |
二选一 | API Key,通过 x-api-key 头发送 |
ANTHROPIC_AUTH_TOKEN |
二选一 | Auth Token,通过 Authorization: Bearer 头发送 |
ANTHROPIC_BASE_URL |
否 | 自定义 API 端点,默认 Anthropic 官方 |
ANTHROPIC_MODEL |
否 | 默认模型 |
ANTHROPIC_DEFAULT_SONNET_MODEL |
否 | 十四行诗 级别模型映射 |
ANTHROPIC_DEFAULT_HAIKU_MODEL |
否 | Haiku 级别模型映射 |
ANTHROPIC_DEFAULT_OPUS_MODEL |
否 | Opus 级别模型映射 |
API_TIMEOUT_MS |
否 | API 请求超时,默认 600000 (10分钟) |
DISABLE_TELEMETRY |
否 | 设为 1 禁用遥测 |
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC |
否 | 设为 1 禁用非必要网络请求 |
降级模式
如果完整 TUI 出现问题,可以使用简化版 readline 交互模式:
CLAUDE_CODE_FORCE_RECOVERY_CLI=1 ./bin/claude-haha
相对于原始泄露源码的修复
泄露的源码无法直接运行,主要修复了以下问题:
| 问题 | 根因 | 修复 |
|---|---|---|
| TUI 不启动 | 入口脚本把无参数启动路由到了 recovery CLI | 恢复走cli.tsx完整入口 |
| 启动卡死 | verify skill 导入缺失的 .md 文件,Bun text loader 无限挂起 |
创建stub.md文件 |
--print卡死 |
filePersistence/types.ts缺失 |
创建类型桩文件 |
--print卡死 |
ultraplan/prompt.txt缺失 |
创建资源桩文件 |
| 按回车键无响应 | modifiers-napi native 包缺失,isModifierPressed() 抛异常导致 handleEnter 中断,onSubmit 永远不执行 |
加 try-catch 容错 |
| 设置被跳过 | preload.ts 自动设置 LOCAL_RECOVERY=1 跳过全部初始化 |
移除默认设置 |
项目结构
notranslate
<span style="background-color:var(--bgColor-muted,var(--color-canvas-subtle))"><span style="color:#1f2328"><span style="color:var(--fgColor-default,var(--color-fg-default))"><span style="background-color:var(--bgColor-muted,var(--color-canvas-subtle))"><code>bin/claude-haha # 入口脚本
preload.ts # Bun preload(设置 MACRO 全局变量)
.env.example # 环境变量模板
src/
├── entrypoints/cli.tsx # CLI 主入口
├── main.tsx # TUI 主逻辑(Commander.js + React/Ink)
├── localRecoveryCli.ts # 降级 Recovery CLI
├── setup.ts # 启动初始化
├── screens/REPL.tsx # 交互 REPL 界面
├── ink/ # Ink 终端渲染引擎
├── components/ # UI 组件
├── tools/ # Agent 工具(Bash, Edit, Grep 等)
├── commands/ # 斜杠命令(/commit, /review 等)
├── skills/ # Skill 系统
├── services/ # 服务层(API, MCP, OAuth 等)
├── hooks/ # React hooks
└── utils/ # 工具函数
</code></span></span></span></span>
技术栈
| 类别 | 技术 |
|---|---|
| 运行时 | 面包 |
| 语言 | TypeScript |
| 终端用户界面 | React + 墨水 |
| CLI 解析 | 指挥官.js |
| 应用程序编程接口 | 人类学SDK |
| 协议 | MCP,LSP |
问题汇总
📋 问题与解决方案汇总
✅ 已解决的问题
表格
| 问题 | 原因 | 解决方案 |
|---|---|---|
| API 配置错误 | 使用了 MiniMax 的 Key (ak-...) 搭配 Moonshot 端点 |
更正为 Moonshot API Key (sk-PeN675...),与 https://api.moonshot.cn/anthropic 端点匹配 |
| .env 文件格式 | 不清楚如何创建和编辑 .env 文件 |
使用 echo 命令或记事本创建,确保文件名为 .env(不是 .env.txt),编码为 UTF-8 |
| 启动命令错误 | 直接运行 ./bin/claude-haha 不加载环境变量 |
Windows 下必须使用 bun --env-file=.env ./src/entrypoints/cli.tsx |
| 网络连接验证 | 不确定是否真正连上了 Kimi | 无头模式测试成功,模型显示为 kimi-k2-0711-preview,证明连接正常 |
⚠️ 当前仍存在的问题
交互式 TUI 模式无法启动
-
现象 :启动时显示 Logo 后报错
Unable to connect to Anthropic services,提示连接api.anthropic.com: ERR_BAD_REQUEST -
根本原因 :TUI 模式在启动时有硬编码的联网检查 (版本检查/遥测),强制连接 Anthropic 官方服务器,忽略
.env中配置的ANTHROPIC_BASE_URL -
影响:无法使用炫酷的 Ink 终端图形界面(彩色边框、实时编辑界面等)
🔧 当前可用的解决方案
方案 1:无头模式(Headless)- ✅ 完全可用
适合单次问答、脚本自动化、CI/CD 场景。
powershell
复制
# 单次提问
bun --env-file=.env ./src/entrypoints/cli.tsx -p "你的问题"
# 管道输入(分析文件/代码)
cat file.js | bun --env-file=.env ./src/entrypoints/cli.tsx -p "解释这段代码"
git diff | bun --env-file=.env ./src/entrypoints/cli.tsx -p "总结改动"
特点:响应快、稳定、不触发启动检查,但无交互界面。
方案 2:Recovery CLI 模式(降级交互)- 🔄 待测试
纯文本交互界面,支持连续对话,支持工具调用(Bash/Edit/Grep),但无图形。
powershell
复制
# 在 PowerShell 中执行(确保在项目目录下)
$env:CLAUDE_CODE_FORCE_RECOVERY_CLI="1"
bun --env-file=.env ./src/entrypoints/cli.tsx
预期界面:
plain
复制
[本地恢复模式] 当前模型: kimi-k2-0711-preview
工作目录: D:\CONDA\workspace\claude-code-haha-main
> 输入你的问题
交互方式:
-
直接输入问题 → 回车发送
-
输入
/help→ 查看命令 -
输入
/exit或Ctrl+C→ 退出
如果失败 :尝试将 CLAUDE_CODE_FORCE_RECOVERY_CLI=1 写入 .env 文件再启动。
方案 3:修复源码(根治 TUI)- 🔧 需要动手
如果你必须使用完整的 Ink TUI 图形界面,需要修改源码移除启动检查:
修改位置(推测):
-
文件
src/setup.ts或src/entrypoints/cli.tsx -
搜索关键词:
api.anthropic.com、verify、checkUpdate、preload -
注释掉或修改相关调用,使其跳过联网检查
风险:需要看懂 TypeScript 代码,且后续更新可能被覆盖。
📊 当前状态速查
表格
| 功能 | 状态 | 备注 |
|---|---|---|
| API 连接 | ✅ 正常 | 已连接到 Moonshot (Kimi) |
| 模型识别 | ✅ 正常 | 使用 kimi-k2-0711-preview |
| 无头模式 | ✅ 可用 | 推荐用于自动化任务 |
| Recovery CLI | 🔄 待验证 | 你尚未尝试,成功率较高 |
| Ink TUI 图形界面 | ❌ 不可用 | 启动检查硬编码,需改源 |