Repository navigation
Releases
Releases · Zomcxj/ModelHarbor
ModelHarbor v0.1.7——DSH 档位自动探测与凭据库修正
ModelHarbor v0.1.7——DSH 档位自动探测与凭据库修正
新增
- DSH 档位自动探测:不再写死
profiles/desktop/。按desktop → sdk → web取第一个真实存在的档位作为默认读写目标,任一档存在即判定「已安装」——只装 DSH CLI / SDK(profiles/sdk/)或 web(profiles/web/)的机器,图标同样点亮、保存可用;三档都不存在的新机器仍创建 desktop 档(与 DSH 桌面端自身约定一致)。 - 镜像目标动态化:保存时把 provider 集合同步到其他已存在且可拼接的档位,不再固定 desktop ↔ sdk;不存在的档位绝不创建。
修复
- 凭据库位置:DSH 的密钥库是全局
~/.dsh/.credentials.yaml(dsh-credentials-local只读这一份),此前误写到<profile>/.credentials.yaml——DSH 页密钥显示为空,还在 profile 目录里留下 DSH 不读的野文件。现统一读写全局库,profile 目录里的同名文件不再被生成。 - 移除 DSH 页头「已读 … · N 个 provider / M 个模型」标签:与其它页页头保持一致。
ModelHarbor v0.1.6
ModelHarbor v0.1.6——DSH 档位补丁文档读写 + 界面视觉层打磨
新增
- DSH 档位补丁文档读写:DSH 0.2 起 provider 配置位于
~/.dsh/profiles/{desktop,sdk}/cordis.patch.yml(llm-pi-ai条目的config.providers),settings.yaml降级为一次性导入源。本版按新形态读写:保存只改写 providers 块(文本级替换),文件头注释与桌面档其余 9 个补丁条目原样保留;无 provider 时写{};旧式 settings.yaml 形态仍可解析,写入补丁路径时自动转换形态。 - 对档镜像:桌面档与 sdk 档必须一致。主写入成功后,用同一份结果渲染进对档自己的文档(保住对档的文件头与其它条目);对档不含
llm-pi-ai条目不镜像(避免整份文档被新文档覆盖,丢掉对档其它条目)。不变量:镜像档的 provider 集合 == 主文档的 provider 集合。 - 页头显示当前源文档:DSH 页在「写入」路径旁多一行「已读: <档位>/<文件名> · N 个 provider / M 个模型」,悬停显示完整路径。本工具同一时刻只加载一份源文档、各页共享同一份数据(见 README),这一行让「现在读的是哪一份」一眼可辨。
- 点击反馈脉冲:页签 / 工具栏 / chip 被点击时给出强调色脉冲。
- 用量页行悬停动效:行高亮渐入 + 主题圆角(原为硬切与硬编码圆角)。
修复
- DSH 跨格式保存不再留住目标档多余的 provider:从某一页保存到 DSH 档时,本应由界面列表决定目标档有哪几个 provider(其它 agent 一直是这个语义),但 DSH 档的 provider 容器没被找到,于是界面上删掉的 provider 保存后照样回来。现两种文档形态统一为:集合与顺序都取自界面,同名 provider 仍保守合并——目标档里 UI 不建模的字段(
retryPolicy/timeoutMs)保留。 - DSH 镜像对档不再丢 provider:镜像按主文档保住的集合渲染,而不是按界面原始列表整体替换(曾把对档从 12 个削到 9 个)。
- 混合分隔符路径也能镜像:路径同时含
\与/时(手输路径会出现)此前会被当成补丁文档处理却静默不镜像,两档就此漂移。 - 输入框聚焦框可见:egui 用
visuals.selection.stroke画聚焦框,而本工具该字段是「强调色上的墨色」(保证选中文字可读),导致深色主题聚焦框纯黑、浅色主题纯白,落在面板上都看不见;未聚焦态却有主题描边,于是点进输入框边框像「消失」。现统一到独立聚焦环,23 处输入框全部收口。 - 开关可用键盘操作:开关此前由
allocate_exact_size(.., Sense::click())生成自动 id,调用方传入的 id 只用于动画状态,request_focus静默失效。改为以调用方 id 交互;按钮、开关、工具栏图标、chip 一并补齐聚焦环。 - 状态栏按语义着色:信息 / 完成 / 失败分三色;「一键保存」取各部分里最差级别。
- 图表 tooltip 表格化:日期头 + 分隔线 + 名称固定槽 + 数值右对齐 + 合计行。
- 系列色在两套主题下都可读:原按固定偏移取色,浅色主题下第 2 条系列色对比度仅 1.68(几乎不可见)。现按相对亮度收敛,并按色相 + chroma 双维度保证两两区分度 ≥ 40。
- 拖拽 ghost 跟随形状预设:原为固定圆角与字号;并修复拖页签完全不画 ghost 的缺口。
- 窗口圆角跟随形状预设:此前是 egui 默认的 6。
- 禁用态保存按钮不再用强调色:褪色的强调色仍读作「主操作可用」,中性底才读作「无事可做」。
- 探测身份版本刷新:User-Agent 更新到当前主流版本(opencode/2.0.32、claude-cli/2.0.28),Claude Code 身份补上
X-App: cli;有意不发anthropic-beta(过期的 beta 声明会改变上游行为)。
内部改进(无行为变化)
- 动效统一到同一条缓动曲线并按「动的面积」分四档时长。
- 依赖与安全:rustls-webpki 0.103.16、webpki-roots 1.0.11(CVE-2026-111943);zstd 批量公告走
.cargo/audit.toml忽略(附逐条理由与出口条件,上游升级到 0.14 线后删除)。
注意
- DSH 跨格式保存现在会让目标档的 provider 集合与界面一致——界面里删掉的 provider 会被真删。写入前会自动备份到
~/.modelharbor/backups。 - 在 DSH 页保存时,界面显示的是当前加载的源文档的 provider(各页共享一份数据)。若发现显示的 provider 数与你预期的 DSH 档不一致,看页头那行「已读: …」确认当前源文档是哪一份。
ModelHarbor v0.1.5
ModelHarbor v0.1.5——opencode v2 文件新增条目形状修正
修复
- v2 文件新增条目不再混入 v1 形状:v2 配置下「新增 Provider / 添加模型」的草稿 schema 跟随加载文件版本——协议包下拉按 v2 拼全名(
openai-compatible等),确认添加的条目不再落@ai-sdk/*的 v1 形态。 - v2 页新增表单不再显示 reasoning:v2 schema 无此键,新增表单与添加模型行一律隐藏推理开关;跨版本写到 v1 目标(kilo / mimo 等)时仍按既有决策落
reasoning: true。 - README 用量页截图更新:替换为当前版本界面(总览 + 趋势 / 热力图 + 明细表两张)。
ModelHarbor v0.1.4
ModelHarbor v0.1.4——中转站数据增强与 v2 温度修正
新增
- 面板按天用量:填了面板访问令牌(PAT)的 new-api 站点,查询用户数据时顺带请求
GET /api/data/self(近 7 天)——面板聚合覆盖全部来源的用量(含非本机、已被清理的会话),与本地扫描互补。悬停详情新增「面板按天」分节,按「今天 / 昨天 / N 天前」列出每日消耗(美元)与请求数;只进悬停展示,不并入本地账本,避免与本地扫描双重计数。读不到 / 未填 PAT / 站点不支持(404 / 401)时静默跳过,与签到同一套容忍语义。 - key 到期提醒:
/api/usage/token返回的到期时间现已展示——悬停新增「到期:YYYY-MM-DD」,卡片行内只在临近(≤7 天)或已过期时追加「N 天后到期 / 已过期」,平时不占位置;兼容账单路径同收access_until。无期限(0 / 负值)不显示;非 Windows 按 UTC 口径计算。
修复
- v2 agent 的 temperature 丢失:v2 文件里的极简 agent(无
request、model 不带#)此前被逐条嗅探误判成 v1——温度从顶层死键读(界面有数值但 v2 运行时不认),保存时还会走「v1→v2 转换」静默删掉已有的request.body.temperature。现条目版本判定跟随文件;v2 下温度标签同步显示为request.body.temperature(与 baseURL 等字段的 v2 标签机制同构);kilo / mimo 不涉及(写盘始终 v1)。 - provider 保存进错误容器:目标文件里 opencode 单数
provider与遗留顶层providers并存时,条目被 upsert 进遗留容器、目标 provider 原样留在原地。现仅在无单数键时才落复数。 - 安全依赖:rustls 0.23.45 → 0.23.46。
ModelHarbor v0.1.3
ModelHarbor v0.1.3——sub2api 站点直查余额
新增
- 站点类型切换:「令牌」面板每个站点新增「类型:NewAPI / sub2api」按钮,点击即切换并落盘,同时丢弃该站已缓存的查询结果;原令牌保留、切回即恢复。sub2api 站点隐藏面板令牌与用户 ID 两行输入,状态显示「sub2api 直查」。
- sub2api 余额直查:标记为 sub2api 的站点直接用 provider 的
sk-key 请求GET {base}/v1/usage,返回站点级剩余 / 已用 / 总额——无需面板访问令牌与用户 ID,也不再请求 NewAPI 面板体系的任何接口(令牌额度 / 兼容账单 / 账户 / 签到)。 - 宽容解析:兼容各版本 sub2api 响应——
quota.limit/quota.used、remaining/balance/quota.remaining任一读数即可,全缺时按「总额 − 已用」兜底;单位缺省 USD。 - baseUrl 自动归一:根路径、带
/v1、整条/v1/usage三种填法都归到同一用量端点。
修复
- 文档:DETAILS 补上 opencode v2 配置支持、用量区间记忆、预设下拉「同步」说明;18 处口语表述书面化。
- 令牌文件 schema v3:新增
site_kinds段记录站点类型,旧文件兼容;删除站点时连站点类型一起清除。
ModelHarbor v0.1.2
ModelHarbor v0.1.2——opencode v2 配置完整支持
新增
- opencode v2 配置读写:识别 opencode 新版 v2 schema(复数顶层键、
package/settings、capabilities.*、model#variant、request.body.temperature、variants 数组、body.store)。给 v1 就更新 v1、给 v2 就更新 v2——写回形状跟随目标文件,跨版本自动全量转换。v2 页字段(baseURL / 输入模态 / 工具调用 / store)与标签(settings.baseURL、capabilities.input、package)完整显示;协议包下拉只显示末段(如openai-compatible),按当前文件版本拼回全名。 - v2 只属于 opencode 本家:kilo / mimo 永远按 v1 解析、显示 v1 键名、写盘 v1 形状(v2 包名自动翻译回
@ai-sdk/*),不再跟着 opencode 的版本变;含 v2 特征的内容也只会判别为 opencode 格式。 - v2 模型 reasoning 默认勾选:v2 无 reasoning 键,解析默认按勾选处理——保存到 v1 目标(kilo / mimo 等)时落
reasoning: true;写回 v2 仍不落该键,round-trip 保真不受影响。 - 模型上下文 / 输出一键同步:每个模型的 context / output 预设下拉首项新增「同步」,点击把当前模型的值应用到本页全部模型(两个下拉各自独立)。
- 用量页记住时间区间:上次选的「今日 / 本周 / 本月 / 全部」写进设置,重启后沿用。
- 用量视图重做:总览通栏 + Agent / 模型双列等高对齐 + 会话表三倍高;区间切换收进状态行右侧分段控件;总览数字与构成滚动动画;修复空闲时用量页长时间不刷新(3 秒指纹扫描被饿死)的问题。
- 会话删除:会话表可直接删除、从源头移除;账本保留其已计入的贡献——「隐藏」而非「抹除」,总量不缩水。
- 常驻托盘:默认开启;点 X 收进托盘,单击唤回,托盘菜单可退出;隐藏状态下的唤回 / 退出修复。
- 启动页跟随顶栏拖动顺序:第一个已安装 agent 启动即打开自己那页,不再固定 opencode。
修复
- 启动路径语义:每页启动一律加载官方默认路径(opencode 即
~/.config/opencode/opencode.json);会话内切换的文件只本次会话生效、保存写该文件,重启不再被记住;路径记到用户操作的页,不再按文件内容跨页误记。 - opencode 复数顶层键:支持
agents/providers复数键的内容判别与解析。
ModelHarbor v0.1.1
ModelHarbor v0.1.1——用量统计语义修正
修复
- 删除会话不再让总量缩水:删除只把会话从列表里隐藏并永久忽略(之后的扫描不再把它并回),它已计入的贡献保留在按天统计与总量里——「隐藏」而非「抹除」;磁盘上的会话文件照旧一个字节不碰。
- 删除与后台扫描并发更稳:上一版「在途扫描整份作废重扫」的机制随新语义移除——删除后的在途扫描照常并入账本,不再有作废窗口,也不再有竞态触发的额外重扫。
- 若干构建修正:适配新编译器的浮点字面量 lint、恢复被误吃的测试属性。
ModelHarbor v0.1.0
ModelHarbor 首个正式版本——桌面端多 agent 配置管理工具(Rust + egui / Windows,免安装单文件)。
新增
- 提供商配置管理:覆盖 pi / opencode / kilo / micode / omp / dsh / zcode / workbuddy / qwen / kimi 十类 agent,支持新建、复制、切换、对比、删除;密钥全程掩码,不落明文。
- 本机用量:基于 tokscale 扫描内核,按天分桶统计会话与 token 用量;7 / 30 / 90 / 一年 / 全部区间图表(柱状 / 折线 / 堆叠),支持按 agent 筛选、按列排序,并给出连续使用天数与单会话明细。
- 打开秒显:进入用量视图先呈现本地账本缓存,后台扫描完成后自动刷新。
修复
- 扫描在途时删除会话不再污染按天合计:过期扫描按代数整份作废,随即以最新忽略名单重扫。
ModelHarbor v0.0.14
新增
- 「获取模型」升级为四合一探测:连通性 + 鉴权 + 模型列表 + 延迟一次拿到,后台线程运行不卡界面,探测中可随时取消。
/models404 / 405 时自动换下一个候选端点;失败给出中文分级原因(401=密钥无效、403/1010=网关或 Cloudflare 拦截、404=端点不对、429=限流、超时/网络错误各有明确文案),不再甩原始报错。同一 Base URL 的结果缓存 24 小时(只存模型列表,不含任何密钥),命中直接开面板;状态栏显示「最近获取:HH:MM(成功 N 个 / 失败原因)」。 - 探测结果默认不勾,手动挑选:结果网格里已配置的模型画成禁用勾选框,新增项默认全部不勾,勾选后点「添加 N 个」写入。写入仍然只填空、不覆盖已有模型(与之前一致)。
- 写盘前自动快照:目标文件在磁盘上被外部修改过时(内容与上次记录不符),保存覆盖前自动在
%USERPROFILE%\.modelharbor\backups\留一份{文件名}.{时间}.auto.bak快照;本工具自己写入的内容不重复留底。按保留策略自动清理(Auto 最近 20 条),快照失败一律静默、不挡保存。WSL 路径不在快照范围。
修复
- 无
内部改进(无行为变化)
- 仓库拆分为 core / app 双 crate:解析、序列化、探测、快照等纯逻辑进
model_harbor_core,界面在model_harbor_app。日常改界面重编译约 51s → 17s,纯逻辑测试可单跑(约 1.5s)。 - 原先「纯拉取模型列表」的实现被探测超集完全取代,已下线。
- README 与 docs/DETAILS.md 同步更新。
注意(行为变化)
- 「获取模型」按钮的行为变了:从「拉列表、勾了就加」变为「四合一探测、默认全部不勾、勾选后点『添加 N 个』才写入」。已有模型的配置照旧一字不动。
- 保存时可能多出
backups/目录:仅当配置文件被外部(编辑器等)修改过时,覆盖前自动留底一份;不需要手工管理。 - 配置文件格式与保存语义没有变化:升级后无需迁移,未编辑的字段依旧一字节不写回。
ModelHarbor v0.0.13
新增
- 亚克力背景:外观面板新增开关(文案「亚克力」,原名「玻璃背景」)。面板与卡片半透明,透出桌面;底层是 Windows 官方 Desktop Acrylic + 窗口圆角。需 Windows 11,旧系统降级为不透明。与主题、形状三者正交,开关状态持久化。
修复
- 卡片「删除 / 复制」按钮不再消失:打开侧边预览、且 provider 连通性测试返回较长错误文本时,卡片头按钮组会被挤出视口而整颗消失。改为先量右侧按钮组、再按剩余宽度截断左侧内容,按钮恒贴卡片右缘。Provider 与 Agent 卡片一并修复。
- WSL 同步不再误报「未安装」:保存时若安装状态探测尚未完成,提示「正在检测安装状态,本次跳过同步」;仅探测确认未安装才提示「未安装」。
内部改进(无行为变化)
- 注释精简。
注意
无