AutoTerminal:把「终端里的确认提示」变成可控的自动化(macOS / Electron)

0 阅读3分钟

日常在终端里做开发,最打断节奏的瞬间之一,就是各种“确认提示”:

  • Would you like to run... (y/N)
  • Proceed? (y/n)
  • 以及一些你非常确定“就是要继续”的交互

你当然可以手动敲 y,但当这种提示在一串流程里频繁出现时(安装依赖、初始化脚手架、跑脚本、批量命令),它就会变成一种“机械性阻塞”。

我最近在用一个小工具:AutoTerminal。它的目标很简单:识别终端输出中的特定提示,并按规则自动往 PTY 写入动作(比如 y\n;同时在你不想全自动时,也能让你“半自动地一键确认/取消”。

项目地址:https://github.com/Immmmmmortal1/autoTerminal


先看效果

AutoTerminal 本质上就是一个“带规则引擎的终端窗口”,界面非常克制:右上角两个入口——Auto-Confirm规则

(图:主界面 + Auto-Confirm 开关)

截屏2026-01-26 18.22.27.png

当你在终端里遇到命中的提示时:

  • Auto-Confirm 勾选:直接自动写入默认动作(常见就是 y\n
  • Auto-Confirm 不勾选:弹出“手动确认”弹窗,你可以选:
    • 确认:发送默认动作(例如 y\n
    • 停止(Ctrl+C):发送 Ctrl+C
    • 发送输入:发送你填的内容(支持 \\n / \\r / \\t 转义)
    • ×:关闭弹窗,不发送任何内容,回到终端里自己手动输入

这套设计我很喜欢:自动化并不是“全自动”,而是“可随时降级为可控的人机协同”


规则:contains / regex 两种方式

右上角点 规则 会打开规则弹窗。规则分两类:

  • 内置规则(只读):展示当前内置的 Would you like to run... 等规则
  • 自定义规则:你可以新增规则,选择匹配方式并配置动作

(图:自定义识别规则弹窗)

截屏2026-01-26 18.22.57.png

自定义规则支持两种匹配:

  • contains:包含某段字符串就命中
  • regex:正则命中(并可配置 flags,例如 i

每条规则核心就是两部分:

  • pattern:匹配条件
  • action(写入 PTY):命中后写入什么(例如 y\\nyes\\n

你可以把它理解为:“当终端输出出现 XX,就自动输入 YY”。


拖入路径:减少复制粘贴

AutoTerminal 还有一个很实用的小功能:从 Finder 拖文件/文件夹到窗口,会把路径插入终端(自动加引号)

  • 拖入后如果立刻按回车:会自动 cd 到该路径
  • 如果拖入的是文件:则进入文件所在目录

这对经常在项目目录/文件路径间跳来跳去的人来说,省了不少复制粘贴的动作。


快捷键

  • Cmd + N:打开新窗口

安装与启动

方式 1:开发模式运行

npm install
npm start

如果遇到闪退或无日志:

npm run start:debug

方式 2:直接用 App(无需 npm/Node)

如果你只想用,不想装 Node 环境,可以直接下载仓库里提交的安装包:

  • Apple Silicon(M1/M2/M3):dist/mac-arm64.zip
  • 解压后把 AutoTerminal.app 拖进「应用程序」即可

如果 macOS 提示“已损坏/无法打开”(未签名应用很常见):

xattr -dr com.apple.quarantine "/Applications/AutoTerminal.app"

重要说明:请把它当成“带风险的效率工具”

README 里也明确提醒了:当前版本是简化版,暂未加回一些保护能力,例如:

  • 高风险识别(密码、sudo、破坏性命令等)
  • 更完善的去重/锁定策略
  • 更丰富的提示类型与状态机

所以我的建议是:

  • 先从“低风险、高确定性”的场景开始(例如脚手架确认、依赖安装确认)
  • 规则尽量写得更精确(尤其是 regex)
  • 需要的时候关掉 Auto-Confirm,用“手动确认弹窗”模式跑

最后:它适合谁?

如果你符合以下任意一条,AutoTerminal 会很顺手:

  • 你经常跑需要反复确认的脚本/命令
  • 你想把一些交互提示收敛成“规则 + 动作”
  • 你希望自动化,但又不想失去随时接管的控制权

项目地址再放一次:https://github.com/Immmmmmortal1/autoTerminal 喜欢的话给个start吧