# 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-08-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AI Code Tool Updater (TUI) 一款基于 [blessed](https://github.com/chjj/blessed) 的**终端 UI** 版 AI 编程助手工具更新器,在 Linux 终端中检测版本并一键更新。从原 Electron 版改造而来,去除了所有桌面端依赖。 ## 功能特性 - 自动检测 12 个 AI 编程 CLI 工具的本地版本与 npm 最新版本 - 一键安装未安装的工具、一键更新可更新的工具(或单独安装/更新选中项) - 支持切换 npm 镜像源(官方源 / 淘宝镜像源),切换后立即用于检测与安装 - 支持添加/移除自定义工具(任意 npm 包 + CLI 命令名) - 实时日志面板,流式输出 npm 安装过程;支持导出日志到文本文件 - 头部展示 Node.js / npm 版本与系统发行版信息,环境异常时在日志中提示 - 一键将 `agyyolo`(`agy --dangerously-skip-permissions`)函数配置到 `~/.bashrc` 和 `~/.zshrc` - 彩色状态徽章:最新 / 可更新 / 本地较新 / 未安装 / 检测失败 - 版本按语义化版本号比较大小,本地比镜像源更新时标记为「本地较新」而非提示更新,避免一键更新变成降级 - 头部常驻显示当前任务状态(就绪 / 检测中 / 更新中),任务进行中时按键会给出提示而不是静默忽略 - 纯终端运行,无需 X11 / Wayland 桌面环境 支持工具:Kimi Code、Claude Code、OpenAI Codex、OpenCode、CodeBuddy、Qwen Code、Gemini CLI、Grok CLI (grok)、DevEco CLI (devecocli)、Google Antigravity CLI (agy)、AtomCode、Qoder CLI (qoderclicn),以及任意用户自定义的 npm 包工具。 > 注:`agy`、`AtomCode`、`Qoder CLI` 均不是 npm 包,通过官方脚本分发。`agy` 通过查询其 manifest JSON 检测最新版本,更新时执行官方安装脚本(`curl ... | bash`);`AtomCode` 通过查询 AtomGit Releases API 检测最新版本,更新时执行官方安装脚本(`curl ... | sh`);`Qoder CLI` 通过查询其 manifest JSON 的 `latest` 字段检测最新版本,更新时执行官方安装脚本(`curl -fsSL https://qoder.com.cn/install | bash`)。 镜像源选择与自定义工具列表持久化保存在 `~/.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` | 清空日志 | | `PgUp` / `PgDn` | 翻看日志面板(无需切换焦点) | | `q` | 退出程序(有检测/更新任务进行中时需在 5 秒内再按一次确认) | > 一键更新/安装目前是**顺序执行**,避免多个 `npm install -g` 同时写全局目录造成锁竞争或符号链接损坏。 > 一键更新/安装结束后会自动复检版本,但**不会清空日志**,安装过程的输出仍可回看(手动按 `r` 检测才会清屏)。 启动后会自动检测一次版本。 ## 界面布局 ``` ┌─ AI Code Tool Updater ──────────── [ROOT] ─ ● 就绪 ───────┐ ├─ 工具列表 ───────────────────────────────────────────────┤ │ # 名称 状态 当前版本 最新版本 │ │ 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 界面 + 按键绑定 + sudo 检查 ├── lib/core.js # 核心逻辑:工具配置、版本检测、更新执行(无 UI 依赖) ├── 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