GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - codefromkarl/TrendRadar-Rust: Rust workspace migration of TrendRadar for learning, AI-assisted engineering, and verifiable trend monitoring workflows

BranchesTags
Open more actions menu

Latest commit

 

History

74 Commits
74 Commits

Folders and files

NameName
Last commit message
Last commit date
.cargo
.cargo
 
 
.githooks
.githooks
 
 
.github
.github
 
 
.vscode
.vscode
 
 
crates
crates
 
 
deploy
deploy
 
 
docs
docs
 
 
fixtures
fixtures
 
 
scripts
scripts
 
 
src
src
 
 
tests
tests
 
 
.dockerignore
.dockerignore
 
 
.editorconfig
.editorconfig
 
 
.gitignore
.gitignore
 
 
.gitmessage
.gitmessage
 
 
AGENTS.md
AGENTS.md
 
 
CITATION.cff
CITATION.cff
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
Cargo.lock
Cargo.lock
 
 
Cargo.toml
Cargo.toml
 
 
Dockerfile
Dockerfile
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
SECURITY.md
SECURITY.md
 
 
SUPPORT.md
SUPPORT.md
 
 
clippy.toml
clippy.toml
 
 
deny.toml
deny.toml
 
 
install.sh
install.sh
 
 
justfile
justfile
 
 
rust-toolchain.toml
rust-toolchain.toml
 
 
rustfmt.toml
rustfmt.toml
 
 

Repository files navigation

TrendRadar Rust

This is a Rust translation of TrendRadar, licensed under GPL-3.0.

基于原始 Python 版 TrendRadar 的 Rust 工作区重构,目标是先收敛一个可验证、可维护、适合 AI 协作推进的趋势监控内核。

Rust Workspace Migration · Trend Monitoring Kernel · AI Collaboration

快速开始 · 文档导航 · 架构 · 迁移策略

原始项目与翻译声明

项目 信息
原始项目 TrendRadar
迁移基线版本 Python 原版 v6.6.1(trendradar 包版本)
原始许可证 GPL-3.0(见 LICENSE)
翻译语言 Python → Rust
翻译许可证 GPL-3.0(与原始项目一致)
主要修改 从 Python 重构为 Rust workspace 架构,重组模块边界,删除历史兼容层,新增验证闭环

本仓库是 TrendRadar 的衍生作品。所有翻译和修改部分同样遵循 GPL-3.0,保留原始版权声明,并标注修改范围。

项目简介

TrendRadar Rust 不是把旧系统逐文件翻译成 Rust,而是围绕“配置 -> 抓取 -> 归一化 -> 分析 -> 存储 -> 输出”这条主链路,重新建立一个更小、更稳、更容易验证的趋势监控内核。

当前仓库已经完成 Rust 内核主链路迁移,v1.x 迁移收口已经完成,项目已进入 v2.x 增量演进 / 生态扩展阶段。它已经具备 Rust workspace、验证入口、Git 协作约束、系统测试基线和迁移文档,但仍不追求把旧 Python 系统的全部生态能力一次性搬到 Rust。

为什么需要这个仓库

  • 原始系统经历过长期演化,已经累积了不少对迁移和协作不友好的历史包袱。
  • 如果直接照搬旧实现,新的 Rust 代码会继承过大的边界、过重的兼容层和难以验证的行为。
  • 在正式进入功能迁移之前,先把 workspace、验证闭环、文档基线和协作规则收口,能显著降低后续多人并行推进时的返工成本。

适用场景

  • 想把趋势监控、RSS、新闻聚合这类系统从动态语言迁到 Rust,但不想做机械翻译。
  • 想先搭建可验证的工程基线,再逐步迁移抓取、分析、存储和输出链路。
  • 想让 AI agent 与人工开发者在同一套 Git、文档和验证规则下协作推进。

当前核心能力

  • Workspace 基线:11 个 crate 已按职责拆分,围绕领域、配置、调度、分析、存储、抓取、报告、通知、AI、MCP 和应用编排建立工作区。
  • 固定工具链:仓库固定 Rust 1.94.1,并显式纳入 rustfmt、clippy、rust-analyzer、rust-docs 等组件。
  • 验证闭环:just env-check、just verify-basic、just verify 和 just doc 提供环境检查、基础验证、完整验证和文档生成入口。
  • 协作约束:.githooks/、.gitmessage、分支规范和提交规范已经落地,适合并行迁移阶段使用。
  • 迁移基线文档:架构、模块映射、不变量、契约和并行迁移方案已经进入 docs/,可以作为后续实现与审查的统一参照。

架构概览

flowchart LR
  A[Config] --> B[App Bootstrap]
  B --> C[Fetch]
  C --> D[Normalize]
  D --> E[Analyze]
  E --> F[Storage]
  F --> G[Report]
Loading

当前已经落地并验证的是两条链路:config -> app::bootstrap 的基础启动校验,以及基于 fixture 和 HTTP 配置的 config -> fetch -> analyze -> storage -> report 闭环。与此同时,仓库已补齐多平台热榜 parser、工作日 / 周末调度与冷却周期、多通知渠道、稳定 CLI 退出码、可选 AI 分析旁路和最小查询型工具服务入口,使核心 crate 的行为不只“能跑通”,也“可复查”。更复杂的生态能力仍按迁移计划逐步进入 Rust 内核,而不是一次性重写整套旧系统。

当前状态

  • 当前项目判断:这轮以 Rust 迁移与 vibecoding 练手为目标的项目已经完结,仓库默认按维护模式理解
  • 可用性:当前 Rust 版已经可以正常用于“抓取 -> 聚合 -> 去重 -> 落库 -> 输出 -> 运行留痕”这条主链路
  • 迁移完成度:核心主链路已完成迁移,但不是 Python 原版 100% 功能迁移完成
  • 合理性判断:作为“更小、更稳、更可验证的趋势监控内核”,当前整体是合理且可继续维护的;作为“完整替代 Python 原版的全功能产品”,当前仍有明确边界和缺口
  • 当前收口说明:本轮迁移收口判断与边界说明见 项目收尾说明
  • 当前完结口径:项目完结与维护模式说明见 项目完结说明
  • 完结后维护记录:AI 原生开发注意事项与本地占用整理见 开发记录:AI 原生开发收口与本地占用整理
  • 当前增量轮次:第 1 轮 v2.0.0-beta 已完成;第 2 轮 v2.1.0 已启动并落下 C1 真实远程对象存储的最小闭环
  • 已验证内容:just env-check、just verify-basic、just doc、config -> app::bootstrap 启动链路、config -> fetch -> analyze -> storage -> report 的 fixture / HTTP 系统链路、多个 crate 级边界样例,以及根级 tests/system/ 下 68 条成功路径 / 空输入 / 错误路径 / 阶段组合样例;当前全工作区共 238 tests 通过
  • 已建立内容:CI 基础验证、系统测试模板、Git hooks、提交模板、并行迁移规则
  • 当前不包含:更完整的 LLM provider 矩阵、完整 MCP 协议兼容层、Homebrew 等更完整的分发入口,以及更大范围的生态接入

迁移后当前功能一览

  • 数据输入:支持多平台热榜抓取与 RSS 订阅抓取,可统一归一化为内部模型后进入同一条 pipeline。
  • 核心处理:支持关键词过滤、排序与来源聚合,支持工作日 / 周末差异、时间窗口和冷却周期等调度规则。
  • 存储与输出:支持 SQLite 本地存储和最小远程对象存储闭环,CLI 可输出 json、html、both、table、markdown。
  • 通知与集成:当前支持 Webhook、飞书、钉钉、企业微信、Slack、Discord、ntfy 和 Console 回退输出;提供最小 AI 分析旁路和查询型 MCP 工具服务入口。
  • 交付方式:支持 release 安装脚本、cargo install、Docker one-shot 和 systemd timer 调度,适合本地、CI 和周期性任务运行。

如果你更关心“原版 Python 做到了什么、Rust 现在保留了什么、两者差异在哪里”,直接看 迁移前后项目对比。

安装

方式 1:用 release 安装脚本

适用于 Linux x86_64 和 macOS arm64:

curl -fsSL https://raw.githubusercontent.com/codefromkarl/TrendRadar-Rust/main/install.sh | bash

指定版本或安装目录:

curl -fsSL https://raw.githubusercontent.com/codefromkarl/TrendRadar-Rust/main/install.sh | bash -s -- --version v0.1.0 --dir "$HOME/.local/bin"

脚本默认从 GitHub Releases 下载预编译二进制,当前支持:

  • trendradar-linux-x86_64
  • trendradar-macos-aarch64

Windows 请直接从 Releases 页面下载 trendradar-windows-x86_64.exe。

方式 2:从源码安装

如果你已经克隆仓库,可以直接用 Cargo 安装:

cargo install --path crates/app --locked

安装完成后建议执行:

trendradar --help
trendradar --version

方式 3:Docker 运行

仓库已提供官方 one-shot Docker 入口,适合本地定时任务、CI 或配合 systemd timer 调度:

cargo build --release -p trendradar-app
cp deploy/examples/config.rss.json deploy/runtime/config.json
mkdir -p deploy/runtime/data
docker compose -f deploy/docker-compose.yml run --rm trendradar --dry-run

完整说明见 部署指南。

如果你想抓多个领域,并确保每个领域都至少保留一些新闻,可以从 deploy/examples/config.multi-domain.json 开始。这个示例默认启用了 selection.high_rank_fallback_max_rank、selection.min_items_per_source 和 selection.min_items_per_domain。

快速开始

环境要求

  • Rust 1.94.1
  • just
  • cargo-nextest
  • cargo-llvm-cov
  • cargo-deny

推荐直接使用仓库脚本完成环境准备:

./scripts/bootstrap.sh

然后执行最小验证:

just env-check
just verify-basic
just doc

如果你想手动安装工具链、扩展工具和 Git hooks,见 环境准备文档。

常用命令

命令 作用
just env-check 检查 Git、Rust 工具链、组件和扩展命令是否齐全
just install-githooks 启用仓库内 .githooks/ 和提交模板
just fmt / just fmt-check 格式化或检查格式
just check 执行工作区编译检查
just test-basic 运行 cargo test --workspace
just test 运行 nextest 和 doctest
just verify-basic 执行 fmt-check + check + test-basic
just verify 执行 fmt-check + lint + test
just doc / just doc-open 生成或打开本地 API 文档
trendradar --run-log run.json 输出本轮完整结构化运行日志(含去重与领域摘要)

just doc 底层执行的是 cargo doc --workspace --no-deps,产物位于 target/doc。

性能基线

当前仓库已经提供基于 Criterion 的 benchmark 入口:

cargo bench --package trendradar-app --bench pipeline_bench

当前可复用的基线主要覆盖:

  • pipeline_total/fixture_pipeline_minimal
  • pipeline_stage/fetch_fixture_sources
  • pipeline_stage/analyze_filter_rank_group
  • pipeline_stage/storage_in_memory_roundtrip
  • pipeline_stage/report_render_all_formats

当前文档化基线结果:

Benchmark 当前基线
pipeline_total/fixture_pipeline_minimal 147.17 µs ~ 166.30 µs
pipeline_stage/fetch_fixture_sources 9.0537 µs ~ 9.4556 µs
pipeline_stage/analyze_filter_rank_group 1.1192 µs ~ 1.1954 µs
pipeline_stage/storage_in_memory_roundtrip 75.258 µs ~ 84.820 µs
pipeline_stage/report_render_all_formats 30.268 µs ~ 31.643 µs

这些结果目前用于 Rust 内部基线对照。Python 对比基线的对齐规则、结果模板和后续填写入口,见 docs/benchmark-python-baseline.md。

CLI 退出码

trendradar 的 CLI 退出码约定如下:

退出码 语义
0 执行成功
1 配置错误
2 网络或上游响应错误
3 存储错误
4 未分类的未知错误

当前退出码映射集中在 crates/app/src/main.rs,不会分散到各 crate。

工作区结构

路径 作用
crates/domain 领域模型、共享错误、运行元数据
crates/ai 可选 AI 分析旁路与 provider 抽象
crates/config 配置模型、默认值和加载入口
crates/schedule 调度规则解析
crates/analyze 过滤、聚合、排序等纯逻辑
crates/storage 存储抽象和后续本地持久化实现
crates/fetch 热点源和 RSS 抓取适配
crates/report 结构化输出和后续报告层
crates/mcp 最小查询型工具服务入口
crates/app 编排与 CLI 入口
docs/ 迁移策略、架构、约束和开发日志
fixtures/ 系统测试样例目录
tests/ 跨 crate 测试说明与快照目录

文档导航

  • 架构说明
  • 性能基线
  • Python 对比基线
  • 迁移前后项目对比
  • 业务视角对比
  • 配置迁移指南
  • Vibecoding 复盘
  • 项目完结说明
  • AI 原生开发收口与本地占用整理
  • 对外能力总览
  • 运行稳定性说明
  • 项目收尾说明
  • 环境准备
  • 部署指南
  • 迁移策略
  • 实施计划
  • 后续拓展执行文档
  • 并行迁移总方案
  • 契约文档目录
  • 实施文档目录
  • 实现验收矩阵
  • 模块映射基线
  • 迁移不变量
  • 契约基线
  • 系统性测试模板
  • Git 工作流与提交规范
  • 开发日志
  • 贡献指南

协作与贡献

当前仓库主要用于个人 Rust 学习与迁移实践,但欢迎围绕这些方向提交 Issue、PR 或讨论:

  • Rust workspace 结构与 crate 边界
  • 迁移基线文档与验证闭环
  • AI 辅助协作规则和 Git 规范
  • 趋势监控、RSS、聚合和排序的 Rust 建模

提交前至少建议运行:

just env-check
just verify-basic

更多规则见 CONTRIBUTING.md 与 AGENTS.md。

友情链接

  • Linux.do — 开源技术与 AI 实践社区

License

TrendRadar Rust — Rust translation of TrendRadar
Copyright (C) TrendRadar Contributors (original Python version)
Copyright (C) 2026 TrendRadar Rust Contributors

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

完整许可证文本见 LICENSE。

本仓库是 TrendRadar 的衍生作品,沿用 GPL-3.0-only 许可策略。所有修改与新增内容同样遵循 GPL-3.0。

About

Rust workspace migration of TrendRadar for learning, AI-assisted engineering, and verifiable trend monitoring workflows

github.com/codefromkarl/TrendRadar-Rust/tree/main/docs

Topics

ai-assisted-developmentmigrationrssrusttrend-monitoringworkspace

Resources

Readme
GPL-3.0 license

Code of conduct

Code of conduct

Contributing

Contributing

Security policy

Security policy
Activity

Stars

0 stars

Watchers

0 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.