本地运行的 TypeScript 终端聊天客户端,直接通过 HTTPS / WebSocket 连接 LinkChat。采用统一无框消息布局、分钟时间、底部输入区及独立频道、成员和历史页面。
安装与启动
需要 Node.js 24(含 npm)。支持 macOS、Linux 和 Windows 的交互式终端。
安装已发布的客户端:
npm install -g linkchat-cli --registry=https://registry.npmjs.org/
linkchat
当前正式版 0.6.2:下载安装包
npm install -g https://docs.linkchat.online/downloads/linkchat-cli-0.6.2.tgz
linkchat
安装仍需联网获取依赖,普通用户无需注册或登录 npm。
尚未安装 Node.js 的用户可从 Node.js 官网 安装 24.x,之后重新打开终端。
首次进入选择登录或注册,成功后在本机保存会话令牌,不保存密码。再次启动自动恢复上次账号、服务器和频道。正常退出保留登录,/logout 注销并清除该账号缓存。令牌过期后重新登录;网络暂时不可用时可以只读浏览缓存。注册是否需要邀请码由服务器决定。
更新
linkchat --version
linkchat update --check
linkchat update
启动后异步查询 npm 最新稳定版本,超时 3 秒,检查结果缓存 24 小时,不影响登录。检查只发送公开包名,不发送账号、密码或聊天内容。使用 --no-update-check 或环境变量 LINKCHAT_NO_UPDATE_CHECK=1 禁用自动检查。
linkchat update 仅升级当前 npm 全局安装,安装已验证的精确版本,不自动提权。权限错误请修复自己的 npm 全局目录权限后重试。npx 用户重新运行 npx linkchat-cli@latest;项目内安装在项目目录执行 npm install linkchat-cli@latest。更新命令会显示新版的 Node.js 要求。
卸载
npm uninstall -g linkchat-cli
使用 linkchat cache info 查看聊天缓存位置、数据量和同步时间;linkchat cache clear 清理聊天缓存,保留登录信息。删除 update.json 可单独重置更新检查记录。
本地数据与自动同步
- macOS:令牌和配置位于
~/Library/Application Support/linkchat-cli/,聊天缓存和更新记录位于~/Library/Caches/linkchat-cli/。 - Windows:令牌和配置位于
%LOCALAPPDATA%\linkchat-cli\,缓存位于其中的cache\。 - Linux:配置位于
${XDG_CONFIG_HOME:-~/.config}/linkchat-cli/,缓存位于${XDG_CACHE_HOME:-~/.cache}/linkchat-cli/。 auth.json保存明文会话令牌,config.json保存上次服务器与频道;令牌不进入聊天数据库、日志或发布包。- SQLite 按消息 ID 保存正文和话题摘要,历史、回复选择、话题阅读共用消息;已经加载的连续区间可跨重启重新分页,不受原请求游标或 256 页数量限制。
- 每页显示 10 条。打开频道、话题列表或某个话题后,后台补齐最近 50 条消息、50 个话题摘要或 50 条回复;翻页时预读同方向相邻一页。仅在登录验证通过且联网时预读,不自动下载所有话题正文、全部历史或附件原文件,不保存输入草稿。
- 有完整缓存时先显示再后台核对;缺失或被淘汰的区间需要联网补齐,离线不会误报为“没有更多消息”。后台刷新保留选中项及阅读位置。过期游标会提示返回后重新打开。
- 缓存按服务器和账号隔离,30 天未访问淘汰,所有账号合计共享 50 MiB 逻辑数据预算(含实体及分页索引)。SQLite 数据库文件及 WAL 有额外开销;
cache info的bytes是预算占用,databaseBytes、walBytes是实际文件大小,messages、topics是实体数量。 - 升级首次访问账号时自动迁移有效的旧分页缓存,保留登录信息。升级程序不修改服务器消息;服务端删除或权限变化由后续同步校正。
- SSH 入口使用相同的分页逻辑和预读策略,但缓存仅保留在各自会话内存,断开后不持久化。
- 列表和话题自动同步,保持搜索和选中目标。Ctrl+R 强制重新获取;离线不能发送或排队重发。服务端明确拒绝身份或频道权限时,清理相应缓存。
- 如果离线执行
/logout,本地凭证仍会删除,但服务端会话只能等待过期或在联网时另行注销。 - 会话凭证文件与缓存均位于用户目录,升级或重新安装 npm 包不会覆盖它们。
排错
运行 linkchat --help 查看参数。聊天必须在交互式终端运行;网络断开会自动重连,发送状态不确定的消息不会自动重发。客户端要求校验 TLS 证书,不支持 NODE_TLS_REJECT_UNAUTHORIZED=0。
包中只有本地客户端及运行依赖;SSH 服务端独立保留。安装客户端不会启动 SSH 服务。
已知问题
多行输入首行挤压(0.6.2 已修复):已发布的 npm 0.6.1 版本中,输入框左侧的 ❯ 占用了首行空间,后续行可能与首行文字不对齐。此问题仅影响显示,不会把提示符或排版缩进加入实际消息正文,也不会改变用户输入的空格和换行。
本机客户端已修复,npm 安装包尚未包含此修复。
更新方向
设计原则:保持轻量化,优先完善可靠性和现有交互。新功能应减少操作,不增加默认界面的复杂度。以下是功能取舍记录,不代表已实现或发布时间承诺。
| 功能 | 取舍 | 范围 |
|---|---|---|
| 发送状态、失败提示 | 优先完善 | 区分发送中、已送达与失败;结果不明时不自动重发 |
| 构建/补丁标识 | 优先完善 | 在 --version 显示本机构建信息,不增加底栏内容 |
| 草稿恢复 | 做简版 | 按频道自动保存和清理,减少意外退出造成的内容丢失 |
| 未读定位 | 分阶段 | 先保存本机已读位置,暂不追求跨设备同步 |
消息搜索 /search |
关键词搜索已上线 | 输入 /search 进入菜单后输入关键词搜索;成员、日期筛选留待后续 |
| 提及通知、话题订阅 | 提及与回复提醒已上线 | /inbox 统一查看,底栏显示未读数;话题订阅后续接入同一机制 |
| 编辑与撤回 | 延后 | 需要同时处理权限、缓存、引用和后端一致性 |
| 消息操作菜单 | 克制扩展 | 复用现有选择器,只补必要操作 |
| 连接诊断 | 按需提供 | 考虑 --diagnose,不增加常驻界面或后台任务 |
| 多账号、附件预览、快捷键自定义 | 暂缓 | 有明确需求后再考虑配置和适配成本 |
| Agent 执行卡片 | 暂不纳入核心 | 先用普通消息和话题承载,避免扩展成任务管理系统 |
近期优先检查菜单进入与退出的一致性、重复请求合并、过时响应保护和本机补丁标识。菜单收起后的终端滚动限制保持现状,不采用强制贴底或清除滚动历史的方式修补。