开源了一个用自然语言操控终端的 Rust CLI 工具,再也不用记命令了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ariesxox
V2EX    分享创造

开源了一个用自然语言操控终端的 Rust CLI 工具,再也不用记命令了

  •  
  •   ariesxox 3 月 17 日 1159 次点击

    痛点

    作为开发者,我经常遇到这种场景:

    • 知道要"找出当前目录下所有大于 100MB 的文件",但 find 的参数记不住
    • 知道要"压缩 src 目录",但 tar-czf -xvf 每次都要查
    • 知道要"杀掉占用 8080 端口的进程",但不同系统命令还不一样
    • Windows 上用 PowerShell 、Linux 上用 bash ,语法切来切去头大

    所以我用 Rust 写了 piz 一个终端命令翻译器,用自然语言描述你想做什么,它帮你生成精确的 shell 命令。

    演示

    $ piz 列出所有大于 100MB 的文件 find . -size +100M -type f [Y] Execute [n] Cancel [e] Edit 
    $ piz 把 src 目录压缩成 tar.gz tar -czf src.tar.gz src/ [Y] Execute [n] Cancel [e] Edit 
    $ piz kill the process on port 8080 lsof -ti:8080 | xargs kill -9 [Y] Execute [n] Cancel [e] Edit 

    中英文都支持,它会根据你当前的操作系统、shell 类型、工作目录自动生成对应的命令。

    主要特性

    多 LLM 后端:原生支持 OpenAI / Claude / Gemini / Ollama (本地模型),外加 12+ 个 OpenAI 兼容服务商( DeepSeek 、硅基流动、Moonshot 、智谱、通义千问等),基本上你手头有的 API 都能用。

    三层安全防护:这是我花了不少精力的地方。

    1. Prompt 层面 LLM 会拒绝非命令类输入
    2. 本地注入检测 12+ 种恶意模式识别(反弹 shell 、环境变量泄露、编码 payload 等),无需联网
    3. 危险等级分类 Safe / Warning / Dangerous 三级提示

    不会出现"帮我删库"就直接 rm -rf / 的情况。

    智能缓存:SQLite 缓存 + SHA256 哈希键,相同问题秒回,支持 LRU 淘汰和 TTL 过期。缓存命令取出时还会重新做注入检测。

    交互式聊天piz chat 进入多轮对话模式,适合连续调试场景。

    命令解释piz -e 'tar -czf archive.tar.gz src/' 逐段拆解命令含义,学习利器。

    失败自动修复piz fix 可以诊断上一条失败命令并自动修复,最多重试 3 次。

    多候选选择piz -n 3 find large files 生成多个候选命令,你挑一个最顺眼的。

    Shell 集成eval "$(piz init bash)" 后,生成的 cdexportsource 能直接作用于当前 shell ,不是开子进程。

    管道模式piz --pipe list all rust files 输出纯命令文本,方便脚本串联。

    跨平台:Windows (PowerShell/cmd) / macOS / Linux 全支持,Windows 下 GBK 编码也能正确处理。

    安装

    一行搞定:

    # macOS / Linux curl -fsSL https://raw.githubusercontent.com/AriesOxO/piz/main/install.sh | bash # Windows (PowerShell) iwr -useb https://raw.githubusercontent.com/AriesOxO/piz/main/install.ps1 | iex # 或者 cargo cargo install piz 

    首次运行会自动进入配置向导,选择 LLM 后端、填 API Key 就可以用了。内置 12 个服务商预设,国内用户可以直接选 DeepSeek 、硅基流动等。

    一些数字

    • Rust 编写,单二进制,无运行时依赖
    • 176 个测试用例(单元 + 集成)
    • CI 在 Ubuntu / Windows / macOS 三平台跑
    • MIT 协议
    • 当前版本 v0.2.6

    为什么不用 xxx ?

    可能有人会问"GitHub Copilot CLI / aichat / shell-gpt 不也能做吗?"

    piz 的侧重点不太一样:

    • 安全层是内建的,不是可选插件。本地注入检测不依赖网络,12+ 种攻击模式识别
    • 多后端切换开箱即用,特别是国内服务商支持好,不用折腾代理
    • Shell 集成做得比较深,cd/export/source 能直接生效
    • 缓存减少重复 API 调用,省钱省时间
    • 中文是一等公民,不是后加的

    当然也有不足,比如目前还是命令行工具,没有 TUI 界面,后续可能会加。

    链接


    第一次在 V2EX 分享自己的项目,欢迎试用和反馈!有任何问题可以直接在帖子里问,或者去 GitHub 提 issue 。如果觉得有用,给个 Star 就是最大的鼓励了。

    15 条回复    2026-03-18 09:36:09 +08:00
    mcfever
        1
    mcfever  
       3 月 17 日
    我最近在做 DartShell( https://dartshell.com)的时候,就一直在思考这个问题,DartShell 本身就拥有 ssh 服务器信息,最理想的形态,它应该是一个 AI Agent ,提供一个接口给 codex,或者 cc ,直接通过自然语言完成 ssh 服务器的登录,命令的执行。比如 “请帮我查看下/data/s1/logs 下的日志,帮我分析下 xxxx 问题" 我们不用关心具体命令是什么,把配置信息交给它就好。后续的版本,我就打算集成这方面的能力给它.感觉这是一个方向。
    Visoar
        2
    Visoar  
    PRO
       3 月 17 日
    piz 翘起来还是有点麻烦。 感觉结合下 alias 会更好用~
    另外建议支持
    brew 安装
    ariesxox
        3
    ariesxox  
    OP
       3 月 17 日
    @Visoar 好的大哥,考虑一下这就安排上
    Visoar
        4
    Visoar  
    PRO
       3 月 17 日
    另外看起来安装脚本有点问题。。

    失败点就是目标目录 /usr/local/bin 不存在。
    - 它写死了 INSTALL_DIR="/usr/local/bin"
    - 但没有先执行 mkdir -p /usr/local/bin
    Visoar
        5
    Visoar  
    PRO
       3 月 17 日
    刚好我这是台新机器,没创建过 `/usr/local/bin`
    Visoar
        6
    Visoar  
    PRO
       3 月 17 日
    简单安装试了下

    发现了点小 bug
    1 OpenAI 兼容接口的 base_url 中 /v1/ 处理有问题,导致按默认下一步的情况下,会多次拼接,比如选择 openroute 的时候你内置的 url 已经带了 v1 但是会在请求时候再拼接一次
    2 Kimi 的模型情况下,temperature 会报错
    jukanntenn
        7
    jukanntenn  
       3 月 17 日
    很棒,挺有需求的!有没有可能再不影响 UX 的情况下,加入命令解析的功能。我现在的流程是碰到命令 -> 问豆包 -> 让豆包解释命令参数的含义 -> 复制执行。因为有些情况下命令参数看不懂,命令就不太敢执行。我的一个想法是看能否再目前的选项菜单再加一个选项,支持展开详情看详细解释。
    dsd2077
        8
    dsd2077  
    PRO
       3 月 17 日 via Android
    这种体验非常方便,我们在 Chaterm ( https://chaterm.cn )中也支持了这个功能
    ariesxox
        9
    ariesxox  
    OP
       3 月 17 日
    @Visoar #5 没想到属实,这就修
    Visoar
        10
    Visoar  
    PRO
       3 月 17 日
    @ariesxox #9 我简单试着修了下,提了 pr 。可以 review 看看
    ariesxox
        11
    ariesxox  
    OP
       3 月 17 日
    @Visoar #2 安排上了
    ariesxox
        12
    ariesxox  
    OP
       3 月 17 日
    @jukanntenn 可以增加可选功能,明天有空完善
    Ocyss
        13
    Ocyss  
       3 月 17 日
    看着不错, 等上班摸鱼在玩

    纯命令行工具挺好的呀, 即用即走, TUI 感觉没啥必要吧, 偶尔忘了让 ai 生成执行一下啥的. 上 TUI 感觉就会臃肿很多, 除非是那种特别复杂的流程?
    ariesxox
        14
    ariesxox  
    OP
       3 月 17 日
    @Ocyss 是的,我做的时候功能尽量纯粹一些
    ariesxox
        15
    ariesxox  
    OP
       3 月 18 日
    @ariesxox #12 最新版本已经实现,欢迎体验
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3083 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 00:19 PVG 08:19 LAX 17:19 JFK 20:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86