The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Signal Ledger Financial Intelligence listing page.
一个可直接运行的“观点与情报审计 Agent”。第一板块每 6 小时从指定 X 账号增量抓取帖子,用 Qwen 抽取个股、行业和市场判断,到期后以真实行情验证;第二板块聚合 Osiris、Third‑Eye 与美国财政部 OFAC 的重大公开事件,把事件拆成对股票、行业、领域和市场的利多/利空影响链。两部分统一在带登录保护的中文仪表盘中展示。
since_id 增量抓取,不重复消费旧帖子。fires 接口只提取火山事件。运行数据保存在 data/store.json。该文件、日志和 .env 均不会进入 Git;仓库只保留 data/.gitkeep 作为持久化目录占位。
| 账号 | 主要用途 | 备注 |
|---|---|---|
@aleabitoreddit / Serenity | AI、半导体供应链、个股 | 用户指定,主题集中度较高 |
@BillBrooklyn10 / Bill Brooklyn | 明确买卖清单 | 用户指定;身份与履历未核验,页面有风险提示 |
@StockMarketNerd | 个股基本面、财报 | 推荐加入,用来平衡纯题材/动量观点 |
@LizAnnSonders | 宏观、风格与市场结构 | 推荐加入,用来覆盖整体市场判断 |
名单在 src/config.js 的 SOURCES 数组里,增删账号不需要改抓取逻辑。
要求 Node.js 20 或更高版本;本项目没有第三方 npm 依赖。
打开 http://localhost:8787。首次启动会在约 2 秒后自动跑一轮,也可以点击“立即刷新”。
X_BEARER_TOKEN:X Developer Portal 创建 App 后获得的只读 Bearer Token。只读取公开帖子,不需要发帖权限。DASHSCOPE_API_KEY:阿里云百炼 API Key,供默认的 Qwen 抽取引擎使用。AI_PROVIDER:默认 qwen。如所在地区支持 OpenAI API,也可改为 openai 并配置 OPENAI_API_KEY。OSIRIS_BASE_URL、THIRD_EYE_BASE_URL:两个 OSINT 平台的 API 根地址;默认使用公开演示站。OFAC 使用固定的官方 Recent Actions 地址。INTELLIGENCE_LOOKBACK_DAYS:保留并展示的情报回看天数,默认 7 天。INTELLIGENCE_MAX_ANALYZE:每轮最多交给模型分析的新增事件数,默认 40;进入模型前已过滤遥测、弱地震、普通火点和过期事件。密钥只从环境变量读取;.env 和运行时数据文件都已加入 .gitignore。
运行时状态保存在 data/store.json,写入时使用临时文件原子替换。生产部署需要把 /app/data 挂载到持久卷,否则容器重启会丢失历史。
价格验证使用 Yahoo Finance 图表接口返回的复权日线:
>= +3%;跌:<= -3%;震荡:绝对收益 < 3%。VALIDATION_THRESHOLD_PCT 修改。行业映射在 src/config.js 的 INDUSTRY_BENCHMARKS 中。无法识别的行业当前用 SPY 兜底,并在页面明确标注。
每个重大事件都保留在事件视图中,并对五个指数分别生成一条记录。Qwen 只负责依据事件证据和指数结构选择标准化传导通道,并给出 exposure(指数暴露)、transmission(传导清晰度)、confidence(方向证据可靠性)、方向和期限;最终分数、因果链与反向条件均由代码生成,模型的自由文本指数解释不会直接展示:
+1、利空 -1、中性 0。0.55 + 0.45 × 新鲜度/100,所以当前 7 天窗口中的事件不会只因时间衰减到零。<10、传导清晰度 <20 或方向置信度 <40,一律记 0 分。-100…+100:负数表示利空,正数表示利多;±80…100 极强、±60…79 强、±40…59 中等、±1…39 弱、0 为中性或证据未过门槛。指数视图的组合净分不直接相加:相同指数、同传导通道、同方向的第 n 条事件先乘 1/√n,避免同一风险机制被不同新闻类别重复堆高;利多与利空分别按 100 × (1 − Π(1 − |有效分|/100)) 合成为两侧压力,组合净分等于利多压力减利空压力。这些分数是可审计的相对事件冲击,不是预计收益率、涨跌概率或仓位建议。
服务进程存活时,内置调度器会按 REFRESH_INTERVAL_HOURS 同时运行大 V 抓取、到期验证和全球重大事件刷新;在 VPS/systemd 或 Docker restart: unless-stopped 环境中不需要额外 cron。登录后的页面可以直接手动刷新,不再要求第二个刷新密钥。
只需要初始化或重跑全球情报板块、不想重复抓取全部 X 帖子时,可执行:
GET /api/data:仪表盘全部数据与运行状态GET /api/export.csv:导出账本GET /api/health:健康检查POST /api/refresh:运行一次完整刷新;网页环境需要有效登录会话测试覆盖抽取结果清洗、基准映射、方向阈值、波动率规则、区间收益验证,以及重大新闻、GDELT、火山、较强地震、OFAC 制裁更新、跨来源去重、多方向影响链清洗、代码映射白名单、置信度和页面契约。X、Qwen、行情和 OSINT 接口属于外部集成,真实密钥下的刷新用于最终端到端检查。
可以直接使用仓库中的 Dockerfile 和 compose.yaml。容器仅绑定服务器回环地址 127.0.0.1:8787,公网必须通过 HTTPS 反向代理访问;裸机运行时设置 HOST=127.0.0.1 达到同样效果。生产环境至少需要:
/app/data.env.example 中的环境变量APP_USERNAME、APP_PASSWORD_HASH 和随机 APP_SESSION_SECRET;额外账号使用 APP_USERS_JSON 的“用户名 → scrypt 哈希”映射推荐将应用作为独立服务运行,并用 Caddy 或 Nginx 反向代理到 127.0.0.1:8787。仓库的 deploy/nginx-ip.conf.template 可作为 Nginx 起点;使用域名时,Caddy 可以自动管理 HTTPS 证书。
访问保护覆盖首页、数据 API、CSV 和手动刷新接口。密码使用 scrypt 哈希存储,登录 Cookie 带签名、HttpOnly 和 SameSite=Strict;同一来源 15 分钟内连续失败 5 次会被暂时锁定。生成密码哈希:
多账号示例(主账号仍使用上面的两个单值变量):
本工具只做观点记录、公开情报拆解与可重复的事后检验,不会自动交易,也不构成投资建议。平台风险标记、模型传导分析与股票代码映射都可能出错,作出决策前必须回看原始证据。