想去哪里?

首页 页面 关于 页面 项目 页面 简历 页面 技术 页面 随笔 页面 联系 页面 隐私政策 页面 Terminal Spike 隐私政策 页面 用 Astro 构建文档与职业个人网站 技术 通过 tmux、Mosh、Termius 与 Tailscale 随处使用 Codex 技术 用 Langfuse 观察 Codex 的 MCP 工具调用 技术 产品应用中的本地化 技术 把 MCP 作为安全的 AI 集成边界 技术 用 Zod、OpenAPI 与 Swagger 维护 API 契约 技术 用 pg-boss 运行持久后台任务 技术 通过真实知识工作流理解 pgvector 与 RAG 技术 Pi Edge:让 Pi 待在 Obsidian 笔记旁 技术 为真实排序任务设计拖放交互 技术 Prisma 与 PostgreSQL:产品状态的事实来源 技术 把 Ralph Loop 当作计划队列 技术 用 React Router 组织全栈产品工作流 技术 把 shadcn 风格组件变成自己的产品系统 技术 用表格与编辑器承载密集业务操作 技术 Terminal Spike:原生 Android 终端 技术 在 Linux 上用 fcitx 输入带声调的拼音 技术 在 Linux 上配置 DEFT Pro 轨迹球 技术 在 KOReader 上使用 Pocket 稍后读 技术 为 Vercel AI SDK 设置明确的工具边界 技术 垂直切片架构与 dependency-cruiser 技术 用 Vitest 与 Playwright 测试产品工作流 技术 我的随处工作流:Herdr、code-server、Obsidian 与 Pi Edge 技术 Zod 不只是校验 技术 《卡拉马佐夫兄弟》是我看过最好的小说 随笔 基督徒口述1960劳改历史 随笔 圣经中的“道”与言语 随笔 我们爱,因为神先爱我们,而不是空洞的“自爱” 随笔 妈妈,让我来承担爸爸的过错吧 随笔 我与神的故事 随笔 世界远离上帝,接近中国 随笔 “爱的五种语言”和内外向,只存在于语言中 随笔 人格类型不存在,你在世界而非概念中生活 随笔 危险的词语:为什么心理学是不可能的 随笔 2000 年,一个深圳打工者的故事 随笔 阿联酋Ras al Khaimah见闻录 随笔 沙甸:1975 年的一场冲突 随笔 关于中国的纪录片 随笔
← 技术/项目

Terminal Spike:原生 Android 终端

我的 Android 远程工作区,支持 Herdr、SSH、内置 Mosh、触控,以及通往代码和笔记的链接。

Terminal Spike 是我开发的开源原生 Android 终端,用手机操作远程电脑。SSH、内置 Mosh、Herdr、tmux 和文件传输整合在同一个工作区,连接信息存储在设备上。

Google Play 下载 · 源码 · 发行版

Herdr 是工作流的中心

我在电脑上使用 Herdr 组织项目、终端窗格和编程智能体。它的后台服务器在断开客户端后仍保持终端会话运行,让我从手机回到正在进行的工作。智能体状态能告诉我哪个窗格还在工作,哪个需要关注。

Terminal Spike 理解 Herdr 会话和窗格布局元数据。连接选择器可以恢复正在运行的 Herdr 会话,触控操作让小屏幕上的工作区、标签页和智能体切换切实可用:点按导航,双击调出键盘。

滚动需要尊重窗格中的应用。如果 Herdr 能提供可用历史,Terminal Spike 提供原生回滚阅读器;交互应用则可使用远程鼠标输入。编程智能体拥有自己的对话界面时,这种区别很重要。

Terminal Spike 连接选择器同时展示运行中的 Herdr 与 tmux 会话

Herdr 是独立开源项目,我在这里负责 Android 客户端及其远程工作区集成。

顺着链接进入代码和笔记

终端输出经常指向下一步需要的文件、浏览器编辑器或项目笔记。Terminal Spike 识别网页 URL 和 obsidian:// 链接,也支持终端超链接,让这些引用在合适的应用中打开。

我的组合中,code-server 提供浏览器编辑器,Obsidian 保存项目笔记,Pi Edge 将 Pi 带入 Obsidian。出门时用 Tailscale 连接设备,具体见目前的工作流。

一段演示

录像展示了远程编程会话、输入提示词、滚动终端输出和切换 tmux 会话。额外按键栏把终端控制键放在手机键盘附近。

Terminal Spike 实机演示 · 45 秒 · 无音频 在 Google 相册观看 ↗

编程工具运行在连接的电脑上。Terminal Spike 提供终端与输入控件,不内置 AI 模型,也不要求购买它自己的 AI 订阅。

用手机远程工作

应用支持密码及私钥 SSH 认证、保存连接和多个同时运行的终端标签页,会验证服务器主机密钥,并在已知服务器密钥改变时警告。

SFTP 文件管理器支持浏览、上传、下载、重命名和删除远程文件。命令片段与可配置的额外按键栏,让常用命令及 Ctrl、Esc、方向键更容易触及。字体、颜色、字号与光标行为也可调整。

图片输入也很实用:应用可以通过已认证的 SSH 连接,把剪贴板图片传到远程主机的私有缓存目录,再将远程路径粘贴进终端,让远程工具处理手机中的图片。

构建终端

应用界面使用 Kotlin 和 Jetpack Compose。终端本身则是自定义 Android View,通过 Canvas 和 Paint 直接绘制每行,将终端渲染和屏幕状态与连接列表、设置和会话控件分开。

终端引擎处理主屏幕与备用屏幕、光标移动、滚动区域、颜色、括号粘贴及常见终端查询,回滚历史有明确上限。对于从应用选择的 tmux 会话,独立本地历史模型支持手机滚动;需要与终端应用交互时,则可明确启用远程鼠标模式。

Mosh 内置于应用中,先通过 SSH 启动,再通过加密 UDP 传输,提高对断网的容忍度。电脑需要安装 mosh-server;Herdr 或 tmux 独立于手机连接,保持远程工作区可用。

数据保留在设备上

Terminal Spike 没有应用账号、分析追踪、广告或云同步。连接直接到达用户选择的主机。导入的私钥和用户明确选择保存的密码,使用应用专属 Android Keystore 密钥加密。

隐私政策详细说明凭据存储、远程连接、权限与备份。

项目页提供应用概览和演示。