你的高质量技术资讯大本营,兼顾断舍离与极速查询。
本地优先 · 数据主权 —— 你的数据永远属于你。
一个优雅、简单、强大的 Go 语言命令行工具,专为程序员设计。采用 LLM-Native 架构和本地优先理念,支持多源 API 采集、智能网页抓取、LLM 内容增强(摘要/标签/评分)、智能策展和基于本地知识库的 RAG 问答。
| 特性 | News4Coder | 云端阅读器 |
|---|---|---|
| 数据存储 | 本地 SQLite | 云端服务器 |
| 账号注册 | 不需要 | 必需 |
| 隐私保护 | 数据不上传 | 服务商可查看 |
| 服务可用性 | 永久可用 | 依赖服务商 |
| 离线使用 | 完全支持 | 有限支持 |
| 数据导出 | 完全自由 | 受限 |
- ✅ 本地优先: 所有数据存储在本地 SQLite,无需云端账号
- 🔒 数据主权: 你的阅读记录、收藏、笔记完全属于你
- 🌐 多源智能采集: 直接调用 HN/Reddit/V2EX API + Jina AI Reader,告别 RSS
- 🤖 LLM 内容增强: 自动生成高质量摘要、技术标签、质量评分(0-10)
- 🎯 智能策展: 基于质量评分和阅读偏好,自动生成「今日必读」
- 💾 本地知识库: SQLite + FTS5 全文检索,构建你的技术资产
- 📖 阅读状态流: unread / read / starred / archived / discarded
- 🧹 断舍离支持: 批量归档、自动清理、语义去重
- 🔍 极速搜索: 本地全文搜索,秒级响应
- 💬 RAG 问答: 基于本地知识库回答,标注引用来源
- 📺 TUI 收件箱: 交互式极速浏览,秒级决策
- 📝 快速输入: 笔记、标签、Markdown 导出
- 🎨 优雅输出: 彩色终端输出,清晰易读
- 🚀 快速启动: 单二进制文件,无需额外依赖
news4coder 内置 8 个精选高质量技术源,覆盖中英文:
| 别名 | 名称 | 说明 |
|---|---|---|
hn |
Hacker News | YC 技术新闻聚合(Algolia API) |
github |
GitHub Blog | GitHub 官方博客(Jina Reader) |
lobsters |
lobste.rs | 友好程序员社区(HTML 解析) |
reddit |
Reddit r/programming | Reddit 编程热门(JSON API) |
ruanyf |
阮一峰的网络日志 | 中文技术博客标杆(Jina Reader) |
coolshell |
酷壳 CoolShell | 左耳朵耗子的技术博客(Jina Reader) |
v2ex |
V2EX | 中文技术社区(API) |
infoq |
InfoQ 中文站热点清单 | 热点文章列表(专用抓取器) |
使用 news4coder sources 查看完整列表。
确保已安装 Go 1.22 或更高版本:
# 克隆仓库
git clone <repository-url>
cd news4coder
# 编译项目
go build -o news4coder
# 或直接运行
go run main.go编辑 ~/.news4coder/config.json,填入你的 LLM API 信息:
{
"llm": {
"base_url": "https://api.openai.com/v1",
"api_key": "sk-xxxxxxxx",
"model": "gpt-4o-mini",
"embedding_model": "text-embedding-3-small",
"enrich_max_tokens": 2000,
"ask_max_tokens": 4000
}
}支持任何 OpenAI 兼容接口,包括 Ollama 本地服务(
http://localhost:11434/v1)。
# 1. 早上:一键同步所有官方源
news4coder sync
# 2. 调用 LLM 增强内容(生成摘要、标签、评分)
news4coder enrich
# 3. 查看智能策展的今日必读
news4coder curate --top 10 --auto-discard
# 4. 在 TUI 中快速处理文章
news4coder inbox
# 5. 随时向知识库提问
news4coder ask "最近关于 Rust 内存安全有哪些新观点?"
# 6. 晚上:归档已读 + 清理旧文章
news4coder archive
news4coder cleanup| 命令 | 说明 | 示例 |
|---|---|---|
sync |
同步官方源到本地数据库 | news4coder sync --source hn |
enrich |
LLM 内容增强 | news4coder enrich --limit 10 |
curate |
智能策展 | news4coder curate --top 10 |
ask |
RAG 问答 | news4coder ask "问题" |
inbox |
TUI 收件箱 | news4coder inbox |
| 命令 | 说明 | 示例 |
|---|---|---|
list |
列出订阅/文章 | news4coder list --articles --status unread |
read |
标记已读 | news4coder read 1 2 3 |
star |
收藏 | news4coder star 42 |
discard |
丢弃 | news4coder discard 5 6 |
archive |
批量归档 | news4coder archive |
| 命令 | 说明 | 示例 |
|---|---|---|
search |
全文搜索 | news4coder search "golang" |
stats |
订阅健康度 | news4coder stats |
export |
导出文章 | news4coder export --status starred --output fav.md |
cleanup |
清理旧文章 | news4coder cleanup |
j/↓ 向下移动
k/↑ 向上移动
r 标记为已读
s 收藏
d 丢弃
a 归档
1/2/3 切换视图(全部/未读/收藏)
q/Esc 退出
news4coder/
├── cmd/ # CLI 命令定义
│ ├── root.go # 根命令
│ ├── sync.go # 同步文章
│ ├── enrich.go # LLM 内容增强
│ ├── curate.go # 智能策展
│ ├── ask.go # RAG 问答
│ ├── inbox.go # TUI 收件箱
│ ├── list.go # 列出订阅/文章
│ ├── read.go # 标记已读
│ ├── star.go # 收藏
│ ├── discard.go # 丢弃
│ ├── archive.go # 批量归档
│ ├── search.go # 全文搜索
│ ├── stats.go # 订阅健康度
│ ├── note.go # 添加笔记
│ ├── tag.go # 添加标签
│ ├── export.go # 导出文章
│ ├── cleanup.go # 清理旧文章
│ └── sources.go # 官方源列表
├── internal/ # 内部模块
│ ├── article/ # 文章模型
│ ├── config/ # 应用配置管理
│ ├── crawler/ # 多源内容采集器
│ ├── curator/ # 智能策展
│ ├── db/ # SQLite 数据库
│ ├── enricher/ # LLM 内容增强
│ ├── llm/ # LLM 统一客户端
│ ├── rag/ # 检索增强生成
│ ├── official/ # 官方信息源注册表
│ ├── subscription/ # 订阅管理
│ └── tui/ # TUI 组件
├── local/ # 本地运行文件(不提交到仓库)
│ ├── debug/ # 调试输出
│ ├── logs/ # 本地日志
│ └── qoder/ # 开发任务配置
├── web/ # Web 界面
│ ├── index.html
│ ├── css/
│ ├── js/
│ └── assets/
├── main.go # 程序入口
├── go.mod # 依赖管理
├── go.sum # 依赖校验
└── README.md # 项目说明
注意:
local/目录用于存放本地运行时生成的文件(调试输出、日志等),不会被提交到 Git 仓库。详见local/README.md。
- 语言: Go 1.22+
- CLI 框架: Cobra
- 数据库: SQLite (modernc.org/sqlite,纯 Go,无 CGO)
- 全文搜索: SQLite FTS5
- TUI: bubbletea + lipgloss
- LLM Client: 标准库 HTTP + OpenAI 兼容 API
- 网页提取: Jina AI Reader(免费,返回 Markdown)
- HTML 解析: goquery
- 彩色输出: color
应用数据和配置保存在用户主目录:
| 平台 | 路径 |
|---|---|
| macOS/Linux | ~/.news4coder/ |
| Windows | %USERPROFILE%\.news4coder\ |
~/.news4coder/
├── config.json # LLM 配置
├── news4coder.db # SQLite 数据库(文章、阅读状态、全文索引)
└── subscriptions.json # 旧订阅配置(已弃用)
- 完全本地存储: 所有数据保存在本地 SQLite,不上传云端
- 无需账号: 没有注册、登录、授权流程
- 零遥测: 不收集任何使用数据
- 可导出: 支持 Markdown/JSON/CSV 导出
- 可备份: 数据库是标准 SQLite 文件,可随时备份
# 编译为可执行文件
go build -o news4coder
# 跨平台编译
# Windows
GOOS=windows GOARCH=amd64 go build -o news4coder.exe
# macOS
GOOS=darwin GOARCH=amd64 go build -o news4coder
# Linux
GOOS=linux GOARCH=amd64 go build -o news4codergo test ./...- README.md - 项目主文档
- EXAMPLES.md - 使用示例和常见问题
- local/README.md - 本地目录说明
- web/README.md - Web 界面说明
欢迎提交 Issue 和 PR!
- Fork 本仓库
- 创建你的特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开一个 Pull Request
MIT License
News4Coder 项目团队
享受你的本地优先技术阅读体验! 🚀
你的数据,永远属于你。