命令行 5 分钟跑通
tansr 是面向开发者的智能体命令行:同一个内核以交互式终端(TUI)、无头脚本(headless)、常驻服务(serve)、编辑器代理(acp)和 MCP 工具服务(mcp serve)五种形态对外提供。这一篇只走最短路径:装好、登录、聊一句、看一眼事件流。现行版本 0.10.3(npm @tansr/cli,2026-10-10 发布;0.10.2 / 0.10.3 只内联新版 @tansr/serve,命令、旗标与 ACP 面与 0.10.1 相同)。
- Node.js ≥ 22.19(npm 包形态)。单文件可执行版(SEA,自带 Node 运行时)目前只有 Linux x64 / arm64 两档,见下文。
- Windows / macOS / Linux 都支持。Windows 下建议用 Windows Terminal;传统 conhost 会自动切到 ASCII 字形档,功能不受影响。
npm i -g @tansr/clitansr --version # 0.10.3包名是 @tansr/cli,命令名是 tansr。升级同样走 npm i -g @tansr/cli@latest。0.10.1 起首次启动会在用户缓存目录写入约 2 MB 的 Node 编译缓存(之后同版本启动更快;TANSR_COMPILE_CACHE=0 关闭,见设置与 doctor)。
单文件形态(SEA):Linux 两档已上架。 官方分发点 https://bash.tansr.com 的 stable 通道自 2026-10-05 起提供 tansr-sea-linux-x64 与 tansr-sea-linux-arm64(glibc ≥ 2.28),当前为 0.10.3(2026-10-10,与 npm 包同源);Windows 版因代码签名证书未到位暂不上架,macOS 版候 Apple 开发者证书与公证,musl / alpine 不在 SEA 承诺内——这些平台请走 npm 包。安装走「下载 → 校验 → 落位」三步脚本,先下载审阅再执行:
curl -fsSLO https://bash.tansr.com/install.shsh install.sh # 可选参数 stable|beta;缺省落位 ~/.local/bin/tansr脚本按通道的 SHA256SUMS 比对实测哈希,不匹配即删档拒装;TANSR_INSTALL_DIR / TANSR_CHANNEL 可覆写。SEA 装机后 tansr update(加 --install 才安装)缺省读分发点的 release/{channel}/sea/latest.signed.json 签名封套,用内置公钥(release-signing-v1)验签后再比对版本;npm 装机的 tansr update 查的是 npm registry,不走这条通道。
凭据:用个人访问令牌登录
Section titled “凭据:用个人访问令牌登录”命令行走平台模式:登录后模型清单与价目由平台下发,你不需要手写任何 provider 配置。
- 在控制台创建一个个人访问令牌(PAT)。
- 运行初始化向导,按提示粘贴 PAT(掩码输入,不回显):
tansr init向导会验证身份、为本机派生一枚应用凭据、把凭据写进操作系统密钥库(不可用时降级为权限 0600 的文件并明确提示),最后展示摘要卡:账号指纹、余额、近期用量、可用模型数、派生键有效期。整个过程零模型调用,可以重复执行。
脚本或 CI 里免交互:
TANSR_PAT=<PAT> tansr init注意 tansr init --pat <PAT> 也能直接给值,但会留在 shell 历史里,不推荐。
退出登录用 tansr logout:清除本机凭据并尽力停用本机派生键;你的 PAT 本身不会被吊销(其他设备可能还在用)。
直接运行 tansr 进入交互式终端:
tansr开场会打印欢迎横幅和「基本配置摘要」(登录身份、门户地址、当前模型、上下文方案与余额)。在输入区打字回车即可对话;@ 引用工作区文件,/ 呼出斜杠命令。几个第一天就会用到的命令:
| 命令 | 作用 |
|---|---|
/help |
列出全部命令 |
/status |
版本 / 语言 / 会话 / 模型 |
/model |
呼出模型选择器,或 /model <别名> 直接切换 |
/cost /usage |
本会话成本与 token 用量 |
/doctor |
装配态自检 |
/quit |
退出 |
Esc 中断当前轮,Ctrl+T 进入全屏转录视图,Ctrl+C 同为中断。
无头模式下一切都是事件。给 -p 一句 prompt 并加 --json,你会得到一行一个 JSON 的 NDJSON 事件流,流末尾恒有一条 type: "result" 汇总:
tansr -p "用一句话介绍这个目录" --json{"type":"result","reason":"completed","exitCode":0,"usage":{"inputTokens":1200,"outputTokens":300}}事件包络字段是 type / sessionId / seq / ts / v / source;主要事件族有 session.*、turn.*、msg.*、tool.*、agent.*、hook.*、cost.*、mcp.*、plan.*。退出码语义:0 成功、1 模型或内部错误、2 中断、3 触顶(轮数 / 预算)、4 prompt 过长、5 用法错误。
用 Node 消费这条流只需几行:
import { createInterface } from 'node:readline';import { spawn } from 'node:child_process';
const child = spawn('tansr', ['-p', '总结本仓库', '--json'], { stdio: ['ignore', 'pipe', 'inherit'] });for await (const line of createInterface({ input: child.stdout })) { const ev = JSON.parse(line); if (ev.type === 'msg.text.delta') process.stdout.write(ev.text); if (ev.type === 'result') console.log('\n退出码:', ev.exitCode, '原因:', ev.reason);}无头模式没有询问通道:权限判定落到「询问」时一律降级为拒绝(fail-closed)。需要放权用 --allowedTools "Shell(git *),Read" 这类会话级规则,或 --permission-mode 指定初始模式。
| 现象 | 处置 |
|---|---|
| 「TUI 需要交互式终端(TTY)」 | 你在管道里启动了 tansr;非交互场景用 -p |
| 未初始化直接启动 | 会进入空态引导卡,页内输入 /init 即可登录;无人值守形态则以退出码 5 退出并提示 tansr init |
| 余额为零 | 摘要卡会警示但不阻断;平台模型调用会被服务端计费闸拒绝,本地功能不受影响 |
| 想完全不用平台 | 设 TANSR_ESCAPE_LOCAL=1,并按用户手册在 .tansr/settings.json 配本地 provider |
- 设置与 doctor:五层配置、常用环境变量、
tansr doctor各段怎么读。 - 命令与旗标参考:全部子命令与旗标。
- 想让别人也能用你的智能体?看会话服务 5 分钟跑通。命令行形态
tansr serve --v2自 0.10.0 起同时装配统一调用面/api(新集成走这里),/v1面在--v2部署缺省关闭、过渡旗标--legacy-v1自 0.10.1 起已标废弃;0.10.2 起可用环境变量TANSR_SERVE_LEGACY_PREFIX(缺省readwrite,0.10.3 未变)控制旧/v2、/v3/*前缀的退役窗口,详见部署与鉴权。
本文是否有帮助?
感谢反馈,我们会持续改进这篇文章。