wisp-science v0.22.0
这是继 v0.21.0 之后的功能与稳定性版本,重点把跨 SSH 环境的数据移动纳入可审计、可取消的 Run 流程,并改善会话排队、置顶、分组和动态 Agent 工作流。远程命令失败现在会作为可纠正的探索结果反馈给 Agent,不再把一次普通命令错误误判为 SSH 认证失败;会话侧则新增可编辑队列、任务完成通知跳转和更紧凑的分组移动菜单。
下载
- macOS(.dmg,已签名 + 公证):区分 Apple Silicon(aarch64)与 Intel(x86_64),请下载对应架构。
- Windows 安装包(MSI / NSIS):尚未签名,可能触发 SmartScreen,可选择「仍要运行」。
见下方 Assets。
新增功能
结构化 SSH 数据传输
- 服务器之间直接传输:新增需明确批准的
transfer_between_contexts。可在两个已配置 SSH context 之间直接传输,优先使用 rsync,并在不可用时回退到 scp。 - 独立凭据的本地中转:源端和目标端无法直接连通时,可通过本机 relay;两端各自使用已保存的连接配置,不要求嵌套 SSH 或共享账号凭据。
- 定向托管信任:
configure_ssh_trust为明确的 A→B 方向生成专用 Ed25519 信任边,不把私钥复制到本机或 SQLite。 - SSH 下载到本地:远程文件可传到用户指定的精确本地新路径。传输使用同卷 staging、拒绝覆盖现有目标,失败或取消后清理不完整数据。
- 持久化传输 Run:传输进度、吞吐、取消、超时与结果进入现有 Run 生命周期;Agent 通过一次
monitor_run等待,而不是反复登录或轮询。 - 防止绕过控制面:
run_in_context会拒绝嵌套 ssh/scp/rsync-over-ssh,并引导 Agent 使用结构化工具。
Agent 工作流、MCP 与研究追溯
- 动态 Agent 草稿导入/导出:临时 Agent 工作流可用 JSON 保存和恢复,复用当前 proposal 格式;解析失败会显示明确错误。
- 让模型检查工作流:可把同一份结构化草稿连同审查请求送入主对话,在创建任务前检查目标、依赖、权限和执行器配置。
- 接管后保留工作流视图:接管 delegated child session 后,Agents 面板、根工作流与任务卡片继续可见;父会话内容没有被截断或删除。
- MCP App 状态进入模型上下文:Host 支持标准
updateModelContext文本能力;应用的最新选择或工作台状态会进入下一轮 native/ACP 请求,关闭或替换 App 后清除。 - 技能与 MCP 调用更易识别:对话中的工具卡片与折叠步骤会显示「技能」或「MCP」徽章及清理后的真实名称,普通内置工具保持原样。
- 复制 provenance 代码:Artifact 查看器的 Code 页可直接复制生成图像时记录的只读源代码,并复用现有 Copied 提示。
会话、项目与浏览器体验
- 可管理的后续消息队列:运行中的会话默认将新消息排队;每条消息可编辑、取消、上移、下移,也可选择插入当前 native Agent 回合。发送菜单继续提供“中断并替换”。
- 对话置顶:重要会话可置顶到侧栏独立区域并从原分组中抽出,取消置顶后回到原有日期或文件夹分组。
- 更紧凑的移动菜单:会话菜单只保留一个“移动到”入口;悬停或激活后再选择“未分组”或目标分组,长列表可独立滚动并自动避开窗口边缘。
- 通知跳转到对应会话:后台任务完成通知使应用窗口重新获得焦点时,会一次性打开产生通知的项目与会话。
- 标准研究目录改为可选:新建项目可主动勾选标准 layout;默认关闭,不再向已有仓库或不需要该约定的项目写入空目录。约定通过可见、可编辑的 Agent Context 保存,并包含
remote/<server>/来源目录建议。 - 真实浏览器可创建标签页:新增需批准的
web_open_tab;即使当前 profile 只有chrome://newtab,Agent 也能先打开一个 HTTP(S) 页面,再使用既有扫描与执行工具。
修复内容
- 远程探索失败语义:失败、超时、取消或 lost 的 waited Run 会作为失败工具结果返回,计划步骤保持未完成;普通远程命令和临时传输错误仍允许 Agent 修正,只有认证拒绝和 host-key 信任失败会阻止再次自动登录。
- 使用真实解释器路径:环境探测会展示并要求使用实际解释器路径,例如
/usr/bin/python3,避免探测成功后又调用不存在的python。 - 流式截断不再伪装成完成:OpenAI/Anthropic 兼容流若没有终止标记且并非用户 Stop,会报告明确的 incomplete 错误,提示网络、relay 或同 key 并发限制,而不是把半句话显示成完整回答。
- 完成回复即时显示:
attempt_completion的最终回答现在追加在本轮工具调用之后,不再复用工具前的空白 assistant 占位,因此无需重开会话即可看到完整回复。 - 保持 Rust 1.88 构建兼容:UTF-8 安全截断不再调用较新工具链才稳定的标准库 API,通知依赖也锁定在支持项目最低 Rust 版本的版本。
- 旧数据库置顶迁移:新增幂等
0023_session_pinned修复已记录旧迁移但缺少frames.pinned的数据库,避免list_sessions_page报错并导致整个会话侧栏为空。 - 语言不再在重开设置时回退:当前会话中的 locale 保持为唯一 live 状态;重新打开设置或管理模型不会用磁盘旧值覆盖界面语言。
- 调试请求更完整:导出调试请求时保留最新、provider 无关的完整模型请求,包括运行时注入内容。
兼容性与升级说明
- 可直接覆盖安装
v0.21.0;项目、会话、模型、连接、ExecutionContext、Run、插件与 Agent workflow 数据会继续保留。 - 缺少
frames.pinned的旧数据库会在启动时通过幂等迁移自动修复,无需手工执行 SQL。 - 标准研究目录开关只影响新建项目;现有工作区不会被自动移动或重排。
- 排队中的后续消息目前只保存在内存中,应用退出或崩溃后不会恢复;已开始或已持久化的正式对话不受影响。
- MCP App 的 live model context 属于当前 session runtime,不独立持久化;恢复后的 App 应在初始化时重新发布当前状态。
已知限制
- 本地 relay 需要约等于源数据大小的可用磁盘空间;scp 传输不可续传,递归 scp 会跟随符号链接。
- SSH→本地下载目前使用 scp,不支持断点续传;移除已配置的定向信任边仍需手工操作。
- 流被截断后不会自动重试,因为已显示并持久化的文本 delta 可能重复;请在错误提示后重新发送或继续。
- ACP 协议不支持 native mid-turn guidance,因此 ACP 会话不显示“插队到本回合”。
- Windows 安装包仍未签名,可能触发 SmartScreen。
- 需自备模型与第三方科研服务的 API Key;对应费用、配额与可用性由用户及服务商负责。
测试与交付
- Rust workspace、Rust 1.88 / stable、WASM UI 编译和 Playwright 桌面 UI 回归测试在主分支通过。
- 新增覆盖结构化 SSH 直传/relay/下载/取消/清理、Run 失败语义、动态工作流 JSON round-trip、MCP App context、会话队列与置顶迁移、流式截断、完成回复定位、分组子菜单和新项目 layout 开关。
v0.21.0..v0.22.0包含 22 个非合并功能与修复提交,涉及 48 个文件。- 推送
v0.22.0标签后,GitHub Actions 会构建 macOS Apple Silicon / Intel DMG 与 Windows MSI / NSIS,并附加到本 Release。
反馈
欢迎在 GitHub Issues 反馈问题。SSH 传输问题请说明源/目标 context、所选 route、Run 状态和脱敏后的错误;队列、Agent workflow 或 MCP App 问题请附上复现步骤及相关会话状态。API key、token、密码、Cookie、SSH 私钥和未脱敏科研数据请勿上传。
English: wisp-science v0.22.0 adds structured, auditable transfers across SSH contexts and from SSH to local storage; editable queued follow-ups and pinned conversations; reusable dynamic Agent workflow drafts; and clearer MCP, Skill, and provenance surfaces. Remote command failures now remain correctable exploration instead of being confused with authentication failures, while cut model streams surface an explicit incomplete-response error.
What's Changed
- Transfer files directly between configured SSH contexts with rsync/scp, or relay through the local machine with each host's own credentials.
- Configure an explicit directed Ed25519 trust edge without copying private keys into local storage or SQLite.
- Download SSH files to an exact new local path through a persisted transfer Run with staging, cancellation, timeout, and cleanup.
- Return failed or cancelled waited Runs as failed tool results, preserve unfinished plan steps, and use the exact interpreter path found by environment probes.
- Queue follow-up messages by default while a conversation runs; edit, cancel, reorder, cut in, or interrupt-and-replace them.
- Pin conversations above normal grouping, and repair existing databases that recorded the old migration without the
frames.pinnedcolumn. - Import/export dynamic Agent workflow drafts as JSON and send the same proposal to the model for review before creation.
- Keep root workflow cards visible after taking over a delegated child session.
- Inject the latest standard MCP App
updateModelContextstate into the next native or ACP turn, and label MCP/Skill calls clearly in the transcript. - Copy recorded artifact provenance code from the viewer.
- Move folder destinations into a viewport-aware submenu, jump from completed-task notifications to their session, and make the standard research layout opt-in for new projects.
- Open the first scriptable HTTP(S) browser tab with the approved
web_open_tabtool. - Detect OpenAI/Anthropic-compatible streams that end without a terminal marker, preserve live locale when reopening Settings, and export the exact latest provider-agnostic debug request.
- Render the live
attempt_completionanswer after its tool rows so the final response is visible immediately without reopening the conversation. - Preserve the Rust 1.88 build floor by using a stable UTF-8 truncation path and locking the notification dependency to a compatible release.
Compatibility: Installs over v0.21.0 in place. The missing pinned-session column is repaired automatically. Queued follow-ups and live MCP App model context remain runtime-only. The standard research layout is now opt-in for newly created projects and does not reorganize existing workspaces.
Full Changelog: v0.21.0...v0.22.0