ccpet
v1.2.8
Published
A Claude Code status line script that displays a virtual pet
Maintainers
Readme
ccpet
一个 Claude Code 状态栏虚拟宠物。宠物的能量会随时间衰减、在你消耗 token 时增加,并在会话之间持久化保存。
功能特性
🐾 虚拟宠物系统
- 基于能量的宠物,响应你的 Claude Code 使用情况
- 基于时间的衰减(约每分钟 0.0231,约 3 天从 100 → 0)
- 通过 token 使用进行喂养(1,000,000 tokens = +1 能量)
🎭 动画表情 基于能量等级
- 开心 (≥80):
(^_^) (^o^) (^_^) (^v^)- 你的宠物很健康! - 饥饿 (≥40):
(o_o) (O_O) (o_o) (-_-)- 需要一些关注 - 生病 (≥10):
(u_u) (T_T) (u_u) (>_<)- 是时候喂养你的宠物了 - 死亡 (<10):
(x_x) (X_X) (x_x) (+_+)- 你的宠物需要紧急护理!
- 开心 (≥80):
📊 丰富状态显示
- 彩色能量条和精确的能量值
- 累计 token 和终身统计数据
- 实时会话指标(输入/输出/缓存/总计)
- 宠物诞生时间追踪,支持生命周期管理
⚙️ 可配置且持久化
- 自定义颜色和衰减率
- 状态在 Claude Code 会话之间持久保存
安装和配置
快速开始
要将 ccpet 用作你的 Claude Code 状态栏,请在你的 ~/.claude/settings.json 中添加:
{
"statusLine": {
"type": "command",
"command": "npx ccpet@latest",
"padding": 0
}
}替代方案:全局安装
为了更好的性能,你可以全局安装:
npm install -g ccpet然后更新设置以使用全局路径。
CLI 命令
基本用法
ccpet # 显示状态栏(用于 Claude Code)
ccpet --help # 显示帮助信息
ccpet --version # 显示版本号宠物管理命令
检查命令
ccpet check # 手动检查宠物状态(不消耗 token)
ccpet check --watch # 持续监控模式(60秒间隔)
ccpet check -w --interval 30 # 监控模式,30秒间隔
ccpet check --help # 显示检查命令帮助使用 ccpet check 来:
- ✅ 检查宠物状态而不消耗 token
- ✅ 查看距离上次喂食的时间
- ✅ 监控会话之间的能量等级
- ✅ 新功能: 持续监控,实时更新状态
- ✅ 新功能: 简洁的倒计时显示
- ✅ 新功能: 可自定义刷新间隔(10-300秒)
配置命令
ccpet config list # 显示当前配置
ccpet config set <key> <value> # 设置配置值
ccpet config reset # 重置为默认配置
ccpet config path # 显示配置文件位置重置命令
ccpet reset # 触发宠物死亡和墓地保存过程
ccpet reset --help # 显示重置命令帮助使用 ccpet reset 来:
- ✅ 手动触发宠物死亡和保存过程
- ✅ 将当前宠物保存到墓地并保留完整历史
- ✅ 创建一个拥有随机名字和全新开始的宠物
- ✅ 测试墓地功能
- ✅ 新功能: 在
~/.claude-pet/graveyard/中自动保存历史
同步命令
ccpet sync # 将宠物和token使用数据同步到Supabase
ccpet sync --dry-run # 预览同步而不实际执行
ccpet sync --verbose # 显示详细的同步进度
ccpet sync --start-date 2024-01-01 # 从指定日期开始同步
ccpet sync --end-date 2024-12-31 # 同步到指定日期
ccpet sync --help # 显示同步命令帮助使用 ccpet sync 来:
- ✅ 将宠物记录和token使用情况上传到Supabase数据库
- ✅ 启用跨设备宠物历史同步功能
- ✅ 支持增量同步以提高效率
- ✅ 从宠物出生时间智能检测日期范围
- ✅ 大数据集批量处理
- ✅ 新功能: 宠物墓地数据的云备份
设置: ccpet已预配置Supabase用于即时同步 - 安装后即可开始使用!
排行榜命令
ccpet leaderboard # 显示今日token排行榜
ccpet leaderboard --period 7d # 显示7天排行榜
ccpet leaderboard --period 30d # 显示30天排行榜
ccpet leaderboard --period all # 显示全时段排行榜
ccpet leaderboard --sort cost # 按成本排序而非token数量
ccpet leaderboard --sort survival # 按存活时间排序
ccpet leaderboard --limit 20 # 显示前20名
ccpet leaderboard --verbose # 显示详细查询信息
ccpet leaderboard --help # 显示排行榜命令帮助使用 ccpet leaderboard 来:
- ✅ 将您宠物的表现与历史数据进行比较
- ✅ 跟踪不同时间段的token消耗和成本
- ✅ 监控宠物存活统计和成就
- ✅ 漂亮的CLI表格,支持emoji和格式化
- ✅ Supabase不可用时自动降级到离线模式
- ✅ 新功能: 排名重置的实时倒计时
排行榜功能:
- 时间段:
today(今日),7d(7天),30d(30天),all(全部) - 排序选项:
tokens(默认),cost(成本),survival(存活) - 显示内容: 排名、宠物名称、类型、Token数量、成本、存活天数、状态
- 离线模式: 云服务不可用时自动使用本地墓地数据
配置选项:
# 颜色(格式:#RRGGBB 或 #RRGGBB:bright 或 #RRGGBB:bright:bold)
ccpet config set colors.petExpression "#FF0000:bright:bold"
ccpet config set colors.petName "#FF69B4:bright"
ccpet config set colors.energyBar "#00FF00"
ccpet config set colors.energyValue "#00FFFF"
ccpet config set colors.lifetimeTokens "#FF00FF"
# 宠物行为
ccpet config set pet.animationEnabled true
ccpet config set pet.decayRate 0.0231
# 多行显示(新功能!)
ccpet config set display.maxLines 3 # 显示最多3行 (1-3)
ccpet config set display.line1.enabled true # 启用/禁用自定义第1行
ccpet config set display.line1.items "expression,energy-bar,energy-value" # 第1行显示内容
ccpet config set display.line2.enabled true # 启用/禁用第2行
ccpet config set display.line2.items "input,output" # 第2行显示内容
ccpet config set display.line3.enabled true # 启用/禁用第3行
ccpet config set display.line3.items "total" # 第3行显示内容可用的显示项目:
- 仅第1行:
expression,energy-bar,energy-value,accumulated-tokens,lifetime-tokens,pet-name - 仅第2-3行:
input,output,cached,total,context-length,context-percentage,context-percentage-usable,cost
注意:目前,宠物相关元素只能在第1行使用,会话/上下文元素只能在第2-3行使用。
持续宠物监控
使用新的监控模式实时观察你的宠物:
# 开始持续监控(默认60秒间隔)
ccpet check --watch
# 自定义监控间隔(10-300秒)
ccpet check --watch --interval 30
# 简短形式
ccpet check -w --interval 45功能特性:
- ✅ 实时宠物状态更新
- ✅ 简洁的3行显示布局
- ✅ 倒计时器显示下次更新时间
- ✅ Ctrl+C 优雅退出
- ✅ 错误恢复和重试机制
- ✅ 可自定义刷新间隔(10-300秒)
- ✅ 原地更新,无屏幕闪烁
示例输出:
Fluffy 🐶(^_^) ●●●●●●●●●● 100.00 (838.9K) 💖25.84M
⏰ 距离上次喂食: 0分钟前
⏳ 下次更新: 10秒注意: 显示内容会在每个间隔原地更新,替换之前的内容,提供清晰的监控体验。
使用场景:
- 🎯 监控宠物能量衰减过程
- 🎯 观察喂食后的能量恢复
- 🎯 跟踪长时间会话中的状态变化
- 🎯 调试和测试宠物系统行为
状态显示
默认3行显示
Luna 🐶(^o^) ●●●●●●●●●● 98.52 (45.2K) 💖5.2M
Input: 2847 Output: 1256 Cached: 512 Total: 4615
Ctx: 2.4K Ctx: 12.0% Ctx(u): 88.5% Cost: $0.15注意: 宠物名字通过在display.line1.items配置中包含pet-name元素来控制。将pet-name元素放在列表中你希望显示的位置。上下文指标 (Ctx(u)) 显示为浅绿色。成本指标显示当前会话的总USD费用。
单行显示(极简)
配置:ccpet config set display.maxLines 1
Luna 🐶(^o^) ●●●●●●●●●● 98.52 (45.2K) 💖5.2M2行显示(平衡)
配置:ccpet config set display.maxLines 2
Luna 🐶(^o^) ●●●●●●●●●● 98.52 (45.2K) 💖5.2M
Input: 2847 Output: 1256 Cached: 512 Total: 4615自定义显示示例
隐藏宠物名字
ccpet config set display.line1.items "expression,energy-bar,energy-value,accumulated-tokens,lifetime-tokens"🐶(^o^) ●●●●●●●●●● 98.52 (45.2K) 💖5.2M
Input: 2847 Output: 1256 Cached: 512 Total: 4615名字在表情后
ccpet config set display.line1.items "expression,pet-name,energy-bar,energy-value,accumulated-tokens,lifetime-tokens"🐶(^o^) Luna ●●●●●●●●●● 98.52 (45.2K) 💖5.2M自定义行配置
ccpet config set display.line1.items "pet-name,expression,energy-value"
ccpet config set display.line2.items "input,output"
ccpet config set display.line3.items "total,context-percentage-usable"Luna 🐶(^o^) 98.52
Input: 2847 Output: 1256
Total: 4615 Ctx(u): 88.5%显示格式:
- 第1行(仅宠物元素):从
expression,energy-bar,energy-value,accumulated-tokens,lifetime-tokens,pet-name中选择 - 第2行(仅会话/上下文元素):从
input,output,cached,total,context-length,context-percentage,context-percentage-usable,cost中选择 - 第3行(仅会话/上下文元素):与第2行相同的元素
宠物名称显示:
- 通过在
display.line1.items中包含pet-name元素来控制 - 位置由
pet-name在元素列表中的位置决定 - 示例:
"pet-name,expression,energy-bar"(名字在前),"expression,pet-name,energy-bar"(名字在表情后)
宠物照顾指南
🌟 保持宠物健康
- 积极使用: 定期使用 Claude Code 来喂养你的宠物
- Token 转换: 1,000,000 tokens = +1 能量点
- 自然衰减: 约每分钟 0.0231 能量(约 3 天完全衰减)
😴 当宠物死亡时
如果你的宠物能量降到 0:
- 历史保存: 你的宠物完整历史会自动保存到墓地
- 新宠物诞生: 一个拥有随机名字和全新开始的宠物会诞生
- 传承保护: 所有之前的宠物记录都会安全存储在
~/.claude-pet/graveyard/ - 每个新 token 都有助于你的新宠物从零开始成长
🪦 宠物墓地与历史记录保存
ccpet 会在宠物去世时自动保存它们的传承:
自动历史保存:
- 当宠物死亡(能量 = 0)时,它们的完整状态会移动到
~/.claude-pet/graveyard/{宠物名}/ - 每个宠物都有自己的专用文件夹,最终状态得到保存
- 同名宠物通过序号处理(例如,
Fluffy-2/、Fluffy-3/)
墓地结构:
~/.claude-pet/
├── pet-state.json # 当前宠物
└── graveyard/
├── Fluffy/
│ └── pet-state.json # 完整最终状态
├── Shadow/
│ └── pet-state.json # 完整最终状态
├── Luna-2/ # 同名处理
│ └── pet-state.json
└── ...保存内容:
- ✅ 宠物名字和动物类型
- ✅ 最终能量等级和表情
- ✅ 完整的终身 token 统计
- ✅ 诞生时间和喂食历史
- ✅ 所有累计成就
原子操作:
- 安全的文件操作防止转换过程中的数据丢失
- 备份和回滚机制确保数据完整性
- 即使在系统错误时,你的宠物历史也永远不会丢失
故障排除
状态栏不更新?
状态栏只在你使用 Claude Code 时更新。使用 ccpet check 进行手动更新。
宠物消失了?
- 检查 Claude Code 设置:
cat ~/.claude/settings.json - 验证 ccpet 安装:
ccpet --version - 手动测试:
ccpet check
技术细节
数据存储
宠物状态保存在 ~/.claude-pet/pet-state.json 文件中,包含以下结构:
energy: 当前能量等级 (0-100)expression: 当前面部表情animalType: 宠物种类 (cat, dog, rabbit, panda, fox)petName: 每个宠物的唯一名字(自动生成)birthTime: 宠物诞生/重生时间 (ISO时间戳)lastFeedTime: 上次喂食时间戳totalTokensConsumed: 本生命周期消耗的总token数totalLifetimeTokens: 终身token消耗量accumulatedTokens: 等待转换为能量的token数lastDecayTime: 上次能量衰减计算时间戳- 会话指标:
sessionTotalInputTokens,sessionTotalOutputTokens等
墓地存储:
- 历史宠物存储在
~/.claude-pet/graveyard/{宠物名}/pet-state.json - 完整状态保存,包含所有统计和时间戳
- 原子文件操作确保转换过程中不会丢失数据
系统会自动为旧版本状态文件添加缺失字段(如 birthTime 和 petName)以保持向后兼容性。
宠物命名系统
ccpet 具有智能宠物命名系统,支持文化多样性:
- 随机名字生成: 每个宠物都会从精选列表中获得独特的随机名字
- 双语支持: 支持英文和中文名字
- 文化多样性: 来自不同文化的名字(日文、中文、英文等)
- 持久身份: 宠物名字会保存并在会话间持续存在
- 自动分配: 新宠物会自动获得分配的名字
示例名字:
- 英文: Whiskers, Shadow, Luna, Max, Bella, Charlie
- 中文: 小白 (Xiaobai), 毛毛 (Maomao), 花花 (Huahua), 团子 (Tuanzi)
开发
测试
npm test # 运行所有测试
npm run test:coverage # 运行测试并生成覆盖率报告构建
npm run build # 构建分发文件
npm run watch # 构建并监视更改许可证
MIT License
享受你的虚拟编程伙伴!🐾
记住:喂得好的宠物是快乐的宠物。保持编码来保持你的宠物健康!
