V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ariesxox
V2EX  ›  分享创造

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

  •  
  •   ariesxox · 3 月 17 日 · 1098 次点击

    痛点

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

    • 知道要"找出当前目录下所有大于 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   ·   3781 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 04:20 · PVG 12:20 · LAX 21:20 · JFK 00:20
    ♥ Do have faith in what you're doing.