用自然语言驱动终端,Pragmatic AI Shell 让运维排障"说话就行"
还在为记不住 lsof、awk、find 的参数写法头疼?还在 ps + netstat + 文档之间来回切换?Pragmatic AI Shell(smartcli) 试图改变这一切——你只需要用自然语言描述意图,它替你生成命令,安全过滤后确认执行,全程可审计。
一句话介绍
你说人话,它出命令,确认后执行。
🤖 > 找出占用 8080 端口的进程
➜ 建议执行: lsof -i :8080
确认执行?[y/N] y
java 12345 user 45u IPv6 0x1234 ... TCP *:http-alt (LISTEN)
(退出码 0)
🤖 > 杀掉这个进程
➜ 建议执行: kill -9 12345
核心特性
-
🧠 语义模式:自然语言 → LLM 生成 shell 命令 → 二次确认 → 执行;支持 Ctrl+C 取消,超时或服务异常自动降级直通模式,不中断会话。
-
💬 多轮对话上下文:保留最近 10 轮对话与命令执行结果(直通 ! 命令同样入史),模型可引用上一步输出完成后续操作;/context 查看、/clear 清空,退出会话即清空,不跨会话持久化;密钥类信息(sk-、token= 等)入史前自动脱敏。
-
🛡️ 三层安全防线:模型自审(UNSAFE)→ 黑名单与风险分级过滤 → 危险命令强制人工确认;默认拦截内网地址扫描类请求。被安全策略拒绝的命令会入史,模型不会被诱导生成规避安全策略的命令。
-
⚡ 直通模式:! 前缀或 /mode direct,命令原样执行,与原生终端无异。
-
📂 会话状态 REPL 级处理:cd/export/source 等状态命令在 REPL 层模拟,跨命令持久生效,弥补子进程隔离带来的状态丢失问题。
-
📋 全量审计日志:每条命令的来源、原文、执行结果、耗时,JSON 落盘,事后复盘一目了然。
-
🔌 真终端体验:JLine REPL、Tab 路径补全、命令历史、等待动画;ssh/vim/top 等交互命令直连终端,可正常分配伪终端。
和 AI 编程助手(Claude Code / CodeBuddy 等)有什么区别?
它们是“AI 程序员”——面向代码仓库,自主读写文件、重构、跑测试;Pragmatic AI Shell 是“AI 终端”——面向命令本身,专注运维排障与日常终端操作。核心差异:
-
人主导,AI 辅助:每条命令强制人工确认后才执行,配合三层安全防线,AI 生成的命令敢在真实生产环境里跑;
-
会话状态真实持久:cd/export/source 在 REPL 层模拟,跨命令生效(对子进程隔离的补偿设计);
-
上下文围绕“命令 + 结果”:多轮历史包含命令执行输出,直通 ! 命令同样入史,密钥自动脱敏;
-
无 Key 也能用:不配置 LLM 就退化为纯直通终端,交互命令(ssh/vim/top)直连终端。
技术亮点
-
多模型支持:基于 LangChain4j,兼容任意 OpenAI 协议(DeepSeek / OpenAI / 智谱 / Ollama 等),本地模型同样可用;
-
多轮消息组装:每轮历史按「用户输入 → 命令 → 执行结果块」组装为结构化消息,让模型"看得见"上一步发生了什么;
-
输出回流:命令实时打印的同时收集尾部摘要(默认 2000 字符,超出保留最新),供上下文引用;
-
健壮的进程管理:命令超时递归销毁整棵进程树,不残留孤儿进程;
-
跨平台:macOS / Linux / Windows 均可运行,配置中心化(config.yaml),支持只读模式(适合生产环境排障)。
快速上手
git clone https://github.com/pragmatic-lee/pragmatic-ai-shell.git
cd pragmatic-ai-shell
cp config.example.yaml config.yaml # 填入 LLM 配置bin/smartcli
未配置 LLM 时程序自动降级为纯直通模式,即使没有 API Key 也能当普通终端用。
结语
Pragmatic AI Shell 面向"想用终端但不想背命令"的开发者与运维,以安全为底线,把 AI 能力做进最常用的工具里。项目开源,欢迎体验与共建。