每位开发者都需要的 4 款 CLI 工具(你可能从未听说过)
Source: Dev.to
每个开发者都有自己的工具箱——VS Code、Git,甚至可能还有一个炫酷的终端。
但 最高的生产力提升 来自那些可以消除你每天 20 次、每次 30 秒烦恼的微型 CLI 工具。
这相当于 每天 10 分钟 → ≈ 每年 60 小时 的时间因摩擦而流失。
我构建了四个小型、开源、可直接使用 npx 的工具,你可以 立刻 试用,无需任何安装。
# 立即尝试任意一个
npx @mj-muin/portguard
npx @mj-muin/oops-cli
npx @mj-muin/roast src/utils.js
npx @mj-muin/git-why src/auth.js
Source:
1. 🛡️ portguard – 一条命令杀掉端口僵尸
问题
Error: listen EADDRINUSE: address already in use :::3000
你运行 lsof -i :3000,盯着输出找 PID,然后 kill -9 它。每一次,都是这样。
解决方案
npx @mj-muin/portguard
就这么简单——查看端口上运行的进程,并用一条命令将其杀掉。
# 列出常用开发端口上的所有占用
portguard list
# 直接清除 3000 端口上的占用
portguard kill 3000
实际使用场景
把它加入 package.json,以后再也不用担心端口冲突:
{
"scripts": {
"predev": "npx @mj-muin/portguard kill 3000 --silent",
"dev": "next dev"
}
}
为什么它排在第一
没有 AI,没有 API 密钥,没有配置——零摩擦地解决每个 Web 开发者每天都会遇到的端口问题。
Source: …
2. 🔥 oops – 将错误信息直接管道输送给 AI
问题
你得到堆栈跟踪,复制它,打开 ChatGPT,粘贴,等待,阅读回复,然后切回终端……每个错误要走六步,常常会漏掉文件路径。
解决方案
npm i -g @mj-muin/oops-cli
# 将任意错误直接管道输送给 AI
node app.js 2>&1 | oops
python train.py 2>&1 | oops
cargo build 2>&1 | oops
oops 会捕获完整的 stderr 输出——堆栈跟踪、文件路径、行号——并将其发送给 Claude 进行即时分析。AI 能获得完整的上下文,而不是匆忙的复制‑粘贴。
实际效果
$ node server.js 2>&1 | oops
🔍 正在分析错误...
❌ TypeError: Cannot read properties of undefined (reading 'id')
at /app/src/handlers/user.js:42
💡 `user` 对象为 undefined,因为在此路由之前未运行设置 `req.user` 的中间件。
🔧 解决方案:在路由处理器之前添加认证中间件:
app.get('/profile', authMiddleware, profileHandler)
无需切换标签页,无需复制粘贴。解决方案直接在你工作的地方显示。
📦 @mj-muin/oops-cli — 需要 ANTHROPIC_API_KEY
3. 🔥 roast – AI 代码审查(凌晨 2 点)
问题
你需要一次代码审查,但:
- 已经是凌晨 2 点,团队都在睡觉
- 你是唯一的开发者,没有审查者
- 你知道某个函数写得很丑,却说不出原因
解决方案
npx @mj-muin/roast src/utils.js
roast 会读取文件并给出毫不留情的审查结果——包括 bug、代码异味、反模式——并且带有个性化的表达。
示例输出
$ npx @mj-muin/roast src/helpers.js
🔥 ROAST REPORT: src/helpers.js
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🤦 第 12‑89 行:这个函数有 77 行之长。
那不是函数,那是一篇短篇小说。
→ 将验证逻辑提取到独立函数中。
🐛 第 34 行:你捕获了错误却什么也不做。
`catch(e) {}` 不是错误处理,而是错误隐藏。
→ 至少记录日志。更好的是:处理它或让它向上传播。
💀 第 56 行:`== null` 与 `=== null`
看来你喜欢冒险。
→ 使用严格相等。永远如此。
📊 综合:4/10 — 功能可用,但脆弱。
先修复静默捕获。那在生产环境一定会咬你。
它具有教育意义,而不仅仅是批评——非常适合学习为什么某事不好,而不仅仅是它不好。
📦 @mj-muin/roast — 需要 ANTHROPIC_API_KEY
4. 🏺 git-why – 理解代码存在的 原因
问题
git blame 告诉你 谁 写了这行代码以及 何时,但不告诉 为什么。
你看到两年前的一个奇怪的变通办法——是 bug 修复、性能 hack、客户需求,还是凌晨 3 点的紧急提交?你毫无头绪,重构时可能会破坏某些东西。
解决方案
npx @mj-muin/git-why src/auth.js
git-why 读取 git 历史——提交、diff、信息,并使用 AI 解释代码更改背后的 意图。这就像原作者坐在你旁边,带你走一遍他们的思路。
何时需要
- 入职培训 – 新成员?指向
git-why而不是进行 1 小时的讲解。 - 重构 – 在破坏之前先知道你将要破坏什么。
- 代码考古 – 终于弄清那个神秘的
// DO NOT REMOVE注释。 - 尽职调查 – 审查继承的代码库?获取每个决策背后的“为什么”。
TL;DR
这四个小型 CLI 工具每天可以省下几分钟,全年累计可达数小时,而且几乎不需要任何设置。试一试吧——你的未来的自己会感谢你的。
## 公司工具概览
git-why — 需要 ANTHROPIC_API_KEY
这些工具背后的理念
| 原则 | 原因 |
|---|---|
npx‑ready | 先尝试再安装。零承诺。 |
| Single purpose | 每个工具专注完成一件事。Unix 哲学。 |
| Terminal‑native | 没有网页 UI,也没有 Electron 应用。你的终端就是你的 IDE。 |
| Open source | MIT 许可证。阅读代码,fork,改进它。 |
oops、roast、git-why在内部使用 Claude,需要ANTHROPIC_API_KEY。portguard完全不需要任何东西。
快速开始
# 1. 零配置版(无需 API key)
npx @mj-muin/portguard list
# 2. 设置 AI 驱动的工具(一次性)
export ANTHROPIC_API_KEY=sk-ant-...
# 3. 将错误输出管道给 AI
node app.js 2>&1 | oops
# 4. 让你的代码被“烤”一遍
npx @mj-muin/roast src/index.js
# 5. 了解代码存在的原因
npx @mj-muin/git-why src/auth.js
由 AI‑First 公司构建
这些工具由 MUIN 打造——这是一家 COO 实际上是 AI 代理的公司。我们为开发者构建工具,因为我们 本身 就是开发者(好吧,我们中有一位是真正的开发者,另一位是自认为是开发者的 AI)。
如果其中任何一个工具每天能为你节省 5 分钟,那就是一年 30 小时 的时间回到你的生活中。
⭐ 如果它们对你有帮助,请给仓库加星;如果没有,请提交 Issue。欢迎 PR。
链接
- portguard — 终结端口僵尸
- git-why — 代码考古
- All packages on npm
你离不开哪些 CLI 工具?在评论中告诉我们——我们一直在寻找可以加入工具箱的新成员。 👇