wisp-science v0.16.2
这是 v0.16.1 之后的 quick fix,重点解决远程功能反复建立 SSH 连接、可能触发服务器连接频率限制的问题。短时远程 RPC 现在会按主机复用一条持久 SSH 会话;SSH 主机配置也明确区分显示名称(Host)与真实地址(HostName),并可在保存前直接测试连接。
下载
- macOS(.dmg,已签名 + 公证):区分 Apple Silicon(aarch64)与 Intel(x86_64),请下载对应架构。
- Windows 安装包(MSI / NSIS):尚未签名,可能触发 SmartScreen,可选择「仍要运行」。
见下方 Assets。
本版更新
降低 SSH 连接频率
- 按主机复用持久连接:环境探测、Run 状态轮询和远程文件浏览不再为每次操作重新进行 TCP 连接与 SSH 认证,而是在同一执行环境内复用一条长连接。
- 远程请求串行化:同一主机的短时 RPC 通过持久会话依次执行,避免并发握手形成类似爆破的连接模式。
- 断线自动恢复:休眠、网络切换或服务端 idle timeout 导致连接失效时,会丢弃旧会话并最多重建一次;超时或协议不同步的会话不会继续复用。
- 跨平台实现:连接复用基于持久的 OpenSSH
ssh ... sh进程,不依赖 Windows OpenSSH 不支持的ControlMaster。 - 认证方式不变:仍由 OpenSSH、
~/.ssh/config、known_hosts 和系统钥匙串中的密码负责认证,不复制私钥或密码到数据库。
SSH 主机配置
- 分离名称与地址:新增可选
HostName字段。名称用于 Wisp 内识别主机,真实域名或 IP 用于连接;不填写HostName时继续使用名称并交给~/.ssh/config解析。 - 保存前测试连接:新增“测试连接”按钮,使用表单中尚未保存的用户、端口和认证方式进行一次独立验证,成功后会清除该主机的本地连接保护状态。
- 简化添加表单:端口移到主表单,
~/.ssh/config主机继续通过环境页的一键导入入口管理。
兼容性与升级说明
- 可直接覆盖安装
v0.16.1,没有数据库迁移。 - 已有 SSH 主机配置完全兼容;缺少
HostName时,连接目标仍是原有别名。 - 持久连接用于环境探测、Run 轮询、远程文件浏览等短时 RPC。交互终端、SCP 和需要把 stdin 当数据传输的部署操作仍使用独立连接。
- 每个应用进程只在内存中保存持久 SSH 会话,退出 Wisp 后连接会随进程关闭。
已知限制
- 服务端如果已按来源 IP 限流或封禁,升级不会自动解除服务端规则;请先在服务器或安全平台解封,再测试连接。
- Windows 安装包仍未签名,可能触发 SmartScreen。
- 需自备模型与第三方科研服务的 API Key;对应费用、配额与可用性由用户及服务商负责。
测试与交付
- Rust workspace 测试、WASM UI 编译、格式检查和 Playwright 桌面 UI 回归测试通过。
- 持久连接协议包含顺序 RPC、退出码、二进制/NUL 输出、heredoc 冲突、超时与失效重连覆盖。
- 推送版本标签后由 GitHub Actions 构建 macOS Apple Silicon / Intel DMG 与 Windows MSI / NSIS,并附加到本 Release。
反馈
欢迎在 GitHub Issues 反馈问题。若涉及 SSH,请附上操作系统、认证方式、主机配置中非敏感字段、服务端 sshd/防护日志和复现步骤;密码、token、API key 与 SSH 私钥请勿上传。
English: wisp-science v0.16.2 reuses one persistent SSH session per host for environment probes, Run polling, and remote file RPCs, preventing repeated TCP/authentication handshakes from looking like brute-force traffic. It also separates a host's display name from its real HostName and adds a connection test to the host form.
What's Changed
- Reuse one persistent, serialized SSH session per execution context for short remote RPCs.
- Replace timed-out, stale, or desynchronized sessions and retry a dead reused session at most once.
- Keep OpenSSH configuration, host-key handling, key agents, and keyring-backed password authentication unchanged.
- Add an optional
HostNameconnection target while preserving alias-based behavior for existing hosts. - Add a one-shot connection test for unsaved host settings and simplify the host form.
Compatibility: No migration is required. Existing hosts without HostName continue to connect using their saved alias. Interactive terminals, SCP, and stdin-data transfers retain dedicated SSH sessions.
Full Changelog: v0.16.1...v0.16.2