开源一个用 AI 写的玩具,用 RUST 语言写的 RSS 阅读器 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
chtcrack
V2EX    程序员

开源一个用 AI 写的玩具,用 RUST 语言写的 RSS 阅读器

  •  
  •   chtcrack 8 小时 28 分钟前 2941 次点击

    Rust RSS 阅读器 for Windows 10

    一个完全用 AI 写的轻量级、高性能的 RSS 阅读器,具有现代化的用户界面和流畅的用户体验。 我本人没学过 RUST.

    功能特性

    核心功能

    • RSS 源管理:添加、编辑、删除、分组管理订阅源
    • 文章阅读:三栏布局,支持文章列表和内容渲染
    • 自动更新:可配置的自动更新间隔,支持后台静默更新
    • 搜索功能:支持全文搜索,两种搜索模式(直接搜索和索引搜索)
    • 通知系统:新文章桌面通知
    • AI 集成:支持与 AI 聊天,可将文章标题内容发送给 AI 进行分析
    • 系统托盘:支持最小化到系统托盘,方便后台运行
    • 导入导出:支持 OPML 格式的订阅源导入导出

    界面与体验

    • 现代化 UI:采用 egui 框架,提供流畅的交互体验
    • 主题切换:支持亮色/暗色主题,可跟随系统主题
    • 字体调整:支持自定义字体大小
    • 过滤排序:支持按未读、收藏状态过滤,按日期或标题排序
    • 文章标记:支持已读/未读标记,收藏功能
    • 批量操作:支持全部标记已读、全部删除等操作

    性能优化

    • 异步设计:基于 Tokio 运行时,支持异步操作
    • 高效渲染:优化的文章内容渲染,支持 HTML 解析
    • 内存管理:高效的内存使用,支持大量订阅源
    • 搜索优化:支持索引搜索,提高搜索速度

    技术栈

    • 编程语言:Rust
    • GUI 框架:egui
    • 异步运行时:Tokio
    • 数据库:SQLite
    • RSS 解析:rss crate
    • HTTP 客户端:reqwest
    • 系统托盘:tray-item

    安装方法

    从源码构建

    1. 确保已安装 Rust 环境(推荐使用 rustup )
    2. 克隆仓库:
      git clone https://github.com/chtcrack/rust-rss-reader cd rust-rss-reader 
    3. 构建项目:
      cargo build --release 
    4. 运行程序:
      cargo run --release 

    直接运行

    1. 从发布页面下载最新的可执行文件
    2. 解压后直接运行 rust_rss_reader.exe

    使用说明

    添加订阅源

    1. 点击左侧面板底部的"添加订阅源"按钮
    2. 输入 RSS 源的 URL 和标题
    3. 选择分组(可选)
    4. 配置自动更新和通知选项
    5. 点击"添加"按钮

    阅读文章

    1. 在左侧面板选择订阅源
    2. 在中间面板浏览文章列表
    3. 点击文章标题查看内容
    4. 使用工具栏标记已读/未读或收藏文章

    搜索文章

    1. 在顶部搜索框输入关键词
    2. 支持实时搜索,自动防抖
    3. 可选择在特定订阅源内搜索
    4. 搜索结果按发布日期排序

    配置自动更新

    1. 点击菜单中的"设置"选项
    2. 配置自动更新间隔(分钟)
    3. 选择是否启用自动更新
    4. 保存设置

    与 AI 聊天

    1. 选择一篇或多篇文章
    2. 点击"和 AI 聊天"按钮
    3. 在 AI 聊天窗口中输入问题
    4. 等待 AI 响应
    5. 可配置 AI API 参数

    导入导出订阅源

    1. 点击菜单中的"导入 OPML"或"导出 OPML"选项
    2. 选择文件路径
    3. 完成导入或导出操作

    配置说明

    程序首次运行时会在用户目录下创建配置文件,配置项包括:

    • 主题设置:亮色/暗色/跟随系统
    • 字体大小:可调整的字体大小
    • 自动更新间隔:默认 30 分钟
    • 系统托盘:是否显示系统托盘图标
    • 通知设置:是否启用新文章通知
    • AI API 配置:API URL 、API Key 、模型名称
    • 搜索模式:直接搜索或索引搜索

    项目结构

    src/ ├── main.rs # 程序入口点 ├── app.rs # 应用程序主逻辑 ├── models.rs # 数据模型定义 ├── feed_manager.rs # 订阅源管理 ├── rss.rs # RSS 获取和解析 ├── storage.rs # 数据存储 ├── search.rs # 搜索功能 ├── notification.rs # 通知管理 ├── ai_client.rs # AI 客户端 ├── tray.rs # 系统托盘 ├── config.rs # 配置管理 └── utils.rs # 工具函数 

    开发说明

    运行测试

    cargo test 

    运行调试版本

    cargo run 

    代码风格

    项目使用 rustfmt 进行代码格式化,使用 clippy 进行代码检查:

    cargo fmt cargo clippy 

    许可证

    MIT License

    贡献

    欢迎提交 Issue 和 Pull Request !

    问题反馈

    如果您遇到任何问题或有建议,请在 GitHub Issues 中提交。

    更新日志

    v1.0.0

    • 初始版本发布
    • 支持基本的 RSS 源管理和文章阅读
    • 实现自动更新和通知功能
    • 支持搜索和 AI 集成
    • 支持系统托盘和 OPML 导入导出

    联系方式

    项目地址: https://github.com/chtcrack/rust-rss-reader


    1 条回复    2025-11-28 15:48:58 +08:00
    EasonIndie
        1
    EasonIndie  
       5 小时 46 分钟前
    starred
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2599 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 13:35 PVG 21:35 LAX 05:35 JFK 08:35
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86