CLI-Manager V1.1.2
安装
| 平台 | 格式 |
|---|---|
| Windows | .msi 安装包 |
| macOS (Apple Silicon) | .dmg 磁盘映像 |
| Linux | .deb / .AppImage |
- Windows 首次安装可能触发 SmartScreen 提示,点击"仍要运行"继续
- macOS 应用未经 Apple 签名/公证,首次打开可能提示"已损坏"或"无法验证开发者"
macOS 安装说明
如果已拖入"应用程序"目录,执行:
xattr -cr /Applications/CLI-Manager.app
open /Applications/CLI-Manager.app也可以在 Finder 中右键应用图标,选择"打开",或在"系统设置 → 隐私与安全性"中点击"仍要打开"。
变更日志
模型价格设置
核心功能
- 新增「模型价格」设置模块:设置中心新增独立的「模型价格」页(位于「供应商」之后),集中管理各模型的 Input / Output / Cache Read / Cache Create 单价(单位统一为 USD / 1M tokens)。
- 识别本地模型:一键扫描
~/.claude/projects与~/.codex/sessions历史日志中的模型分布,自动列出本地实际使用过的模型,并高亮「缺失价格」的模型引导补全。 - 手动添加 / 编辑 / 删除:支持手动新增模型定价、编辑既有价格、删除条目;删除采用统一风格的确认弹窗(替换原生
window.confirm,修复样式不统一与「取消仍删除」的问题)。 - 一键远程同步:从 LiteLLM 与 OpenRouter 拉取官方定价,按「精确 → 大小写 → 去前缀尾段 → 规范化 → Jaccard/Levenshtein 模糊」分级匹配;精确/大小写命中自动应用,模糊命中进入候选区供确认。
- 候选批量应用:同步后的候选可逐个确认,也可「全部应用候选」一键批量写入,避免逐条点击。
费用统计接入
- 终端实时统计:当前会话预估费用与今日费用改为优先读取本地模型价格表(前端缓存为权威源),不再依赖硬编码价格。
- 历史用量分析:
history_get_stats费用计算优先使用前端推送的后端价格缓存,硬编码价格表降级为兜底;模型删除即视为「未定价」,计入unpriced_tokens。 - ccusage 用量分析:保持使用 ccusage 工具自身估算,不接入本地价格表。
技术实现
- 数据层:新增 SQLite migration v11 建
model_prices表(model主键 + 四类单价 +source/source_model_id/raw_json/时间戳);前端modelPricingStore负责 CRUD、种子初始化与候选应用,DB 为唯一权威源。 - 前后端桥接:前端启动/变更时通过
model_prices_set_cache把价格推送到后端内存缓存(OnceLock<RwLock<HashMap>>),后端费用计算读缓存,避免后端猜测 DB 落盘路径。 - 远程同步命令:新增
model_prices_sync(reqwest拉取 + per-token×1e6 换算 + 分级匹配 + 候选评分),新增model_pricing命令模块。 - 复用归一化:「识别本地模型」复用
historyStore的normalizeStats兜底 snake/camel 与缺失字段,修复直接读原始返回导致的undefined.map报错。
终端侧边面板(实时统计 / Git 变更)
统一侧边面板与合并开关
- 合并为单个 Tab 面板:实时统计与 Git 变更默认合并为终端右侧的单一侧边面板,顶部 Tab 切换,避免两个 290px 面板同时挤占终端空间;工具栏「统计」「Git 变更」按钮分别定位到对应 Tab,再次点击关闭。
- 新增合并开关:设置 →「通用 - 侧栏与行为」新增「合并实时统计与 Git 变更面板」开关(默认开启),持久化字段
terminalSidePanelMerged;关闭后两者恢复为独立面板,可同时并排显示,满足需要同时查看两个窗口的用户。 - 面板宽度可调:合并模式侧边面板左缘可拖拽调整宽度(220–500px,rAF 节流,松手持久化到本地)。
Git 变更面板增强
- 文件树一键展开/收起:Git 变更面板头部新增「展开 / 收起」按钮,对整棵文件树批量全部展开或全部折叠。
- 滚动条样式统一:Git 变更列表滚动条改用与实时统计一致的细滚动条样式(
ui-thin-scroll,6px、半透明、hover 加深),消除两面板滚动条视觉差异。
响应式修复
- 修复窗口缩小时右侧面板覆盖终端:非合并模式下两个固定宽度面板会在窄窗口挤压主终端区域;恢复响应式约束——窗口 < 1100px 时打开一个面板自动收起另一个、并在窗口缩小时通过 resize 监听被动收起 Git 面板(优先保留实时统计),保证终端区域始终可用。