Skip to content

wisp-science v0.16.2

Latest

Choose a tag to compare

@github-actions github-actions released this 18 Jul 10:06

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 HostName connection 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