跳到主要内容
AI教程

使用 Gem Search 构建本地优先的 X 研究助手

了解如何运行 Gem Search、配对其 Chrome 扩展程序、捕获可见的 X 帖子、识别新兴叙事、检查证据、自定义主题,并可选择添加四位 Grok 审阅者,同时将研究引擎和数据库保留在你的计算机上。

使用 Gem Search 构建本地优先的 X 研究助手

Gem Search 的功能

Gem Search 是一款开源、本地优先的 X 研究助手。它会在 Chrome 或 Chromium 中添加动画蜘蛛覆盖层,检查当前标签页中呈现的帖子,并将小型捕获数据发送到运行在您电脑上的研究引擎。

本地 JEV 检测器会对帖子去重,并归纳重复出现的主题、项目链接、现金标签、有效的 Solana 地址和新出现的双词短语。有界爬虫可以跟踪公开的 HTTP 或 HTTPS 链接,而仪表板会保留来源、检查结果、缺口、活动记录和可导出的发现。

Gem Search 的设计目标是辅助调查,而不是自动建立信任。线索、评分或“干净上线”结果都不能证明某个项目安全、原创或很可能升值。

扩展程序会读取当前页面的 DOM。它不是 X 的全量数据流,不会与帖子或账户交互,也无法监控其他应用程序或后台标签页。

主要功能

  • 可见的浏览器助手:动画蜘蛛会突出显示正在检查的帖子,并提供捕获计数器、暂停控件、关闭功能以及可选的可见标签页自动滚动。
  • 本地信号检测:JEV 会归纳主题,检测代码和 Solana 地址,发现重复短语,衡量六小时增长,并检查作者多样性和重复文本。
  • 证据链:发现结果会保留相关帖子、公开链接、检查结果、未知项及其背后的模型理由。
  • 有界爬虫:公开页面会缓存 30 分钟,并阻止访问私有网络目标。
  • 持久本地队列:后端不可用时,扩展程序最多可保留 200 条捕获帖子,并在重新连接后转发。
  • 可选的 Grok 审查:明确启用后,四个具有特定角色的审查器会通过官方 xAI API 分析所提供的证据。
  • 本地自定义:您可以在本地配置文件中定义最多 40 个英语或俄语主题模式。
  • 研究导出:仪表板支持导出 JSON,以及生成浏览器端 SVG 发现胶囊。

了解架构

常规研究流程如下:

  1. 扩展程序观察可见 X 标签页中呈现的帖子。
  2. 捕获数据进入持久扩展队列。
  3. 配对的 localhost API 将数据发送到本地引擎。
  4. JEV 对信号去重并进行归类。
  5. 爬虫获取有界的公开来源。
  6. 在任何可选的模型审查之前,先运行本地证据检查。
  7. 仪表板呈现发现结果、来源、理由和未知项。

扩展配对令牌可以提交捕获数据并读取扫描器状态。它无法发行代币,扩展程序中也不包含账户操作代码或 xAI API 密钥。

前置条件

安装 Gem Search 前,请准备以下内容:

  • Python 3.11 或更高版本。
  • Chrome 或其他基于 Chromium 的浏览器。
  • macOS、Linux,或通过 WSL2 运行后端的 Windows。
  • 用于克隆仓库的 Git。

只有完整测试套件和可选的 Solana 模块需要 Node.js 22 或更高版本。核心研究后端和未打包的浏览器扩展不需要 npm 构建。

安装并启动本地引擎

克隆仓库,进入其目录,创建本地环境文件,然后启动后端:

git clone https://github.com/h100envy/gem-search.git
cd gem-search
cp .env.example .env
python3 app.py

请保持此终端运行。仪表板应可通过 http://127.0.0.1:8787 访问。

先试用虚构演示

连接 X 账户前,请打开 http://127.0.0.1:8787/spider-demo。此页面使用相同的蜘蛛渲染器处理虚构卡片,不会调用 API,也不会收集任何数据。

仪表板还提供单独的演示扫描功能,可使用明确标记的合成项目来运行研究流程。

加载并配对 Chrome 扩展

  1. 打开本地仪表板并进入连接。
  2. 复制本地配对代码。
  3. 在 Chrome 或 Chromium 中打开 chrome://extensions。
  4. 启用开发者模式。
  5. 选择加载已解压的扩展程序。
  6. 选择仓库中的 extension/ 目录。
  7. 打开 Gem Search 工具栏弹出窗口。
  8. 粘贴配对代码并选择连接。

此配对会将扩展程序连接到本地 API。使用扩展程序期间,研究引擎必须保持运行。

运行您的首次研究会话

  1. 打开 X 信息流、搜索页面或个人资料页面。
  2. 打开 Gem Search 扩展程序弹出窗口。
  3. 选择在此标签页释放蜘蛛。
  4. 正常滚动,让蜘蛛检查可见视口中呈现的帖子。
  5. 查看捕获计数器,并在需要时暂停或关闭蜘蛛。
  6. 返回本地仪表板并打开发现。
  7. 检查归类后的发现、来源帖子、链接页面、本地检查结果和明确标记的未知声明。
  8. 将有用的发现导出为 JSON,以便后续研究。

自动滚动是可选功能。后台标签页不会收集帖子或自动滚动。如果本地引擎离线,扩展程序最多可以保留 200 条捕获数据,并在连接再次成功后转发。

探索新兴信号

Gem Search 可以为代码、有效的 Solana 合约地址,以及不属于现有主题的重复短语分别创建线索。

代码

每个检测到的 $CASHTAG 都可以创建一条线索,并关联其作者和帖子。$BTC、$SOL 和 $USDC 等主要资产,以及类似价格的字符串(如 $100)会被跳过。线索可以打开实时 X 搜索。

Solana 地址

只有在候选地址解码后对应真实的 32 字节密钥时,才会保留该地址。这可以减少由随机长单词造成的误报。生成的线索可以链接到 Solscan 上的该地址。

新叙事

新兴短语是指在过去六小时内由至少三位不同作者重复使用、且出现在已配置主题之外的双词短语。同一句话中的重叠表述只计算一次。

增长指标

每条线索都可以显示其过去六小时的提及次数与此前 18 小时的增长速度、近期作者数量,以及蜘蛛首次发现它的时间。这些指标仅反映你的浏览样本,并不代表 X 上的全部活动。

在发现中,可以按信号类型筛选,并按增长最快、最新优先或作者最多排序。打开线索即可查看其信号速度和底层帖子。

运行示例信号演示

仓库包含一个终端演示程序,它会通过真实的扩展 API 流式传输虚构帖子,并输出捕获内容、引擎事件、线索、增长情况和检查结果。

在一个终端中启动引擎:

python3 app.py

在第二个终端中运行演示:

python3 scripts/spider_demo.py

等待蜘蛛循环运行约十秒,然后打开仪表板。在发现中切换代码和新叙事筛选器,并按增长速度排序。

使用以下命令可以更快地运行演示:

python3 scripts/spider_demo.py --speed 2

如需静默加载示例数据,请使用:

python3 scripts/sample_signals.py

示例帖子、用户名、代码和地址均为虚构,并标记为示例。

自定义主题检测器

复制主题文件示例,并编辑新的本地文件:

cp topics.example.json topics.json

该文件最多支持 40 个主题,主题使用不区分大小写的正则表达式表示。完成修改后重启后端。

如果文件格式错误,Gem Search 会忽略该文件,记录警告,并继续使用内置主题。自定义的 topics.json 文件仍会保留在你的电脑上。

启用四种可选的 Grok 视角

Gem Search 无需 Grok 也能运行。如需启用模型辅助审查,请将你自己的 xAI 设置添加到本地 .env 文件中:

GROK_ENABLED=1
XAI_API_KEY=your_local_api_key
GROK_MODEL=grok-4.7
GROK_DAILY_CALLS=12

保存文件后重启引擎。四个本地研究席位会分别提出不同问题:

  • Lookout:观察到的样本中是否存在值得关注的信号?
  • Maker:实际存在什么产品或技术证据?
  • Skeptic:有哪些相互矛盾、存在风险或未经验证的内容?
  • Runner:证据是否足够支持现在展开调查?

只有在引擎观察到至少四位不同作者后,审查才会开始。一次完整审查会发出四个 API 请求。按照每滚动 24 小时 12 个请求的默认额度,额度内最多可完成三次完整审查,其中包括失败的调用。

相同的证据和模型输入会在 24 小时内复用缓存结果。请求包含有长度限制的摘录,并将输出限制为 700 个令牌。额度控制请求量,但不保证固定账单;价格取决于你的 xAI 方案。

启用 Grok 后,收集到的摘录会发送到 api.x.ai 进行分析。密钥会保留在后端。不使用 Grok 时,信号分组和本地检查仍可完全在没有模型调用的情况下运行。

模型不可用、额度耗尽、响应无效或引用为虚构时,均不能算作通过结果。模型输出无法执行代码、独立浏览或控制钱包。README 还说明,适配器有模拟测试覆盖,但该次检出中未验证真实的付费调用。

创建并分享发现胶囊

如需将发现转化为独立的可视化记录,请在发现中打开一个项目,然后选择发现胶囊。选择极光或日光样式,预览卡片,然后下载 SVG。

胶囊可以包含提及、观察到的作者、本地检查结果、Grok 状态、最多三个源地址,以及 UTC 时间戳。它完全在浏览器中生成,不会发起 API 调用,也不会自动发布社交内容。

显示的源地址会移除凭据、查询字符串和片段。分享前请检查可见内容,因为缺失的证据仍然缺失,演示发现也会继续标记为演示。

使用其他输入源

Gem Search 不仅限于浏览器捕获内容。它可以按照仓库记录的数据格式导入 JSON 捕获内容,data/inbox/ 目录也可以接收外部采集器的输入。

如需启用免费的 Hacker News 叙事扫描器和收件箱监视器,请以自动驾驶模式启动引擎:

python3 app.py --autopilot

Hacker News 的关注度会与 X 捕获内容分开标记。官方 X 最近搜索访问仍为可选的付费功能,默认设置为 ENABLE_PAID_X=0。

高级操作技巧

  • 无需付费服务即可开始:本地分组和证据检查不需要 xAI 密钥或付费 X API。
  • 检查来源,而不只是摘要:打开链接的帖子和公开页面,然后将其与本地检查结果及未知字段进行比较。
  • 将增长速度视为样本特定指标:快速增长反映的是你浏览会话期间可见的帖子,而不是整个网络。
  • 留意协同行为:三个协同账户就能制造一个新兴短语,因此作者多样性只是线索,并非证据。
  • 重复利用缓存:已抓取页面缓存 30 分钟,相同的 Grok 审查缓存 24 小时。
  • 有目的地收集:使用正常滚动,或仅在需要时启用自动滚动;当前页面无关时暂停爬虫。
  • 记住检测器的限制:每次处理最多保留 10 个代币代码、10 个地址和 5 个短语,并优先保留最强信号。
  • 不要将检测到的信号用于启动自动化:即使设置了 SPIDER_ALLOW_LAUNCH=1,代币代码、地址和新兴短语也永远不会进入启动队列。

托管扫描器和 Telegram 工具

该项目还在 gemsearch.fun 提供免费工具。这些工具不同于本地浏览器研究流程,扫描时无需连接钱包。

  • 扫描器:检查 Solana 合约地址的权限、持有者集中度、开发者持仓比例、此前的 pump.fun 发布记录、流动性或曲线进度、Dex 资料信息以及代币代码克隆情况。
  • Web X-ray:显示启动区块买家、共享资金来源以及持有者之间的转账,并提供交易链接。
  • Bundle Index:按照其他启动区块买家的数量,对新的 pump.fun 发布进行分类。
  • Council record:发布已存储的判定结果和后续结果检查,而不是经过人工挑选的示例。
  • Telegram 机器人:接受合约地址,并支持扫描、X-ray、监控、账户跟踪和群组命令。

crew、cluster 或 bundle 表示一种链上资金模式,并不能证明这些钱包属于同一身份。较高的扫描分数表示观察到的启动过程更干净,并不代表对未来表现的预测。

可选的启动功能

Gem Search 包含与启动相关的组件,但它们与普通研究流程相互独立。托管启动页面可以通过浏览器钱包创建 pump.fun 币,而较早的实验性本地启动器仍需主动选择启用,并且默认处于模拟运行模式。

托管启动流程会在浏览器中创建铸币密钥,将图像和元数据存储到 IPFS,构建一笔以用户为付款方和所有者的交易,并且只有在已签名交易与服务器逐字节构建的内容完全匹配时才会提交。Gem Search 声明不收取平台费用,也不会审核或认可已发布的代币。

对于可选的本地模块,文档规定每次尝试的上限为 0.025 SOL,滚动 24 小时内最多尝试五次。pump.fun 通过本地 PumpPortal 执行器获得支持,另一个 Solana 平台则需要兼容的 HTTPS 启动桥接适配器。当前 SOL 预算政策不支持其他链。

运行测试并打包扩展

安装 Node 依赖,运行 Python 和 JavaScript 测试,并使用以下命令打包扩展:

npm ci --ignore-scripts
python3 -m unittest discover -s tests -v
npm test
python3 scripts/package_extension.py

打包脚本会写入 dist/gem-search-extension.zip。该压缩包仅包含扩展资源。解压后,将解压目录作为未打包扩展加载;它不是 Chrome 网上应用店安装包。

自动化测试涵盖验证、路由排除、去重、叙事、Grok 缓存与配额、故障处理、本地网络阻断、队列恢复以及可选交易保护。但这些测试无法保证与未来每一种 X 页面布局兼容,因此仍需通过真实浏览器进行手动测试。

结论

Gem Search 将可见的浏览器叠加层与本地信号检测器、受限爬虫、持久化证据记录以及可选的 Grok 审查结合起来。请从虚构演示开始,配对未打包扩展,只收集你有意查看的帖子,并通过来源和未知因素评估每项发现,而不要将信号视为结论。

有关实现细节,请查阅仓库中的架构文档、隐私文档和贡献指南。