给编程 agent 补上交付证据与验证闭环(天枢 Harness)
天枢 Tianshu Harness 是 TypeScript 写的编程 agent 运行时,终端 TUI 与桌面 GUI 共用同一内核,核心是在模型和真实动作之间加一层认知执行环境,让「任务完成」必须带运行时证据。这篇讲清它的安装条件、最短跑通路径、结果在哪里看,以及平台与签名上的已知边界,帮你判断值不值得换。
在真实的工程会话里,同一套模型权重会表现出能力下限的滑落。天枢的文档把它归类为经过指令与偏好对齐的 Transformer Agent 呈现出的趋同运行时退化,并和单个具体 bug 区分开:被质疑就投降、过度服从字面指令、局部信息压过全局目标、长上下文被早期结论支配、反复调用同类工具却没有真实推进。项目要解决的正是最后这类收尾问题,模型说「应该修好了」不算完成。
天枢 Tianshu Harness 是一个 TypeScript 编写的编程 agent 运行时,终端 TUI 与桌面 GUI 共用同一个内核,输入自然语言任务,输出带运行时证据的交付报告与拦截台账。
做法是在模型与真实世界之间加一层认知执行环境(CVM),把目标、状态、证据、资源、权限与终止条件从对话历史里外部化,交给运行时持续管理。CVM 有 75 个运行时 hook 横跨 5 大阶段,在模型输出和真实动作之间做可观测、可纠偏的一层。上下文侧用冻结前缀加增量 appendix 与边界压缩,官方称各家支持前缀缓存的模型在长会话里稳态命中率在 95–99%,对 DeepSeek V4 另有针对性优化。模型清单覆盖 DeepSeek、GLM、Claude、Codex、Grok、MiniMax、MiMo 等。
装它需要什么
- 桌面端不要求先装 Node,从 GitHub Releases 下载安装包即可。macOS 要 11 及以上,Apple Silicon 与 Intel 各一包;Windows 要 10 1809 及以上、建议 22H2,或 Windows 11,界面依赖 WebView2 Runtime(建议 120 及以上);Linux 需要 glibc 2.35 及以上,以及
libwebkit2gtk-4.1和libgtk-3,官方推荐 X11 会话。 - 终端 CLI 要求 Node.js ≥ 24。macOS / Linux 用
bash <(curl -fsSL https://raw.githubusercontent.com/huiliyi37/Tianshu-harness/main/scripts/install-tui.sh),Windows 用 PowerShell 版安装脚本,或者直接npm install -g tianshu-harness。 - 从旧包
tianshu-tui迁移时需要先卸再装:npm uninstall -g tianshu-tui && npm install -g tianshu-harness。旧包占着rivet命令链接,直接装会报EEXIST。 - 模型侧要备一个服务商的 API Key,首次运行在
/connect向导里粘贴。
跑起来
- 按上面的方式装好桌面端或 CLI。
- 终端执行
tianshu,看到〉提示符即就绪;首次运行会自动打开/connect向导,选服务商并粘贴 API Key。 - 先给一个只读任务认项目:
阅读这个项目,告诉我它的结构、入口在哪、以及一处最值得改进的地方。 - 确认读得准,再给多步任务:
修复这个项目里第一个失败的测试,并说明根因。它会自己 grep、读文件、改代码、跑测试。 - 要接脚本或 CI,走无界面模式:
tianshu -p "解释 src/agent/loop.ts",或tianshu --stream-json -p "重构这个模块"输出 NDJSON 事件流,也可以用tianshu --goal "修复所有类型错误" --budget 50。
默认权限档是「自动」:低风险动作直接执行,高风险动作会停下来问。CLI 主命令是 tianshu,rivet 作为兼容别名保留,指向同一入口,数据目录仍是 ~/.rivet。
输出是什么
收尾时运行时会调用 deliver_task,输出一块交付报告:交付门状态(GREEN / YELLOW / RED)、本次改动的文件、跑过的验证、逐条完成度审计。没有证据的收尾会被门禁拦下,这是判断本次会话靠不靠谱的第一处。
输入 /cockpit 打开驾驶舱,也可以从 Ctrl+P 命令面板进。面板分别是 /cockpit verify(已验证 / 未验证 / 失败 / 受阻,以及跑过哪些命令、影响面多大)、/cockpit advisory(运行时提醒的累计渲染、采纳、忽略与效果增益)、/cockpit model(缓存命中率、输入输出 tokens、本轮成本)、/cockpit safety(风险等级与空转检测)。不带参数是总览,/cockpit off 关闭。
运行时的每次拦截逐条写进会话目录里的 sensorium.jsonl,用 tianshu logs 可以列出数据根与各日志路径。台账默认只写轻量行,要看全量拦截记录,启动前设 RIVET_DEBUG_TELEMETRY=1。
先说它做不到什么
- macOS 安装包目前是 ad-hoc 签名,没有 Apple 公证,从浏览器下载后被 Gatekeeper 拦截属于预期行为。拖进「应用程序」后要执行一次
xattr -cr /Applications/Tianshu.app,应用内自动更新不受这条影响。 - Windows 安装包未做 Authenticode 签名,SmartScreen 可能拦截,需要手动选择仍要运行。
- Linux 版本要 glibc ≥ 2.35,Wayland 尚未验证,官方推荐 X11 会话。
- Issue 区里的记录集中在平台适配上:Windows + Git Bash 下 bash 超时后后台孙进程未被
taskkill /T杀死、Windows 上全量npm test跑不干净(12340 条用例中 110 条失败)、Windows 桌面端调用子进程时黑框一闪而过。这几条的当前状态是已解决,说明跨平台细节曾经是薄弱面。
适合长期跑多步编码任务、在意「改完了有没有证据」的开发者,也适合已经在用 DeepSeek V4、想在终端和桌面之间共用一套内核的人。只偶尔问几句代码问题的轻度用户要掂量安装门槛;不接受未签名安装包的环境,则更适合直接从源码构建。仓库地址是 https://github.com/huiliyi37/Tianshu-harness,采用 Apache-2.0 许可证,主要语言是 TypeScript,当前 1074 Star、75 Fork、24 个开放 Issue。
焚评:这个项目的量化评分
本项目的选题来自 焚.com(一个按公开公式给 GitHub 项目打分的站)。焚评当前总分 9.5 分(满分 10)。下表是各维度的得分:
| 评分维度 | 得分 |
|---|---|
| 热度动量(权重 25%) | 10.0 / 10 |
| 开发活跃(权重 25%) | 9.2 / 10 |
| 社区响应(权重 15%) | 7.8 / 10 |
| 文档质量(权重 15%) | 10.0 / 10 |
| 发布节奏(权重 10%) | 10.0 / 10 |
| 风险控制(权重 10%) | 10.0 / 10 |
评分口径、权重与计算方式见焚.com 的评分方法页;数据随 GitHub 指标刷新,具体数值以焚.com 当前页面为准。本文正文为诀.com 独立撰写,评分数据由焚.com 授权引用。
内容核验说明
价值在于把「agent 说改完了」和「有证据的交付」之间的差别落成可操作路径:安装条件、无界面模式、/cockpit 面板与 sensorium.jsonl 台账都有具体入口,能照着跑。适合长期跑多步编码任务、在意收尾证据的开发者;只偶尔问几句代码的不必跨这道安装门槛。缓存命中率、hook 数量等说法来自作者公开披露,诀.com 未独立验证。
文中 75 个运行时 hook、95–99% 缓存命中率、支持的模型清单等数据来自原作者公开披露,诀.com 未独立验证;仓库指标(1074 Star、75 Fork、24 个开放 Issue)为抓取时快照。焚评得分取自焚.com 公开评分口径,随 GitHub 指标刷新,具体数值以该站当前页面为准。/cockpit 与 sensorium.jsonl 的实际拦截效果未经验证,需自行核对。用户反馈摘要
根据仓库 Issue 来看,反馈集中在跨平台适配与工具链细节:Windows + Git Bash 下超时后孙进程未被 taskkill 杀干净、Windows 全量 npm test 有 110 条因路径分隔符与换行符假设失败、桌面端探测子进程弹出黑框,这几条状态均为已解决。另有自定义 Provider 无法设置上下文与视觉能力、Ubuntu 下中文输入失效、中转 GPT 思考强度不生效、deliver_task 被误判 timeout 触发无效重试等报告。仅一条待解决 Issue 在讨论把度量闭环从 advisory 推广到全部干预形态,尚无结论。
基于该仓库公开 Issue 整理,只反映提交者报告的现象与诉求,不代表诀.com 立场,也不代表问题已被确认。项目来源与说明
开源项目:huiliyi37(huiliyi37)
本文由诀.com 编辑基于该项目的公开信息独立撰写,属原创解读,不是对项目文档的翻译或转载;文中提到的功能与参数以官方仓库为准,代码与文档版权归原作者所有。
查看项目仓库