Repository navigation
安装指南 · 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.34.1_aarch64.dmg |
多数现代 Mac |
| macOS Intel | Tianshu_3.34.1_x64.dmg |
2020 前的 Intel Mac |
| Windows 10(1809+)/ 11 x64 | Tianshu_3.34.1_x64-setup.exe |
安装向导,自带 WebView2 离线安装包 |
| Linux x86_64 | Tianshu_3.34.1_amd64.AppImage |
免安装 |
| Linux ARM64(树莓派 64 位等) | Tianshu_3.34.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.34.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.34.1 — Skill Python 运行时与环境修复
日期:2026-10-20
上一版本:v3.34.0(稳定通道)
本版说明
本版主轴是 Skill Python 运行时(issue #523):目录型技能可用 runtime.yaml 声明 Python 解释器要求、pip 依赖与命名脚本入口,经审批后在隔离 venv 环境中安装与运行——CLI/TUI 与桌面端共用同一套内核能力。另修复桌面自定义存储路径下 CLI 数据根漂移(#525)、GitHub 镜像改写三重故障(#524),并落地对话式技能创建与工具命令区降噪。
bump 后追加合入一批稳定性与数据安全修复:Windows 桌面后台恢复与进程终止有界化、会话库单写者保护(防双写/防误接管)、token 账本上报放大修复与客户端设备专用凭证(PR #31)、桌面「需处理」提醒可操作化(PR #35),以及看图片设置保存、计划审批卡重交(#526)等缺陷修复;外部 PR #31–#35 全部处置完毕。
内容清单
- 技能 Python 运行时(#523,本版主打):
- 完整闭环:技能包根声明
runtime.yaml(解释器版本区间 / requirements / 命名入口)→ doctor 环境诊断 → prepare 预览并审批安装 → run 参数化执行 → 输出与日志回看。声明变更即版本变更;resume 与 /cd 后旧会话执行版本不变。 - 环境隔离与安装策略:环境按工作区 + 技能身份 + 包版本 + 解释器 + 平台隔离存放,原子发布就绪状态(中断不留假就绪),解释器漂移报「需重建」不自动替换。wheel 默认安装;缺 wheel 时报出具体依赖,源码构建须单独批准且不沿用到新版本。
- requirements 白名单审核:允许版本约束 / extras / 环境标记 / 哈希与包内
-r/-c引用;拒绝 editable、本地路径、VCS、直接 URL 与包内 index 源选项(带行号与替代写法)。包源只来自mirrors.pypi配置。 - 执行与权限:无 shell 参数化执行(
$(...)等载荷按字面传递),支持标准输入、超时与取消(进程树终止);剥离宿主PYTHONPATH/VIRTUAL_ENV等变量;prepare/run 恒审批,plan-mode 仅放行 doctor,deny 规则恒赢。 - 入口矩阵:
skill_runtime工具(模型调用)、rivet skills doctor/prepare/run(真实退出码透传)、桌面技能详情「运行环境」面板(检查/准备/源码构建准备/删除环境,断线可恢复查询);设置 → 环境新增「Python 解释器路径」。
- 完整闭环:技能包根声明
- 桌面端:
- 对话式技能创建与草稿审阅发布:专属创建窗口与空闲创建窗口、持久化一次性输入、带版本编辑的审阅卡与发布、窗口失败恢复与权威刷新。
- 工具命令区降噪:进行中的工作组默认折叠为一行(正在 X · 目标 · 时长),展开后在固定高度内滚动浏览并吸底——长任务不再把正文顶出屏幕。
- 源码查看器顶部乱码带修复:WKWebView 合成层重影兜底。
- 环境修复:
- CLI 数据根与桌面端同源(#525):
rivetHome读取桌面端「设置 → 存储」写入的 launcher.json(优先级:RIVET_HOME > launcher.json > 平台默认)。此前手动跑 CLI 落到平台默认空目录,/logs输出全部 exists=false。 - GitHub 镜像改写三重故障(#524):删除对 bash 命令的无差别 URL 文本替换(曾改写 echo 回显、把死镜像持久化进
.git/config、劫持 push),改用 git 原生insteadOf机制——clone/fetch 走镜像、push 走原站、仓库配置永存原始地址、开关与仓库持久状态解耦。镜像表剔除实测不可用项(kkgithub 证书失效、fastgit 关站),检出存量污染时输出精确的git remote set-url还原命令。 - /repair-prefix 纳入命令守卫(#519):补齐帮助文案与两阶段说明(预览 →
--confirm执行);错误恢复指引按入口分流——桌面端不再收到无法执行的斜杠命令,改指「设置 → 检查运行环境」。 - 续跑链路:wire 归一化与显式前缀恢复稳定化(#500);收编 PR #518(同模型恢复与无损转录:前缀 400/422 拒绝允许同模型压缩重试一次、历史无损落盘),PR #522 回归测试收编(#521)。
- CLI 数据根与桌面端同源(#525):
- 工具输出反馈:
- grep 截断标记结构化(
[truncated: showing N matches],ripgrep 与 native fallback 统一);run_tests 截断处标注完整日志路径——模型知道去哪取回被省略的内容。
- grep 截断标记结构化(
- 技能生态:收编 PR #517——技能草稿契约统一与受限创建会话。
- 发布工程:AtomGit 并入正常发版顺序,删除资格验证机制(源资格认定已全自动化:匿名全量下载字节级校验 + Range 可寻址)。
10-20 增补(版本号 bump 后合入)
- Windows 桌面后台恢复与数据安全(重点批次):
- 恢复入口:补登
runtime_restart/runtime_storage_status的 Tauri ACL(此前打包版「重启本地服务」必然被 ACL 拒绝);「立即重试」按 supervisor 状态分流(failed/circuit_open 走runtime_retry,ready/degraded 仅重连,starting/restarting/stopping 拒重复提交),重试幂等单周期;终态失败暂停审批连接重试,新实例 ready 后恢复,查询失败不再被误作审批拒绝;新错误码process-stop-failed/data-dir-lock-lost配具体指引,横幅区分存活占用者/身份无法核验/存储权限失败/托管后台终止失败四类场景。 - 进程终止有界化:统一 10 秒预算终止流程(优雅 ≤3s → Job Object/句柄强杀 ≤3s → taskkill 降级吃剩余预算且到期终止辅助命令),消除终止路径无界等待;终止等待不再持有共享 child 锁并以实例代次防互相覆盖;taskkill 降级前复查进程创建时间,PID 复用不杀无关进程;旧进程退出未确认则停止自动替换并发布
process-stop-failed;Windows 启动改挂起创建→绑 Job→恢复,消除绑定前窗口。 - 会话库单写者:取消「活进程心跳超时即可接管」——接管仅限同主机确认进程不存在或 PID 创建时间与锁记录不匹配;reclaim 前重读完整身份(PID/主机/启动时间/owner),身份变化放弃回收;Windows 进程创建时间探测异步化(2 秒上限计入 5 秒 acquire 窗口);丢锁即撤销写入资格(写请求 503、健康翻
data-dir-lock-lost、停调度与活动会话、全部持久化写路径提交前查闸门)、CLI 立即非零退出且不执行会重刷会话库的收尾。 - 诊断:RuntimeStatus 增加占用者摘要/失败阶段/存储保护详情/最近终止结果/Job 降级字段(旧字段兼容);诊断包升级 schema 2(锁判定依据、存储保护阶段、Job 降级、进程终止时间线),脱敏与白名单不变;新增
runtime-recovery-gates发版门禁 workflow 与 Windows 实机验收清单(desktop/docs/windows-runtime-recovery-acceptance.md)。
- 恢复入口:补登
- token 账本与上传凭证(PR #31):修复上报放大——完整 2000 日桶 + 3000 小时桶合并为每页 ≤4 条批量写,派生累计在原子事务内维护;登录自动取得账户/设备/会话限定的上传凭证(加密持久化、最长 1 小时、按会话续期、退出尽力撤销),管理/Pro 权限不进客户端、论坛登录不能换取此凭证、自定义上传地址收不到账号 JWT;服务端账号级 120 秒冷却与凭证准入限额(已上线);429/Retry-After 与指数退避保留全部本地数据与未确认分页,自动上传仍显式 opt-in。fulfillment-server 自动支付在源头暂停(fail-closed,仅显式恢复)。
- 桌面「需处理」提醒可操作化(PR #35):侧栏「需处理」行新增「… → 标记已处理」,行徽标/分组计数/筛选同步更新,真正待审批只能查看并实际处理;提醒按 run 身份绑定(重命名/普通刷新不复活,新失败重新提醒),历史无运行编号标记幂等迁移;自动已见要求前台会话页且无设置/新会话/连接遮挡;冻结列表随操作即时刷新并修复焦点残留锁。
- 缺陷修复:
- 看图片/生图设置保存:多 key provider 的模型存在性校验改查契约并集(keys 池是事实源)——后加进 key 池的模型(如 minimax-m3.1-flash)不再被误判「没有模型」;保存失败不再静默(具体错误提示 + 保留未保存标记)。
- 计划审批卡(#526):驳回 → 修订重交后卡片自动回到待审批态——按提交代次隔离卡片/草稿/共享动作态,同 slug 重交强制重挂载,不再有驳回残留态或已决卡死。
- 技能运行时授权与生命周期缺口收尾(#523):requirements 审核、运行契约与进程执行的权限边界补齐。
- 锁恢复与重启回归缺口:持久化异步撤销、store-lock 竞态回归用例、恢复动作收口。
- 诊断来源报告:/logs 的 launcher 数据根来源(默认/自定义/便携)报告准确化(#525 后续)。
- 外部 PR 收编:
- PR #32:worker 身份与首次历史滚动——provider 注册表唯一身份贯穿 bootstrap/headless/worker 重建与凭证域,拒绝歧义凭证来源,绑定不可用归类终态绑定失败;手势冷却期测量静态历史行并先捕阅读锚点。
- PR #33:预检封印与旧转录恢复——修复后的 source seal 只在真实执行快照上发布,全部规范预检修复(含仅重排)写回;旧封印仅经确定性源重放且 wire/执行绑定完整匹配才恢复;转录投影修复前后校验。
- PR #34:Windows Job 启动器宽字符化与打包链——job-launch 改 UTF-16(修非 ASCII 路径参数引用,溢出 fail-closed),git 子进程经 Job 启动器「生于 Job」、清理按归属分档诚实上报;桌面打包从受控 C 源构建 launcher、架构校验、缺失拒绝出 Windows 包。
- PR #31 / #35 见上两条;PR #34 的交付异步化主体因与本仓 61ad99a89 重复未采纳(说明已在 PR 内留言)。
升级注意
- 从 3.34.0 直接自动更新即可,无需迁移。
- 技能 Python 运行时首版仅支持 Python(不打包解释器、不支持 Conda、不自动安装操作系统依赖);无 runtime.yaml 声明的旧技能行为完全不变。
- 曾配置 kkgithub / fastgit 镜像的用户:配置项保留兼容但解析为直连,建议改用 ghproxy 或 gitcode。
- 服务端配套:token 上传凭证与账号级限额要求 token-server 侧已上线版本(2026-10-17 起已生效);旧客户端不受影响,仅不享受新凭证链路与冷却保护。自动支付当前在履约源头暂停,恢复时间以公告为准。
- Windows 用户:本版包含后台恢复与进程终止的重点修复;原生终止场景按
desktop/docs/windows-runtime-recovery-acceptance.md验收。
发布节奏
- 候选 catalog 只纳入通过真机验收的平台(沿用 3.32.1 以来的纪律);darwin-x86_64 与 linux-aarch64 安装包随 Release 页手动下载,不参与自动更新灰度。