Repository navigation
v3.36.1 — 子代理委派全灭热修与工具调用协议加固
安装指南 · 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 安装步骤
-
下载
.dmg并双击打开,把 Tianshu 拖入「应用程序」文件夹 -
首次打开:本包为 ad-hoc 签名、未经 Apple 公证,浏览器下载后首次双击会报「已损坏,无法打开」或「无法验证开发者」。拖入应用程序后,在终端执行一次(移除下载隔离属性):
xattr -cr /Applications/Tianshu.app
-
之后正常双击启动。若仍被拦:右键 App → 「打开」→ 再点「打开」,或系统设置 → 隐私与安全性 → 底部点「仍要打开」
-
应用内自动更新不受 Gatekeeper 影响——只需首次手动放行
Windows 安装步骤
- 下载
Tianshu_3.36.1_x64-setup.exe,双击运行,按向导完成安装 - 界面依赖 WebView2 Runtime——3.5.3 起安装器已内嵌离线安装包,通常无需额外操作
- 窗口完全打不开时:开始菜单「修复 WebView2」,或从本 Release 底部
windows-repair目录双击repair-webview2.cmd,或手动安装 WebView2 离线安装包 后重启
Linux 安装步骤
-
按架构下载 AppImage,加执行权限后直接运行:
chmod +x Tianshu_*_amd64.AppImage # ARM 设备换成 _aarch64 ./Tianshu_*_amd64.AppImage
-
依赖:glibc ≥ 2.35(Ubuntu 22.04+ / Debian 12+ 等主流发行版)与系统图形栈
libwebkit2gtk-4.1.so.0+libgtk-3.so.0——多数桌面发行版已自带;精简/服务器版需按发行版安装 webkit2gtk 4.1,缺库时ldd Tianshu_*.AppImage自查 -
推荐 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 / 桌面端分流(桌面端不再被指向不存在的斜杠命令)。
- 主控提示词只点名本次实际提供的工具——此前默认 minimal 档没有 apply_patch 等 EXTENDED 工具,提示词却仍命令模型「改用 apply_patch」,模型照做即触发未声明工具名错误(
-
续跑与锁稳定:
- 续跑 rebase 收严:缺
wireTransformVersion的 legacy 证明不再允许静默替换 transport 基线,须走显式修复事务(issue #500 不变量)。 - 睡眠唤醒 / 主机名变更后的 stale 锁属主恢复,消除僵尸误判与丢锁误判。
- 交付候选证据跨重试保持稳定。
- 续跑 rebase 收严:缺
-
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)。