人离开电脑,监督和验收照旧:手机上的 Mosh + SSH 终端
开源、免费、纯 Kotlin 写就的移动终端 Termish——Android / iOS 一套代码。 这篇文章不讲虚的,先讲清楚为什么需要它,再教你怎么玩。
先说痛点
你有没有过这样的场景:
- 现在的主流干活方式:你坐在 Mac 前,AI 编程 agent 在终端里写代码——你盯着它一步步改:看输出、查 diff、跑测试,改歪了拍回去重来,满意了才验收。agent 负责写,你负责监督和验收
- 但这一切的前提是"你在电脑前"。下午五点半合上电脑,监督台就没了:agent 还在 Mac 上继续跑,可它写到哪了你看不到、改歪了没人拦、写完了没人验收
- 另一个同样熟悉的场景:服务器上的 agent 跑运维——排查线上问题、修 bug、改配置、部署。你人在外面,服务器报警了 / agent 卡住了 / 需要你拍板,而你手边只有一部手机
- 带电脑出门?太重。远程桌面?又卡又慢还得那台电脑一直开着。网页仪表盘?很多 agent 根本没有,有的也只剩个"看"
- 就算掏出手机连 SSH——普通 SSH 一换基站/WiFi 会话就断,agent 的上下文、任务进度全跟着丢
- 手机上用 Termius 连远程电脑,中文输入法候选栏弹不出来,拼音直接漏到终端里
- 手机上敲
vim、htop,CTRL 键按不了,鼠标事件没有,TUI 界面根本没法操作
Termish 的目标很直接:在手机上造成"人在电脑前"一样的工作——监督(实时看输出、滚动日志、检查进度)、遥控(追加需求、打断、批准)、验收(看结果、继续迭代),把监督和遥控整个搬进口袋。
而且它不是单打独斗:终端(SSH/Mosh)+ herdr + Git 面板 + SFTP + 语音输入 + 远程桌面——一套把"远程遥控效率"打磨到极致的组合拳,从命令行到文件、到版本库、到屏幕,遥控一台电脑的每一环都给你配好。
为什么需要 Termish:各家的配套 App 不香吗?
你可能会问:现在各家 AI 厂商都出了"手机远程联动"的配套 App,它们不也能让我在外面操作 agent 吗?
能,但它们是"配套 App",Termish 是"终端"。 区别在三个地方:
1. 不绑定任何 agent 厂商。 配套 App 只能连它自家那一个 agent——它是某个 agent 的生态墙。Termish 走的是 SSH / Mosh 这样的开放协议,那台电脑上跑什么它就进什么:herdr、vim、htop、tmux……任何 TUI agent 都是它的目标,今天用这个明天换那个,或者几个 agent 同时跑,一个终端全搞定。它是协议层的,不是某个产品的外壳。
2. 纯粹。 直连你自己的电脑,无账号、无云同步、无遥测、不经过任何第三方——你的 agent 会话只属于你。没有"登录一下、同步一下、数据过一下我们的云"这种事。密钥只进系统保险库(Android Keystore / iOS Keychain)。
3. 作者是终端爱好者。 Termish 的核心资产不是某个 agent 的壳,而是终端模拟器本身——纯 Kotlin 从零写的 VT100/xterm 模拟器 + 纯 Kotlin 的 Mosh 客户端。这意味着它在"终端体验"这个维度上打磨得比任何"agent 配套 App"都深:Mosh 本地回显预测、中文输入法组合态、触屏 TUI 输入、12 套配色……这些是配套 App 永远不会做的。
一句话:配套 App 是"我家 agent 的遥控器",Termish 是"你所有电脑的钥匙串"。
Termish 是什么:30 秒版
一句话定位:手机上的 Mosh + SSH 终端——换网、漫游不掉线,任意 TUI agent(herdr 等)的口袋入口。
具体来说:
- Mosh 优先:会话在换网、漫游中存活(走 UDP,网络抖不断);本地回显预测让高延迟下打字依然跟手
- 纯 Kotlin 终端模拟器:VT100/xterm 转义序列、CJK 宽字符、备用屏、滚动回看、真彩、OSC 8 超链接——从零写就,不用 webview 壳
- 处处原生:Compose Multiplatform 一套代码跑 Android / iOS,无 webview、无 Electron——长时 agent 会话不发热、不费电
- 本地优先、隐私设计:直连你自己的电脑,无账号、无云同步、无遥测,不经过任何第三方;密钥只进系统保险库(Android Keystore / iOS Keychain)
- 开源且永久免费:MIT 协议、代码可审计、无订阅、无功能墙
- 中文输入法组合态一等公民:拼音永不上线,候选栏完整可用(玩法五细说)
- 触屏 TUI 输入:固定 CTRL/ALT/ESC 工具行,触摸映射鼠标事件,agent TUI 在手机上顺手可用
核心资产是终端模拟器本身,不是某个 agent 的外壳——所以它对所有 TUI agent 一视同仁。
30 秒概念课:SSH、Mosh、TUI agent、herdr 分别是什么
后面玩法会用到这几个词,先花 30 秒讲清楚:
- SSH:远程登录服务器的标准协议(TCP 22 端口)。你在电脑上
ssh user@server用的就是它。它最大的毛病:网络一抖就断,一断进程就死。 - Mosh:SSH 的"抗抖升级版"。走 UDP,会话状态存在服务端,客户端换网、锁屏、切 App 都不掉线;还有本地回显预测,高延迟下打字不卡。服务器装一次
mosh-server,客户端随便换。 - TUI agent:跑在终端里的 AI 编程 agent——不是一个网页,而是一个全屏交互界面(Terminal UI)。herdr 这类 agent 的终端模式、还有 vim/htop 这种传统 TUI,都算。
- herdr:一个让 AI agent 常驻的运行时(herdr.dev,"the runtime your coding agents live on")。注意"常驻"两个字——agent 住在那台电脑/服务器上,不依赖任何 SSH/Mosh 连接。它是 agent 的"房间",SSH/Mosh 只是"门",Termish 是你随身带的"前门"。后面玩法二会重点讲:为什么没它玩不转。
安装:1 分钟跑起来
Android 直接下载安装包(iOS 目前需本地构建,见文末):
- Android:从 Releases 发布页 下载签名 APK(侧载需允许"安装未知来源应用")
- 每个发布都附 SHA-256 校验和
装完打开,界面长这样:

快速上手:添加主机 → 连接
第一步,添加主机。 主机 tab → 右上角 +,填四样东西:
- 名称、主机地址、端口(默认 22)
- 用户名 + 认证方式:密码 / 私钥 / 私钥优先密码兜底(支持 PKCS#8、传统 PEM、OpenSSH 格式,连接时询问一次口令、不持久化)/ keyboard-interactive
- 连接方式:SSH 或 Mosh(后面玩法一细说)
- 连接后启动 herdr 工作台:勾上就是 agent 口袋入口(玩法二细说)
还能顺手加标签(方便搜索)和快速命令(连接后自动执行)。

第二步,连接。 点主机卡片。首次连接会弹出服务器主机密钥指纹让你确认(TOFU 模式),确认后自动校验。
第三步,再点一次同一台主机 = 再开一个新会话。 同一主机的所有会话(外加 SFTP)平级显示在终端顶部的 tab 栏,随意切换、新建、关闭,各自持有独立的缓冲。

设置页里值得先看一眼的几项:
- 字号:按 sp 调,或者直接按目标列数(比如 120 列——高密度)
- 主题:内置 12 套终端配色(Default、Solarized、Dracula、Nord、Tokyo Night、Gruvbox、Catppuccin Mocha、Monokai 等)
- 触觉反馈、光标闪烁、OSC 52 剪贴板开关、keepalive 间隔、自动重连开关
玩法一:Mosh——换网不掉线的正确姿势 ⭐
这是 Termish 最大的差异化玩法。
普通 SSH 走 TCP,网络一抖就断、一断就丢进程。Mosh 走 UDP,会话状态存在服务端,手机换 Wi-Fi、切蜂窝、锁屏、切 App,会话都不掉——回到终端,一切还在原样等着你。
怎么开:
- 主机设置里把连接方式从 SSH 改为 Mosh,直接连
- 远端没装
mosh-server?不用提前折腾——Termish 自动弹出引导安装卡:点「安装 mosh」,输入 sudo 密码(仅本次经加密 SSH 发送、不存储),卡片上实时滚动 apt 安装日志,装完自动重连 mosh;不想装也可以「跳过,改用 SSH」 - 连接时 Termish 会先经 SSH 启动
mosh-server,解析 UDP 端口与密钥,然后纯 Kotlin 的 mosh 客户端(dev.termish.mosh:AES-128-OCB 加密、SSP 状态同步、zlib 分片)直连 UDP

NAT 环境(家里 NAS / 路由器后面): 给主机设一个固定 UDP 端口(60000-61000),路由器上做端口转发即可。
高延迟也不卡: Mosh 有本地回显预测——你敲的字符先在预测浮层上即时渲染,等服务器 echo 确认后再"收编"。在 4G/卫星这种高 RTT 链路上打字依然跟手,这在普通 SSH 客户端上根本做不到。
进阶玩法——主题同步: 把手机的终端配色(OSC 4/10/11 应答)注入 Mosh 流,远端 TUI 会按你手机上的主题渲染,而不是宿主机默认主题。你的终端长什么样,服务器上的界面就是什么样。
玩法二:herdr——为什么说没它玩不转 ⭐
先回答一个问题:手机遥控 agent,为什么必须要 herdr?
因为 agent 进程的生死,传统上绑在 SSH 连接上。你 ssh 上电脑/服务器,在终端里跑 agent,它是 SSH 会话的子进程——连接一断,agent 跟着死,任务白跑。这就是为什么"手机遥控 agent"以前只是口号:手机网络不稳定,SSH 动不动就断,agent 的命比连接还脆。
herdr 改变的是这一层:它是跑在你那台电脑/服务器上的 agent 运行时(官网一句话:herdr.dev——"the runtime your coding agents live on"),agent 在它里面常驻 7×24,跟你连不连接没有任何关系。SSH/Mosh 只是通往 herdr 的"门"——门关了,房间里的 agent 照常干活。
所以这套组合的因果是:
- herdr 保 agent 的命:断开连接,agent 继续跑任务,等你回来验收——写代码、跑测试、修线上 bug 都一样
- Mosh 保你的连接:你盯着它的时候,换网、锁屏、切 App 都不掉线
- Termish 把两者串起来:点一下主机,就进入 herdr 的 TUI——所有 agent 的真实窗口。不需要网页仪表盘,手机上也不用装任何常驻进程
把它俩拼起来,画面是这样的:你在地铁上,agent 在你家电脑上干活——它改完一个文件,你掏出手机看一眼 diff,敲一句"这个接口顺便也重构了吧",它接着干。全程不掉线、不丢上下文。
完整搭配姿势:
- Termish 加主机——主机设置里勾选「连接后启动 herdr 工作台」(快速上手第一步里那个开关),连接方式建议直接用 Mosh(理由见玩法一:agent 任务跑着,你地铁换网它不掉线)
- 连接时自动引导装 herdr——不用提前折腾!Termish 检测到远端没有 herdr 时自动弹引导安装卡:点「安装」,卡片上实时显示安装日志(检测系统架构 → 拉取最新版本 → 下载安装),装完直接进入 agent 工作台。官网:herdr.dev

- 点进去就是 herdr 的 TUI——选任务、看状态、续对话、批准操作,掏出手机就能干:

- 设置启动命令
tmux new -A -s main——连接即进入(或复用到)常驻会话,配合 Mosh 双保险,任何客户端掉线都不怕
手机上怎么操作 herdr 这类 TUI:
- 键盘上方有固定两行功能键工具栏:
CTRL ALT ESC TAB ⌃C ↑ ⌃L ⌨/⌃D PST ⌃E ← ↓ → ENT - 粘性 CTRL/ALT:点一下 CTRL 再点 A,就是 ⌃A,不用双手
- 系统键盘组合(⌃A/⌃E/⌃R …)也照常可用
- TUI 开启鼠标上报后,触摸手势自动映射为终端鼠标事件:点击 = 单击,拖动 = motion/滚轮——herdr 的交互面板、vim 的窗口、htop 的进程列表,在触屏上都能点
关键是:这套玩法不锁死 herdr。 今天用 herdr,明天换别的 agent,或者几个一起跑——Termish 对它们一视同仁,因为它只是终端。
玩法三:遥控全家桶——终端、文件、版本库、屏幕 ⭐
"监督和验收"不只是盯终端输出。agent 改完代码,你要看 diff;要传个文件过去;还有些场景终端根本到不了。Termish 围绕"遥控一台电脑"把每一环都补齐了:
Git 面板——手机上验收代码。 终端里直接打开 git 面板:仓库状态一目了然(staged / 工作区两个 tab),逐个文件看 diff,暂存、取消暂存,写提交信息提交。agent 改完的东西,你在手机上就能完成"看 diff → 验收 → 提交"的完整闭环——不用等回到电脑前,agent 就能进入下一轮迭代。
SFTP——文件随叫随到。 文件浏览器:上传(多选,一次挑一堆文件并发传)、流式下载、递归下载整个目录、跨目录递归搜索;文件列表按类型区分图标(图片/视频/压缩包/代码/PDF 一眼可辨);点开 md / txt / log 直接文本预览(超过 512KB 自动截断、二进制自动识别、一键复制),点开 png / jpg / gif / webp 直接看图(黑底显示、可切原始大小看细节)。给 agent 传个配置文件、拉日志、看截图,都是点几下的事。

语音输入(路线图)——手都不用动。 地铁上单手打字难受?路线图里的语音输入,直接口述命令和需求给 agent,解放双手。
远程桌面(开发中)——终端到不了的 GUI。 总有终端搞不定的场景:图形界面、浏览器操作。Termish 的 VNC 远程桌面已在开发分支跑通:触摸映射点击 / 拖拽、软键盘输入、工具栏,手机上直接操作远端桌面。
一句话:命令行、文件、版本库、屏幕——遥控一台电脑的四条路,Termish 都给你打通了。这就是"远程遥控效率打磨到极致"的意思。
玩法四:会话保活——离开再回来,一切还在
手机终端最怕的就是切出去回来看不到东西了。Termish 的做法:
- 后台保活(Android):前台服务 + wakelock,锁屏、切 App 会话都不断
- 会话恢复:重启应用后,会话列表原样回来(断开状态,点击重连)
- iOS 退后台自动重连:应用被挂起、socket 断开,回前台自动重连活跃会话并恢复缓冲
- 指数退避自动重连
进阶玩法——服务端持久化: 主机设置里配启动命令 tmux new -A -s main——连接即进入(或复用到)名为 main 的 tmux 会话。配合 Mosh,任何客户端掉线都不怕,agent 任务在那台电脑上继续跑,回来 attach 就行。这才是手机终端正确的打开方式。
会话管理器还有个 连接 tab:离开终端页不断连,回来就是原来的缓冲;主机卡片上实时显示当前会话数徽标。
玩法五:中文输入,这次真的做对了
Webview 终端(比如 Termius 里的 xterm.js)在移动端处理中文输入法一直很吃力:组合文本被吞或逐字节泄漏,候选栏经常弹不出来。
Termish 的输入管线从第一天起就围绕组合态设计:
- 输入法组合文本(拼音)永不上线——只有提交后的文本才做公共前缀 diff 发送。拼音不可能污染远端行,输入框里的"zhong"绝不会变成远端的一串乱码
- 用
KeyboardType.Text保证中文候选栏完整可用 - 退格语义拆分:组合态时退格删拼音;已提交时退格直达远端(
0x7f),本地缓冲为空也删得掉远端内容 - 宽字符在缓冲、渲染、选择全链路按 2 格处理——彩色状态条上的中文渲染干净利落
日常输入、写代码注释、跟 agent 中文对话,全程不需要切输入法或者打英文。
玩法六:个性化——终端长成你想要的样子
- 12 套内置配色:Solarized、Dracula、Nord、Tokyo Night、Gruvbox、Catppuccin Mocha、Monokai……总有一套是你
- 双语界面:中文 / 英文 / 跟随系统,设置页随时切换
- 深色 / 浅色应用主题;内置 JetBrains Mono 字体(每台设备度量一致,没有 OEM 字体惊喜)
- 主机标签 + 搜索,主机多了也不乱

技术彩蛋:给好奇的读者
- 纯 Kotlin Mosh 客户端:AES-128-OCB、SSP 状态同步、zlib 分片全部是 Kotlin 实现(
dev.termish.mosh),零原生依赖、跨平台复用,协议层可以独立抽出来当库用 - 纯 Kotlin 终端模拟器:VT100/xterm 转义序列、CJK 宽字符、备用屏、滚动回看、OSC 8 超链接、bracketed paste、三种鼠标上报协议全都有
- Compose Multiplatform:一套共享 Kotlin 代码库跑 Android / iOS,无 webview、无 Electron——长时 agent 会话不发热、不费电
- SSH 传输层按平台换用久经考验的引擎:JVM 用 sshj + BouncyCastle,iOS 用 libssh2 + OpenSSL
下载 & 项目信息
- GitHub:github.com/icelum/term…(MIT 开源,欢迎 Star ⭐)
- 下载:Releases 发布页
- 官网:termish.dev
- herdr:herdr.dev——agent 的"房间",Termish 是它的"前门"
- iOS 用户注意:目前未公开分发,需要本地构建(
make ios-native && make ios-framework后 Xcode 跑模拟器/真机)——Android 开箱即用
路线图上还有不少好东西:herdr 会话接管与任务通知、端口转发、ProxyJump、~/.ssh/config 导入、语音输入、E2EE 跨设备同步……
手机终端这件事,值得一个 Mosh 优先、输入法友好、不绑定任何 agent 的新选择。
装上 herdr,agent 的命不再系在连接上;装上 Termish,监督和遥控照旧——人离开电脑,agent 干活,你随时在场。