本版重做服务商编辑表单、让模型的 render_chart 在对话里直接画成图表,并新增已完成未查看标记与技能 paths 门控;同时修复多会话并发卡顿、压缩触发偏晚和一批设置面板草稿丢失问题。
新增
- 服务商表单:编辑页有未保存提示、还原按钮和「已保存」回执,测试结果显示在对应按钮旁,新增「测试已启用模型」按钮与汇总行,底部固定保存栏支持 Ctrl/Cmd+S (#12189, #12193, #12196, #12202)
- 服务商表单:有未保存修改时切换服务或新增会产生询问,整体连接检查失败时会给出分类后的原因 (#12185, #12191)
- 模型调用
render_chart后,对话里直接画出柱状图、折线图或饼图;终端界面显示为对齐的数据表 (#12179, #12181) - 技能支持
paths:声明:只有会话碰过匹配的文件后,该技能才会出现在模型的技能列表里 (#12192, #12195, #12199) - 会话完成但还没看过时,侧栏和标签页会显示标记,重启后仍在,打开该会话才清除 (#12231, #12233, #12234)
- 手机网页端可以只读查看代理正在使用的浏览器标签页 (#12209)
变更
- 压缩触发改为参考服务商上次报告的提示词大小,带截图等本地估算偏低的会话不再拖到超窗口才压缩 (#12222)
- 压缩之后,模型自己写的任务清单、已全部完成的清单、折叠期间改过的文件和已通过的检查会重新随请求带上 (#12216)
- 附件被拒绝时,附件条直接显示原因(类型不支持、过大、为空、无法读取、写盘失败) (#12239)
- MCP 提示词获取失败时,提示会写明是哪个提示词、为什么失败,模型下一轮也会知道这次调用失败了 (#12241)
- 市场在注册表连不上时,显示上一次成功的浏览结果并标明是缓存 (#12210)
- 命令行:Ctrl+L 清屏,与
/cls相同;补全菜单和/resume选择器支持 Ctrl+P/Ctrl+N 上下移动 (#12223 by @xxoingr, #12217 by @xxoingr) - 添加服务商的探测被拒绝时保留错误代码,不再把对端回显的内容(可能含密钥)带进提示 (#12212 by @xxoingr)
修复
- 在后台启动的命令不再被画成红色失败;之后读取到后台任务失败或超时时,该调用会正确标为失败 (#12198, #12213 by @xxoingr)
- 同时开着多个会话时,被其他窗格遮住的窗格不再按流式输出速度重绘,界面明显更流畅 (#12237)
- 打开反馈对话框时背景不再做模糊,运行中的回合不再让 GPU 持续满载 (#12220)
- 连接远程机器时会接入已经在运行的服务,不再另起一个争抢会话租约,也不再删掉它发布的端口文件 (#12229)
- 保存服务商后编辑器在列表重新读取之后才重建,不再显示旧值 (#12177)
- 服务商编辑和添加在保存期间锁定草稿,保存期间的修改不会再静默丢失;改地址后会丢弃旧地址的探测结果,模型检查沿用表单里的代理绕过设置 (#12167 by @KHG420, #12170 by @KHG420, #12174 by @KHG420, #12175 by @KHG420)
- 备份面板在创建、恢复和删除进行中锁定输入,不会重复提交删除;取消全部类别后重新加载仍保持为空 (#12178 by @KHG420, #12180 by @KHG420, #12183 by @KHG420, #12184 by @KHG420)
- 记忆面板保存、恢复或遗忘后,历史版本列表随即更新 (#12133 by @KHG420)
- 移除插件包后,设置里显示最新的重载结果;包详情的钩子行不再重复或残留 (#12155 by @KHG420, #12163 by @KHG420)
- 登录或退出后,市场详情页的投票面板会随账号刷新 (#12169 by @KHG420)
- 首次打开带令牌片段的链接时,页面资源在认证完成后重新加载,不再因 401 而空白 (#12190 by @KHG420)
- 选择无效模型失败后,已在运行的扩展进程和流式回调保持可用 (#12205 by @KHG420)
- 历史恢复期间,已显示的扩展卡片不再消失 (#12206 by @KHG420)
- 扩展在回合之外提问并回答后,状态标签恢复为空闲,不再停在「运行中」或「等待确认」 (#12194 by @KHG420)
- 在没有剪贴板接口的环境复制后,焦点仍留在原按钮上,键盘用户可以继续 Tab (#12071 by @KHG420)
- 发布表单的版本提示改为如实说明:只有三段数字版本才会自动递增 (#12162 by @KHG420)
- 辅助功能:优化提示词按钮由其提示框描述,常驻扩展面板的进度条有了名称 (#12186 by @xxoingr, #12187 by @KHG420)
贡献者
What's Changed
- fix(studio): honor draft proxy bypass during model checks by @KHG420 in #12167
- fix(studio): discard probe findings after endpoint edits by @KHG420 in #12170
- fix(studio): replace colliding package hook rows by @KHG420 in #12163
- fix(studio): refresh market votes when account changes by @KHG420 in #12169
- fix(studio): preserve empty backup selections on reload by @KHG420 in #12178
- fix(providers): remount the editor only after the list has been re-read by @esengine in #12177
- feat(tui): show a render_chart call as an aligned data table by @esengine in #12181
- fix(studio): hold provider drafts while saving by @KHG420 in #12174
- fix(studio): hold provider additions while saving by @KHG420 in #12175
- fix(studio): hold backup drafts while creating by @KHG420 in #12180
- fix(studio): hold restore choices while awaiting receipts by @KHG420 in #12183
- feat(desktop): draw render_chart calls as inline SVG charts in the transcript by @esengine in #12179
- fix(studio): hold backup deletions until receipts settle by @KHG420 in #12184
- fix(studio): the prompt-refine button is described by its tooltip by @xxoingr in #12186
- feat(providers): report why a whole-connection check failed as a typed finding by @esengine in #12185
- fix(studio): name standing extension panel progress by @KHG420 in #12187
- feat(desktop): unsaved-changes indicator, Revert and a Saved receipt on the provider edit form (RFC #12040 S1, 1/3) by @esengine in #12189
- fix(studio): enforce the MCP example argument schema by @KHG420 in #12121
- fix(studio): preserve focus after legacy clipboard copy by @KHG420 in #12071
- docs(studio): clarify skill frontmatter namespaces by @KHG420 in #12097
- fix(studio): settle runtime feedback after package removal by @KHG420 in #12155
- fix(studio): reload protected assets after fragment authentication by @KHG420 in #12190
- feat(desktop): ask before switching service or adding discards unsaved provider edits (RFC #12040 S1, 1.5/3) by @esengine in #12191
- feat(skill): parse paths frontmatter and track the files a session touched (1/4 for #11352) by @esengine in #12192
- fix(studio): refresh memory history after writes by @KHG420 in #12133
- fix(studio): describe publication version auto-increment limits by @KHG420 in #12162
- feat(desktop): provider test results next to their buttons, with a summary line (RFC #12040 S1, 2a) by @esengine in #12193
- test(e2ebench): hold fanout-width, upstream-edge and project-check to the authoring guard by @chuiwenwei in #12105
- docs(sdk): verify starter extension with the offline provider by @KHG420 in #12158
- feat(skill): record the files completed tool calls touched (2/4 for #11352) by @esengine in #12195
- feat(desktop): Test enabled models button with a running summary (RFC #12040 S1, 2b-1) by @esengine in #12196
- fix(desktop): stop drawing a background start as a failed shell call by @esengine in #12198
- feat(skill): show a paths-gated skill only after a matching file is touched (3/4 for #11352) by @esengine in #12199
- feat(desktop): sticky Save bar with a phase dot on the provider form (RFC #12040 S1, 2b-2) by @esengine in #12202
- fix(studio): restore sidecars after model selection fails by @KHG420 in #12205
- fix(studio): restore idle status after questions by @KHG420 in #12194
- fix(studio): retain extension cards during history recovery by @KHG420 in #12206
- feat(studio): show the agent's browser tabs read-only on the phone web client by @esengine in #12209
- feat(market): serve the last good browse answer, marked, when the registry is unreachable by @esengine in #12210
- fix(serve): probe refusals keep the code and leave the endpoint's echo behind by @xxoingr in #12212
- fix(tools): reading a background job that failed is a failed call by @xxoingr in #12213
- fix(compaction): let the provider's last reported prompt size trigger a fold when the local estimate runs low by @esengine in #12222
- fix(tui): Ctrl+L clears the screen like /cls by @xxoingr in #12223
- fix(desktop): drop the feedback veil's backdrop blur so an open dialog does not pin the GPU by @esengine in #12220
- fix(tui): Ctrl+N and Ctrl+P move through the completion menu and resume picker by @xxoingr in #12217
- test(studio): the tooltip guard measures the attach button in every language by @xxoingr in #12224
- fix(remote): attach to a running serve instead of replacing it by @esengine in #12229
- feat(agent): re-project finished work at the request tail once a fold is installed by @esengine in #12216
- feat(session): persist a finished-but-unviewed mark per session by @esengine in #12231
- fix(session): let a view wait out a sidecar caught mid-replace by @esengine in #12234
- perf(studio): stop panes behind another from redrawing at stream rate by @esengine in #12237
- fix(attachments): say why an attachment was refused, with a code per class by @esengine in #12239
- feat(studio): mark sessions that finished unseen in the sidebar and tabs by @esengine in #12233
- fix(control): attribute a failed MCP prompt fetch and tell the model about it by @esengine in #12241
- docs(release): Studio 2.30.0 notes by @esengine in #12242
Full Changelog: studio-v2.29.0...studio-v2.30.0
macOS 已用 Developer ID 签名并公证,打开时不需要清除隔离属性。Windows 的窗口、内核与安装器都经 Certum 代码签名证书做了 Authenticode 签名。Linux 从 .deb 安装。
三个平台都能自更新:Linux 走自己的包,Windows 运行下一个安装器,macOS 替换自身 bundle。