做了个 SSH 终端 TermCat,支持 AI 命令和 AI 运维操作,最近加了 Claude Code 插件面板,求各位 V 友拍砖(补截图)
各位 V 友好,潜水多年,发个帖求点反馈。
因为自己对操纵系统命令不熟悉,很多工具不知道怎么配置,于是想开发一个工具帮我实现系统的命令操作。 于是实现了一个终端管理工具叫 TermCat ,主要是 SSH + AI 运维。最近用 Claude Code 用得多了,顺手写了一个监控插件叫 Claude Code Power ,把 Claude Code 的运行状态和多套环境配置塞进了 TermCat 的右侧边栏。今天把整个工具一起聊聊,看看大家有没有用得上的场景,或者哪里设计得不对的。


大概是个什么东西
简单说就是 SSH 终端 + AI 运维助手 + 一套插件系统。底层 Electron 28 + React 18 + xterm.js ,中间一层 Go 做 WebSocket 转发和认证,AI 推理在 Python 服务里跑。macOS / Windows / Linux 都有包。
终端管理本身永久免费——多 tab 、分屏、SFTP 文件浏览、系统监控、主机分组、跳板机这些都有。AI 部分需要点积分或者用自己的 API Key (下面会细讲)。
下面按四个我自己觉得相对有点意思的点说一下。
一、AI Agent 帮你做运维
这部分不是命令补全。命令补全 Warp 已经做得很好,我没必要重做。
我的方向是:你描述一个目标(比如"排查 Nginx 502"、"清理 /var/log 下超过 30 天的日志"),AI 自己规划步骤、逐步执行命令、读输出、根据结果调整下一步。每一步执行前要你点确认。高风险命令(重启、删除、改配置)会做二次提醒。
举个真实场景:半夜服务器 502 ,告诉它"排查 Nginx 502",差不多 2 分钟后它告诉我是上游 Node 应用挂了,建议重启 myapp 并配 PM2 防止复发。整个过程我点了 6 次"确认"。当然——它也不是每次都对,复杂业务 bug 它经常抓不到,遇到不熟的服务也会瞎猜。但日常那 80% 的"看日志、查进程、查端口、查配置"的重复活,确实能省不少时间。
模式分三种:
- Ask:上下文感知的问答,知道你连的是什么服务器
- Agent:自主多步运维,上面这个例子的模式
- Claude Code:集成 Claude Code SDK ,复杂远程开发调试
模型不绑定。服务端模式是积分计费,本地插件模式可以填自己的 API Key ( DeepSeek / Claude / OpenAI 都行)。Agent 能力包是 ¥69 一次买断,没有月费。
二、Claude Code Power 插件(这次新做的)
我自己用 Claude Code 用得比较多,遇到两个不太顺的点:
- 看不到它在干什么。当前 session 处于什么 Drive Mode 、刚才那条 prompt 调了哪些 tool / Skill / MCP / Sub-agent 、加载了哪些规则文件,全都藏在
~/.claude/projects/<hash>/*.jsonl里。要看就得再开个终端 tail ,或者手动翻文件。 - 多套配置切换比较烦。一会儿用官方 API ,一会儿换第三方代理,一会儿换个 model 比较输出,每次都要 export 一堆环境变量再重启 claude 。
所以做了这个插件。它会自动检测 TermCat 终端里跑的 claude 进程,在右侧边栏注入面板。功能其实不复杂,分两块:
实时面板(看 Claude Code 在干什么)
- 当前 Drive Mode 显示在最上面,可以一键循环切换
default / acceptEdits / plan / bypassPermissions( claude 在跑就走/permission-modeslash ,没在跑就改 settings.json ) - 按时间倒序列出当前 session 的每条 prompt
- 展开任意一条看详细调用:用了哪些 builtin tool 、Skill 、MCP 、Sub-agent ,加载了哪些规则文件
- 一键
/rewind回滚到任意 prompt - 多 tab 各跑一个 claude 互不干扰,切 tab 面板内容跟着切
Preset 管理(一键切环境)
- 维护多套配置:
ANTHROPIC_API_KEY/AUTH_TOKEN/BASE_URL/MODEL/MAX_TOKENS/ 任意自定义 env - 切 preset 自动写
active.env( POSIX )或active.ps1( Windows ),点 launch 一键起 claude - 如果只是改 model ,直接给运行中的 claude 发
/model <name>,不用重启 - 涉及 token / endpoint 变化会提示先 exit 再用新配置重起
设计上有几条自己比较在意的约束:
- 零侵入:只读
~/.claude/文件,不装 hook 、不改 settings 、不监听网络端口 - 填入不回车:除了 launch 按钮(明确"立刻启动"的手势),其他注入只把命令填到输入行,要你按 Enter 才执行
- 跨平台:Mac / Linux 走 lsof + ps ,Windows 走 PowerShell + CIM 探测进程(因为 wmic 在 Win11 22H2+ 被移除了)
不复杂,但是自己用着比裸用顺一些。也许对同样 Claude Code 多 session 、多模型来回切的同学有点用。
三、性能上做了一些事
终端工具卡顿就没法用。性能这块没什么巧思,就是把该做的事做了:
- 多 tab 不重新挂载——所有 tab 同时挂载,靠
z-index + opacity切换,切 tab 没有重建开销 - Vite 分包 + React.lazy——主包目前 ~413KB ( gzip ~132KB ),首屏只加载核心组件; Settings / Extensions / Payment / HostConfig / 5 个内置插件全懒加载
- xterm.js 高频输出用
requestAnimationFrame合并刷新 - localStorage 写入 300ms 防抖,避免每次 state 变更都同步落盘
- 启动 API 并行——
Promise.allSettled同时发,单个失败不阻塞 - 本地字体——
@font-face引本地 woff2 ,禁用外部 CDN - Main 进程禁用同步 I/O——
fs.readFileSync一律走fs.promises
其实没什么神奇的,就是 Electron 的常规优化都做了一遍。bundle-report 跟着 npm run build 一起出,每次加依赖都看一眼有没有进错 chunk 。
交互细节方面:分屏拖拽、终端拖到分屏自动迁移会话、跨 tab 终端会话保留、中/英/西三语 i18n 、5 种 UI 主题 + 5 种终端配色。
四、插件系统
这个其实是整个项目里我自己最满意的部分,但也最容易讲错——因为说"全插件架构"听起来像 buzzword 。具体一点说:
TermCat 自己用的几个面板( AI 运维、文件浏览器、系统监控、快捷命令库、传输管理)不是 hardcode 进客户端的,是用插件 API 写的,和外部插件走完全相同的接口。这意味着如果某天我想干掉某个面板,删一行注册就行;想加一个,新建目录写一个 index.ts 就行。
机制上有个稍微有意思的设计:插件不直接渲染 React 组件,而是输出声明式的 SectionDescriptor[],宿主按模板(header / select / list / msg-viewer / table / chart / form 等 20+ 种)渲染。也就是说插件作者基本不用懂 React ,照着模板填数据结构就行。代价是模板没覆盖到的 UI 没法做——一个折中。
其他基础设施:
- 内置插件商店,可以一键装服务端发布的插件
- 本地 .tgz 包直接拖到设置页装上
- Main 进程加载 + 权限沙箱,插件 manifest 声明
permissions - 跨平台一致,TypeScript 写一次三个平台都跑
目前实现的插件:claude-code-power(本文重点)、local-ops-aiagent(本地 API Key AI )、ai-ops、file-browser、monitoring-sidebar、command-library、transfer-manager。如果有同学想自己写插件,文档还在补,但代码已经稳定,可以来 issue 区交流。
关于和其他终端的区别
- iTerm2 / Windows Terminal / Tabby:纯终端管理,没有 AI 模块,各自有自己的强项。如果你的诉求只是"管理 SSH 连接 + 漂亮",这些已经很够用了。
- Warp:AI 命令补全做得很流畅,订阅制 $15/月/seat ,目前 Mac/Linux 。如果你喜欢"输入更快"的方向,Warp 是更成熟的选择。
- TermCat:方向不一样,我做的是"让 AI 替你执行"和"看见/管理 Claude Code"。
适合谁:日常 SSH 比较多 + 用 Claude Code 写代码 + 不想被订阅锁死的同学。
下载
注册送的 50 积分够直接试一下 AI Agent 。。
独立开发,反馈我都看。设计上肯定还有不少坑,欢迎拍砖。加用户群加微信(主页下方二维码)。