github Darkatse/TauriTavern v2.4.0
v2.4.0 - 紧急更新

latest release: Canary
9 hours ago

TauriTavern 2.4.0 更新日志

紧急更新: 所有 Android 用户建议立即升级到这个版本,以防 RUSTSEC-2026-0381 的影响。其余平台理论上不受影响,但仍强烈建议升级。

Important security update: Android users should upgrade to this version as soon as possible to address RUSTSEC-2026-0381. Other platforms are not expected to be affected, but upgrading is still strongly recommended.


应用内 Agent 助手 (Beta)

tauritavern-2.4-assistant.mp4
  • 新增应用内 Agent 助手,可以帮助你完成 TauriTavern 内几乎所有操作,位于顶部 A 抽屉内。原来的高级格式化设置可以点击助手顶部的高级格式按钮打开。
    • 不需要助手的话,可以在扩展管理中禁用 In-App Assistant,恢复原来的抽屉。
  • 助手可以查看和操作 TauriTavern 界面:读取页面、点击和填写控件、截图、执行脚本、读取日志,可以帮你修改设置、排查问题。
    • Agent 可以进行模拟点击、拖拽、截图等操作,操作时顶部 A 图标会呼吸以显示运行状态。
    • 截图需要模型支持图片输入。
  • 内置了 5 个只读知识 Skill,涵盖使用指南、项目文档、扩展、界面结构和故障排查,助手可以直接回答 TauriTavern 的使用问题。
  • 在输入框中直接选择模型和推理强度。对话会自动保存,可以搜索、重命名和删除;关闭抽屉后任务也会继续运行。
  • 上下文快满时会自动压缩。输入框旁的用量环会显示当前上下文用量,也可以手动立即压缩。
  • 新增内置的 Agent 预设(默认 128k 上下文),新建的助手配置默认使用它,请按自己的模型进行调整。

原生鸿蒙支持 (Beta)

  • 新增鸿蒙(HarmonyOS NEXT)支持,感谢 @LeenHawk 的贡献!
    • Release 中提供未签名的 ARM64 HAP,需要使用自己的证书签名后安装。目前只在模拟器上验证过。
    • 签名安装可以使用 Auto-Installer(小白调试助手)。

Agent 与 Skills

  • 新增 workspace.shell 工具(运行工作区命令),提供类 Bash 环境,内置 jq、Python 子集和 JavaScript(js / node / deno),方便 RP Agent进行更高级的操作。
    • skill.list、skill.read、skill.search、skill.run_script 已合并进工作区。Skill 以只读文件的形式放在 skills/<名称>/ 下,Skill 列表会自动加入系统提示词。
    • JS 脚本为常规的命令行调用(js script.js arg1 arg2),感谢 @lovewormcn 的贡献!
    • 2.3.0 的 Skill 脚本需要迁移:从 process.argv 读取参数,显式调用入口函数,把结果打印到标准输出。请参考 迁移旧脚本。
    • 自己创建的 Agent 配置如果需要运行脚本,请手动启用 workspace.shell。
  • 工具结果现在可以包含图片:MCP 工具返回的图片会交给模型,需要预设和模型支持图片。
  • 扩展可以通过 api.agent.tools.register() 注册自己的 Agent 工具,详见 Agent API。
  • 取消了最大轮数和最大工具调用次数限制。Agent 会一直工作到完成,需要时请手动取消。
  • 修复了绑定「当前聊天预设」的子 Agent 没有聊天历史和世界书的问题。
  • Agent 配置可以单独覆盖预设的推理强度。
  • 注:在 2.3.0 中中途中断的 Agent 运行,升级后无法断点续连,请重新生成。

SillyTavern 1.19.0 同步与新模型

  • 上游基线升级到 SillyTavern 1.19.0:
    • 新增 {{getvarkey}} / {{setvarkey}} 等变量宏,以及表情相关的宏。
    • 世界书排序支持起始值、步长和顺序。重命名世界书时,也会同步更新用户设定和当前聊天的绑定。
    • 扩展可以通过 getContext().messageFormatter 接入消息格式化。
    • 快捷提示词编辑器增加了展开按钮,OpenRouter 支持 logprobs 等。
  • 支持 GPT-6 Sol / Luna、GPT-6.1 Sol、Claude Opus 5.5 / Sonnet 5.5 / Haiku 5.5、Gemini 4 Argon、Gemma 4、Grok 4.7 等新模型。

尊重用户设置

  • 移除了一批在发送前替用户拦截的本地校验。
    • Claude 的采样参数和预填充不再被本地报错拦截。模型不支持预填充时,预填充会改为用户消息发送。
    • JSON 结构化输出现在可用于 OpenAI Responses、DeepSeek 和 Claude Opus / Sonnet 5.5。
  • 非流式请求的超时从 10 分钟延长到 2 小时。
  • Gemini 返回空回复或被拦截时,会显示具体原因。

移动端与平台

  • 重构了移动端的原生布局:系统栏、刘海和键盘由应用处理,扩展/脚本不会再跑到状态栏中
    • iOS:去掉了键盘上方的工具栏,向下拖动即可收起键盘。
    • 主题和扩展作者请注意:--tt-ime-bottom 等键盘补偿变量已经移除,建议删除相关的键盘偏移或安全区补偿。
  • 状态栏和导航栏的图标会根据背景的壁纸或主题颜色自动切换深浅。新安装的 Android 默认不再沉浸式。
  • Android 支持长按图片保存,跨域图片也可以保存。感谢 @sun19970908 的贡献!
  • iOS 开启了 Increased Memory Limit,并适配了 iOS 27 SDK。
  • macOS 26 下应用图标不再显示灰色底板,并支持浅色、深色和着色外观。

无障碍 (Beta)

  • 全面改进了读屏和键盘操作:角色、用户设定、群组和聊天列表,API 连接与采样器参数,输入框和消息操作,现在都有正确的按钮语义与名称。
  • 可排序列表增加了上移和下移按钮,列表刷新后会保持焦点。

功能增强与修复

  • 修复了 2.3.0 中扩展的确认弹窗不出现、被直接当作「确定」执行的问题。
  • 启动失败时会显示错误对话框,可以复制错误信息并重新加载,不再卡在白屏。
  • 修复了聊天加载时变量没有初始化的问题,使用 {{setvar}} 的角色卡恢复正常。
  • 导入角色卡时会沿用卡片自带的世界书名称,重名时自动编号,相同的世界书会直接复用。删除角色时,只有当世界书没有其他用途时才会一并删除。
  • DOM 虚拟化现在可以与酒馆助手和小白X同时启用,只需由其中一个负责代码块渲染。感谢 @sun19970908 的贡献!
  • 聊天摘要索引改为流式处理,降低了大型数据下的内存峰值,修复了 Android 上的崩溃。感谢 @sun19970908 的贡献!
  • 修复了 Panel Runtime 下世界书抽屉丢失列表和编辑器状态的问题,感谢 @exynos967 的贡献!
  • 修复了保存为自定义来源时,API 连接面板启动后显示空白的问题,感谢 @RAMU324E 的贡献!
  • 修复了 Vertex AI 快速模式、OpenCode Go 端点和 OpenAI Responses 的 system 角色等问题。
  • 移除了不再受信任的 emSign 根证书(RUSTSEC-2026-0381 / RUSTSEC-2026-0383)。

开发

  • 升级到 Tauri v2.12.3。
  • 新增 Web Host,前端可以嵌入浏览器宿主运行,Release 会附带 Web 前端包。
  • 界面操作引擎 @tauritavern/app-use 已发布到 npm。
  • Tauri Pilot 支持 Android 和 iOS 模拟器的 debug 构建。

Release Notes

In-App Agent (Beta)

tauritavern-2.4-assistant-en.mp4
  • Added an in-app agent that can help with almost anything you can do in TauriTavern. It is located in the A drawer at the top of the screen. The previous Advanced Formatting settings are available from the Advanced formatting button at the top of the assistant.
    • If you don't need the assistant, disable In-App Assistant in the extension manager to restore the original drawer.
  • The assistant can view and operate the TauriTavern interface. It can read the page, click and fill in controls, take screenshots, run scripts, and read logs, so it can change settings or help troubleshoot problems for you.
    • The agent can simulate clicks, drags, screenshots, and other actions. While it is working, the A icon at the top pulses to show that it is running.
    • Screenshots require a model that supports image input.
  • Five read-only knowledge skills are built in, covering the user guide, project documentation, extensions, interface structure, and troubleshooting, so the assistant can answer questions about using TauriTavern directly.
  • Choose the model and reasoning effort directly in the input box. Conversations are saved automatically and can be searched, renamed, and deleted. Tasks keep running after the drawer is closed.
  • Context is compacted automatically when it is nearly full. The usage ring next to the input box shows current context usage, and you can also compact manually with Compact now.
  • Added a built-in Agent preset (128k context by default). New assistant configurations use it by default. Please adjust it to suit your model.

Native HarmonyOS Support (Beta)

  • Added support for HarmonyOS NEXT. Thanks to @LeenHawk for the contribution.
    • Releases include an unsigned ARM64 HAP, which must be signed with your own certificate before installation. So far it has only been verified on the emulator.
    • You can use Auto-Installer to sign and install the HAP.

Agents and Skills

  • Added the workspace.shell tool (Run workspace commands). It provides a Bash-like environment with jq, a Python subset, and JavaScript (js / node / deno), allowing RP agents to handle more advanced tasks.
    • skill.list, skill.read, skill.search, and skill.run_script have been merged into the workspace. Skills are available as read-only files under skills/<name>/, and the skill list is added to the system prompt automatically.
    • JS scripts are invoked like regular command-line programs (js script.js arg1 arg2). Thanks to @lovewormcn for the contribution.
    • Skill scripts written for 2.3.0 need to be migrated: read arguments from process.argv, call the entry function explicitly, and print results to standard output. See Migrating old scripts.
    • If a custom Agent configuration needs to run scripts, enable workspace.shell manually.
  • Tool results can now include images. Images returned by MCP tools are passed to the model when the preset and model support images.
  • Extensions can register their own Agent tools with api.agent.tools.register(). See the Agent API for details.
  • Removed the limits on maximum rounds and tool calls. Agents keep working until the task is complete; cancel manually if needed.
  • Fixed sub-agents bound to the current chat preset not receiving chat history or World Info.
  • Agent configurations can now override the preset's reasoning effort.
  • Note: Agent runs interrupted in 2.3.0 cannot be resumed after upgrading. Please regenerate them.

SillyTavern 1.19.0 Sync and New Models

  • Updated the upstream baseline to SillyTavern 1.19.0:
    • Added variable macros such as {{getvarkey}} / {{setvarkey}}, along with expression-related macros.
    • World Info sorting now supports a start value, step, and order. Renaming a lorebook also updates persona and current-chat links.
    • Extensions can hook into message formatting through getContext().messageFormatter.
    • Added expand buttons to the quick prompt editors, logprobs support for OpenRouter, and more.
  • Added support for new models, including GPT-6 Sol / Luna, GPT-6.1 Sol, Claude Opus 5.5 / Sonnet 5.5 / Haiku 5.5, Gemini 4 Argon, Gemma 4, and Grok 4.7.

Respecting User Settings

  • Removed a set of local checks that blocked requests on the user's behalf before they were sent.
    • Claude sampling parameters and prefill are no longer rejected locally. On models that do not support prefill, the prefill is sent as a user message instead.
    • JSON structured output now works with OpenAI Responses, DeepSeek, and Claude Opus / Sonnet 5.5.
  • Increased the non-streaming request timeout from 10 minutes to 2 hours.
  • When Gemini returns an empty or blocked response, the specific reason is now shown.

Mobile and Platforms

  • Reworked the native mobile layout. The app now handles system bars, notches, and the keyboard, so extensions and scripts no longer extend into the status bar.
    • iOS: Removed the toolbar above the keyboard. Drag down to dismiss the keyboard.
    • Theme and extension authors: keyboard compensation variables such as --tt-ime-bottom have been removed. We recommend removing any related keyboard offset or safe-area compensation.
  • Status bar and navigation bar icons now switch between light and dark automatically based on the wallpaper or theme color behind them. New Android installs no longer use immersive mode by default.
  • On Android, you can now long-press an image to save it, including cross-origin images. Thanks to @sun19970908 for the contribution.
  • Enabled the Increased Memory Limit on iOS and adopted the iOS 27 SDK.
  • On macOS 26, the app icon no longer appears on a gray background plate and supports light, dark, and tinted appearances.

Accessibility (Beta)

  • Improved screen reader and keyboard support throughout the app. Character, persona, group, and chat lists, API connection and sampler settings, the input box, and message actions now have proper button semantics and names.
  • Sortable lists now have Move up and Move down buttons, and focus is preserved when lists refresh.

Improvements and Fixes

  • Fixed an issue in 2.3.0 where extension confirmation dialogs did not appear and were treated as confirmed.
  • If startup fails, an error dialog now lets you copy the error details and reload, instead of leaving a blank screen.
  • Fixed variables not being initialized when a chat loads. Character cards that use {{setvar}} work correctly again.
  • Importing a character card now keeps the card's own lorebook name. If the name is already taken, a number is added, and an identical lorebook is reused. Deleting a character deletes its lorebook only if nothing else uses it.
  • DOM virtualization can now be enabled alongside both Tavern Helper and LittleWhiteBox, as long as only one of them renders code blocks. Thanks to @sun19970908 for the contribution.
  • The chat summary index is now processed as a stream, reducing peak memory usage with large libraries and fixing crashes on Android. Thanks to @sun19970908 for the contribution.
  • Fixed the World Info drawer losing its list and editor state when Panel Runtime is enabled. Thanks to @exynos967 for the contribution.
  • Fixed the API Connections panel appearing blank at startup when a custom source was saved. Thanks to @RAMU324E for the contribution.
  • Fixed issues with Vertex AI Express mode, the OpenCode Go endpoint, and the system role in OpenAI Responses.
  • Removed the distrusted emSign root certificate (RUSTSEC-2026-0381 / RUSTSEC-2026-0383).

Development

  • Updated to Tauri v2.12.3.
  • Added Web Host, which allows the frontend to run inside a browser host. Releases now include a web frontend package.
  • The UI automation engine @tauritavern/app-use is now published on npm.
  • Tauri Pilot now supports debug builds on Android and the iOS Simulator.

What's Changed

  • chore(deps): bump indexmap from 2.14.0 to 2.14.2 in /src-tauri by @dependabot[bot] in #270
  • chore(deps): bump uuid from 1.24.1 to 1.26.1 in /src-tauri by @dependabot[bot] in #269
  • chore(deps): bump flate2 from 1.1.9 to 1.1.10 in /src-tauri by @dependabot[bot] in #268
  • chore(deps): bump async-compression from 0.4.43 to 0.4.47 in /src-tauri by @dependabot[bot] in #267
  • chore(deps): bump rustls from 0.23.43 to 0.23.45 in /src-tauri by @dependabot[bot] in #273
  • chore(deps): bump yaml_serde from 0.10.6 to 0.10.7 in /src-tauri by @dependabot[bot] in #271
  • chore(deps): bump rcgen from 0.14.9 to 0.14.10 in /src-tauri by @dependabot[bot] in #272
  • chore(deps): bump reqwest from 0.13.4 to 0.13.5 in /src-tauri by @dependabot[bot] in #288
  • chore(deps): bump rand from 0.10.2 to 0.10.3 in /src-tauri by @dependabot[bot] in #287
  • chore(deps): bump crc32fast from 1.5.0 to 1.5.2 in /src-tauri by @dependabot[bot] in #289
  • fix(chat-surface): gate on code render switches instead of installed … by @sun19970908 in #286
  • feat(quick-js): js/node 脚本支持常规命令行传参调用 (node script.js arg1 arg2) by @lovewormcn in #280
  • fix(panel-runtime): 修复世界书抽屉停放期间列表与编辑器状态丢失 by @exynos967 in #301
  • fix(storage): stream chat summary index snapshots to bound peak memory by @sun19970908 in #305
  • chore(deps): bump redb from 4.2.0 to 4.3.0 in /src-tauri by @dependabot[bot] in #319
  • chore(deps): bump async-compression from 0.4.47 to 0.4.50 in /src-tauri by @dependabot[bot] in #321
  • Feat/android native image context menu by @sun19970908 in #309
  • feat: add experimental OpenHarmony HAP support by @LeenHawk in #300
  • fix(ohos): update shared runtime pins and preserve application metadata by @LeenHawk in #322
  • Feat/android cross origin image download by @sun19970908 in #324
  • ci: sync default-branch GitHub config from dev by @Darkatse in #344
  • chore(deps): bump tokio from 1.53.1 to 1.53.2 in /src-tauri by @dependabot[bot] in #345
  • chore(deps): bump headers from 0.4.1 to 0.4.2 in /src-tauri by @dependabot[bot] in #346
  • chore(deps): bump mdns-sd from 0.21.3 to 0.21.5 in /src-tauri by @dependabot[bot] in #347
  • fix(panel-runtime): normalize custom source variants at gate activation by @RAMU324E in #353
  • fix(ios): defer the first window snapshot publish out of the creation stack by @wynx1123 in #351
  • chore(deps): bump rmcp from 3.5.0 to 3.5.1 in /src-tauri by @dependabot[bot] in #366
  • chore(deps): bump sha2 from 0.11.0 to 0.11.1 in /src-tauri by @dependabot[bot] in #365
  • chore(deps): bump serde_json from 1.0.151 to 1.0.154 in /src-tauri by @dependabot[bot] in #364
  • bump version to v2.4.0 by @Darkatse in #387

New Contributors

Full Changelog: v2.3.0...v2.4.0

Don't miss a new TauriTavern release

NewReleases is sending notifications on new releases.