前置条件
- Node.js >= 20
- opencode CLI 已安装且可用(
opencode run能正常调用) - (可选)Exa API Key --- 用于英文金融数据搜索
安装
git clone <repo-url> && cd goldRush
npm install
npm run build
配置(可选)
export EXA_API_KEY=your_exa_api_key_here
cp .env.example .env
运行
node dist/index.js price # 实时金价
node dist/index.js analysis # 综合分析报告
node dist/index.js analysis -H short # 只看短期
node dist/index.js analysis -H mid # 只看中长期
node dist/index.js fund # 基金对比
node dist/index.js calibrate # 回测校准
node dist/index.js history # 历史数据
命令一览
| 命令 | 说明 | 优先级 |
|---|---|---|
goldrush price |
实时金价速查,自动存 SQLite | P0 |
goldrush analysis |
综合分析报告(四维度+反驳+情景+双轨策略) | P1 |
goldrush analysis -H short |
仅短期视角(日线/入场止损) | P1 |
goldrush analysis -H mid |
仅中长期视角(周线/定投加减仓) | P1 |
goldrush analysis --json |
JSON 格式输出 | P1 |
goldrush analysis --save |
保存报告到文件 | P1 |
goldrush fund |
黄金基金对比(费率/溢价/定投信号) | P1 |
goldrush calibrate |
回测校准(历史准确率统计) | P1 |
goldrush calibrate --days 90 |
回顾 90 天 | P1 |
goldrush snapshot |
手动保存当日数据快照 | P1 |
goldrush init-history |
首次拉取历史数据 | P1 |
goldrush history |
查看历史金价 | P1 |
goldrush history --type reports |
查看历史分析报告 | P1 |
架构
用户 CLI 命令
│
▼
Commander.js (命令路由)
│
▼
Orchestrator (编排层)
│
├──→ 数据采集 Agent (deepseek-v4-flash)
│ 双引擎搜索: Exa API + opencode websearch
│ 交叉验证 + 来源分级 (A/B/C)
│
├──→ 四维度分析 (glm-5.1 × 4)
│ ├── 技术面 (本地计算 MA/RSI/MACD + LLM 解读)
│ ├── 基本面 (美元/美债/美联储)
│ ├── 情绪面 (央行购金/CFTC/VIX/地缘)
│ └── 基金面 (费率/溢价/估值水位)
│
├──→ 强制反驳 Agent (glm-5.1, 独立 session)
│ 专门找看空论据,客观指标判定反驳强度
│ 评分修正: weak=10% / moderate=20% / strong=35%
│
└──→ 综合编排 Agent (glm-5.1)
注入校准上下文 + 三情景分析 + 尾部风险
输出双轨策略: 短期入场止损 + 中长期定投加减仓
核心设计
双引擎搜索
| 数据类型 | 搜索引擎 | 原因 |
|---|---|---|
| 国际金价 XAU/USD | 双搜 | 交叉验证 |
| COMEX/美联储/美债 | Exa | 英文金融数据更准 |
| 上海金/ETF/基金 | opencode | 中文数据源覆盖好 |
| 央行购金/地缘风险 | 双搜 | 中英文视角互补 |
信息可靠性五道防线
- 来源分级 --- A级(交易所/央行) > B级(财经媒体) > C级(自媒体)
- 3源交叉验证 --- 同一数据至少3个独立来源
- 中英文双搜 --- 避免单一信息茧房
- 反向核查 --- 重大新闻必须搜反对观点
- 时效标注 --- 每个数据标注获取时间和来源
强制反驳机制
正常分析天然偏乐观。强制反驳 Agent 独立运行,专门找看空论据:
四维度分析 → 初步评分 70 分
↓
反驳 Agent (看不到综合评分,避免锚定)
↓
看空力度 42/100,反驳强度 moderate
↓
评分修正: 70 → 64 (下调 6 分)
↓
最终输出: 64 分 + 反驳摘要 + 尾部风险
双视角输出
| 维度 | 短期 | 中长期 |
|---|---|---|
| 时间框架 | 日线/小时线 | 周线/月线 |
| 持仓周期 | 数天~2周 | 1~6个月 |
| 推荐品种 | 518880 场内ETF | 000216/002610 联接基金 |
| 策略核心 | 入场点位、止盈止损 | 定投节奏、加减仓 |
| 风控方式 | 固定止损 3-5% | 估值止盈、仓位管理 |
回测校准闭环
每次分析自动存档到 SQLite,goldrush calibrate 对比历史研判 vs 实际走势:
评分区间 样本 实际涨概率 平均涨幅 偏差
60-70 12 58% +0.3% 偏乐观8%
70-80 18 67% +0.8% 校准良好
80-90 8 75% +1.2% 偏保守
90-100 2 50% -0.1% 严重偏乐观!
校准数据自动注入综合编排 prompt,让评分有统计意义。
本地数据存储
SQLite 数据库自动创建在 data/goldrush.db,5 张表:
| 表 | 用途 |
|---|---|
gold_prices |
每日金价快照(伦敦金/上海金/ETF/美元/美债) |
fund_nav |
基金净值快照(000216/002610 等) |
analysis_reports |
分析报告存档(含完整 JSON) |
scenario_features |
市场特征向量(用于历史模式匹配) |
search_cache |
搜索缓存(5分钟内免重复请求) |
技术指标
本地计算,100% 客观,不依赖 LLM:
| 指标 | 实现 | 用途 |
|---|---|---|
| MA5/MA20/MA60 | src/indicators/ma.ts |
均线趋势、金叉死叉 |
| RSI(14) | src/indicators/rsi.ts |
超买超卖信号 |
| MACD | src/indicators/macd.ts |
动量方向、金叉死叉 |
| 布林带 | src/indicators/bollinger.ts |
波动区间、%B |
| 历史百分位 | src/indicators/percentile.ts |
估值水位判断 |
数据积累 20 天后技术指标自动生效。
项目结构
goldRush/
├── src/
│ ├── index.ts # CLI 入口 (Commander.js)
│ ├── commands/
│ │ ├── price.ts # 实时金价
│ │ ├── analysis.ts # 综合分析报告
│ │ ├── fund.ts # 基金对比
│ │ ├── calibrate.ts # 回测校准
│ │ ├── snapshot.ts # 数据快照
│ │ └── history.ts # 历史数据
│ ├── agents/
│ │ ├── base.ts # Agent 基类 (opencode CLI)
│ │ ├── data-collector.ts # 数据采集 + 双引擎搜索
│ │ ├── validator.ts # 信息验证 + 来源分级
│ │ ├── analysis-agents.ts # 四维度 Agent
│ │ ├── rebuttal.ts # 强制反驳 Agent
│ │ └── orchestrator.ts # 综合编排 Agent
│ ├── data/
│ │ ├── exa-client.ts # Exa API 封装
│ │ ├── opencode-search.ts # opencode 搜索封装
│ │ └── search-router.ts # 搜索路由器
│ ├── db/ # SQLite CRUD (7 文件)
│ ├── indicators/ # 技术指标 (5 文件)
│ ├── types/ # TypeScript 类型
│ └── utils/ # 工具函数
├── data/goldrush.db # SQLite (自动创建)
├── package.json
├── tsconfig.json
└── goldrush.config.json # 运行配置
技术栈
| 组件 | 选型 | 原因 |
|---|---|---|
| 语言 | TypeScript | 类型安全 |
| CLI | Commander.js | 成熟稳定 |
| LLM | opencode CLI | Go 套餐 $10/月封顶 |
| 搜索(英文) | Exa API | 金融分类、highlights 压缩 |
| 搜索(中文) | opencode websearch | 中文数据源覆盖好 |
| 数据库 | SQLite (better-sqlite3) | 零配置、本地 |
| 终端输出 | chalk + cli-table3 | 表格+颜色 |
开发
npm run dev -- price # 开发模式
npm run build # 编译
npm run lint # 类型检查
注意事项
- 本工具仅供投资研究参考,不构成投资建议
- LLM 分析存在固有局限,请结合自身判断
- Exa API 免费额度 1000 次/月,每次 analysis 约消耗 8-12 次