本版本新增辅助会话、按需保存长粘贴、会话行快捷按钮、沙盒设备白名单等功能,并修复窄窗口布局、对比度、记忆召回和远控兼容等一批问题。
新增
- 设置 → 模型偏好新增「命名模型」和按角色的推理强度:可以单独指定用哪个模型给会话起标题,并分别设置各角色的推理强度。关联 #11851 by @Guan0923。
- 新增「辅助会话」:在主对话旁边问一个只读的小问题,用只读工具回答,不写进主对话、不改文件,关闭即丢弃。关联 #12927 fixed in #13128、#13128。
- 上下文详情里每一类占用可以展开,看最大的几项(只显示大小和工具名,不含消息内容)。关联 #13052、#13143。
- MCP 服务器在工具列表响应里给出
ttlMs时,工具目录会在到期后自动重读(限制在 30 秒到 1 小时之间),不再只靠变更通知。关联 #13108。 - 技能的
allowed-tools现在也接受开放标准写法(空格分隔,如Bash(git add:*) Read),原来的逗号分隔照常可用;括号内的分隔符属于同一条规则。关联 #13110。 reasonix doctor现在会提示技能的名称、描述不符合 Agent Skills 开放标准(大写、连字符、超长、与目录名不一致),这些技能仍会正常加载。关联 #13110。- 设置 → 外观新增「会话行快捷按钮」:打开后,鼠标移到侧栏会话行上会显示「归档」「删除」按钮;默认关闭,两个操作仍在右键菜单里。关联 #13132。
- 压缩被拒时,提示现在列出候选内容的构成(固定前缀、被保护的消息、摘要、最近回合各占多少),不再只说「候选仍高于触发线」。关联 #13148。
- 反馈对话框新增「想法与讨论」入口,建议和想法可以发到 GitHub 讨论区,bug 和错误仍用发送。关联 #13141、#13155。
- 新增
[sandbox] allow_devices:Linux 命令沙盒默认看不到宿主的设备节点(如显卡),现在可在用户级配置里用/dev/nvidia*这类白名单放进去;默认关闭,项目配置不能开。关联 #13157。 - 撰写框里的长粘贴芯片新增「存为文件」:点了才把这段文字存成文件,消息里只带一段指针(行数、大小、路径、怎么读),原文不再随每个请求发送;不会自动存。关联 #13148、#13162。
- 终端界面里折叠的长粘贴可以按 Ctrl+G 存成文件:发送时只带一段指针,不再把原文送给模型;不按就和以前一样整段发送。关联 #13148、#13166。
变更
- ACP 的工具调用更新现在带上被调用的工具名。关联 #13114、#13130。
- Linux 上 bubblewrap 已安装却不能创建命名空间(容器、受限内核)时,提示不再说「请安装」,而是说明真实原因和出路。关联 #13117、#13138、#13146。
- 压缩前先预判:被保护的消息和最近回合本身就已超过触发线、摘要无论怎样都放不进去时,直接拒绝并说明构成,不再先花一次摘要调用。关联 #13148。
修复
- 会话里召回过的记忆在会话外被修改或删除后,下一次召回会读到新内容(只重查上次命中的几条,不全量扫描)。关联 #12948 fixed in #13147。
- 记忆目录因权限或存储故障无法读取时,现在明确报错,避免漏列历史版本、误报版本不存在,或根据不完整历史计算恢复版本号。关联 #12950 fixed in #13016 by @SivanCola。
- Linux 上启动时不再把没人选过、也没说过话的启动目录(主目录)列成项目,删掉它重启后不会再回来。关联 #13107 fixed in #13127、#13127。
- 要打开的文件不存在时,右侧面板现在明确提示「找不到该文件」,不再打开一片空白的预览页。关联 #13125、#13133。
- 设置壁纸后,侧栏底部(钱包与用量、发送反馈、账号)不再多出一块发白的底,壁纸一直延续到最下面。关联 #13129、#13131。
- 手机浏览器版本太旧、没有 X25519 加密时,远控现在改用经审计的软件实现继续连接(只在需要时才加载,约 24 KB),不再要求换浏览器。关联 #13140。
- 重启后点以前的会话打不开时,提示现在区分原因:会话文件已不在、会话所在目录不在、或系统读不了该路径(并带上系统给的原因),不再一律说「无法解析该会话路径」。关联 #13152、#13159。
- 窄窗口下界面不再重叠或被挤压:标签栏会换行,设置里的标签不再被压成一字一行,分段控件不再跑出面板,几处文字对比度提高到 AA。关联 #13169。
- 窄窗口下的排版修正:活动步骤行的耗时与箭头不再被挤出,计量栏的子代理芯片收起文字保留数字,配置错误框的路径改为换行。关联 #13154、#13172。
- 修复两处对比度不达 AA:开场页的「按任意键跳过」提示,和输入框上方「已更改文件」胶囊里的 +/− 数字(深浅两种主题)。整机审查于 f8c262d。
贡献者
感谢本版本的贡献者:@Guan0923、@SivanCola
This release adds side questions, keeping a long paste as a file, optional session-row buttons and a sandbox device allowlist, and fixes narrow-window layout, contrast, memory recall and remote-control compatibility.
New
- Settings → Model preferences gains an independent naming model and per-role reasoning effort, so titles can use their own model and each role its own effort. Refs #11851 by @Guan0923.
- New side questions: ask a read-only question beside the main conversation; read-only tools, never in the main transcript, dropped on close. Refs #12927 fixed in #13128, #13128.
- Each class in the context details can be opened to its largest items (sizes and tool names only, never message text). Refs #13052, #13143.
- When an MCP server puts
ttlMson its tool list, the catalog is re-read once it runs out (clamped to 30 s to 1 h) instead of relying on change notices alone. Refs #13108. - A skill's
allowed-toolsnow also takes the open-standard spelling (space separated, likeBash(git add:*) Read); commas still work. Refs #13110. reasonix doctornow reports skill names and descriptions that depart from the Agent Skills spec (uppercase, hyphens, length, directory mismatch); such skills still load. Refs #13110.- Settings → Appearance gains "Session row buttons": when on, hovering a sidebar session row shows Archive and Delete; off by default, both stay in the context menu. Refs #13132.
- When compaction rejects its candidate as too large, the message now splits it into fixed prefix, protected messages, summary and recent tail, not just "still above trigger". Refs #13148.
- The feedback dialog gains an "Ideas and discussion" link to GitHub Discussions for suggestions; bugs and errors still use Send. Refs #13141, #13155.
- New
[sandbox] allow_devices: the Linux command sandbox hides host devices such as the GPU; a user-level allowlist binds them in. Off by default; project config cannot set it. Refs #13157. - The long-paste chip gains "save as file": on click the text is stored as a file and the message carries only a pointer (lines, size, path, how to read it); never automatic. Refs #13148, #13162.
- In the terminal, a folded long paste can be kept as a file with Ctrl+G: the message carries a pointer, not the text; without the key it is sent whole as before. Refs #13148, #13166.
Changed
- ACP tool-call updates now name the invoked tool. Refs #13114, #13130.
- On Linux, bubblewrap installed but unable to create a namespace (containers, hardened kernels) now gets its real cause and ways out, not "install it". Refs #13117, #13138, #13146.
- Compaction now refuses up front when the protected messages and recent tail already reach the trigger, naming what holds the size, instead of paying for a summary that cannot fit. Refs #13148.
Fixed
- A recalled memory fact edited or deleted outside the session is re-read before the next recall (only the last hits are checked, no full scan). Refs #12948 fixed in #13147.
- Unreadable memory directories now report errors, keeping revision lists, restores, and recovery from treating permission or storage failures as missing data. Refs #12950 fixed in #13016 by @SivanCola.
- On Linux, a launch folder nobody picked and nothing was said in is no longer listed as a project, so deleting it does not bring it back on restart. Refs #13107 fixed in #13127, #13127.
- A requested file that does not exist is now said so in the side panel instead of opening a blank preview page. Refs #13125, #13133.
- With a wallpaper set, the sidebar footer no longer paints a whiter plate; the picture continues to the bottom. Refs #13129, #13131.
- On a phone browser too old for X25519 in WebCrypto, remote control now falls back to an audited software curve, loaded only then (about 24 KB), instead of asking for a newer browser. Refs #13140.
- When an older session cannot be opened after a restart, the error now says why: the file is gone, its folder is gone, or the system could not read the path (with its reason). Refs #13152, #13159.
- Narrow windows no longer overlap or squeeze: the tab bar wraps, settings labels keep their width, segmented controls stay in the sheet, and a few colours reach AA. Refs #13169.
- Narrow windows: activity step rows keep their duration and arrow, the meter rail's subagent chip keeps its count when it cannot fit, and config error paths wrap. Refs #13154, #13172.
- Fixed two contrast shortfalls: the intro "press any key to skip" hint and the +/− counts in the changed-files pill (both themes). Found by the audit at f8c262d.
Contributors
Thanks to this release's contributors: @Guan0923, @SivanCola
What's Changed
- test(openwith): skip fakes of a POSIX disk on a Windows host by @esengine in #13124
- test(plugin): give the writable-roots host-context tests absolute paths on Windows by @xxoingr in #13121
- test(session): let a released save lock be waited for under load by @xxoingr in #13122
- test(plugin): bound the mid-browser OAuth removal by the hang budget by @xxoingr in #13123
- fix(serve): do not list a launch folder nobody picked and nothing was said in by @esengine in #13127
- feat(acp): name the invoked tool on tool_call updates by @esengine in #13130
- fix(studio): the sidebar footer takes the rail's tint over a wallpaper instead of a plate of its own by @esengine in #13131
- fix(memory): report unreadable store directories / 修复记忆目录读取错误被忽略 by @SivanCola in #13016
- fix(studio): a requested file that is not there is said so, not opened as a blank preview by @esengine in #13133
- feat(session): a read-only side question beside the main conversation by @esengine in #13128
- feat(skill): accept space-separated allowed-tools through one shared splitter by @esengine in #13135
- perf(boot): read the user config once for the startup migrations and leave an untouched config unlocked by @esengine in #13136
- feat(studio): opt-in hover Archive and Delete buttons on session rows by @esengine in #13137
- feat(sandbox): say why bubblewrap is unusable: missing, or installed but denied a namespace by @esengine in #13138
- fix(remote): say the browser is too old when it has no X25519 by @esengine in #13145
- feat(mcp): re-read a tool catalog when the server's ttlMs runs out by @esengine in #13139
- feat(studio): open a context class to the messages that made it heavy by @esengine in #13143
- feat(sandbox): a bwrap that cannot be started is not reported as a denied namespace by @esengine in #13146
- docs(guide): describe the terminal keys 2.x has by @xxoingr in #13144
- fix(memory): re-read the facts the last recall returned before recalling again by @esengine in #13147
- feat(compaction): say what holds a rejected candidate above the trigger by @esengine in #13149
- feat(skill): report front matter that departs from the Agent Skills spec by @esengine in #13150
- feat(compaction): refuse a fold that cannot fit before paying for its summary by @esengine in #13151
- fix(studio): lift the intro hint and the changed-files counts over AA contrast by @esengine in #13154
- feat(studio): add an independent naming model and per-role reasoning effort by @Guan0923 in #11851
- docs(release): fragments for the user-visible changes merged since 2.40.0 by @esengine in #13156
- feat(studio): point ideas and questions from the feedback dialog to Discussions by @esengine in #13155
- docs(release): fragment for the naming model and per-role effort by @esengine in #13158
- fix(serve): resume says whether the transcript is gone, outside, or unreadable and why by @esengine in #13159
- feat(remote): fall back to a software X25519 when the browser has none by @esengine in #13160
- feat(sandbox): bind user-allowed host device nodes into the Linux bash sandbox by @esengine in #13161
- feat(studio): keep a long paste as a file on request by @esengine in #13162
- docs(release): fragment for the keep-a-paste-as-a-file chip action by @esengine in #13163
- docs(guide): document the sandbox device allowlist by @esengine in #13164
- feat(tui): keep a folded paste as a file with Ctrl+G by @esengine in #13166
- docs(release): fragment for keeping a folded paste as a file in the terminal by @esengine in #13167
- test(boot): build SDK examples against the host go build cache by @esengine in #13168
- fix(sandbox): probe bubblewrap with the network flag the launch will use by @esengine in #13165
- fix(studio): narrow-width layout and contrast defects found by the sweep by @esengine in #13169
- test(studio): i18n and fault sweeps take a viewport and wait for the settings control by @esengine in #13170
- docs(release): fragment for the narrow-width layout fixes by @esengine in #13171
- fix(studio): narrow-width step rows, meter rail and config error block by @esengine in #13172
- test(session): bound the stream-failure recovery turns by the hang budget by @esengine in #13173
- docs(release): Studio 2.41.0 notes by @esengine in #13174
Full Changelog: studio-v2.40.0...studio-v2.41.0
macOS 已用 Developer ID 签名并公证,打开时不需要清除隔离属性。Windows 的窗口、内核与安装器都经 Certum 代码签名证书做了 Authenticode 签名。Linux Debian 系从 .deb 安装,Fedora、RHEL、openSUSE 等从 .rpm 安装(sudo dnf install ./ReasonixStudio-linux-amd64.rpm)。x86_64 用文件名带 amd64 的包,aarch64(统信 UOS、麒麟等)用带 arm64 的包。
三个平台都能自更新:Linux 的 .deb 走自己的包(.rpm 的自更新尚未提供,请手动下载新包),Windows 运行下一个安装器,macOS 替换自身 bundle。