github esengine/DeepSeek-Reasonix studio-v2.36.0
Reasonix Studio v2.36.0

latest release: v2.36.0
2 hours ago

本版加入提问等待超时、可选提示音、可选的折叠中间过程、每回合运行时长、改动文件条、工作区额外文件夹设置和编辑连接时更改协议,回执卡改为默认隐藏,并修复 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 #12612
  • fix(responses): reject incomplete Studio tool calls / 拒绝 Studio 不完整工具调用 by @XTLine in #12558
  • fix(permissions): treat conditionally registered tools as known to the rule vocabulary by @esengine in #12565
  • fix(boot): emit build-time notices once per lineage across rebuilds by @esengine in #12581
  • docs(readme): thank Right Code as a sponsor, listed first by @esengine in #12639
  • fix(agent): let read-only agents search the capability catalog by @esengine in #12582
  • fix(providers): offer no model-listing read for a protocol that declares none by @esengine in #12568
  • fix(providers): show a refused removal beside Delete and clear every role naming the removed service by @esengine in #12573
  • fix(studio): the rewrite box spans its row instead of a bare textarea's width by @esengine in #12626
  • fix(readiness): a write that reached disk stays a write when tool.after reports it failed by @esengine in #12614
  • fix(agent): tell the model when a reasoning-only response was cut off at a limit by @esengine in #12625
  • feat(plugin): a 401 Bearer challenge carries a typed authentication identity by @esengine in #12613
  • fix(plugin): send initialize to a fresh child when the discovery probe goes unanswered by @esengine in #12621
  • fix(sandbox): do not relaunch a bash probe that hung for the same file within a minute by @esengine in #12633
  • feat(jobs): carry a failed background command's exit code and signal as typed fields by @esengine in #12638
  • fix(bench): name what the reproduction verdict compares instead of claiming a version and a corpus by @esengine in #12629
  • fix(bench): compute pass^k and pass@k only over tasks that ran every trial by @esengine in #12631
  • feat(control): user messages carry their stored attachments as a field by @esengine in #12634
  • fix(delegation): a cancelled worker's transcript reaches the parent, but is never an answer by @esengine in #12628
  • feat(studio): change a connection's protocol when editing it by @esengine in #12618
  • fix(studio): reopen the window at the rectangle it was closed at by @esengine in #12624
  • ci: run the macOS and Windows legs on pull requests only when a platform path changed by @esengine in #12679
  • fix(studio): a column's drag handle no longer covers the scrollbar beside it by @esengine in #12620
  • fix(studio): word every placeholder notice through one shared resolver by @esengine in #12642
  • fix(update-helper): accept the package the update path names, and guard it in the package by @esengine in #12662
  • fix(sandbox): one rule for where a shell may be launched from by @esengine in #12635
  • fix(receipt): judge host-owned paths when the call ran and treat links of every kind as not owned by @esengine in #12632
  • fix(serve): let a model switch go through while only background jobs remain by @esengine in #12622
  • fix(textutil): one declared policy per surface kind for package-supplied text by @esengine in #12636
  • fix(installsource): keep the cause of a refused .mcp.json under kind=auto by @xxoingr in #12571
  • feat(tools): bash_output without a job id lists the running background jobs by @esengine in #12627
  • feat: show how long each turn ran by @esengine in #12656
  • fix(responses): send the schema's required detail on input_image and say what shape a refused request had by @esengine in #12666
  • fix(responses): send the schema's required detail on input_image to the official OpenAI host by @esengine in #12667
  • fix(studio): refresh shared session trees on kernel changes by @par73e in #12664
  • feat(studio): changed-files pill above the composer by @esengine in #12668
  • fix(studio): a line typed mid-thought no longer splits the thought into two blocks by @esengine in #12673
  • fix(update): start Studio's Windows installer with --updated so an update keeps shortcuts and the taskbar pin by @esengine in #12675
  • fix(studio): the notification setting says when it fires, that it is off by default, and who picks the sound by @esengine in #12677
  • fix(planmode): explain browser_open opt-out and offer web_fetch by @xlyy1 in #12678
  • fix(studio): separate extension warning categories / 区分扩展告警类别 by @XTLine in #12669
  • fix(pluginpkg): show package data inside host sentences as literals by @esengine in #12630
  • build(deps): bump golang.org/x/sys from 0.48.0 to 0.49.0 in /desktop in the go group by @dependabot[bot] in #12681
  • build(deps): bump the actions group with 5 updates by @dependabot[bot] in #12686
  • build(deps): bump the npm group in /desktop/frontend-next with 8 updates by @dependabot[bot] in #12687
  • perf(state): read each session sidecar once per transaction and remember verified trusted objects by @esengine in #12653
  • fix(studio): the docked browser column starts at the top of the pane by @esengine in #12650
  • feat(control): grant a workspace extra folders, with typed refusals by @esengine in #12640
  • feat: skip an unanswered ask after a user-set wait, and tell the model it was a timeout by @esengine in #12661
  • fix(notify): a clicked Windows toast brings Studio's window forward by @esengine in #12699
  • fix(studio): the feedback form names Windows 11 from its build number by @esengine in #12701
  • fix(boot): a rebuilt dispatcher keeps the missing-sidecar notice by @esengine in #12690
  • fix(agent): keep a window-proportional margin for the completion and recover a codeless 400 that counts it by @esengine in #12698
  • fix(control): a queued host turn announces its start by @esengine in #12705
  • feat(studio): suggest many more interface and code fonts by @esengine in #12708
  • feat(completion): show an MCP prompt's declared arguments in the slash menus by @esengine in #12700
  • fix(studio): refuse an oversize attachment before reading it into memory by @esengine in #12711
  • feat(studio): an opt-in line width that widens the composer with the transcript by @esengine in #12703
  • fix(studio): the tray menu is replaced only when its content changes by @esengine in #12709
  • fix(studio): a queued line the kernel could not apply leaves the transcript by @esengine in #12713
  • feat(control): tell the model which calls the host refused, once, at the next turn by @esengine in #12697
  • fix(studio): scrolling up no longer jerks or jumps to another message by @esengine in #12706
  • chore(desktop): range over strings.SplitSeq in the packaged-names test by @esengine in #12718
  • fix(readiness): record where a named-path write through a symlink landed by @esengine in #12619
  • fix(i18n): a 400 says the service refused the request and that its reason follows, not that this is a program defect by @esengine in #12710
  • feat(studio): show where the logs and abnormal-exit records are kept by @esengine in #12719
  • fix(studio): icon-rail hints wait for a short hover before they appear by @esengine in #12707
  • test(boot): turn the bash sandbox off in the running-jobs effect test by @esengine in #12737
  • feat(studio): show a workspace's true session total and page in older sessions by @esengine in #12688
  • fix(providers): name a model check that timed out against a local address and give it a longer wait by @esengine in #12704
  • fix(studio): one size guard before every upload is read into memory by @esengine in #12712
  • fix(studio): a running call with no output yet opens and says what it is doing by @esengine in #12720
  • feat(notify): an optional chime for turn done, approvals and questions by @esengine in #12702
  • fix(config): an extra root must name a drive letter on Windows by @esengine in #12717
  • feat(studio): manage a project's extra writable folders in Settings by @esengine in #12715
  • fix(studio): say what the signal rail is for and why its marks do not move by @esengine in #12646
  • feat(bench): account for what each context-retrieval run costs by @chuiwenwei in #12494
  • docs(context-retrieval): record the v2 Experiment I result in Status by @chuiwenwei in #12495
  • fix(studio): keep machine pages local / 修复远程窗格下本机页面错绑 by @XTLine in #12674
  • fix(studio): shell rows no longer collide at high scale in a narrow window by @esengine in #12616
  • feat(studio): fold a turn's work under one line, off by default by @esengine in #12714
  • test(studio): give async queries room on a loaded machine by @esengine in #12607
  • fix(control): a refused submission carries a notice code the queueing frontend can word by @esengine in #12654
  • fix(readiness): an explicit hand-back ends the turn instead of being continued by @esengine in #12651
  • fix(control): resuming a Goal runs it, and a reply to a blocked Goal puts it back in pursuit by @esengine in #12655
  • fix(studio): one sidebar toggle that does not move, a conversation item that does something, one header per run of replies by @esengine in #12647
  • test(e2ebench): require every task corpus to declare its authoring guards by @chuiwenwei in #12500
  • chore(i18n): keep i18n.go at the 800-line ceiling by @esengine in #12739
  • fix(storage): catch up on writes made during a move and say why a target is refused by @esengine in #12740
  • feat(studio): opening the workbench offers a start page instead of opening a browser by @esengine in #12648
  • feat: the receipt card is hidden by default; a line says what was left unproven; visibility is a kernel setting by @esengine in #12721
  • docs(release): Studio 2.36.0 notes by @esengine in #12716
  • test(serve): use a Windows-legal directory name in the tree JSON escaping test by @esengine in #12741
  • test(trustedstate): pin the clock and the file time in the racy-window test by @esengine in #12742

New Contributors

Full Changelog: studio-v2.35.0...studio-v2.36.0


macOS 已用 Developer ID 签名并公证,打开时不需要清除隔离属性。Windows 的窗口、内核与安装器都经 Certum 代码签名证书做了 Authenticode 签名。Linux Debian 系从 .deb 安装,Fedora、RHEL、openSUSE 等从 .rpm 安装(sudo dnf install ./ReasonixStudio-linux-amd64.rpm)。

三个平台都能自更新:Linux 的 .deb 走自己的包(.rpm 的自更新尚未提供,请手动下载新包),Windows 运行下一个安装器,macOS 替换自身 bundle。

Don't miss a new DeepSeek-Reasonix release

NewReleases is sending notifications on new releases.