- 176818802072026-09-0850278
平时在终端里干活,有两个事情我经常觉得头大:
一是记不住复杂参数。比如查个占用端口的进程、按修改时间搜一批文件、或者解压某个不常见的压缩包,隔三差五就得切到浏览器搜一下。
二是跨系统命令转换。查资料时网上往往只贴了 Linux (Bash) 命令,但我手头如果在 Windows (PowerShell) 下,有些管道符和参数根本跑不起来,还得手动翻译一遍。
市面上其实有不少终端 AI 工具,但我试了一圈发现不太适合我:
- 太重:动辄装几百兆的环境或依赖。
- 喜欢自作主张:很多工具直接就把生成的命令跑了。说实话,让 AI 拿终端权限我心里总犯怵,万一哪条参数理解偏了把文件删了或者服务杀了,排查起来更痛苦。
于是周末我自己搓了个小 CLI:
ai-shell-helper(命令行里直接敲ash)。- npm:
https://www.npmjs.com/package/ai-shell-helper- GitHub:
https://github.com/wallace921029/ai-shell-helper它的设计思路很简单
- 只生成,不执行:输入需求,它返回一条针对当前环境最合适的可执行命令,同时自动拷进剪贴板。我扫一眼确认没毛病,自己
Ctrl + V回车执行。- 支持跨 Shell 转换:默认会自动识别你的操作系统( PowerShell / cmd / Bash / Zsh / Fish 都可以),也可以手动用
ash target指定。把 Bash 命令直接丢给它,它能转成 PowerShell 等价命令。- 兼容所有 OpenAI 格式接口:自己填 Base URL 、Key 和 Model 。我自己日常接 DeepSeek ,几分钱能用很久,速度也快。
- 轻量:依赖只有交互 prompt 和剪贴板工具,解压后 27KB 左右,Node 18+ 原生 fetch 请求,没有多余的黑魔法。
几个典型用法
1. 自然语言要命令
直接敲
ash,输入人话:```
ash把当前目录及其子目录下所有的 .log 文件找出来并删除
Get-ChildItem -Recurse -Filter *.log | Remove-Item
```输出出来的命令已经在剪贴板里了,看一眼没问题直接粘贴回车。2. 贴别人的命令让它转语法
比如你在 Windows 上,从网上搜到一条 Linux 命令:```
ashgrep -rn "TODO" ./src
Select-String -Path ./src/* -Pattern "TODO" -SimpleMatch
```它会根据你设定的目标 Shell 转换成可用的语法。3. 当做终端里的快速问答
有时候不需要生成命令,只是想随口问个技术问题,带
-c参数就行:```
ash -cnginx 的 301 和 302 重定向在配置上有啥区别
``
如果是在排查一个连续的问题,可以用-lc` 进入多轮对话模式。这里我做了一个类似 Claude Code
/compact的机制:如果多轮聊得太长、历史上下文堆得比较多,它会在后台自动做一次摘要压缩,把前面的对话提炼成一段简短上下文,既防止 Token 越聊越贵,也能避免超出模型的上下文窗口。安装与配置
需要 Node.js >= 18:```
npm install -g ai-shell-helper
``第一次用的时候,跑一下初始化:``
ash init
```会提示输入三个信息:- Base URL:比如
https://api.deepseek.com或https://api.openai.com/v1- API Key:你的 Key
- Model ID:比如
deepseek-chat或gpt-4o-mini平时常用命令就这几个:
-
ash:生成命令 / 转换命令-
ash target:切换当前的目标 Shell ( PowerShell / cmd / bash / zsh / fish )-
ash clipboard [on|off]:开关自动进剪贴板-
ash -c:单轮问答-
ash -lc:多轮对话( Ctrl+C 退出)-
ash reset:清空配置配置信息保存在本地
~/.ash/config.json,不会上传任何其他东西。代码和文档都在 GitHub 上,MIT 协议。如果你也有经常记混参数或者跨平台查命令的习惯,可以试一下,有什么建议也欢迎提 issue 。
主楼 - mMartin2026-09-0844128
没有 ai 的时候这个工具就很出名了: https://github.com/tldr-pages/tldr
- Binwalker2026-09-082357
- ob2026-09-081361
@mMartin
@Binwalker 怎么有两个 - jimyag2026-09-0868407
https://github.com/jimyag/askshell 之前做过一个 shell 工具,输入 ?问题就可以向他提问,他会回答你的问题给出命令执行。 原理就和写了一个 bash 的 function 一样简单,只不过加了一些可以读取之前执行命令和结果的功能。
- Binwalker2026-09-082357
- loading2026-09-081931
- beyondstars2026-09-0868408
alpine 默认的 shell 也叫 ash: https://wiki.alpinelinux.org/wiki/Shell_management#Ash_shell
- StevenRCE02026-09-0968409
相信楼主说“太重”的肯定包含了 Warp ,这个软件在早期几乎只有命令补全/生成的时候我特别喜欢用,后来商业化不断加料之后就不用了,我感觉也完全失去了竞争力(相比各种 Coding Agent )
- 176818802072026-09-0950278
@StevenRCE0
是的,Warp 也好 Ghostty 也好我都用过,主要是我自己比较喜欢用原生的 terminal ,不太喜欢折腾,最后还是回到了原生的怀抱,足够的轻量、干净。
然后因为我最近频繁的需要在 windows 和 macOS/ubuntu 上切换我的环境,而我个人又只熟悉 linux 的命令,所以就萌生了这个想法。没有想太多的需求,就只是想解决一件事情,就是在工作的时候,一些小问题不想反复的打开 AI 软件问命令该怎么写,来打断我的工作流,除此之外没有任何想替代什么软件或者复杂的功能,仅仅解决这个单一的需求。
甚至我的想法是即使到了服务器里面,也可以安装一个 ash ,只要用完后直接 ash reset 来清空配置,就行了,下次还可以继续用。
- 176818802072026-09-0950278