Release notes
DeepSeek-Reasonix studio-v2.36.0
本版加入提问等待超时、可选提示音、可选的折叠中间过程、每回合运行时长、改动文件条、工作区额外文件夹设置和编辑连接时更改协议,回执卡改为默认隐藏,并修复 1M 窗口每轮 400、存储迁移卡在校验、滚轮抖动、模型切换被后台任务挡住、Linux 与 Windows 更新等问题。
新增
- 新增可选的提问等待超时(默认关闭):设置的会话页、
[agent] ask_timeout_seconds或终端/ask-timeout开启后,无人回答的提问超时即跳过,并告诉模型这是超时而非你的回答 (#12661) - 每个回合结束后显示它运行了多久,重新载入历史后仍能看到;失败或被取消的回合不显示,旧会话也不补造 (#12656)
- 输入框上方新增改动文件条,显示「N 个文件已更改 +x -y」,点击打开工作台文件列表;默认开启,可在会话设置里关闭,非 git 工作区不显示 (#12668)
- 外观的行宽新增「整宽,输入框也铺满」,默认不变,需要时自己选;手机宽度不受影响 (#12703)
- 设置的「工具与权限」里新增「此项目的额外文件夹」:可添加、移除让 agent 额外可写的文件夹,只对本项目生效,拒绝时给出带代码的原因,默认没有;「完全放行」只决定是否询问,不会扩大可写范围 (#12640, #12715)
- 新增可选的提示音(默认关闭):设置的通知里打开后,回合结束、等待批准、模型提问和反馈回复时放一声短提示,不依赖系统通知,窗口在后台也会响 (#12702)
- 新增可选的「折叠中间过程」(默认关闭,
[ui] fold_turn_work):已结束的一轮只留最后一句,中间的工具调用、思考和中间文字收成一行,点开展开,运行中的一轮始终展开 (#12714) - 设置的版本页新增「日志与异常退出记录」:显示日志目录和异常退出留下的文件,不上传任何东西 (#12719)
- 编辑连接时可以更改协议,不必删掉重建;决策来源不显示该选项,已固定请求地址的连接会被拒绝并说明原因 (#12618)
- 界面字体与代码字体的建议列表大幅扩充,在 Windows 上不再几乎没有可选项 (#12708)
- 斜杠菜单里的 MCP 提示词会列出它声明的参数,并标明必填或可选,Studio 和终端界面都有 (#12700)
- 窗口关闭后重新打开,会回到上次的大小、位置和最大化状态 (#12624)
- 不带任务编号调用
bash_output时,列出正在运行的后台任务及其开始时间,模型不必自己记任务编号 (#12627)
变更
- 回执卡默认隐藏:有未验证的改动时只留一行,点击展开;在设置里或
[ui] show_receipt可恢复显示,终端界面读同一个设置 (#12721) - 打开工作台时先出入口页(文件、改动、浏览器),不再替你打开浏览器;标题栏的浏览器按钮仍直达浏览器 (#12648)
- 侧栏开关只有一个且位置不变,会话项点击有动作,同一模型连续回复只在首条显示头像和名字 (#12647)
- 运行分析的信号栏说明它是什么、为什么标记不能拖;窄窗口加高缩放下标题栏折成一个按钮,不再互相压住 (#12646, #12616)
- 宿主拒绝过的调用会在下一轮告诉模型(只回传确定不可重试的几类),被拒说明也不再写「本会话剩余时间」 (#12697)
- 本机模型的验证超时单独说明「本机服务没有在时限内回答,模型可能仍在加载」,本机等待放宽到 60 秒,远程仍是 20 秒 (#12704)
- 设置、用量等机器级页面在远程窗格里也绑定本机运行时,被替换的控制器的货币保存会被拒绝 (#12674 by @XTLine)
- 悬停提示延迟 0.3 秒,键盘聚焦不延迟 (#12707)
- 只剩后台任务时也可以切换模型、思考档、窗口、服务或恢复会话:任务继续运行并交给新的运行时,不再被「仍有后台任务」挡住;回合进行中仍会被拒绝 (#12622)
- 计划模式下调用
browser_open被拒时,说明原因并建议改用web_fetch(#12678 by @xlyy1) - 通知设置的说明改为如实:总开关默认关闭,前台和后台都会提醒,系统提示音由系统决定,没有单独的声音设置 (#12677)
- 只读代理现在可以搜索能力目录,不再被误报「未知的动态能力操作」 (#12582)
- 权限规则可以写
system_one、advise、best_of_n等仅在特定装配下存在的工具,不再保存时被拒或载入时被报失效 (#12565) - 安装计划和插件警告里来自软件包的文字统一按显示场景处理:控制字符不再截断整句,隐藏字符不再悄悄被删 (#12630, #12636)
- MCP 登录判定改为按 401 的 Bearer 质询和凭据情况,不再靠错误文字里有没有「auth」;没有质询的 401 与 403 现在显示为可重试 (#12613)
修复
- 存储位置迁移不再在「正在校验」处看似卡死:校验按文件汇报进度,迁移期间继续写入的文件会再次复制,仍不稳定则拒绝并保持原样;校验后又被写过的旧目录会保留;目标目录被拒时列出多余条目 (#12740)
- 向上滚动长对话时不再抽搐或跳到上一条 (#12706)
- 还没有输出的运行中调用可以展开,写明命令仍在运行、已运行多久和它自带的超时 (#12720)
- 恢复 Goal 会真的开始追求,对被阻塞的 Goal 回复后恢复追求;被拒绝的提交带通知码,排队的前端不再说「请重发」 (#12655, #12654)
- 模型显式交回(阻塞或等待用户)后,宿主不再继续续跑;仍在运行的后台任务算看不见的写入者,通过符号链接写入会记录实际写到哪里 (#12651, #12586, #12619)
- 通用的 400 说明不再说「通常是程序缺陷」,附上服务给出的原因 (#12710)
- 上下文接近 1M 时每一轮都返回 HTTP 400:补全预留改为随窗口按比例留出,没有错误码的 400 也会折叠上下文后重放,折叠失败时错误里会写明原因 (#12698, Fixes #12694 fixed in #12698)
- Responses 协议的流在工具调用不完整时不再悄悄丢掉其中一个,而是判为失败重试 (#12558 by @XTLine)
- 发给 Responses 的图片补上
detail字段,官方 OpenAI 地址不再拒收;400 或 422 时在服务返回的文字旁显示本机发出的请求形状,便于排查 (#12666, #12667) - stdio 的 MCP 服务若对探测不应答又在收到非
initialize的首条消息时退出,现在改在新进程上握手,不再等到超时报context deadline exceeded(#12621) - 已写入磁盘的改动被扩展的
tool.after报告为失败后,不再从改动记录里消失,改完代码仍会要求验证 (#12614) - 回执判断某个路径是否属于宿主自己的目录时,改在调用发生时判断,并把各种链接(含 Windows 联接点)和
..都视为不属于 (#12632) - 删除模型服务被拒时,原因显示在删除按钮旁,并同步清掉所有引用该服务的角色,窗口很矮时也看得到 (#12573)
- 决策协议的来源不再显示「读取可用模型」按钮 (#12568)
- 关闭右侧边栏后,滚动条不再被拖拽热区盖住,可以直接拖动;各分栏的拖拽条也不再压住相邻滚动条 (#12620)
- 重写消息的输入框改为占满所在行,不再只有一个窄的文本框 (#12626)
- 停靠的浏览器栏从窗格顶部开始,不再空出一截 (#12650)
- 模型思考时输入一行,思考内容不再被拆成两块 (#12673)
- 在一个窗口里归档或改动会话后,其他窗口的会话列表会跟着刷新 (#12664 by @par73e)
- 通知里的占位符(文件名、数量、规则)现在统一替换,不再原样显示
{n}、{name}(#12642) - 扩展的几类告警分开计数,一类不再吞掉另一类;重建后缺失边车程序的通知不再丢失;同一条构建期通知在重建时只出现一次 (#12669 by @XTLine, #12690, #12581)
- 模型的推理被长度上限截断而没有正文时,告知是上限所致,不再只说「别只发推理」 (#12625)
- 被取消的子任务的记录会交给父任务,但不会被当作答案 (#12628)
- Linux 的
.deb更新程序现在接受reasonix-studio包名,不再在校验后以 package_rejected 拒绝;.deb的 CI 校验同步加上 (#12662) - Windows 更新时以
--updated启动安装程序,更新后桌面快捷方式和任务栏固定得以保留 (#12675) - Windows 点击系统通知会把 Studio 窗口带到前面 (#12699)
- 反馈表单的系统一栏按构建号显示「Windows 11」,不再只显示 NT 10.0 而被误认为 Windows 10 (#12701)
- 后台任务完成等由宿主排队的回合,开始时现在会宣告,界面不再看似无事发生 (#12705)
- 排队的一行被内核判为无法送达后,会从对话记录里撤下,不再一直显示「等待中」,与队列面板一致 (#12713)
- Linux 托盘菜单只在内容变化时才重建,避免定时替换把打开着的菜单关掉;这是对一个托盘问题的加固,未确认为根因 (#12709)
- 附件、壁纸、主题包过大时先拒绝再读入内存,不再因几百 MB 的压缩包耗尽内存 (#12711, #12712)
- 外壳探测遇到卡住的 bash 一分钟内不再重复启动;网络位置(UNC 共享)上的 bash 与 PowerShell 一律不再被用作 shell (#12633, #12635)
- 自动安装
.mcp.json被拒时,保留并显示被拒的原因,不再当作没有这个文件 (#12571 by @xxoingr) - 内部:会话旁文件每次事务只读一次并缓存已验证的信任对象,后台命令的退出码和信号改为带类型字段,用户消息的附件改为字段而非文本匹配 (#12653, #12638, #12634)
- 内部:评测统计、持续集成、依赖升级、官网与技能镜像、赞助鸣谢等不影响使用的改动 (#12629, #12631, #12679, #12681, #12686, #12687, #12639, #12649, #12659, #12612)
- 内部:测试与基线检查修复、评测记录与语料守卫 (#12607, #12718, #12737, #12739, #12494 by @chuiwenwei, #12495 by @chuiwenwei, #12500 by @chuiwenwei)
贡献者
感谢本版本的贡献者:@XTLine、@xlyy1、@par73e、@xxoingr、@chuiwenwei
What's Changed
- test(control): make the scoped-cancel inbox test deterministic by @esengine in https://github.com/esengine/DeepSeek-Reasonix/pull/12612
- fix(responses): reject incomplete Studio tool calls / 拒绝 Studio 不完整工具调用 by @XTLine in https://github.com/esengine/DeepSeek-Reasonix/pull/12558
- fix(permissions): treat conditionally registered tools as known to the rule vocabulary by @esengine in https://github.com/esengine/DeepSeek-Reasonix/pull/12565
- fix(boot): emit build-time notices once per lineage across rebuilds by @esengine in https://github.com/esengine/DeepSeek-Reasonix/pull/12581
- docs(readme): thank Right Code as a sponsor, listed first by @esengine in https://github.com/esengine/DeepSeek-Reasonix/pull/12639
- fix(agent): let read-only agents search the capability catalog by @esengine in https://github.com/esengine/DeepSeek-Reasonix/pull/12582
- fix(providers): offer no model-listing read for a protocol that declares none by @esengine in https://github.com/esengine/DeepSeek-Reasonix/pull/12568
- fix(providers): show a refused removal beside Delete and clear every role naming the removed service by @esengine in https://github.com/esengine/DeepSeek-Reasonix/pull/12573
- fix(studio): the rewrite box spans its row instead of a bare textarea's width by @esengine in https://github.com/esengine/DeepSeek-Reasonix/pull/12626
- fix(readiness): a write that reached disk stays a write when tool.after reports it failed by @esengine in https://github.com/esengine/DeepSeek-Reasonix/pull/12614
- fix(agent): tell the model when a reasoning-only response was cut off at a limit by @esengine in https://github.com/esengine/DeepSeek-Reasonix/pull/12625
- feat(plugin): a 401 Bearer challenge carries a typed authentication identity by @esengine in https://github.com/esengine/DeepSeek-Reasonix/pull/12613
- fix(plugin): send initialize to a fresh child when the discovery probe goes unanswered by @esengine in https://github.com/esengine/DeepSeek-Reasonix/pull/12621
- fix(sandbox): do not relaunch a bash probe that hung for the same file within a minute by @esengine in https://github.com/esengine/DeepSeek-Reasonix/pull/12633
- feat(jobs): carry a failed background command's exit code and signal as typed fields by @esengine in https://github.com/esengine/DeepSeek-Reasonix/pull/12638
…