终端交互服务器

一个用于AI辅助开发的多终端交互服务器,支持多AI工具并行操作,避免终端阻塞问题。

  • by cheezmil
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 cheestard/cheestard-terminal-interactive

使用说明

Cheezmil终端交互式MCP服务器

中文自述

为什么使用此项目

  • 如果你正在开发需要终端交互的脚本或命令,使用这个工具可以让人工智能帮助你测试它们,大大提高效率。
  • 目前,各种主流人工智能编程工具在执行某些命令时都会卡住,比如 npm run dev,导致终端堵塞。在这种情况下,人工智能不会得到及时的反馈。一些AI编程工具有一个硬编码的2分钟超时,即使在超时后,它们也看不到任何终端信息。有些人可以在超时后看到消息,而另一些人则完全卡住了。这个项目节省了因卡住而浪费的时间。
  • 如果你同时使用不同的AI编程工具,这个项目允许不同的AI查看正在运行的终端。
  • 您可能希望一个codex来控制其他claude代码实例。
  • 您可能会想,“为什么不将所有终端内容输出到一个文件中供AI读取?”然而,这会消耗额外的API请求。此外,AI不知道哪些命令需要输出到文件,也不知道文件应该放在哪里。你需要手动编写清晰的提示来告诉AI,否则它仍然会卡住,这很麻烦。
  • 在某些情况下,您可能需要重新启动codex-cli或claude代码来应用一些设置,但您不想丢失正在运行的终端任务。
  • 有时,即使有提示指示AI如何运行命令,AI也可能会忘记并执行您不想要的命令。您可以将这些命令添加到黑名单中,并附加一个提示,以加强对人工智能正确操作的指导。
  • Claude Code已经有后台任务了,为什么你还需要这个项目?首先,后台任务需要调用明确的提示,否则需要手动触发;后台任务需要具有固定超时的额外提示,无法灵活识别;后台任务对小任务反应不快,通常需要几分钟才能做出反应,影响效率。此外,还有冗余的后台任务仍在接收终端销毁信息。如果你的脚本有终止旧实例的操作,Claude Code就会开始疯狂,随机检查和重启脚本,浪费时间。(2025年12月22日)
  • 使用wsl.exe或sshroot@127.0.0.1作为shell直接输入本机Linux命令,降低了wsl“输入一些文件修改命令”或ssh经常遇到的错误概率root@127.0.0.1“输入一些文件修改命令”。

用法

运行后端

⚠️ 由于 node-pty,Windows用户目前需要使用Node.js版本20或更低版本才能正常工作。为了方便起见,我已将所有安装、编译和运行脚本设置为使用20.19.5。请确保安装fnm(https://github.com/Schniz/fnm)否则,它将无法工作。

如果您的系统是Windows,并且您习惯使用PowerShell,强烈建议安装PowerShell 7而不是系统默认的PowerShell,以避免一些编码问题。 (https://github.com/powershell/powershell/releases)

首先分叉这个项目以便于公关贡献,然后:

git clone https://github.com/<your-github-username>/cheezmil-terminal-interactive.git
# Install frontend and backend dependencies
node start_install.mjs
# Build backend
start_build_be_cheezmil-terminal-interactive.mjs
# Run backend
node start_be_cheezmil-terminal-interactive.mjs

⚙️ MCP客户端配置

在配置MCP客户端之前,最好在AI编程工具中添加一条规则:

Except for commands that locate and read code files, all other commands must be executed using the CTI MCP terminal tool!

当然,你也可以问你的人工智能编程工具,系统内置的命令执行工具函数叫什么,然后为它定制一个提示,将CTI与“系统的内置命令执行工具功能”结合起来。如果CTI没有运行,AI将智能地自动使用AI编程工具附带的原始工具功能来执行命令。如果你从不告诉它CTI工具,人工智能可能永远不会使用CTI。

可以使用支持Streamable HTTP的所有MCP客户端。不同MCP客户端的配置将略有不同。请参阅相应客户的官方文件。以下是一些简单的例子:

不同的编程软件具有不同的MCP最大超时设置。请参阅相应的文件。请为CTI设置一个非常大的超时,否则一些编程软件的默认超时非常短。例如,Codex只有一个默认的60秒超时,它不会得到任何信息输出,因此无法正常使用。

  • Cline/Roocode/Kilocode:
    "CTI": {
      "type": "streamable-http",
      "url": "http://localhost:1106/mcp"
    }
  • 法典:
[mcp_servers.CTI]
url = "http://localhost:1106/mcp"
tool_timeout_sec = 666666
  • 光标:
    "CTI": {
      "type": "streamable-http",
      "url": "http://localhost:1106/mcp"
    }
  • 克劳德代码:
    "CTI": {
      "type": "http",
      "url": "http://localhost:1106/mcp"
    }

命令行添加方法: 除了配置文件方法,Claude Code还支持使用命令行快速添加MCP服务器:

# Add cheezmil-terminal-interactive server
claude mcp add CTI --scope user --type streamable-http --url http://localhost:1106/mcp

# List configured MCP servers
claude mcp list

命令行参数说明:

  • --scope user:将配置范围设置为用户级别
  • --type streamable-http:将传输类型指定为可流式传输的http
  • --url http://localhost:1106/mcp:指定服务器地址

对于复杂的配置,建议直接编辑配置文件:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • 窗户: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

  • 双子座命令行界面:

    "CTI": {
      "type": "http",
      "url": "http://localhost:1106/mcp"
    }
  • 帆板运动:
    "CTI": {
      "type": "streamable-http",
      "url": "http://localhost:1106/mcp"
    }
  • Qwen代码:
    "CTI": {
      "type": "streamable-http",
      "url": "http://localhost:1106/mcp"
    }
  • iFlow命令行界面:
    "CTI": {
      "type": "streamable-http",
      "url": "http://localhost:1106/mcp"
    }
  • 打开代码:
    "CTI": {
      "type": "streamable-http",
      "url": "http://localhost:1106/mcp"
    }
  • 曲速:
    "CTI": {
      "type": "streamable-http",
      "url": "http://localhost:1106/mcp"
    }
  • 增强:
    "CTI": {
      "type": "streamable-http",
      "url": "http://localhost:1106/mcp"
    }

🌐 Web管理界面使用

# Build frontend
start_build_fe_cheezmil-terminal-interactive.mjs
node start_fe_cheezmil-terminal-interactive.mjs

免责声明

  • 由于不同AI模型在判断危险命令和不同提示引导时的智能水平不同,AI有时无法确定某些命令是否危险,例如一些递归文件删除命令。请手动执行一些更危险的命令,或明确指定我要处理的危险命令。无论通过此项目执行什么命令,您都要对任何不利后果负责。
  • 不允许直接访问部署在您计算机上的此项目的互联网,否则您将对任何不利后果负责。

2025-11-03主流AI编程工具中终端交互功能的比较(如有错误,请告诉我进行更正🥲):

功能 Cheezmil终端交互 克劳德代码 Codex 反重力 光标 Cline Roocode Kilocode Gemini CLI Qwen Code iFlow CLI 开放代码 风帆 扭曲 增强 鹅 挤压
输入ctrl+c ✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ✅ ❌ ❌
输入输入 ✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ✅ ❌ ❌
没有经常出现的问题 ✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ✅ ❌ ❌
使用一个API请求创建多个终端 ✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌
同时查看多个终端输出 ✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌
关闭旧终端 ✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌
从终端搜索字符串 ✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌
输入y或n ✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ✅ ❌ ❌
在WSL 中直接输入Linux命令✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌
与另一个命令行AI交互 ✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ✅ ❌ ❌
SSH终端 ✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ✅ ❌ ❌
新对话后继续使用以前的终端 ✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌
在命令执行前后执行指定的脚本 ✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌
在命令执行前后执行某些固定命令 ✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌
执行某些带有额外提示的命令,通知AI正确的方法 ✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌
使用正则表达式过滤终端输出以保存上下文 ✅ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌ ❌

TODO

  • []美化终端
  • []添加身份验证功能以防止任何人访问
  • [x] 添加命令黑名单-即使收到某些命令,它们也永远不会被执行