SuperAPI AI 工具集

backscroll

backscroll 是一款本地终端输出记录与检索工具。传统 shell 历史只记住你输入过的命令,backscroll 则记住命令打印出来的内容。它把每条命令的完整输出,连同退出码、工作目录和耗时,记录进本地 SQLite 数据库,并支持全文检索,默认会对敏感信息做脱敏处理。数据全部留在本机,没有守护进程、没有云端、没有遥测。

访问官网

工具介绍

用途

backscroll 解决的是终端使用中的一个常见痛点:某条命令曾经打印出你需要的答案(一个 token、一段报错、一个 diff、一个 IP),但它已经消失了——scrollback 被清空、tmux 面板被关闭、笔记本重启过。Ctrl-R 能找到当初输入的命令,却没有任何工具能找到它输出的内容,backscroll 就是做这件事的。

正如项目介绍所说:你的 shell 历史记住的是你输入了什么,backscroll 记住的是它打印了什么。

主要能力

  • 逐命令记录:记录每条命令的完整输出,以及退出码、当前工作目录(cwd)和时间信息,写入本地 SQLite 数据库并支持全文检索。
  • 透明透传:backscroll run 会在 PTY 上启动你原本的 shell,每个字节原样透传,没有 UI、不修改提示符、无明显延迟。
  • 语义标记分割:通过一个小的 shell 集成片段发出 OSC 133 语义提示标记(iTerm2、kitty、WezTerm 和 VS Code 使用的同一标准),借此按命令切分输出流。
  • 完全本地:一切都在你的机器上,没有守护进程、没有云端、没有遥测,数据库是 ~/.local/share/backscroll/backscroll.db 一个文件。
  • 压缩与截断:输出经过 zstd 压缩;超大输出保留头部加尾部(上限可配置)。替代屏幕应用(vim、htop、less)会被排除,避免数据库被 TUI 垃圾填满。
  • 搜索:使用 SQLite FTS5 与 trigram,对命令和输出都做大小写不敏感的子串搜索。
  • 断开不丢:命令执行中关闭终端窗口不会丢失输出,在挂断时会先刷新命令已打印的内容再退出。
  • 默认脱敏:脱敏规则(内置加自定义)在导出时应用于每条命令和输出,忽略规则可整条跳过,且只有可搜索的纯文本会被发送。

使用方式

安装(Linux/macOS)提供快速安装脚本,会下载对应平台的二进制、校验 sha256、安装到 ~/.local/bin,无需 sudo。也可通过 Homebrew(macOS)、Debian/Ubuntu 与 Fedora 的 .deb/.rpm 包、Windows 的 Scoop、mise(使用 ubi 后端)或从 releases 获取静态二进制(linux/darwin/windows × amd64/arm64)。发布压缩包内含 man page。

安装脚本支持用 BACKSCROLL_VERSION=v0.11.1 固定版本,用 BACKSCROLL_INSTALL_DIR 修改目标目录。后续可用 backscroll upgrade 原地更新(校验和验证,仅在你运行时执行,且会拒绝安装由包管理器管理的版本)。

配置:把集成片段加入 shell rc(在录制会话之外是惰性的),例如 zsh 用 eval "$(backscroll init zsh)",bash 用 eval "$(backscroll init bash)",fish 用 backscroll init fish | source,PowerShell 加入 $PROFILE。

启动录制:运行 backscroll run 启动一个被录制的 shell。想让每个终端自动录制,可把 backscroll run 设为终端的 command/profile,或在 rc 末尾加上 [[ -z "$BACKSCROLL_ACTIVE" ]] && command -v backscroll > /dev/null && exec backscroll run。backscroll run 启动的是普通交互式 shell,如需 login-shell 语义用 backscroll run --login。

零配置录制:如果你的 shell 或终端本身已经发出命令标记,backscroll run 无需安装任何东西即可录制。fish 4 原生发出 OSC 133 标记;nushell 默认自带 shell 集成(OSC 133 标记、真实退出码、OSC 7 cwd);VS Code 的 shellIntegration 脚本、kitty 的集成、wezterm 的脚本也会被读取。对于只标记提示符/命令边界但不报告命令文本的发射器,backscroll 会从终端回显中重建命令文本。

导入既有历史:新数据库意味着空的选择器,可用导入功能从既有历史播种(backscroll doctor 会列出它能找到的内容及条目数)。支持导入 atuin(信息最丰富:时间戳、退出码、cwd、主机名)、nu(需要 nushell 的 SQLite 历史后端,纯文本默认也可,内容嗅探)、zsh(需设 EXTENDED_HISTORY 才有时间戳与时长)、bash(需设 HISTTIMEFORMAT 才有时间戳)、fish(总有时间戳)、pwsh(读取 PSReadLine 的 ConsoleHost_history.txt)。导入的条目不含有存储输出,但 list、search、pick、stats 从第一天起都可用。重复导入是增量的。

快捷键选择器:backscroll init <bash|zsh|fish|pwsh> 片段会带上 Ctrl-X Ctrl-P 绑定(需要 fzf)。它会在你已录制的一切内容上打开选择器——你已输入的内容会成为初始查询——并把选中的命令插回提示符,类似 Ctrl-R,但你是按命令打印的内容来挑选,而不只是按你输入的内容。在片段前设 BACKSCROLL_NO_BIND=1 可退出该绑定。

一次性命令:backscroll exec 包装单条命令——没有 shell、没有 PTY、无需配置——像其他命令一样存储其合并的 stdout+stderr、退出码、cwd 和耗时。它的行为像粘在你命令上的 tee:输出直接透传(--quiet 时静默记录),stdin 保持连接因此管道可用,Ctrl-C 正常传给子进程,退出码被镜像(包括信号死亡的 128+n),因此可放进 crontab、Makefile 和 CI 脚本而不改变其行为。录制出问题(数据库缺失、磁盘满)绝不会阻止或使命令失败,只会在 stderr 给出警告。

tmux / zellij / screen / SSH:backscroll 包装的是 shell,因此天然与多路复用器组合——关键决定它在 tmux 的哪一侧。推荐在每个面板内部使用(把 backscroll run 设为默认命令或加到 rc),每个面板成为独立录制会话,共享数据库,backscroll show -1 在 A 面板能调出 B 面板滚走的输出。不推荐在 tmux 外面运行 backscroll run 再进入 tmux,因为 tmux 重绘整个屏幕会丢失逐命令切分。tmux ≥ 3.2 + fzf 可绑定 prefix+B 打开弹出式模糊搜索(prefix+F 只看失败)。zellij 与 GNU screen 也有对应的键位片段。通过 SSH 时,backscroll 在 shell 运行的机器上录制,在远端主机安装并添加 rc 片段即可,想要合并历史就用 sync。

跨机同步:无需服务器、无需账号,每台机器各自追加自己的端到端加密日志(XChaCha20-Poly1305,共享密钥文件复制一次),追加式每机日志天然无冲突,任何你已在用的文件同步工具都可作为传输方式。backscroll sync status 显示各机器进度与密钥指纹。

AI 智能体(MCP):backscroll mcp 是一个内置的 Model Context Protocol 服务器(stdio、零依赖),让 AI 编程智能体可以从你的录制历史中回答"那条命令打印了什么",而不必猜测或重新运行昂贵或破坏性的操作。它提供 search_output 等能力(资料在此处截断)。

适用场景

  • 找回曾经打印过、但已经滚走的输出(token、报错、diff、IP)。
  • cron / CI / 构建等一次性命令的输出留痕,替代无人轮转的 >> /var/log/backup.log 2>&1,也能记录启动失败(如 exit 127 的 "command not found")。
  • 在多台机器(笔记本、台式机、你 SSH 登录的构建机)之间统一搜索命令输出。
  • 交给 AI 编程智能体查询历史命令输出。

限制

  • 替代屏幕应用(vim、htop、less)被排除,不记录。
  • 导入的既有历史条目不包含存储输出。
  • Windows 上,cmd.exe 没有可发出标记的集成,会话能正常运行但不会被切分。
  • 某些环境存在已知怪癖:nushell 在执行命令期间按 Ctrl-C 会记录 exit 1(因为 nu 本身如此上报);Ghostty 的 bash 退出状态目前因上游脚本 bug 始终为 0。
  • 在 tmux 外运行 backscroll run 再在其中运行 tmux 不可用,因为逐命令切分会丢失。
  • GNU screen 的绑定会遮蔽默认的 C-a B(pow_break)/ C-a F(fit),如使用需重新绑定。
  • 该项目由 AI 智能体 Soren Achebe 构建和维护,关于其信任与责任问题,项目有专门的置顶讨论,并明确欢迎愿意分担责任的人类共同维护者。

暂未提供的信息

关于具体定价、收费模式、性能指标、支持的命令数量上限等事实,资料中未提供。