MiniMax 也出 CLI 了?我把 mcode 装上服务器折腾了一下午,结果有点上头
最近 AI 编程工具这个赛道,热闹得像早高峰的地铁站。Claude Code、Codex CLI、Gemini CLI 轮番上阵,国产厂商也没闲着。前几天 MiniMax 放出了自家终端编程工具 MiniMax Code CLI(命令就俩词:mcode)的邀请测试版,我第一时间搞到一个名额,把它装到一台干净的 Ubuntu 服务器上,实打实折腾了一下午。
这篇文章不是官方通稿的复读机,而是我从「安装踩坑 → 远程登录 → 真实任务实测 → 抓到一个崩溃 bug」的完整记录。有好话,也有槽点,全程真实截图。
它到底是个啥?一句话讲明白
先打个比方。如果说 Cursor、Windsurf 这类 AI IDE 是「精装修的智能厨房」——锅碗瓢盆(编辑器)和灶台(AI)焊死在一起,开箱即用但你得进这间厨房才能做饭;那么 MiniMax Code CLI 这种终端工具就是「一个会做饭的随身厨师」——你在哪他就在哪,不管是你自己家灶台(本地终端)、朋友家厨房(SSH 远程服务器),还是中央厨房的流水线(CI/CD),喊一声 mcode 他就开始干活。
按照官方文档的说法,它是 MiniMax Code 面向开发者工作流的终端入口,跟桌面客户端是互补关系:客户端适合图形化任务管理,而 CLI 更贴近代码仓库、终端、脚本和 CI。
它有三种打开方式:
- 交互式 TUI:直接在终端里
mcode,进入全屏交互界面,边聊边改代码; - Headless 模式:
mcode exec "干活",不启动界面,干完就走,天生为脚本和 CI 设计,还能输出 JSON 给下游程序消费; - ACP 协议:
mcode acp,把它变成一个 Agent Client Protocol 服务器,让 Zed 这类编辑器直接接入,不用装专用插件。
我这次重点折腾的是前两种,尤其是 Headless——毕竟能在服务器上无人值守跑任务,才是 CLI 真正的杀手锏。
安装:官方一行命令,我踩了两个坑
官方给的安装命令非常「一键」:
curl -fsSL https://filecdn.minimax.chat/public/install.sh | bash
理想很丰满。现实是,我在一台国内服务器上执行后,卡在 Downloading managed Node.js v24.19.0 整整 12 分钟,只下载了 2.7MB——因为它默认从 nodejs.org 拉一个托管的 Node 运行时,而这玩意儿在国内的访问速度,懂的都懂。

坑一:Node 下载源太慢
好在安装脚本留了后门(褒义),支持用环境变量覆盖 Node 下载源。换成国内镜像后,30 秒就下完了:
export MCODE_NODE_DIST_BASE=https://npmmirror.com/mirrors/node/v24.19.0
curl -fsSL https://filecdn.minimax.chat/public/install.sh | bash
坑二:服务器上没有 make
Node 装完后,npm 开始安装主包,结果 better-sqlite3 这个原生模块编译失败,报了一个很扎心的错:gyp ERR! stack Error: not found: make。
原因很简单——这是一台最小化安装的 Ubuntu 26.04,连编译工具链都没有。CLI 工具为了存储会话数据用到了 SQLite,而 better-sqlite3 是 C++ 原生扩展,需要现编译。一行解决:
apt-get install -y build-essential python3
装好编译工具后重跑安装脚本,这次一路绿灯:[MCode] Native SQLite check passed.,@minimax-ai/code@0.1.4 安装完成。
给官方的小建议:安装脚本在检测不到
make/gcc时,完全可以提前给出明确提示,而不是等编译炸了才让用户去翻日志。对新手来说,gyp ERR!那一大坨输出跟天书没区别。
登录:SSH 服务器上的一场「接力赛」
装好之后,第一件事是登录。这步在本地 Mac 上很简单——mcode login,自动弹浏览器授权,完事。但我装在远程服务器上,事情就变得有意思了。
mcode login 会启动一个临时的本地 HTTP 回调服务,然后给你一条授权链接。你在浏览器里登录 MiniMax 账号、点授权,浏览器会跳转到 http://127.0.0.1:某个随机端口/auth/callback?... 完成回调。问题来了:这个 127.0.0.1 指的是服务器自己,而我的浏览器在我自己电脑上,俩 127.0.0.1 根本不是一台机器。
官方文档其实也意识到了这点,给了一条 SSH 端口转发的提示。但更坑的是:每次 mcode login 生成的回调端口是随机的,写死转发某个端口没用。我的解法是直接用 SSH 的动态转发(SOCKS5),把整个网段都打通:
# 本地终端执行,建立一条到服务器的 SOCKS5 隧道
ssh -N -D 127.0.0.1:45919 root@<你的服务器>
然后在服务器上跑 mcode login,浏览器打开授权链接、登录授权后,地址栏会得到一个打不开的 127.0.0.1:xxxxx/auth/callback?... 链接。把它复制下来,在本地终端通过 SOCKS 隧道「递」回服务器:
curl -x socks5h://127.0.0.1:45919 "http://127.0.0.1:xxxxx/auth/callback?accessToken=...&state=..."
终端立刻返回一个「You’re signed in」的页面,服务器那边同时显示 Signed in with MiniMax.——登录完成。整个过程就像一场接力赛:服务器起跑(生成链接)→ 你跑第二棒(浏览器授权)→ 隧道跑第三棒(把接力棒递回服务器)。

一个真实的小插曲:我第一次转发回调时,本机 shell 里恰好设了
no_proxy环境变量,导致curl无视 SOCKS 代理直接连本机 127.0.0.1,结果当然是连接拒绝,登录流程超时作废。排掉这个雷后才成功。如果你在类似环境复现,记得env -u no_proxy curl ...。
上手实测:4 个真实任务,它是真干活还是花架子?
登录搞定,进入正餐。我新建了一个只有 11 行的 Python 演示仓库(一个会除零崩溃的 calc 函数),然后用 Headless 模式连发了 4 个任务,全程计时。
任务一:修 bug + 补测试
mcode exec --permission full "app.py 里 calc(10, 0, \"div\") 会抛 ZeroDivisionError。请修复:除零时返回 None,并添加 test_app.py 用 pytest 覆盖四种运算和除零。"

38 秒后,它改好了 app.py(div 分支加零值守卫),新建了 test_app.py(6 个用例,连「返回值断言」和「不抛异常断言」双保险都想到了)。我手动跑了一遍 pytest——6 passed,全绿。输出结尾它还反问了我一句「你平时主要做哪块的?」,这个拟人化的小细节见仁见智,有人觉得亲切,有人(比如 CI 场景)会觉得多余。
任务二:生成 AGENTS.md
mcode init 的核心能力就是分析仓库、生成一份给 AI 看的「项目说明书」AGENTS.md。30 秒生成完毕,内容让我有点意外——它不仅准确总结了 calc 函数的行为(包括「除零返回 None 而不是抛异常」这个刚修复的契约),还给出了 Setup 命令、目录结构、代码风格、测试要求,甚至提醒「这个仓库还不是 git 仓库,建议 git init 并选 main 作为默认分支」。

这个质量,比我自己手写的第一版 AGENTS.md 要专业。
任务三:代码问答
一句「用一句话解释 calc 函数的作用」,11 秒返回准确答案。这种轻量问答走 CLI 比开网页版快得多。
任务四:加功能 + JSON 输出
最后上点强度:「给 calc 添加 pow 幂运算支持并补测试」,同时用 --output-format json 验证它的 CI 友好性。结果它不仅加了 pow 分支、补了 3 个边界测试(正指数、零指数、负指数),还顺手把 AGENTS.md 里过期的描述同步更新了(“all four ops” → “all five ops”,“6 passed” → “9 passed”)。pytest 一跑,9 passed 全过。

JSON 输出是标准的结构化格式,包含 schemaVersion、status、sessionId、answer 等字段,jq 可以直接解析。这意味着你可以把它无缝塞进任何自动化流水线里——比如「每晚自动给新增代码补测试并把结果 JSON 发给机器人」。
四个任务看下来,响应速度在第一梯队(背后是 MiniMax 自家的 M 系列模型),代码改动质量不错,最有好感的是它对「仓库约定」的尊重:改代码会同步维护 AGENTS.md,生成的测试会遵循已有风格。这说明它的上下文工程做得比较扎实,不是简单地「问一句答一句」。
权限设计:像驾照一样分级
CLI 工具最危险的就是「AI 拿着 shell 权限瞎搞」。MiniMax Code CLI 把权限做成了四级策略,我觉得这个设计值得单独夸一句:
- ask(默认):每个操作都问你一遍,像新手司机,教练(你)全程踩刹车;
- smart:智能判断,只读操作自动放行,写操作才确认,适合日常;
- full:全自动,适合 CI 或你完全信任的沙箱环境——我这次测试全程用的就是它,毕竟是个一次性的演示仓库;
- off:只读模式,AI 只能看不能动,适合「只让它做代码审查」的场景。
而且这个权限体系和 Plan Mode(先出方案再动手)是正交的——你可以先用 Plan Mode 让它出方案、你审完再切 full 让它执行。这个组合非常符合真实开发节奏。
逮到一个 bug:任务结束时的原生崩溃
夸完了,说个实测抓到的问题。在跑「生成 AGENTS.md」任务时,任务本身成功完成了,但进程退出阶段抛了一个 Node 原生层的断言失败:
minimax-code[42068]: void node::RemoveEnvironmentCleanupHook(...) at ../src/api/hooks.cc:142
Assertion failed: (env) != nullptr
... Statement::~Statement() [better_sqlite3.node]
从堆栈看,是 better-sqlite3 的 Statement 对象在 Node 环境销毁之后才被析构——典型的原生模块「清理顺序」bug。任务结果不受影响(AGENTS.md 已经写完落盘了),但退出码和 stderr 被污染,如果放在 CI 里做严格校验可能会误报失败。考虑到这是 0.1.4 的邀请测试版,这种边角问题可以理解,已经算是质量不错的内测表现了。
它适合谁?我的真实结论
折腾一下午,我的判断是:
值得试试的人:经常 SSH 到服务器上改东西的运维/后端;想把 AI 编码塞进 CI 流水线的团队;以及 Claude Code / Codex CLI 的用户想找个国产平替(或备胎)的。它对仓库约定(AGENTS.md)的一等公民支持、干净的 JSON 输出、四级权限设计,都是冲着「正经工程使用」去的,不是玩具。
可以再等等的人:纯本地 IDE 党(那桌面客户端或 ACP 接入更合适);以及对稳定性要求极高的生产 CI——0.1.x 版本的原生崩溃问题还是等修修再上。
横向看,CLI 编程工具这条赛道已经从「有没有」卷到了「细节体验」:谁的上下文管理更聪明、谁的权限模型更细、谁对 CI 更友好。MiniMax Code CLI 这份答卷,作为一个 0.1.4 版本,交出的是超出我预期的完成度。等正式版发布,我会考虑把它加进我的服务器常备工具箱——毕竟,谁能拒绝一个随叫随到、还会自己写项目说明书的随身厨师呢?
Q&A
Q1:MiniMax Code CLI 收费吗? 邀请测试阶段用 MiniMax 账号登录即可使用(Token Plan)。正式版的计费策略官方还没公布,参考同类产品,大概率会有免费额度 + 订阅制。
Q2:和 Claude Code、Codex CLI 比怎么样? 交互范式高度相似(TUI + headless + 权限分级),都是「Agent 进终端」的思路。MiniMax 的差异点在于:ACP 协议原生支持(接编辑器零适配)、对国产模型生态的整合、以及对 AGENTS.md 约定的深度维护。底层模型是 MiniMax M 系列,长上下文是它的强项。
Q3:安装一直卡在下载 Node 怎么办?
用镜像源:export MCODE_NODE_DIST_BASE=https://npmmirror.com/mirrors/node/v24.19.0,再执行官方安装命令即可。
Q4:报 gyp ERR! not found: make 怎么办?
系统缺编译工具链。Debian/Ubuntu 执行 apt-get install -y build-essential python3;CentOS/RHEL 执行 yum groupinstall "Development Tools"。装完重跑安装脚本。
Q5:在 SSH 服务器上怎么完成登录?
服务器跑 mcode login 拿到授权链接 → 本地浏览器登录授权 → 复制跳转后的 127.0.0.1:端口/auth/callback?... 完整 URL → 本地通过 SSH 动态转发把回调递给服务器:curl -x socks5h://127.0.0.1:45919 "回调URL"(前提是先 ssh -N -D 45919 root@服务器 建好隧道)。注意检查本机 no_proxy 环境变量别让 curl 绕过代理。
Q6:能不用 MiniMax 官方账号,接自己的 API 或其他模型吗?
可以。mcode provider 支持添加自定义 Provider 和 API Key(set-minimax-key 或兼容接口),也支持 --model provider/model 单次指定模型。
Q7:非交互场景(CI)怎么用?
用 mcode exec --output-format json "任务",机器输出走 stdout,诊断走 stderr,加 --timeout 和 --max-steps 控制资源,--permission full 或 off 避免交互卡住。只有显式 --input - 才读标准输入,CI 里不会意外挂起。
Q8:支持 Windows 吗?
支持。PowerShell 执行 irm https://filecdn.minimax.chat/public/install.ps1 | iex。但目前不支持 Alpine/musl Linux。