# upload-tool **Repository Path**: rymaker/upload-tool ## Basic Information - **Project Name**: upload-tool - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-05 - **Last Updated**: 2026-11-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AI Code Tool Updater (TUI) 一款基于 [blessed](https://github.com/chjj/blessed) 的**终端 UI** 版 AI 编程助手工具更新器,在 Linux 终端中检测版本并一键更新。从原 Electron 版改造而来,去除了所有桌面端依赖。 ## 功能特性 - 自动检测 20 个 AI 编程与开发 CLI 工具的本地版本与远端最新版本 - 一键安装未安装的工具、一键更新可更新的工具(或单独安装/更新选中项) - 支持切换 npm 镜像源(官方源 / 淘宝镜像源),切换后立即用于检测与安装 - 支持添加/移除自定义工具(任意 npm 包 + CLI 命令名) - 实时日志面板,流式输出 npm 安装过程;支持导出日志到文本文件 - 头部展示 Node.js / npm 版本与系统发行版信息,环境异常时在日志中提示 - 一键将 `agyyolo`(`agy --dangerously-skip-permissions`)函数配置到 `~/.bashrc` 和 `~/.zshrc` - 彩色状态徽章:最新 / 可更新 / 本地较新 / 未安装 / 检测失败 - 远端版本查询失败自动重试(最多 2 次,线性退避),网络抖动时减少「检测失败」 - 版本按语义化版本号比较大小,本地比镜像源更新时标记为「本地较新」而非提示更新,避免一键更新变成降级 - 头部常驻显示当前任务状态(就绪 / 检测中 / 更新中),任务进行中时按键会给出提示而不是静默忽略 - 霓虹动效:标题渐变、边框色相循环、底部按键高亮、头部波形;宽终端右侧有实时 3D 舞台(光照环面、线框立方体、合成波网格)。检测或更新时舞台加速。按 `v` 关闭 - 纯终端运行,无需 X11 / Wayland 桌面环境 支持工具:Kimi Code、Claude Code、OpenAI Codex、OpenCode、CodeBuddy、CNB CLI (cnb)、Qwen Code、Gemini CLI、Grok CLI (grok)、Google Antigravity CLI (agy)、AtomCode、Qoder CLI (qodercli)、Qoder CLI CN (qoderclicn)、MiMo Code (mimo)、Cursor CLI (cursor-agent)、Command Code (command-code)、Cline CLI (cline)、DeepSeek Harness (dsh)、MiniMax Code (mcode)、Muse Code (muse),以及任意用户自定义的 npm 包工具。 > 注:`agy`、`AtomCode`、`Qoder CLI`(海外)、`MiMo Code`、`Cursor CLI`、`Muse Code` 不是 npm 包,通过官方脚本分发。`agy` 通过查询其 manifest JSON 检测最新版本,更新时执行官方安装脚本(`curl ... | bash`);`AtomCode` 通过查询 AtomGit Releases API 检测最新版本,更新时执行官方安装脚本(`curl ... | sh`);`Qoder CLI`(海外,`qodercli`)与 `Qoder CLI CN`(国内,`qoderclicn`)是两条独立产品线,命令与配置目录互不影响,需分开更新:海外版查询 manifest JSON 的 `latest` 字段检测最新版本,更新时执行官方安装脚本(`curl -fsSL https://qoder.com/install | bash`);国内版是 npm 包 `@qodercn-ai/qoderclicn`(同时提供 `qoderclicn` / `qodercn` 命令),走 `npm install -g` 全局安装,sudo 下装进 `/usr/local/bin`,因此安装后 `sudo qoderclicn` 可以直接运行;`MiMo Code` 通过查询 FDS latest 纯文本文件检测最新版本,更新时执行官方安装脚本(`curl -fsSL https://mimo.xiaomi.com/install | bash`);`Cursor CLI` 的版本号写在官方安装脚本的下载 URL 里(`downloads.cursor.com/lab//`)。官方脚本只会装进 `$HOME/.local`,这里不用那个位置:更新器本身由 sudo 启动,以 root 把安装包放到公共目录 `/usr/local/share/cursor-agent/versions//`,并在 `/usr/local/bin/cursor-agent` 建立软链,与 npm 全局包和 `agy` 一致。公共 PATH 里只放 `cursor-agent`,不放通用名 `agent`,避免盖掉无关命令。本地版本固定从这条软链指向的版本目录读取(不走 PATH 查找),避免用户自己用官方脚本装在 `~/.local/bin` 的旧副本遮蔽公共安装、导致「每次提示可更新但更新后版本号不变」;检测到这种遮蔽时会在日志里提示路径。Cursor 的版本号是「日期-构建号」(如 `2026.10.22-27dcf5f`),同一日期会重打不同 hash 的构建,因此按日期部分比较:日期相同即视为需要更新。升级后会清理历史版本,只保留最近 2 个(每份解压约 558MB)。`Muse Code` 通过查询 muse-stable 渠道 manifest JSON 的 `version` 字段检测最新版本(如 `1.4.14-R7309.1`;npm 上的 `@muse-code/sdk` 只是 SDK,不是 CLI)。本地版本优先读 `~/.local/bin/.muse-version`,没有该文件时再从 `muse --version` 的括号内提取完整版本(如 `Muse Code 1.4.14 (1.4.14-R7309.1)` 中的 `1.4.14-R7309.1`)。`R` 后的构建号按数值比较(`R9999` < `R10000`),避免按字符串比较时把位数更多的新构建判成旧版本。更新时以真实用户身份重新执行官方安装脚本(`curl -fsSL https://dev.meta.ai/install.sh | bash`,默认装进 `~/.local/bin`)。安装包约 414MB,且非终端环境下下载没有进度输出,因此只把总超时放宽到 60 分钟、不设空闲超时,以免把正常下载当成卡死杀掉。旧版二进制由安装脚本自动清理。PATH 里若有另一个同名命令排在前面,日志会提示。muse 自带后台自更新(默认每小时检查),更新器提供手动触发入口。 > > `CodeBuddy` 国内版与海外版共用 npm 包 `@tencent-ai/codebuddy-code` 与 `codebuddy` 命令(差异仅在登录时选 Chinese Site / International Site),无法拆成两个可启动入口,因此只保留一个条目。 镜像源选择与自定义工具列表持久化保存在 `~/.config/ai-code-tool-updater/`(sudo 下为 `/root/.config/...`)。 ## 运行要求 - Linux + Node.js(建议 16+) - npm(已安装并在 PATH 中) - **root 权限**(`npm install -g` 全局安装需要) ## 安装 ```bash npm install ``` ## 使用 **必须用 sudo 启动**,否则会提示权限不足并退出: ```bash sudo node tui.js # 或 sudo npm start ``` > 如果 `sudo` 下找不到 `npm`,可能是 sudo 的 PATH 不包含 nvm 安装的路径,可改用: > ```bash > sudo env "PATH=$PATH" node tui.js > ``` ## 按键说明 | 按键 | 功能 | |------|------| | `r` | 检测所有工具版本 | | `↑` / `↓` | 在工具列表中上下选择 | | `u` / `Enter` / `空格` | 更新/安装当前选中的工具(未安装则安装,可更新则更新) | | `a` | 一键更新所有可更新的工具 | | `i` | 一键安装所有未安装的工具 | | `n` | 添加自定义工具(依次输入名称 / npm 包名 / 命令名 / 版本参数) | | `x` | 移除当前选中的自定义工具(内置工具不可移除) | | `m` | 切换 npm 镜像源(官方源 / 淘宝镜像源) | | `y` | 一键配置 `agyyolo`(写入 `~/.bashrc`、`~/.zshrc`) | | `e` | 导出日志到当前目录下的文本文件 | | `c` | 清空日志 | | `v` | 开关霓虹动效和 3D 舞台 | | `PgUp` / `PgDn` | 翻看日志面板(无需切换焦点) | | `q` | 退出程序(有检测/更新任务进行中时需在 5 秒内再按一次确认) | > 一键更新/安装目前是**顺序执行**,避免多个 `npm install -g` 同时写全局目录造成锁竞争或符号链接损坏。 > 一键更新/安装结束后会自动复检版本,但**不会清空日志**,安装过程的输出仍可回看(手动按 `r` 检测才会清屏)。 启动后会自动检测一次版本。 ## 界面布局 ``` ┌─ AI Code Tool Updater ──────── ● 就绪 ──┬─ 3D ──────────┐ │ ▁▃▅▇█▇▅▃▁▃▅▇█▇▅▃▁ 波形 │ ◉███●● │ ├─ 工具列表 ──────────────────────────────┤ 环面 / 网格 │ │ # 名称 状态 当前版本 最新版本 │ │ 1 Kimi Code 可更新 1.0.0 1.0.1 │ │ 2 Claude Code 最新 2.1.0 2.1.0 │ │ 8 Grok CLI 未安装 - 1.0.5 │ │ ... │ ├─ 实时日志 ───────────────────────────────────────────────┤ │ [12:00:01] SYSTEM 开始检测所有工具版本... │ │ [12:00:02] Kimi Code 正在检测 Kimi Code ... │ │ ... │ └─ [r] 检测版本 [↑↓] 选择 [u] 更新 [a] 全部 [q] 退出 ─┘ ``` ## 项目结构 ``` ├── tui.js # TUI 入口:blessed 界面 + 按键绑定 + 动效 ├── lib/core.js # 核心逻辑:工具配置、版本检测、更新执行(无 UI 依赖) ├── lib/scene3d.js # 终端 3D 舞台(环面、立方体、网格) ├── package.json └── icon.svg ``` 核心逻辑与 UI 解耦:`lib/core.js` 不依赖任何 UI 框架,对外暴露异步函数并接受 `sendLog` 回调;`tui.js` 只负责界面与交互。 ## 技术栈 - [blessed](https://github.com/chjj/blessed) —— 终端 UI 框架 - Node.js 内置 `child_process` —— 调用 `npm` 与各 CLI ## License MIT