Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🗺 ZenX — X 平台 AI 驱动反垃圾评论助手

ZenX 是一款基于 Chrome Extension Manifest V3 开发的高保真、现代化浏览器扩展。它致力于解决社交平台 X (Twitter) 生态中泛滥的垃圾评论(黄推引流、色情推广、刷屏表情包矩阵、无意义回复等),为您还原清爽的社交阅读体验。

本扩展采用由 IndexedDB 缓存 + 本地字符/正则拦截 + 大语言模型 (LLM) 批量语义解析 构成的三层过滤漏斗,并在后台利用抓包鉴权实现零侵入的 Native API 静默拉黑极客感十足的单色 TUI 侧边栏交互

无限制的大模型接入能力:ZenX 现已全面支持通过配置 host_permissions,允许您自由对接 OpenAIClaudeDeepSeek 等任何第三方主流大模型 API,同时也完美兼容运行在 http://localhost:11434 等本机的开源模型(如 Ollama / LMStudio)。


✨ 核心特性

  • 🚀 三层过滤漏斗
    • L1 级 IndexedDB 极速缓存:基于 Dexie.js 建立持久化黑名单,在页面渲染时以 $O(1)$ 时间复杂度秒级完成本地屏蔽,具备 30 天自动 TTL 淘汰机制,防止存储过度膨胀。
    • L2 级 本地正则/字符拦截:支持用户自定义屏蔽词或正则表达式,实现对回复文本、用户 Handle 及 DisplayName 的瞬时正则检测,拦截开销极低。
    • L3 级 异步批量 AI 判定:将未命中的边缘评论存入缓冲池(如满 8 条或超时 1000ms),通过 Service Worker 统一调度 fetch 发送给兼容 OpenAI/Claude 格式的大模型。支持强约束 JSON-Schema,极大节约 API 消耗与网络带宽。
  • 🛡 零感静默 Native 拉黑 (RPA 引擎)
    • 弃用传统的、易碎的 DOM 模拟点击操作,改用后台网络包分析拦截机制。自动抓取 X 平台的 Authorization 凭证与 x-csrf-token,直接以官方 API 请求形式(/i/api/1.1/blocks/create.json)在后台完成静默拉黑。
    • 内置防风控限频队列,限制每分钟拉黑频次,每步请求插入随机时延,在保障账号安全的前提下实现批量自动化净化。
  • 👁 辅助阅读与防误伤交互 (Assist)
    • 在“辅助阅读”模式下,垃圾评论不会生硬消失,而是被蒙上磨砂玻璃滤镜 (blur) 并标记拦截原因。
    • 侧边栏与页面实时联动,点击拦截卡片上的 [撤销 / Undo] 按钮即可一键恢复原帖展示,彻底杜绝误伤。
    • 主贴作者豁免保护:若评论者为当前主推文的原作者,自动放行判定,避免影响与博主的正常互动。
  • 🤖 自动巡逻净网机器人 (Auto-Patrol)
    • 接管浏览器行为,开启全自动净化。状态机依据 HOME -> LOADING -> CLEANING -> BACK -> HOME 闭环循环。
    • 自动滚动主页 -> 寻找未读推文 -> 点击进入详情页 -> 提取并过滤评论 -> 触发 AI 判断与 API 静默拉黑 -> 点击返回首页。
    • 具备 60秒看门狗守护LRU 网页去重队列状态自愈容错机制,在异常时自动回退,实现真正的 24 小时无人值守。
  • 📟 极客终端 (TUI) 侧边栏与 i18n 联动
    • 遵循 OpenCode Mono 设计系统,采用 Radix Themes + 终端单色风格,提供独一无二的 TUI 日志流交互。
    • 支持中英文双语界面切换,一键清空日志、快捷键 Tab 轮转与 Ctrl-C 清屏。
    • 将日志划分为 engine, filter, llm, rpa, patrol, cache, ui 七大类与 5 级状态色彩,支持 200 条热日志回溯。

🏗 系统架构与数据流

本扩展由三部分核心组件协作完成:Side Panel (侧边栏界面)Background Service Worker (后台逻辑总线)Content Scripts (页面注入脚本)

核心架构图

┌─────────────────────────────────────────────────────────────────────┐
│  Chrome Side Panel (sidepanel.tsx)                                  │
│  ┌───────────────────────────────┐  ┌─────────────────────────────┐  │
│  │  Preferences / Engine (设置)  │  │  TUI Logs (实时终端日志)    │  │
│  │  · 模式选择 (Segmented)       │  │  · Log Categories 过滤      │  │
│  │  · 自定义 API 终端 / Key      │  │  · 实时流 / 5级彩色渲染     │  │
│  │  · 本地屏蔽词/正则维护         │  │  · 拦截数据计数             │  │
│  └───────────────────────────────┘  └─────────────────────────────┘  │
└──────────────────────────┬──────────────────────────────────────────┘
                           │ chrome.runtime.sendMessage
┌──────────────────────────▼──────────────────────────────────────────┐
│  Background Service Worker (background/index.ts)                    │
│  · 状态机启停控制中心与全局 engineStatus 广播                         │
│  · chrome.webRequest 监听:截获鉴权头 (Authorization / CSRF)        │
│  · IndexedDB 本地缓存代理 (持久化管理与 O(1) 过滤响应)               │
│  · 跨域大模型代理 (LLM Dispatcher,无视 CORS,支持全局任意模型 URL)  │
│  · 日志中继管道 (带 200 条上限的冷启动持久化 buffer)                 │
└──────────────────────────┬──────────────────────────────────────────┘
                           │ chrome.tabs.sendMessage
┌──────────────────────────▼──────────────────────────────────────────┐
│  Content Scripts (运行于 https://x.com/* & twitter.com/*)           │
│                                                                     │
│  zenx.ts (辅助阅读引擎)               auto-patrol.ts (自动巡逻引擎)  │
│  ┌─────────────────────────┐          ┌─────────────────────────┐   │
│  │ DOMObserver             │          │ PatrolStateMachine      │   │
│  │  ↓                      │          │  ↓ (状态转移驱动)        │   │
│  │ FilterPipeline          │          │  HOME → LOADING →       │   │
│  │  ├─ L1: IndexedDB 缓存  │          │  CLEANING → BACK        │   │
│  │  ├─ L2: 本地字符/正则    │          │  ↓                      │   │
│  │  └─ L3: LLM 异步攒批     │          │  FilterPipeline 判定    │   │
│  │  ↓                      │          │  ↓                      │   │
│  │ UIManager (滤镜 & 撤销)  │          │  RPAEngine (静默拉黑)    │   │
│  └─────────────────────────┘          └─────────────────────────┘   │
└─────────────────────────────────────────────────────────────────────┘

🛠 技术栈说明

  • 基础骨架Plasmo — 基于 React 19 + TypeScript 的现代化 Manifest V3 浏览器扩展框架。
  • 本地存储Dexie.js — 针对 IndexedDB 的极简包装器,实现大容量规则缓存的高效检索。
  • 界面组件Radix Themes — 无障碍、样式自由定制的极简 UI 系统。
  • 样式方案:Tailwind CSS v4 + 模块化原生 CSS,定义终端配色与高保真滤镜。

📁 项目目录结构

x-tool/
├── package.json                  # 项目依赖与 Plasmo MV3 扩展配置
├── plasmo.config.ts              # Plasmo 打包配置文件
├── tsconfig.json                 # TypeScript 编译器配置
├── readme.md                     # 工程说明与技术白皮书
├── docs/                         # 说明文档与上架物料
│   ├── PRIVACY.md                # 隐私政策协议 (Chrome 商店提审必备)
│   └── STORE_SUBMISSION.md       # 谷歌商店审核表单指南
├── assets/
│   └── icon.png                  # 插件图标 (Plasmo 自动缩放生成多尺寸)
├── scripts/
│   └── log-server.js             # 开发环境专用:本地 Node.js 终端日志收集服务器
└── src/
    ├── sidepanel.tsx             # Chrome 侧边栏主面板 UI (Radix Themes + 终端交互)
    ├── options.tsx               # 扩展高级偏好设置页
    ├── background/
    │   └── index.ts              # Service Worker (全局状态、鉴权头拦截、LLM 代理)
    ├── contents/
    │   ├── zenx.ts               # 辅助阅读 Content Script (DOMObserver 驱动)
    │   └── auto-patrol.ts        # 自动巡逻 Content Script (状态机 RPA 驱动)
    ├── core/
    │   ├── dom-observer.ts       # MutationObserver 推文解析与异常降级
    │   ├── filter-pipeline.ts    # 三层过滤管道与 LLM 异步 Promise 批处理桥接
    │   ├── lm-dispatcher.ts      # LLM 动态分发 (兼容 OpenAI JSON Schema 与 Claude 格式)
    │   ├── regex-filter.ts       # 本地正则与敏感词匹配过滤器
    │   ├── cache-manager.ts      # IndexedDB 本地缓存管理器 (Dexie.js + TTL 淘汰)
    │   ├── ui-manager.ts         # 磨砂遮罩渲染、拦截标徽注入与撤销恢复操作
    │   ├── rpa-engine.ts         # Native API 静默拉黑引擎 (限频与随机时延队列)
    │   └── patrol-state-machine.ts  # 自动巡逻状态机 (含状态看门狗与异常自愈)
    ├── lib/
    │   ├── i18n.ts               # 中英文双语国际化文案
    │   ├── log-manager.ts        # 结构化日志管理器 (推送日志至 SW 与本地 Log Server)
    │   └── message-bus.ts        # 强类型 Content 与 Background 消息通信总线
    ├── types/
    │   └── index.ts              # 全局 TypeScript 接口与 DOM Selectors 集中定义
    └── styles/
        ├── design.css            # 终端极客风格全局配色与排版样式表
        ├── sidepanel.css         # 侧边栏样式覆写
        └── content.css           # 宿主页面注入样式 (磨砂滤镜与拦截撤销 Badge)

🚀 编译与调试

1. 安装依赖

npm install

2. 启动开发模式 (热重载与本地日志)

为了在开发时更好地追踪后台和页面注入层的日志流,强烈建议您在启动 Plasmo 的同时开启本项目的专属日志服务。 开启一个终端,运行日志服务器:

npm run log-server

再开启另一个终端,启动热重载构建:

npm run dev

Plasmo 会自动在根目录下创建 build/chrome-mv3-dev/ 目录。 打开 Chrome 浏览器,访问 chrome://extensions/,开启右上角的 开发者模式,点击 加载已解压的扩展程序 并选择上述输出目录。扩展运行时产生的 TUI 日志将同步输出至 logs/runtime.log

3. 构建生产打包版本

npm run build

编译成功后,产物会打包输出至 build/chrome-mv3-prod/(并自动生成 .zip 压缩包),该压缩包直接用于向 Google Chrome Web Store 提交正式版本。


⚠️ 风险控制与免责

  1. 大模型 URL 无限制声明:本插件 package.json 中的 host_permissions 已配置为无限制跨域请求(<all_urls> / *://*/*),这是因为本插件必须支持用户填入任何自托管本地 AI 服务(如 127.0.0.1 端口)或未知域名的云端接口。开发者保证请求绝不被用于采集用户隐私。
  2. 防账号风控:虽然扩展采用了 Native API 及限频防风控队列,但拉黑频率如果设置过快(如超过 10 次/分钟)仍可能被 X 平台监测。建议采用默认的每分钟不超过 6 次配置。
  3. 数据隐私生命周期:所有的鉴权头 (x-csrf-token)、本地拦截规则和 LLM API 密钥均只驻留在您的浏览器存储 (LocalStorage / IndexedDB / Memory) 中,仅发生浏览器到大模型服务商的单向传输,绝不向拓展开发者的服务器上传任何数据。详见 隐私政策

📜 许可证

本项目基于 MIT License 开源。

About

ZenX - X(Twitter)专属净网助手。基于AI技术自动过滤垃圾评论与广告。支持自由配置各大主流大模型及本地模型服务,打造清爽阅读体验。

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages