Natural language CLI — type : and speak your intent
Project description
ex
在终端输入
:进入 AI 命令模式。说出你想做什么,ex 规划并执行。
ex 本身完全免费。 你需要自己的 LLM API Key(或本地 Ollama,也免费)。
❯
:找出所有超过200行的Python文件,按行数倒序
安装
pipx(推荐)
pipx install ex-cli
vex --setup
vex --setup # 配置你的 API Key + 初始化 shell 集成
# 重开终端
pip
pip install ex-cli
vex --setup
Homebrew(macOS)
brew tap yourusername/tap
brew install ex
vex --setup
第一步:获取 API Key
vex --setup 会引导你选择并填入,支持以下提供商:
| 提供商 | 注册地址 | 价格 |
|---|---|---|
| DeepSeek | platform.deepseek.com/api_keys | ¥0.001/千 tokens,最便宜 |
| Kimi | platform.moonshot.cn/console/api-keys | 注册有免费额度 |
| OpenAI | platform.openai.com/api-keys | GPT-4o-mini 按量付费 |
| Ollama | ollama.com | 完全免费,本地运行 |
填入一个 API Key 就能用,Key 保存在你本地的 ~/.zshrc,不经过任何第三方服务。
使用
重开终端后,在空白行输入 : 即可进入 AI 命令模式:
❯
:找出所有超过200行的Python文件,按行数倒序
▌ 找出所有 Python 文件并按行数排序
1 fd -e py .
" 递归查找所有 .py 文件
2 xargs wc -l
" 统计每个文件行数
3 sort -rn | grep -v total | head -20
" 倒序取前20
管道:fd -e py . | xargs wc -l | sort -rn | grep -v total | head -20
[p]管道执行 [s]逐步确认 [q]退出 > p
│ 1842 ./src/engine.py
│ 967 ./src/routes.py
│ 543 ./tests/test_engine.py
Vim 语义完整保留
| 输入 | 行为 |
|---|---|
:找大文件 |
AI 规划 + 逐步确认 |
:!ls -la |
直通 shell(Vim :! 语义) |
:h 找大文件 |
只看计划,不执行 |
:q |
什么都不发生 |
:q! |
退出当前 shell |
Ctrl+: |
自动执行,不逐步确认 |
ESC |
取消,返回普通提示符 |
行不为空时,: 正常插入
❯ echo "hello:world" ← 正常,不触发 AI
❯ git commit -m ":" ← 正常,不触发 AI
配置 LLM
运行 vex --setup 时会引导配置,也可以手动设置环境变量:
# 推荐:DeepSeek(成本最低)
export DEEPSEEK_API_KEY=sk-xxx
# 或 Kimi
export MOONSHOT_API_KEY=sk-xxx
# 或 OpenAI
export OPENAI_API_KEY=sk-xxx
# 或完全本地(需先安装 ollama)
ollama run qwen2.5-coder:7b
命令参考
vex --setup # 初始化 shell 集成(首次安装后运行)
vex --config # 修改 LLM / 执行模式配置
ex --update # 更新到最新版本
vex --version # 显示版本
# 执行模式(也可在 --config 中设置)
EX_MODE=confirm # 默认:逐步确认
EX_MODE=auto # 自动执行
EX_MODE=dry # 演习:只显示计划
# 静默启动(不显示提示信息)
EX_QUIET=1
卸载
vex --config # 选择"卸载",自动从 rc 文件移除
pipx uninstall ex-cli
示例
:在所有 TypeScript 文件里找使用了 console.log 的地方
:把 downloads 目录里超过 100MB 的文件找出来,按大小排序
:从 meeting.mp4 提取音频,转成 mp3
:扫描这个 Python 项目的安全漏洞,输出 JSON 报告
:调用 GitHub API 列出最近 star 的10个仓库
:读取 data.json,找出 status 为 error 的条目并统计
:查看当前 Kubernetes 集群里所有 Pending 状态的 Pod
致谢
命名灵感来自 Vim 的 Ex 模式——: 从来都是用来执行命令的。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
vex_cli-0.1.1.tar.gz
(13.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
vex_cli-0.1.1-py3-none-any.whl
(15.6 kB
view details)
File details
Details for the file vex_cli-0.1.1.tar.gz.
File metadata
- Download URL: vex_cli-0.1.1.tar.gz
- Upload date:
- Size: 13.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c033862398fce96d6658d96fd9d30be7d760ca154685a85cc3e5017f84827cab
|
|
| MD5 |
aa67e4eeb8c94964de64c6950b8b0aae
|
|
| BLAKE2b-256 |
a23210acba455ce6150de2b839347f316519b55001dcc385e0bed10364156489
|
File details
Details for the file vex_cli-0.1.1-py3-none-any.whl.
File metadata
- Download URL: vex_cli-0.1.1-py3-none-any.whl
- Upload date:
- Size: 15.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f6c6958a43386b93e761266a91cfaa8c7c9f4fafa80dea8f41bd91ef72f3a65
|
|
| MD5 |
a654dc5180cfb15eac000f48a3f98919
|
|
| BLAKE2b-256 |
d38c0001a62974eae597184ec689854d28ef4d50ae25203539f1ef459a9aa43c
|