npm package: @leocoder2005/cchstatusline
Description: Claude Code StatusLine for CCH (Claude Code Hub) - 专为 CCH 用户打造的智能状态栏工具
Author: Leo哥
Latest version: 1.1.0

# CCH StatusLine

[![npm version](https://img.shields.io/npm/v/@leocoder2005/cchstatusline.svg)](https://www.npmjs.com/package/@leocoder2005/cchstatusline)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Node.js Version](https://img.shields.io/node/v/@leocoder2005/cchstatusline.svg)](https://nodejs.org)

专为 Claude Code Hub (CCH) 用户打造的智能状态栏工具。

## ✨ 功能特性

- 🎯 **三轨计费显示**：体验额度、月包套餐、按量配额全面展示
- 🔄 **智能自适应**：根据用户套餐组合自动显示/隐藏对应信息
- 🎨 **动态颜色**：根据余额/使用率实时调整颜色提醒
- ⚡ **Powerline 支持**：美化状态栏显示
- 🔐 **安全加密**：API Key 使用 AES-256-GCM 加密存储
- 🌍 **跨平台支持**：macOS、Linux、Windows 全平台兼容

## 📦 安装

### 方式一：npm 全局安装（推荐）

```bash
npm install -g @leocoder2005/cchstatusline
```

### 方式二：使用 npx（无需安装）

```bash
npx @leocoder2005/cchstatusline
```

### 方式三：使用 bunx

```bash
bunx @leocoder2005/cchstatusline
```

### 系统要求

- Node.js >= 18.0.0
- 已配置 Claude Code Hub 账户

### 配置

**对于已配置 Claude Code Hub 的用户（推荐）**：

✅ **无需任何额外配置！**

CCH StatusLine 会自动从 `~/.claude/settings.json` 中读取您的 CCH 配置：
- `env.ANTHROPIC_AUTH_TOKEN` → API Key
- `env.ANTHROPIC_BASE_URL` → API URL

**对于新用户**：

请参考 [配置说明文档](./CONFIG.md)，了解完整的配置方式和优先级。

### 手动配置（可选）

编辑 `~/.config/cchstatusline/settings.json`：

```json
{
  "version": 1,
  "cch": {
    "apiUrl": "https://claude.leocoder.cn",
    "apiKey": "<encrypted-key>",
    "timeout": 5000,
    "cacheTime": 60
  },
  "lines": [
    [
      { "id": "1", "type": "cch-model", "color": "cyan" },
      { "id": "2", "type": "separator" },
      { "id": "3", "type": "cch-trial-balance" },
      { "id": "4", "type": "cch-monthly-quota" },
      { "id": "5", "type": "cch-quota-balance" },
      { "id": "6", "type": "flex-separator" },
      { "id": "7", "type": "cch-directory", "color": "brightBlack" }
    ]
  ]
}
```

## 🚀 使用方法

### 在 Claude Code 中使用

1. **配置 Claude Code 的 statusLine**

编辑 `~/.claude/settings.json`，添加：

```json
{
  "statusLine": {
    "command": "cchstatusline"
  }
}
```

2. **重启 Claude Code CLI**

配置完成后，每次使用 Claude Code 时，状态栏会自动显示您的 CCH 信息。

### 独立运行（测试）

```bash
# 直接运行
cchstatusline

# 或通过 stdin 传入数据
echo '{"session_id":"test123"}' | cchstatusline
```

## 📊 显示示例

```
Claude 3.5 Sonnet | 体验: $1.50 (3天) | 日包: $6.50/$10 | 余额: $25.30 | ~/projects/my-app
```

**颜色说明**：
- 🟢 绿色：余额充足
- 🟡 黄色：余额预警
- 🔴 红色：余额告急

## ⚙️ 配置说明

### 配置优先级

1. **Claude Code 配置**（最高优先级）
   - 路径：`~/.claude/settings.json`
   - 字段：`env.ANTHROPIC_AUTH_TOKEN`、`env.ANTHROPIC_BASE_URL`

2. **环境变量**
   ```bash
   export ANTHROPIC_AUTH_TOKEN="your-api-key"
   export ANTHROPIC_BASE_URL="https://claude.leocoder.cn"
   ```

3. **本地配置文件**
   - 路径：`~/.config/cchstatusline/settings.json`

详细配置说明请参考 [CONFIG.md](https://github.com/gaoziman/cchstatusline/blob/main/CONFIG.md)

## 🔧 故障排查

### 问题：命令找不到

```bash
# 检查是否正确安装
npm list -g @leocoder2005/cchstatusline

# 重新安装
npm install -g @leocoder2005/cchstatusline
```

### 问题：API Key 未配置

确保以下任一位置配置了 API Key：
- `~/.claude/settings.json` 中的 `env.ANTHROPIC_AUTH_TOKEN`
- 环境变量 `ANTHROPIC_AUTH_TOKEN`
- `~/.config/cchstatusline/settings.json` 中的 `cch.apiKey`

### 问题：显示乱码或样式异常

1. 确保终端支持 UTF-8 编码
2. 如果使用 Powerline 模式，需要安装 [Powerline 字体](https://github.com/powerline/fonts)
3. 可以在配置中禁用 Powerline：`"powerline": { "enabled": false }`

### 问题：Windows 平台权限错误

Windows 用户可能需要以管理员身份运行 PowerShell 或 CMD 进行全局安装。

## 📚 文档

- [完整配置说明](https://github.com/gaoziman/cchstatusline/blob/main/CONFIG.md)
- [技术设计文档](https://github.com/gaoziman/cchstatusline/blob/main/docs/TECHNICAL_DESIGN.md)
- [Widget 开发规范](https://github.com/gaoziman/cchstatusline/blob/main/docs/WIDGET_SPEC.md)
- [更新日志](https://github.com/gaoziman/cchstatusline/blob/main/CHANGELOG.md)

## 🤝 贡献

欢迎提交 Issue 和 Pull Request！

## 📄 License

MIT © Leo哥

## 🔗 相关链接

- [GitHub 仓库](https://github.com/gaoziman/cchstatusline)
- [npm 包](https://www.npmjs.com/package/@leocoder2005/cchstatusline)
- [问题反馈](https://github.com/gaoziman/cchstatusline/issues)
- [Claude Code Hub](https://claude.leocoder.cn)