告别死记硬背查命令:我用 AI 半天写了个 AI 命令行

这几天在 Linux 开发机疯狂敲命令的时候,我发现自己陷入了一个尴尬又低效的循环:脑子里的命令记得模模糊糊,导致需要频繁地在百度和AI助手之间切换,复制命令,再回到终端粘贴执行。更令人沮丧的是,网上找来的命令常常水土不服,第一次跑不通,又得回头继续搜索......三番五次下来,耐心几乎被消磨殆尽,拿刀来。

就在这时,一个念头闪过:为什么不自己写一个 AI 命令行工具呢?我只需要用大白话描述我的需求,AI 就能自动翻译成精准的命令。我扫一眼确认无误,直接回车执行,简直酷毙啦!

下面跟大家讲讲我的心路历程~


从想法到放弃,只用了一秒

自己写一个?说干就干......吗?我可不想自己干

一想到要初始化项目安装各种依赖编写 HTTP 请求和模型转发调试糟心的提示词(Prompt),我就头大。这套流程下来,没有一天开发、一天调试根本搞不定。而且,如果花了两天时间,最后做出来的东西不好用,那不就白折腾了?

转机:让 AI 来构建 AI 工具

最近我用 AI 编程颇有心得,本着"免费的劳动力不用白不用"的原则(主要是KIRO现在还可以免费薅羊毛),我决定把这个任务"外包"给我的 AI 编程助手 - Kiro。我只需要动动嘴(敲几下键盘),让它来完成所有繁重的工作。

最终的成品效果惊人,简直是"召之即来,挥之即去"。无论是整理桌面文件,还是查看内存占用,它都能精准响应,指哪打哪。再装到 Linux 机器上,简直起飞了。

一开始,我也不知道 AI 能否准确理解我的意图,我给它写了一段非常朴素的提示词,甚至连 API 的调用代码都是直接从智谱 AI 官网复制粘贴的,主打一个"绝不动脑",想到哪里写到哪里,很飘逸。(有图为证,哈哈哈)

markdown 复制代码
帮我构建一个node cli工程,这个工程的效果是用户只要输入 ask xxx,就会把 xxx 的文字,转换成 真正可以执行的命令。方便用户遗忘不同平台的命令行语法。使用node+ts语法编写,准备后构建命令。

具体的功能:
1、ask指令会获得用户的系统类型和版本,然后结合xxx组装一个prompt,传给大模型。
2、要使用env-paths这个库,把AI模型的配置文件写入配置中。使用ask config 可以使用打开这个文件。可以配置模型的API地址,模型名称和KEY。第一版需要支持...[智谱AI的API代码]...这个AI链接方式。
-----
全程命令使用 pnpm,并测试是否可以用。例如:
ask 删除3000端口进程

接下来,就是见证奇迹的时刻。 Kiro 开始了它的表演:

项目初始化代码编写功能测试,每一步都清晰明确。

整个过程只花了大约 10 分钟。甚至最后,它还准备帮我把项目发布到 GitHub 和 NPM。不得不感叹,在编码这块,还是 Claude 4 模型更胜一筹。 (不过还是吐槽一下 KiroVibe模式还是好用的,Spec模式我觉得太重了,难用)


成果展示与用法:ask2-ai-cli

创意就这么变成了现实。这个工具,我把它命名为 ask2-ai-cli

实际的效果也很惊艳~

下面是它的基本用法,非常简单:

第一步:安装

通过 npm 或 pnpm 进行全局安装。

Bash 复制代码
npm install -g ask2-ai-cli
# 或者
pnpm add -g ask2-ai-cli

第二步:配置 API Key

你需要一个大模型 API Key 来驱动它。这里我推荐去[智谱AI开放平台]-(bigmodel.cn/) 注册,他们会送了一些免费额度,对于我们这种命令行场景完全够用。模型推荐使用 glm-4.5-airx,响应速度快,既省钱又准确。(真不是广告,纯属自来水推荐!我都没贴注册推荐链接)

安装完成后,运行配置命令:

Bash 复制代码
ask config

这个命令会自动打开配置文件(一个 config.json 文件)。你只需要将你的 API Key模型名称等信息填入即可。

JSON 复制代码
{
  "API_KEY": "YOUR_API_KEY",
  "BASE_URL": "https://open.bigmodel.cn/api/paas/v4/chat/completions",
  "MODEL": "glm-4.5-airx"
}

第三步:开始使用!

现在,你可以像和人对话一样,让它帮你生成命令了。

示例 1:查询并终止端口进程

忘记 lsof 和 kill 的组合技了?没关系,直接问:

Bash 复制代码
ask 帮我找到占用3000端口的进程并干掉它

AI 会生成类似 kill -9 $(lsof -t -i:3000) 的命令,并询问你是否执行。你只需按下回车。

示例 2:文件操作

想要查找大文件,或者打包压缩?

Bash 复制代码
> ask 查看当前目录体积最大的前10个文件
ls -lh | sort -rh -k 5 | head -n 10

> ask 将所有.md文件打包成 a.tar.gz
tar -czvf a.tar.gz *.md

示例 3:系统信息查询

查询网络或系统信息也易如反掌。

Bash 复制代码
> ask 查看本机ip
ifconfig | grep "inet "

> ask 查看内存使用情况
top -l 1 | head -n 10 | grep PhysMem

# 调戏它一下
> ask 五花肉怎么做
open "https://www.baidu.com/s?wd=五花肉怎么做" ##还得是你

AI 会结合你的操作系统(Windows, macOS, Linux)生成最合适的命令,你不再需要为人脑适配不同平台的语法而烦恼。 追加-d参数,就能看到所有的过程,包括提示词哦。

less 复制代码
 ~ % ask 我桌面图片文件有多少兆 -d

🔧 [DEBUG] Starting stage: Initialization
⠋ AI is thinking...✅ [DEBUG] Completed stage: Initialization (12ms)
🔧 [DEBUG] Starting stage: Get system info
✅ [DEBUG] Completed stage: Get system info (11ms)
🔧 [DEBUG] Starting stage: Build prompt
📝 [DEBUG] Prompt sent to AI:
────────────────────────────────────────────────────────────
You are a command-line assistant. Convert natural language requests into executable commands for the specified system.
System Information:
- Operating System: macOS (darwin)
- Architecture: arm64
- Shell: zsh
- Available package managers: brew (preferred: brew)
- Project Type: general
User Request: "我桌面图片文件有多少兆"

CRITICAL OUTPUT FORMAT REQUIREMENTS:
- Return ONLY the executable command, nothing else
- NO markdown code blocks (```bash or ``` or backticks)  
- NO explanations or descriptions
- NO extra text before or after the command
- The response should be ready to execute directly when user presses Enter
Technical Requirements:
1. Command must be compatible with macOS system
2. Use safe, commonly-used options and parameters  
3. Use zsh shell syntax
4. For package management, prefer brew
5. For file/directory operations:
   - Use appropriate flags (e.g., -r for directories, -f for force)
   - Consider whether target is file or directory
   - Use safe deletion methods when possible
Important Notes:
- For deleting directories: use 'rm -rf' or 'rmdir' as appropriate
- For deleting files: use 'rm -rf' with appropriate flags  
- For system operations: include necessary privileges (sudo) when required
- Always generate working, tested command patterns
Generate the executable command now:
────────────────────────────────────────────────────────────
✅ [DEBUG] Completed stage: Build prompt (0ms)
🔧 [DEBUG] Starting stage: AI generate command
⠏ AI is thinking...
🤖 [DEBUG] AI raw response:
────────────────────────────────────────────────────────────
find ~/Desktop -type f -name "*.jpg" -o -name "*.jpeg" -o -name "*.png" -o -name "*.gif" -o -name "*.bmp" -o -name "*.tiff" -o -name "*.webp" | xargs ls -la | awk '{sum += $5} END {print sum/1024/1024 " MB"}'
────────────────────────────────────────────────────────────
✅ [DEBUG] Completed stage: AI generate command (735ms)
🔧 [DEBUG] Starting stage: Display result
Suggested command:
find ~/Desktop -type f -name "*.jpg" -o -name "*.jpeg" -o -name "*.png" -o -name "*.gif" -o -name "*.bmp" -o -name "*.tiff" -o -name "*.webp" | xargs ls -la | awk '{sum += $5} END {print sum/1024/1024 " MB"}'
⚠️  Please review the command carefully before execution!
✅ [DEBUG] Completed stage: Display result (1ms)
🔧 [DEBUG] Starting stage: Wait user choice
Choose action:
  Enter - Execute command
  N - Exit
  C - Change answer
  E - Explain command
Please choose (Enter/N/C/E): 
✅ [DEBUG] Completed stage: Wait user choice (1702ms)
🔧 [DEBUG] Starting stage: Execute command
Executing command: find ~/Desktop -type f -name "*.jpg" -o -name "*.jpeg" -o -name "*.png" -o -name "*.gif" -o -name "*.bmp" -o -name "*.tiff" -o -name "*.webp" | xargs ls -la | awk '{sum += $5} END {print sum/1024/1024 " MB"}'
──────────────────────────────────────────────────
354.886 MB
──────────────────────────────────────────────────
✅ Command executed successfully
✅ [DEBUG] Completed stage: Execute command (3133ms)
📊 [DEBUG] Execution timing statistics:
────────────────────────────────────────
  Initialization: 12ms (0.2%)
  Get system info: 11ms (0.2%)
  Build prompt: 0ms (0.0%)
  AI generate command: 735ms (13.1%)
  Display result: 1ms (0.0%)
  Wait user choice: 1702ms (30.4%)
  Execute command: 3133ms (56.0%)
────────────────────────────────────────
  Total time: 5594ms

持续迭代:与 AI 一起"二次开发"

当工具的雏形落地后,我继续"抓着 AI 的手",让它帮我迭代。陆陆续续地加入了许多新功能,比如优化交互、支持更多模型配置等等。直到最终形态让我满意,我才把它推荐给了身边的亲朋好友。

AI 就是好用,你说话,它干活。。

如果你也对这个工具有兴趣,不妨试试看。当然,你也可以自行尝试接入 OpenRouter阿里百炼等其他模型,谁免费好用就用谁。我突然又想到一个新功能:也许可以做一个命令,让用户快速切换本地配置好的不同模型!也欢迎大家到 GitHub 提交 PR,一起让它变得更强大!

写在最后

ai coding 给我的冲击和惊喜还是很大的。 它可以快速推进工程进入中期进度,但是随着需求和复杂度增加,就会出现乏力,现阶段人工还是决定了这个工程能到的上限

就像自动驾驶没有完全进入L5,可以成为很有力的辅助,做不到完全放开方向盘,否则就会失控。失控后的无力感会让你想放弃

不过很难否认,有一天真正的 AGI 来临,不仅改变的是开发方式,更可能是全新的用户产品侧的表达方式。在这个期间,建议新手程序员基于ai快速学习中级程序员基于现有的工程项目经验里,在ai的基础上提升效率和上限。老炮程序员就随便玩啦,不过我建议利用ai快速扩展其他领域的工程能力,形成新的知识正向循环。


不扯了,下班。

相关推荐
AmsWait3 分钟前
玩转GitHub Copilot新技能:用MCP服务打造你的智能编程助手
ai编程·github copilot·mcp
302AI1 小时前
编程能力超越 Claude Opus 4?DeepSeek V3.1最新版本实测
llm·ai编程·deepseek
用户4099322502122 小时前
FastAPI的死信队列处理机制:为何你的消息系统需要它?
后端·ai编程·trae
攀登的牵牛花4 小时前
Claude Code 通关秘籍国内玩家免费上车指南
ai编程·claude·cursor
bug菌4 小时前
你的Java代码还在"屎山"里挣扎?Trae能否助你重获新生?
aigc·ai编程·trae
liupengfei-iot5 小时前
AutoGLM2.0背后的云手机和虚拟机分析(非使用案例)
人工智能·智能手机·ai编程
runfarther5 小时前
uv与conda的区别及选择指南
语言模型·conda·ai编程·uv
Pitayafruit6 小时前
Spring AI 进阶之路04:集成 SearXNG 实现联网搜索
spring boot·后端·ai编程
MobotStone18 小时前
你以为AI在思考?其实90%在搬砖!
ai编程