hntui(hntui)是一个设计简洁且优雅的终端用户界面工具,专门用来在命令行终端中浏览知名科技新闻站点黑客新闻(Hacker News),该站点被认为是优质科技资讯来源之一。获取此工具的方式很简单,只需在终端执行 curl -fsSL https://raw.githubusercontent.com/ahmd-sh/hntui/main/install.sh | sh 完成安装,接着键入 hntui 命令便可进入其交互界面。
正文
一个简洁优雅的终端 UI,用来浏览最佳科技新闻源之一。

安装命令:curl -fsSL https://raw.githubusercontent.com/ahmd-sh/hntui/main/install.sh | sh,然后运行 hntui。
功能
- 浏览全部六个 HN 信息流:Top、New、Best、Ask、Show、Jobs。
- 查看帖子评论。
- 保存帖子稍后阅读。
- 支持 Vim 键位和鼠标。
- 主题。
- 还有很酷的 Knight Rider 扫描动画加载条(◕ᴗ◕ )。
要求
任何支持真彩、鼠标和 UTF-8 的现代终端都可以。作者在 MacOS 的 Ghostty 中测试过。Linux/Windows 由 OpenTUI 支持但尚未尝试。预编译二进制无依赖。通过 npm 安装或改代码需要 Bun 1.2 以上。
安装
独立二进制(推荐)
curl -fsSL https://raw.githubusercontent.com/ahmd-sh/hntui/main/install.sh | sh 安装自包含二进制到 ~/.local/bin。也可从 releases 页直接下载对应平台二进制。提供 macOS(Apple Silicon)和 Linux(x64、arm64)二进制;Intel Mac 请用下面的 Bun 安装。
使用 Bun
bun add -g @ahmd-sh/hntui,或不安装只运行一次:bunx @ahmd-sh/hntui。
运行
hntui,按 q 或 Ctrl-C 退出。
更新
hntui update 检查最新发布,二进制安装会就地替换自己。Bun 安装需用 bun add -g @ahmd-sh/hntui 更新(hntui update 会提示)。有新版本时状态栏显示安静提示。hntui --version 打印版本。
快捷键
故事列表
| 键 | 动作 |
| --- | --- |
| j/↓, k/↑ | 移动光标 |
| gg, G | 跳到首/末 |
| Ctrl-D, Ctrl-U, PgDown, PgUp | 翻半页 |
| c, Enter | 打开帖子看评论 |
| h/←, l/→ | 上一个/下一个标签 |
| Tab, Shift-Tab | 循环切换标签 |
| 1–6 | 跳到指定分类 |
| S | 跳到已保存列表 |
| s | 保存/取消保存高亮帖 |
| o | 浏览器打开帖链接 |
| r | 刷新当前信息流 |
| t | 切换主题 |
| q, Ctrl-C | 退出 |
故事详情(评论)
| 键 | 动作 |
| --- | --- |
| j/↓, k/↑ | 移动评论光标 |
| gg, G | 跳首/末评论 |
| Ctrl-D, Ctrl-U, PgDown, PgUp | 翻半页 |
| Space | 折叠/展开子树 |
| Enter | 打开当前评论链接弹窗 |
| s | 保存/取消保存此帖 |
| o | 打开帖链接 |
| Esc, Backspace, h/← | 返回列表 |
| t | 切换主题 |
| q | 退出 |
链接弹窗
| 键 | 动作 |
| --- | --- |
| j, k, ↑, ↓ | 移动 |
| gg, G | 首/末链接 |
| o, Enter | 打开高亮链接 |
| Esc, Backspace | 关闭弹窗 |
右键菜单
| 键 | 动作 |
| --- | --- |
| j/↓, k/↑ | 移动 |
| Enter | 激活 |
| Esc, Backspace | 关闭 |
鼠标
键盘能做的鼠标基本也能:
- 点击标签切换信息流。
- 点击 Y 方块刷新当前流(或在故事内返回列表)。
- 点击故事行选中,再点开评论。
- 右键故事打开含保存、打开 URL、打开评论的菜单。
- 点击评论头部行折叠/展开子树。
- 双击评论正文打开链接弹窗。
- 点击详情头部故事 URL 在浏览器打开。
- 点击弹窗外关闭。
- 滚轮滚动列表和评论树。
选择复制文本
因应用捕获鼠标,终端正常拖选被拦截。常规选择:
- macOS(Terminal.app 等)按住 Option 拖选,再 Cmd-C。
- Linux(Kitty 等)按住 Shift 拖选,再 Ctrl-Shift-C。
主题
按 t 切换。暗色黑底橙点缀;亮色仿 news.ycombinator.com:白底、橙顶栏、米色行高亮、经典灰副标题。
保存的文章
任意故事按 s 保存,标题旁显星标,出现在标签栏右侧 Saved 标签。列表跨会话存于 ~/.config/hntui/saved.json(首次运行自动迁移旧配置)。再按 s 移除。S 从任意处跳转到 Saved 列表。
开发
运行 git clone https://github.com/ahmd-sh/hntui.git,cd hntui,bun install,bun dev(热重载)。数据来自公开 Hacker News Firebase API。
发布
推送 v* 标签触发两个工作流:
- release.yml 为 macOS/Linux 交叉编译独立二进制(bun build --compile),对 Linux 构建冒烟测试,附加到 GitHub release,即 install.sh 下载的。
- publish.yml 通过 OIDC 可信发布把 @ahmd-sh/hntui 发到 npm,带 SLSA 来源证明,若 npm 已有版本则跳过。
发布新版本:npm version patch(或 minor/major),git push --follow-tags。
致谢
- OpenTUI(Anomaly)提供原生 TUI 核心。
- opentui-spinner(Matt Simpson)的 Knight Rider 加载动画改编自其 MIT 示例。
- Effect 支撑数据层。
- Hacker News 提供内容和开放 API。
许可证
MIT,Copyright (c) 2026 Ahmed Shaikh。
评论
讨论气氛基本是"又惊又爱":多数人觉得在终端里刷 HN 很酷、也愿意试用,但一看到技术栈就绷不住,忍不住追问为什么要这么干。分歧主轴在于——这究竟是终端浏览器的雏形,还是把最重的工具链套在最轻的任务上的炫技。
认为这是用最重的锤子拧最小的螺丝
- 用 Zig 加 TypeScript 绑定、再配 React 组件来做 TUI,被反复点名为见过最离谱的组合;为了读 HN 引入这么多依赖、还得拖上 Node.js,性价比存疑;有人顺势建议换 Rust 生态里更对口的 ratatui,也有人拿帧率开玩笑。(较多人) > 用 Zig 配 TypeScript 绑定和 React 组件来写 TUI,是我见过最狂野、最不搭的技术选型。(@sho_hn)
功能还很薄,缺登录、发帖和正文阅读
- 想要账号登录和发帖的呼声不少;也有人希望直接在终端里读文章正文,输出 Markdown 就够;还有人索性要一个可交互的 SSH 版本。(较多人)
更多人愿意一试,并把它当成极客趣味
- 有人打算在 cyberdeck 上靠它刷 HN,有人表示马上要试,也有人夸没有那段演示根本看不出它怎么运转;作者本人现身感谢,说会把反馈做进后续版本。(较多人) > 我一直想找个有意思的方式在 cyberdeck 上刷 HN,这个看起来正合适。(@glitchc)
真正值得追问的是网站会不会被专用中介取代
- 有评论认真发问:这是否预示未来我们主要通过非通用浏览器的专用中介访问网站;还有一条畅想走得更远——让 agent 为你实际常用的那几家网站逐个生成 TUI,于是浏览器不再必需,"Lynx 但更漂亮",顺带省下被广告和网络骂战吃掉的时间。(少数人) > 这会不会预示着,未来我们主要通过专用中介、而不是通用浏览器来访问网站?(@iugtmkbdfil834)
有价值的补充
- 渲染前先过一道 readability 之类的正文提取:新闻站点的原始 HTML 直接转 Markdown 基本全是导航垃圾,这一步才是可用性的分水岭。(@sparrowidle)
- 收藏时应记 HN 的 item ID 而不是 feed 里的位置,首页排序一直在变,用 ID 才能真正稳定地回到同一个帖子。(@dhanushnehru)
- 同类工具已有先行者,有人长期在用 circumflex 并表示体验不错。(@ChaseRensberger)