项目地址:JTBlink/jt-code-cli
摘要
本文介绍一个轻量、可移植的 Bash 命令行工具集 jt-code-cli,旨在通过 npm 全局包统一管理多款 AI 开发工具(安装/升级/卸载),并提供一个独立的 MCP 诊断与清理脚本,帮助你在本地快速搭建顺畅的 AI 编程环境。文章包含快速上手、命令示例、实现架构、常见问题与后续规划,适合希望在 macOS/Linux 下以最少成本整合多家厂商 CLI 的开发者。
项目背景
- 痛点:
- AI 辅助编程相关 CLI 分散,安装方式不统一,升级与卸载也不一致。
- 不同工具的版本与环境要求不一致,容易出现 PATH、权限、残留进程等问题。
- 目标:
- 用一套 Bash 脚本统一管理安装、升级、卸载,实现"一个命令管理多个工具"。
- 提供对 MCP(Model Context Protocol)相关进程与配置的一站式诊断清理。
- 适用人群:
- 想快速试用或切换多款 AI 开发 CLI 的工程师。
- 需要在 CI、脚本化环境中进行"非交互"批量安装/清理的用户。
仓库简介
- 仓库定位:基于 Bash 的 CLI 工具集,不包含编译流程与单元测试框架。
- 核心能力:
- 统一管理通过 npm 安装的多款 AI CLI:iflow、claude-code、qwen、codebuddy、copilot、gemini。
- 一条命令完成安装、升级、卸载单个或全部工具。
- 独立的 MCP 诊断、清理、校验与重启脚本。
- 支持平台:macOS(zsh/bash),Linux 同样适用(需具备同等工具链)。
项目目录结构(示意)
text
jt-code-cli/
├─ jt-code.sh # 主入口:解析路径,载入模块,分发子命令
├─ jt-code-setup.sh # 在 ~/.local/bin 维护 jt-code 软链接
├─ mcp-manager.sh # MCP 进程诊断/清理/校验/重启/全量重置
├─ modules/
│ ├─ core.sh # 彩色日志、execute_command 封装
│ ├─ tools.sh # Node 环境检查、工具列表与状态
│ ├─ iflow.sh # @iflow-ai/iflow-cli 的安装/卸载/升级
│ ├─ claude-code.sh # @anthropic-ai/claude-code(含 ~/.claude.json 标记)
│ ├─ qwen.sh # @qwen-code/qwen-code
│ ├─ codebuddy.sh # @tencent-ai/codebuddy-code
│ ├─ copilot.sh # @github/copilot
│ └─ gemini.sh # @google/gemini-cli
├─ README.md # 简要说明
└─ WARP.md # 维护与操作指南(本篇主要依据)
功能特性
- 统一入口命令:
jt-code
- 子命令:
install
、uninstall
、upgrade
、list
、status
、help
- 支持目标:
iflow
、claude-code
、qwen
、codebuddy
、copilot
、gemini
、all
- 子命令:
- 一键管理:
- 安装单个或全部工具
- 升级单个或全部工具(优先
npm update -g
,失败回退为"卸载后重装") - 卸载单个或全部工具
- 环境感知:
- 自动校验 Node/npm 是否可用(推荐 Node >= 18)
- 列出各工具的安装状态与版本
- MCP 辅助:
- 诊断、清理与重启 MCP 相关进程
- 校验
~/.claude.json
及相关 VSCode 目录配置(需jq
)
先决条件
- Node.js 与 npm:建议 Node >= 18(脚本会检测并给出提示)
mcp-manager.sh
需要:jq
、pgrep
、pkill
(需在 PATH 中)- 网络:能访问 npm registry 的 HTTPS 网络
快速开始
方式一:安装软链接,系统范围使用
在 ~/.local/bin
创建名为 jt-code
的软链接,指向仓库内 jt-code.sh
。macOS/zsh 环境下,确保 ~/.local/bin
已加入 PATH。
bash
# 在仓库根目录执行:
./jt-code-setup.sh install
# 如提示找不到命令,检查 PATH(zsh):
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
# 验证:
which jt-code
jt-code help
方式二:不安装软链接,直接本地运行
bash
# 在仓库根目录:
./jt-code.sh status
./jt-code.sh install claude-code
常用命令
查看支持工具与当前状态:
bash
jt-code list
jt-code status
安装单个工具:
bash
jt-code install iflow
jt-code install claude-code
jt-code install qwen
jt-code install codebuddy
jt-code install copilot
jt-code install gemini
安装全部支持工具:
bash
jt-code install all
升级工具:
bash
jt-code upgrade claude-code
jt-code upgrade all
卸载工具:
bash
jt-code uninstall qwen
jt-code uninstall all
关键实现与架构设计
1) 入口脚本 jt-code.sh
- 解析自身真实路径(兼容软链接形式调用),设置
SCRIPT_DIR
后按需source modules/
- 分发子命令:
install
/uninstall
/upgrade
/list
/status
/help
- 对
all
的请求,依序调用各工具模块的对应函数,保证顺序与可控输出
2) 核心模块 modules/core.sh
- 统一彩色日志接口:
print_info
/print_success
/print_warning
/print_error
execute_command
封装:支持"静默执行"以减少冗余输出,利于 CI 与自动化
3) 环境与工具模块 modules/tools.sh
check_nodejs
:检测 Node 与 npm,Node < 18 给出警告但不强制阻断(视工具要求而定)check_tool_status
:如命令存在则打印版本(node、npm、iflow、claude、qwen、cbc/codebuddy、copilot、gemini)list_tools
:输出受支持工具与调用示例
4) 各工具安装器模块(基于 npm)
- 模块化封装
install_<tool>
/uninstall_<tool>
/upgrade_<tool>
- 升级策略:优先
npm update -g
,失败则回退为"卸载后重装",在多源网络环境更稳健 claude-code
模块:写入~/.claude.json
的hasCompletedOnboarding
标记,减少首次交互摩擦
5) 软链接管理 jt-code-setup.sh
- 在
~/.local/bin
维护名为jt-code
的软链接,指向仓库内jt-code.sh
- 安全策略:对非软链接但同名可执行文件先备份,修复指向错误的软链接,为源脚本添加可执行权限
6) MCP 诊断与维护 mcp-manager.sh
- 子命令:
status
、cleanup
、restart
、validate
、diagnose
、full-reset
validate
:优先检测~/.claude.json
;找不到时回退 VSCode 扩展目录;用jq
校验 JSON 并输出服务器与文件系统参数cleanup
:通过pgrep/kill
清理重复/残留的 MCP 进程(filesystem、context7、browser-tools、git、sequential-thinking、figma developer),包含安全检查与重试diagnose
:打印 npm registry 连通性、node/npm/npx/python/jq 存在与版本,便于定位环境问题
MCP 管理器示例
检查状态:
bash
./mcp-manager.sh status
诊断环境与连通性:
bash
./mcp-manager.sh diagnose
清理残留进程并重启:
bash
./mcp-manager.sh cleanup
./mcp-manager.sh restart
校验配置(需要 jq
):
bash
./mcp-manager.sh validate
全量重置(谨慎):
bash
./mcp-manager.sh full-reset
非交互式与稳定性考量
- 避免交互阻塞:部分官方 CLI 在卸载时可能出现交互提示(例如是否删除配置)。在自动化/CI 中建议选择非交互路径或手动清理,保证流程可预测。
- 冗余输出抑制:
execute_command
支持静默输出,有利于日志整洁。 - 升级回退策略:网络波动或 registry 差异导致
update
失败时,自动走"卸载后重装"路径提升成功率。
常见问题排查(FAQ)
which jt-code
为空
- 原因:
~/.local/bin
未加入 PATH - 解决:
bash
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
- npm 全局权限问题(EACCES)
- 建议使用 nvm 安装 Node,避免用 sudo 安装全局包
- 或配置 npm 全局前缀到用户目录:
bash
npm config set prefix "$HOME/.npm-global"
echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
- 网络访问 npm registry 失败
- 使用国内镜像临时安装(按需),或配置代理:
bash
npm config set registry https://registry.npmmirror.com
# 安装完成后可恢复官方:
npm config set registry https://registry.npmjs.org
mcp-manager.sh
报jq/pgrep/pkill
缺失
- 安装依赖(macOS):
bash
brew install jq
# pgrep/pkill 通常来自系统自带,macOS 自带 pgrep/pkill
- shellcheck 规范检查
- 可在本地对脚本进行静态分析,提前发现潜在问题:
bash
brew install shellcheck
shellcheck jt-code.sh jt-code-setup.sh mcp-manager.sh modules/*.sh
路线图(Roadmap)
- 支持更多 AI CLI 工具与可选配置(如代理、源切换、环境变量注入)
- 安装源可配置化(官方/镜像自动回退)
- 增加自更新命令(自检版本并升级脚本本身)
- 增强日志与错误码标准化,便于在 CI 中消费
- 增加命令自动补全与更丰富的 help 文档
- 引入轻量测试样例与示例场景脚本
最佳实践建议
- 使用 nvm 管理 Node 版本,保持 Node >= 18
- 在 CI/自动化中使用非交互路径,并固定 npm registry,提升稳定性
- 安装/升级后先运行
jt-code status
,确认可执行状态 - 对 MCP 相关问题,先
diagnose
再cleanup
与validate
,逐步缩小问题范围
结语
jt-code-cli 通过一套纯 Bash 的脚本把"多工具、多厂商、不同安装方式"的问题统一到了一个入口,让本地 AI 开发环境的安装、升级与移除更可控、更一致。如果你也在多款 AI CLI 之间切换,或需要在 CI/CD 中快速拉起环境,不妨试试这个工具集,并根据团队需求定制自己的模块与策略。
如果你已经在本地克隆了仓库,可立即按文中的"快速开始"章节进行体验;也欢迎基于你们的使用场景提出改进建议或提交 PR。祝你开发顺利!