# zcode-assistant **Repository Path**: argustang/zcode-assistant ## Basic Information - **Project Name**: zcode-assistant - **Description**: zcode 已提优化意见,为何迟迟不更新?是人性的扭曲,还是道德的沦丧。 既然你迟迟不优化,那让我来把。zcode助手,你值得拥有! - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2026-08-13 - **Last Updated**: 2026-09-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # zcode-assistant > zcode 使用增强工具:配额监控、模型管理、自动切换、悬浮球、账号切换、用量统计。 一个基于 **Tauri 2 + Vue 3 + myui + TypeScript + Vite** 的桌面应用,采用统一界面方案(myui 设计令牌 · OKLCH 液态玻璃 · 深/浅双主题),所有数据本地读写 `~/.zcode/v2`,不外传。 ## ✨ 功能特性 | 模块 | 说明 | | --- | --- | | 📊 总览 | 配额监控(每 5 小时 / 每周)、当前模型、账号状态,托盘双环图标实时反映用量 | | 🧩 模型管理 | 拉取可用模型、配置上下文 / 输出上限、写回 zcode、自定义供应商 + 预设一键填充;支持与 Oh My Pi(OMP)原生 `~/.pi/agent/models.json` 手动双向同步;Token Plan 6 家供应商自动额度查询 | | 🔀 自动切换 | 定时切换、配额耗尽自动切换到下一个供应商(直写 zcode 会话模型选择记录 + 直改 setting.json) | | 📁 项目 / 会话 | 读取 zcode 会话库,按项目查看会话数 / 对话次数 / token 消耗;行内改名、归档 / 恢复(项目 / 会话独立按钮)、批量归档(会话 / 项目)、批量删除;清理缓存(按 3 天–1 个月时间范围批量清理久未活跃会话及其数据并压缩会话库) | | 👤 智谱账号 | 多账号捕获与一键切换 | | 🌐 网络代理 | HTTP / SOCKS5 代理 | | 📈 用量查询 | 解析 zcode rollout 日志,按供应商 / 模型 / 日期统计 token 用量与速度,支持月限额桶 | | 🎨 美化 | ZCode 主题换肤 / 换字体 / 毛玻璃 / 图片·视频壁纸:asar 秒级原地补丁注入 `file://` 外链,主题资产外置 + 每秒热重载,参数改动约 1 秒实时生效,支持三区域独立透明度与文字描边 | | ⚙️ 设置 | 主题(深色液态玻璃 / 浅色)、配额查询模板、关于、检查更新 | | 🎈 悬浮球 | 桌面悬浮快捷面板 | ## 🚀 快速开始 ### 环境要求 - [Node.js](https://nodejs.org/) ≥ 18 - [Rust](https://www.rust-lang.org/)(stable 工具链) - Tauri 2 系统依赖:参见 [Tauri Prerequisites](https://tauri.app/start/prerequisites/) ### 安装依赖 ```bash npm install ``` ### 开发模式 ```bash npm run tauri:dev ``` ### 打包发布 ```bash npm run tauri:build # 产物在 src-tauri/target/release/bundle/ ``` ## 🧱 技术栈 - **前端**:Vue 3 · myui(统一组件库,git 依赖)· Element Plus · TypeScript · Vite 6 - **后端**:Rust · Tauri 2 - **存储**:SQLite(rusqlite,bundled)+ 系统 keyring(凭证安全) - **加密**:AES-256-GCM(zcode `credentials.json` 的 `enc:v1` 解密) - **网络**:reqwest(rustls,免 OpenSSL) ## 🔢 版本号与发版 版本号的**单一真相源**是 [`src-tauri/Cargo.toml`](./src-tauri/Cargo.toml) 的 `[package] version`: - 编译期通过 `env!("CARGO_PKG_VERSION")` 注入(见 [`version.rs`](./src-tauri/src/version.rs)) - `npm run build` 会自动通过 [`scripts/sync-version.mjs`](./scripts/sync-version.mjs) 同步到 `package.json` / `package-lock.json` - `tauri.conf.json` 不再写 `version` 字段,Tauri v2 直接读 Cargo.toml - 单独同步:`npm run version:sync` 发版流程: ```bash # 1. 改 Cargo.toml 的 version # 2. 同步 + 打包 npm run version:sync npm run tauri:build # 3. 发布到 Gitee / GitHub(需设置对应 TOKEN 环境变量,或仓库根 .gitee-token / .github-token 文件) npm run release:gitee -- npm run release:github -- # 例:npm run release:gitee -- 0.2.0 CHANGELOG.md ``` ## 📦 仓库 - Gitee: - GitHub: ## 🔄 自动更新 采用**自定义轻量更新**方案(不集成 `tauri-plugin-updater`,无签名密钥 / CI manifest): - 后端 `check_for_updates` 拉取 Gitee 发行版列表,按 semver 取最大 tag 与当前版本比较 - 发现新版本后弹窗:`更新` → 流式下载安装包(进度条)→ `安装并重启` - 非 Windows 平台走「打开下载页」浏览器兜底 - 配置项在 [`src-tauri/src/updater.rs`](./src-tauri/src/updater.rs) 顶部的 `RELEASES_ENDPOINT` ## 📊 匿名使用统计(opt-in) - 默认**关闭**,每个新版本首次启动询问一次(同意 / 暂不) - 仅上报:**匿名设备 ID + 应用版本 + 操作系统**,绝不收集账号 / 凭据 / 连接内容 - 经 [Umami Cloud](https://cloud.umami.is/) 上报,每版本一次 - 启用:在 [`src/lib/usageStats.ts`](./src/lib/usageStats.ts) 填入你注册的 `UMAMI_WEBSITE_ID`(留空则跳过上报) ## 🔒 隐私与安全 - 所有配置本地读写,不外传 - API Key 等凭证通过系统 keyring 存储,界面层脱敏展示 - 仓库已通过敏感信息扫描,无硬编码密钥 / 令牌 ## 📁 项目结构 ``` zcode-assistant/ ├── src/ # 前端(Vue 3 + TS) │ ├── views/ # 各功能页面(每个视图一个目录) │ ├── components/ # 复用组件(壳层、弹窗、字段件、配额环等) │ ├── composables/ # 组合式函数(toast、换肤、更新检查) │ ├── store/ # 轻量全局状态(主题 / 布局偏好) │ ├── icons/ # 自绘 SVG 图标(注册进 myui 图标白名单) │ ├── i18n/ # vue-i18n(仅承载 myui 库词条) │ ├── lib/ # 工具库(使用统计等) │ └── api.ts # Tauri command 调用封装 ├── src-tauri/ # 后端(Rust + Tauri) │ ├── src/ │ │ ├── commands/ # #[tauri::command] 命令模块 │ │ ├── zcode/ # zcode 配置读写 / 解密 / 进程 │ │ ├── updater.rs # 自动更新逻辑 │ │ ├── version.rs # 版本号常量 │ │ └── db.rs # SQLite 数据层 │ └── tauri.conf.json └── scripts/ # 版本同步 / 发版脚本 ``` ## 📄 License 私有项目。 ## 🔄 更新日志 完整版本历史见 [CHANGELOG.md](./CHANGELOG.md)。最新版要点摘录: ### 未发布 ### v0.13.0 (2026-09-22) **新增**:ZCode 3.14 模型信息自动迁移。ZCode 升级到 3.14 时自带的迁移只搬运了模型的上下文窗口(`limit.context` → `properties.contextWindow`),模型原有的**输出上限、模态、推理档位**全部没跟着搬,表现为「升级后原来导入的模型信息都不见了」(旧 `config.json` 里这些数据仍在,只是新配置里为空)。现从旧 `config.json` 自动回填缺失字段,**只补缺不覆盖**、幂等可重复执行:应用启动时后台自动跑一次,模型管理页进入时再核对一次,有回填时页面顶部给出横幅汇总(供应商 / 模型 / 字段数),也可点「重新检查」手动重跑。回填时保留 ZCode 自己写入的字段(`optionSpecs.reasoningLevel.map` 等请求体映射),纯文本模型不写 `inputFormat` 以免覆盖内置更准确的模态声明,手动配置的模型规则原地补齐、不会被挪进智能规则表。 ### v0.12.2 (2026-09-22) **修复**:ZCode 升级到 3.14 后「模型管理」失效——ZCode 3.14 起把用户自定义供应商与模型配置从 `~/.zcode/v2/config.json` 迁到 `~/.zcode/v2/provider_config.json`(`schemaVersion: 1` 全新结构),旧文件不再被读取,导致改上下文 / 输出上限、启用禁用模型、增删供应商与模型、拖拽排序等操作全部写进废弃文件而不生效。新增 `provider_config.rs` 适配层做双向投影:读取时把新结构还原为既有的 `{"provider": {...}}` 形状,写回时把改动合并进新结构(只动用户自定义 provider,`builtin:` / `account:` 归 ZCode 内置配置所有原样保留),并保留 ZCode 自己写入的字段(`optionSpecs.reasoningLevel` 等请求体映射、套餐模型顺序);订阅套餐 provider 的新 id(`account:bigmodel-individual-coding-plan` 等)投影时还原为旧 `builtin:*` id,使既有订阅识别与配额逻辑继续生效;旧版 ZCode 仍自动回退 `config.json` · 账号切换(快照 / 切换 / 回滚)同样按版本落到当前生效的配置文件,新格式下只覆盖账号作用域的订阅规则,用户自定义供应商不受影响 · 「导入配置」来源 `zcode` 的默认路径与解析同步适配新文件。 ### v0.12.1 (2026-09-21) **修复**:`addProvider` invoke 时参数键误写为 `baseURL`,Tauri v2 默认按 snake_case→camelCase 自动映射 `base_url`,期望前端键为 `baseUrl`,导致后端报 `missing required key baseUrl`;TS 形参名保持 `baseURL`,仅修正 invoke 载荷键,与同文件 `updateProvider` / `testConnection` 的「TS 形参 `baseURL`、invoke 键 `baseUrl`」写法对齐。症状:模型管理「添加供应商」保存按钮提交后弹窗报「invalid args baseUrl for command add_provider: missing required key baseUrl」。 ### v0.12.0 (2026-09-19) **新增**:主界面接入命令面板(Ctrl/Cmd+K 唤起),按关键词搜索并跳转全部 10 个功能页。 **变更**:前端整体迁移到统一界面方案——React 18 → Vue 3 + myui 组件库(v0.7.0 起),壳层布局对齐 unified-ui 模板(顶栏 + 可折叠侧栏 + 内容区 + Overlay 层),全部页面 / 弹窗 / 表单改用 myui 组件与统一设计令牌(OKLCH 液态玻璃、`html.dark/html.light` 双主题),新增《统一界面重构评估报告》《myui 缺口反馈清单》工程文档 · 主题系统升级为三态(深色 / 浅色 / 跟随系统),旧主题偏好自动迁移 · 「外观定制」换肤在统一令牌体系上重写,存量偏好无缝沿用 · 模型管理页巨石拆解(3838 行单文件 → 主视图 + 5 个弹窗子组件 + 配额行组件),行为不变 · 确认交互统一为 Promise 式 `confirmDialog()`,不再使用原生 `confirm()` · 依赖变更:移除 React 全家桶,新增 vue / element-plus / vue-i18n / myui / markdown-it;`npm run test:ts` 改为 `vue-tsc` · myui 三轮跟进升级至 v0.18.0(v0.10.0 回落框架能力删除 5 个本地兜底组件;v0.12.0 修复命令面板 0×0 与双环分档缺陷;v0.18.0 顺带修复侧栏线性图标被灌成实心块的观感问题)。 **修复**:项目 / 模型 / 自动切换 / 账号 / 美化等页状态标签与文本重叠——`MyBadge`(el-badge 角标,内容绝对定位)被误用作内联状态药丸,全部改用 `MyTag` · 主窗口只显示背景图、界面不渲染——壁纸层 `fixed + z-index:0` 绘制顺序盖住无层叠上下文的壳层,改为 `z-index:-1` 置底 · 设置页「外观」主题按钮选中态样式笔误与 Beautify 徽标类名笔误。 ### v0.11.0 (2026-09-11) **新增**:模型管理新增 Oh My Pi(OMP)模型双向同步——可从 `~/.pi/agent/models.json` 预览并导入供应商、模型名称及上下文 / 输出限制,也可将 ZCode 自定义供应商同步回 OMP;两端均需在预览中勾选确认,按 `baseUrl + apiKey` 覆盖或新增,不删除既有条目。导出自动生成 `models.json.bak`,且不会修改 OMP `settings.json` 的默认供应商 / 模型。 ### v0.10.0 (2026-09-09) **新增**:侧边栏新增「重启 ZCode」快捷入口,位于底部操作分隔线之上;点击后显示重启中状态与结果提示,无需切换到其他页面即可手动重启 ZCode。 ### v0.9.0 (2026-09-07) **新增**:美化「外置主题 + 实时热更新」架构重构——`app.asar` 仅注入 3 个 `file://` 外链(变量 / 主题 / 运行时脚本),主题资产外置到本应用数据目录;已注入状态下**所有参数改动约 1 秒实时生效**(运行时脚本每秒热重载变量文件),无需重打 asar / 重启 ZCode;「应用美化」仅首次注入 / ZCode 升级 / 修复注入时使用 · 美化新增视频壁纸(mp4 / webm / mov,按扩展名自动切换 `