Skip to content

v3.36.1 — 子代理委派全灭热修与工具调用协议加固

Choose a tag to compare

@huiliyi37 huiliyi37 released this 23 Oct 09:31
· 15 commits to main since this release

安装指南 · Installation

本段落随每个版本发布,嵌在 Release 正文顶部。完整安装与平台说明见 docs/guides/installation.md(含 Android Termux、源码构建、Shell 补全、自动更新)。

This section is published with every release. For the full installation & platform guide (Android Termux, building from source, shell completions, auto-update), see docs/guides/installation.md.

下载哪个文件 · Which file to download

按平台与 CPU 架构选(不确定架构?mac 点左上角苹果菜单「关于本机」;Windows 设置 → 系统 → 系统信息;Linux 终端 uname -m):

平台 文件 说明
macOS Apple Silicon(M1/M2/M3/M4) Tianshu_3.36.1_aarch64.dmg 多数现代 Mac
macOS Intel Tianshu_3.36.1_x64.dmg 2020 前的 Intel Mac
Windows 10(1809+)/ 11 x64 Tianshu_3.36.1_x64-setup.exe 安装向导,自带 WebView2 离线安装包
Linux x86_64 Tianshu_3.36.1_amd64.AppImage 免安装
Linux ARM64(树莓派 64 位等) Tianshu_3.36.1_aarch64.AppImage 免安装

CLI 用户也可 npm install -g tianshu-harness(需 Node.js ≥ 24),或用一键安装脚本。

macOS 安装步骤

  1. 下载 .dmg 并双击打开,把 Tianshu 拖入「应用程序」文件夹

  2. 首次打开:本包为 ad-hoc 签名、未经 Apple 公证,浏览器下载后首次双击会报「已损坏,无法打开」或「无法验证开发者」。拖入应用程序后,在终端执行一次(移除下载隔离属性):

    xattr -cr /Applications/Tianshu.app
  3. 之后正常双击启动。若仍被拦:右键 App → 「打开」→ 再点「打开」,或系统设置 → 隐私与安全性 → 底部点「仍要打开」

  4. 应用内自动更新不受 Gatekeeper 影响——只需首次手动放行

Windows 安装步骤

  1. 下载 Tianshu_3.36.1_x64-setup.exe,双击运行,按向导完成安装
  2. 界面依赖 WebView2 Runtime——3.5.3 起安装器已内嵌离线安装包,通常无需额外操作
  3. 窗口完全打不开时:开始菜单「修复 WebView2」,或从本 Release 底部 windows-repair 目录双击 repair-webview2.cmd,或手动安装 WebView2 离线安装包 后重启

Linux 安装步骤

  1. 按架构下载 AppImage,加执行权限后直接运行:

    chmod +x Tianshu_*_amd64.AppImage   # ARM 设备换成 _aarch64
    ./Tianshu_*_amd64.AppImage
  2. 依赖:glibc ≥ 2.35(Ubuntu 22.04+ / Debian 12+ 等主流发行版)与系统图形栈 libwebkit2gtk-4.1.so.0 + libgtk-3.so.0——多数桌面发行版已自带;精简/服务器版需按发行版安装 webkit2gtk 4.1,缺库时 ldd Tianshu_*.AppImage 自查

  3. 推荐 X11 会话(Wayland 尚未验证)

常见问题

  • mac 提示「已损坏」:见上方 macOS 步骤 2 的 xattr 命令——这是 Gatekeeper 对未公证下载包的标准行为,不是包真坏了
  • Windows 装完提示 rivet 无法识别:新开一个终端(旧终端的 PATH 是装 Node 之前快照的)
  • Linux AppImage 双击无反应:先确认执行权限(chmod +x),再 ldd 查缺库
  • 自动更新:桌面端应用内自动更新(mac Gatekeeper 仅影响首次手动安装);已安装用户无需每版重下

v3.36.1 — 子代理委派全灭热修与工具调用协议加固

日期:2026-10-23
上一版本:v3.36.0

本版说明

本版是一次热修发布。v3.35.0 与 v3.36.0 中,所有子代理调用(delegate_task / delegate_batch / galaxy)必然失败,报错 [static-subagent] top-level parse is lossy: parsed 13 sections covering 16834 of 16833 chars,重启无效。

根因:3.35.0 周期的一笔交付修复在编辑 <shared-worktree> 规则段时带走了两处段间空行(\n\n → \n),而子代理提示词裁剪器写死按 \n\n 重组并做逐字节无损断言——断言 fail-closed 抛错,每个 worker 派生都要过它,于是委派链路全灭。缺陷打包在运行时产物里,只能随新版本修复。

内容清单

  • 子代理解析器修复(主打):

    • parsePrompt 改为按原文记录每个段的真实分隔符(separatorBefore),不再假设统一 \n\n;新增「单换行顶层边界」回归用例,断言失败即红的金哈希守卫同步对齐。
    • 影响面核实:v3.35.0 / v3.36.0 两个版本的全部委派入口 100% 失败;主会话对话不受影响。
  • 工具调用协议加固(同族事故链修复):

    • 主控提示词只点名本次实际提供的工具——此前默认 minimal 档没有 apply_patch 等 EXTENDED 工具,提示词却仍命令模型「改用 apply_patch」,模型照做即触发未声明工具名错误(ToolNameProtocolError(unknown)),整次响应作废。行级门控与子代理裁剪共用同一份门控表;工具目录齐全的会话提示词逐字节不变,前缀缓存不受影响。
    • 兼容部分 OpenAI 兼容网关的 functions.<工具名> 命名空间包装,归一到已声明工具名;未声明的 functions.* 仍按 unknown 拒绝。
    • ToolNameProtocolError 从通用 client_error 拆出为独立的 tool_protocol 错误类:文案明示「本次工具未执行」,恢复指引按 TUI / 桌面端分流(桌面端不再被指向不存在的斜杠命令)。
  • 续跑与锁稳定:

    • 续跑 rebase 收严:缺 wireTransformVersion 的 legacy 证明不再允许静默替换 transport 基线,须走显式修复事务(issue #500 不变量)。
    • 睡眠唤醒 / 主机名变更后的 stale 锁属主恢复,消除僵尸误判与丢锁误判。
    • 交付候选证据跨重试保持稳定。
  • TUI:收编公开仓 PR #531 会话命令工作流(/goal 等会话命令族,感谢社区贡献)。

  • 构建修复:Linux 容器构建锁目录父级先自建(干净检出不再直接失败);源码拷贝 tar 排除 xattr 与根 node_modules。

升级注意

  • 从 v3.36.0 直接自动更新即可,无需迁移。
  • 3.35.0 / 3.36.0 的委派失败为运行时缺陷,升级后立即恢复,无需任何配置变更;升级前因该缺陷中断的会话可正常续用。

已知限制

  • 本版不含 Node 运行时变更,安全闸门要求与 v3.36.0 相同(Node 24.x ≥ 24.22.1 或 26.x ≥ 26.12.1)。