OhNews
AI 驱动的新闻阅读平台
View source
OhNews 是一款原生 macOS 新闻阅读应用,当前支持 Hacker News,提供可选的中文 AI 摘要与应用内正文阅读。Hacker News 是它接入的第一个信息源。
它面向这样一类使用方式:快速浏览 Hacker News,理解一条内容背后的讨论,并直接打开原文,而不必在多个浏览器标签之间来回切换。
路线图
- 可接入 Hacker News 之外的信息源
- 详情级深度分析
- 每日首页简报
- Windows 客户端(待定)
- 全局搜索
- 收藏/稍后读
计划会随实际进展调整,不代表承诺的交付时间。
更新日志
OhNews 0.8.5
本版为 ad-hoc 签名、未经公证(未配置 Developer ID 证书)。首次打开若被系统拦下,请在「应用程序」里右键点击 OhNews 选择「打开」,之后正常启动。
优化:
设置页窗口改为两级(一级四项带现状说明 → 二级页面 + 带底返回按钮 + 两级同色 + 滑动过渡)
修复 BUG:
侧栏与列表栏的滚动条彻底去掉(且切换分组、按方向键都不再闪——做法是把本应用的滚动条设为 overlay,不动系统设置)
打开每篇文章都要钥匙串授权 → 一次启动最多一次,拒绝过就不再打扰
侧栏分组标题被裁、点侧栏冒蓝焦点环(我引入的两处回归)
测试连接失败给出简短原因,成功只显示绿勾
OhNews 0.8.0
本版包含 0.7.0 的全部内容(0.7.0 未单独发布,开发期间并入本版)。以下为 0.6.1 以来的全部变更。
本版为 ad-hoc 签名、未经公证(未配置 Developer ID 证书)。首次打开若被系统拦下,请在「应用程序」里右键点击 OhNews 选择「打开」,之后正常启动。
新功能
回收站
删除不再是终点。取消星标、移出稍后读、删除收藏夹单篇,都会先进入回收站,可以「放回原处」还原到原来的位置。
- 回收站里保存的是删除那一刻的完整快照,还原不需要联网,也不要求原条目还在订阅源里(订阅源内容是流动的,这正是需要回收站的原因)。
- 保留期可选 7 天 / 30 天 / 手动清空(默认 30 天),启动时与修改设置时各清理一次过期项。
- 入站期间离线存档保留,只有彻底删除时才清除。
收藏整理
侧栏改为星标 / 高亮 / 收藏夹 / 稍后读四个一级入口,以及「订阅源」一级分组(各源为二级,源内频道缩进其下)。
- 「收藏夹」用于主动粘贴网址收藏单篇,收藏时立即写入离线存档。
- 段落收藏升级为高亮:只标记选中的那几个字,而不是整段上色;悬停浮出玻璃工具条,可直接取消;从高亮列表跳回原文时只让那一条闪一下。
正文 AI 解读
在正文里(不是列表里)生成一份解读:读的是正文本身,输出正文总结、要点,以及评论区的核心观点与趋势。
- 面板随正文一起滚动,是文章的一部分;高度有固定上限,内容超出时在框内滚动,不会把正文一直往下推。
- 生成过程中显示占位动效,不会留下一块空白。
- 设置里可关闭;结果按内容哈希缓存,可手动重新生成。
阅读与操作
- 正文字号可调(85%–180%),只影响正文。
- 触控板横扫收起边栏:向左依次收起侧栏、列表栏,向右依次放回。手势在窗口内任意位置有效,也不与正文冲突。
- 收起列表栏后,星标 / 稍后读 / 外观 / 设置这些按钮仍在——它们在读正文时同样需要;只有「重新获取榜单」随列表栏一起收起。
界面
- 三栏结构重做:顶部工具栏为完整一条,三个栏位在它之下各自独立、共享同一高度,栏间分隔线贯通到窗口顶端。
- 文章条目改为圆角描边卡片,底色近乎透明,由轮廓线表达形状;所有清单(星标/高亮/收藏夹/稍后读/回收站)统一为同一套样式。
- 正文栏做成浮起的一张纸:与列表栏交界处有高度差,其余各边与窗口融为一体。
- 滚动条改为滑动时才出现。
- 启动时检查新版本,有新版本在列表顶部提示。
修复 BUG
- 窗口变矮时侧栏内容被顶部工具栏盖住,且滚动无法找回。根因有两层:侧栏未约束自身列高,会按全部条目的高度索取空间;同时分栏几何被持久化,与实际窗口高度不符。现已由三栏外壳统一接管高度,并在 DEBUG 下用探针校验「栏高 = 窗口可用高度」。
- 拖动分隔线时列表栏剧烈抖动:拖动过程中每一帧都在写入偏好设置,写入又反过来触发重排。现在拖动期间只改内存值,松手才落盘。
- 调整过的栏宽被复位:切换频道、切换栏目、点击文章跳转正文时,列表栏会弹回固定宽度。宽度现在由应用自己持有并持久化。
- 切换栏目时内容短暂变扁:同一原因,已随栏宽改为自持而消失。
- 正文可以像网页一样被捏合缩放,且横向滑动会触发网页的前进/后退。两者均已关闭。
- 收起栏位时正文出现跳变(先露出一点、再平移一段、最后突然覆盖):正文栏里的网页视图跟不上逐帧动画。现在布局一步到位,滑动交给过渡动画,正文全程不动。
- 收起最后一栏时顶部闪一下颜色:外壳背后铺的底色与三栏的纸色不同,切换瞬间露了出来。现改为同色。
- 悬停高亮后工具条来不及按到:鼠标移向工具条的途中会短暂离开高亮范围。隐藏宽限期由 120ms 调整为 400ms。
OhNews 0.2.5
新功能
多信息源
- 支持 RSS / Atom 订阅,可以添加任意订阅源,Hacker News 不再是唯一来源
- 侧栏按信息源分组,支持添加、重命名、删除订阅
- 订阅配置独立保存,清理缓存不会丢失订阅
应用内阅读器
- 抓取正文并在应用内阅读,不再需要跳到浏览器
- 抓不到正文时按情况逐级降级:能拿到正文就渲染正文;只有评论就提示评论数;什么都没有则引导到原始链接
- 正文重新排版:阅读宽度 720px、行高 1.9、二级标题上方带一条横线
AI 摘要
- 新增生成范围设置:只生成最前面若干条(默认 12 条)/ 生成全部 / 不自动生成
- 在列表里右键任意条目即可单独生成摘要,或对已有摘要重新生成,不受条数上限限制
- 摘要提示词按来源适配:RSS 条目在没有评论时也能生成摘要
列表与刷新
- 列表条数可选 30 / 50 / 100 条
- 刷新机制:冷启动刷新一次、当前频道每 4 小时自动刷新、也可手动刷新;切换频道只读缓存,不再反复联网
- 刷新改为增量合并:新条目从顶部插入,已有条目原地更新分数与评论数
其他
- 主窗口工具栏新增深浅色一键切换;设置页另有「跟随系统 / 浅色 / 深色」
- 支持方向键在列表中移动选择
- 设置页新增缓存管理:显示占用大小,可一键清除(订阅与设置保留)
- 侧栏选中的频道会被记住,重启后沿用
界面
- 整体重做为极简杂志风格:纯纸白底、墨黑文字、衬线标题、等宽大写的小字元信息、条目之间用发丝线分隔
- 强调色是墨色本身,没有第二配色;层级由排版和留白建立,不再使用彩色块
- AI 摘要改为引文样式(左侧一道细引线加缩进),不再是一块独立的深色卡片
- 深色模式同步重做,与应用整体配色一致
修复
- 修复点击条目后正文显示不出来的问题
- 修复已配置 API Key 却提示未设置密钥的问题;状态提示现在区分「没有密钥」「密钥读不出来」「配置不完整」「请求失败」,其中一次性的请求失败可以关闭
- 修复中文界面里日期显示为英文(例如「3 DAYS AGO」)的问题
OhNews 0.2.0
新增
多信息源
- 应用不再只支持 Hacker News,改为按「来源 → 频道 → 条目」组织内容
- 侧栏按来源分组:Hacker News 的五个榜单,以及你添加的每一个订阅
- 一个订阅即一个频道,切换方式与原来切换榜单完全一致
RSS / Atom 订阅
- 侧栏工具栏的
+可以添加任意站点的订阅地址 - 同时支持 RSS 2.0 与 Atom 1.0,并处理真实 feed 的各种写法:CDATA 正文、未转义的 HTML 标签、相对链接、多种日期格式,以及缺少 GUID 时改用链接作为标识
- 添加时会先真实抓取一次:地址写错、对方不是订阅源、或返回内容不是有效 XML,都会当场说明原因,而不是先存下来之后一直失败
- 订阅的显示名取自 feed 自己声明的标题;右键可以重命名或删除订阅
- 支持 http 地址的订阅源(添加时界面会提示明文传输的风险,建议优先使用 https)
AI 摘要覆盖所有来源
- 摘要会按来源生成对应措辞,不会再用 Hacker News 的说法去描述别的来源的内容
- 没有评论区的来源也能生成摘要——这类条目会把来源自带的正文交给模型,而不是只靠标题
- 没有分数或评论数的来源,列表里不再显示这两个字段,而不是显示成 0
修改
- 条目在内部的标识改为带来源前缀的形式(例如
hn:12345、rss:2c1c9ba197b5ce0d:…),这是支撑多来源的基础改动 - 缓存结构升级:旧版本的条目缓存会在首次启动时重建一次,已读记录会原样保留
- 摘要的生成规则有调整,因此已有摘要会重新生成一次;之后恢复正常,不会反复请求
- 缓存与订阅配置分开存放:订阅信息不受缓存清理影响
修复与改进
本版以功能扩展为主,没有独立报出的缺陷修复。以下是开发过程中发现并处理的问题:
- 正文抽取失败时的提示文案写死了「HN 评论」和「下一版本提供」,对其他来源并不成立,已改为与来源无关的表述
- 没有分数或评论数的来源不再显示「0 分 / 0 条评论」,避免把「没有这个数据」显示成「这个数据是零」
OhNews 0.1.0
核心功能
阅读
- 五个榜单:Top、Best、New、Ask HN、Show HN
- 本地缓存:启动即显示上次内容,离线也能浏览
- 已读标记,退出重开仍然保留
- 侧栏的榜单选择会被记住
- 应用内正文阅读,正文识别使用 Mozilla Readability.js 并套用自定义排版
- 正文抽取失败时按三级降级显示:正文 → 标题加 HN 讨论入口 → 仅标题与「浏览器打开」按钮
AI 摘要(可选)
- 为列表中前 12 条自动生成:中文标题、2–3 句中文摘要、主题标签、评论区共识
- 兼容 OpenAI 接口的服务商:DeepSeek(默认)、OpenAI、Ollama、自定义地址
- 并发上限 3,结果落本地缓存,重复打开不会重复请求
- 未配置服务商时,应用退回为完整可用的纯阅读器
隐私
- API Key 只写入 macOS 钥匙串,不进入配置文件,也不写入日志
- 文章在本地 WKWebView 中加载,不经过任何服务端代理
- 只在启用 AI 摘要时,才把标题、元信息与有长度上限的部分评论发送给你自行配置的服务商
开发期间修正的问题
本版为首个版本,没有面向用户的修复记录。以下是开发过程中发现并处理的问题:
- 阅读器会把 GitHub 等网站的「页面外壳」误判为正文:增加抽取质量判定,这类页面改为走降级显示,不再渲染整页框架
- 设置页显示的版本号可能与工程配置不一致:改为从应用包读取,避免版本号漂移
- 侧栏榜单选择在退出后丢失:改为持久化保存,重启回到上次浏览的榜单
支持平台
- macOS 15.0 或更高版本
- Apple Silicon 处理器
- intel 处理器