LLM本地Shell工具

mish是一款介于Shell和调用者之间的LLM本地Shell工具,提供结构化输出、错误诊断和进程控制,适用于开发者和LLM代理。

  • by aetherwing-io
  • Rust
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 aetherwing-io/mish

使用说明

Five MCP tools between your agent and the OS.
Structured output · error diagnostics · process control · one binary

ohitsmish.com · Releases · Architecture · Benchmarks


Before:  agent → Bash("cargo test")        → 1,319 lines raw output
After:   agent → sh_run("cargo test")      → 201 lines (6.6× reduction)

Before:  agent → Bash("cargo test") + watch → 1,319 lines raw output
After:   agent → sh_run watch="warning"     → 3 lines (440× reduction)

Before:  agent → Bash("cp missing dest/")  → "No such file" + 4 follow-up calls
After:   agent → sh_run("cp missing dest/") → error + path walk + permissions + nearest dirs

安装

# macOS (Apple Silicon + Intel) and Linux
curl -fsSL https://ohitsmish.com/install.sh | sh

# or from source
cargo install --git https://github.com/aetherwing-io/mish

连接

# Claude Code
claude mcp add mish -- mish serve

# Cursor / Windsurf / any MCP client — add to your config:
"mish": { "command": "mish", "args": ["serve"] }

重新启动客户端。出现五个工具:

工具 它做什么
sh_run 运行命令。输出被压缩、分类,并通过故障诊断进行丰富。
sh_spawn 启动后台进程。等待就绪的模式、别名、输出假脱机。
sh_交互 发送输入、读取尾部、发出信号或终止正在运行的进程。
sh_session 具有完整生命周期控制的命名PTY会话。
sh_帮助 自我记录参考卡。你的经纪人会阅读它,从不需要手册。

它做什么

mish位于shell和它的调用者之间——无论是LLM代理、人类还是两者兼而有之——并返回结构化、上下文高效的响应。它对每个命令进行分类,并应用正确的处理程序。纯粹的启发式,循环中没有LLM。每个响应都包括退出代码、时间和命令类别。在失败时,mish会预先遍历路径、检查权限并列出附近的文件——在您的代理必须询问之前。

命令路由

每个命令分为六类:

类别 命令 行为
浓缩 npm、cargo、docker、make、pytest PTY捕获→ ANSI带→ 去重→ 奥利奥截断
叙述 cp、mv、mkdir、rm、chmod 检查→ 执行→ 叙述发生的事情
穿透 cat、grep、ls、jq、diff 逐字输出+元数据
结构化的 git状态,docker ps 机器可读解析
交互式 vim、htop、psql、节点REPL 具有原始模式检测的透明透传
危险 rm-rf,强制推送,重置--硬 执行前发出警告

基准测试

相同的命令,相同的机器,相同的会话。mish与裸shell在真实Rust代码库上的比较。

场景 减少 如何
完整的测试套件 6.6× 扣除+奥利奥截断——头部和尾部保持不变,重复中部下降
测试套件+手表 440× 只有正则表达式匹配的行返回
命令失败 5→1 往返旅程 路径行走、权限、最近的目录——失败时预先获取

完整基准数据: SHOWCASE.md

运作原理

mish是一个二进制文件,有两个接口:

MCP服务器 (mish serve)--JSON-RPC上的进程监控器,在每个响应上都有环境进程状态,观察正则表达式过滤的模式,以及auth/MFA的操作员切换。

CLI代理 (mish <command>)--用类别感知的结构化输出包装单个命令。独立工作或与任何LLM工具一起工作。

两者共享同一核心:类别路由器→ 压缩器管道(VTE解析、进度删除、数据删除、Oreo截断)→ 误差富集→ 语法系统(支持方言的TOML工具语法)。

看 建筑.md 对于完整的执行模型。

状态

积极发展。跨单元、集成、CLI、语法、夹具和MCP层的1400多个测试。MCP服务器在日常使用中使用Claude Code进行了现场和战斗测试。macOS和Linux。

许可证

麻省理工学院