大家好,我是面条,今天想和大家分享我最近的一个项目 —— SSH AI Chat。
项目简介
核心理念
SSH AI Chat 是一个可以通过 SSH 直接连接的 AI 聊天应用。使用方式非常简单, 你不需要安装任何客户端,不需要打开浏览器,只需要一个 SSH 客户端,就能和 AI 进行对话。
ssh username@chat.agi.li
没错,就这么简单!你不需要安装任何客户端,不需要打开浏览器,只需要一个 SSH 客户端,就能和 AI 进行对话。
作为一个对 TUI 应用有着浓厚兴趣的开发者,我一直觉得在终端里聊天是一件很酷的事情。其实我最初是被 itter.sh 这个网站惊艳到了 - 居然能用 SSH 访问社交网络!这让我意识到,原来 SSH 不只是用来连服务器的,还可以做很多有趣的事情。
于是就有了这个想法:如果能用 SSH 和 AI 聊天,那该多酷啊!不需要安装任何软件,不需要打开浏览器,只要在终端里输入 ssh yourname@chat.agi.li 就能开始对话。
项目架构
- 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.agi.li │ │ ssh2 │ │ React Hooks │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ AI Services │
│ │
│ OpenAI API │
│ Gemini API │
│ DeepSeek API │
└─────────────────┘
核心模块解析
技术难点和解决方案
核心技术挑战
项目开发过程中遇到的关键技术难点
终端渲染复杂性
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 模型,包括思维链展示。
DeepSeekGemini
国际化支持
完整的 i18n 支持,通过 LANG 环境变量自动检测用户语言偏好,支持中英文切换。
自动语言检测
键盘快捷键
Ctrl+C 退出应用,N 新建对话,I 聚焦输入框,? 查看帮助。还有一些小彩蛋功能。
Ctrl+C退出
N新建
开发心得
技术感悟与收获
开发过程中的深度思考与技术洞察
终端应用潜力
现代化终端交互的可能性
SSH 协议创新
跨平台应用的新思路
技术栈融合
现代前端技术的适应性
1. 终端应用的可能性
这个项目让我看到了终端应用的巨大潜力。通过 Ink 框架,我们可以在终端中实现复杂的交互界面。
2. SSH 的妙用
SSH 不仅仅是一个远程管理工具,它还是一个强大的应用平台。通过 SSH,我们可以实现跨平台的客户端应用,用户不需要安装任何额外的软件。
3. 现代化的技术栈
虽然这是一个终端应用,但我们使用了最现代的技术栈:React、TypeScript、Vercel AI SDK 等。这证明了终端应用也可以很”现代化”。
未来展望
发展规划
本地模型支持
计划支持 Ollama 等本地模型
MCP 协议
支持 Model Context Protocol 插件扩展
计划支持更多的 AI 模型,包括 Ollama 等本地模型,以及支持 MCP (Model Context Protocol) 协议让用户可以通过插件扩展功能。
总结
项目价值与意义
终端应用的现代化可能性
SSH 协议的灵活应用
React 在不同平台上的适应性
AI 技术的普及化
SSH AI Chat 是一个融合了多种技术的创新项目。它展示了:
- 终端应用的现代化可能性
- SSH 协议的灵活应用
- React 在不同平台上的适应性
- AI 技术的普及化
这个项目让我意识到,技术不只是为了解决问题,也可以很有趣。把 SSH 和 AI 结合起来,创造出了意想不到的体验。
希望这个项目能给大家带来一些启发,让我们一起探索技术的边界!
体验地址
立即体验
一条命令即可开始
ssh your-github-username@chat.agi.li
如果你对这个项目有任何问题或建议,欢迎在 GitHub 上讨论。也欢迎 Star 这个项目,你的支持是我继续开发的动力!