解密 SSH AI Chat:它是如何运行的
技术深度解析
解密 SSH AI Chat 它是如何运行的
探索一个令人惊叹的创新项目:通过 SSH 协议直接与 AI 对话。无需安装客户端,无需打开浏览器, 只需一条简单的 SSH 命令,就能开启与 AI 的终端对话之旅。
$ ssh username@chat.aigc.ing
大家好,我是面条,今天想和大家分享我最近的一个项目 —— SSH AI Chat。
项目简介
核心理念
SSH AI Chat 是一个可以通过 SSH 直接连接的 AI 聊天应用。使用方式非常简单, 你不需要安装任何客户端,不需要打开浏览器,只需要一个 SSH 客户端,就能和 AI 进行对话。
ssh username@chat.aigc.ing
没错,就这么简单!你不需要安装任何客户端,不需要打开浏览器,只需要一个 SSH 客户端,就能和 AI 进行对话。
作为一个对 TUI 应用有着浓厚兴趣的开发者,我一直觉得在终端里聊天是一件很酷的事情。其实我最初是被 itter.sh 这个网站惊艳到了 - 居然能用 SSH 访问社交网络!这让我意识到,原来 SSH 不只是用来连服务器的,还可以做很多有趣的事情。
于是就有了这个想法:如果能用 SSH 和 AI 聊天,那该多酷啊!不需要安装任何软件,不需要打开浏览器,只要在终端里输入 ssh yourname@chat.aigc.ing
就能开始对话。
项目架构
核心技术栈
- SSH 服务器:Node.js + ssh2 模块
- UI 框架:React + Ink(终端渲染)
- 数据库:PostgreSQL / PGLite
- 缓存:Redis / ioredis-mock
- AI 集成:Vercel AI SDK
架构特点
- • 无客户端安装需求
- • 跨平台终端支持
- • GitHub 公钥认证
- • 实时流式响应
- • 多模型 AI 支持
系统架构图
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ SSH Client │ │ SSH Server │ │ React App │
│ │ │ │ │ │
│ ssh username@ │───▶│ Node.js + │───▶│ Ink UI + │
│ chat.aigc.ing │ │ ssh2 │ │ React Hooks │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ AI Services │
│ │
│ OpenAI API │
│ Gemini API │
│ DeepSeek API │
└─────────────────┘
核心模块解析
1. SSH 服务器模块
这是整个应用的核心,负责处理 SSH 连接和认证。系统会自动处理密钥验证、GitHub 公钥认证、登录限制和速率限制。
2. 认证系统
最巧妙的设计是使用 GitHub 公钥认证。用户不需要注册,直接使用 GitHub SSH 密钥就能登录。
系统会获取用户的 GitHub 公钥进行验证,每 6 小时缓存一次,既安全又高效。
3. 终端 UI 系统
使用 Ink 框架在终端中渲染 React 组件。想象一下,你平时写的 React 组件,现在不是在浏览器里渲染,而是在终端里显示!
多语言界面
实时聊天
历史记录
响应式布局
4. 聊天系统
使用 Vercel AI SDK 处理 AI 对话。当你在终端里输入消息时,系统会接收消息、加载历史对话、选择模型、实时显示流式响应,并保存对话记录。
技术难点和解决方案
核心技术挑战
项目开发过程中遇到的关键技术难点
React 组件在终端环境的适配
多用户并发连接的处理
1. 终端渲染的挑战
最大的挑战是在终端中实现复杂的 UI 界面。使用 Ink 框架将 React 组件渲染到终端,实现虚拟 PTY 来处理终端 I/O。在终端里显示 AI 回复的 Markdown 需要用专门的 worker 进程处理转换,才能显示粗体、斜体、代码块。
2. SSH 会话管理
管理多个 SSH 会话和状态需要为每个连接创建独立的 React 应用实例,使用 Context API 管理全局状态,并实现会话生命周期管理。
3. 实时流式响应
AI 的回复是流式的,如果每收到一个字节就刷新界面,终端会直接卡死。使用 Vercel AI SDK 的 streamText 配合节流更新,每 300ms 更新一次,既流畅又不卡。这是性能优化的关键技术点。
4. 数据存储的灵活性
项目支持 PostgreSQL 和 PGLite 两种数据库,以及 Redis 和内存缓存,让项目既能独立运行又能部署到生产环境。
有趣的设计细节
GitHub 认证
最酷的设计!用户不需要注册,直接使用 GitHub SSH 密钥就能登录,既方便又安全。
多模型支持
支持 DeepSeek-V3/DeepSeek-R1、Gemini-2.5-Flash/Gemini-2.5-Pro 等多个 AI 模型,包括思维链展示。
国际化支持
完整的 i18n 支持,通过 LANG
环境变量自动检测用户语言偏好,支持中英文切换。
键盘快捷键
Ctrl+C
退出应用,N
新建对话,I
聚焦输入框,?
查看帮助。还有一些小彩蛋功能。
开发心得
技术感悟与收获
开发过程中的深度思考与技术洞察
现代化终端交互的可能性
跨平台应用的新思路
现代前端技术的适应性
1. 终端应用的可能性
这个项目让我看到了终端应用的巨大潜力。通过 Ink 框架,我们可以在终端中实现复杂的交互界面。
2. SSH 的妙用
SSH 不仅仅是一个远程管理工具,它还是一个强大的应用平台。通过 SSH,我们可以实现跨平台的客户端应用,用户不需要安装任何额外的软件。
3. 现代化的技术栈
虽然这是一个终端应用,但我们使用了最现代的技术栈:React、TypeScript、Vercel AI SDK 等。这证明了终端应用也可以很”现代化”。
未来展望
发展规划
本地模型支持
计划支持 Ollama 等本地模型
MCP 协议
支持 Model Context Protocol 插件扩展
计划支持更多的 AI 模型,包括 Ollama 等本地模型,以及支持 MCP (Model Context Protocol) 协议让用户可以通过插件扩展功能。
总结
项目价值与意义
SSH AI Chat 是一个融合了多种技术的创新项目。它展示了:
- 终端应用的现代化可能性
- SSH 协议的灵活应用
- React 在不同平台上的适应性
- AI 技术的普及化
这个项目让我意识到,技术不只是为了解决问题,也可以很有趣。把 SSH 和 AI 结合起来,创造出了意想不到的体验。
希望这个项目能给大家带来一些启发,让我们一起探索技术的边界!
体验地址
如果你对这个项目有任何问题或建议,欢迎在 GitHub 上讨论。也欢迎 Star 这个项目,你的支持是我继续开发的动力!